Skip to content

Add a tiger feedback command - #226

Merged
aprimakina merged 6 commits into
mainfrom
feedback-command
Sep 18, 2026
Merged

aprimakina merged 6 commits into
mainfrom
feedback-command

Conversation

@aprimakina

@aprimakina aprimakina commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Adds tiger feedback, which relays feedback, a bug report, or a support request to the Tiger Data team through the gateway's new /feedback endpoint. Modeled on ghost's feedback command.

tiger feedback "I can't connect to my service after resuming it"
echo "Great tool!" | tiger feedback
tiger feedback   # reads from stdin, prompting on a terminal

The submitter's email is resolved from the caller's credentials and the client version and OS from the User-Agent, so neither is sent in the body. The command opens no support case and returns no ticket.

@aprimakina aprimakina self-assigned this Sep 10, 2026
Re-sync openapi.yaml from the Tiger Cloud API spec, at savannah-gateway
40dde95, and regenerate the client, types, and mocks. Nothing here is
hand-edited except the three MetricsAggFn call sites described below, and
no path, operation, or schema the CLI had before was dropped.

The sync picks up everything that landed upstream since the last one:

- New endpoints: submitFeedback, enableDataTiering, the backup-regions
  and backup-retention operations, getServiceMetricDetails, the IP allow
  list operations (create, get, list, update, delete, and the service
  attach/detach pair), and the exporter operations (list, get, create,
  update, delete, and their own service attach/detach pair).
- New component schemas for the exporter families (CloudWatch, Datadog,
  Prometheus, Azure Monitor), their AWS credential types, and their
  create/update variants, along with AllowList, BackupRegion,
  BackupRetentionByTime, MetricDetails, and DataTiering.
- x-tigerdata-owner annotations on nearly every existing operation,
  which is why the diff touches so many paths without changing them.
- x-tigerdata-internal, marking an operation as being for first-party
  clients only and excluded from the public docs and SDKs, described in
  the spec's own preamble and applied to submitFeedback and the two
  analytics operations. It is a visibility marker rather than a
  stability one, so `tiger feedback` and the feedback tool stay ungated.

The aggregation enum on `service metrics series` moved out of the
request body into a shared MetricsAggFn schema, renaming the generated
constants from MetricsSeriesRequestFn* to MetricsAggFn*. Update the
three call sites accordingly; --fn now also accepts MAXTOTAL and
MINTOTAL.

Two further changes land in schemas nothing here reads yet:

- MetricLabelFilter gained an optional match_type, whose new
  MetricMatchType enum is EQUAL or NOT_EQUAL and defaults to EQUAL.
  Neither `service metrics series` nor its MCP tool sends it, so filters
  keep matching on equality exactly as before.
- Service gained log_exporter_id and metric_exporter_id,
  PrometheusMetricsConfig a read-only endpoint, and
  MetricExporterConfigBase renamed enable_pg_metrics to
  include_pg_metrics. No CLI or MCP surface reads any of these, so the
  rename touches nothing outside the generated code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@aprimakina
aprimakina force-pushed the feedback-command branch 2 times, most recently from c5fc488 to 07e1149 Compare September 17, 2026 12:42
aprimakina and others added 2 commits September 17, 2026 14:47
Relay feedback, a bug report, or a support request to the Tiger Data
team through the gateway's /feedback endpoint, which posts it to Slack.
The message comes from an argument or, when none is given, from stdin —
piped or typed interactively, with the hint TTY-gated so piped input
stays clean. The submitter's email is resolved from the caller's
credentials and the version and OS from the User-Agent, so neither is
sent in the body.

The command is registered unconditionally and listed in the README:
/feedback is not a preview operation, so nothing gates it.

A feedback message is free text that may quote connection strings,
queries, or anything else, and positional arguments were otherwise
tracked verbatim. Route them through a new analytics.Args option, which
clones a command's arguments and redacts the sensitive ones by command
path — the message here, exactly as ghost does for `ghost feedback`.
Redacting the value rather than dropping the property keeps the argument
count, so a message passed as an argument stays distinguishable from one
piped in. Flags are still tracked, subject to the analytics ignore list,
which gains "message" so the feedback MCP tool's parameter is filtered
the same way.

Gateway side: timescale/savannah-gateway#1982

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pair `tiger feedback` with an MCP tool, so an assistant can relay a
user's feedback the same way. Ported from ghost's `ghost_feedback`, named
`feedback` here since Tiger MCP doesn't prefix its tool names.

The input schema carries the endpoint's own bounds (minLength 1,
maxLength 3000), so an over-long message is rejected before the handler
instead of round-tripping to a 400. The handler trims like the CLI, so
both surfaces send the same message for the same text, and logs nothing —
the only argument worth logging is the user's own free text.

Registered through addTool but absent from readOnlyGatedTools: submitting
feedback mutates no service, so the tool stays available in every
read-only mode. Its `message` parameter is already filtered from
analytics by the ignore list.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@aprimakina
aprimakina marked this pull request as ready for review September 17, 2026 13:17
The `message` schema's maxLength made the SDK reject an over-long message
with a validation error that quotes the whole value, and the analytics
middleware records a tool's error text — so the message the ignore list
exists to keep out shipped anyway. Check the length in the handler
instead, reporting only the count, and state the cap in the field
description so a client still knows it.

Drop the thanks from the CLI's success line while here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nathanjcochran
nathanjcochran self-requested a review September 17, 2026 15:42

@nathanjcochran nathanjcochran left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a couple very minor comments, but overall LGTM!

Comment thread internal/cmd/feedback.go Outdated
Comment on lines +28 to +29
This does not open a support case and returns no ticket to track. For anything
that needs a tracked response, contact support directly.`,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we include a link to the support page in the console here, or something like that? So users know how to file a formal support ticket?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread internal/mcp/feedback.go Outdated
Title: "Submit Feedback",
Description: `Submit feedback, a bug report, or a support request to the Tiger Data team.

The message reaches a person, so confirm the wording with the user before sending. This opens no support case and returns no ticket to track.`,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This says that it doesn't open a support case or return a ticket to track, but it doesn't give any indication that users can create real support tickets elsewhere, or how to do it. Should be include something to that effect, like we do in the tiger feedback help text (i.e. "For anything needs a tracked response, contact support directly.")? Maybe include a link to the support page in the console?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nathanjcochran and others added 2 commits September 17, 2026 14:41
Review feedback: both the command and the MCP tool said this opens no
support case, without saying where a tracked ticket is opened instead.
The CLI now prints the console support link for the caller's project,
and the tool returns it as support_url, which the description points at
since the URL is project-specific.

Also drops "support request" from the descriptions, so neither surface
reads as a way to open one, and the exclamation point from the CLI's
success line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@aprimakina
aprimakina merged commit 860cb2e into main Sep 18, 2026
2 checks passed
@aprimakina
aprimakina deleted the feedback-command branch September 18, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants