@unbrained/pm-cli 2026.8.26 → 2026.8.28

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 (196) hide show
  1. package/.agents/skills/HARNESS_COMPATIBILITY.md +32 -0
  2. package/.agents/skills/README.md +47 -0
  3. package/.agents/skills/pm-developer/SKILL.md +117 -0
  4. package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +49 -0
  5. package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +91 -0
  6. package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +72 -0
  7. package/.agents/skills/pm-developer/references/PROMPTS.md +17 -0
  8. package/.agents/skills/pm-developer/references/SCRIPTING_COMPOSITION.md +82 -0
  9. package/.agents/skills/pm-developer/references/TOKEN_BUDGETS.md +85 -0
  10. package/.agents/skills/pm-extensions/SKILL.md +106 -0
  11. package/.agents/skills/pm-extensions/references/AUTHORING.md +95 -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 +107 -0
  15. package/.agents/skills/pm-sdk/references/DOMAIN_MODELING.md +78 -0
  16. package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +31 -0
  17. package/.agents/skills/pm-sdk/references/PROMPTS.md +13 -0
  18. package/.agents/skills/pm-sdk/references/SURFACE_MAP.md +82 -0
  19. package/.agents/skills/pm-user/SKILL.md +111 -0
  20. package/.agents/skills/pm-user/references/BACKLOG_SHAPING.md +105 -0
  21. package/.agents/skills/pm-user/references/PROMPTS.md +17 -0
  22. package/.agents/skills/pm-user/references/WORKFLOWS.md +35 -0
  23. package/.claude-plugin/marketplace.json +2 -2
  24. package/CHANGELOG.md +50 -4
  25. package/README.md +8 -5
  26. package/dist/cli/commander-usage.js +11 -7
  27. package/dist/cli/error-guidance.js +62 -8
  28. package/dist/cli/help-content.d.ts +2 -0
  29. package/dist/cli/help-content.js +53 -17
  30. package/dist/cli/help-json-payload.d.ts +8 -2
  31. package/dist/cli/help-json-payload.js +46 -12
  32. package/dist/cli/main.js +52 -74
  33. package/dist/cli/register-annotations.js +83 -60
  34. package/dist/cli/register-setup.js +98 -57
  35. package/dist/cli-bundle/bundle-manifest.json +151 -151
  36. package/dist/cli-bundle/chunks/{chunk-UKBCRPA2.js → chunk-BY2FQ2NI.js} +2 -2
  37. package/dist/cli-bundle/chunks/chunk-E73FDIWT.js +3 -0
  38. package/dist/cli-bundle/chunks/{chunk-WRHJ3MB6.js → chunk-FEVBFFCQ.js} +2 -2
  39. package/dist/cli-bundle/chunks/{chunk-KBFP3E4E.js → chunk-M7OXRQE3.js} +66 -44
  40. package/dist/cli-bundle/chunks/{chunk-S4U76VZF.js → chunk-NBCBFVZI.js} +2 -2
  41. package/dist/cli-bundle/chunks/{chunk-ZNRLJ54C.js → chunk-NTXZHRKA.js} +45 -45
  42. package/dist/cli-bundle/chunks/chunk-QE6WQXFO.js +3 -0
  43. package/dist/cli-bundle/chunks/chunk-TIQ6AMH2.js +13 -0
  44. package/dist/cli-bundle/chunks/chunk-X2RROGZE.js +2 -0
  45. package/dist/cli-bundle/chunks/{chunk-E2GCFJSU.js → chunk-XRVVYRRO.js} +33 -33
  46. package/dist/cli-bundle/chunks/chunk-XWEQGHHG.js +202 -0
  47. package/dist/cli-bundle/chunks/{register-list-query-EMCPMICY.js → register-list-query-J35ZPQQ5.js} +2 -2
  48. package/dist/cli-bundle/chunks/{register-mutation-OJ67ABCB.js → register-mutation-J6XJJOGU.js} +4 -4
  49. package/dist/cli-bundle/chunks/{register-operations-H2GLP7LT.js → register-operations-AE3JEMFT.js} +2 -2
  50. package/dist/cli-bundle/chunks/register-setup-OQERLLWE.js +2 -0
  51. package/dist/cli-bundle/focused-chunks/{chunk-72T6JGAE.js → chunk-4ZDRZYYJ.js} +43 -43
  52. package/dist/cli-bundle/focused-chunks/{chunk-OHIHZ7HS.js → chunk-6GCRSLPG.js} +2 -2
  53. package/dist/cli-bundle/focused-chunks/{chunk-UYBA57GY.js → chunk-AD6ULRAF.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/{chunk-FXDLT6FL.js → chunk-AHAM2HAU.js} +2 -2
  55. package/dist/cli-bundle/focused-chunks/{chunk-LV5N3LK5.js → chunk-FC2AXLB5.js} +2 -2
  56. package/dist/cli-bundle/focused-chunks/{chunk-IBHXMFE7.js → chunk-HC7ODMH3.js} +2 -2
  57. package/dist/cli-bundle/focused-chunks/{chunk-4K2II4TV.js → chunk-HVQ22RC4.js} +2 -2
  58. package/dist/cli-bundle/focused-chunks/{chunk-MMXUPDDJ.js → chunk-JZYPPMXF.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/chunk-LLNTHF5X.js +2 -0
  60. package/dist/cli-bundle/focused-chunks/chunk-LYFWQMVC.js +2 -0
  61. package/dist/cli-bundle/focused-chunks/{chunk-A644DUFQ.js → chunk-MEASX544.js} +2 -2
  62. package/dist/cli-bundle/focused-chunks/{chunk-YO3ZF3FI.js → chunk-THEPQMLX.js} +2 -2
  63. package/dist/cli-bundle/focused-chunks/{chunk-57XY346D.js → chunk-XDPYBQCF.js} +9 -9
  64. package/dist/cli-bundle/focused-chunks/{chunk-TMJDFHVD.js → chunk-Y3JJXRVK.js} +2 -2
  65. package/dist/cli-bundle/focused-chunks/{chunk-66VGB23P.js → chunk-Y5A7SJJ7.js} +2 -2
  66. package/dist/cli-bundle/focused-chunks/chunk-YJLDHJOD.js +2 -0
  67. package/dist/cli-bundle/focused-chunks/{chunk-P2E6LDAE.js → chunk-YVVZ3LQ6.js} +3 -3
  68. package/dist/cli-bundle/focused-chunks/chunk-Z2USIBR2.js +5 -0
  69. package/dist/cli-bundle/main.js +15 -14
  70. package/dist/cli-bundle/sdk-authoring.js +1 -1
  71. package/dist/cli-bundle/sdk-contracts.js +2 -2
  72. package/dist/cli-bundle/sdk-core.js +31 -31
  73. package/dist/cli-bundle/sdk-governance.js +1 -1
  74. package/dist/cli-bundle/sdk-graph.js +1 -1
  75. package/dist/cli-bundle/sdk-merge.js +31 -31
  76. package/dist/cli-bundle/sdk-query.js +1 -1
  77. package/dist/cli-bundle/sdk-runtime.js +1 -1
  78. package/dist/cli-bundle/sdk-testing.js +1 -1
  79. package/dist/cli-bundle/sdk.js +32 -7
  80. package/dist/core/governance/issue-codes.d.ts +11 -2
  81. package/dist/core/governance/issue-codes.js +29 -10
  82. package/dist/core/item/item-format.js +3 -3
  83. package/dist/core/store/item-store.js +12 -5
  84. package/dist/mcp/server.js +123 -9
  85. package/dist/mcp/tool-definitions.d.ts +2 -0
  86. package/dist/mcp/tool-definitions.js +5 -5
  87. package/dist/sdk/agent/closed-domain-contracts.d.ts +1 -1
  88. package/dist/sdk/agent/closed-domain-contracts.js +24 -2
  89. package/dist/sdk/agent/command-recovery.js +3 -3
  90. package/dist/sdk/agent/task-transcript-contracts.d.ts +52 -0
  91. package/dist/sdk/agent/task-transcript-contracts.js +198 -0
  92. package/dist/sdk/agent-capability-contracts.js +6 -2
  93. package/dist/sdk/annotations.d.ts +5 -2
  94. package/dist/sdk/annotations.js +66 -36
  95. package/dist/sdk/cli-bootstrap.d.ts +2 -8
  96. package/dist/sdk/cli-bootstrap.js +7 -66
  97. package/dist/sdk/cli-contracts/bootstrap-command-scanner.d.ts +23 -0
  98. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +80 -0
  99. package/dist/sdk/cli-contracts/command-aliases.js +15 -2
  100. package/dist/sdk/cli-contracts/enum-contracts.d.ts +4 -1
  101. package/dist/sdk/cli-contracts/enum-contracts.js +7 -2
  102. package/dist/sdk/cli-contracts/flag-contracts.js +12 -5
  103. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +5 -5
  104. package/dist/sdk/cli-contracts/grammar-contracts.d.ts +3 -3
  105. package/dist/sdk/cli-contracts/grammar-contracts.js +24 -17
  106. package/dist/sdk/cli-contracts/runtime-contracts.js +13 -11
  107. package/dist/sdk/cli-contracts/tool-parameter-tables.js +15 -2
  108. package/dist/sdk/cli-contracts/tool-schema.d.ts +1 -1
  109. package/dist/sdk/cli-contracts/tool-schema.js +32 -16
  110. package/dist/sdk/cli-contracts.d.ts +1 -1
  111. package/dist/sdk/cli-contracts.js +3 -3
  112. package/dist/sdk/cli-program.js +3 -2
  113. package/dist/sdk/comments.d.ts +4 -0
  114. package/dist/sdk/comments.js +2 -2
  115. package/dist/sdk/completion.js +47 -16
  116. package/dist/sdk/contracts.d.ts +1 -0
  117. package/dist/sdk/contracts.js +3 -2
  118. package/dist/sdk/extension/install-sources.d.ts +13 -0
  119. package/dist/sdk/extension/install-sources.js +62 -30
  120. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +26 -2
  121. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +38 -14
  122. package/dist/sdk/governance/upgrade.d.ts +2 -0
  123. package/dist/sdk/governance/upgrade.js +30 -8
  124. package/dist/sdk/governance/validate.js +8 -6
  125. package/dist/sdk/guide-topics.js +6 -6
  126. package/dist/sdk/index.d.ts +5 -2
  127. package/dist/sdk/index.js +6 -3
  128. package/dist/sdk/learnings.d.ts +4 -0
  129. package/dist/sdk/learnings.js +7 -4
  130. package/dist/sdk/lifecycle/close.js +4 -3
  131. package/dist/sdk/mcp/apps.d.ts +70 -0
  132. package/dist/sdk/mcp/apps.js +154 -0
  133. package/dist/sdk/mcp/skills.d.ts +127 -0
  134. package/dist/sdk/mcp/skills.js +390 -0
  135. package/dist/sdk/notes.d.ts +4 -0
  136. package/dist/sdk/notes.js +2 -2
  137. package/dist/sdk/read-output-contracts.js +16 -3
  138. package/dist/sdk/runtime-action-aliases.js +7 -3
  139. package/dist/sdk/runtime-input.js +15 -4
  140. package/dist/sdk/runtime-primitives.d.ts +1 -1
  141. package/dist/sdk/runtime-primitives.js +3 -3
  142. package/dist/sdk/runtime.d.ts +6 -6
  143. package/dist/sdk/runtime.js +8 -8
  144. package/docs/CLI_GRAMMAR.md +7 -1
  145. package/docs/COMMANDS.md +5 -4
  146. package/docs/EXTENSIONS.md +33 -32
  147. package/docs/MCP_2026_07_28.md +24 -2
  148. package/docs/MCP_2026_07_28_CONFORMANCE.md +4 -4
  149. package/docs/MCP_SKILLS_AND_APPS.md +107 -0
  150. package/docs/OUTPUT_TOKEN_ACCOUNTING.md +20 -7
  151. package/docs/QUICKSTART.md +15 -15
  152. package/docs/README.md +1 -0
  153. package/docs/RELEASING.md +20 -4
  154. package/docs/SDK.md +12 -0
  155. package/docs/SDK_CONTEXT_INTEGRITY.md +18 -1
  156. package/docs/SDK_EVIDENCE_TRACEABILITY.md +9 -1
  157. package/docs/SDK_RUNTIME_BOUNDARIES.md +10 -0
  158. package/docs/TESTING.md +6 -2
  159. package/docs/agent-task-token-baseline.json +97 -11
  160. package/docs/agent-task-transcripts.json +211 -0
  161. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
  162. package/docs/generated/FLAG_LEXICON_BUDGETS.md +3 -3
  163. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -7
  164. package/docs/performance/cli-transport-overhead.md +10 -2
  165. package/marketplace.json +2 -2
  166. package/package.json +10 -8
  167. package/packages/pm-beads/README.md +12 -6
  168. package/packages/pm-beads/docs/MIGRATION.md +53 -0
  169. package/packages/pm-beads/extensions/beads/index.ts +8 -0
  170. package/packages/pm-beads/extensions/beads/runtime.ts +671 -112
  171. package/packages/pm-beads/package.json +1 -1
  172. package/packages/pm-calendar/package.json +1 -1
  173. package/packages/pm-command-kit/package.json +1 -1
  174. package/packages/pm-digital-twin/package.json +1 -1
  175. package/packages/pm-governance-audit/package.json +1 -1
  176. package/packages/pm-guide-shell/package.json +1 -1
  177. package/packages/pm-kanban/package.json +1 -1
  178. package/packages/pm-lifecycle-hooks/package.json +1 -1
  179. package/packages/pm-linked-test-adapters/package.json +1 -1
  180. package/packages/pm-search-advanced/package.json +1 -1
  181. package/packages/pm-templates/package.json +1 -1
  182. package/packages/pm-todos/package.json +1 -1
  183. package/packages/pm-vcs/package.json +1 -1
  184. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  185. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  186. package/sdk/public-surface.json +430 -36
  187. package/dist/cli-bundle/chunks/chunk-ES25LX3D.js +0 -202
  188. package/dist/cli-bundle/chunks/chunk-FRDWWB6R.js +0 -3
  189. package/dist/cli-bundle/chunks/chunk-ICQ3RVIY.js +0 -2
  190. package/dist/cli-bundle/chunks/chunk-IV64RJVE.js +0 -13
  191. package/dist/cli-bundle/chunks/chunk-MVYLQ67M.js +0 -3
  192. package/dist/cli-bundle/chunks/register-setup-GLZAHLVI.js +0 -2
  193. package/dist/cli-bundle/focused-chunks/chunk-4XNH2HM7.js +0 -2
  194. package/dist/cli-bundle/focused-chunks/chunk-7I23XGWO.js +0 -2
  195. package/dist/cli-bundle/focused-chunks/chunk-7YCDTCBC.js +0 -2
  196. package/dist/cli-bundle/focused-chunks/chunk-LMKG3DFE.js +0 -5
@@ -10,7 +10,7 @@
10
10
  * are intentionally absent from default help and completion discovery.
11
11
  */
12
12
 
13
- !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]="9afc5057-afcd-5d6c-a4c1-c2883640fc50")}catch(e){}}();
13
+ !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]="3c9694bd-3635-5298-abeb-6899c94317ab")}catch(e){}}();
14
14
  export const PM_COMMAND_ALIAS_CONTRACTS = [
15
15
  ...[
16
16
  ["fetch", "get"],
@@ -70,6 +70,19 @@ export const PM_COMMAND_ALIAS_CONTRACTS = [
70
70
  registration: "commander",
71
71
  owner: "pm-pfqi",
72
72
  })),
73
+ ...[
74
+ ["extension", "package"],
75
+ ["install", "package install"],
76
+ ["upgrade", "package upgrade"],
77
+ ].map(([alias, canonical]) => ({
78
+ alias,
79
+ canonical,
80
+ canonical_argv: canonical.split(" "),
81
+ lifecycle: "deprecated",
82
+ hidden: true,
83
+ registration: "commander",
84
+ owner: "pm-tnud",
85
+ })),
73
86
  ];
74
87
  /** High-frequency executable aliases whose targets accept identical arguments. */
75
88
  export const EXECUTABLE_COMMAND_ALIASES = Object.fromEntries(PM_COMMAND_ALIAS_CONTRACTS.filter((contract) => contract.registration === "bootstrap").map((contract) => [contract.alias, contract.canonical]));
@@ -83,4 +96,4 @@ export function renderPmCommandAliasMigrationHint(contract) {
83
96
  return `Deprecated command \`${contract.alias}\`; use \`pm ${contract.canonical_argv.join(" ")}\`.`;
84
97
  }
85
98
  //# sourceMappingURL=command-aliases.js.map
86
- //# debugId=9afc5057-afcd-5d6c-a4c1-c2883640fc50
99
+ //# debugId=3c9694bd-3635-5298-abeb-6899c94317ab
@@ -34,6 +34,8 @@ export declare const MERGE_SUBCOMMAND_VALUES: readonly ["install", "reconcile",
34
34
  export type MergeSubcommand = (typeof MERGE_SUBCOMMAND_VALUES)[number];
35
35
  /** Nested lifecycle verbs flattened by SDK and MCP package actions. */
36
36
  export declare const PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS: readonly ["init", "install", "uninstall", "explore", "manage", "describe", "reload", "doctor", "catalog", "adopt", "adopt-all", "activate", "deactivate"];
37
+ /** Package-only lifecycle verbs flattened by SDK and MCP package actions. */
38
+ export declare const PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS: readonly ["upgrade"];
37
39
  /** Noun-first item lifecycle verbs flattened for SDK and MCP dispatch. */
38
40
  export declare const PM_ITEM_ACTION_SUBCOMMANDS: readonly ["reopen"];
39
41
  /** CLI-only presentation commands intentionally omitted from programmatic actions. */
@@ -44,9 +46,10 @@ export declare const PM_CLI_ONLY_TOOL_ACTION_WAIVERS: {
44
46
  type PmCoreCommandName = (typeof PM_CORE_COMMAND_NAMES)[number];
45
47
  type PmCliOnlyToolAction = keyof typeof PM_CLI_ONLY_TOOL_ACTION_WAIVERS;
46
48
  type PmExtensionPackageAction = `${"extension" | "package"}-${(typeof PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS)[number]}`;
49
+ type PmPackageOnlyAction = `package-${(typeof PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS)[number]}`;
47
50
  type PmItemAction = `item-${(typeof PM_ITEM_ACTION_SUBCOMMANDS)[number]}`;
48
51
  /** Restricts pm tool action values accepted by command, SDK, and storage contracts. */
49
- export type PmToolAction = Exclude<PmCoreCommandName, PmCliOnlyToolAction | "item"> | PmExtensionPackageAction | PmItemAction;
52
+ export type PmToolAction = Exclude<PmCoreCommandName, PmCliOnlyToolAction | "item"> | PmExtensionPackageAction | PmPackageOnlyAction | PmItemAction;
50
53
  /**
51
54
  * Public pm tool actions derived from the CLI vocabulary. Nested extension and
52
55
  * package verbs are flattened for transports that expose one action string.
@@ -4,7 +4,7 @@
4
4
  * Defines SDK command-contract metadata for Enum Contracts.
5
5
  */
6
6
 
7
- !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]="3935bae8-0a40-59ea-aca6-64e238d1f318")}catch(e){}}();
7
+ !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]="6315a62f-6f55-5200-a5ea-ec892ff39f58")}catch(e){}}();
8
8
  import { KNOWN_EXTENSION_CAPABILITIES, KNOWN_EXTENSION_POLICY_MODES, KNOWN_EXTENSION_POLICY_SURFACES, KNOWN_EXTENSION_SANDBOX_PROFILES, KNOWN_EXTENSION_SERVICE_NAMES, KNOWN_EXTENSION_TRUST_MODES, } from "../../core/extensions/extension-types.js";
9
9
  import { PM_COMMAND_ALIAS_CONTRACTS } from "./command-aliases.js";
10
10
  /** Public contract for pm extension capability contracts, shared by SDK and presentation-layer consumers. */
@@ -147,6 +147,8 @@ export const PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS = [
147
147
  "activate",
148
148
  "deactivate",
149
149
  ];
150
+ /** Package-only lifecycle verbs flattened by SDK and MCP package actions. */
151
+ export const PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS = ["upgrade"];
150
152
  /** Noun-first item lifecycle verbs flattened for SDK and MCP dispatch. */
151
153
  export const PM_ITEM_ACTION_SUBCOMMANDS = ["reopen"];
152
154
  /** CLI-only presentation commands intentionally omitted from programmatic actions. */
@@ -164,6 +166,9 @@ export const PM_TOOL_ACTIONS = Object.freeze(PM_CORE_COMMAND_NAMES.flatMap((comm
164
166
  if (command === "extension" || command === "package") {
165
167
  return [
166
168
  ...PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS.map((subcommand) => `${command}-${subcommand}`),
169
+ ...(command === "package"
170
+ ? PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS.map((subcommand) => `package-${subcommand}`)
171
+ : []),
167
172
  command,
168
173
  ];
169
174
  }
@@ -215,4 +220,4 @@ export function isPmExtensionPolicySurfaceContract(value) {
215
220
  return PM_EXTENSION_POLICY_SURFACE_CONTRACTS.includes(value);
216
221
  }
217
222
  //# sourceMappingURL=enum-contracts.js.map
218
- //# debugId=3935bae8-0a40-59ea-aca6-64e238d1f318
223
+ //# debugId=6315a62f-6f55-5200-a5ea-ec892ff39f58
@@ -7,7 +7,7 @@
7
7
  * flag surface stays single-sourced across the CLI, SDK, and MCP boundaries.
8
8
  */
9
9
 
10
- !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]="6664bc8f-e5da-5593-a2df-ac45f1cef09e")}catch(e){}}();
10
+ !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]="bd6c497f-9fb0-5c47-a677-9dd6636dba02")}catch(e){}}();
11
11
  import { normalizeUniqueStringList } from "./string-lists.js";
12
12
  import { RESERVED_EXTENSION_HOST_FLAGS } from "../../core/extensions/reserved-host-flags.js";
13
13
  import { PM_POSITIONAL_ACTION_CONTRACTS, } from "./grammar-contracts.js";
@@ -219,13 +219,14 @@ export const AGGREGATE_FLAG_CONTRACTS = [
219
219
  /** Public contract for comments flag contracts, shared by SDK and presentation-layer consumers. */
220
220
  export const COMMENTS_FLAG_CONTRACTS = [
221
221
  { flag: "--id", value_name: "item-id" },
222
- { flag: "--add", aliases: ["--comment", "--body"] },
222
+ { flag: "--add", aliases: ["--comment", "--body", "--text"] },
223
223
  { flag: "--stdin" },
224
224
  { flag: "--file" },
225
225
  { flag: "--edit" },
226
226
  { flag: "--delete" },
227
227
  { flag: "--limit" },
228
228
  { flag: "--full-history" },
229
+ { flag: "--if-absent", value_type: "boolean" },
229
230
  { flag: "--author" },
230
231
  { flag: "--message" },
231
232
  { flag: "--force" },
@@ -238,7 +239,7 @@ function withCursorSemantics(contracts, presentationFlags) {
238
239
  /** Public contract for notes flag contracts, shared by SDK and presentation-layer consumers. */
239
240
  export const NOTES_FLAG_CONTRACTS = [
240
241
  { flag: "--id", value_name: "item-id" },
241
- { flag: "--add", aliases: ["--note"] },
242
+ { flag: "--add", aliases: ["--note", "--text"] },
242
243
  { flag: "--add-json" },
243
244
  { flag: "--stdin" },
244
245
  { flag: "--file" },
@@ -249,6 +250,7 @@ export const NOTES_FLAG_CONTRACTS = [
249
250
  { flag: "--event-type" },
250
251
  { flag: "--include-meta" },
251
252
  { flag: "--full-history" },
253
+ { flag: "--if-absent", value_type: "boolean" },
252
254
  { flag: "--author" },
253
255
  { flag: "--message" },
254
256
  { flag: "--force" },
@@ -256,9 +258,10 @@ export const NOTES_FLAG_CONTRACTS = [
256
258
  /** Public contract for learnings flag contracts, shared by SDK and presentation-layer consumers. */
257
259
  export const LEARNINGS_FLAG_CONTRACTS = [
258
260
  { flag: "--id", value_name: "item-id" },
259
- { flag: "--add", aliases: ["--learning"] },
261
+ { flag: "--add", aliases: ["--learning", "--text"] },
260
262
  { flag: "--limit" },
261
263
  { flag: "--full-history" },
264
+ { flag: "--if-absent", value_type: "boolean" },
262
265
  { flag: "--author" },
263
266
  { flag: "--message" },
264
267
  { flag: "--force" },
@@ -1884,6 +1887,10 @@ export function resolveSubcommandFlagContractsForCommand(commandName) {
1884
1887
  rootCommand === "packages") &&
1885
1888
  lifecycleSubcommand !== undefined &&
1886
1889
  extraParts.length === 0) {
1890
+ if ((rootCommand === "package" || rootCommand === "packages") &&
1891
+ lifecycleSubcommand === "upgrade") {
1892
+ return withSubcommandGlobalFlags(UPGRADE_FLAG_CONTRACTS);
1893
+ }
1887
1894
  return withSubcommandGlobalFlags(resolveExtensionLifecycleFlagContracts(rootCommand, lifecycleSubcommand));
1888
1895
  }
1889
1896
  const contracts = SUBCOMMAND_FLAG_CONTRACTS_BY_COMMAND.get(normalized) ?? [];
@@ -1908,4 +1915,4 @@ export function toCompletionFlagString(flagContracts, includeGlobal = true) {
1908
1915
  return normalizeUniqueStringList(all).join(" ");
1909
1916
  }
1910
1917
  //# sourceMappingURL=flag-contracts.js.map
1911
- //# debugId=6664bc8f-e5da-5593-a2df-ac45f1cef09e
1918
+ //# debugId=bd6c497f-9fb0-5c47-a677-9dd6636dba02
@@ -5,7 +5,7 @@
5
5
  * per-command growth budgets.
6
6
  */
7
7
 
8
- !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]="8320177c-e95d-5d14-a914-4ac37230c0b9")}catch(e){}}();
8
+ !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]="3466866d-8869-5ab6-b981-d084e7330aa5")}catch(e){}}();
9
9
  import { hasSubcommandFlagContractsForCommand, resolveSubcommandFlagContractsForCommand, } from "./flag-contracts.js";
10
10
  import { PM_COMMAND_CAPABILITY_CONTRACTS, } from "../agent-capability-contracts.js";
11
11
  import { enrichCliFlagInvocationContracts } from "../flag-invocation-contracts.js";
@@ -146,9 +146,9 @@ const PM_COMMAND_FLAG_BUDGET_MAXIMUMS = Object.freeze({
146
146
  "close-many": 72,
147
147
  delete: 24,
148
148
  append: 24,
149
- comments: 30,
150
- notes: 34,
151
- learnings: 26,
149
+ comments: 31,
150
+ notes: 35,
151
+ learnings: 27,
152
152
  files: 39,
153
153
  docs: 30,
154
154
  deps: 32,
@@ -337,4 +337,4 @@ export function renderPmFlagLexiconMarkdown() {
337
337
  ].join("\n");
338
338
  }
339
339
  //# sourceMappingURL=flag-lexicon-contracts.js.map
340
- //# debugId=8320177c-e95d-5d14-a914-4ac37230c0b9
340
+ //# debugId=3466866d-8869-5ab6-b981-d084e7330aa5
@@ -6,11 +6,11 @@
6
6
  * this checked-in table in both directions so adding or removing a command
7
7
  * cannot silently bypass the architecture decision.
8
8
  */
9
- import type { PmCommandAliasContract } from "./command-aliases.js";
9
+ import { type PmCommandAliasContract } from "./command-aliases.js";
10
10
  /** Canonical top-level domains an agent must retain to route pm operations. */
11
11
  export declare const PM_CLI_GRAMMAR_NOUNS: readonly ["item", "list", "context", "search", "graph", "history", "workspace", "package", "ops", "plan", "contracts", "help"];
12
12
  /** Shared verbs whose meaning transfers across domain nouns. */
13
- export declare const PM_CLI_SHARED_VERBS: readonly ["activate", "add", "adopt", "adopt-all", "catalog", "compact", "complete", "create", "deactivate", "delete", "describe", "doctor", "edit", "explore", "import", "init", "inspect", "install", "list", "manage", "migrate", "mutate", "read", "redact", "reload", "remove", "reopen", "repair", "restore", "run", "show", "uninstall", "verify"];
13
+ export declare const PM_CLI_SHARED_VERBS: readonly ["activate", "add", "adopt", "adopt-all", "catalog", "compact", "complete", "create", "deactivate", "delete", "describe", "doctor", "edit", "explore", "import", "init", "inspect", "install", "list", "manage", "migrate", "mutate", "read", "redact", "reload", "remove", "reopen", "repair", "restore", "run", "show", "uninstall", "upgrade", "verify"];
14
14
  /** Why a current command is permitted while the grammar migration proceeds. */
15
15
  export type PmCommandDestinationDisposition = "target_noun" | "consolidation" | "package_owned" | "keep_as_is";
16
16
  /** Exact destination decision for one command emitted by runtime contracts. */
@@ -78,7 +78,7 @@ export declare const PM_COMMAND_POSITIONAL_CONTRACTS: readonly PmCommandPosition
78
78
  /** Immutable grammar policy used by contracts and the CI gate. */
79
79
  export declare const PM_CLI_GRAMMAR_CONTRACT: {
80
80
  readonly nouns: readonly ["item", "list", "context", "search", "graph", "history", "workspace", "package", "ops", "plan", "contracts", "help"];
81
- readonly shared_verbs: readonly ["activate", "add", "adopt", "adopt-all", "catalog", "compact", "complete", "create", "deactivate", "delete", "describe", "doctor", "edit", "explore", "import", "init", "inspect", "install", "list", "manage", "migrate", "mutate", "read", "redact", "reload", "remove", "reopen", "repair", "restore", "run", "show", "uninstall", "verify"];
81
+ readonly shared_verbs: readonly ["activate", "add", "adopt", "adopt-all", "catalog", "compact", "complete", "create", "deactivate", "delete", "describe", "doctor", "edit", "explore", "import", "init", "inspect", "install", "list", "manage", "migrate", "mutate", "read", "redact", "reload", "remove", "reopen", "repair", "restore", "run", "show", "uninstall", "upgrade", "verify"];
82
82
  readonly scope_before_verb: true;
83
83
  readonly visible_top_level_ceiling: 69;
84
84
  readonly ceiling_raise_requires_pm_item: true;
@@ -1,6 +1,15 @@
1
- /** Canonical top-level domains an agent must retain to route pm operations. */
1
+ /**
2
+ * @module sdk/cli-contracts/grammar-contracts
3
+ *
4
+ * Declares and verifies the agent-facing noun–verb grammar. The destination
5
+ * census is intentionally exact: live command contracts are compared with
6
+ * this checked-in table in both directions so adding or removing a command
7
+ * cannot silently bypass the architecture decision.
8
+ */
2
9
 
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]="21495fd2-6abb-5a4f-965c-e7b9c8f87dff")}catch(e){}}();
10
+ !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]="d0f4c030-0028-5acb-a438-210666118074")}catch(e){}}();
11
+ import { resolvePmCommandAlias, } from "./command-aliases.js";
12
+ /** Canonical top-level domains an agent must retain to route pm operations. */
4
13
  export const PM_CLI_GRAMMAR_NOUNS = [
5
14
  "item",
6
15
  "list",
@@ -49,6 +58,7 @@ export const PM_CLI_SHARED_VERBS = [
49
58
  "run",
50
59
  "show",
51
60
  "uninstall",
61
+ "upgrade",
52
62
  "verify",
53
63
  ];
54
64
  function positionalSlot(name, valueKind, required, options = {}) {
@@ -391,12 +401,6 @@ const EXPLICIT_POSITIONAL_SLOTS = new Map([
391
401
  ["deps", [ITEM_ID]],
392
402
  ["docs", [ITEM_ID]],
393
403
  ["event", [positionalSlot("title", "string", true)]],
394
- [
395
- "extension",
396
- [positionalSlot("target", "string", false, { polymorphic: true })],
397
- ],
398
- ["extension list", []],
399
- ["extension scaffold", [positionalSlot("target", "string", true)]],
400
404
  ["files", [ITEM_ID]],
401
405
  ["files discover", [ITEM_ID]],
402
406
  [
@@ -422,7 +426,6 @@ const EXPLICIT_POSITIONAL_SLOTS = new Map([
422
426
  "init",
423
427
  [positionalSlot("prefix-or-path", "string", false, { polymorphic: true })],
424
428
  ],
425
- ["install", [positionalSlot("targets", "string", false, { variadic: true })]],
426
429
  ["item complete", [ITEM_ID, positionalSlot("reason", "string", false)]],
427
430
  ["item reopen", [ITEM_ID, positionalSlot("reason", "string", true)]],
428
431
  ["learnings", [ITEM_ID, OPTIONAL_TEXT]],
@@ -444,12 +447,14 @@ const EXPLICIT_POSITIONAL_SLOTS = new Map([
444
447
  ],
445
448
  ["package list", []],
446
449
  ["package scaffold", [positionalSlot("target", "string", true)]],
450
+ ["package upgrade", [positionalSlot("target", "string", false)]],
447
451
  [
448
452
  "packages",
449
453
  [positionalSlot("target", "string", false, { polymorphic: true })],
450
454
  ],
451
455
  ["packages list", []],
452
456
  ["packages scaffold", [positionalSlot("target", "string", true)]],
457
+ ["packages upgrade", [positionalSlot("target", "string", false)]],
453
458
  ["pause-task", [ITEM_ID]],
454
459
  [
455
460
  "plan",
@@ -494,7 +499,6 @@ const EXPLICIT_POSITIONAL_SLOTS = new Map([
494
499
  ],
495
500
  ["test", [ITEM_ID]],
496
501
  ["update", [ITEM_ID]],
497
- ["upgrade", [positionalSlot("target", "string", false)]],
498
502
  [
499
503
  "workspace snapshot",
500
504
  [
@@ -528,7 +532,13 @@ function normalizePositionalCommandPath(command) {
528
532
  /** Resolve one declared signature without treating arbitrary object keys as commands. */
529
533
  export function resolvePmCommandPositionalContract(command) {
530
534
  const normalized = normalizePositionalCommandPath(command);
531
- return PM_COMMAND_POSITIONAL_CONTRACTS.find((contract) => contract.command === normalized);
535
+ const direct = PM_COMMAND_POSITIONAL_CONTRACTS.find((contract) => contract.command === normalized);
536
+ if (direct)
537
+ return direct;
538
+ const canonical = resolvePmCommandAlias(normalized)?.canonical;
539
+ if (!canonical)
540
+ return undefined;
541
+ return PM_COMMAND_POSITIONAL_CONTRACTS.find((contract) => contract.command === canonical);
532
542
  }
533
543
  /** Resolve one action-specific help/contract view. */
534
544
  export function resolvePmPositionalActionContract(command) {
@@ -654,9 +664,9 @@ export const PM_COMMAND_DESTINATION_CONTRACTS = [
654
664
  "package reload",
655
665
  "package scaffold",
656
666
  "package uninstall",
667
+ "package upgrade",
657
668
  ]),
658
669
  ...destinationRows("package", "package", "consolidation", "pm-tnud", [
659
- "extension",
660
670
  "extension activate",
661
671
  "extension adopt",
662
672
  "extension adopt-all",
@@ -667,13 +677,10 @@ export const PM_COMMAND_DESTINATION_CONTRACTS = [
667
677
  "extension explore",
668
678
  "extension init",
669
679
  "extension install",
670
- "extension list",
671
680
  "extension manage",
672
681
  "extension migrate",
673
682
  "extension reload",
674
- "extension scaffold",
675
683
  "extension uninstall",
676
- "install",
677
684
  "packages",
678
685
  "packages activate",
679
686
  "packages adopt",
@@ -691,7 +698,7 @@ export const PM_COMMAND_DESTINATION_CONTRACTS = [
691
698
  "packages reload",
692
699
  "packages scaffold",
693
700
  "packages uninstall",
694
- "upgrade",
701
+ "packages upgrade",
695
702
  ]),
696
703
  ...destinationRows("package", "package", "package_owned", "package:beads", [
697
704
  "beads import",
@@ -958,4 +965,4 @@ export function verifyPmCliGrammar(commands, aliases = [], destinations = PM_COM
958
965
  };
959
966
  }
960
967
  //# sourceMappingURL=grammar-contracts.js.map
961
- //# debugId=21495fd2-6abb-5a4f-965c-e7b9c8f87dff
968
+ //# debugId=d0f4c030-0028-5acb-a438-210666118074
@@ -4,7 +4,7 @@
4
4
  * Implements the pm contracts command surface and its agent-facing runtime behavior.
5
5
  */
6
6
 
7
- !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]="428a19d2-be42-548a-a328-aa0e476b8a71")}catch(e){}}();
7
+ !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]="a4c43fa6-9f2e-515c-ab47-d21ef5d7878e")}catch(e){}}();
8
8
  import { EXIT_CODE, SETTINGS_DEFAULTS, PmCliError, activateExtensions, getActiveExtensionRegistrations, loadExtensions, pathExists, commandOptionFlagLabel, resolveCommandOptionPolicyState, resolveItemTypeRegistry, resolveRuntimeFieldRegistry, resolveRuntimeStatusRegistry, getSettingsPath, resolvePmRoot, readSettings, } from "../runtime-primitives.js";
9
9
  import { buildMcpToolContracts, } from "../../mcp/tool-definitions.js";
10
10
  import { ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS, ACTIVITY_FLAG_CONTRACTS, AGGREGATE_FLAG_CONTRACTS, ASSURANCE_FLAG_CONTRACTS, APPEND_FLAG_CONTRACTS, CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS, CALENDAR_FLAG_CONTRACTS, CLAIM_FLAG_CONTRACTS, CLOSE_TASK_FLAG_CONTRACTS, COMMENTS_FLAG_CONTRACTS, CLOSE_FLAG_CONTRACTS, CLOSE_MANY_FLAG_CONTRACTS, COMPLETION_FLAG_CONTRACTS, CONFIG_FLAG_CONTRACTS, CONTRACTS_FLAG_CONTRACTS, COPY_FLAG_CONTRACTS, CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS, CONTEXT_FLAG_CONTRACTS, CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS, CREATE_COMMANDER_STRING_OPTION_CONTRACTS, CREATE_FLAG_CONTRACTS, DELETE_FLAG_CONTRACTS, DEPS_FLAG_CONTRACTS, GRAPH_FLAG_CONTRACTS, DOCS_FLAG_CONTRACTS, EXTENSION_ACTIVATE_FLAG_CONTRACTS, EXTENSION_ADOPT_ALL_FLAG_CONTRACTS, EXTENSION_ADOPT_FLAG_CONTRACTS, EXTENSION_CATALOG_FLAG_CONTRACTS, EXTENSION_DEACTIVATE_FLAG_CONTRACTS, EXTENSION_DESCRIBE_FLAG_CONTRACTS, EXTENSION_DOCTOR_FLAG_CONTRACTS, EXTENSION_EXPLORE_FLAG_CONTRACTS, EXTENSION_FLAG_CONTRACTS, EXTENSION_INIT_FLAG_CONTRACTS, EXTENSION_INSTALL_FLAG_CONTRACTS, EXTENSION_MANAGE_FLAG_CONTRACTS, EXTENSION_MIGRATE_FLAG_CONTRACTS, EXTENSION_RELOAD_FLAG_CONTRACTS, EXTENSION_UNINSTALL_FLAG_CONTRACTS, FILES_FLAG_CONTRACTS, FOCUS_FLAG_CONTRACTS, GC_FLAG_CONTRACTS, GET_FLAG_CONTRACTS, GUIDE_FLAG_CONTRACTS, GLOBAL_FLAG_CONTRACTS, HEALTH_FLAG_CONTRACTS, HISTORY_FLAG_CONTRACTS, HISTORY_COMPACT_FLAG_CONTRACTS, HISTORY_REDACT_FLAG_CONTRACTS, HISTORY_REPAIR_FLAG_CONTRACTS, HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS, INSTALL_FLAG_CONTRACTS, INIT_FLAG_CONTRACTS, ITEM_COMPLETE_FLAG_CONTRACTS, ITEM_MUTATE_FLAG_CONTRACTS, ITEM_REOPEN_FLAG_CONTRACTS, LEARNINGS_FLAG_CONTRACTS, LIST_COMMANDER_STRING_OPTION_CONTRACTS, LIST_FILTER_FLAG_CONTRACTS, MERGE_FLAG_CONTRACTS, NOTES_FLAG_CONTRACTS, PACKAGE_FLAG_CONTRACTS, PACKAGE_INIT_FLAG_CONTRACTS, PM_EXTENSION_CAPABILITY_CONTRACTS, PM_EXTENSION_POLICY_MODE_CONTRACTS, PM_EXTENSION_POLICY_SURFACE_CONTRACTS, PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS, PM_EXTENSION_SERVICE_NAME_CONTRACTS, PM_EXTENSION_TRUST_MODE_CONTRACTS, PM_OUTPUT_DEGRADATION_STEPS, PLAN_FLAG_CONTRACTS, PM_CORE_COMMAND_NAMES, PM_DEPRECATED_TOOL_ACTIONS, PM_TOOL_ACTIONS, PM_TOOL_PARAMETERS_SCHEMA, REINDEX_FLAG_CONTRACTS, RELEASE_FLAG_CONTRACTS, RESTORE_FLAG_CONTRACTS, SCHEMA_FLAG_CONTRACTS, PROFILE_FLAG_CONTRACTS, SEARCH_COMMANDER_STRING_OPTION_CONTRACTS, EVAL_FLAG_CONTRACTS, WORKSPACE_FLAG_CONTRACTS, NEXT_FLAG_CONTRACTS, SEARCH_FLAG_CONTRACTS, STATS_FLAG_CONTRACTS, DUPLICATES_FLAG_CONTRACTS, START_TASK_FLAG_CONTRACTS, PAUSE_TASK_FLAG_CONTRACTS, TELEMETRY_FLAG_CONTRACTS, TEST_ALL_FLAG_CONTRACTS, TEST_FLAG_CONTRACTS, TEST_RUNS_FLAG_CONTRACTS, UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS, UPDATE_COMMANDER_STRING_OPTION_CONTRACTS, UPDATE_FLAG_CONTRACTS, UPDATE_MANY_FLAG_CONTRACTS, UPGRADE_FLAG_CONTRACTS, VALIDATE_FLAG_CONTRACTS, compactFlagAliasContracts, PM_COMMAND_ALIAS_CONTRACTS, PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS, resolvePmCommandOutputBudget, } from "../cli-contracts.js";
@@ -217,7 +217,7 @@ const CANONICAL_COMMAND_ALIASES = [
217
217
  },
218
218
  {
219
219
  canonical: "package",
220
- aliases: ["extension", "packages", "install"],
220
+ aliases: ["extension", "packages"],
221
221
  },
222
222
  ];
223
223
  const COMMAND_ALIAS_TO_CANONICAL = new Map(CANONICAL_COMMAND_ALIASES.flatMap((entry) => entry.aliases.map((alias) => [alias, entry.canonical])));
@@ -313,11 +313,9 @@ const COMMAND_INTENTS = new Map([
313
313
  ["history-redact", "Redact sensitive history values."],
314
314
  ["history-repair", "Repair history integrity."],
315
315
  ]);
316
- // Lifecycle subcommand flag contracts for `pm extension`. Only `init` differs
317
- // between extension and package: `pm package init` / `pm packages init`
318
- // additionally accept the package-only `--declarative` flag, so the package
319
- // variant swaps in PACKAGE_INIT_FLAG_CONTRACTS while every other subcommand is
320
- // shared verbatim.
316
+ // Lifecycle subcommand flag contracts for `pm extension`. Package lifecycle
317
+ // swaps in the declarative init contract and adds the package-only upgrade
318
+ // command; every shared extension/package subcommand remains byte-identical.
321
319
  const EXTENSION_LIFECYCLE_FLAG_CONTRACTS = [
322
320
  ["init", EXTENSION_INIT_FLAG_CONTRACTS],
323
321
  ["install", EXTENSION_INSTALL_FLAG_CONTRACTS],
@@ -334,9 +332,12 @@ const EXTENSION_LIFECYCLE_FLAG_CONTRACTS = [
334
332
  ["deactivate", EXTENSION_DEACTIVATE_FLAG_CONTRACTS],
335
333
  ["migrate", EXTENSION_MIGRATE_FLAG_CONTRACTS],
336
334
  ];
337
- const PACKAGE_LIFECYCLE_FLAG_CONTRACTS = EXTENSION_LIFECYCLE_FLAG_CONTRACTS.map(([subcommand, flags]) => subcommand === "init"
338
- ? [subcommand, PACKAGE_INIT_FLAG_CONTRACTS]
339
- : [subcommand, flags]);
335
+ const PACKAGE_LIFECYCLE_FLAG_CONTRACTS = [
336
+ ...EXTENSION_LIFECYCLE_FLAG_CONTRACTS.map(([subcommand, flags]) => subcommand === "init"
337
+ ? [subcommand, PACKAGE_INIT_FLAG_CONTRACTS]
338
+ : [subcommand, flags]),
339
+ ["upgrade", UPGRADE_FLAG_CONTRACTS],
340
+ ];
340
341
  const CORE_COMMAND_FLAG_CONTRACT_ENTRIES = [
341
342
  ...EXTENSION_LIFECYCLE_FLAG_CONTRACTS.map(([subcommand, flags]) => [`extension ${subcommand}`, flags]),
342
343
  ...PACKAGE_LIFECYCLE_FLAG_CONTRACTS.flatMap(([subcommand, flags]) => [
@@ -1686,6 +1687,7 @@ const COMMAND_OPERATION_INTENTS = new Map([
1686
1687
  ["run", "Run"],
1687
1688
  ["snapshot", "Manage snapshots for"],
1688
1689
  ["uninstall", "Uninstall"],
1690
+ ["upgrade", "Upgrade"],
1689
1691
  ]);
1690
1692
  const COMMAND_INTENT_SUBJECT_OVERRIDES = new Map([
1691
1693
  ["extension adopt-all", "extensions"],
@@ -2082,4 +2084,4 @@ export const _testOnlyContractsCommand = {
2082
2084
  toRuntimeShortFlagToken,
2083
2085
  };
2084
2086
  //# sourceMappingURL=runtime-contracts.js.map
2085
- //# debugId=428a19d2-be42-548a-a328-aa0e476b8a71
2087
+ //# debugId=a4c43fa6-9f2e-515c-ab47-d21ef5d7878e
@@ -4,7 +4,7 @@
4
4
  * Defines SDK command-contract metadata for Tool Parameter Tables.
5
5
  */
6
6
 
7
- !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]="2d43e788-cb8d-59b8-a447-4d24033bb55b")}catch(e){}}();
7
+ !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]="6968f481-8384-5e3b-8ac0-b0972d08eeb1")}catch(e){}}();
8
8
  import { PLAN_HARNESS_VALUES, PLAN_MODE_VALUES, PLAN_STEP_LINK_KIND_VALUES, PLAN_STEP_STATUS_VALUES, } from "../../types/index.js";
9
9
  import { PM_READ_OUTPUT_SESSION_MAX_SEEN_ITEM_IDS } from "../read-output-session.js";
10
10
  import { ASSURANCE_DEFINITION_SCHEMA } from "./schemas/assurance-definition.js";
@@ -499,6 +499,7 @@ export const PM_TOOL_PARAMETER_PROPERTIES = {
499
499
  noCheckpoint: { type: "boolean" },
500
500
  force: { type: "boolean" },
501
501
  ifAvailable: { type: "boolean" },
502
+ ifAbsent: { type: "boolean" },
502
503
  next: { type: "boolean" },
503
504
  maxAttempts: {
504
505
  anyOf: [
@@ -1266,6 +1267,9 @@ export const PM_TOOL_PARAMETER_METADATA = {
1266
1267
  message: {
1267
1268
  description: "History message for mutation audit trail.",
1268
1269
  },
1270
+ ifAbsent: {
1271
+ description: "For annotations, append only when no existing entry has the same resolved author and exact stored text; retries return changed false without a history event.",
1272
+ },
1269
1273
  assignee: {
1270
1274
  description: "Assignee identity.",
1271
1275
  },
@@ -2029,11 +2033,17 @@ export const PM_TOOL_ACTION_SCOPED_PARAMETER_METADATA = {
2029
2033
  full: {
2030
2034
  description: "Return the complete post-mutation comment history instead of the bounded mutation receipt projection.",
2031
2035
  },
2036
+ ifAbsent: {
2037
+ description: "Append a comment only when the resolved author and exact stored text are absent; a duplicate retry returns changed false without writing history.",
2038
+ },
2032
2039
  },
2033
2040
  notes: {
2034
2041
  full: {
2035
2042
  description: "Return the complete post-mutation note history instead of the bounded mutation receipt projection.",
2036
2043
  },
2044
+ ifAbsent: {
2045
+ description: "Append a note only when the resolved author and exact stored text are absent; a duplicate retry returns changed false without writing history.",
2046
+ },
2037
2047
  since: {
2038
2048
  description: "Inclusive ISO 8601 creation timestamp lower bound for structured note event filtering.",
2039
2049
  examples: ["2026-01-01T00:00:00.000Z"],
@@ -2043,6 +2053,9 @@ export const PM_TOOL_ACTION_SCOPED_PARAMETER_METADATA = {
2043
2053
  full: {
2044
2054
  description: "Return the complete post-mutation learning history instead of the bounded mutation receipt projection.",
2045
2055
  },
2056
+ ifAbsent: {
2057
+ description: "Append a learning only when the resolved author and exact stored text are absent; a duplicate retry returns changed false without writing history.",
2058
+ },
2046
2059
  },
2047
2060
  next: {
2048
2061
  tag: {
@@ -2128,4 +2141,4 @@ export const PM_TOOL_ACTION_SCOPED_PARAMETER_METADATA = {
2128
2141
  },
2129
2142
  };
2130
2143
  //# sourceMappingURL=tool-parameter-tables.js.map
2131
- //# debugId=2d43e788-cb8d-59b8-a447-4d24033bb55b
2144
+ //# debugId=6968f481-8384-5e3b-8ac0-b0972d08eeb1
@@ -91,7 +91,7 @@ export interface PmActionToolInputSchemaOptions {
91
91
  */
92
92
  export declare function buildPmActionToolInputSchema(action: PmToolAction, options?: PmActionToolInputSchemaOptions): Record<string, unknown>;
93
93
  /** Canonical version of the action-scoped strict MCP tool-parameters schema (`PM_TOOL_PARAMETERS_SCHEMA`). Exported as the single source of truth so the MCP server, the `pm contracts` command, SDK consumers, and contract tests bind to one version constant. Bump the patch/minor for additive, backward-compatible schema changes; bump the MAJOR for breaking changes — the major also drives the `$id` `tool-parameters-v{major}` slug, so the two never drift. */
94
- export declare const PM_TOOL_PARAMETERS_SCHEMA_VERSION: "4.9.0";
94
+ export declare const PM_TOOL_PARAMETERS_SCHEMA_VERSION: "4.10.1";
95
95
  /**
96
96
  * Major component of {@link PM_TOOL_PARAMETERS_SCHEMA_VERSION}, used to build the
97
97
  * schema `$id` slug so a breaking version bump renames the document in lockstep.
@@ -7,7 +7,7 @@
7
7
  * consumers from a single source of truth.
8
8
  */
9
9
 
10
- !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]="b54b0565-3968-59ea-b5f9-8ae52731473a")}catch(e){}}();
10
+ !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]="91de08b8-ad0b-5c61-a272-3c18cd3f083b")}catch(e){}}();
11
11
  import { normalizeUniqueStringList } from "./string-lists.js";
12
12
  import { PM_TOOL_ACTIONS } from "./enum-contracts.js";
13
13
  import { TOOL_CREATE_OPTION_CONTRACTS, TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS, TOOL_UPDATE_OPTION_CONTRACTS, TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS, TOOL_CONTEXT_OPTION_CONTRACTS, TOOL_ACTIVITY_OPTION_CONTRACTS, TOOL_LIST_FILTER_OPTION_CONTRACTS, TOOL_AGGREGATE_OPTION_CONTRACTS, TOOL_SEARCH_FILTER_OPTION_CONTRACTS, TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS, } from "./tool-option-contracts.js";
@@ -152,7 +152,8 @@ const PM_TOOL_ACTION_NESTED_OPTION_COMPATIBILITY_KEYS = Object.freeze({
152
152
  "no_checkpoint",
153
153
  "filterAssignee_filter",
154
154
  ],
155
- ...Object.fromEntries(PM_TOOL_ACTIONS.filter((action) => action === "install" ||
155
+ ...Object.fromEntries(PM_TOOL_ACTIONS.filter((action) => action === "upgrade" ||
156
+ action === "install" ||
156
157
  action === "extension" ||
157
158
  action === "package" ||
158
159
  action.startsWith("extension-") ||
@@ -412,6 +413,18 @@ const SCHEDULING_ACTION_SCHEMA_CONTRACT = {
412
413
  "message",
413
414
  ],
414
415
  };
416
+ const UPGRADE_ACTION_SCHEMA_CONTRACT = {
417
+ optional: [
418
+ "target",
419
+ "scope",
420
+ "dryRun",
421
+ "cliOnly",
422
+ "packagesOnly",
423
+ "repair",
424
+ "tag",
425
+ "packageName",
426
+ ],
427
+ };
415
428
  const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
416
429
  init: {
417
430
  optional: [
@@ -442,22 +455,12 @@ const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
442
455
  },
443
456
  ...managedLifecycleSchemaContracts("extension"),
444
457
  ...managedLifecycleSchemaContracts("package"),
458
+ "package-upgrade": UPGRADE_ACTION_SCHEMA_CONTRACT,
445
459
  install: {
446
460
  optional: ["target", "github", "scope", "ref"],
447
461
  anyOfRequired: [["target"], ["github"]],
448
462
  },
449
- upgrade: {
450
- optional: [
451
- "target",
452
- "scope",
453
- "dryRun",
454
- "cliOnly",
455
- "packagesOnly",
456
- "repair",
457
- "tag",
458
- "packageName",
459
- ],
460
- },
463
+ upgrade: UPGRADE_ACTION_SCHEMA_CONTRACT,
461
464
  create: {
462
465
  required: [
463
466
  "title",
@@ -847,8 +850,13 @@ const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
847
850
  "delete",
848
851
  "limit",
849
852
  "full",
853
+ "ifAbsent",
850
854
  ...AUTHOR_MESSAGE_FORCE_PARAMETER_KEYS,
851
855
  ],
856
+ mutuallyExclusive: [
857
+ ["edit", "ifAbsent"],
858
+ ["delete", "ifAbsent"],
859
+ ],
852
860
  },
853
861
  notes: {
854
862
  required: ["id"],
@@ -864,6 +872,7 @@ const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
864
872
  "eventType",
865
873
  "includeMeta",
866
874
  "full",
875
+ "ifAbsent",
867
876
  ...AUTHOR_MESSAGE_FORCE_PARAMETER_KEYS,
868
877
  ],
869
878
  mutuallyExclusive: [
@@ -872,6 +881,8 @@ const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
872
881
  ["addJson", "file"],
873
882
  ["addJson", "edit"],
874
883
  ["addJson", "delete"],
884
+ ["edit", "ifAbsent"],
885
+ ["delete", "ifAbsent"],
875
886
  ],
876
887
  },
877
888
  learnings: {
@@ -884,8 +895,13 @@ const PM_TOOL_ACTION_SCHEMA_CONTRACTS = {
884
895
  "delete",
885
896
  "limit",
886
897
  "full",
898
+ "ifAbsent",
887
899
  ...AUTHOR_MESSAGE_FORCE_PARAMETER_KEYS,
888
900
  ],
901
+ mutuallyExclusive: [
902
+ ["edit", "ifAbsent"],
903
+ ["delete", "ifAbsent"],
904
+ ],
889
905
  },
890
906
  files: {
891
907
  required: [],
@@ -1531,7 +1547,7 @@ function createLazyContractSchema(build) {
1531
1547
  });
1532
1548
  }
1533
1549
  /** Canonical version of the action-scoped strict MCP tool-parameters schema (`PM_TOOL_PARAMETERS_SCHEMA`). Exported as the single source of truth so the MCP server, the `pm contracts` command, SDK consumers, and contract tests bind to one version constant. Bump the patch/minor for additive, backward-compatible schema changes; bump the MAJOR for breaking changes — the major also drives the `$id` `tool-parameters-v{major}` slug, so the two never drift. */
1534
- export const PM_TOOL_PARAMETERS_SCHEMA_VERSION = "4.9.0";
1550
+ export const PM_TOOL_PARAMETERS_SCHEMA_VERSION = "4.10.1";
1535
1551
  /**
1536
1552
  * Major component of {@link PM_TOOL_PARAMETERS_SCHEMA_VERSION}, used to build the
1537
1553
  * schema `$id` slug so a breaking version bump renames the document in lockstep.
@@ -1613,4 +1629,4 @@ export const _testOnlyCliContracts = {
1613
1629
  withFlagAliasMetadata,
1614
1630
  };
1615
1631
  //# sourceMappingURL=tool-schema.js.map
1616
- //# debugId=b54b0565-3968-59ea-b5f9-8ae52731473a
1632
+ //# debugId=91de08b8-ad0b-5c61-a272-3c18cd3f083b
@@ -14,7 +14,7 @@ export type { CommanderOptionAliasContract, CommanderOptionRegistrationContract,
14
14
  export { EXECUTABLE_COMMAND_ALIASES, PM_COMMAND_ALIAS_CONTRACTS, renderPmCommandAliasMigrationHint, resolvePmCommandAlias, type PmCommandAliasContract, type PmCommandAliasLifecycle, type PmCommandAliasRegistration, } from "./cli-contracts/command-aliases.js";
15
15
  export { ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS, CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS, CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS, LIST_COMMANDER_STRING_OPTION_CONTRACTS, NEXT_COMMANDER_STRING_OPTION_CONTRACTS, SEARCH_COMMANDER_STRING_OPTION_CONTRACTS, readFirstValueFromCommanderOptions, readFirstStringFromCommanderOptions, readStringArrayFromCommanderOptions, } from "./cli-contracts/commander-types.js";
16
16
  export { CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS, CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS, CREATE_COMMANDER_STRING_OPTION_CONTRACTS, UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS, UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS, UPDATE_COMMANDER_STRING_OPTION_CONTRACTS, } from "./cli-contracts/commander-mutation-options.js";
17
- export { MERGE_SUBCOMMAND_VALUES, PM_EXTENSION_CAPABILITY_CONTRACTS, PM_EXTENSION_SERVICE_NAME_CONTRACTS, PM_EXTENSION_POLICY_MODE_CONTRACTS, PM_EXTENSION_TRUST_MODE_CONTRACTS, PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS, PM_EXTENSION_POLICY_SURFACE_CONTRACTS, PM_CORE_COMMAND_NAMES, PM_CLI_ONLY_TOOL_ACTION_WAIVERS, PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS, PM_ITEM_ACTION_SUBCOMMANDS, PM_DEPRECATED_TOOL_ACTIONS, PM_DISCOVERABLE_TOOL_ACTIONS, PM_TOOL_ACTIONS, analyzePmToolActionParity, isPmToolAction, isPmExtensionCapabilityContract, isPmExtensionServiceNameContract, isPmExtensionPolicyModeContract, isPmExtensionPolicySurfaceContract, } from "./cli-contracts/enum-contracts.js";
17
+ export { MERGE_SUBCOMMAND_VALUES, PM_EXTENSION_CAPABILITY_CONTRACTS, PM_EXTENSION_SERVICE_NAME_CONTRACTS, PM_EXTENSION_POLICY_MODE_CONTRACTS, PM_EXTENSION_TRUST_MODE_CONTRACTS, PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS, PM_EXTENSION_POLICY_SURFACE_CONTRACTS, PM_CORE_COMMAND_NAMES, PM_CLI_ONLY_TOOL_ACTION_WAIVERS, PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS, PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS, PM_ITEM_ACTION_SUBCOMMANDS, PM_DEPRECATED_TOOL_ACTIONS, PM_DISCOVERABLE_TOOL_ACTIONS, PM_TOOL_ACTIONS, analyzePmToolActionParity, isPmToolAction, isPmExtensionCapabilityContract, isPmExtensionServiceNameContract, isPmExtensionPolicyModeContract, isPmExtensionPolicySurfaceContract, } from "./cli-contracts/enum-contracts.js";
18
18
  export type { MergeSubcommand, PmExtensionCapabilityContract, PmExtensionServiceNameContract, PmExtensionPolicyModeContract, PmExtensionTrustModeContract, PmExtensionSandboxProfileContract, PmExtensionPolicySurfaceContract, PmToolAction, } from "./cli-contracts/enum-contracts.js";
19
19
  export { TOOL_LIST_FILTER_OPTION_CONTRACTS, TOOL_AGGREGATE_OPTION_CONTRACTS, TOOL_SEARCH_FILTER_OPTION_CONTRACTS, TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS, TOOL_CREATE_OPTION_CONTRACTS, TOOL_UPDATE_OPTION_CONTRACTS, TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS, TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS, TOOL_CALENDAR_OPTION_CONTRACTS, TOOL_ACTIVITY_OPTION_CONTRACTS, TOOL_CONTEXT_OPTION_CONTRACTS, TOOL_DEPS_OPTION_CONTRACTS, TOOL_GRAPH_OPTION_CONTRACTS, TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE, TOOL_CREATE_OPTION_CONTRACT_SOURCE, TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE, TOOL_UPDATE_OPTION_CONTRACT_SOURCE, verifyToolOptionCliParity, type ToolOptionCliParityFinding, type ToolOptionCliParityReport, } from "./cli-contracts/tool-option-contracts.js";
20
20
  export type { OptionsFromContracts, PmBulkMutationControlOptions, PmBulkMutationFilterOptions, PmCloseActionOptions, PmCloseManyActionOptions, PmCreateActionOptions, PmMutationAttributionOptions, PmOptionScalar, PmUpdateActionOptions, PmUpdateManyActionOptions, } from "./cli-contracts/typed-action-inputs.js";