@unbrained/pm-cli 2026.5.18 → 2026.5.24
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/CHANGELOG.md +60 -0
- package/README.md +2 -1
- package/dist/cli/commander-usage.js +16 -2
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/annotation-command.d.ts +49 -0
- package/dist/cli/commands/annotation-command.js +135 -0
- package/dist/cli/commands/annotation-command.js.map +1 -0
- package/dist/cli/commands/append.js +3 -7
- package/dist/cli/commands/append.js.map +1 -1
- package/dist/cli/commands/calendar.js +3 -6
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/claim.js +12 -22
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +61 -9
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments.d.ts +5 -0
- package/dist/cli/commands/comments.js +27 -117
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +102 -15
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.js +4 -10
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +168 -36
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +49 -44
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +7 -4
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/delete.d.ts +3 -0
- package/dist/cli/commands/delete.js +9 -8
- package/dist/cli/commands/delete.js.map +1 -1
- package/dist/cli/commands/docs.d.ts +1 -0
- package/dist/cli/commands/docs.js +4 -8
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/event-validation-messages.d.ts +3 -0
- package/dist/cli/commands/event-validation-messages.js +44 -0
- package/dist/cli/commands/event-validation-messages.js.map +1 -0
- package/dist/cli/commands/extension.d.ts +1 -0
- package/dist/cli/commands/extension.js +138 -21
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +6 -13
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/gc.js +17 -4
- package/dist/cli/commands/gc.js.map +1 -1
- package/dist/cli/commands/get.d.ts +3 -2
- package/dist/cli/commands/get.js +50 -8
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +10 -0
- package/dist/cli/commands/health.js +254 -75
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-redact.d.ts +8 -0
- package/dist/cli/commands/history-redact.js +14 -97
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.d.ts +33 -0
- package/dist/cli/commands/history-repair.js +166 -0
- package/dist/cli/commands/history-repair.js.map +1 -0
- package/dist/cli/commands/history.d.ts +4 -4
- package/dist/cli/commands/history.js +10 -88
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -1
- package/dist/cli/commands/index.js +5 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +28 -0
- package/dist/cli/commands/init.js +23 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learnings.js +20 -119
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/linked-test-entry.d.ts +3 -0
- package/dist/cli/commands/linked-test-entry.js +62 -0
- package/dist/cli/commands/linked-test-entry.js.map +1 -0
- package/dist/cli/commands/list.js +32 -22
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/notes.js +20 -119
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.js +184 -22
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/restore.js +7 -50
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +31 -0
- package/dist/cli/commands/schema.js +98 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/search.js +151 -40
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/templates.d.ts +4 -0
- package/dist/cli/commands/templates.js +89 -17
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/commands/test-all.js +4 -8
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +1 -0
- package/dist/cli/commands/test.js +7 -10
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +4 -8
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.js +109 -51
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +3 -1
- package/dist/cli/commands/validate.js +23 -71
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +96 -6
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.d.ts +0 -1
- package/dist/cli/extension-command-help.js +2 -13
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/extension-command-options.d.ts +1 -0
- package/dist/cli/extension-command-options.js +106 -7
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/help-content.d.ts +0 -1
- package/dist/cli/help-content.js +13 -9
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.d.ts +1 -0
- package/dist/cli/help-json-payload.js +33 -3
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +35 -29
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +40 -17
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.d.ts +1 -1
- package/dist/cli/register-mutation.js +232 -64
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +16 -11
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +26 -14
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +0 -2
- package/dist/cli/registration-helpers.js +13 -40
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli.js +23 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/extensions/index.d.ts +0 -1
- package/dist/core/extensions/index.js +2 -14
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.js +3 -9
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/fs/path-utils.d.ts +1 -0
- package/dist/core/fs/path-utils.js +12 -0
- package/dist/core/fs/path-utils.js.map +1 -0
- package/dist/core/history/drift-scan.d.ts +11 -0
- package/dist/core/history/drift-scan.js +67 -0
- package/dist/core/history/drift-scan.js.map +1 -0
- package/dist/core/history/replay.d.ts +82 -0
- package/dist/core/history/replay.js +249 -0
- package/dist/core/history/replay.js.map +1 -0
- package/dist/core/item/item-format.js +11 -8
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/item-type-definition.d.ts +52 -0
- package/dist/core/item/item-type-definition.js +123 -0
- package/dist/core/item/item-type-definition.js.map +1 -0
- package/dist/core/item/parse.js +3 -2
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/item/priority.d.ts +23 -0
- package/dist/core/item/priority.js +55 -0
- package/dist/core/item/priority.js.map +1 -0
- package/dist/core/item/status.d.ts +14 -1
- package/dist/core/item/status.js +22 -2
- package/dist/core/item/status.js.map +1 -1
- package/dist/core/item/toon-decode.d.ts +19 -0
- package/dist/core/item/toon-decode.js +69 -0
- package/dist/core/item/toon-decode.js.map +1 -0
- package/dist/core/item/type-registry.js +13 -84
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/packages/manifest.js +3 -9
- package/dist/core/packages/manifest.js.map +1 -1
- package/dist/core/schema/item-types-file.d.ts +85 -0
- package/dist/core/schema/item-types-file.js +243 -0
- package/dist/core/schema/item-types-file.js.map +1 -0
- package/dist/core/schema/runtime-schema.d.ts +2 -1
- package/dist/core/schema/runtime-schema.js +11 -9
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +3 -3
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/shared/author.d.ts +1 -0
- package/dist/core/shared/author.js +9 -0
- package/dist/core/shared/author.js.map +1 -0
- package/dist/core/shared/lazy-module.d.ts +1 -0
- package/dist/core/shared/lazy-module.js +11 -0
- package/dist/core/shared/lazy-module.js.map +1 -0
- package/dist/core/shared/option-alias-visibility.d.ts +44 -0
- package/dist/core/shared/option-alias-visibility.js +76 -0
- package/dist/core/shared/option-alias-visibility.js.map +1 -0
- package/dist/core/shared/text-normalization.d.ts +0 -1
- package/dist/core/shared/text-normalization.js +2 -5
- package/dist/core/shared/text-normalization.js.map +1 -1
- package/dist/core/store/item-store.d.ts +2 -0
- package/dist/core/store/item-store.js +70 -39
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +106 -0
- package/dist/core/store/settings-validator.js +279 -0
- package/dist/core/store/settings-validator.js.map +1 -0
- package/dist/core/store/settings.js +6 -343
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/runtime.js +5 -3
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/mcp/server.js +64 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +9 -2
- package/dist/sdk/cli-contracts.js +204 -13
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/runtime.d.ts +25 -1
- package/dist/sdk/runtime.js +46 -3
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.js +10 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +7 -1
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/COMMANDS.md +39 -6
- package/docs/CONFIGURATION.md +1 -1
- package/docs/RELEASING.md +11 -7
- package/docs/SDK.md +11 -2
- package/package.json +12 -11
- package/packages/pm-calendar/README.md +3 -1
- package/packages/pm-calendar/extensions/calendar/index.js +21 -2
- package/packages/pm-calendar/extensions/calendar/index.ts +21 -2
- package/packages/pm-search-advanced/README.md +8 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +74 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +74 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +67 -9
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +67 -9
- package/packages/pm-templates/extensions/templates/runtime.js +11 -202
- package/packages/pm-templates/extensions/templates/runtime.ts +38 -230
- package/dist/core/output/command-aware.d.ts +0 -1
- package/dist/core/output/command-aware.js +0 -397
- package/dist/core/output/command-aware.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-json-payload.js","sources":["cli/help-json-payload.ts"],"sourceRoot":"/","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"],"names":[],"mappings":"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","debugId":"49c2174d-1221-5026-b8ae-5dfab9778c90"}
|
|
1
|
+
{"version":3,"file":"help-json-payload.js","sources":["cli/help-json-payload.ts"],"sourceRoot":"/","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 compactHelpOptionAliases(options: HelpOptionSummary[]): HelpOptionSummary[] {\n const canonicalByLong = new Map<string, HelpOptionSummary>();\n const aliasOptions: HelpOptionSummary[] = [];\n for (const option of options) {\n if (option.alias_for && option.long) {\n aliasOptions.push(option);\n continue;\n }\n if (option.long) {\n canonicalByLong.set(option.long, option);\n }\n }\n for (const aliasOption of aliasOptions) {\n if (!aliasOption.alias_for || !aliasOption.long) {\n continue;\n }\n const canonical = canonicalByLong.get(aliasOption.alias_for);\n if (!canonical) {\n continue;\n }\n const aliases = new Set([...(canonical.aliases ?? []), aliasOption.long]);\n canonical.aliases = [...aliases].sort((left, right) => left.localeCompare(right));\n }\n return options.filter((option) => {\n if (!option.alias_for || !option.long) {\n return true;\n }\n return !canonicalByLong.has(option.alias_for);\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 = compactHelpOptionAliases(\n mergeHelpOptionSummaries(\n buildHelpOptionSummaries(targetCommand),\n buildDynamicExtensionHelpOptionSummaries(extensionDescriptor),\n ),\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"],"names":[],"mappings":"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","debugId":"8ed1b6f2-0119-5667-be8f-8a1e245d795f"}
|
package/dist/cli/main.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bb46ecaf-3f2f-526b-b6fa-4d87511ede62")}catch(e){}}();
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { Command } from "commander";
|
|
@@ -19,11 +19,12 @@ import { sentryCaptureCliError, sentryFinishCommandSpan, sentryFlush, sentryLogC
|
|
|
19
19
|
import { ensureSentryInit } from "../core/sentry/instrument.js";
|
|
20
20
|
import { getSettingsPath, resolvePmRoot } from "../core/store/paths.js";
|
|
21
21
|
import { readSettings } from "../core/store/settings.js";
|
|
22
|
-
import { coerceLooseCommandOptionsWithFlagDefinitions, parseLooseCommandOptions } from "./extension-command-options.js";
|
|
22
|
+
import { coerceLooseCommandOptionsWithFlagDefinitions, parseLooseCommandOptions, validateLooseCommandOptionsWithFlagDefinitions, } from "./extension-command-options.js";
|
|
23
23
|
import { attachRichHelpText } from "./help-content.js";
|
|
24
24
|
import { extractProvidedOptionFlags, normalizeLongOptionFlag, renderPmCommand, } from "./argv-utils.js";
|
|
25
25
|
import { classifyCommanderError, classifyPmCliError, classifyUnknownError, formatPmCliErrorForDisplay, formatPmCliErrorForJson, formatUnknownErrorForJson, } from "./error-guidance.js";
|
|
26
26
|
import { applyDefaultOutputFormat, clearResolvedGlobalOptions, collect, formatHookWarnings, getCommandPath, getGlobalOptions, invalidateSearchCachesForMutation, setResolvedGlobalOptions, } from "./registration-helpers.js";
|
|
27
|
+
import { createLazyModule } from "../core/shared/lazy-module.js";
|
|
27
28
|
import { normalizeExtensionCommandPath, collectDynamicExtensionFlagHelpByCommand, collectExtensionCommandHelpDescriptors, applyDynamicExtensionArguments, buildDynamicExtensionCommandMetadataHelp, findCommandByPath, ensureCommandPath, } from "./extension-command-help.js";
|
|
28
29
|
import { parseBootstrapGlobalOptions, applyBootstrapPagerPolicy, parseBootstrapHelpRequest, parseBootstrapCommandName, normalizeBootstrapInvocation, } from "./bootstrap-args.js";
|
|
29
30
|
import { collectMandatoryMigrationBlockers, enforceMandatoryMigrationWriteGate, enforceItemFormatWriteGateAndPreflightMigration, resolveMigrationId, resolveNormalizedMigrationStatus, } from "./migration-gates.js";
|
|
@@ -56,26 +57,10 @@ const TELEMETRY_RESOLUTION_STAGE_SET = new Set(["parse", "preflight", "execute",
|
|
|
56
57
|
const TELEMETRY_ERROR_CATEGORY_SET = new Set(["usage", "validation", "conflict", "runtime", "unknown"]);
|
|
57
58
|
let runtimeExtensionSnapshotCache = null;
|
|
58
59
|
let activeRuntimeExtensionCommandDescriptors = new Map();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
async function loadSetupRegistrationModule() {
|
|
64
|
-
setupRegistrationModulePromise ??= import("./register-setup.js");
|
|
65
|
-
return setupRegistrationModulePromise;
|
|
66
|
-
}
|
|
67
|
-
async function loadListQueryRegistrationModule() {
|
|
68
|
-
listQueryRegistrationModulePromise ??= import("./register-list-query.js");
|
|
69
|
-
return listQueryRegistrationModulePromise;
|
|
70
|
-
}
|
|
71
|
-
async function loadMutationRegistrationModule() {
|
|
72
|
-
mutationRegistrationModulePromise ??= import("./register-mutation.js");
|
|
73
|
-
return mutationRegistrationModulePromise;
|
|
74
|
-
}
|
|
75
|
-
async function loadOperationRegistrationModule() {
|
|
76
|
-
operationRegistrationModulePromise ??= import("./register-operations.js");
|
|
77
|
-
return operationRegistrationModulePromise;
|
|
78
|
-
}
|
|
60
|
+
const loadSetupRegistrationModule = createLazyModule(() => import("./register-setup.js"));
|
|
61
|
+
const loadListQueryRegistrationModule = createLazyModule(() => import("./register-list-query.js"));
|
|
62
|
+
const loadMutationRegistrationModule = createLazyModule(() => import("./register-mutation.js"));
|
|
63
|
+
const loadOperationRegistrationModule = createLazyModule(() => import("./register-operations.js"));
|
|
79
64
|
function describeUnknownError(error) {
|
|
80
65
|
if (error instanceof PmCliError) {
|
|
81
66
|
return error.message;
|
|
@@ -100,10 +85,10 @@ function buildPmCliRecoveryContext(context, invocationArgv, rawMessage) {
|
|
|
100
85
|
const attemptedCommand = renderAttemptedCommand(invocationArgv);
|
|
101
86
|
const providedFields = extractProvidedOptionFlags(invocationArgv);
|
|
102
87
|
const providedSet = new Set(providedFields.map((flag) => normalizeLongOptionFlag(flag) ?? flag));
|
|
103
|
-
const
|
|
88
|
+
const existingRecovery = context?.recovery;
|
|
89
|
+
const rawInferred = existingRecovery?.suggested_retry ? undefined : inferMissingFieldsFromErrorMessage(rawMessage);
|
|
104
90
|
const trulyMissing = rawInferred?.filter((flag) => !providedSet.has(normalizeLongOptionFlag(flag) ?? flag));
|
|
105
91
|
const inferredMissing = trulyMissing && trulyMissing.length > 0 ? trulyMissing : undefined;
|
|
106
|
-
const existingRecovery = context?.recovery;
|
|
107
92
|
let suggestedRetry = existingRecovery?.suggested_retry;
|
|
108
93
|
if (!suggestedRetry && inferredMissing && inferredMissing.length > 0) {
|
|
109
94
|
const missingFlag = inferredMissing[0];
|
|
@@ -334,6 +319,9 @@ function extractCommandScopedOptions(command, commandArgs, extensionFlagDefiniti
|
|
|
334
319
|
delete scoped.profile;
|
|
335
320
|
delete scoped.pager;
|
|
336
321
|
const looseOptions = parseLooseCommandOptions(commandArgs);
|
|
322
|
+
if (extensionFlagDefinitions.length > 0) {
|
|
323
|
+
validateLooseCommandOptionsWithFlagDefinitions(looseOptions, extensionFlagDefinitions, getCommandPath(command));
|
|
324
|
+
}
|
|
337
325
|
for (const [key, value] of Object.entries(looseOptions)) {
|
|
338
326
|
if (scoped[key] === undefined) {
|
|
339
327
|
scoped[key] = value;
|
|
@@ -353,6 +341,22 @@ function collectExtensionFlagDefinitionsForCommand(registrations, commandPath) {
|
|
|
353
341
|
.filter((entry) => normalizeExtensionCommandPath(entry.target_command) === normalizedCommandPath)
|
|
354
342
|
.flatMap((entry) => entry.flags);
|
|
355
343
|
}
|
|
344
|
+
function collectExtensionFlagDefinitionsForInvocation(registrations, commandPath, commandArgs) {
|
|
345
|
+
const exact = collectExtensionFlagDefinitionsForCommand(registrations, commandPath);
|
|
346
|
+
const pathParts = [commandPath];
|
|
347
|
+
let nestedMatch = [];
|
|
348
|
+
for (const arg of commandArgs) {
|
|
349
|
+
if (arg.startsWith("-")) {
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
pathParts.push(arg);
|
|
353
|
+
const nested = collectExtensionFlagDefinitionsForCommand(registrations, pathParts.join(" "));
|
|
354
|
+
if (nested.length > 0) {
|
|
355
|
+
nestedMatch = nested;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return nestedMatch.length > 0 ? nestedMatch : exact;
|
|
359
|
+
}
|
|
356
360
|
const RUNTIME_FIELD_COMMAND_BY_COMMAND_PATH = {
|
|
357
361
|
create: "create",
|
|
358
362
|
update: "update",
|
|
@@ -684,7 +688,7 @@ function wrapProgramActionsForExtensionHandlers(rootProgram) {
|
|
|
684
688
|
let commandArgs = actionCommand.args.map(String);
|
|
685
689
|
const activeRegistrations = getActiveExtensionRegistrations();
|
|
686
690
|
const extensionFlagDefinitions = activeRegistrations
|
|
687
|
-
?
|
|
691
|
+
? collectExtensionFlagDefinitionsForInvocation(activeRegistrations, commandPath, commandArgs)
|
|
688
692
|
: [];
|
|
689
693
|
const runtimeFieldFlagDefinitions = await collectRuntimeFieldLooseFlagDefinitionsForCommand(commandPath, pmRoot);
|
|
690
694
|
let commandOptions = extractCommandScopedOptions(actionCommand, commandArgs, [
|
|
@@ -816,10 +820,12 @@ async function registerDynamicExtensionCommandPaths(rootProgram, invocationArgv)
|
|
|
816
820
|
dynamicCommand
|
|
817
821
|
.allowUnknownOption(true)
|
|
818
822
|
.allowExcessArguments(true)
|
|
819
|
-
.action(async (
|
|
823
|
+
.action(async (...actionArgs) => {
|
|
824
|
+
const maybeCommand = actionArgs[actionArgs.length - 1];
|
|
825
|
+
const command = maybeCommand instanceof Command ? maybeCommand : dynamicCommand;
|
|
820
826
|
const globalOptions = getGlobalOptions(command);
|
|
821
827
|
const startedAt = Date.now();
|
|
822
|
-
const extensionFlagDefinitions =
|
|
828
|
+
const extensionFlagDefinitions = collectExtensionFlagDefinitionsForInvocation(snapshot.registrations, commandPath, command.args.map(String));
|
|
823
829
|
const scopedOptions = extractCommandScopedOptions(command, command.args.map(String), extensionFlagDefinitions);
|
|
824
830
|
const result = await runRequiredExtensionCommand(command, scopedOptions, globalOptions);
|
|
825
831
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
@@ -908,7 +914,7 @@ program.hook("preAction", async (_thisCommand, actionCommand) => {
|
|
|
908
914
|
setActiveExtensionServices(runtimeExtensions.services);
|
|
909
915
|
setActiveExtensionRenderers(runtimeExtensions.renderers);
|
|
910
916
|
setActiveExtensionRegistrations(runtimeExtensions.registrations);
|
|
911
|
-
const extensionFlagDefinitions =
|
|
917
|
+
const extensionFlagDefinitions = collectExtensionFlagDefinitionsForInvocation(runtimeExtensions.registrations, commandPath, commandArgs);
|
|
912
918
|
commandOptions = extractCommandScopedOptions(actionCommand, commandArgs, extensionFlagDefinitions);
|
|
913
919
|
const parserOverride = await runActiveParserOverride({
|
|
914
920
|
command: commandPath,
|
|
@@ -1523,4 +1529,4 @@ async function main() {
|
|
|
1523
1529
|
}
|
|
1524
1530
|
void main();
|
|
1525
1531
|
//# sourceMappingURL=main.js.map
|
|
1526
|
-
//# debugId=
|
|
1532
|
+
//# debugId=bb46ecaf-3f2f-526b-b6fa-4d87511ede62
|