@unbrained/pm-cli 2026.5.6 → 2026.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/.agents/pm/extensions/.managed-extensions.json +2 -2
  2. package/.agents/pm/extensions/beads/runtime.js +4 -4
  3. package/.agents/pm/extensions/beads/runtime.ts +5 -5
  4. package/.agents/pm/extensions/todos/runtime.js +7 -7
  5. package/.agents/pm/extensions/todos/runtime.ts +10 -10
  6. package/.agents/skills/HARNESS_COMPATIBILITY.md +45 -0
  7. package/.agents/skills/README.md +21 -0
  8. package/.agents/skills/pm-developer/SKILL.md +73 -0
  9. package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +48 -0
  10. package/.agents/skills/pm-developer/references/PROMPTS.md +17 -0
  11. package/.agents/skills/pm-extensions/SKILL.md +57 -0
  12. package/.agents/skills/pm-extensions/references/LIFECYCLE.md +40 -0
  13. package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +25 -0
  14. package/.agents/skills/pm-sdk/SKILL.md +50 -0
  15. package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +31 -0
  16. package/.agents/skills/pm-sdk/references/PROMPTS.md +13 -0
  17. package/.agents/skills/pm-user/SKILL.md +59 -0
  18. package/.agents/skills/pm-user/references/PROMPTS.md +17 -0
  19. package/.agents/skills/pm-user/references/WORKFLOWS.md +35 -0
  20. package/.claude-plugin/marketplace.json +38 -0
  21. package/.pi/README.md +26 -0
  22. package/.pi/extensions/pm-cli/index.js +147 -0
  23. package/.pi/prompts/pm-workflow.md +5 -0
  24. package/.pi/skills/pm-native/SKILL.md +40 -0
  25. package/.pi/skills/pm-release/SKILL.md +35 -0
  26. package/AGENTS.md +1 -1
  27. package/CHANGELOG.md +6 -0
  28. package/PRD.md +16 -16
  29. package/README.md +22 -4
  30. package/dist/cli/commands/claim.js +6 -6
  31. package/dist/cli/commands/claim.js.map +1 -1
  32. package/dist/cli/commands/close.js +9 -9
  33. package/dist/cli/commands/close.js.map +1 -1
  34. package/dist/cli/commands/comments.d.ts +2 -0
  35. package/dist/cli/commands/comments.js +57 -8
  36. package/dist/cli/commands/comments.js.map +1 -1
  37. package/dist/cli/commands/completion.js +33 -4
  38. package/dist/cli/commands/completion.js.map +1 -1
  39. package/dist/cli/commands/config.js +6 -3
  40. package/dist/cli/commands/config.js.map +1 -1
  41. package/dist/cli/commands/contracts.js +4 -1
  42. package/dist/cli/commands/contracts.js.map +1 -1
  43. package/dist/cli/commands/create.d.ts +2 -2
  44. package/dist/cli/commands/create.js +4 -4
  45. package/dist/cli/commands/create.js.map +1 -1
  46. package/dist/cli/commands/docs.js +4 -4
  47. package/dist/cli/commands/docs.js.map +1 -1
  48. package/dist/cli/commands/files.js +10 -10
  49. package/dist/cli/commands/files.js.map +1 -1
  50. package/dist/cli/commands/get.js +5 -5
  51. package/dist/cli/commands/get.js.map +1 -1
  52. package/dist/cli/commands/guide.d.ts +55 -0
  53. package/dist/cli/commands/guide.js +260 -0
  54. package/dist/cli/commands/guide.js.map +1 -0
  55. package/dist/cli/commands/health.js +1 -1
  56. package/dist/cli/commands/health.js.map +1 -1
  57. package/dist/cli/commands/history.js +30 -10
  58. package/dist/cli/commands/history.js.map +1 -1
  59. package/dist/cli/commands/index.d.ts +1 -0
  60. package/dist/cli/commands/index.js +1 -0
  61. package/dist/cli/commands/index.js.map +1 -1
  62. package/dist/cli/commands/learnings.js +3 -3
  63. package/dist/cli/commands/learnings.js.map +1 -1
  64. package/dist/cli/commands/notes.js +3 -3
  65. package/dist/cli/commands/notes.js.map +1 -1
  66. package/dist/cli/commands/reindex.js +18 -32
  67. package/dist/cli/commands/reindex.js.map +1 -1
  68. package/dist/cli/commands/restore.d.ts +2 -2
  69. package/dist/cli/commands/restore.js +44 -24
  70. package/dist/cli/commands/restore.js.map +1 -1
  71. package/dist/cli/commands/search.d.ts +2 -0
  72. package/dist/cli/commands/search.js +30 -21
  73. package/dist/cli/commands/search.js.map +1 -1
  74. package/dist/cli/commands/test-all.d.ts +2 -0
  75. package/dist/cli/commands/test-all.js +2 -0
  76. package/dist/cli/commands/test-all.js.map +1 -1
  77. package/dist/cli/commands/test.d.ts +1 -0
  78. package/dist/cli/commands/test.js +4 -3
  79. package/dist/cli/commands/test.js.map +1 -1
  80. package/dist/cli/commands/update.js +118 -118
  81. package/dist/cli/commands/update.js.map +1 -1
  82. package/dist/cli/commands/validate.js +1 -1
  83. package/dist/cli/commands/validate.js.map +1 -1
  84. package/dist/cli/guide-topics.d.ts +25 -0
  85. package/dist/cli/guide-topics.js +283 -0
  86. package/dist/cli/guide-topics.js.map +1 -0
  87. package/dist/cli/help-content.js +25 -1
  88. package/dist/cli/help-content.js.map +1 -1
  89. package/dist/cli/register-list-query.js +38 -1
  90. package/dist/cli/register-list-query.js.map +1 -1
  91. package/dist/cli/register-mutation.js +17 -4
  92. package/dist/cli/register-mutation.js.map +1 -1
  93. package/dist/cli/register-setup.js +1 -1
  94. package/dist/cli/register-setup.js.map +1 -1
  95. package/dist/core/history/history.js +32 -11
  96. package/dist/core/history/history.js.map +1 -1
  97. package/dist/core/item/item-format.d.ts +2 -2
  98. package/dist/core/item/item-format.js +16 -16
  99. package/dist/core/item/item-format.js.map +1 -1
  100. package/dist/core/schema/runtime-field-filters.js +1 -1
  101. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  102. package/dist/core/schema/runtime-field-values.js +2 -2
  103. package/dist/core/schema/runtime-field-values.js.map +1 -1
  104. package/dist/core/schema/runtime-schema.d.ts +1 -1
  105. package/dist/core/schema/runtime-schema.js +3 -3
  106. package/dist/core/schema/runtime-schema.js.map +1 -1
  107. package/dist/core/search/cache.js +7 -21
  108. package/dist/core/search/cache.js.map +1 -1
  109. package/dist/core/search/corpus.d.ts +13 -0
  110. package/dist/core/search/corpus.js +74 -0
  111. package/dist/core/search/corpus.js.map +1 -0
  112. package/dist/core/search/embedding-batches.js +90 -30
  113. package/dist/core/search/embedding-batches.js.map +1 -1
  114. package/dist/core/sentry/instrument.d.ts +3 -1
  115. package/dist/core/sentry/instrument.js +93 -9
  116. package/dist/core/sentry/instrument.js.map +1 -1
  117. package/dist/core/shared/constants.d.ts +1 -1
  118. package/dist/core/shared/constants.js +1 -1
  119. package/dist/core/shared/constants.js.map +1 -1
  120. package/dist/core/store/front-matter-cache.d.ts +1 -1
  121. package/dist/core/store/front-matter-cache.js +13 -13
  122. package/dist/core/store/front-matter-cache.js.map +1 -1
  123. package/dist/core/store/item-format-migration.js +5 -2
  124. package/dist/core/store/item-format-migration.js.map +1 -1
  125. package/dist/core/store/item-store.js +16 -15
  126. package/dist/core/store/item-store.js.map +1 -1
  127. package/dist/core/store/paths.js +1 -1
  128. package/dist/core/store/paths.js.map +1 -1
  129. package/dist/core/store/settings.js +6 -1
  130. package/dist/core/store/settings.js.map +1 -1
  131. package/dist/core/test/item-test-run-tracking.js +2 -2
  132. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  133. package/dist/mcp/server.d.ts +2 -0
  134. package/dist/mcp/server.js +405 -0
  135. package/dist/mcp/server.js.map +1 -0
  136. package/dist/pi/native.d.ts +5 -0
  137. package/dist/pi/native.js +183 -0
  138. package/dist/pi/native.js.map +1 -0
  139. package/dist/sdk/cli-contracts.d.ts +3 -1
  140. package/dist/sdk/cli-contracts.js +67 -2
  141. package/dist/sdk/cli-contracts.js.map +1 -1
  142. package/dist/types.d.ts +10 -2
  143. package/dist/types.js.map +1 -1
  144. package/docs/AGENT_GUIDE.md +15 -0
  145. package/docs/ARCHITECTURE.md +2 -2
  146. package/docs/CLAUDE_CODE_PLUGIN.md +186 -0
  147. package/docs/CODEX_PLUGIN.md +33 -0
  148. package/docs/COMMANDS.md +6 -2
  149. package/docs/CONFIGURATION.md +2 -8
  150. package/docs/EXTENSIONS.md +1 -0
  151. package/docs/PI_PACKAGE.md +56 -0
  152. package/docs/QUICKSTART.md +1 -0
  153. package/docs/README.md +30 -1
  154. package/docs/RELEASING.md +4 -2
  155. package/docs/SDK.md +3 -2
  156. package/marketplace.json +34 -0
  157. package/package.json +38 -4
  158. package/plugins/pm-cli-claude/.claude-plugin/plugin.json +23 -0
  159. package/plugins/pm-cli-claude/.mcp.json +12 -0
  160. package/plugins/pm-cli-claude/README.md +184 -0
  161. package/plugins/pm-cli-claude/agents/pm-coordinator.md +48 -0
  162. package/plugins/pm-cli-claude/commands/pm-audit.md +39 -0
  163. package/plugins/pm-cli-claude/commands/pm-calendar.md +41 -0
  164. package/plugins/pm-cli-claude/commands/pm-close-task.md +20 -0
  165. package/plugins/pm-cli-claude/commands/pm-developer.md +38 -0
  166. package/plugins/pm-cli-claude/commands/pm-init.md +44 -0
  167. package/plugins/pm-cli-claude/commands/pm-list.md +39 -0
  168. package/plugins/pm-cli-claude/commands/pm-new.md +36 -0
  169. package/plugins/pm-cli-claude/commands/pm-planner.md +51 -0
  170. package/plugins/pm-cli-claude/commands/pm-release.md +41 -0
  171. package/plugins/pm-cli-claude/commands/pm-search.md +21 -0
  172. package/plugins/pm-cli-claude/commands/pm-start-task.md +27 -0
  173. package/plugins/pm-cli-claude/commands/pm-status.md +15 -0
  174. package/plugins/pm-cli-claude/commands/pm-triage.md +35 -0
  175. package/plugins/pm-cli-claude/commands/pm-workflow.md +49 -0
  176. package/plugins/pm-cli-claude/hooks/hooks.json +17 -0
  177. package/plugins/pm-cli-claude/hooks/session-start.mjs +55 -0
  178. package/plugins/pm-cli-claude/scripts/pm-mcp-server.mjs +60 -0
  179. package/plugins/pm-cli-claude/skills/pm-audit/SKILL.md +88 -0
  180. package/plugins/pm-cli-claude/skills/pm-developer/SKILL.md +116 -0
  181. package/plugins/pm-cli-claude/skills/pm-planner/SKILL.md +118 -0
  182. package/plugins/pm-cli-claude/skills/pm-release/SKILL.md +83 -0
  183. package/plugins/pm-cli-claude/skills/pm-workflow/SKILL.md +148 -0
  184. package/plugins/pm-cli-codex/.codex-plugin/plugin.json +45 -0
  185. package/plugins/pm-cli-codex/.mcp.json +14 -0
  186. package/plugins/pm-cli-codex/README.md +30 -0
  187. package/plugins/pm-cli-codex/assets/pm-cli-small.svg +4 -0
  188. package/plugins/pm-cli-codex/commands/pm-audit.md +8 -0
  189. package/plugins/pm-cli-codex/commands/pm-close-task.md +9 -0
  190. package/plugins/pm-cli-codex/commands/pm-start-task.md +9 -0
  191. package/plugins/pm-cli-codex/scripts/pm-mcp-server.mjs +54 -0
  192. package/plugins/pm-cli-codex/skills/pm-auditor/SKILL.md +21 -0
  193. package/plugins/pm-cli-codex/skills/pm-auditor/agents/openai.yaml +6 -0
  194. package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +57 -0
  195. package/plugins/pm-cli-codex/skills/pm-native/agents/openai.yaml +6 -0
  196. package/plugins/pm-cli-codex/skills/pm-release/SKILL.md +19 -0
  197. package/plugins/pm-cli-codex/skills/pm-release/agents/openai.yaml +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"register-setup.js","sourceRoot":"/","sources":["cli/register-setup.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Command } from \"commander\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport {\n runConfig,\n runExtension,\n runInit,\n runTemplatesList,\n runTemplatesSave,\n runTemplatesShow,\n} from \"./commands/index.js\";\nimport {\n collect,\n getGlobalOptions,\n normalizeCreateOptions,\n printError,\n printResult,\n} from \"./registration-helpers.js\";\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"doctor\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\nfunction normalizeExtensionOptions(\n options: Record<string, unknown>,\n forcedAction?: ExtensionSubcommandAction,\n): Record<string, unknown> {\n const isForcedAction = (action: ExtensionSubcommandAction): boolean => forcedAction === action;\n const readBoolean = (...keys: string[]): boolean => keys.some((key) => options[key] === true);\n const readString = (...keys: string[]): string | undefined => {\n for (const key of keys) {\n if (typeof options[key] === \"string\") {\n return options[key] as string;\n }\n }\n return undefined;\n };\n return {\n init: isForcedAction(\"init\") || readBoolean(\"init\"),\n scaffold: readBoolean(\"scaffold\"),\n install: isForcedAction(\"install\") || readBoolean(\"install\"),\n uninstall: isForcedAction(\"uninstall\") || readBoolean(\"uninstall\"),\n explore: isForcedAction(\"explore\") || readBoolean(\"explore\"),\n manage: isForcedAction(\"manage\") || readBoolean(\"manage\"),\n doctor: isForcedAction(\"doctor\") || readBoolean(\"doctor\"),\n adopt: isForcedAction(\"adopt\") || readBoolean(\"adopt\"),\n adoptAll: isForcedAction(\"adopt-all\") || readBoolean(\"adoptAll\", \"adopt_all\", \"adopt-all\"),\n activate: isForcedAction(\"activate\") || readBoolean(\"activate\"),\n deactivate: isForcedAction(\"deactivate\") || readBoolean(\"deactivate\"),\n project: readBoolean(\"project\"),\n local: readBoolean(\"local\"),\n global: readBoolean(\"global\"),\n gh: readString(\"gh\"),\n github: readString(\"github\"),\n ref: readString(\"ref\"),\n detail: readString(\"detail\"),\n trace: readBoolean(\"trace\"),\n runtimeProbe: readBoolean(\"runtimeProbe\", \"runtime_probe\", \"runtime-probe\"),\n fixManagedState: readBoolean(\"fixManagedState\", \"fix_managed_state\", \"fix-managed-state\"),\n strictExit: readBoolean(\"strictExit\", \"strict_exit\", \"strict-exit\"),\n failOnWarn: readBoolean(\"failOnWarn\", \"fail_on_warn\", \"fail-on-warn\"),\n };\n}\n\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\n\nasync function executeExtensionCommand(\n target: string | undefined,\n options: Record<string, unknown>,\n command: Command,\n forcedAction?: ExtensionSubcommandAction,\n): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalizedOptions = normalizeExtensionOptions(options, forcedAction);\n const result = await runExtension(target, normalizedOptions, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(normalizedOptions.strictExit) || Boolean(normalizedOptions.failOnWarn);\n if (result.action === \"doctor\" && strictExit) {\n const detailsRecord = result.details as Record<string, unknown>;\n const summary = (detailsRecord.summary ?? null) as Record<string, unknown> | null;\n const summaryStatus = summary && typeof summary.status === \"string\" ? summary.status : undefined;\n const shouldFail = summaryStatus ? summaryStatus !== \"ok\" : result.warnings.length > 0;\n if (shouldFail) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=extension took_ms=${Date.now() - startedAt}`);\n }\n}\n\nfunction addExtensionScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\");\n}\n\nexport function registerSetupCommands(program: Command): void {\n program\n .command(\"init\")\n .argument(\"[prefix]\", \"Optional id prefix\")\n .option(\"--preset <value>\", \"Governance preset for new setups: minimal|default|strict\")\n .description(\"Initialize pm storage and defaults for the current workspace.\")\n .action(async (prefix: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runInit(\n prefix,\n globalOptions,\n {\n preset: typeof options.preset === \"string\" ? options.preset : undefined,\n },\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=init took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"config\")\n .argument(\"<scope>\", \"Config scope: project|global\")\n .argument(\"<action>\", \"Config action: get|set|list|export\")\n .argument(\n \"[key]\",\n \"Config key for get|set: definition-of-done|item-format|history-missing-stream-policy|sprint-release-format-policy|parent-reference-policy|metadata-validation-profile|metadata-required-fields|lifecycle-stale-blocker-reason-patterns|lifecycle-closure-like-blocked-reason-patterns|lifecycle-closure-like-resolution-patterns|lifecycle-closure-like-actual-result-patterns|governance-preset|governance-ownership-enforcement|governance-create-mode-default|governance-close-validation-default|governance-parent-reference-policy|governance-metadata-validation-profile|governance-force-required-for-stale-lock|test-result-tracking|telemetry-tracking|context\",\n )\n .option(\n \"--criterion <text>\",\n \"Criteria value for definition-of-done, metadata-required-fields, or lifecycle pattern keys (repeatable for set)\",\n collect,\n )\n .option(\"--clear-criteria\", \"Clear criteria-list keys for config set operations\")\n .option(\"--format <value>\", \"Item format for item-format key: toon|json_markdown\")\n .option(\n \"--policy <value>\",\n \"Policy key values: history-missing-stream-policy=auto_create|strict_error; sprint-release-format-policy=warn|strict_error; parent-reference-policy=warn|strict_error; governance-preset=minimal|default|strict|custom; governance-ownership-enforcement=none|warn|strict; governance-create-mode-default=progressive|strict; governance-close-validation-default=off|warn|strict; governance-parent-reference-policy=warn|strict_error; governance-metadata-validation-profile=core|strict|custom; governance-force-required-for-stale-lock=enabled|disabled; test-result-tracking=enabled|disabled; telemetry-tracking=enabled|disabled\",\n )\n .option(\"--default-depth <value>\", \"Context default depth: brief|standard|deep\")\n .option(\"--activity-limit <n>\", \"Context default activity limit\")\n .option(\"--stale-threshold-days <n>\", \"Context staleness cutoff in days\")\n .option(\"--section-hierarchy <value>\", \"Enable/disable context hierarchy section (true|false)\")\n .option(\"--section-activity <value>\", \"Enable/disable context activity section (true|false)\")\n .option(\"--section-progress <value>\", \"Enable/disable context progress section (true|false)\")\n .option(\"--section-blockers <value>\", \"Enable/disable context blockers section (true|false)\")\n .option(\"--section-files <value>\", \"Enable/disable context files section (true|false)\")\n .option(\"--section-workload <value>\", \"Enable/disable context workload section (true|false)\")\n .option(\"--section-staleness <value>\", \"Enable/disable context staleness section (true|false)\")\n .option(\"--section-tests <value>\", \"Enable/disable context tests section (true|false)\")\n .description(\"Read or update pm settings for the current workspace or global profile.\")\n .action(async (scope: string, action: string, key: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const criteria = Array.isArray(options.criterion) ? (options.criterion as string[]) : [];\n const result = await runConfig(\n scope,\n action,\n key,\n {\n criterion: criteria,\n format: typeof options.format === \"string\" ? options.format : undefined,\n policy: typeof options.policy === \"string\" ? options.policy : undefined,\n clearCriteria: options.clearCriteria === true,\n defaultDepth: typeof options.defaultDepth === \"string\" ? options.defaultDepth : undefined,\n activityLimit: typeof options.activityLimit === \"string\" ? options.activityLimit : undefined,\n staleThresholdDays: typeof options.staleThresholdDays === \"string\" ? options.staleThresholdDays : undefined,\n sectionHierarchy: typeof options.sectionHierarchy === \"string\" ? options.sectionHierarchy : undefined,\n sectionActivity: typeof options.sectionActivity === \"string\" ? options.sectionActivity : undefined,\n sectionProgress: typeof options.sectionProgress === \"string\" ? options.sectionProgress : undefined,\n sectionBlockers: typeof options.sectionBlockers === \"string\" ? options.sectionBlockers : undefined,\n sectionFiles: typeof options.sectionFiles === \"string\" ? options.sectionFiles : undefined,\n sectionWorkload: typeof options.sectionWorkload === \"string\" ? options.sectionWorkload : undefined,\n sectionStaleness: typeof options.sectionStaleness === \"string\" ? options.sectionStaleness : undefined,\n sectionTests: typeof options.sectionTests === \"string\" ? options.sectionTests : undefined,\n },\n globalOptions,\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=config took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const extensionCommand = program\n .command(\"extension\")\n .argument(\"[target]\", \"Extension source/name or scaffold target path (for --init/--scaffold)\")\n .option(\"--init\", \"Generate a starter extension scaffold at target path\")\n .option(\"--scaffold\", \"Alias for --init\")\n .option(\"--install\", \"Install extension from local path or GitHub source\")\n .option(\"--uninstall\", \"Uninstall an installed extension\")\n .option(\"--explore\", \"List discovered extensions in selected scope\")\n .option(\"--manage\", \"List managed extensions with update-check metadata\")\n .option(\"--doctor\", \"Run consolidated extension diagnostics (summary/deep modes)\")\n .option(\"--adopt\", \"Adopt an existing unmanaged extension into managed metadata\")\n .option(\"--adopt-all\", \"Adopt all unmanaged extensions into managed metadata\")\n .option(\"--activate\", \"Activate an extension in selected scope settings\")\n .option(\"--deactivate\", \"Deactivate an extension in selected scope settings\")\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\")\n .option(\"--gh <owner/repo[/path]>\", \"Install from GitHub shorthand source\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .option(\"--detail <mode>\", \"Detail mode for extension diagnostics (summary|deep)\")\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\"Manage extension lifecycle operations for project or global scope.\")\n .action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command);\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"init\")\n .alias(\"scaffold\")\n .argument(\"<target>\", \"Scaffold target directory path\")\n .description(\"Generate a starter extension scaffold with manifest and entrypoint.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"init\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"install\")\n .argument(\"[target]\", \"Extension source (local path or GitHub source)\")\n .option(\"--gh <owner/repo[/path]>\", \"Install from GitHub shorthand source\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(\"Install extension from local path or GitHub source.\"),\n ).action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"install\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"uninstall\").argument(\"<target>\", \"Extension name\").description(\"Uninstall an installed extension.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"uninstall\");\n });\n\n addExtensionScopeOptions(extensionCommand.command(\"explore\").description(\"List discovered extensions in selected scope.\")).action(\n async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"explore\");\n },\n );\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"manage\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .description(\"List managed extensions with update-check metadata.\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"manage\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"doctor\")\n .option(\"--detail <mode>\", \"Detail mode for extension diagnostics (summary|deep)\")\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\"Run consolidated extension diagnostics (summary/deep modes).\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"doctor\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"adopt\")\n .argument(\"<target>\", \"Extension name\")\n .option(\"--gh <owner/repo[/path]>\", \"GitHub provenance shorthand for adopted extension\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub shorthand source\")\n .description(\"Adopt an existing unmanaged extension into managed metadata.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"adopt\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"adopt-all\").description(\"Adopt all unmanaged extensions into managed metadata.\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"adopt-all\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"activate\").argument(\"<target>\", \"Extension name\").description(\"Activate an extension in selected scope settings.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"activate\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"deactivate\").argument(\"<target>\", \"Extension name\").description(\"Deactivate an extension in selected scope settings.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"deactivate\");\n });\n\n const templatesCommand = program\n .command(\"templates\")\n .description(\"Manage reusable create templates.\")\n .action(async () => {\n const globalOptions = program.opts<GlobalOptions>();\n const result = await runTemplatesList(globalOptions);\n printResult(result, globalOptions);\n });\n\n templatesCommand\n .command(\"save\")\n .argument(\"<name>\", \"Template name\")\n .option(\"--title, -t <value>\", \"Template default item title\")\n .option(\"--description, -d <value>\", \"Template default item description\")\n .option(\"--type <value>\", \"Template default item type\")\n .option(\"--status, -s <value>\", \"Template default item status\")\n .option(\"--priority, -p <value>\", \"Template default priority 0..4\")\n .option(\"--tags <value>\", \"Template default comma-separated tags\")\n .option(\"--body, -b <value>\", \"Template default item markdown body\")\n .option(\"--deadline <value>\", \"Template default deadline\")\n .option(\"--estimate, --estimated-minutes <value>\", \"Template default estimated minutes\")\n .option(\"--estimated_minutes <value>\", \"Alias for --estimated-minutes\")\n .option(\"--acceptance-criteria <value>\", \"Template default acceptance criteria\")\n .option(\"--acceptance_criteria <value>\", \"Alias for --acceptance-criteria\")\n .option(\"--ac <value>\", \"Alias for --acceptance-criteria\")\n .option(\"--definition-of-ready <value>\", \"Template default definition of ready\")\n .option(\"--definition_of_ready <value>\", \"Alias for --definition-of-ready\")\n .option(\"--order <value>\", \"Template default planning order/rank integer\")\n .option(\"--rank <value>\", \"Alias for --order\")\n .option(\"--goal <value>\", \"Template default goal identifier\")\n .option(\"--objective <value>\", \"Template default objective identifier\")\n .option(\"--value <value>\", \"Template default business value summary\")\n .option(\"--impact <value>\", \"Template default business impact summary\")\n .option(\"--outcome <value>\", \"Template default expected outcome summary\")\n .option(\"--why-now <value>\", \"Template default why-now rationale\")\n .option(\"--why_now <value>\", \"Alias for --why-now\")\n .option(\"--author <value>\", \"Template default mutation author\")\n .option(\"--message <value>\", \"Template default history message\")\n .option(\"--assignee <value>\", \"Template default assignee\")\n .option(\"--parent <value>\", \"Template default parent item ID\")\n .option(\"--reviewer <value>\", \"Template default reviewer\")\n .option(\"--risk <value>\", \"Template default risk level\")\n .option(\"--confidence <value>\", \"Template default confidence\")\n .option(\"--sprint <value>\", \"Template default sprint identifier\")\n .option(\"--release <value>\", \"Template default release identifier\")\n .option(\"--blocked-by <value>\", \"Template default blocked-by item ID or reason\")\n .option(\"--blocked_by <value>\", \"Alias for --blocked-by\")\n .option(\"--blocked-reason <value>\", \"Template default blocked reason\")\n .option(\"--blocked_reason <value>\", \"Alias for --blocked-reason\")\n .option(\"--unblock-note <value>\", \"Template default unblock rationale note\")\n .option(\"--unblock_note <value>\", \"Alias for --unblock-note\")\n .option(\"--reporter <value>\", \"Template default issue reporter\")\n .option(\"--severity <value>\", \"Template default issue severity\")\n .option(\"--environment <value>\", \"Template default issue environment context\")\n .option(\"--repro-steps <value>\", \"Template default issue reproduction steps\")\n .option(\"--repro_steps <value>\", \"Alias for --repro-steps\")\n .option(\"--resolution <value>\", \"Template default issue resolution summary\")\n .option(\"--expected-result <value>\", \"Template default issue expected behavior\")\n .option(\"--expected_result <value>\", \"Alias for --expected-result\")\n .option(\"--actual-result <value>\", \"Template default issue observed behavior\")\n .option(\"--actual_result <value>\", \"Alias for --actual-result\")\n .option(\"--affected-version <value>\", \"Template default affected version identifier\")\n .option(\"--affected_version <value>\", \"Alias for --affected-version\")\n .option(\"--fixed-version <value>\", \"Template default fixed version identifier\")\n .option(\"--fixed_version <value>\", \"Alias for --fixed-version\")\n .option(\"--component <value>\", \"Template default issue component ownership\")\n .option(\"--regression <value>\", \"Template default regression marker\")\n .option(\"--customer-impact <value>\", \"Template default customer impact summary\")\n .option(\"--customer_impact <value>\", \"Alias for --customer-impact\")\n .option(\n \"--dep <value>\",\n \"Template default dependency entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--type-option <value>\",\n \"Template default type option entry (repeatable; key=value or markdown pairs; use - for stdin)\",\n collect,\n )\n .option(\"--type_option <value>\", \"Alias for --type-option\", collect)\n .option(\n \"--reminder <value>\",\n \"Template default reminder entry (repeatable; at=<iso|relative>,text=<text>)\",\n collect,\n )\n .option(\n \"--event <value>\",\n \"Template default event entry (repeatable; start/end/title/recur_* fields)\",\n collect,\n )\n .option(\n \"--comment <value>\",\n \"Template default comment seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--note <value>\",\n \"Template default note seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--learning <value>\",\n \"Template default learning seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--file <value>\",\n \"Template default linked file entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--test <value>\",\n \"Template default linked test entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--doc <value>\",\n \"Template default linked doc entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .description(\"Save or update a named create template.\")\n .action(async (name: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalized = normalizeCreateOptions(options, { requireType: false }) as unknown as Record<string, unknown>;\n const result = await runTemplatesSave(name, normalized, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates save took_ms=${Date.now() - startedAt}`);\n }\n });\n\n templatesCommand\n .command(\"list\")\n .description(\"List saved create templates.\")\n .action(async (_options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTemplatesList(globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates list took_ms=${Date.now() - startedAt}`);\n }\n });\n\n templatesCommand\n .command(\"show\")\n .argument(\"<name>\", \"Template name\")\n .description(\"Show saved create template details.\")\n .action(async (name: string, _options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTemplatesShow(name, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates show took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n"]}
1
+ {"version":3,"file":"register-setup.js","sourceRoot":"/","sources":["cli/register-setup.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Command } from \"commander\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport {\n runConfig,\n runExtension,\n runInit,\n runTemplatesList,\n runTemplatesSave,\n runTemplatesShow,\n} from \"./commands/index.js\";\nimport {\n collect,\n getGlobalOptions,\n normalizeCreateOptions,\n printError,\n printResult,\n} from \"./registration-helpers.js\";\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"doctor\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\nfunction normalizeExtensionOptions(\n options: Record<string, unknown>,\n forcedAction?: ExtensionSubcommandAction,\n): Record<string, unknown> {\n const isForcedAction = (action: ExtensionSubcommandAction): boolean => forcedAction === action;\n const readBoolean = (...keys: string[]): boolean => keys.some((key) => options[key] === true);\n const readString = (...keys: string[]): string | undefined => {\n for (const key of keys) {\n if (typeof options[key] === \"string\") {\n return options[key] as string;\n }\n }\n return undefined;\n };\n return {\n init: isForcedAction(\"init\") || readBoolean(\"init\"),\n scaffold: readBoolean(\"scaffold\"),\n install: isForcedAction(\"install\") || readBoolean(\"install\"),\n uninstall: isForcedAction(\"uninstall\") || readBoolean(\"uninstall\"),\n explore: isForcedAction(\"explore\") || readBoolean(\"explore\"),\n manage: isForcedAction(\"manage\") || readBoolean(\"manage\"),\n doctor: isForcedAction(\"doctor\") || readBoolean(\"doctor\"),\n adopt: isForcedAction(\"adopt\") || readBoolean(\"adopt\"),\n adoptAll: isForcedAction(\"adopt-all\") || readBoolean(\"adoptAll\", \"adopt_all\", \"adopt-all\"),\n activate: isForcedAction(\"activate\") || readBoolean(\"activate\"),\n deactivate: isForcedAction(\"deactivate\") || readBoolean(\"deactivate\"),\n project: readBoolean(\"project\"),\n local: readBoolean(\"local\"),\n global: readBoolean(\"global\"),\n gh: readString(\"gh\"),\n github: readString(\"github\"),\n ref: readString(\"ref\"),\n detail: readString(\"detail\"),\n trace: readBoolean(\"trace\"),\n runtimeProbe: readBoolean(\"runtimeProbe\", \"runtime_probe\", \"runtime-probe\"),\n fixManagedState: readBoolean(\"fixManagedState\", \"fix_managed_state\", \"fix-managed-state\"),\n strictExit: readBoolean(\"strictExit\", \"strict_exit\", \"strict-exit\"),\n failOnWarn: readBoolean(\"failOnWarn\", \"fail_on_warn\", \"fail-on-warn\"),\n };\n}\n\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\n\nasync function executeExtensionCommand(\n target: string | undefined,\n options: Record<string, unknown>,\n command: Command,\n forcedAction?: ExtensionSubcommandAction,\n): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalizedOptions = normalizeExtensionOptions(options, forcedAction);\n const result = await runExtension(target, normalizedOptions, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(normalizedOptions.strictExit) || Boolean(normalizedOptions.failOnWarn);\n if (result.action === \"doctor\" && strictExit) {\n const detailsRecord = result.details as Record<string, unknown>;\n const summary = (detailsRecord.summary ?? null) as Record<string, unknown> | null;\n const summaryStatus = summary && typeof summary.status === \"string\" ? summary.status : undefined;\n const shouldFail = summaryStatus ? summaryStatus !== \"ok\" : result.warnings.length > 0;\n if (shouldFail) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=extension took_ms=${Date.now() - startedAt}`);\n }\n}\n\nfunction addExtensionScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\");\n}\n\nexport function registerSetupCommands(program: Command): void {\n program\n .command(\"init\")\n .argument(\"[prefix]\", \"Optional id prefix\")\n .option(\"--preset <value>\", \"Governance preset for new setups: minimal|default|strict\")\n .description(\"Initialize pm storage and defaults for the current workspace.\")\n .action(async (prefix: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runInit(\n prefix,\n globalOptions,\n {\n preset: typeof options.preset === \"string\" ? options.preset : undefined,\n },\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=init took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"config\")\n .argument(\"<scope>\", \"Config scope: project|global\")\n .argument(\"<action>\", \"Config action: get|set|list|export\")\n .argument(\n \"[key]\",\n \"Config key for get|set: definition-of-done|item-format|history-missing-stream-policy|sprint-release-format-policy|parent-reference-policy|metadata-validation-profile|metadata-required-fields|lifecycle-stale-blocker-reason-patterns|lifecycle-closure-like-blocked-reason-patterns|lifecycle-closure-like-resolution-patterns|lifecycle-closure-like-actual-result-patterns|governance-preset|governance-ownership-enforcement|governance-create-mode-default|governance-close-validation-default|governance-parent-reference-policy|governance-metadata-validation-profile|governance-force-required-for-stale-lock|test-result-tracking|telemetry-tracking|context\",\n )\n .option(\n \"--criterion <text>\",\n \"Criteria value for definition-of-done, metadata-required-fields, or lifecycle pattern keys (repeatable for set)\",\n collect,\n )\n .option(\"--clear-criteria\", \"Clear criteria-list keys for config set operations\")\n .option(\"--format <value>\", \"Item format for item-format key: toon\")\n .option(\n \"--policy <value>\",\n \"Policy key values: history-missing-stream-policy=auto_create|strict_error; sprint-release-format-policy=warn|strict_error; parent-reference-policy=warn|strict_error; governance-preset=minimal|default|strict|custom; governance-ownership-enforcement=none|warn|strict; governance-create-mode-default=progressive|strict; governance-close-validation-default=off|warn|strict; governance-parent-reference-policy=warn|strict_error; governance-metadata-validation-profile=core|strict|custom; governance-force-required-for-stale-lock=enabled|disabled; test-result-tracking=enabled|disabled; telemetry-tracking=enabled|disabled\",\n )\n .option(\"--default-depth <value>\", \"Context default depth: brief|standard|deep\")\n .option(\"--activity-limit <n>\", \"Context default activity limit\")\n .option(\"--stale-threshold-days <n>\", \"Context staleness cutoff in days\")\n .option(\"--section-hierarchy <value>\", \"Enable/disable context hierarchy section (true|false)\")\n .option(\"--section-activity <value>\", \"Enable/disable context activity section (true|false)\")\n .option(\"--section-progress <value>\", \"Enable/disable context progress section (true|false)\")\n .option(\"--section-blockers <value>\", \"Enable/disable context blockers section (true|false)\")\n .option(\"--section-files <value>\", \"Enable/disable context files section (true|false)\")\n .option(\"--section-workload <value>\", \"Enable/disable context workload section (true|false)\")\n .option(\"--section-staleness <value>\", \"Enable/disable context staleness section (true|false)\")\n .option(\"--section-tests <value>\", \"Enable/disable context tests section (true|false)\")\n .description(\"Read or update pm settings for the current workspace or global profile.\")\n .action(async (scope: string, action: string, key: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const criteria = Array.isArray(options.criterion) ? (options.criterion as string[]) : [];\n const result = await runConfig(\n scope,\n action,\n key,\n {\n criterion: criteria,\n format: typeof options.format === \"string\" ? options.format : undefined,\n policy: typeof options.policy === \"string\" ? options.policy : undefined,\n clearCriteria: options.clearCriteria === true,\n defaultDepth: typeof options.defaultDepth === \"string\" ? options.defaultDepth : undefined,\n activityLimit: typeof options.activityLimit === \"string\" ? options.activityLimit : undefined,\n staleThresholdDays: typeof options.staleThresholdDays === \"string\" ? options.staleThresholdDays : undefined,\n sectionHierarchy: typeof options.sectionHierarchy === \"string\" ? options.sectionHierarchy : undefined,\n sectionActivity: typeof options.sectionActivity === \"string\" ? options.sectionActivity : undefined,\n sectionProgress: typeof options.sectionProgress === \"string\" ? options.sectionProgress : undefined,\n sectionBlockers: typeof options.sectionBlockers === \"string\" ? options.sectionBlockers : undefined,\n sectionFiles: typeof options.sectionFiles === \"string\" ? options.sectionFiles : undefined,\n sectionWorkload: typeof options.sectionWorkload === \"string\" ? options.sectionWorkload : undefined,\n sectionStaleness: typeof options.sectionStaleness === \"string\" ? options.sectionStaleness : undefined,\n sectionTests: typeof options.sectionTests === \"string\" ? options.sectionTests : undefined,\n },\n globalOptions,\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=config took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const extensionCommand = program\n .command(\"extension\")\n .argument(\"[target]\", \"Extension source/name or scaffold target path (for --init/--scaffold)\")\n .option(\"--init\", \"Generate a starter extension scaffold at target path\")\n .option(\"--scaffold\", \"Alias for --init\")\n .option(\"--install\", \"Install extension from local path or GitHub source\")\n .option(\"--uninstall\", \"Uninstall an installed extension\")\n .option(\"--explore\", \"List discovered extensions in selected scope\")\n .option(\"--manage\", \"List managed extensions with update-check metadata\")\n .option(\"--doctor\", \"Run consolidated extension diagnostics (summary/deep modes)\")\n .option(\"--adopt\", \"Adopt an existing unmanaged extension into managed metadata\")\n .option(\"--adopt-all\", \"Adopt all unmanaged extensions into managed metadata\")\n .option(\"--activate\", \"Activate an extension in selected scope settings\")\n .option(\"--deactivate\", \"Deactivate an extension in selected scope settings\")\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\")\n .option(\"--gh <owner/repo[/path]>\", \"Install from GitHub shorthand source\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .option(\"--detail <mode>\", \"Detail mode for extension diagnostics (summary|deep)\")\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\"Manage extension lifecycle operations for project or global scope.\")\n .action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command);\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"init\")\n .alias(\"scaffold\")\n .argument(\"<target>\", \"Scaffold target directory path\")\n .description(\"Generate a starter extension scaffold with manifest and entrypoint.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"init\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"install\")\n .argument(\"[target]\", \"Extension source (local path or GitHub source)\")\n .option(\"--gh <owner/repo[/path]>\", \"Install from GitHub shorthand source\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(\"Install extension from local path or GitHub source.\"),\n ).action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"install\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"uninstall\").argument(\"<target>\", \"Extension name\").description(\"Uninstall an installed extension.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"uninstall\");\n });\n\n addExtensionScopeOptions(extensionCommand.command(\"explore\").description(\"List discovered extensions in selected scope.\")).action(\n async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"explore\");\n },\n );\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"manage\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .description(\"List managed extensions with update-check metadata.\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"manage\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"doctor\")\n .option(\"--detail <mode>\", \"Detail mode for extension diagnostics (summary|deep)\")\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--fix-managed-state\", \"Adopt unmanaged extensions before diagnostics/update checks\")\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\"Run consolidated extension diagnostics (summary/deep modes).\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"doctor\");\n });\n\n addExtensionScopeOptions(\n extensionCommand\n .command(\"adopt\")\n .argument(\"<target>\", \"Extension name\")\n .option(\"--gh <owner/repo[/path]>\", \"GitHub provenance shorthand for adopted extension\")\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub shorthand source\")\n .description(\"Adopt an existing unmanaged extension into managed metadata.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"adopt\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"adopt-all\").description(\"Adopt all unmanaged extensions into managed metadata.\"),\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.opts() as Record<string, unknown>, command, \"adopt-all\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"activate\").argument(\"<target>\", \"Extension name\").description(\"Activate an extension in selected scope settings.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"activate\");\n });\n\n addExtensionScopeOptions(\n extensionCommand.command(\"deactivate\").argument(\"<target>\", \"Extension name\").description(\"Deactivate an extension in selected scope settings.\"),\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.opts() as Record<string, unknown>, command, \"deactivate\");\n });\n\n const templatesCommand = program\n .command(\"templates\")\n .description(\"Manage reusable create templates.\")\n .action(async () => {\n const globalOptions = program.opts<GlobalOptions>();\n const result = await runTemplatesList(globalOptions);\n printResult(result, globalOptions);\n });\n\n templatesCommand\n .command(\"save\")\n .argument(\"<name>\", \"Template name\")\n .option(\"--title, -t <value>\", \"Template default item title\")\n .option(\"--description, -d <value>\", \"Template default item description\")\n .option(\"--type <value>\", \"Template default item type\")\n .option(\"--status, -s <value>\", \"Template default item status\")\n .option(\"--priority, -p <value>\", \"Template default priority 0..4\")\n .option(\"--tags <value>\", \"Template default comma-separated tags\")\n .option(\"--body, -b <value>\", \"Template default item markdown body\")\n .option(\"--deadline <value>\", \"Template default deadline\")\n .option(\"--estimate, --estimated-minutes <value>\", \"Template default estimated minutes\")\n .option(\"--estimated_minutes <value>\", \"Alias for --estimated-minutes\")\n .option(\"--acceptance-criteria <value>\", \"Template default acceptance criteria\")\n .option(\"--acceptance_criteria <value>\", \"Alias for --acceptance-criteria\")\n .option(\"--ac <value>\", \"Alias for --acceptance-criteria\")\n .option(\"--definition-of-ready <value>\", \"Template default definition of ready\")\n .option(\"--definition_of_ready <value>\", \"Alias for --definition-of-ready\")\n .option(\"--order <value>\", \"Template default planning order/rank integer\")\n .option(\"--rank <value>\", \"Alias for --order\")\n .option(\"--goal <value>\", \"Template default goal identifier\")\n .option(\"--objective <value>\", \"Template default objective identifier\")\n .option(\"--value <value>\", \"Template default business value summary\")\n .option(\"--impact <value>\", \"Template default business impact summary\")\n .option(\"--outcome <value>\", \"Template default expected outcome summary\")\n .option(\"--why-now <value>\", \"Template default why-now rationale\")\n .option(\"--why_now <value>\", \"Alias for --why-now\")\n .option(\"--author <value>\", \"Template default mutation author\")\n .option(\"--message <value>\", \"Template default history message\")\n .option(\"--assignee <value>\", \"Template default assignee\")\n .option(\"--parent <value>\", \"Template default parent item ID\")\n .option(\"--reviewer <value>\", \"Template default reviewer\")\n .option(\"--risk <value>\", \"Template default risk level\")\n .option(\"--confidence <value>\", \"Template default confidence\")\n .option(\"--sprint <value>\", \"Template default sprint identifier\")\n .option(\"--release <value>\", \"Template default release identifier\")\n .option(\"--blocked-by <value>\", \"Template default blocked-by item ID or reason\")\n .option(\"--blocked_by <value>\", \"Alias for --blocked-by\")\n .option(\"--blocked-reason <value>\", \"Template default blocked reason\")\n .option(\"--blocked_reason <value>\", \"Alias for --blocked-reason\")\n .option(\"--unblock-note <value>\", \"Template default unblock rationale note\")\n .option(\"--unblock_note <value>\", \"Alias for --unblock-note\")\n .option(\"--reporter <value>\", \"Template default issue reporter\")\n .option(\"--severity <value>\", \"Template default issue severity\")\n .option(\"--environment <value>\", \"Template default issue environment context\")\n .option(\"--repro-steps <value>\", \"Template default issue reproduction steps\")\n .option(\"--repro_steps <value>\", \"Alias for --repro-steps\")\n .option(\"--resolution <value>\", \"Template default issue resolution summary\")\n .option(\"--expected-result <value>\", \"Template default issue expected behavior\")\n .option(\"--expected_result <value>\", \"Alias for --expected-result\")\n .option(\"--actual-result <value>\", \"Template default issue observed behavior\")\n .option(\"--actual_result <value>\", \"Alias for --actual-result\")\n .option(\"--affected-version <value>\", \"Template default affected version identifier\")\n .option(\"--affected_version <value>\", \"Alias for --affected-version\")\n .option(\"--fixed-version <value>\", \"Template default fixed version identifier\")\n .option(\"--fixed_version <value>\", \"Alias for --fixed-version\")\n .option(\"--component <value>\", \"Template default issue component ownership\")\n .option(\"--regression <value>\", \"Template default regression marker\")\n .option(\"--customer-impact <value>\", \"Template default customer impact summary\")\n .option(\"--customer_impact <value>\", \"Alias for --customer-impact\")\n .option(\n \"--dep <value>\",\n \"Template default dependency entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--type-option <value>\",\n \"Template default type option entry (repeatable; key=value or markdown pairs; use - for stdin)\",\n collect,\n )\n .option(\"--type_option <value>\", \"Alias for --type-option\", collect)\n .option(\n \"--reminder <value>\",\n \"Template default reminder entry (repeatable; at=<iso|relative>,text=<text>)\",\n collect,\n )\n .option(\n \"--event <value>\",\n \"Template default event entry (repeatable; start/end/title/recur_* fields)\",\n collect,\n )\n .option(\n \"--comment <value>\",\n \"Template default comment seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--note <value>\",\n \"Template default note seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--learning <value>\",\n \"Template default learning seed entry (repeatable; text=<value> CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--file <value>\",\n \"Template default linked file entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--test <value>\",\n \"Template default linked test entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .option(\n \"--doc <value>\",\n \"Template default linked doc entry (repeatable; CSV/markdown pairs or - for stdin)\",\n collect,\n )\n .description(\"Save or update a named create template.\")\n .action(async (name: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalized = normalizeCreateOptions(options, { requireType: false }) as unknown as Record<string, unknown>;\n const result = await runTemplatesSave(name, normalized, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates save took_ms=${Date.now() - startedAt}`);\n }\n });\n\n templatesCommand\n .command(\"list\")\n .description(\"List saved create templates.\")\n .action(async (_options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTemplatesList(globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates list took_ms=${Date.now() - startedAt}`);\n }\n });\n\n templatesCommand\n .command(\"show\")\n .argument(\"<name>\", \"Template name\")\n .description(\"Show saved create template details.\")\n .action(async (name: string, _options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTemplatesShow(name, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=templates show took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n"]}
@@ -1,9 +1,13 @@
1
1
  import jsonPatch from "fast-json-patch";
2
- import { EMPTY_CANONICAL_DOCUMENT, FRONT_MATTER_KEY_ORDER } from "../shared/constants.js";
2
+ import { FRONT_MATTER_KEY_ORDER } from "../shared/constants.js";
3
3
  import { runActiveServiceOverride } from "../extensions/index.js";
4
4
  import { appendLineAtomic } from "../fs/fs-utils.js";
5
5
  import { canonicalDocument } from "../item/item-format.js";
6
6
  import { orderObject, sha256Hex, stableStringify } from "../shared/serialization.js";
7
+ const EMPTY_LEGACY_HASH_DOCUMENT = {
8
+ front_matter: {},
9
+ body: "",
10
+ };
7
11
  function decodeJsonPointer(path) {
8
12
  if (!path || path === "/") {
9
13
  return [];
@@ -65,38 +69,55 @@ function normalizeHistoryPatchOps(beforeDocument, patch) {
65
69
  return normalized;
66
70
  }
67
71
  function canonicalHashDocument(document) {
68
- const hasFrontMatter = document.front_matter && Object.keys(document.front_matter).length > 0;
69
- if (!hasFrontMatter) {
72
+ const hasMetadata = document.metadata && Object.keys(document.metadata).length > 0;
73
+ if (!hasMetadata) {
70
74
  return {
71
75
  front_matter: {},
72
76
  body: document.body ?? "",
73
77
  };
74
78
  }
75
79
  const canonical = canonicalDocument(document);
76
- const orderedFrontMatter = orderObject(canonical.front_matter, FRONT_MATTER_KEY_ORDER);
80
+ const orderedFrontMatter = orderObject(canonical.metadata, FRONT_MATTER_KEY_ORDER);
77
81
  return {
78
82
  front_matter: orderedFrontMatter,
79
83
  body: canonical.body,
80
84
  };
81
85
  }
86
+ function canonicalPatchDocument(document) {
87
+ const hasMetadata = document.metadata && Object.keys(document.metadata).length > 0;
88
+ if (!hasMetadata) {
89
+ return {
90
+ metadata: {},
91
+ body: document.body ?? "",
92
+ };
93
+ }
94
+ const canonical = canonicalDocument(document);
95
+ const orderedMetadata = orderObject(canonical.metadata, FRONT_MATTER_KEY_ORDER);
96
+ return {
97
+ metadata: orderedMetadata,
98
+ body: canonical.body,
99
+ };
100
+ }
82
101
  export function hashDocument(document) {
83
102
  return sha256Hex(stableStringify(canonicalHashDocument(document)));
84
103
  }
85
104
  export function hashEmptyDocument() {
86
- return sha256Hex(stableStringify(EMPTY_CANONICAL_DOCUMENT));
105
+ return sha256Hex(stableStringify(EMPTY_LEGACY_HASH_DOCUMENT));
87
106
  }
88
107
  export function createHistoryEntry(params) {
89
- const beforeCanonical = canonicalHashDocument(params.before);
90
- const afterCanonical = canonicalHashDocument(params.after);
91
- const rawPatch = jsonPatch.compare(beforeCanonical, afterCanonical);
92
- const patch = normalizeHistoryPatchOps(beforeCanonical, rawPatch);
108
+ const beforeHashCanonical = canonicalHashDocument(params.before);
109
+ const afterHashCanonical = canonicalHashDocument(params.after);
110
+ const beforePatchCanonical = canonicalPatchDocument(params.before);
111
+ const afterPatchCanonical = canonicalPatchDocument(params.after);
112
+ const rawPatch = jsonPatch.compare(beforePatchCanonical, afterPatchCanonical);
113
+ const patch = normalizeHistoryPatchOps(beforePatchCanonical, rawPatch);
93
114
  return {
94
115
  ts: params.nowIso,
95
116
  author: params.author,
96
117
  op: params.op,
97
118
  patch,
98
- before_hash: sha256Hex(stableStringify(beforeCanonical)),
99
- after_hash: sha256Hex(stableStringify(afterCanonical)),
119
+ before_hash: sha256Hex(stableStringify(beforeHashCanonical)),
120
+ after_hash: sha256Hex(stableStringify(afterHashCanonical)),
100
121
  message: params.message === undefined ? undefined : params.message,
101
122
  };
102
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"/","sources":["core/history/history.ts"],"names":[],"mappings":"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","sourcesContent":["import jsonPatch from \"fast-json-patch\";\nimport { EMPTY_CANONICAL_DOCUMENT, FRONT_MATTER_KEY_ORDER } from \"../shared/constants.js\";\nimport { runActiveServiceOverride } from \"../extensions/index.js\";\nimport { appendLineAtomic } from \"../fs/fs-utils.js\";\nimport { canonicalDocument } from \"../item/item-format.js\";\nimport { orderObject, sha256Hex, stableStringify } from \"../shared/serialization.js\";\nimport type { HistoryEntry, HistoryPatchOp, ItemDocument } from \"../../types/index.js\";\n\nfunction decodeJsonPointer(path: string): string[] {\n if (!path || path === \"/\") {\n return [];\n }\n if (!path.startsWith(\"/\")) {\n return [];\n }\n return path\n .slice(1)\n .split(\"/\")\n .map((segment) => segment.replaceAll(\"~1\", \"/\").replaceAll(\"~0\", \"~\"));\n}\n\nfunction isDefinedPointerPath(document: unknown, path: string): boolean {\n const segments = decodeJsonPointer(path);\n if (segments.length === 0) {\n return true;\n }\n let cursor: unknown = document;\n for (const segment of segments) {\n if (Array.isArray(cursor)) {\n if (segment === \"-\" || !/^(0|[1-9]\\d*)$/.test(segment)) {\n return false;\n }\n const index = Number(segment);\n if (!Number.isInteger(index) || index < 0 || index >= cursor.length) {\n return false;\n }\n const next = cursor[index];\n if (next === undefined) {\n return false;\n }\n cursor = next;\n continue;\n }\n if (typeof cursor !== \"object\" || cursor === null) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(cursor, segment)) {\n return false;\n }\n const next = (cursor as Record<string, unknown>)[segment];\n if (next === undefined) {\n return false;\n }\n cursor = next;\n }\n return true;\n}\n\nfunction normalizeHistoryPatchOps(\n beforeDocument: { front_matter: Record<string, unknown>; body: string },\n patch: HistoryPatchOp[],\n): HistoryPatchOp[] {\n const normalized: HistoryPatchOp[] = [];\n let replayCursor: unknown = structuredClone(beforeDocument);\n for (const operation of patch) {\n const normalizedOperation =\n operation.op === \"replace\" && !isDefinedPointerPath(replayCursor, operation.path)\n ? ({ ...operation, op: \"add\" } as HistoryPatchOp)\n : operation;\n normalized.push(normalizedOperation);\n replayCursor = jsonPatch.applyPatch(\n replayCursor,\n [normalizedOperation as jsonPatch.Operation],\n true,\n true,\n ).newDocument as unknown;\n }\n return normalized;\n}\n\nfunction canonicalHashDocument(document: ItemDocument): { front_matter: Record<string, unknown>; body: string } {\n const hasFrontMatter = document.front_matter && Object.keys(document.front_matter).length > 0;\n if (!hasFrontMatter) {\n return {\n front_matter: {},\n body: document.body ?? \"\",\n };\n }\n const canonical = canonicalDocument(document);\n const orderedFrontMatter = orderObject(\n canonical.front_matter as unknown as Record<string, unknown>,\n FRONT_MATTER_KEY_ORDER,\n );\n return {\n front_matter: orderedFrontMatter,\n body: canonical.body,\n };\n}\n\nexport function hashDocument(document: ItemDocument): string {\n return sha256Hex(stableStringify(canonicalHashDocument(document)));\n}\n\nexport function hashEmptyDocument(): string {\n return sha256Hex(stableStringify(EMPTY_CANONICAL_DOCUMENT));\n}\n\nexport function createHistoryEntry(params: {\n nowIso: string;\n author: string;\n op: string;\n before: ItemDocument;\n after: ItemDocument;\n message?: string;\n}): HistoryEntry {\n const beforeCanonical = canonicalHashDocument(params.before);\n const afterCanonical = canonicalHashDocument(params.after);\n const rawPatch = jsonPatch.compare(beforeCanonical, afterCanonical) as HistoryPatchOp[];\n const patch = normalizeHistoryPatchOps(beforeCanonical, rawPatch);\n\n return {\n ts: params.nowIso,\n author: params.author,\n op: params.op,\n patch,\n before_hash: sha256Hex(stableStringify(beforeCanonical)),\n after_hash: sha256Hex(stableStringify(afterCanonical)),\n message: params.message === undefined ? undefined : params.message,\n };\n}\n\nexport async function appendHistoryEntry(historyPath: string, entry: HistoryEntry): Promise<void> {\n const override = await runActiveServiceOverride(\"history_append\", {\n history_path: historyPath,\n entry,\n });\n if (override.handled) {\n if (override.result === false) {\n return;\n }\n if (typeof override.result === \"string\") {\n await appendLineAtomic(historyPath, override.result);\n return;\n }\n if (typeof override.result === \"object\" && override.result !== null) {\n const record = override.result as {\n history_path?: unknown;\n entry?: unknown;\n line?: unknown;\n skip?: unknown;\n };\n if (record.skip === true) {\n return;\n }\n const nextHistoryPath = typeof record.history_path === \"string\" ? record.history_path : historyPath;\n if (typeof record.line === \"string\") {\n await appendLineAtomic(nextHistoryPath, record.line);\n return;\n }\n const nextEntry = (record.entry ?? entry) as HistoryEntry;\n await appendLineAtomic(nextHistoryPath, JSON.stringify(nextEntry));\n return;\n }\n }\n await appendLineAtomic(historyPath, JSON.stringify(entry));\n}\n"]}
1
+ {"version":3,"file":"history.js","sourceRoot":"/","sources":["core/history/history.ts"],"names":[],"mappings":"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","sourcesContent":["import jsonPatch from \"fast-json-patch\";\nimport { FRONT_MATTER_KEY_ORDER } from \"../shared/constants.js\";\nimport { runActiveServiceOverride } from \"../extensions/index.js\";\nimport { appendLineAtomic } from \"../fs/fs-utils.js\";\nimport { canonicalDocument } from \"../item/item-format.js\";\nimport { orderObject, sha256Hex, stableStringify } from \"../shared/serialization.js\";\nimport type { HistoryEntry, HistoryPatchOp, ItemDocument } from \"../../types/index.js\";\n\nconst EMPTY_LEGACY_HASH_DOCUMENT = {\n front_matter: {},\n body: \"\",\n};\n\nfunction decodeJsonPointer(path: string): string[] {\n if (!path || path === \"/\") {\n return [];\n }\n if (!path.startsWith(\"/\")) {\n return [];\n }\n return path\n .slice(1)\n .split(\"/\")\n .map((segment) => segment.replaceAll(\"~1\", \"/\").replaceAll(\"~0\", \"~\"));\n}\n\nfunction isDefinedPointerPath(document: unknown, path: string): boolean {\n const segments = decodeJsonPointer(path);\n if (segments.length === 0) {\n return true;\n }\n let cursor: unknown = document;\n for (const segment of segments) {\n if (Array.isArray(cursor)) {\n if (segment === \"-\" || !/^(0|[1-9]\\d*)$/.test(segment)) {\n return false;\n }\n const index = Number(segment);\n if (!Number.isInteger(index) || index < 0 || index >= cursor.length) {\n return false;\n }\n const next = cursor[index];\n if (next === undefined) {\n return false;\n }\n cursor = next;\n continue;\n }\n if (typeof cursor !== \"object\" || cursor === null) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(cursor, segment)) {\n return false;\n }\n const next = (cursor as Record<string, unknown>)[segment];\n if (next === undefined) {\n return false;\n }\n cursor = next;\n }\n return true;\n}\n\nfunction normalizeHistoryPatchOps(\n beforeDocument: { metadata: Record<string, unknown>; body: string },\n patch: HistoryPatchOp[],\n): HistoryPatchOp[] {\n const normalized: HistoryPatchOp[] = [];\n let replayCursor: unknown = structuredClone(beforeDocument);\n for (const operation of patch) {\n const normalizedOperation =\n operation.op === \"replace\" && !isDefinedPointerPath(replayCursor, operation.path)\n ? ({ ...operation, op: \"add\" } as HistoryPatchOp)\n : operation;\n normalized.push(normalizedOperation);\n replayCursor = jsonPatch.applyPatch(\n replayCursor,\n [normalizedOperation as jsonPatch.Operation],\n true,\n true,\n ).newDocument as unknown;\n }\n return normalized;\n}\n\nfunction canonicalHashDocument(document: ItemDocument): { front_matter: Record<string, unknown>; body: string } {\n const hasMetadata = document.metadata && Object.keys(document.metadata).length > 0;\n if (!hasMetadata) {\n return {\n front_matter: {},\n body: document.body ?? \"\",\n };\n }\n const canonical = canonicalDocument(document);\n const orderedFrontMatter = orderObject(canonical.metadata as unknown as Record<string, unknown>, FRONT_MATTER_KEY_ORDER);\n return {\n front_matter: orderedFrontMatter,\n body: canonical.body,\n };\n}\n\nfunction canonicalPatchDocument(document: ItemDocument): { metadata: Record<string, unknown>; body: string } {\n const hasMetadata = document.metadata && Object.keys(document.metadata).length > 0;\n if (!hasMetadata) {\n return {\n metadata: {},\n body: document.body ?? \"\",\n };\n }\n const canonical = canonicalDocument(document);\n const orderedMetadata = orderObject(canonical.metadata as unknown as Record<string, unknown>, FRONT_MATTER_KEY_ORDER);\n return {\n metadata: orderedMetadata,\n body: canonical.body,\n };\n}\n\nexport function hashDocument(document: ItemDocument): string {\n return sha256Hex(stableStringify(canonicalHashDocument(document)));\n}\n\nexport function hashEmptyDocument(): string {\n return sha256Hex(stableStringify(EMPTY_LEGACY_HASH_DOCUMENT));\n}\n\nexport function createHistoryEntry(params: {\n nowIso: string;\n author: string;\n op: string;\n before: ItemDocument;\n after: ItemDocument;\n message?: string;\n}): HistoryEntry {\n const beforeHashCanonical = canonicalHashDocument(params.before);\n const afterHashCanonical = canonicalHashDocument(params.after);\n const beforePatchCanonical = canonicalPatchDocument(params.before);\n const afterPatchCanonical = canonicalPatchDocument(params.after);\n const rawPatch = jsonPatch.compare(beforePatchCanonical, afterPatchCanonical) as HistoryPatchOp[];\n const patch = normalizeHistoryPatchOps(beforePatchCanonical, rawPatch);\n\n return {\n ts: params.nowIso,\n author: params.author,\n op: params.op,\n patch,\n before_hash: sha256Hex(stableStringify(beforeHashCanonical)),\n after_hash: sha256Hex(stableStringify(afterHashCanonical)),\n message: params.message === undefined ? undefined : params.message,\n };\n}\n\nexport async function appendHistoryEntry(historyPath: string, entry: HistoryEntry): Promise<void> {\n const override = await runActiveServiceOverride(\"history_append\", {\n history_path: historyPath,\n entry,\n });\n if (override.handled) {\n if (override.result === false) {\n return;\n }\n if (typeof override.result === \"string\") {\n await appendLineAtomic(historyPath, override.result);\n return;\n }\n if (typeof override.result === \"object\" && override.result !== null) {\n const record = override.result as {\n history_path?: unknown;\n entry?: unknown;\n line?: unknown;\n skip?: unknown;\n };\n if (record.skip === true) {\n return;\n }\n const nextHistoryPath = typeof record.history_path === \"string\" ? record.history_path : historyPath;\n if (typeof record.line === \"string\") {\n await appendLineAtomic(nextHistoryPath, record.line);\n return;\n }\n const nextEntry = (record.entry ?? entry) as HistoryEntry;\n await appendLineAtomic(nextHistoryPath, JSON.stringify(nextEntry));\n return;\n }\n }\n await appendLineAtomic(historyPath, JSON.stringify(entry));\n}\n"]}
@@ -1,11 +1,11 @@
1
- import type { ItemDocument, ItemFrontMatter, RuntimeSchemaSettings } from "../../types/index.js";
1
+ import type { ItemDocument, ItemMetadata, RuntimeSchemaSettings } from "../../types/index.js";
2
2
  import type { ItemFormat } from "../../types/index.js";
3
3
  export interface ItemDocumentFormatOptions {
4
4
  format?: ItemFormat;
5
5
  schema?: RuntimeSchemaSettings;
6
6
  onWarning?: (warning: string) => void;
7
7
  }
8
- export declare function normalizeFrontMatter(frontMatter: ItemFrontMatter, options?: Pick<ItemDocumentFormatOptions, "schema" | "onWarning">): ItemFrontMatter;
8
+ export declare function normalizeFrontMatter(frontMatter: ItemMetadata, options?: Pick<ItemDocumentFormatOptions, "schema" | "onWarning">): ItemMetadata;
9
9
  export declare function splitFrontMatter(content: string): {
10
10
  frontMatter: string;
11
11
  body: string;
@@ -219,25 +219,25 @@ function assertValidFrontMatter(frontMatter, runtimeContext) {
219
219
  }
220
220
  if (runtimeContext?.fieldRegistry) {
221
221
  for (const definition of runtimeContext.fieldRegistry.definitions) {
222
- const fieldValue = record[definition.front_matter_key];
222
+ const fieldValue = record[definition.metadata_key];
223
223
  if (fieldValue === undefined) {
224
224
  if (runtimeFieldRequiredForType(definition, itemType)) {
225
- validationError(`missing required schema field: ${definition.front_matter_key}`);
225
+ validationError(`missing required schema field: ${definition.metadata_key}`);
226
226
  }
227
227
  continue;
228
228
  }
229
229
  try {
230
- record[definition.front_matter_key] = coerceRuntimeFieldValue(definition, fieldValue, `metadata field "${definition.front_matter_key}"`);
230
+ record[definition.metadata_key] = coerceRuntimeFieldValue(definition, fieldValue, `metadata field "${definition.metadata_key}"`);
231
231
  }
232
232
  catch (error) {
233
- validationError(error instanceof Error ? error.message.replace(/^Invalid\s+/u, "") : `invalid ${definition.front_matter_key} value`);
233
+ validationError(error instanceof Error ? error.message.replace(/^Invalid\s+/u, "") : `invalid ${definition.metadata_key} value`);
234
234
  }
235
235
  }
236
236
  }
237
237
  if (runtimeContext && runtimeContext.unknownFieldPolicy !== "allow") {
238
238
  const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);
239
239
  for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {
240
- knownKeys.add(definition.front_matter_key);
240
+ knownKeys.add(definition.metadata_key);
241
241
  }
242
242
  const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));
243
243
  if (unknownKeys.length > 0) {
@@ -693,17 +693,17 @@ export function normalizeFrontMatter(frontMatter, options = {}) {
693
693
  }
694
694
  if (runtimeContext?.fieldRegistry) {
695
695
  for (const definition of runtimeContext.fieldRegistry.definitions) {
696
- const currentValue = normalized[definition.front_matter_key];
696
+ const currentValue = normalized[definition.metadata_key];
697
697
  if (currentValue === undefined) {
698
698
  continue;
699
699
  }
700
- normalized[definition.front_matter_key] = coerceRuntimeFieldValue(definition, currentValue, `metadata field "${definition.front_matter_key}"`);
700
+ normalized[definition.metadata_key] = coerceRuntimeFieldValue(definition, currentValue, `metadata field "${definition.metadata_key}"`);
701
701
  }
702
702
  }
703
703
  if (runtimeContext && runtimeContext.unknownFieldPolicy !== "allow") {
704
704
  const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);
705
705
  for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {
706
- knownKeys.add(definition.front_matter_key);
706
+ knownKeys.add(definition.metadata_key);
707
707
  }
708
708
  const unknownKeys = Object.keys(normalized)
709
709
  .filter((key) => !knownKeys.has(key))
@@ -814,7 +814,7 @@ function parseJsonMarkdownItemDocument(content, runtimeContext, options = {}) {
814
814
  }
815
815
  assertValidFrontMatter(parsed, runtimeContext);
816
816
  return {
817
- front_matter: normalizeFrontMatter(parsed, options),
817
+ metadata: normalizeFrontMatter(parsed, options),
818
818
  body: normalizeBody(body),
819
819
  };
820
820
  }
@@ -832,7 +832,7 @@ function parseToonItemDocument(content, runtimeContext, options = {}) {
832
832
  assertValidFrontMatter(record.front_matter, runtimeContext);
833
833
  assertFrontMatterCondition(record.body === undefined || typeof record.body === "string", "TOON item document body must be a string");
834
834
  return {
835
- front_matter: normalizeFrontMatter(record.front_matter, options),
835
+ metadata: normalizeFrontMatter(record.front_matter, options),
836
836
  body: normalizeBody(typeof record.body === "string" ? record.body : ""),
837
837
  };
838
838
  }
@@ -840,12 +840,12 @@ function parseToonItemDocument(content, runtimeContext, options = {}) {
840
840
  assertFrontMatterCondition(body === undefined || typeof body === "string", "TOON item document body must be a string");
841
841
  assertValidFrontMatter(frontMatterRecord, runtimeContext);
842
842
  return {
843
- front_matter: normalizeFrontMatter(frontMatterRecord, options),
843
+ metadata: normalizeFrontMatter(frontMatterRecord, options),
844
844
  body: normalizeBody(typeof body === "string" ? body : ""),
845
845
  };
846
846
  }
847
847
  function serializeJsonMarkdownItemDocument(document, options = {}) {
848
- const normalizedFrontMatter = normalizeFrontMatter(document.front_matter, options);
848
+ const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);
849
849
  const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);
850
850
  const serializedFrontMatter = JSON.stringify(orderedFrontMatter, null, 2);
851
851
  const normalizedBody = normalizeBody(document.body ?? "");
@@ -855,7 +855,7 @@ function serializeJsonMarkdownItemDocument(document, options = {}) {
855
855
  return `${serializedFrontMatter}\n\n${normalizedBody}\n`;
856
856
  }
857
857
  function serializeToonItemDocument(document, options = {}) {
858
- const normalizedFrontMatter = normalizeFrontMatter(document.front_matter, options);
858
+ const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);
859
859
  const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);
860
860
  const normalizedBody = normalizeBody(document.body ?? "");
861
861
  return `${encodeToon({ ...orderedFrontMatter, body: normalizedBody })}\n`;
@@ -871,19 +871,19 @@ export function parseItemDocument(content, options = {}) {
871
871
  nextSteps: ["Resolve conflicts, save the file, then rerun the pm command."],
872
872
  });
873
873
  }
874
- const format = options.format ?? "json_markdown";
874
+ const format = options.format ?? "toon";
875
875
  const runtimeContext = resolveRuntimeSchemaValidationContext(options);
876
876
  return format === "toon"
877
877
  ? parseToonItemDocument(content, runtimeContext, options)
878
878
  : parseJsonMarkdownItemDocument(content, runtimeContext, options);
879
879
  }
880
880
  export function serializeItemDocument(document, options = {}) {
881
- const format = options.format ?? "json_markdown";
881
+ const format = options.format ?? "toon";
882
882
  return format === "toon" ? serializeToonItemDocument(document, options) : serializeJsonMarkdownItemDocument(document, options);
883
883
  }
884
884
  export function canonicalDocument(document, options = {}) {
885
885
  return {
886
- front_matter: normalizeFrontMatter(document.front_matter, options),
886
+ metadata: normalizeFrontMatter(document.metadata, options),
887
887
  body: normalizeBody(document.body ?? ""),
888
888
  };
889
889
  }