Dashboard › cli › Distillation
8a88648e-505f-43a1-8ce0-3f8dfae16ba9["lore_tm_v1_zpix_8QuB31s2Ek43RafukSs9OVoKlhTHcQRAFcBwd4","lore_tm_v1_aWsFZwBBUcNr9Xij4Pk0TzfKs179dNmwDLDrantr-jE","lore_tm_v1_GAnpDrtk2P74zPLEK8xjUyO3NJJAd8wTeXQopeJVVDs","lore_tm_v1_p6TTAfdsoREMsO6UixSc_2E3sNCNFQ39j0X8fYu8FYM","lore_tm_v1_5z82Gve8A-wdB8Q8jaWWvi6hxr2VlAkwGENlzIBTz0I","lore_tm_v1_z2MkxcqiyFmdZaBNS_cxuAg3ngdkKO3pNXqNoSnh5w8","lore_tm_v1_yGpTJK-Ro5C3Ps6sJqF3yUr2yBCVJSShdgcVPVaA3gI","lore_tm_v1_ijHgSlqKGVVKf8goSOH1bUp6YdBjexecTPvEexVUZec","lore_tm_v1_cjhLr1lLfawPf6_Ws1Lmtz7TPv9Gyrd-WHFhqbSGi60","lore_tm_v1_s0b19T0phGWLuMMGpJDiUB_6pDDt9qoOsFtmQ3zr4uE","lore_tm_v1_IIaALlEoiLNcS1mt16NdJtSUpFrWXje7pwAgCIUg0K8","lore_tm_v1_0sBNa0hYhaD-fkZaHN9ktiPhpbryne534FP8aXw7IG8","lore_tm_v1_rNFGjznD_OdLBfrVCJWe3Uk7-eU2q-627fG6COys7ao","lore_tm_v1_0WV7leNQKLZAd-43k82BrJn1fXkMAhYeauUf9aJKOpw","lore_tm_v1_NwnOA6SZsGDWiHPhw1y3SXms7MkwUfhiEIyjD38js64","lore_tm_v1_Blhh-bJCvcD7WXtbL8n_c8fqLKrswLubfNf6uBsvC-E","lore_tm_v1_vhv7nTUBiOppTCGtLbQ3NziGUtIummZjcGjSyWbjkdQ","lore_tm_v1_l04XbLCb3jRny_HQ-vjmFGOsi7OWabamzD6X6cQENg4","lore_tm_v1_Yefu5mqaMXb3HRPx8HX61M0t3gnvSvr15Lk4JNQtYdo","lore_tm_v1_VXa4DADyw0MRjjrKb3gTxt3_jZkcSKH912UJeiREVzY","lore_tm_v1_OZrDwcoLaltFLczne1GmTmGgb0yYmdioYmwzxA4zL2k","lore_tm_v1_7aQD1LNExIVzvsZcXFySiC01thCRyEDCWDU74EtZPII","lore_tm_v1_UBD8Nc6psoCXc75YfeNH3cCdZZqFYxswZhoBAiq9zFE"]
apps/cli-docs/src/content/docs/commands/release.md: line 18 documents [<org/project>] as <org>/ (all projects), <org>/<project>, or <project> (search); lines 40, 56, 76, 94, 112, 128, 144, 166, and 176 use <org/version> with [<org>/]<version> semantics; line 145 documents <environment> with production as an example; line 146 documents optional [<name>] and recommends quoting multi-word names such as "Deploy #42".@stricli/core is located at packages/cli/node_modules/@stricli/core; the directory contains dist/, package.json, and README.md, while dist/ contains index.cjs, index.d.cts, index.d.ts, and index.js.packages/cli/node_modules/@stricli/core/dist/index.d.ts defines UsageFormattingArguments with prefix: readonly string[], config: DocumentationConfiguration, and ansiColor: boolean; PartialApplicationConfiguration makes scanner, documentation, completion, and localization partial while retaining name, versionInfo, and determineExitCode.packages/cli/node_modules/@stricli/core/dist/index.d.ts exports generateHelpTextForAllCommands, run, buildApplication, buildCommand, buildRouteMap, text_en, argument-scanner error classes, parser helpers, and the associated application/command/configuration types.generateCommandHelpLines() in packages/cli/node_modules/@stricli/core/dist/index.js renders docs.customUsage instead of the automatically formatted parameter signature when customUsage exists: string entries become ${prefix} ${usage}, while object entries render ${usage.input} followed by ${usage.brief}. Without customUsage, it calls formatUsageLineForParameters(parameters, args).arg${i + 1} when unspecified, adds a leading space to required parameters when any tuple parameter is optional, and emits default-value suffixes using the localized default keyword.ContextError in packages/cli/src/lib/errors.ts is for omitted required context, while ResolutionError is for a supplied value that could not be matched and ValidationError is for malformed input. ContextError accepts resource, a single-line CLI usage command, optional alternatives, and optional note.ContextError.alternatives means auto-detection was attempted and failed, applies DEFAULT_CONTEXT_ALTERNATIVES, and produces a “Could not auto-detect …” headline; explicitly passing alternatives, including [], produces “… is/are required.” Compound resources joined with " and " use plural grammar.ContextError stores its fully formatted message, uses EXIT.CONTEXT_MISSING, and has a development-time assertion that rejects command values containing \n, directing callers to use ResolutionError for multi-line resolution failures.determineExitCode and usage hooks to prove two behaviors: the routed command actually reaches ContextError, and parent help uses the canonical signature rather than coincidentally matching rendered text.packages/cli/src/lib/command.ts, the wrapped command executes authentication and rc-URL trust checks inside a try, manually iterates the async generator with .next() to retain its final CommandReturn, renders yielded values, appends cache hints during finalization, and invokes maybeRecoverWithHelp() for positional "help" recovery before rethrowing through handleOutputError().buildCommand() in packages/cli/src/lib/command.ts calls Stricli as stricliCommand(...), attaches documentation metadata, stores output JSON schema on __jsonSchema, and exposes the unwrapped generator as __rawFunc for internal dispatchers that must bypass telemetry, auth, rc-trust, and output wrapping.generateHelpTextForAllCommands() in packages/cli/node_modules/@stricli/core/dist/index.js recursively iterates non-hidden commands, uses the configured documentation case style, and calls each command’s formatHelp() with prefix: route, aliases, ansiColor: false, localized text, argument-escape/help-all settings, and includeVersionFlag only when version info exists and route.length === 1.packages/cli/src/commands/agent-conversation/view.ts, agent conversation IDs are organization-scoped and never contain /; unlike trace/replay IDs, they are not organization/project-scoped.packages/cli/src/commands/agent-conversation/view.ts defines canonical usage as [<org>/]<conversation-id> via USAGE, with USAGE_HINT equal to sentry agent-conversation view [<org>/]<conversation-id>.parseConversationTarget(target) trims the input; with no slash it returns the entire value as conversationId for organization auto-detection, while one slash splits the value into org and conversationId. Multiple slashes raise validationError("Conversation target must contain at most one '/'.", [USAGE_HINT], "conversation-id"); an empty segment raises validationError("Conversation target must include both an organization and conversation ID when using '/'.", [USAGE_HINT], "conversation-id").viewCommand in packages/cli/src/commands/agent-conversation/view.ts sets docs.customUsage: [USAGE], uses positional placeholder "org/conversation-id", and provides 3 ordered examples: 1. auto-detected organization with sentry agent-conversation view conv-123; 2. explicit organization with sentry agent-conversation view my-org/conv-123; 3. JSON output with sentry agent-conversation view my-org/conv-123 --json.viewCommand function applies applyFreshFlag(flags), throws new ContextError("Conversation ID", USAGE_HINT, []) for blank input, resolves the organization with resolveOrg({ org: orgArg, cwd }), throws new ContextError("Organization", USAGE_HINT) when unresolved, fetches spans through withProgress() using message "Fetching conversation spans...", builds the transcript via buildTranscriptResult(conversationId, org, spans, title), assigns result.truncated = truncated, and yields new CommandOutput<TranscriptResult>(result).packages/cli/test/lib/command.test.ts tests OutputError propagation by configuring Stricli’s exceptionWhileRunningCommand to rethrow OutputError and otherwise delegate to text_en.exceptionWhileRunningCommand(exc, false).OutputError test verifies that new OutputError({ error: "not found" }) is thrown with EXIT.OUTPUT_ERROR after output has already rendered as "Error: not found"; the JSON-mode test verifies the same error is thrown and the emitted JSON parses to { error: "not found" }.packages/cli/src/lib/command.ts requires all Sentry CLI commands to import its wrapped buildCommand, not buildCommand directly from @stricli/core, because direct Stricli use bypasses telemetry and global-flag handling.CommandDocumentation in packages/cli/src/lib/command.ts extends Stricli documentation with ordered examples; when customUsage exists, its first line is the canonical signature suffix and later lines may document equivalent forms.buildCommand automatically injects hidden --log-level and --verbose handling, and injects --json and --fields when an output configuration exists; command-defined versions of these flags are retained rather than replaced.