@shipeasy/openapi 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-V4ZESAIF.js → chunk-75Z4SQOM.js} +141 -1
  3. package/dist/chunk-75Z4SQOM.js.map +1 -0
  4. package/dist/{chunk-UV333BIK.js → chunk-ZYK74ZIW.js} +569 -119
  5. package/dist/chunk-ZYK74ZIW.js.map +1 -0
  6. package/dist/{client-yqGYju-M.d.ts → client-DAGqRpF1.d.ts} +2209 -401
  7. package/dist/client.d.ts +1 -1
  8. package/dist/client.js +33 -1
  9. package/dist/custom.d.ts +5 -5
  10. package/dist/custom.js +128 -84
  11. package/dist/custom.js.map +1 -1
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +34 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/schemas.d.ts +2007 -891
  16. package/dist/schemas.js +179 -1
  17. package/openapi-sdk.json +1769 -0
  18. package/openapi.json +5861 -2597
  19. package/openapi.yaml +2739 -452
  20. package/package.json +6 -4
  21. package/spec/components/responses.yaml +39 -0
  22. package/spec/components/schemas/alert-rules.yaml +405 -7
  23. package/spec/components/schemas/alerts.yaml +9 -7
  24. package/spec/components/schemas/common.yaml +2 -2
  25. package/spec/components/schemas/connectors.yaml +69 -6
  26. package/spec/components/schemas/events.yaml +20 -9
  27. package/spec/components/schemas/gates.yaml +87 -0
  28. package/spec/components/schemas/keys.yaml +32 -2
  29. package/spec/components/schemas/killswitches.yaml +64 -0
  30. package/spec/components/schemas/metrics.yaml +131 -251
  31. package/spec/components/schemas/ops.yaml +555 -22
  32. package/spec/components/schemas/projects.yaml +18 -0
  33. package/spec/components/schemas/tags.yaml +91 -0
  34. package/spec/openapi-sdk.yaml +86 -0
  35. package/spec/openapi.yaml +61 -0
  36. package/spec/paths/alerts.yaml +5 -3
  37. package/spec/paths/gates.yaml +282 -0
  38. package/spec/paths/i18n.yaml +2 -1
  39. package/spec/paths/keys.yaml +79 -0
  40. package/spec/paths/killswitches.yaml +96 -0
  41. package/spec/paths/metrics.yaml +26 -17
  42. package/spec/paths/ops.yaml +566 -10
  43. package/spec/paths/tags.yaml +270 -0
  44. package/dist/chunk-UV333BIK.js.map +0 -1
  45. package/dist/chunk-V4ZESAIF.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/custom/grammar.ts","../src/custom/types.ts","../src/custom/docs.ts","../src/custom/index.ts"],"sourcesContent":["import type { CustomOp } from \"./types.js\";\n\n/**\n * The Shipeasy metric query DSL grammar — printed by `shipeasy metrics grammar`\n * / the `metrics_grammar` MCP tool.\n *\n * This is the one-stop reference for both humans and AI agents that need to\n * author a `metrics create --query \"...\"` string. It is intentionally\n * self-contained: the formal grammar (precise, for machine parsing), a full\n * aggregation reference (semantics + value-label rules + experiment behaviour),\n * the selector/filter/group-by/ratio rules, hard constraints, and glossed\n * examples.\n *\n * Source of truth for semantics is the RUNTIME parser + IR that the server\n * actually runs: the main repo's `packages/query-dsl` (`parse.ts` / `ir.ts`).\n * The vendored `cli/src/query-dsl` copy is a lagging subset (no `ratio` yet) and\n * is NOT on the create path — the CLI forwards the raw `--query` string to the\n * server, which parses it. Keep this text in sync with `packages/query-dsl`.\n */\nexport const METRIC_GRAMMAR = `SHIPEASY METRIC QUERY DSL\n=========================\n\nA metric is an aggregation over an event stream. Almost always that is ONE\naggregation over ONE event; the single exception is the binary \\`ratio(...)\\`\nform, which divides one count-style arm by another (each arm its own event and\nfilters) in one pass. This DSL is the string you pass to\n\\`metrics create --query \"...\"\\` (equivalently the typed \\`query_ir\\`). There is\nno general arithmetic, no free-form formulas, and no subqueries — \\`ratio\\` is\nthe only division / two-event form.\n\n\nGRAMMAR (BNF)\n-------------\n Query := Agg | Ratio\n Agg := AggFunc \"(\" Selector (\",\" Identifier)? \")\" GroupBy?\n Ratio := \"ratio\" \"(\" RatioArm \",\" RatioArm \")\"\n RatioArm := (\"count_users\" | \"count\") \"(\" Selector \")\"\n AggFunc := \"count_users\" | \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\"\n | \"unique\" | \"p50\" | \"p75\" | \"p90\" | \"p95\" | \"p99\" | \"p999\"\n | \"retention_\" <N> \"d\" (N = 1..90)\n Selector := Identifier (\"{\" Filter (\",\" Filter)* \",\"? \"}\")?\n Filter := Identifier MatchOp StringLiteral\n MatchOp := \"=\" | \"!=\" | \"=~\" | \"!~\"\n GroupBy := (\"by\" | \"without\") \"(\" Identifier (\",\" Identifier)* \",\"? \")\"\n StringLiteral := double-quoted; \\\\\" is a literal quote, \\\\\\\\ is a backslash\n Identifier := [A-Za-z_][A-Za-z0-9_]* (case-sensitive)\n\n The trailing Identifier after the selector — \"(\" Selector \",\" Identifier \")\" —\n is the VALUE LABEL: the numeric event label the aggregation reduces. Whether it\n is required, optional, or forbidden depends on the aggregation (see below).\n\n\nAGGREGATIONS\n------------\n Function Value label Meaning In experiments\n -------------- ------------ ------------------------------ ---------------\n count_users forbidden distinct users who fired it exact\n count forbidden number of events (rows) exact\n sum(e, v) required Σ of numeric label v exact\n avg(e, v) required mean of label v exact\n retention_Nd(e) forbidden % of users who returned exact\n within N days (N = 1..90)\n min(e, v) required minimum of label v approx → avg *\n max(e, v) required maximum of label v approx → avg *\n unique(e, v) required distinct values of label v approx → avg *\n p50 … p999(e,v) required quantile of v (50/75/90/ approx → avg *\n 95/99/99.9th percentile)\n ratio(a, b) forbidden a ÷ b (see RATIO below) proportion **\n\n * Display-only aggregations. The experiment t-test needs a per-user mean and\n variance, so min/max/unique/quantile are computed exactly on dashboards but\n collapse to a per-user \\`avg\\` when used as an experiment metric. If you need\n an exact experiment metric, pick count_users / count / sum / avg / retention.\n\n ** In an experiment a ratio collapses to a per-user 0/1 outcome (a proportion),\n not a ratio-of-sums — see RATIO.\n\n \"count\" is the DSL spelling of the internal count_events (one per matching\n row); \"count_users\" is unique-by-user. Getting these two confused is the most\n common mistake — count double-counts a user who fired the event twice.\n\n\nSELECTOR & FILTERS\n------------------\n The selector is the event name plus an optional \\`{ ... }\\` filter set that\n narrows which events count. Each filter compares an event LABEL to a quoted\n string:\n\n = equal != not equal\n =~ regex match !~ regex NOT match\n\n - Values are ALWAYS double-quoted strings, even for numeric labels — they are\n coerced on the server (\\`amount=~\"^1[0-9]$\"\\`, \\`status=\"200\"\\`).\n - Multiple filters are AND-ed: \\`{country=\"US\", tier!=\"free\"}\\`.\n - Every filter label AND the value label must be a label DECLARED on the source\n event. Undeclared labels are a validation error, not a silent no-match.\n\n\nGROUP-BY\n--------\n Splits the result into one series per label combination.\n by (a, b) one series per distinct (a, b) — keep only these labels\n without (a, b) group by all declared labels EXCEPT a, b\n\n NOTE: group-by is a DASHBOARD-only feature. In an experiment the group-by is\n ignored — a per-user reducer is applied across the whole arm instead. Group-by\n is NOT allowed on a \\`ratio\\` query.\n\n\nRATIO (success rate, conversion, failure %, …)\n-----------------------------------------------\n \\`ratio(numerator, denominator)\\` divides one count-style arm by another. Each\n arm is an independent selector with its OWN event and filters, so the two arms\n can be different events:\n\n ratio(count(checkout_completed), count(checkout_started))\n ratio(count_users(paid), count_users(signed_up))\n ratio(count(payment{ok=\"1\"}), count(payment)) one event, filtered arm\n\n Rules:\n - Arms are limited to \\`count\\` and \\`count_users\\` — no sum/avg/quantile arm.\n - \\`count\\` arms divide event counts; \\`count_users\\` arms divide distinct-user\n counts. Pick one shape and use it on both arms unless you mean to mix them.\n - A zero denominator yields 0, not an error.\n - No \\`by (...)\\` / \\`without (...)\\`, and no retention arm, on a ratio.\n - It is a COHORT RATE over the window — numerator events ÷ denominator events —\n NOT a per-id join. It never matches an individual attempt to its outcome by a\n correlation id; it counts each side over the window and divides. If you need a\n matched pair, resolve the outcome in your own code and emit ONE event carrying\n the result (e.g. an \\`ok\\` label), then use \\`ratio(count(e{ok=\"1\"}), count(e))\\`\n or \\`avg(e, ok)\\`.\n - In an experiment a per-user ratio is a 0/1 outcome — did the numerator happen,\n among denominator-eligible users — i.e. a proportion, not a ratio-of-sums.\n - When creating with \\`--event-name\\`, pass the NUMERATOR's event name.\n\n\nNOT SUPPORTED (will fail to parse)\n----------------------------------\n - general arithmetic / free-form formulas: \\`count(a) + count(b)\\`, \\`2 * sum(x)\\`,\n \\`avg(a) / avg(b)\\` — the ONLY division form is the fixed binary\n \\`ratio(arm, arm)\\` with count-style arms (see RATIO)\n - a ratio arm that isn't \\`count\\` / \\`count_users\\`: \\`ratio(sum(a, v), count(b))\\`\n - more than two events in one query\n - \\`by (...)\\` / \\`without (...)\\` on a ratio\n - arbitrary quantiles (only the fixed p50/p75/p90/p95/p99/p999)\n - unquoted or numeric filter values: \\`{status=200}\\` → must be \\`\"200\"\\`\n - trailing tokens after the query\n\n\nEXAMPLES (query — what it measures)\n--------------------------------------\n count_users(checkout_completed)\n distinct users who completed checkout.\n\n count(add_to_cart{country=\"US\"})\n number of US add-to-cart events (a user can count many times).\n\n sum(purchase{country=\"US\"}, amount)\n total purchase amount from US purchase events.\n\n avg(req_dur{tier!=\"free\"}, ms) without (region)\n mean request duration for non-free tiers, one series per region-excluded\n label combination.\n\n p99(req_dur{route=~\"/api/.*\"}, ms) by (route, status)\n 99th-percentile latency of /api/* requests, split by route and status.\n\n unique(login{method=\"sso\"}, device_id)\n distinct SSO devices seen (display-only; an experiment would use per-user avg).\n\n retention_7d(session_start)\n share of users who started a new session within 7 days.\n\n ratio(count(checkout_completed), count(checkout_started))\n checkout conversion rate — completions ÷ starts over the window.\n\n ratio(count(payment{ok=\"0\"}), count(payment))\n payment failure rate from a single event's outcome label.\n`;\n\nexport const grammarOp: CustomOp = {\n group: [\"metrics\"],\n name: \"grammar\",\n summary: \"Print the metric query DSL grammar\",\n description:\n \"Print the full metric query DSL reference — grammar, aggregation semantics, \" +\n \"filter/group-by/ratio rules, and glossed examples — used to author `metrics create --query`.\",\n params: [],\n examples: [{ run: \"shipeasy metrics grammar\" }],\n run: () => ({ grammar: METRIC_GRAMMAR }),\n};\n","/**\n * The custom-operations registry — hand-written operations that are NOT admin\n * API endpoints (so they can't be generated from the spec): the metric-DSL\n * grammar (pure) and the SDK-docs fetcher (outbound `fetch` to GitHub Pages).\n *\n * It mirrors the old operations registry in spirit, but is deliberately tiny and\n * framework-agnostic: each `CustomOp` carries its command path, params, and a\n * self-contained `run`. Both consumers project it with a thin adapter — the CLI\n * (`commands/custom.ts`) and, later, the MCP server — so the surface stays in\n * sync across them. `run` never touches the filesystem, so it's worker-safe.\n */\nexport type CustomParamType = \"string\" | \"number\" | \"boolean\";\n\nexport interface CustomParam {\n name: string;\n type: CustomParamType;\n description?: string;\n required?: boolean;\n /** Render as a positional CLI argument (vs a `--flag`). */\n positional?: boolean;\n enum?: string[];\n}\n\nexport interface CustomOp {\n /** Command path, e.g. `[\"docs\"]` → `shipeasy docs <name>`, `[\"metrics\"]` → `metrics <name>`. */\n group: string[];\n /** Verb. */\n name: string;\n summary: string;\n description?: string;\n params: CustomParam[];\n examples?: { note?: string; run: string }[];\n /** Self-contained handler. `args` are the coerced param values. */\n run: (args: Record<string, unknown>) => Promise<unknown> | unknown;\n}\n\n/**\n * Group-level help for a custom-op command group (e.g. `docs`). Mirrors what an\n * OpenAPI tag carries for the generated tree — a short `summary` (shown in the\n * parent `--help` list) and a long `description` (shown on the group's own\n * `--help`). Consumers look this up by `group` path when creating the group so a\n * custom group reads as richly as a spec-backed one, instead of the bare\n * `\"<name> commands\"` fallback.\n */\nexport interface CustomGroup {\n /** Group path, e.g. `[\"docs\"]`. */\n group: string[];\n summary: string;\n description?: string;\n aliases?: string[];\n}\n\n/** Thrown by a custom op for a user-facing error with an HTTP-ish status. */\nexport class CustomOpError extends Error {\n constructor(\n message: string,\n public status = 400,\n ) {\n super(message);\n this.name = \"CustomOpError\";\n }\n}\n\nexport const opId = (op: CustomOp): string => [...op.group, op.name].join(\".\");\n","import { type CustomOp, CustomOpError } from \"./types.js\";\n\n/**\n * SDK-docs operations — `docs list/get/skill`. A generic fetcher over each SDK\n * repo's `/docs/` folder published to plain GitHub Pages (latest only, no\n * backend, no version arg). The `run`s do outbound `fetch` (worker-safe — not\n * the fs/AST boundary) and fall back to a built-in default doc set for repos\n * that haven't adopted the doc standard yet.\n */\nconst SDK_REPOS: Record<string, { owner: string; repo: string }> = {\n typescript: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n javascript: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n node: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n ts: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n python: { owner: \"shipeasy-ai\", repo: \"sdk-python\" },\n go: { owner: \"shipeasy-ai\", repo: \"sdk-go\" },\n java: { owner: \"shipeasy-ai\", repo: \"sdk-java\" },\n kotlin: { owner: \"shipeasy-ai\", repo: \"sdk-kotlin\" },\n php: { owner: \"shipeasy-ai\", repo: \"sdk-php\" },\n swift: { owner: \"shipeasy-ai\", repo: \"sdk-swift\" },\n ruby: { owner: \"shipeasy-ai\", repo: \"sdk-ruby\" },\n};\nconst SDK_ENUM = Object.keys(SDK_REPOS);\n\ninterface DocManifest {\n schemaVersion: number;\n sdk: string;\n placeholders?: string[];\n skill?: string;\n pages?: Record<string, string>;\n snippets?: Record<string, Record<string, string>>;\n /**\n * Optional: which doc handles an onboarding run should pull for a given setup\n * topic (`devtools`, `flags`, `head-tags`, …), best first. It exists so an SDK\n * repo can retarget or extend what `shipeasy setup` embeds — renaming a page,\n * or adding one a topic now needs — WITHOUT a CLI release. Consumers fall back\n * to their own built-in handle list for any topic absent here.\n */\n setup?: Record<string, string[]>;\n}\n\nconst DEFAULT_MANIFEST: DocManifest = {\n schemaVersion: 2,\n sdk: \"default\",\n placeholders: [\"RESOURCE_NAME\"],\n skill: \"skill/SKILL.md\",\n pages: { overview: \"pages/overview.md\", installation: \"pages/installation.md\" },\n snippets: { release: { flags: \"snippets/release/flags.md\" } },\n};\nconst DEFAULT_CONTENT: Record<string, string> = {\n \"pages/overview.md\":\n \"# Shipeasy SDK\\n\\nThis SDK has not published its `/docs/` folder yet. See https://docs.shipeasy.ai for the full reference.\",\n \"pages/installation.md\":\n \"# Installation\\n\\nInstall the Shipeasy SDK for your language, then call `shipeasy({ serverKey })` (server) or `shipeasy({ clientKey })` (browser).\",\n \"snippets/release/flags.md\": \"```\\nconst on = await client.checkGate(user, '{{RESOURCE_NAME}}');\\n```\",\n \"skill/SKILL.md\":\n \"---\\nname: shipeasy-sdk\\ndescription: Use the Shipeasy SDK for flags, experiments, configs, and i18n.\\n---\\n\\nThis SDK has not published a skill yet. See https://docs.shipeasy.ai.\",\n};\n\n/**\n * Resolve the caller-supplied `sdk`. The adapters (CLI/MCP) default it from the\n * nearest `.shipeasy` before we get here, so an empty value means neither a flag\n * nor a bound project supplied one — surface that explicitly.\n */\nfunction requireSdk(sdk: unknown): string {\n const s = typeof sdk === \"string\" ? sdk.trim() : \"\";\n if (!s)\n throw new CustomOpError(\n `No SDK given and none recorded in .shipeasy. Pass --sdk <lang> (one of: ${SDK_ENUM.join(\", \")}), ` +\n `or run \\`shipeasy detect\\` in the project to record its sdk.`,\n 400,\n );\n return s;\n}\nfunction repoFor(sdk: string): { owner: string; repo: string } {\n const r = SDK_REPOS[sdk.toLowerCase()];\n if (!r) throw new CustomOpError(`Unknown SDK '${sdk}'. One of: ${SDK_ENUM.join(\", \")}`, 400);\n return r;\n}\nfunction pagesBase(sdk: string): string {\n const { owner, repo } = repoFor(sdk);\n return `https://${owner}.github.io/${repo}`;\n}\nasync function fetchText(url: string): Promise<string | null> {\n const res = await fetch(url);\n if (!res.ok) return null;\n return res.text();\n}\nasync function loadManifest(sdk: string): Promise<{ manifest: DocManifest; fallback: boolean }> {\n const text = await fetchText(`${pagesBase(sdk)}/manifest.json`);\n if (!text) return { manifest: DEFAULT_MANIFEST, fallback: true };\n try {\n return { manifest: JSON.parse(text) as DocManifest, fallback: false };\n } catch {\n return { manifest: DEFAULT_MANIFEST, fallback: true };\n }\n}\nfunction resolvePath(manifest: DocManifest, handle: string): string {\n if (handle.endsWith(\".md\")) return handle;\n if (manifest.pages?.[handle]) return manifest.pages[handle];\n if (handle.includes(\"/\")) {\n const [group, resource] = handle.split(\"/\", 2);\n const p = manifest.snippets?.[group]?.[resource];\n if (p) return p;\n }\n throw new CustomOpError(\n `Doc '${handle}' not found. Run 'docs list --sdk <lang>' to see available pages and snippets.`,\n 404,\n );\n}\nfunction substitute(body: string, manifest: DocManifest, args: Record<string, unknown>): string {\n let out = body;\n for (const ph of manifest.placeholders ?? []) {\n const value =\n (args[ph] as string | undefined) ??\n (ph === \"RESOURCE_NAME\" ? (args.name as string | undefined) : undefined) ??\n (ph === \"FRAMEWORK\" ? (args.framework as string | undefined) : undefined);\n if (value !== undefined) out = out.replaceAll(`{{${ph}}}`, value);\n }\n return out;\n}\n\nexport const docsOps: CustomOp[] = [\n {\n group: [\"docs\"],\n name: \"list\",\n summary: \"List an SDK's documentation tree\",\n description:\n \"Fetch an SDK's `/docs/manifest.json` and return the doc tree — feature pages, nested snippet groups, the optional setup-topic map, and whether an installable skill exists.\",\n params: [{ name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM }],\n examples: [{ run: \"shipeasy docs list --sdk python\" }],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n return {\n sdk,\n fallback,\n pages: Object.keys(manifest.pages ?? {}),\n snippets: Object.fromEntries(\n Object.entries(manifest.snippets ?? {}).map(([g, r]) => [g, Object.keys(r)]),\n ),\n setup: manifest.setup ?? {},\n skill: Boolean(manifest.skill),\n };\n },\n },\n {\n group: [\"docs\"],\n name: \"get\",\n summary: \"Fetch one SDK doc page or snippet\",\n description:\n \"Fetch one feature page (`flags`, `experiments`, …) or nested snippet (`release/experiments`, …), substituting declared {{placeholders}} from caller args.\",\n params: [\n { name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM },\n { name: \"path\", type: \"string\", description: \"Page key or snippet 'group/resource'.\", required: true, positional: true },\n { name: \"framework\", type: \"string\", description: \"Framework hint (substitutes {{FRAMEWORK}}).\" },\n { name: \"name\", type: \"string\", description: \"Resource name (substitutes {{RESOURCE_NAME}}).\" },\n ],\n examples: [\n { note: \"A feature page\", run: \"shipeasy docs get --sdk python experiments\" },\n { note: \"A nested snippet\", run: \"shipeasy docs get --sdk typescript release/flags --name checkout_v2\" },\n ],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n const path = resolvePath(manifest, args.path as string);\n const body = fallback ? DEFAULT_CONTENT[path] : ((await fetchText(`${pagesBase(sdk)}/${path}`)) ?? undefined);\n if (body === undefined) throw new CustomOpError(`Doc '${path}' could not be fetched for '${sdk}'.`, 404);\n return { sdk, path, fallback, content: substitute(body, manifest, args) };\n },\n },\n {\n group: [\"docs\"],\n name: \"skill\",\n summary: \"Fetch an SDK's installable LLM skill\",\n description:\n \"Fetch the SDK's `skill/SKILL.md` (frontmatter intact) so an agent can install it verbatim. The CLI `--install` writes it locally (a consumer fs side-effect).\",\n params: [\n { name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM },\n { name: \"install\", type: \"boolean\", description: \"CLI only: write the skill to the local agent skills dir.\" },\n ],\n examples: [{ run: \"shipeasy docs skill --sdk python\" }],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n const skillPath = manifest.skill ?? \"skill/SKILL.md\";\n const content = fallback ? DEFAULT_CONTENT[skillPath] : ((await fetchText(`${pagesBase(sdk)}/${skillPath}`)) ?? undefined);\n if (content === undefined) throw new CustomOpError(`No skill published for '${sdk}'.`, 404);\n return { sdk, skillPath, fallback, content };\n },\n },\n];\n","import { grammarOp } from \"./grammar.js\";\nimport { docsOps } from \"./docs.js\";\nimport type { CustomOp, CustomGroup } from \"./types.js\";\n\nexport type { CustomOp, CustomGroup, CustomParam, CustomParamType } from \"./types.js\";\nexport { CustomOpError, opId } from \"./types.js\";\nexport { METRIC_GRAMMAR } from \"./grammar.js\";\n\n/**\n * Every custom (non-spec) operation, in surface order. The CLI and MCP each\n * project this with a thin adapter so the sugar commands stay in sync.\n */\nexport const customOperations: CustomOp[] = [grammarOp, ...docsOps];\n\n/**\n * Group-level help for custom-op groups that aren't backed by an OpenAPI tag.\n * `metrics` is a spec tag (its group is created — and described — by the\n * generated tree), so only `docs` needs an entry here; without it the CLI would\n * label the group the bare `\"docs commands\"`.\n */\nexport const customGroups: CustomGroup[] = [\n {\n group: [\"docs\"],\n summary:\n \"SDK docs: fetch a language SDK's published docs — its page tree, feature pages, code snippets, and installable agent skill.\",\n description:\n \"SDK docs — a read-only fetcher over each language SDK's `/docs/` folder, \" +\n \"published to plain GitHub Pages (latest only; no backend, no version arg). \" +\n \"Point it at an SDK with `--sdk <lang>` (one of: typescript, python, go, \" +\n \"java, kotlin, php, swift, ruby) or let it default to the `sdk` recorded in \" +\n \"the nearest `.shipeasy`.\\n\\n\" +\n \"**Commands.**\\n\" +\n \"- `list` — the SDK's doc tree: feature pages, nested snippet groups, and whether an installable skill exists.\\n\" +\n \"- `get <path>` — one feature page (`flags`, `experiments`, …) or nested snippet (`release/flags`), with `{{placeholders}}` substituted from `--name`/`--framework`.\\n\" +\n \"- `skill` — the SDK's installable LLM skill (`SKILL.md`); `--install` writes it into your agent's skills dir.\\n\\n\" +\n \"SDKs that haven't adopted the doc standard yet fall back to a built-in \" +\n \"default doc set, flagged `fallback: true` in the output.\",\n },\n];\n"],"mappings":";AAmBO,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiKvB,IAAM,YAAsB;AAAA,EACjC,OAAO,CAAC,SAAS;AAAA,EACjB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aACE;AAAA,EAEF,QAAQ,CAAC;AAAA,EACT,UAAU,CAAC,EAAE,KAAK,2BAA2B,CAAC;AAAA,EAC9C,KAAK,OAAO,EAAE,SAAS,eAAe;AACxC;;;ACzIO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YACE,SACO,SAAS,KAChB;AACA,UAAM,OAAO;AAFN;AAGP,SAAK,OAAO;AAAA,EACd;AAAA,EAJS;AAKX;AAEO,IAAM,OAAO,CAAC,OAAyB,CAAC,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,KAAK,GAAG;;;ACtD7E,IAAM,YAA6D;AAAA,EACjE,YAAY,EAAE,OAAO,eAAe,MAAM,SAAS;AAAA,EACnD,YAAY,EAAE,OAAO,eAAe,MAAM,SAAS;AAAA,EACnD,MAAM,EAAE,OAAO,eAAe,MAAM,SAAS;AAAA,EAC7C,IAAI,EAAE,OAAO,eAAe,MAAM,SAAS;AAAA,EAC3C,QAAQ,EAAE,OAAO,eAAe,MAAM,aAAa;AAAA,EACnD,IAAI,EAAE,OAAO,eAAe,MAAM,SAAS;AAAA,EAC3C,MAAM,EAAE,OAAO,eAAe,MAAM,WAAW;AAAA,EAC/C,QAAQ,EAAE,OAAO,eAAe,MAAM,aAAa;AAAA,EACnD,KAAK,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA,EAC7C,OAAO,EAAE,OAAO,eAAe,MAAM,YAAY;AAAA,EACjD,MAAM,EAAE,OAAO,eAAe,MAAM,WAAW;AACjD;AACA,IAAM,WAAW,OAAO,KAAK,SAAS;AAmBtC,IAAM,mBAAgC;AAAA,EACpC,eAAe;AAAA,EACf,KAAK;AAAA,EACL,cAAc,CAAC,eAAe;AAAA,EAC9B,OAAO;AAAA,EACP,OAAO,EAAE,UAAU,qBAAqB,cAAc,wBAAwB;AAAA,EAC9E,UAAU,EAAE,SAAS,EAAE,OAAO,4BAA4B,EAAE;AAC9D;AACA,IAAM,kBAA0C;AAAA,EAC9C,qBACE;AAAA,EACF,yBACE;AAAA,EACF,6BAA6B;AAAA,EAC7B,kBACE;AACJ;AAOA,SAAS,WAAW,KAAsB;AACxC,QAAM,IAAI,OAAO,QAAQ,WAAW,IAAI,KAAK,IAAI;AACjD,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR,2EAA2E,SAAS,KAAK,IAAI,CAAC;AAAA,MAE9F;AAAA,IACF;AACF,SAAO;AACT;AACA,SAAS,QAAQ,KAA8C;AAC7D,QAAM,IAAI,UAAU,IAAI,YAAY,CAAC;AACrC,MAAI,CAAC,EAAG,OAAM,IAAI,cAAc,gBAAgB,GAAG,cAAc,SAAS,KAAK,IAAI,CAAC,IAAI,GAAG;AAC3F,SAAO;AACT;AACA,SAAS,UAAU,KAAqB;AACtC,QAAM,EAAE,OAAO,KAAK,IAAI,QAAQ,GAAG;AACnC,SAAO,WAAW,KAAK,cAAc,IAAI;AAC3C;AACA,eAAe,UAAU,KAAqC;AAC5D,QAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,MAAI,CAAC,IAAI,GAAI,QAAO;AACpB,SAAO,IAAI,KAAK;AAClB;AACA,eAAe,aAAa,KAAoE;AAC9F,QAAM,OAAO,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,gBAAgB;AAC9D,MAAI,CAAC,KAAM,QAAO,EAAE,UAAU,kBAAkB,UAAU,KAAK;AAC/D,MAAI;AACF,WAAO,EAAE,UAAU,KAAK,MAAM,IAAI,GAAkB,UAAU,MAAM;AAAA,EACtE,QAAQ;AACN,WAAO,EAAE,UAAU,kBAAkB,UAAU,KAAK;AAAA,EACtD;AACF;AACA,SAAS,YAAY,UAAuB,QAAwB;AAClE,MAAI,OAAO,SAAS,KAAK,EAAG,QAAO;AACnC,MAAI,SAAS,QAAQ,MAAM,EAAG,QAAO,SAAS,MAAM,MAAM;AAC1D,MAAI,OAAO,SAAS,GAAG,GAAG;AACxB,UAAM,CAAC,OAAO,QAAQ,IAAI,OAAO,MAAM,KAAK,CAAC;AAC7C,UAAM,IAAI,SAAS,WAAW,KAAK,IAAI,QAAQ;AAC/C,QAAI,EAAG,QAAO;AAAA,EAChB;AACA,QAAM,IAAI;AAAA,IACR,QAAQ,MAAM;AAAA,IACd;AAAA,EACF;AACF;AACA,SAAS,WAAW,MAAc,UAAuB,MAAuC;AAC9F,MAAI,MAAM;AACV,aAAW,MAAM,SAAS,gBAAgB,CAAC,GAAG;AAC5C,UAAM,QACH,KAAK,EAAE,MACP,OAAO,kBAAmB,KAAK,OAA8B,YAC7D,OAAO,cAAe,KAAK,YAAmC;AACjE,QAAI,UAAU,OAAW,OAAM,IAAI,WAAW,KAAK,EAAE,MAAM,KAAK;AAAA,EAClE;AACA,SAAO;AACT;AAEO,IAAM,UAAsB;AAAA,EACjC;AAAA,IACE,OAAO,CAAC,MAAM;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,aAAa,yFAAyF,UAAU,OAAO,MAAM,SAAS,CAAC;AAAA,IAC/K,UAAU,CAAC,EAAE,KAAK,kCAAkC,CAAC;AAAA,IACrD,KAAK,OAAO,SAAS;AACnB,YAAM,MAAM,WAAW,KAAK,GAAG;AAC/B,YAAM,EAAE,UAAU,SAAS,IAAI,MAAM,aAAa,GAAG;AACrD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,OAAO,OAAO,KAAK,SAAS,SAAS,CAAC,CAAC;AAAA,QACvC,UAAU,OAAO;AAAA,UACf,OAAO,QAAQ,SAAS,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA,QAC7E;AAAA,QACA,OAAO,SAAS,SAAS,CAAC;AAAA,QAC1B,OAAO,QAAQ,SAAS,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,MAAM;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,UAAU,aAAa,yFAAyF,UAAU,OAAO,MAAM,SAAS;AAAA,MACrK,EAAE,MAAM,QAAQ,MAAM,UAAU,aAAa,yCAAyC,UAAU,MAAM,YAAY,KAAK;AAAA,MACvH,EAAE,MAAM,aAAa,MAAM,UAAU,aAAa,8CAA8C;AAAA,MAChG,EAAE,MAAM,QAAQ,MAAM,UAAU,aAAa,iDAAiD;AAAA,IAChG;AAAA,IACA,UAAU;AAAA,MACR,EAAE,MAAM,kBAAkB,KAAK,6CAA6C;AAAA,MAC5E,EAAE,MAAM,oBAAoB,KAAK,sEAAsE;AAAA,IACzG;AAAA,IACA,KAAK,OAAO,SAAS;AACnB,YAAM,MAAM,WAAW,KAAK,GAAG;AAC/B,YAAM,EAAE,UAAU,SAAS,IAAI,MAAM,aAAa,GAAG;AACrD,YAAM,OAAO,YAAY,UAAU,KAAK,IAAc;AACtD,YAAM,OAAO,WAAW,gBAAgB,IAAI,IAAM,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,IAAI,IAAI,EAAE,KAAM;AACnG,UAAI,SAAS,OAAW,OAAM,IAAI,cAAc,QAAQ,IAAI,+BAA+B,GAAG,MAAM,GAAG;AACvG,aAAO,EAAE,KAAK,MAAM,UAAU,SAAS,WAAW,MAAM,UAAU,IAAI,EAAE;AAAA,IAC1E;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,MAAM;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,IACF,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,UAAU,aAAa,yFAAyF,UAAU,OAAO,MAAM,SAAS;AAAA,MACrK,EAAE,MAAM,WAAW,MAAM,WAAW,aAAa,2DAA2D;AAAA,IAC9G;AAAA,IACA,UAAU,CAAC,EAAE,KAAK,mCAAmC,CAAC;AAAA,IACtD,KAAK,OAAO,SAAS;AACnB,YAAM,MAAM,WAAW,KAAK,GAAG;AAC/B,YAAM,EAAE,UAAU,SAAS,IAAI,MAAM,aAAa,GAAG;AACrD,YAAM,YAAY,SAAS,SAAS;AACpC,YAAM,UAAU,WAAW,gBAAgB,SAAS,IAAM,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,IAAI,SAAS,EAAE,KAAM;AAChH,UAAI,YAAY,OAAW,OAAM,IAAI,cAAc,2BAA2B,GAAG,MAAM,GAAG;AAC1F,aAAO,EAAE,KAAK,WAAW,UAAU,QAAQ;AAAA,IAC7C;AAAA,EACF;AACF;;;ACnLO,IAAM,mBAA+B,CAAC,WAAW,GAAG,OAAO;AAQ3D,IAAM,eAA8B;AAAA,EACzC;AAAA,IACE,OAAO,CAAC,MAAM;AAAA,IACd,SACE;AAAA,IACF,aACE;AAAA,EAWJ;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/custom/grammar.generated.ts","../src/custom/grammar.ts","../src/custom/types.ts","../src/custom/docs.ts","../src/custom/index.ts"],"sourcesContent":["// GENERATED — do not edit.\n//\n// Written by `pnpm --filter @shipeasy/query-dsl gen:grammar` in the shipeasy\n// monorepo, from the parser's own tables. `grammar.ts` interpolates these\n// blocks so the printed reference cannot describe a language the parser does\n// not accept. A drift test in that repo fails when this file is stale.\n\nexport const AGGREGATES_BLOCK = `<aggregate> ::=\n { count ( <selector> )\n | sum ( <selector> [ , <value-label> ] )\n | avg ( <selector> [ , <value-label> ] )\n | min ( <selector> [ , <value-label> ] )\n | max ( <selector> [ , <value-label> ] )\n | stddev ( <selector> [ , <value-label> ] )\n | p ( <percentile> , <selector> [ , <value-label> ] )\n }`;\n\nexport const AGGREGATIONS_BLOCK = `| Aggregation | Measures | Value label |\n| --- | --- | --- |\n| \\`count\\` | how many matching events happened | not allowed |\n| \\`sum\\` | total of a numeric label | optional — defaults to the event's own value |\n| \\`avg\\` | mean of a numeric label | optional — defaults to the event's own value |\n| \\`min\\` | smallest value of a numeric label | optional — defaults to the event's own value |\n| \\`max\\` | largest value of a numeric label | optional — defaults to the event's own value |\n| \\`stddev\\` | spread of a numeric label around its mean | optional — defaults to the event's own value |\n| \\`p\\` | a percentile of a numeric label — \\`p(95, req, ms)\\` | optional — defaults to the event's own value |`;\n\nexport const FUNCTIONS_BLOCK = `<value_function> ::=\n { { abs | log | log2 | log10 } ( <argument> )\n | round ( <argument> , <digits> )\n | pow ( <argument> , <exponent> )\n | { clamp_min | clamp_max } ( <argument> , <bound> )\n }\n\n<rate_function> ::=\n { per_second | per_minute | per_hour } ( <argument> )\n\n<time_function> ::=\n { timeshift ( <argument> , <seconds> )\n | { derivative | diff | monotonic_diff | cumsum | integral } ( <argument> )\n | rollup ( <argument> , { avg | sum | min | max } , <seconds> )\n | { hour_before | day_before | week_before } ( <argument> )\n }\n\n<series_function> ::=\n { fill ( <argument> , { zero | last | linear | null } )\n | { count_nonzero | count_not_null | exclude_null } ( <argument> )\n | default_zero ( <argument> )\n }\n\n<smoothing_function> ::=\n { { autosmooth | trend_line | robust_trend } ( <argument> )\n | { ewma_3 | ewma_5 | ewma_10 | ewma_20 } ( <argument> )\n | { median_3 | median_5 | median_7 | median_9 } ( <argument> )\n }\n\n<rank_function> ::=\n { { top | bottom } ( <argument> , <k> , { mean | max | min | sum | last } , { asc | desc } )\n | { top_offset | bottom_offset } ( <argument> , <k> , { mean | max | min | sum | last } , { asc | desc } , <offset> )\n }`;\n\nexport const PARAMS_BLOCK = `| Function | Parameter | Accepts |\n| --- | --- | --- |\n| \\`round\\` | \\`digits\\` | integer 0–15 |\n| \\`pow\\` | \\`exponent\\` | number |\n| \\`clamp_min\\` | \\`bound\\` | number |\n| \\`clamp_max\\` | \\`bound\\` | number |\n| \\`timeshift\\` | \\`seconds\\` | integer |\n| \\`rollup\\` | \\`method\\` (1 of 2) | one of avg, sum, min, max |\n| \\`rollup\\` | \\`seconds\\` (2 of 2) | integer >= 1 |\n| \\`fill\\` | \\`mode\\` | one of zero, last, linear, null |\n| \\`top\\` | \\`k\\` (1 of 3) | integer >= 1 |\n| \\`top\\` | \\`by\\` (2 of 3) | one of mean, max, min, sum, last |\n| \\`top\\` | \\`order\\` (3 of 3) | one of asc, desc |\n| \\`bottom\\` | \\`k\\` (1 of 3) | integer >= 1 |\n| \\`bottom\\` | \\`by\\` (2 of 3) | one of mean, max, min, sum, last |\n| \\`bottom\\` | \\`order\\` (3 of 3) | one of asc, desc |\n| \\`top_offset\\` | \\`k\\` (1 of 4) | integer >= 1 |\n| \\`top_offset\\` | \\`by\\` (2 of 4) | one of mean, max, min, sum, last |\n| \\`top_offset\\` | \\`order\\` (3 of 4) | one of asc, desc |\n| \\`top_offset\\` | \\`offset\\` (4 of 4) | integer >= 0 |\n| \\`bottom_offset\\` | \\`k\\` (1 of 4) | integer >= 1 |\n| \\`bottom_offset\\` | \\`by\\` (2 of 4) | one of mean, max, min, sum, last |\n| \\`bottom_offset\\` | \\`order\\` (3 of 4) | one of asc, desc |\n| \\`bottom_offset\\` | \\`offset\\` (4 of 4) | integer >= 0 |`;\n\nexport const SUGAR_BLOCK = `| You write | It means |\n| --- | --- |\n| \\`ratio(count(a), count(b))\\` | \\`count(a) / count(b)\\` |\n| \\`p95(ttfb)\\` | \\`p(95, ttfb)\\` |\n| \\`week_before(count(a))\\` | \\`timeshift(count(a), -604800)\\` |\n| \\`day_before(count(a))\\` | \\`timeshift(count(a), -86400)\\` |\n| \\`hour_before(count(a))\\` | \\`timeshift(count(a), -3600)\\` |\n| \\`default_zero(count(a))\\` | \\`fill(count(a), zero)\\` |\n| \\`top(count(a) by (r), 5, mean, desc)\\` | \\`top(count(a), 5, mean, desc) by (r)\\` |`;\n\nexport const LIMITS_BLOCK = `| Limit | Value |\n| --- | --- |\n| Query string length | 4096 |\n| Expression nesting depth | 32 |\n| Filter nesting depth | 3 |\n| Values in one \\`in (...)\\` | 50 |`;\n\nexport const REFUSALS_BLOCK = `| Spelling | Why it is refused |\n| --- | --- |\n| \\`count_users(…)\\` | removed — Analytics Engine samples rows and weights the survivors, and a distinct count cannot be reweighted (sampling reweights rows, not sets), so it under-reports by the sample interval. Use count() |\n| \\`unique(…)\\` | removed from the language — count(DISTINCT …) takes no sample weight, has no conditional form and cannot merge across groups. Stored metrics using it still render; no new one can be authored. Use count() |\n| \\`retention_Nd(…)\\` | has no time-series form; retention lives in the experiment analyzer |\n| \\`anomalies(…)\\` | detection is a property of the alert rule now, not of the metric: create an alert with kind 'anomaly' and set its sigma. The metric stays what it measures, and the same seasonal baseline can be drawn on its chart by turning the band on |\n| \\`deviation(…)\\` | detection is a property of the alert rule now, not of the metric: an alert with kind 'anomaly' compares this metric against its own seasonal baseline in sigmas, at a sigma and a direction you set on the rule — so one metric can back rules of different sensitivity |\n| \\`outliers(…)\\` | detection is a property of the alert rule now, not of the metric: an alert with kind 'outliers' on a metric grouped by() compares each group against its peers in the same bucket, at a sigma you set on the rule |\n| \\`expected(…)\\` | the seasonal band is a display property of the metric now, not a function: turn the band on and every chart of this metric draws it — at the same sigma an anomaly alert would fire at |\n| \\`forecast(…)\\` | the projection is a display property of the metric now, not a function: set the metric's forecast method and horizon, and every chart of it projects forward without changing what the metric measures |`;\n","import type { CustomOp } from \"./types.js\";\nimport {\n AGGREGATES_BLOCK,\n AGGREGATIONS_BLOCK,\n REFUSALS_BLOCK,\n} from \"./grammar.generated.js\";\n\n/**\n * The Shipeasy metric query DSL grammar — printed by `shipeasy metrics grammar`\n * / the `metrics_grammar` MCP tool.\n *\n * This is the one-stop reference for both humans and AI agents that need to\n * author a `metrics create --query \"...\"` string. It is intentionally\n * self-contained: the formal grammar (precise, for machine parsing), a full\n * aggregation reference (semantics + value-label rules + experiment behaviour),\n * the selector/filter/group-by/ratio rules, hard constraints, and glossed\n * examples.\n *\n * Source of truth for semantics is the RUNTIME parser + IR that the server\n * actually runs: the main repo's `packages/query-dsl` (`parse-expr.ts` /\n * `expr.ts`). The CLI forwards the raw `--query` string to the server, which\n * parses it — there is no second parser here to keep in step, only this text,\n * which has to stay in sync with `packages/query-dsl`.\n */\nexport const METRIC_GRAMMAR = `SHIPEASY METRIC QUERY DSL\n=========================\n\nA metric is an EXPRESSION over an event stream. An aggregation over one event\nis a leaf; leaves compose with \\`+ - * /\\`, parentheses group, and a metric may\nend with \\`by (...)\\` or \\`without (...)\\` to split it into one series per label\ncombination. This DSL is the string you pass to \\`metrics create --query \"...\"\\`\n(equivalently the typed \\`query_ir\\`).\n\nSo \\`count(a) / count(b)\\` is a rate, \\`count(a) / count(b) * 100\\` is a\npercentage, and \\`(count(a) - count(b)) / count(c)\\` is as ordinary as it looks.\n\\`ratio(a, b)\\` still parses and means exactly \\`a / b\\`.\n\n\nGRAMMAR (BNF)\n-------------\n Query := Expression GroupBy?\n Expression := Term ((\"+\" | \"-\") Term)*\n Term := Factor ((\"*\" | \"/\") Factor)*\n Factor := \"-\"? Primary\n Primary := Number | \"(\" Expression \")\" | Aggregate | Function\n Selector := Identifier (\"{\" Predicate ((\",\"|\"and\"|\"or\") Predicate)* \",\"? \"}\")?\n Predicate := \"not\"? ( Identifier (\"=\" | \"=~\") StringLiteral\n | Identifier (\">\" | \">=\" | \"<\" | \"<=\") Number\n | Identifier \"not\"? \"in\" \"(\" StringLiteral (\",\" ...)* \")\"\n | Identifier \":\" \"*\"\n | \"(\" Predicate \")\" )\n GroupBy := (\"by\" | \"without\") \"(\" Identifier (\",\" Identifier)* \",\"? \")\"\n StringLiteral := double-quoted; \\\\\" is a literal quote, \\\\\\\\ is a backslash\n Identifier := [A-Za-z_][A-Za-z0-9_]* (case-sensitive)\n\n There is ONE negation and it goes in front of a predicate: \\`not status=\"ok\"\\`.\n \\`!=\\` and \\`!~\\` are refused by name.\n\n The trailing Identifier after the selector — \"(\" Selector \",\" Identifier \")\" —\n is the VALUE LABEL: the numeric event label the aggregation reduces. Whether it\n is allowed, and whether it is needed, is per aggregation (see below).\n\n${AGGREGATES_BLOCK}\n\n\nAGGREGATIONS\n------------\n${AGGREGATIONS_BLOCK}\n\n A value label is optional wherever it is allowed: omitted, the aggregation\n reduces the event's own default numeric value. \\`count\\` takes the event alone.\n\n \\`count\\` is one per matching ROW, so a user who fired the event twice counts\n twice.\n\n In an experiment, \\`min\\`, \\`max\\` and \\`p\\` collapse to a per-user \\`avg\\`: the\n t-test needs a per-user mean and variance, and those three have neither. They\n are exact on a dashboard. For an exact experiment metric pick count / sum /\n avg, or a rate — a rate collapses to a per-user 0/1 outcome (a proportion),\n not a ratio-of-sums.\n\n\nSELECTOR & FILTERS\n------------------\n The selector is the event name plus an optional \\`{ ... }\\` filter set that\n narrows which events count. Each filter compares an event LABEL to a quoted\n string:\n\n = equal =~ glob match\n > >= < <= order, NUMERIC labels only, value written BARE\n in (\"a\", \"b\") a value set label:* the label is set at all\n not <predicate> negation, in FRONT of the predicate\n\n There is no \\`!=\\` and no \\`!~\\`. One negation, one place it goes:\n \\`{not tier=\"free\"}\\`. Predicates join with \\`and\\` / \\`or\\` (a comma is another\n \\`and\\`) and parenthesise.\n\n - \\`=~\\` takes a GLOB, NOT a regex. Two wildcards, and a glob matches the\n WHOLE value — there are no anchors because there is nothing to anchor:\n\n * any sequence of characters ? exactly one character\n\n route=~\"/api*\" starts with /api\n route=~\"*checkout\" ends with checkout\n route=~\"*admin*\" contains admin\n route=~\"/v?/users\" /v1/users, /v2/users …\n route=~\"/health\" EXACTLY /health — same as \\`route=\"/health\"\\`\n\n Every other character is a LITERAL, dots included, so \\`host=~\"*.acme.com\"\\`\n works as written. Regex syntax — \\`^\\` \\`$\\` \\`.*\\` \\`|\\` \\`[]\\` \\`()\\` \\`+\\` \\`{}\\` \\`\\\\\\\\\\` — is\n REJECTED at save time rather than reinterpreted: \\`^/api\\` would be a glob for\n a value that literally starts with a caret, and \\`/api/.*\\` would match\n \\`/api/.x\\` but not \\`/api/x\\`. Write \\`/api*\\` instead.\n - Values are ALWAYS double-quoted strings, even for numeric labels — they are\n coerced on the server (\\`status=\"200\"\\`) — EXCEPT the order comparisons,\n whose value is written bare (\\`ms > 500\\`). A glob on a numeric or boolean\n label is a validation error.\n - Multiple predicates are AND-ed: \\`{country=\"US\", not tier=\"free\"}\\`.\n - Every filter label AND the value label must be a label DECLARED on the source\n event. Undeclared labels are a validation error, not a silent no-match.\n\n\nGROUP-BY\n--------\n Splits the result into one series per label combination.\n by (a, b) one series per distinct (a, b) — keep only these labels\n without (a, b) group by all declared labels EXCEPT a, b\n\n NOTE: group-by is a DASHBOARD-only feature. In an experiment the group-by is\n ignored — a per-user reducer is applied across the whole arm instead.\n\n\nRATES (success rate, conversion, failure %, …)\n----------------------------------------------\n Division is ordinary: \\`a / b\\`. Each side is its own expression with its own\n event and filters, so the two sides can be different events. \\`ratio(a, b)\\` is\n the same thing spelled as a function.\n\n count(checkout_completed) / count(checkout_started)\n count(paid) / count(signed_up)\n count(payment{ok=\"1\"}) / count(payment) one event, filtered side\n count(errors) / count(requests) * 100 as a percentage\n\n Rules:\n - A zero denominator yields 0, not an error.\n - \\`by (...)\\` / \\`without (...)\\` applies to the whole rate, and works.\n - AS AN EXPERIMENT METRIC both sides must be \\`count\\`. That is the one real\n restriction, and it is about the per-user collapse rather than the query:\n a rate becomes \"did the numerator happen, among the users eligible for the\n denominator\", which is a 0/1 outcome per user. \\`sum(a, v) / count(b)\\`\n charts fine and is refused when attached to an experiment.\n - It is a COHORT RATE over the window — numerator events ÷ denominator events —\n NOT a per-id join. It never matches an individual attempt to its outcome by a\n correlation id; it counts each side over the window and divides. If you need a\n matched pair, resolve the outcome in your own code and emit ONE event carrying\n the result (e.g. an \\`ok\\` label), then use \\`ratio(count(e{ok=\"1\"}), count(e))\\`\n or \\`avg(e, ok)\\`.\n - In an experiment a per-user ratio is a 0/1 outcome — did the numerator happen,\n among denominator-eligible users — i.e. a proportion, not a ratio-of-sums.\n - When creating with \\`--event-name\\`, pass the NUMERATOR's event name.\n\n\nREFUSED BY NAME\n---------------\n Each of these is recognised in order to be refused, with a message saying what\n to write instead. They are not gaps.\n\n${REFUSALS_BLOCK}\n\n Also refused: \\`!=\\` and \\`!~\\` (write \\`not label=\"v\"\\`), a regex inside \\`=~\\`\n (globs only), an order comparison on a text label, a quoted comparison value\n (\\`ms > \"500\"\\`), and trailing tokens after the query.\n\n\nEXAMPLES (query — what it measures)\n--------------------------------------\n count(checkout_completed)\n number of completed checkouts.\n\n count(add_to_cart{country=\"US\"})\n number of US add-to-cart events (a user can count many times).\n\n sum(purchase{country=\"US\"}, amount)\n total purchase amount from US purchase events.\n\n avg(req_dur{not tier=\"free\"}, ms) without (region)\n mean request duration for non-free tiers, one series per region-excluded\n label combination.\n\n p99(req_dur{route=~\"/api*\"}, ms) by (route, status)\n 99th-percentile latency of /api requests, split by route and status.\n\n ratio(count(checkout_completed), count(checkout_started))\n checkout conversion rate — completions ÷ starts over the window.\n\n ratio(count(payment{ok=\"0\"}), count(payment))\n payment failure rate from a single event's outcome label.\n`;\n\nexport const grammarOp: CustomOp = {\n group: [\"metrics\"],\n name: \"grammar\",\n summary: \"Print the metric query DSL grammar\",\n description:\n \"Print the full metric query DSL reference — grammar, aggregation semantics, \" +\n \"filter/group-by/ratio rules, and glossed examples — used to author `metrics create --query`.\",\n params: [],\n examples: [{ run: \"shipeasy metrics grammar\" }],\n run: () => ({ grammar: METRIC_GRAMMAR }),\n};\n","/**\n * The custom-operations registry — hand-written operations that are NOT admin\n * API endpoints (so they can't be generated from the spec): the metric-DSL\n * grammar (pure) and the SDK-docs fetcher (outbound `fetch` to GitHub Pages).\n *\n * It mirrors the old operations registry in spirit, but is deliberately tiny and\n * framework-agnostic: each `CustomOp` carries its command path, params, and a\n * self-contained `run`. Both consumers project it with a thin adapter — the CLI\n * (`commands/custom.ts`) and, later, the MCP server — so the surface stays in\n * sync across them. `run` never touches the filesystem, so it's worker-safe.\n */\nexport type CustomParamType = \"string\" | \"number\" | \"boolean\";\n\nexport interface CustomParam {\n name: string;\n type: CustomParamType;\n description?: string;\n required?: boolean;\n /** Render as a positional CLI argument (vs a `--flag`). */\n positional?: boolean;\n enum?: string[];\n}\n\nexport interface CustomOp {\n /** Command path, e.g. `[\"docs\"]` → `shipeasy docs <name>`, `[\"metrics\"]` → `metrics <name>`. */\n group: string[];\n /** Verb. */\n name: string;\n summary: string;\n description?: string;\n params: CustomParam[];\n examples?: { note?: string; run: string }[];\n /** Self-contained handler. `args` are the coerced param values. */\n run: (args: Record<string, unknown>) => Promise<unknown> | unknown;\n}\n\n/**\n * Group-level help for a custom-op command group (e.g. `docs`). Mirrors what an\n * OpenAPI tag carries for the generated tree — a short `summary` (shown in the\n * parent `--help` list) and a long `description` (shown on the group's own\n * `--help`). Consumers look this up by `group` path when creating the group so a\n * custom group reads as richly as a spec-backed one, instead of the bare\n * `\"<name> commands\"` fallback.\n */\nexport interface CustomGroup {\n /** Group path, e.g. `[\"docs\"]`. */\n group: string[];\n summary: string;\n description?: string;\n aliases?: string[];\n}\n\n/** Thrown by a custom op for a user-facing error with an HTTP-ish status. */\nexport class CustomOpError extends Error {\n constructor(\n message: string,\n public status = 400,\n ) {\n super(message);\n this.name = \"CustomOpError\";\n }\n}\n\nexport const opId = (op: CustomOp): string => [...op.group, op.name].join(\".\");\n","import { type CustomOp, CustomOpError } from \"./types.js\";\n\n/**\n * SDK-docs operations — `docs list/get/skill`. A generic fetcher over each SDK\n * repo's `/docs/` folder published to plain GitHub Pages (latest only, no\n * backend, no version arg). The `run`s do outbound `fetch` (worker-safe — not\n * the fs/AST boundary) and fall back to a built-in default doc set for repos\n * that haven't adopted the doc standard yet.\n */\nconst SDK_REPOS: Record<string, { owner: string; repo: string }> = {\n typescript: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n javascript: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n node: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n ts: { owner: \"shipeasy-ai\", repo: \"sdk-ts\" },\n python: { owner: \"shipeasy-ai\", repo: \"sdk-python\" },\n go: { owner: \"shipeasy-ai\", repo: \"sdk-go\" },\n java: { owner: \"shipeasy-ai\", repo: \"sdk-java\" },\n kotlin: { owner: \"shipeasy-ai\", repo: \"sdk-kotlin\" },\n php: { owner: \"shipeasy-ai\", repo: \"sdk-php\" },\n swift: { owner: \"shipeasy-ai\", repo: \"sdk-swift\" },\n ruby: { owner: \"shipeasy-ai\", repo: \"sdk-ruby\" },\n};\nconst SDK_ENUM = Object.keys(SDK_REPOS);\n\ninterface DocManifest {\n schemaVersion: number;\n sdk: string;\n placeholders?: string[];\n skill?: string;\n pages?: Record<string, string>;\n snippets?: Record<string, Record<string, string>>;\n /**\n * Optional: which doc handles an onboarding run should pull for a given setup\n * topic (`devtools`, `flags`, `head-tags`, …), best first. It exists so an SDK\n * repo can retarget or extend what `shipeasy setup` embeds — renaming a page,\n * or adding one a topic now needs — WITHOUT a CLI release. Consumers fall back\n * to their own built-in handle list for any topic absent here.\n */\n setup?: Record<string, string[]>;\n}\n\nconst DEFAULT_MANIFEST: DocManifest = {\n schemaVersion: 2,\n sdk: \"default\",\n placeholders: [\"RESOURCE_NAME\"],\n skill: \"skill/SKILL.md\",\n pages: { overview: \"pages/overview.md\", installation: \"pages/installation.md\" },\n snippets: { release: { flags: \"snippets/release/flags.md\" } },\n};\nconst DEFAULT_CONTENT: Record<string, string> = {\n \"pages/overview.md\":\n \"# Shipeasy SDK\\n\\nThis SDK has not published its `/docs/` folder yet. See https://docs.shipeasy.ai for the full reference.\",\n \"pages/installation.md\":\n \"# Installation\\n\\nInstall the Shipeasy SDK for your language, then call `shipeasy({ serverKey })` (server) or `shipeasy({ clientKey })` (browser).\",\n \"snippets/release/flags.md\": \"```\\nconst on = await client.checkGate(user, '{{RESOURCE_NAME}}');\\n```\",\n \"skill/SKILL.md\":\n \"---\\nname: shipeasy-sdk\\ndescription: Use the Shipeasy SDK for flags, experiments, configs, and i18n.\\n---\\n\\nThis SDK has not published a skill yet. See https://docs.shipeasy.ai.\",\n};\n\n/**\n * Resolve the caller-supplied `sdk`. The adapters (CLI/MCP) default it from the\n * nearest `.shipeasy` before we get here, so an empty value means neither a flag\n * nor a bound project supplied one — surface that explicitly.\n */\nfunction requireSdk(sdk: unknown): string {\n const s = typeof sdk === \"string\" ? sdk.trim() : \"\";\n if (!s)\n throw new CustomOpError(\n `No SDK given and none recorded in .shipeasy. Pass --sdk <lang> (one of: ${SDK_ENUM.join(\", \")}), ` +\n `or run \\`shipeasy detect\\` in the project to record its sdk.`,\n 400,\n );\n return s;\n}\nfunction repoFor(sdk: string): { owner: string; repo: string } {\n const r = SDK_REPOS[sdk.toLowerCase()];\n if (!r) throw new CustomOpError(`Unknown SDK '${sdk}'. One of: ${SDK_ENUM.join(\", \")}`, 400);\n return r;\n}\nfunction pagesBase(sdk: string): string {\n const { owner, repo } = repoFor(sdk);\n return `https://${owner}.github.io/${repo}`;\n}\nasync function fetchText(url: string): Promise<string | null> {\n const res = await fetch(url);\n if (!res.ok) return null;\n return res.text();\n}\nasync function loadManifest(sdk: string): Promise<{ manifest: DocManifest; fallback: boolean }> {\n const text = await fetchText(`${pagesBase(sdk)}/manifest.json`);\n if (!text) return { manifest: DEFAULT_MANIFEST, fallback: true };\n try {\n return { manifest: JSON.parse(text) as DocManifest, fallback: false };\n } catch {\n return { manifest: DEFAULT_MANIFEST, fallback: true };\n }\n}\nfunction resolvePath(manifest: DocManifest, handle: string): string {\n if (handle.endsWith(\".md\")) return handle;\n if (manifest.pages?.[handle]) return manifest.pages[handle];\n if (handle.includes(\"/\")) {\n const [group, resource] = handle.split(\"/\", 2);\n const p = manifest.snippets?.[group]?.[resource];\n if (p) return p;\n }\n throw new CustomOpError(\n `Doc '${handle}' not found. Run 'docs list --sdk <lang>' to see available pages and snippets.`,\n 404,\n );\n}\nfunction substitute(body: string, manifest: DocManifest, args: Record<string, unknown>): string {\n let out = body;\n for (const ph of manifest.placeholders ?? []) {\n const value =\n (args[ph] as string | undefined) ??\n (ph === \"RESOURCE_NAME\" ? (args.name as string | undefined) : undefined) ??\n (ph === \"FRAMEWORK\" ? (args.framework as string | undefined) : undefined);\n if (value !== undefined) out = out.replaceAll(`{{${ph}}}`, value);\n }\n return out;\n}\n\nexport const docsOps: CustomOp[] = [\n {\n group: [\"docs\"],\n name: \"list\",\n summary: \"List an SDK's documentation tree\",\n description:\n \"Fetch an SDK's `/docs/manifest.json` and return the doc tree — feature pages, nested snippet groups, the optional setup-topic map, and whether an installable skill exists.\",\n params: [{ name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM }],\n examples: [{ run: \"shipeasy docs list --sdk python\" }],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n return {\n sdk,\n fallback,\n pages: Object.keys(manifest.pages ?? {}),\n snippets: Object.fromEntries(\n Object.entries(manifest.snippets ?? {}).map(([g, r]) => [g, Object.keys(r)]),\n ),\n setup: manifest.setup ?? {},\n skill: Boolean(manifest.skill),\n };\n },\n },\n {\n group: [\"docs\"],\n name: \"get\",\n summary: \"Fetch one SDK doc page or snippet\",\n description:\n \"Fetch one feature page (`flags`, `experiments`, …) or nested snippet (`release/experiments`, …), substituting declared {{placeholders}} from caller args.\",\n params: [\n { name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM },\n { name: \"path\", type: \"string\", description: \"Page key or snippet 'group/resource'.\", required: true, positional: true },\n { name: \"framework\", type: \"string\", description: \"Framework hint (substitutes {{FRAMEWORK}}).\" },\n { name: \"name\", type: \"string\", description: \"Resource name (substitutes {{RESOURCE_NAME}}).\" },\n ],\n examples: [\n { note: \"A feature page\", run: \"shipeasy docs get --sdk python experiments\" },\n { note: \"A nested snippet\", run: \"shipeasy docs get --sdk typescript release/flags --name checkout_v2\" },\n ],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n const path = resolvePath(manifest, args.path as string);\n const body = fallback ? DEFAULT_CONTENT[path] : ((await fetchText(`${pagesBase(sdk)}/${path}`)) ?? undefined);\n if (body === undefined) throw new CustomOpError(`Doc '${path}' could not be fetched for '${sdk}'.`, 404);\n return { sdk, path, fallback, content: substitute(body, manifest, args) };\n },\n },\n {\n group: [\"docs\"],\n name: \"skill\",\n summary: \"Fetch an SDK's installable LLM skill\",\n description:\n \"Fetch the SDK's `skill/SKILL.md` (frontmatter intact) so an agent can install it verbatim. The CLI `--install` writes it locally (a consumer fs side-effect).\",\n params: [\n { name: \"sdk\", type: \"string\", description: \"SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted.\", required: false, enum: SDK_ENUM },\n { name: \"install\", type: \"boolean\", description: \"CLI only: write the skill to the local agent skills dir.\" },\n ],\n examples: [{ run: \"shipeasy docs skill --sdk python\" }],\n run: async (args) => {\n const sdk = requireSdk(args.sdk);\n const { manifest, fallback } = await loadManifest(sdk);\n const skillPath = manifest.skill ?? \"skill/SKILL.md\";\n const content = fallback ? DEFAULT_CONTENT[skillPath] : ((await fetchText(`${pagesBase(sdk)}/${skillPath}`)) ?? undefined);\n if (content === undefined) throw new CustomOpError(`No skill published for '${sdk}'.`, 404);\n return { sdk, skillPath, fallback, content };\n },\n },\n];\n","import { grammarOp } from \"./grammar.js\";\nimport { docsOps } from \"./docs.js\";\nimport type { CustomOp, CustomGroup } from \"./types.js\";\n\nexport type { CustomOp, CustomGroup, CustomParam, CustomParamType } from \"./types.js\";\nexport { CustomOpError, opId } from \"./types.js\";\nexport { METRIC_GRAMMAR } from \"./grammar.js\";\n\n/**\n * Every custom (non-spec) operation, in surface order. The CLI and MCP each\n * project this with a thin adapter so the sugar commands stay in sync.\n */\nexport const customOperations: CustomOp[] = [grammarOp, ...docsOps];\n\n/**\n * Group-level help for custom-op groups that aren't backed by an OpenAPI tag.\n * `metrics` is a spec tag (its group is created — and described — by the\n * generated tree), so only `docs` needs an entry here; without it the CLI would\n * label the group the bare `\"docs commands\"`.\n */\nexport const customGroups: CustomGroup[] = [\n {\n group: [\"docs\"],\n summary:\n \"SDK docs: fetch a language SDK's published docs — its page tree, feature pages, code snippets, and installable agent skill.\",\n description:\n \"SDK docs — a read-only fetcher over each language SDK's `/docs/` folder, \" +\n \"published to plain GitHub Pages (latest only; no backend, no version arg). \" +\n \"Point it at an SDK with `--sdk <lang>` (one of: typescript, python, go, \" +\n \"java, kotlin, php, swift, ruby) or let it default to the `sdk` recorded in \" +\n \"the nearest `.shipeasy`.\\n\\n\" +\n \"**Commands.**\\n\" +\n \"- `list` — the SDK's doc tree: feature pages, nested snippet groups, and whether an installable skill exists.\\n\" +\n \"- `get <path>` — one feature page (`flags`, `experiments`, …) or nested snippet (`release/flags`), with `{{placeholders}}` substituted from `--name`/`--framework`.\\n\" +\n \"- `skill` — the SDK's installable LLM skill (`SKILL.md`); `--install` writes it into your agent's skills dir.\\n\\n\" +\n \"SDKs that haven't adopted the doc standard yet fall back to a built-in \" +\n \"default doc set, flagged `fallback: true` in the output.\",\n },\n];\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as ErrorCode, a as Error } from './client-yqGYju-M.js';
2
- export { A as AckOpsItemData, b as AckOpsItemError, c as AckOpsItemErrors, d as AckOpsItemRequest, e as AckOpsItemResponse, f as AckOpsItemResponse2, g as AckOpsItemResponses, h as AlertApiRow, i as ApproveEventData, j as ApproveEventError, k as ApproveEventErrors, l as ApproveEventRequest, m as ApproveEventResponse, n as ApproveEventResponse2, o as ApproveEventResponses, p as AttributeType, C as ClaudeTriggerConfig, q as Client, r as ClientOptions, s as Config, t as ConfigName, u as ConfigureOptions, v as ConnectorData, w as ConnectorEvent, x as ConnectorProvider, y as ConnectorRecord, z as CopilotTriggerConfig, B as CreateAlertRuleData, D as CreateAlertRuleError, F as CreateAlertRuleErrors, G as CreateAlertRuleRequest, H as CreateAlertRuleResponse, I as CreateAlertRuleResponse2, J as CreateAlertRuleResponses, K as CreateAttributeData, L as CreateAttributeError, M as CreateAttributeErrors, N as CreateAttributeRequest, O as CreateAttributeResponse, P as CreateAttributeResponse2, Q as CreateAttributeResponses, R as CreateBugRequest, S as CreateClaudeTriggerRequest, T as CreateClientConfig, U as CreateConfigData, V as CreateConfigError, W as CreateConfigErrors, X as CreateConfigRequest, Y as CreateConfigResponse, Z as CreateConfigResponse2, _ as CreateConfigResponses, $ as CreateConnectorData, a0 as CreateConnectorError, a1 as CreateConnectorErrors, a2 as CreateConnectorRequest, a3 as CreateConnectorResponse, a4 as CreateConnectorResponse2, a5 as CreateConnectorResponses, a6 as CreateCopilotTriggerRequest, a7 as CreateCursorTriggerRequest, a8 as CreateEventData, a9 as CreateEventError, aa as CreateEventErrors, ab as CreateEventRequest, ac as CreateEventResponse, ad as CreateEventResponse2, ae as CreateEventResponses, af as CreateExperimentData, ag as CreateExperimentError, ah as CreateExperimentErrors, ai as CreateExperimentReadoutData, aj as CreateExperimentReadoutError, ak as CreateExperimentReadoutErrors, al as CreateExperimentReadoutRequest, am as CreateExperimentReadoutResponse, an as CreateExperimentReadoutResponse2, ao as CreateExperimentReadoutResponses, ap as CreateExperimentRequest, aq as CreateExperimentResponse, ar as CreateExperimentResponse2, as as CreateExperimentResponses, at as CreateFeatureRequestRequest, au as CreateGateData, av as CreateGateError, aw as CreateGateErrors, ax as CreateGateRequest, ay as CreateGateResponse, az as CreateGateResponse2, aA as CreateGateResponses, aB as CreateGateTemplateData, aC as CreateGateTemplateError, aD as CreateGateTemplateErrors, aE as CreateGateTemplateRequest, aF as CreateGateTemplateResponse, aG as CreateGateTemplateResponse2, aH as CreateGateTemplateResponses, aI as CreateI18nDraftData, aJ as CreateI18nDraftError, aK as CreateI18nDraftErrors, aL as CreateI18nDraftRequest, aM as CreateI18nDraftResponse, aN as CreateI18nDraftResponses, aO as CreateI18nProfileData, aP as CreateI18nProfileError, aQ as CreateI18nProfileErrors, aR as CreateI18nProfileRequest, aS as CreateI18nProfileResponse, aT as CreateI18nProfileResponse2, aU as CreateI18nProfileResponses, aV as CreateJulesTriggerRequest, aW as CreateKeyData, aX as CreateKeyError, aY as CreateKeyErrors, aZ as CreateKeyRequest, a_ as CreateKeyResponse, a$ as CreateKeyResponse2, b0 as CreateKeyResponses, b1 as CreateKillswitchData, b2 as CreateKillswitchError, b3 as CreateKillswitchErrors, b4 as CreateKillswitchRequest, b5 as CreateKillswitchResponse, b6 as CreateKillswitchResponse2, b7 as CreateKillswitchResponses, b8 as CreateMetricData, b9 as CreateMetricError, ba as CreateMetricErrors, bb as CreateMetricRequest, bc as CreateMetricResponse, bd as CreateMetricResponse2, be as CreateMetricResponses, bf as CreateMetricWithQuery, bg as CreateMetricWithQueryIr, bh as CreateOAuthConnectorRequest, bi as CreateOpsCommentData, bj as CreateOpsCommentError, bk as CreateOpsCommentErrors, bl as CreateOpsCommentRequest, bm as CreateOpsCommentResponse, bn as CreateOpsCommentResponse2, bo as CreateOpsCommentResponses, bp as CreateOpsInvestigationData, bq as CreateOpsInvestigationError, br as CreateOpsInvestigationErrors, bs as CreateOpsInvestigationRequest, bt as CreateOpsInvestigationResponse, bu as CreateOpsInvestigationResponses, bv as CreateOpsItemData, bw as CreateOpsItemError, bx as CreateOpsItemErrors, by as CreateOpsItemRequest, bz as CreateOpsItemResponse, bA as CreateOpsItemResponse2, bB as CreateOpsItemResponses, bC as CreateTriggerConnectorData, bD as CreateTriggerConnectorError, bE as CreateTriggerConnectorErrors, bF as CreateTriggerConnectorRequest, bG as CreateTriggerConnectorResponse, bH as CreateTriggerConnectorResponses, bI as CreateUniverseData, bJ as CreateUniverseError, bK as CreateUniverseErrors, bL as CreateUniverseRequest, bM as CreateUniverseResponse, bN as CreateUniverseResponse2, bO as CreateUniverseResponses, bP as CursorTriggerConfig, bQ as DeleteAlertRuleData, bR as DeleteAlertRuleError, bS as DeleteAlertRuleErrors, bT as DeleteAlertRuleResponse, bU as DeleteAlertRuleResponse2, bV as DeleteAlertRuleResponses, bW as DeleteAttributeData, bX as DeleteAttributeError, bY as DeleteAttributeErrors, bZ as DeleteAttributeResponse, b_ as DeleteAttributeResponse2, b$ as DeleteAttributeResponses, c0 as DeleteConfigData, c1 as DeleteConfigError, c2 as DeleteConfigErrors, c3 as DeleteConfigResponse, c4 as DeleteConfigResponse2, c5 as DeleteConfigResponses, c6 as DeleteConnectorData, c7 as DeleteConnectorError, c8 as DeleteConnectorErrors, c9 as DeleteConnectorResponse, ca as DeleteConnectorResponse2, cb as DeleteConnectorResponses, cc as DeleteEventData, cd as DeleteEventError, ce as DeleteEventErrors, cf as DeleteEventResponse, cg as DeleteEventResponse2, ch as DeleteEventResponses, ci as DeleteExperimentData, cj as DeleteExperimentError, ck as DeleteExperimentErrors, cl as DeleteExperimentResponse, cm as DeleteExperimentResponse2, cn as DeleteExperimentResponses, co as DeleteGateData, cp as DeleteGateError, cq as DeleteGateErrors, cr as DeleteGateResponse, cs as DeleteGateResponse2, ct as DeleteGateResponses, cu as DeleteGateTemplateData, cv as DeleteGateTemplateError, cw as DeleteGateTemplateErrors, cx as DeleteGateTemplateResponse, cy as DeleteGateTemplateResponse2, cz as DeleteGateTemplateResponses, cA as DeleteI18nDraftData, cB as DeleteI18nDraftError, cC as DeleteI18nDraftErrors, cD as DeleteI18nDraftResponse, cE as DeleteI18nDraftResponses, cF as DeleteI18nKeyData, cG as DeleteI18nKeyError, cH as DeleteI18nKeyErrors, cI as DeleteI18nKeyResponse, cJ as DeleteI18nKeyResponses, cK as DeleteI18nProfileData, cL as DeleteI18nProfileError, cM as DeleteI18nProfileErrors, cN as DeleteI18nProfileResponse, cO as DeleteI18nProfileResponses, cP as DeleteKillswitchData, cQ as DeleteKillswitchError, cR as DeleteKillswitchErrors, cS as DeleteKillswitchResponse, cT as DeleteKillswitchResponse2, cU as DeleteKillswitchResponses, cV as DeleteMetricData, cW as DeleteMetricError, cX as DeleteMetricErrors, cY as DeleteMetricResponse, cZ as DeleteMetricResponse2, c_ as DeleteMetricResponses, c$ as DeleteOpsItemData, d0 as DeleteOpsItemError, d1 as DeleteOpsItemErrors, d2 as DeleteOpsItemResponse, d3 as DeleteOpsItemResponse2, d4 as DeleteOpsItemResponses, d5 as DeleteUniverseData, d6 as DeleteUniverseError, d7 as DeleteUniverseErrors, d8 as DeleteUniverseResponse, d9 as DeleteUniverseResponse2, da as DeleteUniverseResponses, db as DisableGateData, dc as DisableGateError, dd as DisableGateErrors, de as DisableGateResponse, df as DisableGateResponse2, dg as DisableGateResponses, dh as DiscardConfigDraftData, di as DiscardConfigDraftError, dj as DiscardConfigDraftErrors, dk as DiscardConfigDraftRequest, dl as DiscardConfigDraftResponse, dm as DiscardConfigDraftResponse2, dn as DiscardConfigDraftResponses, dp as Domain, dq as EnableGateData, dr as EnableGateError, ds as EnableGateErrors, dt as EnableGateResponse, du as EnableGateResponse2, dv as EnableGateResponses, dw as Env, dx as ErrorOccurrence, dy as ErrorRecord, dz as ErrorSeriesRequest, dA as ErrorSeriesResponse, dB as ExperimentApiRow, dC as ExperimentInlineMetric, dD as ExperimentReadoutApiRow, dE as ExperimentReadoutCaveat, dF as ExperimentReadoutMetric, dG as ExperimentResultRow, dH as FileErrorTicketData, dI as FileErrorTicketError, dJ as FileErrorTicketErrors, dK as FileErrorTicketResponse, dL as FileErrorTicketResponse2, dM as FileErrorTicketResponses, dN as FireConnectorData, dO as FireConnectorError, dP as FireConnectorErrors, dQ as FireConnectorRequest, dR as FireConnectorResponse, dS as FireConnectorResponse2, dT as FireConnectorResponses, dU as Folder, dV as GateApiRow, dW as GateTemplate, dX as GateTemplateRule, dY as GateTemplateRuleResponse, dZ as GetAttributeData, d_ as GetAttributeError, d$ as GetAttributeErrors, e0 as GetAttributeResponse, e1 as GetAttributeResponse2, e2 as GetAttributeResponses, e3 as GetConfigData, e4 as GetConfigError, e5 as GetConfigErrors, e6 as GetConfigResponse, e7 as GetConfigResponse2, e8 as GetConfigResponses, e9 as GetConnectorData, ea as GetConnectorError, eb as GetConnectorErrors, ec as GetConnectorResponse, ed as GetConnectorResponses, ee as GetCurrentProjectData, ef as GetCurrentProjectError, eg as GetCurrentProjectErrors, eh as GetCurrentProjectResponse, ei as GetCurrentProjectResponse2, ej as GetCurrentProjectResponses, ek as GetErrorData, el as GetErrorError, em as GetErrorErrors, en as GetErrorResponse, eo as GetErrorResponses, ep as GetErrorSeriesData, eq as GetErrorSeriesError, er as GetErrorSeriesErrors, es as GetErrorSeriesResponse, et as GetErrorSeriesResponses, eu as GetEventData, ev as GetEventError, ew as GetEventErrors, ex as GetEventResponse, ey as GetEventResponse2, ez as GetEventResponses, eA as GetExperimentData, eB as GetExperimentError, eC as GetExperimentErrors, eD as GetExperimentReadoutData, eE as GetExperimentReadoutError, eF as GetExperimentReadoutErrors, eG as GetExperimentReadoutResponse, eH as GetExperimentReadoutResponses, eI as GetExperimentResponse, eJ as GetExperimentResponses, eK as GetExperimentResultsData, eL as GetExperimentResultsError, eM as GetExperimentResultsErrors, eN as GetExperimentResultsResponse, eO as GetExperimentResultsResponse2, eP as GetExperimentResultsResponses, eQ as GetExperimentTimeseriesData, eR as GetExperimentTimeseriesError, eS as GetExperimentTimeseriesErrors, eT as GetExperimentTimeseriesResponse, eU as GetExperimentTimeseriesResponse2, eV as GetExperimentTimeseriesResponses, eW as GetGateData, eX as GetGateError, eY as GetGateErrors, eZ as GetGateResponse, e_ as GetGateResponses, e$ as GetGateTemplateData, f0 as GetGateTemplateError, f1 as GetGateTemplateErrors, f2 as GetGateTemplateResponse, f3 as GetGateTemplateResponses, f4 as GetKillswitchData, f5 as GetKillswitchError, f6 as GetKillswitchErrors, f7 as GetKillswitchResponse, f8 as GetKillswitchResponse2, f9 as GetKillswitchResponses, fa as GetMetricData, fb as GetMetricError, fc as GetMetricErrors, fd as GetMetricResponse, fe as GetMetricResponse2, ff as GetMetricResponses, fg as GetMetricSeriesData, fh as GetMetricSeriesError, fi as GetMetricSeriesErrors, fj as GetMetricSeriesRequest, fk as GetMetricSeriesResponse, fl as GetMetricSeriesResponse2, fm as GetMetricSeriesResponses, fn as GetOpsItemData, fo as GetOpsItemError, fp as GetOpsItemErrors, fq as GetOpsItemResponse, fr as GetOpsItemResponse2, fs as GetOpsItemResponses, ft as GetProjectData, fu as GetProjectError, fv as GetProjectErrors, fw as GetProjectResponse, fx as GetProjectResponses, fy as GithubConnectorData, fz as GithubPrLink, fA as I18nDraft, fB as JulesTriggerConfig, fC as KeyRecord, fD as KillswitchValue, fE as LinkPrToOpsItemData, fF as LinkPrToOpsItemError, fG as LinkPrToOpsItemErrors, fH as LinkPrToOpsItemRequest, fI as LinkPrToOpsItemResponse, fJ as LinkPrToOpsItemResponse2, fK as LinkPrToOpsItemResponses, fL as ListAlertRulesData, fM as ListAlertRulesError, fN as ListAlertRulesErrors, fO as ListAlertRulesResponse, fP as ListAlertRulesResponse2, fQ as ListAlertRulesResponses, fR as ListAlertsData, fS as ListAlertsError, fT as ListAlertsErrors, fU as ListAlertsResponse, fV as ListAlertsResponse2, fW as ListAlertsResponses, fX as ListAttributesData, fY as ListAttributesError, fZ as ListAttributesErrors, f_ as ListAttributesResponse, f$ as ListAttributesResponse2, g0 as ListAttributesResponses, g1 as ListConfigActivityData, g2 as ListConfigActivityError, g3 as ListConfigActivityErrors, g4 as ListConfigActivityResponse, g5 as ListConfigActivityResponse2, g6 as ListConfigActivityResponses, g7 as ListConfigVersionsData, g8 as ListConfigVersionsError, g9 as ListConfigVersionsErrors, ga as ListConfigVersionsResponse, gb as ListConfigVersionsResponse2, gc as ListConfigVersionsResponses, gd as ListConfigsData, ge as ListConfigsError, gf as ListConfigsErrors, gg as ListConfigsResponse, gh as ListConfigsResponse2, gi as ListConfigsResponses, gj as ListConnectorsData, gk as ListConnectorsError, gl as ListConnectorsErrors, gm as ListConnectorsResponse, gn as ListConnectorsResponse2, go as ListConnectorsResponses, gp as ListErrorsData, gq as ListErrorsError, gr as ListErrorsErrors, gs as ListErrorsResponse, gt as ListErrorsResponse2, gu as ListErrorsResponses, gv as ListEventsData, gw as ListEventsError, gx as ListEventsErrors, gy as ListEventsResponse, gz as ListEventsResponse2, gA as ListEventsResponses, gB as ListExperimentsData, gC as ListExperimentsError, gD as ListExperimentsErrors, gE as ListExperimentsResponse, gF as ListExperimentsResponse2, gG as ListExperimentsResponses, gH as ListGateActivityData, gI as ListGateActivityError, gJ as ListGateActivityErrors, gK as ListGateActivityResponse, gL as ListGateActivityResponse2, gM as ListGateActivityResponses, gN as ListGateTemplatesData, gO as ListGateTemplatesError, gP as ListGateTemplatesErrors, gQ as ListGateTemplatesResponse, gR as ListGateTemplatesResponse2, gS as ListGateTemplatesResponses, gT as ListGatesData, gU as ListGatesError, gV as ListGatesErrors, gW as ListGatesResponse, gX as ListGatesResponse2, gY as ListGatesResponses, gZ as ListI18nDraftKeysData, g_ as ListI18nDraftKeysError, g$ as ListI18nDraftKeysErrors, h0 as ListI18nDraftKeysResponse, h1 as ListI18nDraftKeysResponse2, h2 as ListI18nDraftKeysResponses, h3 as ListI18nDraftsData, h4 as ListI18nDraftsError, h5 as ListI18nDraftsErrors, h6 as ListI18nDraftsResponse, h7 as ListI18nDraftsResponse2, h8 as ListI18nDraftsResponses, h9 as ListI18nKeysData, ha as ListI18nKeysError, hb as ListI18nKeysErrors, hc as ListI18nKeysResponse, hd as ListI18nKeysResponse2, he as ListI18nKeysResponses, hf as ListI18nProfilesData, hg as ListI18nProfilesError, hh as ListI18nProfilesErrors, hi as ListI18nProfilesResponse, hj as ListI18nProfilesResponse2, hk as ListI18nProfilesResponses, hl as ListKeysData, hm as ListKeysError, hn as ListKeysErrors, ho as ListKeysResponse, hp as ListKeysResponse2, hq as ListKeysResponses, hr as ListKillswitchesData, hs as ListKillswitchesError, ht as ListKillswitchesErrors, hu as ListKillswitchesResponse, hv as ListKillswitchesResponse2, hw as ListKillswitchesResponses, hx as ListMetricExperimentsData, hy as ListMetricExperimentsError, hz as ListMetricExperimentsErrors, hA as ListMetricExperimentsResponse, hB as ListMetricExperimentsResponse2, hC as ListMetricExperimentsResponses, hD as ListMetricsData, hE as ListMetricsError, hF as ListMetricsErrors, hG as ListMetricsResponse, hH as ListMetricsResponse2, hI as ListMetricsResponses, hJ as ListOpsAgentsData, hK as ListOpsAgentsError, hL as ListOpsAgentsErrors, hM as ListOpsAgentsResponse, hN as ListOpsAgentsResponse2, hO as ListOpsAgentsResponses, hP as ListOpsCommentsData, hQ as ListOpsCommentsError, hR as ListOpsCommentsErrors, hS as ListOpsCommentsResponse, hT as ListOpsCommentsResponse2, hU as ListOpsCommentsResponses, hV as ListOpsInvestigationsData, hW as ListOpsInvestigationsError, hX as ListOpsInvestigationsErrors, hY as ListOpsInvestigationsResponse, hZ as ListOpsInvestigationsResponse2, h_ as ListOpsInvestigationsResponses, h$ as ListOpsItemsData, i0 as ListOpsItemsError, i1 as ListOpsItemsErrors, i2 as ListOpsItemsResponse, i3 as ListOpsItemsResponse2, i4 as ListOpsItemsResponses, i5 as ListSlackChannelsData, i6 as ListSlackChannelsError, i7 as ListSlackChannelsErrors, i8 as ListSlackChannelsResponse, i9 as ListSlackChannelsResponse2, ia as ListSlackChannelsResponses, ib as ListUniversesData, ic as ListUniversesError, id as ListUniversesErrors, ie as ListUniversesResponse, ig as ListUniversesResponse2, ih as ListUniversesResponses, ii as MeasurePlanResource, ij as MeasurePlanStep, ik as MetricDefaultMinEffectOfInterest, il as MetricDirection, im as MetricDisplayUnit, io as MetricEventName, ip as MetricName, iq as MetricQueryDsl, ir as MetricWinsorizePct, is as NotificationTarget, it as NotifyOpsData, iu as NotifyOpsError, iv as NotifyOpsErrors, iw as NotifyOpsRequest, ix as NotifyOpsResponse, iy as NotifyOpsResponse2, iz as NotifyOpsResponses, iA as OkResponse, iB as OpsAgentProfile, iC as OpsAlertContext, iD as OpsAlertMetricSummary, iE as OpsAlertRuleSummary, iF as OpsBrowserContext, iG as OpsComment, iH as OpsCommentAuthorType, iI as OpsErrorContext, iJ as OpsInvestigation, iK as OpsInvestigationState, iL as OpsItemAttachment, iM as OpsItemContext, iN as OpsItemNotifyOrNull, iO as OpsItemOwner, iP as OpsItemPriority, iQ as OpsItemPriorityOrNull, iR as OpsItemRelated, iS as OpsItemStatus, iT as OpsMeasurePlanContext, iU as OpsRun, iV as OpsRunAction, iW as OpsRunActionOrNull, iX as Options, iY as PaginationCursor, iZ as PaginationLimit, i_ as ProjectId, i$ as PublishConfigDraftData, j0 as PublishConfigDraftError, j1 as PublishConfigDraftErrors, j2 as PublishConfigDraftRequest, j3 as PublishConfigDraftResponse, j4 as PublishConfigDraftResponse2, j5 as PublishConfigDraftResponses, j6 as PublishI18nProfileData, j7 as PublishI18nProfileError, j8 as PublishI18nProfileErrors, j9 as PublishI18nProfileRequest, ja as PublishI18nProfileResponse, jb as PublishI18nProfileResponse2, jc as PublishI18nProfileResponses, jd as PushI18nKeysData, je as PushI18nKeysError, jf as PushI18nKeysErrors, jg as PushI18nKeysRequest, jh as PushI18nKeysResponse, ji as PushI18nKeysResponse2, jj as PushI18nKeysResponses, jk as Q, jl as QueryIr, jm as ReanalyzeExperimentData, jn as ReanalyzeExperimentError, jo as ReanalyzeExperimentErrors, jp as ReanalyzeExperimentResponse, jq as ReanalyzeExperimentResponse2, jr as ReanalyzeExperimentResponses, js as RequestResult, jt as ResolveErrorData, ju as ResolveErrorError, jv as ResolveErrorErrors, jw as ResolveErrorResponse, jx as ResolveErrorResponses, jy as ResourceId, jz as RevokeKeyData, jA as RevokeKeyError, jB as RevokeKeyErrors, jC as RevokeKeyResponse, jD as RevokeKeyResponse2, jE as RevokeKeyResponses, jF as SaveConfigDraftData, jG as SaveConfigDraftError, jH as SaveConfigDraftErrors, jI as SaveConfigDraftRequest, jJ as SaveConfigDraftResponse, jK as SaveConfigDraftResponse2, jL as SaveConfigDraftResponses, jM as SearchHit, jN as SearchResourcesData, jO as SearchResourcesError, jP as SearchResourcesErrors, jQ as SearchResourcesResponse, jR as SearchResourcesResponses, jS as SearchResponse, jT as SetExperimentMetricsData, jU as SetExperimentMetricsError, jV as SetExperimentMetricsErrors, jW as SetExperimentMetricsRequest, jX as SetExperimentMetricsResponse, jY as SetExperimentMetricsResponse2, jZ as SetExperimentMetricsResponses, j_ as SetExperimentStatusData, j$ as SetExperimentStatusError, k0 as SetExperimentStatusErrors, k1 as SetExperimentStatusRequest, k2 as SetExperimentStatusResponse, k3 as SetExperimentStatusResponse2, k4 as SetExperimentStatusResponses, k5 as SetI18nLabelData, k6 as SetI18nLabelError, k7 as SetI18nLabelErrors, k8 as SetI18nLabelRequest, k9 as SetI18nLabelResponse, ka as SetI18nLabelResponse2, kb as SetI18nLabelResponses, kc as SetKillswitchSwitchData, kd as SetKillswitchSwitchError, ke as SetKillswitchSwitchErrors, kf as SetKillswitchSwitchRequest, kg as SetKillswitchSwitchResponse, kh as SetKillswitchSwitchResponse2, ki as SetKillswitchSwitchResponses, kj as SetKillswitchValueData, kk as SetKillswitchValueError, kl as SetKillswitchValueErrors, km as SetKillswitchValueRequest, kn as SetKillswitchValueResponse, ko as SetKillswitchValueResponse2, kp as SetKillswitchValueResponses, kq as SlackConnectorData, kr as TestConnectorData, ks as TestConnectorError, kt as TestConnectorErrors, ku as TestConnectorResponse, kv as TestConnectorResponse2, kw as TestConnectorResponses, kx as UnarchiveMetricData, ky as UnarchiveMetricError, kz as UnarchiveMetricErrors, kA as UnarchiveMetricResponse, kB as UnarchiveMetricResponse2, kC as UnarchiveMetricResponses, kD as UniverseParam, kE as UniverseParamSchema, kF as UnsetKillswitchSwitchData, kG as UnsetKillswitchSwitchError, kH as UnsetKillswitchSwitchErrors, kI as UnsetKillswitchSwitchRequest, kJ as UnsetKillswitchSwitchResponse, kK as UnsetKillswitchSwitchResponse2, kL as UnsetKillswitchSwitchResponses, kM as UpdateAlertData, kN as UpdateAlertError, kO as UpdateAlertErrors, kP as UpdateAlertRequest, kQ as UpdateAlertResponse, kR as UpdateAlertResponses, kS as UpdateAlertRuleData, kT as UpdateAlertRuleError, kU as UpdateAlertRuleErrors, kV as UpdateAlertRuleRequest, kW as UpdateAlertRuleResponse, kX as UpdateAlertRuleResponse2, kY as UpdateAlertRuleResponses, kZ as UpdateAttributeData, k_ as UpdateAttributeError, k$ as UpdateAttributeErrors, l0 as UpdateAttributeRequest, l1 as UpdateAttributeResponse, l2 as UpdateAttributeResponse2, l3 as UpdateAttributeResponses, l4 as UpdateBugRequest, l5 as UpdateClaudeTriggerRequest, l6 as UpdateConfigData, l7 as UpdateConfigError, l8 as UpdateConfigErrors, l9 as UpdateConfigRequest, la as UpdateConfigResponse, lb as UpdateConfigResponse2, lc as UpdateConfigResponses, ld as UpdateConfigSchemaData, le as UpdateConfigSchemaError, lf as UpdateConfigSchemaErrors, lg as UpdateConfigSchemaRequest, lh as UpdateConfigSchemaResponse, li as UpdateConfigSchemaResponse2, lj as UpdateConfigSchemaResponses, lk as UpdateConnectorData, ll as UpdateConnectorError, lm as UpdateConnectorErrors, ln as UpdateConnectorRequest, lo as UpdateConnectorResponse, lp as UpdateConnectorResponse2, lq as UpdateConnectorResponses, lr as UpdateCopilotTriggerRequest, ls as UpdateCursorTriggerRequest, lt as UpdateErrorStatusData, lu as UpdateErrorStatusError, lv as UpdateErrorStatusErrors, lw as UpdateErrorStatusRequest, lx as UpdateErrorStatusResponse, ly as UpdateErrorStatusResponses, lz as UpdateEventData, lA as UpdateEventError, lB as UpdateEventErrors, lC as UpdateEventRequest, lD as UpdateEventResponse, lE as UpdateEventResponse2, lF as UpdateEventResponses, lG as UpdateExperimentData, lH as UpdateExperimentError, lI as UpdateExperimentErrors, lJ as UpdateExperimentRequest, lK as UpdateExperimentResponse, lL as UpdateExperimentResponse2, lM as UpdateExperimentResponses, lN as UpdateFeatureRequestRequest, lO as UpdateGateData, lP as UpdateGateError, lQ as UpdateGateErrors, lR as UpdateGateRequest, lS as UpdateGateResponse, lT as UpdateGateResponse2, lU as UpdateGateResponses, lV as UpdateGateTemplateData, lW as UpdateGateTemplateError, lX as UpdateGateTemplateErrors, lY as UpdateGateTemplateRequest, lZ as UpdateGateTemplateResponse, l_ as UpdateGateTemplateResponse2, l$ as UpdateGateTemplateResponses, m0 as UpdateI18nDraftData, m1 as UpdateI18nDraftError, m2 as UpdateI18nDraftErrors, m3 as UpdateI18nDraftRequest, m4 as UpdateI18nDraftResponse, m5 as UpdateI18nDraftResponses, m6 as UpdateI18nKeyData, m7 as UpdateI18nKeyError, m8 as UpdateI18nKeyErrors, m9 as UpdateI18nKeyRequest, ma as UpdateI18nKeyResponse, mb as UpdateI18nKeyResponse2, mc as UpdateI18nKeyResponses, md as UpdateJulesTriggerRequest, me as UpdateKillswitchData, mf as UpdateKillswitchError, mg as UpdateKillswitchErrors, mh as UpdateKillswitchRequest, mi as UpdateKillswitchResponse, mj as UpdateKillswitchResponse2, mk as UpdateKillswitchResponses, ml as UpdateMetricData, mm as UpdateMetricError, mn as UpdateMetricErrors, mo as UpdateMetricFields, mp as UpdateMetricRequest, mq as UpdateMetricResponse, mr as UpdateMetricResponses, ms as UpdateMetricWithQuery, mt as UpdateMetricWithQueryIr, mu as UpdateOpsInvestigationData, mv as UpdateOpsInvestigationError, mw as UpdateOpsInvestigationErrors, mx as UpdateOpsInvestigationRequest, my as UpdateOpsInvestigationResponse, mz as UpdateOpsInvestigationResponses, mA as UpdateOpsItemData, mB as UpdateOpsItemError, mC as UpdateOpsItemErrors, mD as UpdateOpsItemRequest, mE as UpdateOpsItemResponse, mF as UpdateOpsItemResponse2, mG as UpdateOpsItemResponses, mH as UpdateOpsItemStatusRequest, mI as UpdateProjectData, mJ as UpdateProjectError, mK as UpdateProjectErrors, mL as UpdateProjectRequest, mM as UpdateProjectResponse, mN as UpdateProjectResponses, mO as UpdateTriggerConnectorData, mP as UpdateTriggerConnectorError, mQ as UpdateTriggerConnectorErrors, mR as UpdateTriggerConnectorRequest, mS as UpdateTriggerConnectorResponse, mT as UpdateTriggerConnectorResponses, mU as UpdateUniverseData, mV as UpdateUniverseError, mW as UpdateUniverseErrors, mX as UpdateUniverseRequest, mY as UpdateUniverseResponse, mZ as UpdateUniverseResponse2, m_ as UpdateUniverseResponses, m$ as UpsertI18nDraftKeyData, n0 as UpsertI18nDraftKeyError, n1 as UpsertI18nDraftKeyErrors, n2 as UpsertI18nDraftKeyRequest, n3 as UpsertI18nDraftKeyResponse, n4 as UpsertI18nDraftKeyResponses, n5 as UpsertI18nKeysData, n6 as UpsertI18nKeysError, n7 as UpsertI18nKeysErrors, n8 as UpsertI18nKeysRequest, n9 as UpsertI18nKeysResponse, na as UpsertI18nKeysResponse2, nb as UpsertI18nKeysResponses, nc as UpsertProjectData, nd as UpsertProjectError, ne as UpsertProjectErrors, nf as UpsertProjectRequest, ng as UpsertProjectResponse, nh as UpsertProjectResponse2, ni as UpsertProjectResponses, nj as ackOpsItem, nk as approveEvent, nl as client, nm as configure, nn as createAlertRule, no as createAttribute, np as createClient, nq as createClientConfig, nr as createConfig, ns as createConnector, nt as createEvent, nu as createExperiment, nv as createExperimentReadout, nw as createGate, nx as createGateTemplate, ny as createI18nDraft, nz as createI18nProfile, nA as createKey, nB as createKillswitch, nC as createMetric, nD as createOpsComment, nE as createOpsInvestigation, nF as createOpsItem, nG as createTriggerConnector, nH as createUniverse, nI as deleteAlertRule, nJ as deleteAttribute, nK as deleteConfig, nL as deleteConnector, nM as deleteEvent, nN as deleteExperiment, nO as deleteGate, nP as deleteGateTemplate, nQ as deleteI18nDraft, nR as deleteI18nKey, nS as deleteI18nProfile, nT as deleteKillswitch, nU as deleteMetric, nV as deleteOpsItem, nW as deleteUniverse, nX as disableGate, nY as discardConfigDraft, nZ as enableGate, n_ as fileErrorTicket, n$ as fireConnector, o0 as getAttribute, o1 as getConfig, o2 as getConnector, o3 as getCurrentProject, o4 as getError, o5 as getErrorSeries, o6 as getEvent, o7 as getExperiment, o8 as getExperimentReadout, o9 as getExperimentResults, oa as getExperimentTimeseries, ob as getGate, oc as getGateTemplate, od as getKillswitch, oe as getMetric, of as getMetricSeries, og as getOpsItem, oh as getProject, oi as linkPrToOpsItem, oj as listAlertRules, ok as listAlerts, ol as listAttributes, om as listConfigActivity, on as listConfigVersions, oo as listConfigs, op as listConnectors, oq as listErrors, or as listEvents, os as listExperiments, ot as listGateActivity, ou as listGateTemplates, ov as listGates, ow as listI18nDraftKeys, ox as listI18nDrafts, oy as listI18nKeys, oz as listI18nProfiles, oA as listKeys, oB as listKillswitches, oC as listMetricExperiments, oD as listMetrics, oE as listOpsAgents, oF as listOpsComments, oG as listOpsInvestigations, oH as listOpsItems, oI as listSlackChannels, oJ as listUniverses, oK as notifyOps, oL as publishConfigDraft, oM as publishI18nProfile, oN as pushI18nKeys, oO as reanalyzeExperiment, oP as resolveError, oQ as revokeKey, oR as saveConfigDraft, oS as searchResources, oT as setExperimentMetrics, oU as setExperimentStatus, oV as setI18nLabel, oW as setKillswitchSwitch, oX as setKillswitchValue, oY as testConnector, oZ as unarchiveMetric, o_ as unsetKillswitchSwitch, o$ as updateAlert, p0 as updateAlertRule, p1 as updateAttribute, p2 as updateConfig, p3 as updateConfigSchema, p4 as updateConnector, p5 as updateErrorStatus, p6 as updateEvent, p7 as updateExperiment, p8 as updateGate, p9 as updateGateTemplate, pa as updateI18nDraft, pb as updateI18nKey, pc as updateKillswitch, pd as updateMetric, pe as updateOpsInvestigation, pf as updateOpsItem, pg as updateProject, ph as updateTriggerConnector, pi as updateUniverse, pj as upsertI18nDraftKey, pk as upsertI18nKeys, pl as upsertProject } from './client-yqGYju-M.js';
1
+ import { E as ErrorCode, a as Error } from './client-DAGqRpF1.js';
2
+ export { A as AckOpsItemData, b as AckOpsItemError, c as AckOpsItemErrors, d as AckOpsItemRequest, e as AckOpsItemResponse, f as AckOpsItemResponse2, g as AckOpsItemResponses, h as AddToGateWhitelistData, i as AddToGateWhitelistError, j as AddToGateWhitelistErrors, k as AddToGateWhitelistRequest, l as AddToGateWhitelistResponse, m as AddToGateWhitelistResponses, n as AlertApiRow, o as AlertCompositeSpec, p as AnswerOpsQuestionData, q as AnswerOpsQuestionError, r as AnswerOpsQuestionErrors, s as AnswerOpsQuestionRequest, t as AnswerOpsQuestionResponse, u as AnswerOpsQuestionResponses, v as ApproveEventData, w as ApproveEventError, x as ApproveEventErrors, y as ApproveEventRequest, z as ApproveEventResponse, B as ApproveEventResponse2, C as ApproveEventResponses, D as AskOpsQuestionInput, F as AskOpsQuestionsData, G as AskOpsQuestionsError, H as AskOpsQuestionsErrors, I as AskOpsQuestionsRequest, J as AskOpsQuestionsResponse, K as AskOpsQuestionsResponse2, L as AskOpsQuestionsResponses, M as AttributeType, N as CancelOpsQuestionData, O as CancelOpsQuestionError, P as CancelOpsQuestionErrors, Q as CancelOpsQuestionResponse, R as CancelOpsQuestionResponses, S as ClaudeTriggerConfig, T as Client, U as ClientOptions, V as Config, W as ConfigName, X as ConfigureOptions, Y as ConnectorData, Z as ConnectorEvent, _ as ConnectorProvider, $ as ConnectorRecord, a0 as CopilotTriggerConfig, a1 as CopilotTriggerRepo, a2 as CreateAlertRuleData, a3 as CreateAlertRuleError, a4 as CreateAlertRuleErrors, a5 as CreateAlertRuleRequest, a6 as CreateAlertRuleResponse, a7 as CreateAlertRuleResponse2, a8 as CreateAlertRuleResponses, a9 as CreateAttributeData, aa as CreateAttributeError, ab as CreateAttributeErrors, ac as CreateAttributeRequest, ad as CreateAttributeResponse, ae as CreateAttributeResponse2, af as CreateAttributeResponses, ag as CreateBugRequest, ah as CreateClaudeTriggerRequest, ai as CreateClientConfig, aj as CreateConfigData, ak as CreateConfigError, al as CreateConfigErrors, am as CreateConfigRequest, an as CreateConfigResponse, ao as CreateConfigResponse2, ap as CreateConfigResponses, aq as CreateConnectorData, ar as CreateConnectorError, as as CreateConnectorErrors, at as CreateConnectorRequest, au as CreateConnectorResponse, av as CreateConnectorResponse2, aw as CreateConnectorResponses, ax as CreateCopilotTriggerRequest, ay as CreateCursorTriggerRequest, az as CreateEventData, aA as CreateEventError, aB as CreateEventErrors, aC as CreateEventRequest, aD as CreateEventResponse, aE as CreateEventResponse2, aF as CreateEventResponses, aG as CreateExperimentData, aH as CreateExperimentError, aI as CreateExperimentErrors, aJ as CreateExperimentReadoutData, aK as CreateExperimentReadoutError, aL as CreateExperimentReadoutErrors, aM as CreateExperimentReadoutRequest, aN as CreateExperimentReadoutResponse, aO as CreateExperimentReadoutResponse2, aP as CreateExperimentReadoutResponses, aQ as CreateExperimentRequest, aR as CreateExperimentResponse, aS as CreateExperimentResponse2, aT as CreateExperimentResponses, aU as CreateFeatureRequestRequest, aV as CreateGateData, aW as CreateGateError, aX as CreateGateErrors, aY as CreateGateRequest, aZ as CreateGateResponse, a_ as CreateGateResponse2, a$ as CreateGateResponses, b0 as CreateGateTemplateData, b1 as CreateGateTemplateError, b2 as CreateGateTemplateErrors, b3 as CreateGateTemplateRequest, b4 as CreateGateTemplateResponse, b5 as CreateGateTemplateResponse2, b6 as CreateGateTemplateResponses, b7 as CreateI18nDraftData, b8 as CreateI18nDraftError, b9 as CreateI18nDraftErrors, ba as CreateI18nDraftRequest, bb as CreateI18nDraftResponse, bc as CreateI18nDraftResponses, bd as CreateI18nProfileData, be as CreateI18nProfileError, bf as CreateI18nProfileErrors, bg as CreateI18nProfileRequest, bh as CreateI18nProfileResponse, bi as CreateI18nProfileResponse2, bj as CreateI18nProfileResponses, bk as CreateJulesTriggerRequest, bl as CreateKeyData, bm as CreateKeyError, bn as CreateKeyErrors, bo as CreateKeyRequest, bp as CreateKeyResponse, bq as CreateKeyResponse2, br as CreateKeyResponses, bs as CreateKillswitchData, bt as CreateKillswitchError, bu as CreateKillswitchErrors, bv as CreateKillswitchRequest, bw as CreateKillswitchResponse, bx as CreateKillswitchResponse2, by as CreateKillswitchResponses, bz as CreateMetricData, bA as CreateMetricError, bB as CreateMetricErrors, bC as CreateMetricRequest, bD as CreateMetricResponse, bE as CreateMetricResponse2, bF as CreateMetricResponses, bG as CreateMetricWithQuery, bH as CreateMetricWithQueryIr, bI as CreateOAuthConnectorRequest, bJ as CreateOpsCommentData, bK as CreateOpsCommentError, bL as CreateOpsCommentErrors, bM as CreateOpsCommentRequest, bN as CreateOpsCommentResponse, bO as CreateOpsCommentResponse2, bP as CreateOpsCommentResponses, bQ as CreateOpsInvestigationData, bR as CreateOpsInvestigationError, bS as CreateOpsInvestigationErrors, bT as CreateOpsInvestigationRequest, bU as CreateOpsInvestigationResponse, bV as CreateOpsInvestigationResponses, bW as CreateOpsItemData, bX as CreateOpsItemError, bY as CreateOpsItemErrors, bZ as CreateOpsItemRequest, b_ as CreateOpsItemResponse, b$ as CreateOpsItemResponse2, c0 as CreateOpsItemResponses, c1 as CreatePublicBugData, c2 as CreatePublicBugError, c3 as CreatePublicBugErrors, c4 as CreatePublicBugRequest, c5 as CreatePublicBugResponse, c6 as CreatePublicBugResponses, c7 as CreatePublicFeatureRequestData, c8 as CreatePublicFeatureRequestError, c9 as CreatePublicFeatureRequestErrors, ca as CreatePublicFeatureRequestRequest, cb as CreatePublicFeatureRequestResponse, cc as CreatePublicFeatureRequestResponses, cd as CreatePublicTicketResponse, ce as CreateTriggerConnectorData, cf as CreateTriggerConnectorError, cg as CreateTriggerConnectorErrors, ch as CreateTriggerConnectorRequest, ci as CreateTriggerConnectorResponse, cj as CreateTriggerConnectorResponses, ck as CreateUniverseData, cl as CreateUniverseError, cm as CreateUniverseErrors, cn as CreateUniverseRequest, co as CreateUniverseResponse, cp as CreateUniverseResponse2, cq as CreateUniverseResponses, cr as CursorTriggerConfig, cs as CursorTriggerRepo, ct as DeleteAlertRuleData, cu as DeleteAlertRuleError, cv as DeleteAlertRuleErrors, cw as DeleteAlertRuleResponse, cx as DeleteAlertRuleResponse2, cy as DeleteAlertRuleResponses, cz as DeleteAttributeData, cA as DeleteAttributeError, cB as DeleteAttributeErrors, cC as DeleteAttributeResponse, cD as DeleteAttributeResponse2, cE as DeleteAttributeResponses, cF as DeleteConfigData, cG as DeleteConfigError, cH as DeleteConfigErrors, cI as DeleteConfigResponse, cJ as DeleteConfigResponse2, cK as DeleteConfigResponses, cL as DeleteConnectorData, cM as DeleteConnectorError, cN as DeleteConnectorErrors, cO as DeleteConnectorResponse, cP as DeleteConnectorResponse2, cQ as DeleteConnectorResponses, cR as DeleteEventData, cS as DeleteEventError, cT as DeleteEventErrors, cU as DeleteEventResponse, cV as DeleteEventResponse2, cW as DeleteEventResponses, cX as DeleteExperimentData, cY as DeleteExperimentError, cZ as DeleteExperimentErrors, c_ as DeleteExperimentResponse, c$ as DeleteExperimentResponse2, d0 as DeleteExperimentResponses, d1 as DeleteGateData, d2 as DeleteGateError, d3 as DeleteGateErrors, d4 as DeleteGateResponse, d5 as DeleteGateResponse2, d6 as DeleteGateResponses, d7 as DeleteGateTemplateData, d8 as DeleteGateTemplateError, d9 as DeleteGateTemplateErrors, da as DeleteGateTemplateResponse, db as DeleteGateTemplateResponse2, dc as DeleteGateTemplateResponses, dd as DeleteI18nDraftData, de as DeleteI18nDraftError, df as DeleteI18nDraftErrors, dg as DeleteI18nDraftResponse, dh as DeleteI18nDraftResponses, di as DeleteI18nKeyData, dj as DeleteI18nKeyError, dk as DeleteI18nKeyErrors, dl as DeleteI18nKeyResponse, dm as DeleteI18nKeyResponses, dn as DeleteI18nProfileData, dp as DeleteI18nProfileError, dq as DeleteI18nProfileErrors, dr as DeleteI18nProfileResponse, ds as DeleteI18nProfileResponses, dt as DeleteKillswitchData, du as DeleteKillswitchError, dv as DeleteKillswitchErrors, dw as DeleteKillswitchResponse, dx as DeleteKillswitchResponse2, dy as DeleteKillswitchResponses, dz as DeleteMetricData, dA as DeleteMetricError, dB as DeleteMetricErrors, dC as DeleteMetricResponse, dD as DeleteMetricResponse2, dE as DeleteMetricResponses, dF as DeleteOpsItemData, dG as DeleteOpsItemError, dH as DeleteOpsItemErrors, dI as DeleteOpsItemResponse, dJ as DeleteOpsItemResponse2, dK as DeleteOpsItemResponses, dL as DeleteUniverseData, dM as DeleteUniverseError, dN as DeleteUniverseErrors, dO as DeleteUniverseResponse, dP as DeleteUniverseResponse2, dQ as DeleteUniverseResponses, dR as DisableGateData, dS as DisableGateError, dT as DisableGateErrors, dU as DisableGateResponse, dV as DisableGateResponse2, dW as DisableGateResponses, dX as DiscardConfigDraftData, dY as DiscardConfigDraftError, dZ as DiscardConfigDraftErrors, d_ as DiscardConfigDraftRequest, d$ as DiscardConfigDraftResponse, e0 as DiscardConfigDraftResponse2, e1 as DiscardConfigDraftResponses, e2 as Domain, e3 as EnableGateData, e4 as EnableGateError, e5 as EnableGateErrors, e6 as EnableGateResponse, e7 as EnableGateResponse2, e8 as EnableGateResponses, e9 as EntityTagsResponse, ea as Env, eb as ErrorOccurrence, ec as ErrorRecord, ed as ErrorSeriesRequest, ee as ErrorSeriesResponse, ef as ExperimentApiRow, eg as ExperimentInlineMetric, eh as ExperimentReadoutApiRow, ei as ExperimentReadoutCaveat, ej as ExperimentReadoutMetric, ek as ExperimentResultRow, el as FileErrorTicketData, em as FileErrorTicketError, en as FileErrorTicketErrors, eo as FileErrorTicketResponse, ep as FileErrorTicketResponse2, eq as FileErrorTicketResponses, er as FireConnectorData, es as FireConnectorError, et as FireConnectorErrors, eu as FireConnectorRequest, ev as FireConnectorResponse, ew as FireConnectorResponse2, ex as FireConnectorResponses, ey as Folder, ez as GateApiRow, eA as GateTemplate, eB as GateTemplateRule, eC as GateTemplateRuleResponse, eD as GateWhitelist, eE as GateWhitelistAttr, eF as GetAttributeData, eG as GetAttributeError, eH as GetAttributeErrors, eI as GetAttributeResponse, eJ as GetAttributeResponse2, eK as GetAttributeResponses, eL as GetConfigData, eM as GetConfigError, eN as GetConfigErrors, eO as GetConfigResponse, eP as GetConfigResponse2, eQ as GetConfigResponses, eR as GetConnectorData, eS as GetConnectorError, eT as GetConnectorErrors, eU as GetConnectorResponse, eV as GetConnectorResponses, eW as GetCurrentProjectData, eX as GetCurrentProjectError, eY as GetCurrentProjectErrors, eZ as GetCurrentProjectResponse, e_ as GetCurrentProjectResponse2, e$ as GetCurrentProjectResponses, f0 as GetEntityTagsData, f1 as GetEntityTagsError, f2 as GetEntityTagsErrors, f3 as GetEntityTagsResponse, f4 as GetEntityTagsResponses, f5 as GetErrorData, f6 as GetErrorError, f7 as GetErrorErrors, f8 as GetErrorResponse, f9 as GetErrorResponses, fa as GetErrorSeriesData, fb as GetErrorSeriesError, fc as GetErrorSeriesErrors, fd as GetErrorSeriesResponse, fe as GetErrorSeriesResponses, ff as GetEventData, fg as GetEventError, fh as GetEventErrors, fi as GetEventResponse, fj as GetEventResponse2, fk as GetEventResponses, fl as GetExperimentData, fm as GetExperimentError, fn as GetExperimentErrors, fo as GetExperimentReadoutData, fp as GetExperimentReadoutError, fq as GetExperimentReadoutErrors, fr as GetExperimentReadoutResponse, fs as GetExperimentReadoutResponses, ft as GetExperimentResponse, fu as GetExperimentResponses, fv as GetExperimentResultsData, fw as GetExperimentResultsError, fx as GetExperimentResultsErrors, fy as GetExperimentResultsResponse, fz as GetExperimentResultsResponse2, fA as GetExperimentResultsResponses, fB as GetExperimentTimeseriesData, fC as GetExperimentTimeseriesError, fD as GetExperimentTimeseriesErrors, fE as GetExperimentTimeseriesResponse, fF as GetExperimentTimeseriesResponse2, fG as GetExperimentTimeseriesResponses, fH as GetGateData, fI as GetGateError, fJ as GetGateErrors, fK as GetGateResponse, fL as GetGateResponses, fM as GetGateTemplateData, fN as GetGateTemplateError, fO as GetGateTemplateErrors, fP as GetGateTemplateResponse, fQ as GetGateTemplateResponses, fR as GetGateWhitelistData, fS as GetGateWhitelistError, fT as GetGateWhitelistErrors, fU as GetGateWhitelistResponse, fV as GetGateWhitelistResponses, fW as GetKillswitchData, fX as GetKillswitchError, fY as GetKillswitchErrors, fZ as GetKillswitchResponse, f_ as GetKillswitchResponse2, f$ as GetKillswitchResponses, g0 as GetMetricData, g1 as GetMetricError, g2 as GetMetricErrors, g3 as GetMetricResponse, g4 as GetMetricResponse2, g5 as GetMetricResponses, g6 as GetMetricSeriesData, g7 as GetMetricSeriesError, g8 as GetMetricSeriesErrors, g9 as GetMetricSeriesRequest, ga as GetMetricSeriesResponse, gb as GetMetricSeriesResponse2, gc as GetMetricSeriesResponses, gd as GetOpsItemData, ge as GetOpsItemError, gf as GetOpsItemErrors, gg as GetOpsItemResponse, gh as GetOpsItemResponse2, gi as GetOpsItemResponses, gj as GetProjectData, gk as GetProjectError, gl as GetProjectErrors, gm as GetProjectResponse, gn as GetProjectResponses, go as GithubConnectorData, gp as GithubPrLink, gq as I18nDraft, gr as JulesTriggerConfig, gs as KeyRecord, gt as KillswitchValue, gu as LinkPrToOpsItemData, gv as LinkPrToOpsItemError, gw as LinkPrToOpsItemErrors, gx as LinkPrToOpsItemRequest, gy as LinkPrToOpsItemResponse, gz as LinkPrToOpsItemResponse2, gA as LinkPrToOpsItemResponses, gB as ListAlertRulesData, gC as ListAlertRulesError, gD as ListAlertRulesErrors, gE as ListAlertRulesResponse, gF as ListAlertRulesResponse2, gG as ListAlertRulesResponses, gH as ListAlertsData, gI as ListAlertsError, gJ as ListAlertsErrors, gK as ListAlertsResponse, gL as ListAlertsResponse2, gM as ListAlertsResponses, gN as ListAttributesData, gO as ListAttributesError, gP as ListAttributesErrors, gQ as ListAttributesResponse, gR as ListAttributesResponse2, gS as ListAttributesResponses, gT as ListConfigActivityData, gU as ListConfigActivityError, gV as ListConfigActivityErrors, gW as ListConfigActivityResponse, gX as ListConfigActivityResponse2, gY as ListConfigActivityResponses, gZ as ListConfigVersionsData, g_ as ListConfigVersionsError, g$ as ListConfigVersionsErrors, h0 as ListConfigVersionsResponse, h1 as ListConfigVersionsResponse2, h2 as ListConfigVersionsResponses, h3 as ListConfigsData, h4 as ListConfigsError, h5 as ListConfigsErrors, h6 as ListConfigsResponse, h7 as ListConfigsResponse2, h8 as ListConfigsResponses, h9 as ListConnectorsData, ha as ListConnectorsError, hb as ListConnectorsErrors, hc as ListConnectorsResponse, hd as ListConnectorsResponse2, he as ListConnectorsResponses, hf as ListErrorsData, hg as ListErrorsError, hh as ListErrorsErrors, hi as ListErrorsResponse, hj as ListErrorsResponse2, hk as ListErrorsResponses, hl as ListEventsData, hm as ListEventsError, hn as ListEventsErrors, ho as ListEventsResponse, hp as ListEventsResponse2, hq as ListEventsResponses, hr as ListExperimentsData, hs as ListExperimentsError, ht as ListExperimentsErrors, hu as ListExperimentsResponse, hv as ListExperimentsResponse2, hw as ListExperimentsResponses, hx as ListGateActivityData, hy as ListGateActivityError, hz as ListGateActivityErrors, hA as ListGateActivityResponse, hB as ListGateActivityResponse2, hC as ListGateActivityResponses, hD as ListGateTemplatesData, hE as ListGateTemplatesError, hF as ListGateTemplatesErrors, hG as ListGateTemplatesResponse, hH as ListGateTemplatesResponse2, hI as ListGateTemplatesResponses, hJ as ListGatesData, hK as ListGatesError, hL as ListGatesErrors, hM as ListGatesResponse, hN as ListGatesResponse2, hO as ListGatesResponses, hP as ListI18nDraftKeysData, hQ as ListI18nDraftKeysError, hR as ListI18nDraftKeysErrors, hS as ListI18nDraftKeysResponse, hT as ListI18nDraftKeysResponse2, hU as ListI18nDraftKeysResponses, hV as ListI18nDraftsData, hW as ListI18nDraftsError, hX as ListI18nDraftsErrors, hY as ListI18nDraftsResponse, hZ as ListI18nDraftsResponse2, h_ as ListI18nDraftsResponses, h$ as ListI18nKeysData, i0 as ListI18nKeysError, i1 as ListI18nKeysErrors, i2 as ListI18nKeysResponse, i3 as ListI18nKeysResponse2, i4 as ListI18nKeysResponses, i5 as ListI18nProfilesData, i6 as ListI18nProfilesError, i7 as ListI18nProfilesErrors, i8 as ListI18nProfilesResponse, i9 as ListI18nProfilesResponse2, ia as ListI18nProfilesResponses, ib as ListKeysData, ic as ListKeysError, id as ListKeysErrors, ie as ListKeysResponse, ig as ListKeysResponse2, ih as ListKeysResponses, ii as ListKillswitchesData, ij as ListKillswitchesError, ik as ListKillswitchesErrors, il as ListKillswitchesResponse, im as ListKillswitchesResponse2, io as ListKillswitchesResponses, ip as ListMetricExperimentsData, iq as ListMetricExperimentsError, ir as ListMetricExperimentsErrors, is as ListMetricExperimentsResponse, it as ListMetricExperimentsResponse2, iu as ListMetricExperimentsResponses, iv as ListMetricsData, iw as ListMetricsError, ix as ListMetricsErrors, iy as ListMetricsResponse, iz as ListMetricsResponse2, iA as ListMetricsResponses, iB as ListOpsAgentsData, iC as ListOpsAgentsError, iD as ListOpsAgentsErrors, iE as ListOpsAgentsResponse, iF as ListOpsAgentsResponse2, iG as ListOpsAgentsResponses, iH as ListOpsCommentsData, iI as ListOpsCommentsError, iJ as ListOpsCommentsErrors, iK as ListOpsCommentsResponse, iL as ListOpsCommentsResponse2, iM as ListOpsCommentsResponses, iN as ListOpsInvestigationsData, iO as ListOpsInvestigationsError, iP as ListOpsInvestigationsErrors, iQ as ListOpsInvestigationsResponse, iR as ListOpsInvestigationsResponse2, iS as ListOpsInvestigationsResponses, iT as ListOpsItemsData, iU as ListOpsItemsError, iV as ListOpsItemsErrors, iW as ListOpsItemsResponse, iX as ListOpsItemsResponse2, iY as ListOpsItemsResponses, iZ as ListOpsQuestionsData, i_ as ListOpsQuestionsError, i$ as ListOpsQuestionsErrors, j0 as ListOpsQuestionsResponse, j1 as ListOpsQuestionsResponse2, j2 as ListOpsQuestionsResponses, j3 as ListSlackChannelsData, j4 as ListSlackChannelsError, j5 as ListSlackChannelsErrors, j6 as ListSlackChannelsResponse, j7 as ListSlackChannelsResponse2, j8 as ListSlackChannelsResponses, j9 as ListTagsData, ja as ListTagsError, jb as ListTagsErrors, jc as ListTagsResponse, jd as ListTagsResponse2, je as ListTagsResponses, jf as ListUniversesData, jg as ListUniversesError, jh as ListUniversesErrors, ji as ListUniversesResponse, jj as ListUniversesResponse2, jk as ListUniversesResponses, jl as MeasurePlanResource, jm as MeasurePlanStep, jn as MetricDefaultMinEffectOfInterest, jo as MetricDirection, jp as MetricDisplayConfig, jq as MetricDisplayName, jr as MetricDisplayUnit, js as MetricEventName, jt as MetricName, ju as MetricQueryDsl, jv as MetricWinsorizePct, jw as NotificationTarget, jx as NotifyOpsData, jy as NotifyOpsError, jz as NotifyOpsErrors, jA as NotifyOpsRequest, jB as NotifyOpsResponse, jC as NotifyOpsResponse2, jD as NotifyOpsResponses, jE as OkResponse, jF as OpsAgentProfile, jG as OpsAlertContext, jH as OpsAlertMetricSummary, jI as OpsAlertRuleSummary, jJ as OpsBrowserContext, jK as OpsComment, jL as OpsCommentAuthorType, jM as OpsErrorContext, jN as OpsInvestigation, jO as OpsInvestigationState, jP as OpsItemAttachment, jQ as OpsItemContext, jR as OpsItemNotifyOrNull, jS as OpsItemOwner, jT as OpsItemPriority, jU as OpsItemPriorityOrNull, jV as OpsItemRelated, jW as OpsItemStatus, jX as OpsMeasurePlanContext, jY as OpsQuestion, jZ as OpsQuestionAnswer, j_ as OpsQuestionDelivery, j$ as OpsQuestionOption, k0 as OpsQuestionStatus, k1 as OpsRun, k2 as OpsRunAction, k3 as OpsRunActionOrNull, k4 as Options, k5 as PaginationCursor, k6 as PaginationLimit, k7 as ProjectId, k8 as PublishConfigDraftData, k9 as PublishConfigDraftError, ka as PublishConfigDraftErrors, kb as PublishConfigDraftRequest, kc as PublishConfigDraftResponse, kd as PublishConfigDraftResponse2, ke as PublishConfigDraftResponses, kf as PublishI18nProfileData, kg as PublishI18nProfileError, kh as PublishI18nProfileErrors, ki as PublishI18nProfileRequest, kj as PublishI18nProfileResponse, kk as PublishI18nProfileResponse2, kl as PublishI18nProfileResponses, km as PushI18nKeysData, kn as PushI18nKeysError, ko as PushI18nKeysErrors, kp as PushI18nKeysRequest, kq as PushI18nKeysResponse, kr as PushI18nKeysResponse2, ks as PushI18nKeysResponses, kt as Q, ku as QueryIr, kv as ReanalyzeExperimentData, kw as ReanalyzeExperimentError, kx as ReanalyzeExperimentErrors, ky as ReanalyzeExperimentResponse, kz as ReanalyzeExperimentResponse2, kA as ReanalyzeExperimentResponses, kB as RemoveFromGateWhitelistData, kC as RemoveFromGateWhitelistError, kD as RemoveFromGateWhitelistErrors, kE as RemoveFromGateWhitelistRequest, kF as RemoveFromGateWhitelistResponse, kG as RemoveFromGateWhitelistResponses, kH as RequestResult, kI as ResolveErrorData, kJ as ResolveErrorError, kK as ResolveErrorErrors, kL as ResolveErrorResponse, kM as ResolveErrorResponses, kN as ResourceId, kO as RevokeKeyData, kP as RevokeKeyError, kQ as RevokeKeyErrors, kR as RevokeKeyResponse, kS as RevokeKeyResponse2, kT as RevokeKeyResponses, kU as SaveConfigDraftData, kV as SaveConfigDraftError, kW as SaveConfigDraftErrors, kX as SaveConfigDraftRequest, kY as SaveConfigDraftResponse, kZ as SaveConfigDraftResponse2, k_ as SaveConfigDraftResponses, k$ as SearchHit, l0 as SearchResourcesData, l1 as SearchResourcesError, l2 as SearchResourcesErrors, l3 as SearchResourcesResponse, l4 as SearchResourcesResponses, l5 as SearchResponse, l6 as SetEntityTagsData, l7 as SetEntityTagsError, l8 as SetEntityTagsErrors, l9 as SetEntityTagsRequest, la as SetEntityTagsResponse, lb as SetEntityTagsResponses, lc as SetExperimentMetricsData, ld as SetExperimentMetricsError, le as SetExperimentMetricsErrors, lf as SetExperimentMetricsRequest, lg as SetExperimentMetricsResponse, lh as SetExperimentMetricsResponse2, li as SetExperimentMetricsResponses, lj as SetExperimentStatusData, lk as SetExperimentStatusError, ll as SetExperimentStatusErrors, lm as SetExperimentStatusRequest, ln as SetExperimentStatusResponse, lo as SetExperimentStatusResponse2, lp as SetExperimentStatusResponses, lq as SetGateWhitelistData, lr as SetGateWhitelistError, ls as SetGateWhitelistErrors, lt as SetGateWhitelistRequest, lu as SetGateWhitelistResponse, lv as SetGateWhitelistResponses, lw as SetI18nLabelData, lx as SetI18nLabelError, ly as SetI18nLabelErrors, lz as SetI18nLabelRequest, lA as SetI18nLabelResponse, lB as SetI18nLabelResponse2, lC as SetI18nLabelResponses, lD as SetKillswitchSwitchData, lE as SetKillswitchSwitchError, lF as SetKillswitchSwitchErrors, lG as SetKillswitchSwitchRequest, lH as SetKillswitchSwitchResponse, lI as SetKillswitchSwitchResponse2, lJ as SetKillswitchSwitchResponses, lK as SetKillswitchValueData, lL as SetKillswitchValueError, lM as SetKillswitchValueErrors, lN as SetKillswitchValueRequest, lO as SetKillswitchValueResponse, lP as SetKillswitchValueResponse2, lQ as SetKillswitchValueResponses, lR as SlackConnectorData, lS as Tag, lT as TagName, lU as TaggableEntityType, lV as TestConnectorData, lW as TestConnectorError, lX as TestConnectorErrors, lY as TestConnectorResponse, lZ as TestConnectorResponse2, l_ as TestConnectorResponses, l$ as ToggleKillswitchData, m0 as ToggleKillswitchError, m1 as ToggleKillswitchErrors, m2 as ToggleKillswitchRequest, m3 as ToggleKillswitchResponse, m4 as ToggleKillswitchResponse2, m5 as ToggleKillswitchResponses, m6 as UnarchiveMetricData, m7 as UnarchiveMetricError, m8 as UnarchiveMetricErrors, m9 as UnarchiveMetricResponse, ma as UnarchiveMetricResponse2, mb as UnarchiveMetricResponses, mc as UniverseParam, md as UniverseParamSchema, me as UnsetKillswitchSwitchData, mf as UnsetKillswitchSwitchError, mg as UnsetKillswitchSwitchErrors, mh as UnsetKillswitchSwitchRequest, mi as UnsetKillswitchSwitchResponse, mj as UnsetKillswitchSwitchResponse2, mk as UnsetKillswitchSwitchResponses, ml as UpdateAlertData, mm as UpdateAlertError, mn as UpdateAlertErrors, mo as UpdateAlertRequest, mp as UpdateAlertResponse, mq as UpdateAlertResponses, mr as UpdateAlertRuleData, ms as UpdateAlertRuleError, mt as UpdateAlertRuleErrors, mu as UpdateAlertRuleRequest, mv as UpdateAlertRuleResponse, mw as UpdateAlertRuleResponse2, mx as UpdateAlertRuleResponses, my as UpdateAttributeData, mz as UpdateAttributeError, mA as UpdateAttributeErrors, mB as UpdateAttributeRequest, mC as UpdateAttributeResponse, mD as UpdateAttributeResponse2, mE as UpdateAttributeResponses, mF as UpdateBugRequest, mG as UpdateClaudeTriggerRequest, mH as UpdateConfigData, mI as UpdateConfigError, mJ as UpdateConfigErrors, mK as UpdateConfigRequest, mL as UpdateConfigResponse, mM as UpdateConfigResponse2, mN as UpdateConfigResponses, mO as UpdateConfigSchemaData, mP as UpdateConfigSchemaError, mQ as UpdateConfigSchemaErrors, mR as UpdateConfigSchemaRequest, mS as UpdateConfigSchemaResponse, mT as UpdateConfigSchemaResponse2, mU as UpdateConfigSchemaResponses, mV as UpdateConnectorData, mW as UpdateConnectorError, mX as UpdateConnectorErrors, mY as UpdateConnectorRequest, mZ as UpdateConnectorResponse, m_ as UpdateConnectorResponse2, m$ as UpdateConnectorResponses, n0 as UpdateCopilotTriggerRequest, n1 as UpdateCursorTriggerRequest, n2 as UpdateEntityTagsData, n3 as UpdateEntityTagsError, n4 as UpdateEntityTagsErrors, n5 as UpdateEntityTagsRequest, n6 as UpdateEntityTagsResponse, n7 as UpdateEntityTagsResponses, n8 as UpdateErrorStatusData, n9 as UpdateErrorStatusError, na as UpdateErrorStatusErrors, nb as UpdateErrorStatusRequest, nc as UpdateErrorStatusResponse, nd as UpdateErrorStatusResponses, ne as UpdateEventData, nf as UpdateEventError, ng as UpdateEventErrors, nh as UpdateEventRequest, ni as UpdateEventResponse, nj as UpdateEventResponse2, nk as UpdateEventResponses, nl as UpdateExperimentData, nm as UpdateExperimentError, nn as UpdateExperimentErrors, no as UpdateExperimentRequest, np as UpdateExperimentResponse, nq as UpdateExperimentResponse2, nr as UpdateExperimentResponses, ns as UpdateFeatureRequestRequest, nt as UpdateGateData, nu as UpdateGateError, nv as UpdateGateErrors, nw as UpdateGateRequest, nx as UpdateGateResponse, ny as UpdateGateResponse2, nz as UpdateGateResponses, nA as UpdateGateTemplateData, nB as UpdateGateTemplateError, nC as UpdateGateTemplateErrors, nD as UpdateGateTemplateRequest, nE as UpdateGateTemplateResponse, nF as UpdateGateTemplateResponse2, nG as UpdateGateTemplateResponses, nH as UpdateI18nDraftData, nI as UpdateI18nDraftError, nJ as UpdateI18nDraftErrors, nK as UpdateI18nDraftRequest, nL as UpdateI18nDraftResponse, nM as UpdateI18nDraftResponses, nN as UpdateI18nKeyData, nO as UpdateI18nKeyError, nP as UpdateI18nKeyErrors, nQ as UpdateI18nKeyRequest, nR as UpdateI18nKeyResponse, nS as UpdateI18nKeyResponse2, nT as UpdateI18nKeyResponses, nU as UpdateJulesTriggerRequest, nV as UpdateKeyData, nW as UpdateKeyError, nX as UpdateKeyErrors, nY as UpdateKeyRequest, nZ as UpdateKeyResponse, n_ as UpdateKeyResponses, n$ as UpdateKillswitchData, o0 as UpdateKillswitchError, o1 as UpdateKillswitchErrors, o2 as UpdateKillswitchRequest, o3 as UpdateKillswitchResponse, o4 as UpdateKillswitchResponse2, o5 as UpdateKillswitchResponses, o6 as UpdateMetricData, o7 as UpdateMetricError, o8 as UpdateMetricErrors, o9 as UpdateMetricFields, oa as UpdateMetricRequest, ob as UpdateMetricResponse, oc as UpdateMetricResponses, od as UpdateMetricWithQuery, oe as UpdateMetricWithQueryIr, of as UpdateOpsInvestigationData, og as UpdateOpsInvestigationError, oh as UpdateOpsInvestigationErrors, oi as UpdateOpsInvestigationRequest, oj as UpdateOpsInvestigationResponse, ok as UpdateOpsInvestigationResponses, ol as UpdateOpsItemData, om as UpdateOpsItemError, on as UpdateOpsItemErrors, oo as UpdateOpsItemRequest, op as UpdateOpsItemResponse, oq as UpdateOpsItemResponse2, or as UpdateOpsItemResponses, os as UpdateOpsItemStatusRequest, ot as UpdateProjectData, ou as UpdateProjectError, ov as UpdateProjectErrors, ow as UpdateProjectRequest, ox as UpdateProjectResponse, oy as UpdateProjectResponses, oz as UpdateTriggerConnectorData, oA as UpdateTriggerConnectorError, oB as UpdateTriggerConnectorErrors, oC as UpdateTriggerConnectorRequest, oD as UpdateTriggerConnectorResponse, oE as UpdateTriggerConnectorResponses, oF as UpdateUniverseData, oG as UpdateUniverseError, oH as UpdateUniverseErrors, oI as UpdateUniverseRequest, oJ as UpdateUniverseResponse, oK as UpdateUniverseResponse2, oL as UpdateUniverseResponses, oM as UpsertI18nDraftKeyData, oN as UpsertI18nDraftKeyError, oO as UpsertI18nDraftKeyErrors, oP as UpsertI18nDraftKeyRequest, oQ as UpsertI18nDraftKeyResponse, oR as UpsertI18nDraftKeyResponses, oS as UpsertI18nKeysData, oT as UpsertI18nKeysError, oU as UpsertI18nKeysErrors, oV as UpsertI18nKeysRequest, oW as UpsertI18nKeysResponse, oX as UpsertI18nKeysResponse2, oY as UpsertI18nKeysResponses, oZ as UpsertProjectData, o_ as UpsertProjectError, o$ as UpsertProjectErrors, p0 as UpsertProjectRequest, p1 as UpsertProjectResponse, p2 as UpsertProjectResponse2, p3 as UpsertProjectResponses, p4 as ackOpsItem, p5 as addToGateWhitelist, p6 as answerOpsQuestion, p7 as approveEvent, p8 as askOpsQuestions, p9 as cancelOpsQuestion, pa as client, pb as configure, pc as createAlertRule, pd as createAttribute, pe as createClient, pf as createClientConfig, pg as createConfig, ph as createConnector, pi as createEvent, pj as createExperiment, pk as createExperimentReadout, pl as createGate, pm as createGateTemplate, pn as createI18nDraft, po as createI18nProfile, pp as createKey, pq as createKillswitch, pr as createMetric, ps as createOpsComment, pt as createOpsInvestigation, pu as createOpsItem, pv as createPublicBug, pw as createPublicFeatureRequest, px as createTriggerConnector, py as createUniverse, pz as deleteAlertRule, pA as deleteAttribute, pB as deleteConfig, pC as deleteConnector, pD as deleteEvent, pE as deleteExperiment, pF as deleteGate, pG as deleteGateTemplate, pH as deleteI18nDraft, pI as deleteI18nKey, pJ as deleteI18nProfile, pK as deleteKillswitch, pL as deleteMetric, pM as deleteOpsItem, pN as deleteUniverse, pO as disableGate, pP as discardConfigDraft, pQ as enableGate, pR as fileErrorTicket, pS as fireConnector, pT as getAttribute, pU as getConfig, pV as getConnector, pW as getCurrentProject, pX as getEntityTags, pY as getError, pZ as getErrorSeries, p_ as getEvent, p$ as getExperiment, q0 as getExperimentReadout, q1 as getExperimentResults, q2 as getExperimentTimeseries, q3 as getGate, q4 as getGateTemplate, q5 as getGateWhitelist, q6 as getKillswitch, q7 as getMetric, q8 as getMetricSeries, q9 as getOpsItem, qa as getProject, qb as linkPrToOpsItem, qc as listAlertRules, qd as listAlerts, qe as listAttributes, qf as listConfigActivity, qg as listConfigVersions, qh as listConfigs, qi as listConnectors, qj as listErrors, qk as listEvents, ql as listExperiments, qm as listGateActivity, qn as listGateTemplates, qo as listGates, qp as listI18nDraftKeys, qq as listI18nDrafts, qr as listI18nKeys, qs as listI18nProfiles, qt as listKeys, qu as listKillswitches, qv as listMetricExperiments, qw as listMetrics, qx as listOpsAgents, qy as listOpsComments, qz as listOpsInvestigations, qA as listOpsItems, qB as listOpsQuestions, qC as listSlackChannels, qD as listTags, qE as listUniverses, qF as notifyOps, qG as publishConfigDraft, qH as publishI18nProfile, qI as pushI18nKeys, qJ as reanalyzeExperiment, qK as removeFromGateWhitelist, qL as resolveError, qM as revokeKey, qN as saveConfigDraft, qO as searchResources, qP as setEntityTags, qQ as setExperimentMetrics, qR as setExperimentStatus, qS as setGateWhitelist, qT as setI18nLabel, qU as setKillswitchSwitch, qV as setKillswitchValue, qW as testConnector, qX as toggleKillswitch, qY as unarchiveMetric, qZ as unsetKillswitchSwitch, q_ as updateAlert, q$ as updateAlertRule, r0 as updateAttribute, r1 as updateConfig, r2 as updateConfigSchema, r3 as updateConnector, r4 as updateEntityTags, r5 as updateErrorStatus, r6 as updateEvent, r7 as updateExperiment, r8 as updateGate, r9 as updateGateTemplate, ra as updateI18nDraft, rb as updateI18nKey, rc as updateKey, rd as updateKillswitch, re as updateMetric, rf as updateOpsInvestigation, rg as updateOpsItem, rh as updateProject, ri as updateTriggerConnector, rj as updateUniverse, rk as upsertI18nDraftKey, rl as upsertI18nKeys, rm as upsertProject } from './client-DAGqRpF1.js';
3
3
 
4
4
  /**
5
5
  * The canonical `ErrorCode` catalogue as a runtime array — derived from the
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  ackOpsItem,
3
+ addToGateWhitelist,
4
+ answerOpsQuestion,
3
5
  approveEvent,
6
+ askOpsQuestions,
7
+ cancelOpsQuestion,
4
8
  client,
5
9
  configure,
6
10
  createAlertRule,
@@ -22,6 +26,8 @@ import {
22
26
  createOpsComment,
23
27
  createOpsInvestigation,
24
28
  createOpsItem,
29
+ createPublicBug,
30
+ createPublicFeatureRequest,
25
31
  createTriggerConnector,
26
32
  createUniverse,
27
33
  deleteAlertRule,
@@ -48,6 +54,7 @@ import {
48
54
  getConfig,
49
55
  getConnector,
50
56
  getCurrentProject,
57
+ getEntityTags,
51
58
  getError,
52
59
  getErrorSeries,
53
60
  getEvent,
@@ -57,6 +64,7 @@ import {
57
64
  getExperimentTimeseries,
58
65
  getGate,
59
66
  getGateTemplate,
67
+ getGateWhitelist,
60
68
  getKillswitch,
61
69
  getMetric,
62
70
  getMetricSeries,
@@ -88,23 +96,29 @@ import {
88
96
  listOpsComments,
89
97
  listOpsInvestigations,
90
98
  listOpsItems,
99
+ listOpsQuestions,
91
100
  listSlackChannels,
101
+ listTags,
92
102
  listUniverses,
93
103
  notifyOps,
94
104
  publishConfigDraft,
95
105
  publishI18nProfile,
96
106
  pushI18nKeys,
97
107
  reanalyzeExperiment,
108
+ removeFromGateWhitelist,
98
109
  resolveError,
99
110
  revokeKey,
100
111
  saveConfigDraft,
101
112
  searchResources,
113
+ setEntityTags,
102
114
  setExperimentMetrics,
103
115
  setExperimentStatus,
116
+ setGateWhitelist,
104
117
  setI18nLabel,
105
118
  setKillswitchSwitch,
106
119
  setKillswitchValue,
107
120
  testConnector,
121
+ toggleKillswitch,
108
122
  unarchiveMetric,
109
123
  unsetKillswitchSwitch,
110
124
  updateAlert,
@@ -113,6 +127,7 @@ import {
113
127
  updateConfig,
114
128
  updateConfigSchema,
115
129
  updateConnector,
130
+ updateEntityTags,
116
131
  updateErrorStatus,
117
132
  updateEvent,
118
133
  updateExperiment,
@@ -120,6 +135,7 @@ import {
120
135
  updateGateTemplate,
121
136
  updateI18nDraft,
122
137
  updateI18nKey,
138
+ updateKey,
123
139
  updateKillswitch,
124
140
  updateMetric,
125
141
  updateOpsInvestigation,
@@ -130,10 +146,10 @@ import {
130
146
  upsertI18nDraftKey,
131
147
  upsertI18nKeys,
132
148
  upsertProject
133
- } from "./chunk-V4ZESAIF.js";
149
+ } from "./chunk-75Z4SQOM.js";
134
150
  import {
135
151
  zErrorCode
136
- } from "./chunk-UV333BIK.js";
152
+ } from "./chunk-ZYK74ZIW.js";
137
153
 
138
154
  // src/errors.ts
139
155
  var ERROR_CODES = zErrorCode.options;
@@ -177,7 +193,11 @@ function formatAuthFailure(surface, status, message) {
177
193
  export {
178
194
  ERROR_CODES,
179
195
  ackOpsItem,
196
+ addToGateWhitelist,
197
+ answerOpsQuestion,
180
198
  approveEvent,
199
+ askOpsQuestions,
200
+ cancelOpsQuestion,
181
201
  client,
182
202
  configure,
183
203
  createAlertRule,
@@ -199,6 +219,8 @@ export {
199
219
  createOpsComment,
200
220
  createOpsInvestigation,
201
221
  createOpsItem,
222
+ createPublicBug,
223
+ createPublicFeatureRequest,
202
224
  createTriggerConnector,
203
225
  createUniverse,
204
226
  deleteAlertRule,
@@ -227,6 +249,7 @@ export {
227
249
  getConfig,
228
250
  getConnector,
229
251
  getCurrentProject,
252
+ getEntityTags,
230
253
  getError,
231
254
  getErrorSeries,
232
255
  getEvent,
@@ -236,6 +259,7 @@ export {
236
259
  getExperimentTimeseries,
237
260
  getGate,
238
261
  getGateTemplate,
262
+ getGateWhitelist,
239
263
  getKillswitch,
240
264
  getMetric,
241
265
  getMetricSeries,
@@ -268,23 +292,29 @@ export {
268
292
  listOpsComments,
269
293
  listOpsInvestigations,
270
294
  listOpsItems,
295
+ listOpsQuestions,
271
296
  listSlackChannels,
297
+ listTags,
272
298
  listUniverses,
273
299
  notifyOps,
274
300
  publishConfigDraft,
275
301
  publishI18nProfile,
276
302
  pushI18nKeys,
277
303
  reanalyzeExperiment,
304
+ removeFromGateWhitelist,
278
305
  resolveError,
279
306
  revokeKey,
280
307
  saveConfigDraft,
281
308
  searchResources,
309
+ setEntityTags,
282
310
  setExperimentMetrics,
283
311
  setExperimentStatus,
312
+ setGateWhitelist,
284
313
  setI18nLabel,
285
314
  setKillswitchSwitch,
286
315
  setKillswitchValue,
287
316
  testConnector,
317
+ toggleKillswitch,
288
318
  unarchiveMetric,
289
319
  unsetKillswitchSwitch,
290
320
  updateAlert,
@@ -293,6 +323,7 @@ export {
293
323
  updateConfig,
294
324
  updateConfigSchema,
295
325
  updateConnector,
326
+ updateEntityTags,
296
327
  updateErrorStatus,
297
328
  updateEvent,
298
329
  updateExperiment,
@@ -300,6 +331,7 @@ export {
300
331
  updateGateTemplate,
301
332
  updateI18nDraft,
302
333
  updateI18nKey,
334
+ updateKey,
303
335
  updateKillswitch,
304
336
  updateMetric,
305
337
  updateOpsInvestigation,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["import { zErrorCode } from \"./generated/zod.gen.js\";\nimport type { Error as ApiErrorBody, ErrorCode } from \"./generated/types.gen.js\";\n\nexport type { ErrorCode };\nexport type { ApiErrorBody };\n\n/**\n * The canonical `ErrorCode` catalogue as a runtime array — derived from the\n * generated Zod enum so it can never drift from the spec. Mirrors\n * `@shipeasy/core`'s `ErrorCode`; the parity test (`scripts/check-drift.mjs`)\n * asserts every `x-error-codes` entry in the spec is one of these.\n */\nexport const ERROR_CODES = zErrorCode.options as readonly ErrorCode[];\n\n/** Type guard for the uniform `{ error, code?, detail? }` error envelope. */\nexport function isApiErrorBody(value: unknown): value is ApiErrorBody {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"error\" in value &&\n typeof (value as { error: unknown }).error === \"string\"\n );\n}\n\n/** Narrow an error body to a known `ErrorCode`, or `undefined` if uncatalogued. */\nexport function errorCodeOf(value: unknown): ErrorCode | undefined {\n if (!isApiErrorBody(value)) return undefined;\n const code = value.code;\n return code && (ERROR_CODES as readonly string[]).includes(code) ? code : undefined;\n}\n\n/** Which binary is reporting the failure — determines which command to tell the caller to run. */\nexport type AuthSurface = \"cli\" | \"mcp\";\n\nconst REAUTH_COMMAND: Record<AuthSurface, string> = {\n cli: \"shipeasy login --force\",\n mcp: \"shipeasy-mcp install --force\",\n};\n\n/**\n * Structured, agent-parseable remediation text for an admin-API auth failure\n * (401/403) — shared by the CLI's and MCP's error printers so every command\n * and every tool call reports auth failures the same way. The leading\n * `AUTH_REQUIRED:` / `AUTH_FORBIDDEN:` token is a stable marker a calling\n * agent can grep for; everything after it is human-readable remediation.\n *\n * Returns `undefined` for non-auth statuses so callers fall back to their\n * normal error formatting.\n */\nexport function formatAuthFailure(\n surface: AuthSurface,\n status: number,\n message: string,\n): string | undefined {\n const reauth = REAUTH_COMMAND[surface];\n if (status === 401) {\n return [\n `AUTH_REQUIRED: ${message} (401)`,\n ``,\n `Cause: the request's Shipeasy credentials are missing, invalid, or expired.`,\n `Fix:`,\n ` 1. Run: ${reauth}`,\n ` 2. Retry the command that failed.`,\n ].join(\"\\n\");\n }\n if (status === 403) {\n return [\n `AUTH_FORBIDDEN: ${message} (403)`,\n ``,\n `Cause: the credentials are valid but don't have access to this project or resource.`,\n `Fix:`,\n ` 1. Confirm the bound project is correct (check the .shipeasy file, or run: shipeasy root --json).`,\n ` 2. If it's the wrong project, run: shipeasy bind <project_id>.`,\n ` 3. If it's the right project, ask a workspace admin to grant access — retrying will not help.`,\n ].join(\"\\n\");\n }\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,IAAM,cAAc,WAAW;AAG/B,SAAS,eAAe,OAAuC;AACpE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,WAAW,SACX,OAAQ,MAA6B,UAAU;AAEnD;AAGO,SAAS,YAAY,OAAuC;AACjE,MAAI,CAAC,eAAe,KAAK,EAAG,QAAO;AACnC,QAAM,OAAO,MAAM;AACnB,SAAO,QAAS,YAAkC,SAAS,IAAI,IAAI,OAAO;AAC5E;AAKA,IAAM,iBAA8C;AAAA,EAClD,KAAK;AAAA,EACL,KAAK;AACP;AAYO,SAAS,kBACd,SACA,QACA,SACoB;AACpB,QAAM,SAAS,eAAe,OAAO;AACrC,MAAI,WAAW,KAAK;AAClB,WAAO;AAAA,MACL,kBAAkB,OAAO;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,MAAM;AAAA,MACnB;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACA,MAAI,WAAW,KAAK;AAClB,WAAO;AAAA,MACL,mBAAmB,OAAO;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["import { zErrorCode } from \"./generated/zod.gen.js\";\nimport type { Error as ApiErrorBody, ErrorCode } from \"./generated/types.gen.js\";\n\nexport type { ErrorCode };\nexport type { ApiErrorBody };\n\n/**\n * The canonical `ErrorCode` catalogue as a runtime array — derived from the\n * generated Zod enum so it can never drift from the spec. Mirrors\n * `@shipeasy/core`'s `ErrorCode`; the parity test (`scripts/check-drift.mjs`)\n * asserts every `x-error-codes` entry in the spec is one of these.\n */\nexport const ERROR_CODES = zErrorCode.options as readonly ErrorCode[];\n\n/** Type guard for the uniform `{ error, code?, detail? }` error envelope. */\nexport function isApiErrorBody(value: unknown): value is ApiErrorBody {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"error\" in value &&\n typeof (value as { error: unknown }).error === \"string\"\n );\n}\n\n/** Narrow an error body to a known `ErrorCode`, or `undefined` if uncatalogued. */\nexport function errorCodeOf(value: unknown): ErrorCode | undefined {\n if (!isApiErrorBody(value)) return undefined;\n const code = value.code;\n return code && (ERROR_CODES as readonly string[]).includes(code) ? code : undefined;\n}\n\n/** Which binary is reporting the failure — determines which command to tell the caller to run. */\nexport type AuthSurface = \"cli\" | \"mcp\";\n\nconst REAUTH_COMMAND: Record<AuthSurface, string> = {\n cli: \"shipeasy login --force\",\n mcp: \"shipeasy-mcp install --force\",\n};\n\n/**\n * Structured, agent-parseable remediation text for an admin-API auth failure\n * (401/403) — shared by the CLI's and MCP's error printers so every command\n * and every tool call reports auth failures the same way. The leading\n * `AUTH_REQUIRED:` / `AUTH_FORBIDDEN:` token is a stable marker a calling\n * agent can grep for; everything after it is human-readable remediation.\n *\n * Returns `undefined` for non-auth statuses so callers fall back to their\n * normal error formatting.\n */\nexport function formatAuthFailure(\n surface: AuthSurface,\n status: number,\n message: string,\n): string | undefined {\n const reauth = REAUTH_COMMAND[surface];\n if (status === 401) {\n return [\n `AUTH_REQUIRED: ${message} (401)`,\n ``,\n `Cause: the request's Shipeasy credentials are missing, invalid, or expired.`,\n `Fix:`,\n ` 1. Run: ${reauth}`,\n ` 2. Retry the command that failed.`,\n ].join(\"\\n\");\n }\n if (status === 403) {\n return [\n `AUTH_FORBIDDEN: ${message} (403)`,\n ``,\n `Cause: the credentials are valid but don't have access to this project or resource.`,\n `Fix:`,\n ` 1. Confirm the bound project is correct (check the .shipeasy file, or run: shipeasy root --json).`,\n ` 2. If it's the wrong project, run: shipeasy bind <project_id>.`,\n ` 3. If it's the right project, ask a workspace admin to grant access — retrying will not help.`,\n ].join(\"\\n\");\n }\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,IAAM,cAAc,WAAW;AAG/B,SAAS,eAAe,OAAuC;AACpE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,WAAW,SACX,OAAQ,MAA6B,UAAU;AAEnD;AAGO,SAAS,YAAY,OAAuC;AACjE,MAAI,CAAC,eAAe,KAAK,EAAG,QAAO;AACnC,QAAM,OAAO,MAAM;AACnB,SAAO,QAAS,YAAkC,SAAS,IAAI,IAAI,OAAO;AAC5E;AAKA,IAAM,iBAA8C;AAAA,EAClD,KAAK;AAAA,EACL,KAAK;AACP;AAYO,SAAS,kBACd,SACA,QACA,SACoB;AACpB,QAAM,SAAS,eAAe,OAAO;AACrC,MAAI,WAAW,KAAK;AAClB,WAAO;AAAA,MACL,kBAAkB,OAAO;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,MAAM;AAAA,MACnB;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACA,MAAI,WAAW,KAAK;AAClB,WAAO;AAAA,MACL,mBAAmB,OAAO;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACA,SAAO;AACT;","names":[]}