@unbrained/pm-cli 2026.5.10 → 2026.5.11
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.
- package/.claude-plugin/marketplace.json +4 -4
- package/.pi/README.md +10 -1
- package/.pi/agents/pm-triage-agent.md +19 -0
- package/.pi/agents/pm-verification-agent.md +21 -0
- package/.pi/chains/pm-native-delivery.chain.md +11 -0
- package/.pi/extensions/pm-cli/index.js +276 -36
- package/.pi/skills/pm-native/SKILL.md +6 -2
- package/CHANGELOG.md +7 -0
- package/README.md +9 -1
- package/dist/cli/argv-utils.d.ts +5 -0
- package/dist/cli/argv-utils.js +34 -0
- package/dist/cli/argv-utils.js.map +1 -0
- package/dist/cli/bootstrap-args.d.ts +15 -0
- package/dist/cli/bootstrap-args.js +211 -0
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.js +109 -3
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/completion.js +7 -3
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/contracts.d.ts +19 -0
- package/dist/cli/commands/contracts.js +33 -1
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +112 -51
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/docs.js +9 -2
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +3 -1
- package/dist/cli/commands/extension.js +174 -2
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +9 -2
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.js +21 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/metadata-normalizers.d.ts +4 -0
- package/dist/cli/commands/metadata-normalizers.js +37 -0
- package/dist/cli/commands/metadata-normalizers.js.map +1 -0
- package/dist/cli/commands/reindex.js +173 -135
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/search.js +16 -6
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.js +9 -2
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update.js +70 -39
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/error-guidance.d.ts +9 -1
- package/dist/cli/error-guidance.js +147 -6
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/help-json-payload.js +11 -1
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +69 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-setup.js +14 -0
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/telemetry-flush.d.ts +2 -0
- package/dist/cli/telemetry-flush.js +4 -0
- package/dist/cli/telemetry-flush.js.map +1 -0
- package/dist/cli.js +1 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +72 -0
- package/dist/core/extensions/extension-types.js +24 -0
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -0
- package/dist/core/extensions/loader.js +766 -7
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/lock/lock.js +2 -0
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/sentry/instrument.d.ts +15 -0
- package/dist/core/sentry/instrument.js +35 -3
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/constants.js +20 -0
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/errors.d.ts +8 -0
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/shared/levenshtein.d.ts +1 -0
- package/dist/core/shared/levenshtein.js +37 -0
- package/dist/core/shared/levenshtein.js.map +1 -0
- package/dist/core/store/paths.js +34 -1
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings.js +210 -1
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/runtime.d.ts +1 -0
- package/dist/core/telemetry/runtime.js +102 -3
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/mcp/server.js +3 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/pi/native.js +57 -4
- package/dist/pi/native.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +21 -1
- package/dist/sdk/cli-contracts.js +250 -0
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +12 -1
- package/dist/sdk/index.js +8 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/types.d.ts +41 -0
- package/dist/types.js.map +1 -1
- package/docs/CLAUDE_CODE_PLUGIN.md +39 -0
- package/docs/EXTENSIONS.md +687 -0
- package/docs/MIGRATION_CLI_SIMPLIFICATION.md +64 -0
- package/docs/PI_PACKAGE.md +95 -10
- package/docs/SDK.md +441 -0
- package/docs/examples/ci/github-actions-pm-extension-gate.yml +53 -0
- package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +41 -0
- package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +45 -0
- package/docs/examples/policy-restricted-extension/README.md +74 -0
- package/docs/examples/policy-restricted-extension/index.js +21 -0
- package/docs/examples/policy-restricted-extension/manifest.json +21 -0
- package/docs/examples/policy-restricted-extension/package.json +8 -0
- package/docs/examples/sdk-app-embedding/README.md +39 -0
- package/docs/examples/sdk-app-embedding/package.json +9 -0
- package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +61 -0
- package/docs/examples/sdk-contract-consumer/README.md +57 -0
- package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +47 -0
- package/docs/examples/sdk-contract-consumer/package.json +10 -0
- package/docs/examples/starter-extension/README.md +57 -42
- package/docs/examples/starter-extension/manifest.json +15 -0
- package/marketplace.json +3 -3
- package/package.json +1 -1
- package/plugins/pm-cli-claude/.claude-plugin/plugin.json +2 -2
- package/plugins/pm-cli-claude/README.md +55 -14
- package/plugins/pm-cli-claude/agents/pm-delivery-chain.md +88 -0
- package/plugins/pm-cli-claude/agents/pm-triage-agent.md +83 -0
- package/plugins/pm-cli-claude/agents/pm-verification-agent.md +88 -0
- package/plugins/pm-cli-claude/hooks/session-start.mjs +87 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-json-payload.js","sourceRoot":"/","sources":["cli/help-json-payload.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from \"commander\";\nimport {\n commandOptionFlagLabel,\n resolveCommandOptionPolicyState,\n resolveItemTypeRegistry,\n resolveTypeDefinition,\n} from \"../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { printError, writeStdout } from \"../core/output/output.js\";\nimport {\n type HelpOptionSummary,\n type ExtensionCommandHelpDescriptor,\n buildDynamicExtensionHelpOptionSummaries,\n mergeHelpOptionSummaries,\n findCommandByPath,\n findDirectChildCommand,\n commandAliases,\n} from \"./extension-command-help.js\";\nimport {\n normalizeHelpCommandPath,\n resolveHelpDetailMode,\n resolveHelpNarrative,\n} from \"./help-content.js\";\nimport { getCommandPath } from \"./registration-helpers.js\";\nimport {\n parseBootstrapGlobalOptions,\n parseBootstrapHelpRequest,\n parseBootstrapCommandName,\n parseBootstrapTypeValue,\n} from \"./bootstrap-args.js\";\nimport { formatCommanderErrorForJson } from \"./error-guidance.js\";\nimport {\n BUILTIN_TYPE_HELP_VALUES,\n buildUnknownCommandGuidanceFromRuntime,\n} from \"./commander-usage.js\";\n\nexport interface HelpArgumentSummary {\n name: string;\n required: boolean;\n variadic: boolean;\n description: string | null;\n}\n\nexport interface HelpSubcommandSummary {\n name: string;\n aliases: string[];\n description: string;\n}\n\nexport function resolveCommandFromPathTokens(root: Command, pathTokens: string[]): Command | null {\n if (pathTokens.length === 0) {\n return root;\n }\n return findCommandByPath(root, pathTokens);\n}\n\nexport function extractOptionValueName(flags: string): string | null {\n const match = flags.match(/[<[]([^>\\]]+)[>\\]]/);\n if (!match) {\n return null;\n }\n const value = match[1]?.trim();\n return value && value.length > 0 ? value : null;\n}\n\nexport function readOptionAttributeName(option: unknown): string | null {\n const optionRecord = option as {\n attributeName?: (() => string) | string;\n };\n if (typeof optionRecord.attributeName === \"function\") {\n const value = optionRecord.attributeName();\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n }\n if (typeof optionRecord.attributeName === \"string\" && optionRecord.attributeName.trim().length > 0) {\n return optionRecord.attributeName.trim();\n }\n return null;\n}\n\nexport function buildOptionAliasMap(options: unknown[]): Map<string, string[]> {\n const aliasMap = new Map<string, string[]>();\n for (const option of options) {\n const optionRecord = option as {\n long?: string;\n };\n const attributeName = readOptionAttributeName(option);\n if (!attributeName || typeof optionRecord.long !== \"string\" || optionRecord.long.trim().length === 0) {\n continue;\n }\n const existing = aliasMap.get(attributeName) ?? [];\n existing.push(optionRecord.long.trim());\n aliasMap.set(attributeName, existing);\n }\n for (const [attributeName, values] of aliasMap.entries()) {\n aliasMap.set(\n attributeName,\n [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n ),\n );\n }\n return aliasMap;\n}\n\nexport function buildHelpOptionSummaries(command: Command): HelpOptionSummary[] {\n const options = (command.options ?? []) as unknown[];\n const optionAliasMap = buildOptionAliasMap(options);\n return options.map((option) => {\n const optionRecord = option as {\n flags?: string;\n long?: string;\n short?: string;\n description?: string;\n mandatory?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n };\n const flags = typeof optionRecord.flags === \"string\" ? optionRecord.flags.trim() : \"\";\n const description = typeof optionRecord.description === \"string\" ? optionRecord.description.trim() : \"\";\n const attributeName = readOptionAttributeName(option);\n const aliasCandidates = attributeName ? optionAliasMap.get(attributeName) ?? [] : [];\n const aliases = aliasCandidates\n .filter((entry) => entry !== optionRecord.long)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n const aliasForMatch = description.match(/^Alias for ([^ ]+)/i);\n const aliasFor = aliasForMatch && aliasForMatch[1] ? aliasForMatch[1].trim() : null;\n const required =\n optionRecord.mandatory === true || description.includes(\"[required]\") || description.toLowerCase().includes(\"required;\");\n const valueRequired = flags.includes(\"<\");\n const takesValue = valueRequired || flags.includes(\"[\");\n const summary: HelpOptionSummary = {\n flags,\n long: typeof optionRecord.long === \"string\" ? optionRecord.long : null,\n short: typeof optionRecord.short === \"string\" ? optionRecord.short : null,\n description,\n takes_value: takesValue,\n value_required: valueRequired,\n value_name: extractOptionValueName(flags),\n variadic: optionRecord.variadic === true,\n required,\n aliases,\n alias_for: aliasFor,\n };\n if (optionRecord.defaultValue !== undefined) {\n summary.default_value = optionRecord.defaultValue;\n }\n return summary;\n });\n}\n\nexport function buildHelpArgumentSummaries(command: Command): HelpArgumentSummary[] {\n const commandRecord = command as unknown as {\n registeredArguments?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n _args?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n };\n const argumentsList = Array.isArray(commandRecord.registeredArguments)\n ? commandRecord.registeredArguments\n : Array.isArray(commandRecord._args)\n ? commandRecord._args\n : [];\n\n return argumentsList.map((argument) => {\n const rawName =\n typeof argument.name === \"function\"\n ? argument.name()\n : typeof argument.name === \"string\"\n ? argument.name\n : \"argument\";\n const description = typeof argument.description === \"string\" && argument.description.trim().length > 0\n ? argument.description.trim()\n : null;\n return {\n name: rawName.trim(),\n required: argument.required === true,\n variadic: argument.variadic === true,\n description,\n };\n });\n}\n\nexport function buildHelpSubcommandSummaries(command: Command): HelpSubcommandSummary[] {\n return command.commands\n .map((entry) => ({\n name: entry.name().trim(),\n aliases: commandAliases(entry),\n description: entry.description().trim(),\n }))\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nexport function buildJsonHelpPayload(\n rootProgram: Command,\n targetCommand: Command,\n argv: string[],\n requestedPath: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Record<string, unknown> {\n const detailMode = resolveHelpDetailMode(argv);\n const resolvedPath = normalizeHelpCommandPath(getCommandPath(targetCommand));\n const commandPath = resolvedPath.length > 0 ? resolvedPath : undefined;\n const fallbackNarrative = resolveHelpNarrative(commandPath, detailMode);\n const extensionDescriptor = commandPath ? extensionDescriptors.get(commandPath) : undefined;\n const extensionExamples = extensionDescriptor?.examples ?? [];\n const extensionFailureHints = extensionDescriptor?.failure_hints ?? [];\n const narrative = extensionDescriptor\n ? {\n intent: extensionDescriptor.intent ?? extensionDescriptor.description ?? fallbackNarrative.intent,\n examples:\n detailMode === \"detailed\"\n ? extensionExamples.length > 0\n ? [...extensionExamples]\n : [...fallbackNarrative.examples]\n : extensionExamples.length > 0\n ? [extensionExamples[0]]\n : [...fallbackNarrative.examples],\n tips:\n detailMode === \"detailed\"\n ? extensionFailureHints.length > 0\n ? [...extensionFailureHints]\n : [...fallbackNarrative.tips]\n : [],\n detail_mode: detailMode,\n }\n : fallbackNarrative;\n const optionSummaries = mergeHelpOptionSummaries(\n buildHelpOptionSummaries(targetCommand),\n buildDynamicExtensionHelpOptionSummaries(extensionDescriptor),\n );\n const subcommands = buildHelpSubcommandSummaries(targetCommand);\n return {\n format: \"pm_help_v1\",\n detail_mode: detailMode,\n root_command: rootProgram.name(),\n requested_path: requestedPath,\n resolved_path: resolvedPath.length > 0 ? resolvedPath : rootProgram.name(),\n description: targetCommand.description(),\n usage: targetCommand.usage(),\n intent: narrative.intent,\n examples: narrative.examples,\n tips: narrative.tips,\n arguments: buildHelpArgumentSummaries(targetCommand),\n options: optionSummaries,\n subcommands,\n has_subcommands: subcommands.length > 0,\n };\n}\n\nexport async function maybeRenderBootstrapJsonHelp(\n rootProgram: Command,\n argv: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Promise<boolean> {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!bootstrapGlobal.json) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n if (!helpRequest.requested) {\n return false;\n }\n const targetCommand = resolveCommandFromPathTokens(rootProgram, helpRequest.commandPathTokens);\n if (!targetCommand) {\n if (!bootstrapGlobal.quiet) {\n const unknownMessage = `unknown command '${helpRequest.commandPathTokens.join(\" \")}'`;\n const envelope = formatCommanderErrorForJson(\n unknownMessage,\n \"help\",\n BUILTIN_TYPE_HELP_VALUES,\n EXIT_CODE.USAGE,\n buildUnknownCommandGuidanceFromRuntime(unknownMessage, rootProgram, extensionDescriptors),\n );\n printError(JSON.stringify(envelope, null, 2));\n }\n process.exitCode = EXIT_CODE.USAGE;\n return true;\n }\n if (!bootstrapGlobal.quiet) {\n const payload = buildJsonHelpPayload(rootProgram, targetCommand, argv, helpRequest.commandPathTokens, extensionDescriptors);\n writeStdout(`${JSON.stringify(payload, null, 2)}\\n`);\n }\n process.exitCode = EXIT_CODE.SUCCESS;\n return true;\n}\n\nexport function buildCreateUpdatePolicyHelpText(\n commandName: \"create\" | \"update\",\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): string {\n const selectedTypeRaw = parseBootstrapTypeValue(argv);\n if (!selectedTypeRaw) {\n const allowed = typeRegistry.types.join(\"|\");\n const lines = [\n \"\",\n \"Type-aware option policies:\",\n \" pass --type <value> with --help to render required/disabled/hidden option policy details for that type.\",\n ` active type values: ${allowed}`,\n ];\n if (commandName === \"create\") {\n lines.push(\n \" scheduling shortcut: use --schedule-preset lightweight for Reminder/Meeting/Event minimal create flows.\",\n );\n }\n return lines.join(\"\\n\");\n }\n\n const typeDefinition = resolveTypeDefinition(selectedTypeRaw, typeRegistry);\n if (!typeDefinition) {\n const allowed = typeRegistry.types.join(\"|\");\n return [\n \"\",\n `Type-aware option policies: type \"${selectedTypeRaw}\" is not in the active registry.`,\n ` active type values: ${allowed}`,\n ].join(\"\\n\");\n }\n\n const baseRequired =\n commandName === \"create\"\n ? new Set<string>([\"title\", \"description\", \"type\", ...typeDefinition.required_create_fields, ...typeDefinition.required_create_repeatables])\n : new Set<string>();\n const policyState = resolveCommandOptionPolicyState(typeDefinition, commandName, baseRequired);\n const toFlags = (options: string[]): string =>\n options.length > 0 ? options.map((option) => commandOptionFlagLabel(commandName, option)).join(\", \") : \"none\";\n\n const lines = [\n \"\",\n `Type-aware option policies for ${typeDefinition.name}:`,\n ` required: ${toFlags(policyState.required)}`,\n ` disabled: ${toFlags(policyState.disabled)}`,\n ` hidden: ${toFlags(policyState.hidden)}`,\n ];\n if (commandName === \"create\" && [\"Reminder\", \"Meeting\", \"Event\"].includes(typeDefinition.name)) {\n lines.push(\n \" schedule preset: --schedule-preset lightweight switches schedule artifacts to progressive required-option policy.\",\n );\n lines.push(\" strict parity remains available via --create-mode strict.\");\n }\n if (typeDefinition.options.length === 0) {\n lines.push(\" type options: none\");\n } else {\n lines.push(\" type options:\");\n for (const option of typeDefinition.options) {\n const requiredLabel = option.required ? \" (required)\" : \"\";\n const aliases = option.aliases ?? [];\n lines.push(` - ${option.key}${requiredLabel}`);\n lines.push(` values: ${option.values.length > 0 ? option.values.join(\"|\") : \"any non-empty string\"}`);\n lines.push(` aliases: ${aliases.length > 0 ? aliases.join(\"|\") : \"none\"}`);\n if (option.description && option.description.trim().length > 0) {\n lines.push(` description: ${option.description.trim()}`);\n }\n }\n }\n if (policyState.errors.length > 0) {\n lines.push(` config errors: ${policyState.errors.join(\"; \")}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport function attachCreateUpdatePolicyHelpText(\n rootProgram: Command,\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): void {\n const bootstrapCommand = parseBootstrapCommandName(argv);\n if (bootstrapCommand !== \"create\" && bootstrapCommand !== \"update\") {\n return;\n }\n const command = findDirectChildCommand(rootProgram, bootstrapCommand);\n if (!command) {\n return;\n }\n command.addHelpText(\"after\", buildCreateUpdatePolicyHelpText(bootstrapCommand, typeRegistry, argv));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"help-json-payload.js","sourceRoot":"/","sources":["cli/help-json-payload.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from \"commander\";\nimport {\n commandOptionFlagLabel,\n resolveCommandOptionPolicyState,\n resolveItemTypeRegistry,\n resolveTypeDefinition,\n} from \"../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { printError, writeStdout } from \"../core/output/output.js\";\nimport {\n type HelpOptionSummary,\n type ExtensionCommandHelpDescriptor,\n buildDynamicExtensionHelpOptionSummaries,\n mergeHelpOptionSummaries,\n findCommandByPath,\n findDirectChildCommand,\n commandAliases,\n} from \"./extension-command-help.js\";\nimport {\n normalizeHelpCommandPath,\n resolveHelpDetailMode,\n resolveHelpNarrative,\n} from \"./help-content.js\";\nimport { getCommandPath } from \"./registration-helpers.js\";\nimport {\n parseBootstrapGlobalOptions,\n parseBootstrapHelpRequest,\n parseBootstrapCommandName,\n parseBootstrapTypeValue,\n} from \"./bootstrap-args.js\";\nimport { extractProvidedOptionFlags, renderPmCommand } from \"./argv-utils.js\";\nimport { formatCommanderErrorForJson } from \"./error-guidance.js\";\nimport {\n BUILTIN_TYPE_HELP_VALUES,\n buildUnknownCommandGuidanceFromRuntime,\n} from \"./commander-usage.js\";\n\nexport interface HelpArgumentSummary {\n name: string;\n required: boolean;\n variadic: boolean;\n description: string | null;\n}\n\nexport interface HelpSubcommandSummary {\n name: string;\n aliases: string[];\n description: string;\n}\n\nexport function resolveCommandFromPathTokens(root: Command, pathTokens: string[]): Command | null {\n if (pathTokens.length === 0) {\n return root;\n }\n return findCommandByPath(root, pathTokens);\n}\n\nexport function extractOptionValueName(flags: string): string | null {\n const match = flags.match(/[<[]([^>\\]]+)[>\\]]/);\n if (!match) {\n return null;\n }\n const value = match[1]?.trim();\n return value && value.length > 0 ? value : null;\n}\n\nexport function readOptionAttributeName(option: unknown): string | null {\n const optionRecord = option as {\n attributeName?: (() => string) | string;\n };\n if (typeof optionRecord.attributeName === \"function\") {\n const value = optionRecord.attributeName();\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n }\n if (typeof optionRecord.attributeName === \"string\" && optionRecord.attributeName.trim().length > 0) {\n return optionRecord.attributeName.trim();\n }\n return null;\n}\n\nexport function buildOptionAliasMap(options: unknown[]): Map<string, string[]> {\n const aliasMap = new Map<string, string[]>();\n for (const option of options) {\n const optionRecord = option as {\n long?: string;\n };\n const attributeName = readOptionAttributeName(option);\n if (!attributeName || typeof optionRecord.long !== \"string\" || optionRecord.long.trim().length === 0) {\n continue;\n }\n const existing = aliasMap.get(attributeName) ?? [];\n existing.push(optionRecord.long.trim());\n aliasMap.set(attributeName, existing);\n }\n for (const [attributeName, values] of aliasMap.entries()) {\n aliasMap.set(\n attributeName,\n [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n ),\n );\n }\n return aliasMap;\n}\n\nfunction renderAttemptedCommand(argv: string[]): string {\n return renderPmCommand(argv);\n}\n\nexport function buildHelpOptionSummaries(command: Command): HelpOptionSummary[] {\n const options = (command.options ?? []) as unknown[];\n const optionAliasMap = buildOptionAliasMap(options);\n return options.map((option) => {\n const optionRecord = option as {\n flags?: string;\n long?: string;\n short?: string;\n description?: string;\n mandatory?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n };\n const flags = typeof optionRecord.flags === \"string\" ? optionRecord.flags.trim() : \"\";\n const description = typeof optionRecord.description === \"string\" ? optionRecord.description.trim() : \"\";\n const attributeName = readOptionAttributeName(option);\n const aliasCandidates = attributeName ? optionAliasMap.get(attributeName) ?? [] : [];\n const aliases = aliasCandidates\n .filter((entry) => entry !== optionRecord.long)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n const aliasForMatch = description.match(/^Alias for ([^ ]+)/i);\n const aliasFor = aliasForMatch && aliasForMatch[1] ? aliasForMatch[1].trim() : null;\n const required =\n optionRecord.mandatory === true || description.includes(\"[required]\") || description.toLowerCase().includes(\"required;\");\n const valueRequired = flags.includes(\"<\");\n const takesValue = valueRequired || flags.includes(\"[\");\n const summary: HelpOptionSummary = {\n flags,\n long: typeof optionRecord.long === \"string\" ? optionRecord.long : null,\n short: typeof optionRecord.short === \"string\" ? optionRecord.short : null,\n description,\n takes_value: takesValue,\n value_required: valueRequired,\n value_name: extractOptionValueName(flags),\n variadic: optionRecord.variadic === true,\n required,\n aliases,\n alias_for: aliasFor,\n };\n if (optionRecord.defaultValue !== undefined) {\n summary.default_value = optionRecord.defaultValue;\n }\n return summary;\n });\n}\n\nexport function buildHelpArgumentSummaries(command: Command): HelpArgumentSummary[] {\n const commandRecord = command as unknown as {\n registeredArguments?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n _args?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n };\n const argumentsList = Array.isArray(commandRecord.registeredArguments)\n ? commandRecord.registeredArguments\n : Array.isArray(commandRecord._args)\n ? commandRecord._args\n : [];\n\n return argumentsList.map((argument) => {\n const rawName =\n typeof argument.name === \"function\"\n ? argument.name()\n : typeof argument.name === \"string\"\n ? argument.name\n : \"argument\";\n const description = typeof argument.description === \"string\" && argument.description.trim().length > 0\n ? argument.description.trim()\n : null;\n return {\n name: rawName.trim(),\n required: argument.required === true,\n variadic: argument.variadic === true,\n description,\n };\n });\n}\n\nexport function buildHelpSubcommandSummaries(command: Command): HelpSubcommandSummary[] {\n return command.commands\n .map((entry) => ({\n name: entry.name().trim(),\n aliases: commandAliases(entry),\n description: entry.description().trim(),\n }))\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nexport function buildJsonHelpPayload(\n rootProgram: Command,\n targetCommand: Command,\n argv: string[],\n requestedPath: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Record<string, unknown> {\n const detailMode = resolveHelpDetailMode(argv);\n const resolvedPath = normalizeHelpCommandPath(getCommandPath(targetCommand));\n const commandPath = resolvedPath.length > 0 ? resolvedPath : undefined;\n const fallbackNarrative = resolveHelpNarrative(commandPath, detailMode);\n const extensionDescriptor = commandPath ? extensionDescriptors.get(commandPath) : undefined;\n const extensionExamples = extensionDescriptor?.examples ?? [];\n const extensionFailureHints = extensionDescriptor?.failure_hints ?? [];\n const narrative = extensionDescriptor\n ? {\n intent: extensionDescriptor.intent ?? extensionDescriptor.description ?? fallbackNarrative.intent,\n examples:\n detailMode === \"detailed\"\n ? extensionExamples.length > 0\n ? [...extensionExamples]\n : [...fallbackNarrative.examples]\n : extensionExamples.length > 0\n ? [extensionExamples[0]]\n : [...fallbackNarrative.examples],\n tips:\n detailMode === \"detailed\"\n ? extensionFailureHints.length > 0\n ? [...extensionFailureHints]\n : [...fallbackNarrative.tips]\n : [],\n detail_mode: detailMode,\n }\n : fallbackNarrative;\n const optionSummaries = mergeHelpOptionSummaries(\n buildHelpOptionSummaries(targetCommand),\n buildDynamicExtensionHelpOptionSummaries(extensionDescriptor),\n );\n const subcommands = buildHelpSubcommandSummaries(targetCommand);\n return {\n format: \"pm_help_v1\",\n detail_mode: detailMode,\n root_command: rootProgram.name(),\n requested_path: requestedPath,\n resolved_path: resolvedPath.length > 0 ? resolvedPath : rootProgram.name(),\n description: targetCommand.description(),\n usage: targetCommand.usage(),\n intent: narrative.intent,\n examples: narrative.examples,\n tips: narrative.tips,\n arguments: buildHelpArgumentSummaries(targetCommand),\n options: optionSummaries,\n subcommands,\n has_subcommands: subcommands.length > 0,\n };\n}\n\nexport async function maybeRenderBootstrapJsonHelp(\n rootProgram: Command,\n argv: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Promise<boolean> {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!bootstrapGlobal.json) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n if (!helpRequest.requested) {\n return false;\n }\n const targetCommand = resolveCommandFromPathTokens(rootProgram, helpRequest.commandPathTokens);\n if (!targetCommand) {\n if (!bootstrapGlobal.quiet) {\n const unknownMessage = `unknown command '${helpRequest.commandPathTokens.join(\" \")}'`;\n const runtimeContext = buildUnknownCommandGuidanceFromRuntime(unknownMessage, rootProgram, extensionDescriptors);\n const envelope = formatCommanderErrorForJson(\n unknownMessage,\n \"help\",\n BUILTIN_TYPE_HELP_VALUES,\n EXIT_CODE.USAGE,\n {\n ...(runtimeContext ?? {}),\n attemptedCommand: renderAttemptedCommand(argv),\n normalizedInvocationArgs: [...argv],\n providedOptionFlags: extractProvidedOptionFlags(argv),\n },\n );\n printError(JSON.stringify(envelope, null, 2));\n }\n process.exitCode = EXIT_CODE.USAGE;\n return true;\n }\n if (!bootstrapGlobal.quiet) {\n const payload = buildJsonHelpPayload(rootProgram, targetCommand, argv, helpRequest.commandPathTokens, extensionDescriptors);\n writeStdout(`${JSON.stringify(payload, null, 2)}\\n`);\n }\n process.exitCode = EXIT_CODE.SUCCESS;\n return true;\n}\n\nexport function buildCreateUpdatePolicyHelpText(\n commandName: \"create\" | \"update\",\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): string {\n const selectedTypeRaw = parseBootstrapTypeValue(argv);\n if (!selectedTypeRaw) {\n const allowed = typeRegistry.types.join(\"|\");\n const lines = [\n \"\",\n \"Type-aware option policies:\",\n \" pass --type <value> with --help to render required/disabled/hidden option policy details for that type.\",\n ` active type values: ${allowed}`,\n ];\n if (commandName === \"create\") {\n lines.push(\n \" scheduling shortcut: use --schedule-preset lightweight for Reminder/Meeting/Event minimal create flows.\",\n );\n }\n return lines.join(\"\\n\");\n }\n\n const typeDefinition = resolveTypeDefinition(selectedTypeRaw, typeRegistry);\n if (!typeDefinition) {\n const allowed = typeRegistry.types.join(\"|\");\n return [\n \"\",\n `Type-aware option policies: type \"${selectedTypeRaw}\" is not in the active registry.`,\n ` active type values: ${allowed}`,\n ].join(\"\\n\");\n }\n\n const baseRequired =\n commandName === \"create\"\n ? new Set<string>([\"title\", \"description\", \"type\", ...typeDefinition.required_create_fields, ...typeDefinition.required_create_repeatables])\n : new Set<string>();\n const policyState = resolveCommandOptionPolicyState(typeDefinition, commandName, baseRequired);\n const toFlags = (options: string[]): string =>\n options.length > 0 ? options.map((option) => commandOptionFlagLabel(commandName, option)).join(\", \") : \"none\";\n\n const lines = [\n \"\",\n `Type-aware option policies for ${typeDefinition.name}:`,\n ` required: ${toFlags(policyState.required)}`,\n ` disabled: ${toFlags(policyState.disabled)}`,\n ` hidden: ${toFlags(policyState.hidden)}`,\n ];\n if (commandName === \"create\" && [\"Reminder\", \"Meeting\", \"Event\"].includes(typeDefinition.name)) {\n lines.push(\n \" schedule preset: --schedule-preset lightweight switches schedule artifacts to progressive required-option policy.\",\n );\n lines.push(\" strict parity remains available via --create-mode strict.\");\n }\n if (typeDefinition.options.length === 0) {\n lines.push(\" type options: none\");\n } else {\n lines.push(\" type options:\");\n for (const option of typeDefinition.options) {\n const requiredLabel = option.required ? \" (required)\" : \"\";\n const aliases = option.aliases ?? [];\n lines.push(` - ${option.key}${requiredLabel}`);\n lines.push(` values: ${option.values.length > 0 ? option.values.join(\"|\") : \"any non-empty string\"}`);\n lines.push(` aliases: ${aliases.length > 0 ? aliases.join(\"|\") : \"none\"}`);\n if (option.description && option.description.trim().length > 0) {\n lines.push(` description: ${option.description.trim()}`);\n }\n }\n }\n if (policyState.errors.length > 0) {\n lines.push(` config errors: ${policyState.errors.join(\"; \")}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport function attachCreateUpdatePolicyHelpText(\n rootProgram: Command,\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): void {\n const bootstrapCommand = parseBootstrapCommandName(argv);\n if (bootstrapCommand !== \"create\" && bootstrapCommand !== \"update\") {\n return;\n }\n const command = findDirectChildCommand(rootProgram, bootstrapCommand);\n if (!command) {\n return;\n }\n command.addHelpText(\"after\", buildCreateUpdatePolicyHelpText(bootstrapCommand, typeRegistry, argv));\n}\n"]}
|
package/dist/cli/main.js
CHANGED
|
@@ -14,10 +14,12 @@ import { maybeRunFirstUseTelemetryPrompt } from "../core/telemetry/consent.js";
|
|
|
14
14
|
import { emitTelemetryErrorEvent, finishTelemetryCommand, startTelemetryCommand, } from "../core/telemetry/runtime.js";
|
|
15
15
|
import { deriveTelemetryCommandResolution, } from "../core/telemetry/observability.js";
|
|
16
16
|
import { sentryCaptureCliError, sentryFinishCommandSpan, sentryFlush, sentryLogCliUsageError, sentrySetCommandContext, sentryStartCommandSpan, } from "../core/sentry/helpers.js";
|
|
17
|
+
import { ensureSentryInit } from "../core/sentry/instrument.js";
|
|
17
18
|
import { getSettingsPath, resolvePmRoot } from "../core/store/paths.js";
|
|
18
19
|
import { readSettings } from "../core/store/settings.js";
|
|
19
20
|
import { coerceLooseCommandOptionsWithFlagDefinitions, parseLooseCommandOptions } from "./extension-command-options.js";
|
|
20
21
|
import { attachRichHelpText } from "./help-content.js";
|
|
22
|
+
import { extractProvidedOptionFlags, normalizeLongOptionFlag, renderPmCommand, } from "./argv-utils.js";
|
|
21
23
|
import { classifyCommanderError, classifyPmCliError, classifyUnknownError, formatPmCliErrorForDisplay, formatPmCliErrorForJson, formatUnknownErrorForJson, } from "./error-guidance.js";
|
|
22
24
|
import { applyDefaultOutputFormat, clearResolvedGlobalOptions, collect, formatHookWarnings, getCommandPath, getGlobalOptions, invalidateSearchCachesForMutation, setResolvedGlobalOptions, } from "./registration-helpers.js";
|
|
23
25
|
import { registerSetupCommands } from "./register-setup.js";
|
|
@@ -25,7 +27,7 @@ import { registerListQueryCommands } from "./register-list-query.js";
|
|
|
25
27
|
import { registerMutationCommands } from "./register-mutation.js";
|
|
26
28
|
import { registerOperationCommands } from "./register-operations.js";
|
|
27
29
|
import { normalizeExtensionCommandPath, collectDynamicExtensionFlagHelpByCommand, collectExtensionCommandHelpDescriptors, applyDynamicExtensionArguments, buildDynamicExtensionCommandMetadataHelp, findCommandByPath, ensureCommandPath, } from "./extension-command-help.js";
|
|
28
|
-
import { parseBootstrapGlobalOptions, applyBootstrapPagerPolicy, parseBootstrapHelpRequest, parseBootstrapCommandName,
|
|
30
|
+
import { parseBootstrapGlobalOptions, applyBootstrapPagerPolicy, parseBootstrapHelpRequest, parseBootstrapCommandName, normalizeBootstrapInvocation, } from "./bootstrap-args.js";
|
|
29
31
|
import { collectMandatoryMigrationBlockers, enforceMandatoryMigrationWriteGate, enforceItemFormatWriteGateAndPreflightMigration, resolveMigrationId, resolveNormalizedMigrationStatus, } from "./migration-gates.js";
|
|
30
32
|
import { isKnownHelpCommandPath, formatCommanderUsageMessage, formatCommanderUsageJson, resolveCommanderUsageContext, } from "./commander-usage.js";
|
|
31
33
|
import { maybeRenderBootstrapJsonHelp, attachCreateUpdatePolicyHelpText, } from "./help-json-payload.js";
|
|
@@ -64,6 +66,48 @@ function describeUnknownError(error) {
|
|
|
64
66
|
}
|
|
65
67
|
return "Unknown failure";
|
|
66
68
|
}
|
|
69
|
+
function renderAttemptedCommand(argv) {
|
|
70
|
+
return renderPmCommand(argv);
|
|
71
|
+
}
|
|
72
|
+
function inferMissingFieldsFromErrorMessage(message) {
|
|
73
|
+
const matches = message.match(/--[a-zA-Z0-9][a-zA-Z0-9_-]*/g);
|
|
74
|
+
if (!matches || matches.length === 0) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
const normalized = [...new Set(matches.map((entry) => normalizeLongOptionFlag(entry) ?? entry))];
|
|
78
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
79
|
+
}
|
|
80
|
+
function buildPmCliRecoveryContext(context, invocationArgv, rawMessage) {
|
|
81
|
+
const attemptedCommand = renderAttemptedCommand(invocationArgv);
|
|
82
|
+
const providedFields = extractProvidedOptionFlags(invocationArgv);
|
|
83
|
+
const inferredMissing = inferMissingFieldsFromErrorMessage(rawMessage);
|
|
84
|
+
const existingRecovery = context?.recovery;
|
|
85
|
+
let suggestedRetry = existingRecovery?.suggested_retry;
|
|
86
|
+
if (!suggestedRetry && inferredMissing && inferredMissing.length > 0) {
|
|
87
|
+
const missingFlag = inferredMissing[0];
|
|
88
|
+
const normalizedMissing = normalizeLongOptionFlag(missingFlag);
|
|
89
|
+
if (normalizedMissing) {
|
|
90
|
+
const alreadyProvided = invocationArgv.some((token) => normalizeLongOptionFlag(token) === normalizedMissing);
|
|
91
|
+
if (!alreadyProvided) {
|
|
92
|
+
suggestedRetry = renderAttemptedCommand([...invocationArgv, normalizedMissing, "<value>"]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!suggestedRetry) {
|
|
97
|
+
suggestedRetry = attemptedCommand;
|
|
98
|
+
}
|
|
99
|
+
const recovery = {
|
|
100
|
+
attempted_command: existingRecovery?.attempted_command ?? attemptedCommand,
|
|
101
|
+
normalized_args: existingRecovery?.normalized_args ?? [...invocationArgv],
|
|
102
|
+
provided_fields: existingRecovery?.provided_fields ?? (providedFields.length > 0 ? providedFields : undefined),
|
|
103
|
+
missing: existingRecovery?.missing ?? inferredMissing,
|
|
104
|
+
suggested_retry: suggestedRetry,
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
...(context ?? {}),
|
|
108
|
+
recovery,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
67
111
|
function asRecord(value) {
|
|
68
112
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
69
113
|
return null;
|
|
@@ -255,6 +299,9 @@ async function runAndClearAfterCommandHooks(outcome) {
|
|
|
255
299
|
printError(`profile:extensions hook_warnings=${formatHookWarnings(hookWarnings)}`);
|
|
256
300
|
}
|
|
257
301
|
}
|
|
302
|
+
async function ensureSentryForErrorReporting() {
|
|
303
|
+
await ensureSentryInit();
|
|
304
|
+
}
|
|
258
305
|
function extractCommandScopedOptions(command, commandArgs, extensionFlagDefinitions = []) {
|
|
259
306
|
const allOptions = command.optsWithGlobals();
|
|
260
307
|
const scoped = { ...allOptions };
|
|
@@ -927,9 +974,10 @@ registerSetupCommands(program);
|
|
|
927
974
|
registerListQueryCommands(program);
|
|
928
975
|
registerMutationCommands(program);
|
|
929
976
|
registerOperationCommands(program);
|
|
930
|
-
|
|
977
|
+
const bootstrapInvocation = normalizeBootstrapInvocation(process.argv.slice(2));
|
|
978
|
+
attachRichHelpText(program, bootstrapInvocation.argv);
|
|
931
979
|
async function main() {
|
|
932
|
-
const invocationArgv =
|
|
980
|
+
const invocationArgv = bootstrapInvocation.argv;
|
|
933
981
|
const invocationProcessArgv = [process.argv[0], process.argv[1], ...invocationArgv];
|
|
934
982
|
try {
|
|
935
983
|
applyBootstrapPagerPolicy(invocationArgv);
|
|
@@ -978,7 +1026,8 @@ async function main() {
|
|
|
978
1026
|
setActiveExtensionServices(bootstrapSnapshot?.services ?? { overrides: [] });
|
|
979
1027
|
}
|
|
980
1028
|
if (error instanceof PmCliError) {
|
|
981
|
-
const
|
|
1029
|
+
const enrichedContext = buildPmCliRecoveryContext(error.context, invocationArgv, error.message);
|
|
1030
|
+
const classification = classifyPmCliError(error.message, enrichedContext);
|
|
982
1031
|
const { errorCategory, commandResolution } = await emitTelemetryCommandError({
|
|
983
1032
|
command: attemptedCommand,
|
|
984
1033
|
errorCode: classification.code,
|
|
@@ -989,6 +1038,7 @@ async function main() {
|
|
|
989
1038
|
},
|
|
990
1039
|
resolutionStage: "execute",
|
|
991
1040
|
});
|
|
1041
|
+
await ensureSentryForErrorReporting();
|
|
992
1042
|
sentryLogCliUsageError({
|
|
993
1043
|
command: attemptedCommand,
|
|
994
1044
|
error_code: classification.code,
|
|
@@ -1017,10 +1067,10 @@ async function main() {
|
|
|
1017
1067
|
});
|
|
1018
1068
|
sentryCaptureCliError(error);
|
|
1019
1069
|
if (jsonErrors) {
|
|
1020
|
-
printError(JSON.stringify(formatPmCliErrorForJson(error.message, error.exitCode,
|
|
1070
|
+
printError(JSON.stringify(formatPmCliErrorForJson(error.message, error.exitCode, enrichedContext), null, 2));
|
|
1021
1071
|
}
|
|
1022
1072
|
else {
|
|
1023
|
-
printError(formatPmCliErrorForDisplay(error.message,
|
|
1073
|
+
printError(formatPmCliErrorForDisplay(error.message, enrichedContext));
|
|
1024
1074
|
}
|
|
1025
1075
|
await sentryFlush();
|
|
1026
1076
|
process.exitCode = error.exitCode;
|
|
@@ -1039,6 +1089,11 @@ async function main() {
|
|
|
1039
1089
|
const classification = classifyCommanderError(usageContext.message, usageContext.commandName, usageContext.allowedTypes, {
|
|
1040
1090
|
unknownCommandExamples: usageContext.unknownCommandExamples,
|
|
1041
1091
|
unknownCommandNextSteps: usageContext.unknownCommandNextSteps,
|
|
1092
|
+
attemptedCommand: usageContext.attemptedCommand,
|
|
1093
|
+
normalizedInvocationArgs: usageContext.normalizedInvocationArgs,
|
|
1094
|
+
providedOptionFlags: usageContext.providedOptionFlags,
|
|
1095
|
+
unknownOptionSuggestions: usageContext.unknownOptionSuggestions,
|
|
1096
|
+
suggestedRetryCommand: usageContext.suggestedRetryCommand,
|
|
1042
1097
|
});
|
|
1043
1098
|
const { errorCategory, commandResolution } = await emitTelemetryCommandError({
|
|
1044
1099
|
command: unknownToken,
|
|
@@ -1051,6 +1106,7 @@ async function main() {
|
|
|
1051
1106
|
},
|
|
1052
1107
|
resolutionStage: "parse",
|
|
1053
1108
|
});
|
|
1109
|
+
await ensureSentryForErrorReporting();
|
|
1054
1110
|
sentryLogCliUsageError({
|
|
1055
1111
|
command: unknownToken,
|
|
1056
1112
|
error_code: classification.code,
|
|
@@ -1124,6 +1180,11 @@ async function main() {
|
|
|
1124
1180
|
const classification = classifyCommanderError(usageContext.message, usageContext.commandName, usageContext.allowedTypes, {
|
|
1125
1181
|
unknownCommandExamples: usageContext.unknownCommandExamples,
|
|
1126
1182
|
unknownCommandNextSteps: usageContext.unknownCommandNextSteps,
|
|
1183
|
+
attemptedCommand: usageContext.attemptedCommand,
|
|
1184
|
+
normalizedInvocationArgs: usageContext.normalizedInvocationArgs,
|
|
1185
|
+
providedOptionFlags: usageContext.providedOptionFlags,
|
|
1186
|
+
unknownOptionSuggestions: usageContext.unknownOptionSuggestions,
|
|
1187
|
+
suggestedRetryCommand: usageContext.suggestedRetryCommand,
|
|
1127
1188
|
});
|
|
1128
1189
|
const { errorCategory, commandResolution } = await emitTelemetryCommandError({
|
|
1129
1190
|
command: attemptedCommand,
|
|
@@ -1136,6 +1197,7 @@ async function main() {
|
|
|
1136
1197
|
},
|
|
1137
1198
|
resolutionStage: "parse",
|
|
1138
1199
|
});
|
|
1200
|
+
await ensureSentryForErrorReporting();
|
|
1139
1201
|
sentryLogCliUsageError({
|
|
1140
1202
|
command: attemptedCommand,
|
|
1141
1203
|
error_code: classification.code,
|
|
@@ -1176,6 +1238,7 @@ async function main() {
|
|
|
1176
1238
|
return;
|
|
1177
1239
|
}
|
|
1178
1240
|
}
|
|
1241
|
+
await ensureSentryForErrorReporting();
|
|
1179
1242
|
sentryCaptureCliError(error);
|
|
1180
1243
|
const message = describeUnknownError(error);
|
|
1181
1244
|
const classification = classifyUnknownError(message);
|