@unbrained/pm-cli 2026.8.17 → 2026.8.19

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 (204) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/AGENTS.md +4 -3
  3. package/CHANGELOG.md +51 -5
  4. package/README.md +3 -3
  5. package/dist/cli/error-guidance.js +8 -4
  6. package/dist/cli/help-content.js +32 -13
  7. package/dist/cli/help-json-payload.d.ts +15 -0
  8. package/dist/cli/help-json-payload.js +101 -23
  9. package/dist/cli/main.js +6 -2
  10. package/dist/cli/register-list-query.js +138 -54
  11. package/dist/cli/register-mutation.js +8 -8
  12. package/dist/cli/register-operations.js +6 -6
  13. package/dist/cli-bundle/bundle-manifest.json +149 -149
  14. package/dist/cli-bundle/chunks/chunk-4NRRH7AM.js +2 -0
  15. package/dist/cli-bundle/chunks/chunk-4THEB6PD.js +13 -0
  16. package/dist/cli-bundle/chunks/{chunk-HBJAS566.js → chunk-BHYMXLAE.js} +2 -2
  17. package/dist/cli-bundle/chunks/chunk-GWMXAQOD.js +197 -0
  18. package/dist/cli-bundle/chunks/chunk-HVFQTLYM.js +35 -0
  19. package/dist/cli-bundle/chunks/chunk-OI4XI562.js +5 -0
  20. package/dist/cli-bundle/chunks/{chunk-3UEGXBMR.js → chunk-OIOKV6NO.js} +58 -54
  21. package/dist/cli-bundle/chunks/chunk-QXSH7BLM.js +3 -0
  22. package/dist/cli-bundle/chunks/chunk-SARFF5H5.js +3 -0
  23. package/dist/cli-bundle/chunks/{chunk-7IBRGCHX.js → chunk-TOXJM4WA.js} +2 -2
  24. package/dist/cli-bundle/chunks/{chunk-JOKATURE.js → chunk-YBMRWW4E.js} +44 -44
  25. package/dist/cli-bundle/chunks/register-list-query-Y56KINDU.js +11 -0
  26. package/dist/cli-bundle/chunks/register-mutation-AUWVCW4M.js +20 -0
  27. package/dist/cli-bundle/chunks/register-operations-PZQPHXW5.js +2 -0
  28. package/dist/cli-bundle/chunks/{register-setup-DOSFBGKE.js → register-setup-I4LUHGVW.js} +2 -2
  29. package/dist/cli-bundle/focused-chunks/chunk-34QBIYZI.js +155 -0
  30. package/dist/cli-bundle/focused-chunks/{chunk-MHPIL773.js → chunk-BJRYFVSH.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/chunk-DKPLYW3L.js +2 -0
  32. package/dist/cli-bundle/focused-chunks/{chunk-SALH6B6K.js → chunk-EF6ZS5GH.js} +44 -44
  33. package/dist/cli-bundle/focused-chunks/{chunk-XKAMP5OU.js → chunk-ESISGDAY.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-SYZENPIT.js → chunk-EXBCLIBU.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/chunk-JDOMQ7VQ.js +4 -0
  36. package/dist/cli-bundle/focused-chunks/chunk-L623ZPNK.js +2 -0
  37. package/dist/cli-bundle/focused-chunks/chunk-MCZXYZAF.js +2 -0
  38. package/dist/cli-bundle/focused-chunks/chunk-ODHQEECS.js +2 -0
  39. package/dist/cli-bundle/focused-chunks/{chunk-ZQPGZZWQ.js → chunk-PRHY2IMX.js} +3 -3
  40. package/dist/cli-bundle/focused-chunks/chunk-RZU5U6Q7.js +2 -0
  41. package/dist/cli-bundle/focused-chunks/{chunk-ATEY76SX.js → chunk-US7VEYZG.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/chunk-VXDSU5MC.js +26 -0
  43. package/dist/cli-bundle/focused-chunks/chunk-YBMGXBFV.js +16 -0
  44. package/dist/cli-bundle/focused-chunks/chunk-YLVBJ6GF.js +2 -0
  45. package/dist/cli-bundle/focused-chunks/{chunk-CYFK5UPB.js → chunk-ZBIQQYMI.js} +2 -2
  46. package/dist/cli-bundle/main.js +13 -13
  47. package/dist/cli-bundle/sdk-authoring.js +1 -1
  48. package/dist/cli-bundle/sdk-contracts.js +2 -1
  49. package/dist/cli-bundle/sdk-core.js +28 -28
  50. package/dist/cli-bundle/sdk-governance.js +1 -1
  51. package/dist/cli-bundle/sdk-graph.js +1 -1
  52. package/dist/cli-bundle/sdk-merge.js +32 -32
  53. package/dist/cli-bundle/sdk-query.js +1 -1
  54. package/dist/cli-bundle/sdk-runtime.js +1 -1
  55. package/dist/cli-bundle/sdk-testing.js +1 -1
  56. package/dist/cli-bundle/sdk.js +5 -4
  57. package/dist/core/config/nested-settings.js +8 -2
  58. package/dist/core/extensions/exporter-output-contract.d.ts +12 -0
  59. package/dist/core/extensions/exporter-output-contract.js +67 -0
  60. package/dist/core/extensions/extension-types.d.ts +36 -1
  61. package/dist/core/extensions/extension-types.js +2 -2
  62. package/dist/core/extensions/loader.js +35 -44
  63. package/dist/core/history/event-index.d.ts +5 -0
  64. package/dist/core/history/event-index.js +133 -27
  65. package/dist/core/sentry/helpers.js +3 -3
  66. package/dist/core/shared/constants.js +5 -2
  67. package/dist/core/shared/errors.d.ts +2 -0
  68. package/dist/core/shared/errors.js +2 -2
  69. package/dist/core/store/settings-validator.d.ts +4 -0
  70. package/dist/core/store/settings-validator.js +3 -2
  71. package/dist/core/store/settings.js +8 -2
  72. package/dist/mcp/tool-definitions.js +12 -7
  73. package/dist/sdk/agent/refusal-closure.d.ts +41 -0
  74. package/dist/sdk/agent/refusal-closure.js +92 -0
  75. package/dist/sdk/agent/refusal-reachability.d.ts +1 -1
  76. package/dist/sdk/agent/refusal-reachability.js +4 -4
  77. package/dist/sdk/agent-capability-contracts.d.ts +13 -0
  78. package/dist/sdk/agent-capability-contracts.js +104 -7
  79. package/dist/sdk/authoring.d.ts +1 -1
  80. package/dist/sdk/authoring.js +2 -2
  81. package/dist/sdk/cli-bootstrap.d.ts +2 -2
  82. package/dist/sdk/cli-bootstrap.js +4 -4
  83. package/dist/sdk/cli-contracts/command-aliases.d.ts +34 -2
  84. package/dist/sdk/cli-contracts/command-aliases.js +80 -13
  85. package/dist/sdk/cli-contracts/commander-mutation-options.js +30 -6
  86. package/dist/sdk/cli-contracts/commander-types.js +5 -4
  87. package/dist/sdk/cli-contracts/enum-contracts.d.ts +4 -0
  88. package/dist/sdk/cli-contracts/enum-contracts.js +9 -2
  89. package/dist/sdk/cli-contracts/flag-contracts.d.ts +5 -0
  90. package/dist/sdk/cli-contracts/flag-contracts.js +84 -13
  91. package/dist/sdk/cli-contracts/flag-lexicon-contracts.d.ts +55 -0
  92. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +240 -0
  93. package/dist/sdk/cli-contracts/grammar-contracts.d.ts +151 -0
  94. package/dist/sdk/cli-contracts/grammar-contracts.js +958 -0
  95. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +33 -5
  96. package/dist/sdk/cli-contracts/runtime-contracts.js +100 -23
  97. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +28 -1
  98. package/dist/sdk/cli-contracts/tool-option-contracts.js +38 -3
  99. package/dist/sdk/cli-contracts/tool-parameter-tables.js +7 -2
  100. package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
  101. package/dist/sdk/cli-contracts/tool-schema.js +20 -11
  102. package/dist/sdk/cli-contracts.d.ts +5 -4
  103. package/dist/sdk/cli-contracts.js +7 -6
  104. package/dist/sdk/completion.js +13 -15
  105. package/dist/sdk/compose.d.ts +3 -3
  106. package/dist/sdk/compose.js +2 -2
  107. package/dist/sdk/context-intent-contracts.d.ts +2 -2
  108. package/dist/sdk/context-intent-contracts.js +22 -7
  109. package/dist/sdk/contracts.d.ts +3 -0
  110. package/dist/sdk/contracts.js +5 -2
  111. package/dist/sdk/core.d.ts +1 -1
  112. package/dist/sdk/core.js +3 -3
  113. package/dist/sdk/environment/host-environment-errors.js +3 -3
  114. package/dist/sdk/flag-invocation-contracts.d.ts +37 -0
  115. package/dist/sdk/flag-invocation-contracts.js +218 -9
  116. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +186 -14
  117. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +194 -26
  118. package/dist/sdk/guide-topics.js +5 -5
  119. package/dist/sdk/index.d.ts +10 -7
  120. package/dist/sdk/index.js +10 -7
  121. package/dist/sdk/init-agent-guidance.js +3 -3
  122. package/dist/sdk/mutation-events.d.ts +18 -2
  123. package/dist/sdk/mutation-events.js +59 -16
  124. package/dist/sdk/output-projection.d.ts +2 -0
  125. package/dist/sdk/output-projection.js +11 -5
  126. package/dist/sdk/output.d.ts +44 -0
  127. package/dist/sdk/output.js +28 -2
  128. package/dist/sdk/query/complete-list.d.ts +94 -0
  129. package/dist/sdk/query/complete-list.js +173 -0
  130. package/dist/sdk/query/get.js +25 -6
  131. package/dist/sdk/query/list.js +19 -2
  132. package/dist/sdk/query/search-contracts.d.ts +1 -1
  133. package/dist/sdk/query/search-contracts.js +23 -9
  134. package/dist/sdk/query/search.js +3 -3
  135. package/dist/sdk/query.d.ts +1 -0
  136. package/dist/sdk/query.js +3 -2
  137. package/dist/sdk/read-output/continuation.d.ts +1 -1
  138. package/dist/sdk/read-output/continuation.js +7 -24
  139. package/dist/sdk/read-output-contracts.d.ts +2 -2
  140. package/dist/sdk/read-output-contracts.js +89 -13
  141. package/dist/sdk/read-output-rows.d.ts +4 -0
  142. package/dist/sdk/read-output-rows.js +47 -18
  143. package/dist/sdk/runtime-extended-actions.js +10 -2
  144. package/dist/sdk/runtime.d.ts +8 -2
  145. package/dist/sdk/runtime.js +18 -11
  146. package/dist/sdk/workspace-snapshot.d.ts +2 -0
  147. package/dist/sdk/workspace-snapshot.js +10 -2
  148. package/dist/types.d.ts +5 -0
  149. package/dist/types.js +2 -2
  150. package/docs/AGENT_GUIDE.md +25 -9
  151. package/docs/CLI_GRAMMAR.md +106 -0
  152. package/docs/COMMANDS.md +39 -27
  153. package/docs/ONBOARDING.md +4 -4
  154. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +11 -2
  155. package/docs/QUICKSTART.md +1 -1
  156. package/docs/README.md +2 -0
  157. package/docs/READ_OUTPUT_CONTRACTS.md +10 -6
  158. package/docs/RELEASING.md +30 -6
  159. package/docs/SDK.md +42 -2
  160. package/docs/SDK_ARTIFACT_OUTPUT.md +72 -0
  161. package/docs/SDK_CONTEXT_COORDINATION.md +46 -12
  162. package/docs/TESTING.md +14 -1
  163. package/docs/agent-task-token-baseline.json +5 -5
  164. package/docs/generated/AGENT_COMMAND_SURFACE.md +78 -78
  165. package/docs/generated/FLAG_LEXICON_BUDGETS.md +76 -0
  166. package/marketplace.json +2 -2
  167. package/package.json +5 -2
  168. package/packages/pm-beads/package.json +1 -1
  169. package/packages/pm-calendar/package.json +1 -1
  170. package/packages/pm-command-kit/package.json +1 -1
  171. package/packages/pm-digital-twin/package.json +1 -1
  172. package/packages/pm-governance-audit/package.json +1 -1
  173. package/packages/pm-guide-shell/package.json +1 -1
  174. package/packages/pm-kanban/package.json +1 -1
  175. package/packages/pm-lifecycle-hooks/package.json +1 -1
  176. package/packages/pm-linked-test-adapters/package.json +1 -1
  177. package/packages/pm-search-advanced/package.json +1 -1
  178. package/packages/pm-templates/package.json +1 -1
  179. package/packages/pm-todos/package.json +1 -1
  180. package/packages/pm-vcs/package.json +1 -1
  181. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  182. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  183. package/scripts/generate-agent-capability-surfaces.mjs +20 -14
  184. package/sdk/public-surface.json +1245 -60
  185. package/dist/cli-bundle/chunks/chunk-2QLOXC3V.js +0 -3
  186. package/dist/cli-bundle/chunks/chunk-4JPYF536.js +0 -35
  187. package/dist/cli-bundle/chunks/chunk-6VDLG2FC.js +0 -13
  188. package/dist/cli-bundle/chunks/chunk-ION3E43Q.js +0 -197
  189. package/dist/cli-bundle/chunks/chunk-OAC5NIV4.js +0 -3
  190. package/dist/cli-bundle/chunks/chunk-TPXZIBIV.js +0 -5
  191. package/dist/cli-bundle/chunks/chunk-YM2YAMF7.js +0 -2
  192. package/dist/cli-bundle/chunks/register-list-query-Q7KII4G5.js +0 -10
  193. package/dist/cli-bundle/chunks/register-mutation-4WBRPXLV.js +0 -20
  194. package/dist/cli-bundle/chunks/register-operations-SSENDH5B.js +0 -2
  195. package/dist/cli-bundle/focused-chunks/chunk-267MUUS6.js +0 -16
  196. package/dist/cli-bundle/focused-chunks/chunk-2NNFLLNG.js +0 -2
  197. package/dist/cli-bundle/focused-chunks/chunk-2QSAKMIH.js +0 -2
  198. package/dist/cli-bundle/focused-chunks/chunk-BUCG4ZI2.js +0 -2
  199. package/dist/cli-bundle/focused-chunks/chunk-EHXIKD6K.js +0 -2
  200. package/dist/cli-bundle/focused-chunks/chunk-KGEXTMPG.js +0 -2
  201. package/dist/cli-bundle/focused-chunks/chunk-KP2VQQVQ.js +0 -2
  202. package/dist/cli-bundle/focused-chunks/chunk-POEEAD2V.js +0 -4
  203. package/dist/cli-bundle/focused-chunks/chunk-XPIC53VA.js +0 -26
  204. package/dist/cli-bundle/focused-chunks/chunk-ZT2DJS27.js +0 -155
@@ -1,19 +1,86 @@
1
1
  /**
2
2
  * @module sdk/cli-contracts/command-aliases
3
3
  *
4
- * Defines executable command aliases shared by bootstrap parsing and SDK package scaffolding.
4
+ * Declares command aliases once so CLI registration, bootstrap parsing,
5
+ * contracts, completions, and package authors can share one compatibility
6
+ * policy instead of maintaining parallel spelling lists.
7
+ */
8
+ /**
9
+ * Public command-alias table. Deprecated aliases must remain executable but
10
+ * are intentionally absent from default help and completion discovery.
5
11
  */
6
- /** High-frequency executable aliases whose targets accept the same positional and flag contracts. */
7
12
 
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]="940f11a8-f40d-5169-ba74-e91920d32c4a")}catch(e){}}();
9
- export const EXECUTABLE_COMMAND_ALIASES = {
10
- fetch: "get",
11
- read: "get",
12
- show: "get",
13
- view: "get",
14
- comment: "comments",
15
- note: "notes",
16
- learning: "learnings",
17
- };
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){}}();
14
+ export const PM_COMMAND_ALIAS_CONTRACTS = [
15
+ ...[
16
+ ["fetch", "get"],
17
+ ["read", "get"],
18
+ ["show", "get"],
19
+ ["view", "get"],
20
+ ["comment", "comments"],
21
+ ["note", "notes"],
22
+ ["learning", "learnings"],
23
+ ].map(([alias, canonical]) => ({
24
+ alias,
25
+ canonical,
26
+ canonical_argv: [canonical],
27
+ lifecycle: "permanent",
28
+ hidden: false,
29
+ registration: "bootstrap",
30
+ owner: "pm-pbyu",
31
+ })),
32
+ ...[
33
+ ["extension list", "extension catalog"],
34
+ ["extension scaffold", "extension init"],
35
+ ["package list", "package catalog"],
36
+ ["package scaffold", "package init"],
37
+ ["packages list", "packages catalog"],
38
+ ["packages scaffold", "packages init"],
39
+ ].map(([alias, canonical]) => ({
40
+ alias,
41
+ canonical,
42
+ canonical_argv: canonical.split(" "),
43
+ lifecycle: "permanent",
44
+ hidden: false,
45
+ registration: "commander",
46
+ owner: "pm-ya7x55",
47
+ })),
48
+ {
49
+ alias: "list-all",
50
+ canonical: "list",
51
+ canonical_argv: ["list", "--all"],
52
+ lifecycle: "deprecated",
53
+ hidden: true,
54
+ registration: "commander",
55
+ owner: "pm-pfqi",
56
+ },
57
+ ...[
58
+ ["list-draft", "draft"],
59
+ ["list-open", "open"],
60
+ ["list-in-progress", "in_progress"],
61
+ ["list-blocked", "blocked"],
62
+ ["list-closed", "closed"],
63
+ ["list-canceled", "canceled"],
64
+ ].map(([alias, status]) => ({
65
+ alias,
66
+ canonical: "list",
67
+ canonical_argv: ["list", "--status", status],
68
+ lifecycle: "deprecated",
69
+ hidden: true,
70
+ registration: "commander",
71
+ owner: "pm-pfqi",
72
+ })),
73
+ ];
74
+ /** High-frequency executable aliases whose targets accept identical arguments. */
75
+ export const EXECUTABLE_COMMAND_ALIASES = Object.fromEntries(PM_COMMAND_ALIAS_CONTRACTS.filter((contract) => contract.registration === "bootstrap").map((contract) => [contract.alias, contract.canonical]));
76
+ /** Resolve one declared command alias without inferring from its spelling. */
77
+ export function resolvePmCommandAlias(alias) {
78
+ const normalized = alias.trim().toLowerCase();
79
+ return PM_COMMAND_ALIAS_CONTRACTS.find((contract) => contract.alias === normalized);
80
+ }
81
+ /** Render the stable one-line migration hint emitted for deprecated aliases. */
82
+ export function renderPmCommandAliasMigrationHint(contract) {
83
+ return `Deprecated command \`${contract.alias}\`; use \`pm ${contract.canonical_argv.join(" ")}\`.`;
84
+ }
18
85
  //# sourceMappingURL=command-aliases.js.map
19
- //# debugId=940f11a8-f40d-5169-ba74-e91920d32c4a
86
+ //# debugId=9afc5057-afcd-5d6c-a4c1-c2883640fc50
@@ -1,6 +1,6 @@
1
1
  /** Creates commander option registration contracts using the validated operation inputs. */
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f7e87e15-b5f3-53ab-86e2-768e94d5d329")}catch(e){}}();
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]="93ce68bd-3140-5361-a6d0-bc60c7304a29")}catch(e){}}();
4
4
  export const CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS = [
5
5
  {
6
6
  target: "title",
@@ -501,17 +501,29 @@ export const CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS = [
501
501
  },
502
502
  {
503
503
  target: "file",
504
- keys: ["file"],
504
+ keys: ["file", "linkedFile"],
505
505
  option: "--file <value>",
506
506
  description: "Seed linked file entry (CSV/markdown pairs or - for stdin; repeatable)",
507
507
  repeatable: true,
508
+ aliasOptions: [
509
+ {
510
+ option: "--linked-file <value>",
511
+ description: "Alias for --file (cross-surface name)",
512
+ },
513
+ ],
508
514
  },
509
515
  {
510
516
  target: "test",
511
- keys: ["test"],
517
+ keys: ["test", "linkedTest"],
512
518
  option: "--test <value>",
513
519
  description: "Seed linked test entry (CSV/markdown pairs or - for stdin; repeatable)",
514
520
  repeatable: true,
521
+ aliasOptions: [
522
+ {
523
+ option: "--linked-test <value>",
524
+ description: "Alias for --test (cross-surface name)",
525
+ },
526
+ ],
515
527
  },
516
528
  {
517
529
  target: "doc",
@@ -989,17 +1001,29 @@ export const UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS = [
989
1001
  },
990
1002
  {
991
1003
  target: "file",
992
- keys: ["file"],
1004
+ keys: ["file", "linkedFile"],
993
1005
  option: "--file <value>",
994
1006
  description: "Append linked file path=<value>,scope=<project|global>,note=<text> (also accepts markdown pairs and - for stdin; repeatable)",
995
1007
  repeatable: true,
1008
+ aliasOptions: [
1009
+ {
1010
+ option: "--linked-file <value>",
1011
+ description: "Alias for --file (cross-surface name)",
1012
+ },
1013
+ ],
996
1014
  },
997
1015
  {
998
1016
  target: "test",
999
- keys: ["test"],
1017
+ keys: ["test", "linkedTest"],
1000
1018
  option: "--test <value>",
1001
1019
  description: "Append linked test command=<value>,path=<value>,scope=<project|global>,timeout_seconds=<n>,pm_context_mode=<schema|tracker|auto> (also accepts markdown pairs and - for stdin; repeatable)",
1002
1020
  repeatable: true,
1021
+ aliasOptions: [
1022
+ {
1023
+ option: "--linked-test <value>",
1024
+ description: "Alias for --test (cross-surface name)",
1025
+ },
1026
+ ],
1003
1027
  },
1004
1028
  {
1005
1029
  target: "doc",
@@ -1055,4 +1079,4 @@ export const UPDATE_COMMANDER_STRING_OPTION_CONTRACTS = UPDATE_COMMANDER_OPTION_
1055
1079
  /** Public contract for update commander repeatable option contracts, shared by SDK and presentation-layer consumers. */
1056
1080
  export const UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS = UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS.filter((entry) => entry.repeatable === true).map((entry) => ({ target: entry.target, keys: entry.keys }));
1057
1081
  //# sourceMappingURL=commander-mutation-options.js.map
1058
- //# debugId=f7e87e15-b5f3-53ab-86e2-768e94d5d329
1082
+ //# debugId=93ce68bd-3140-5361-a6d0-bc60c7304a29
@@ -1,6 +1,6 @@
1
1
  /** Public contract for list commander string option contracts, shared by SDK and presentation-layer consumers. */
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3b9b9ebe-8d98-5983-8257-b7b77c7e6194")}catch(e){}}();
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]="5f56c4ef-58e1-5cf6-a10e-dfa29b9ad3e8")}catch(e){}}();
4
4
  export const LIST_COMMANDER_STRING_OPTION_CONTRACTS = [
5
5
  { target: "status", keys: ["status"] },
6
6
  { target: "type", keys: ["type"] },
@@ -147,13 +147,14 @@ export function readFirstValueFromCommanderOptions(options, contract) {
147
147
  }
148
148
  /** Implements read string array from commander options for the public runtime surface of this module. */
149
149
  export function readStringArrayFromCommanderOptions(options, contract) {
150
+ const values = [];
150
151
  for (const key of contract.keys) {
151
152
  const candidate = options[key];
152
153
  if (Array.isArray(candidate)) {
153
- return candidate;
154
+ values.push(...candidate.filter((value) => typeof value === "string"));
154
155
  }
155
156
  }
156
- return undefined;
157
+ return values.length > 0 ? values : undefined;
157
158
  }
158
159
  //# sourceMappingURL=commander-types.js.map
159
- //# debugId=3b9b9ebe-8d98-5983-8257-b7b77c7e6194
160
+ //# debugId=5f56c4ef-58e1-5cf6-a10e-dfa29b9ad3e8
@@ -46,6 +46,10 @@ export type PmToolAction = Exclude<PmCoreCommandName, PmCliOnlyToolAction> | PmE
46
46
  * package verbs are flattened for transports that expose one action string.
47
47
  */
48
48
  export declare const PM_TOOL_ACTIONS: readonly PmToolAction[];
49
+ /** Deprecated compatibility actions accepted by the SDK but omitted from canonical MCP discovery. */
50
+ export declare const PM_DEPRECATED_TOOL_ACTIONS: readonly PmToolAction[];
51
+ /** Canonical actions presented to MCP clients and unscoped contract consumers. */
52
+ export declare const PM_DISCOVERABLE_TOOL_ACTIONS: readonly PmToolAction[];
49
53
  /** Static CLI-to-tool action parity evidence used by quality gates and tests. */
50
54
  export declare function analyzePmToolActionParity(cliCommands?: readonly string[], toolActions?: readonly string[], waivers?: Readonly<Record<string, string>>): {
51
55
  missing_cli_actions: string[];
@@ -4,8 +4,9 @@
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]="818ca284-2aaa-5d35-b280-8c963d443b0c")}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]="d05ce92b-bee8-5cce-afc2-8c7901306a30")}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
+ import { PM_COMMAND_ALIAS_CONTRACTS } from "./command-aliases.js";
9
10
  /** Public contract for pm extension capability contracts, shared by SDK and presentation-layer consumers. */
10
11
  export const PM_EXTENSION_CAPABILITY_CONTRACTS = [
11
12
  ...KNOWN_EXTENSION_CAPABILITIES,
@@ -160,6 +161,12 @@ export const PM_TOOL_ACTIONS = Object.freeze(PM_CORE_COMMAND_NAMES.flatMap((comm
160
161
  }
161
162
  return [command];
162
163
  }));
164
+ /** Deprecated compatibility actions accepted by the SDK but omitted from canonical MCP discovery. */
165
+ export const PM_DEPRECATED_TOOL_ACTIONS = Object.freeze(PM_COMMAND_ALIAS_CONTRACTS.filter((contract) => contract.lifecycle === "deprecated" &&
166
+ contract.registration === "commander" &&
167
+ PM_TOOL_ACTIONS.includes(contract.alias)).map((contract) => contract.alias));
168
+ /** Canonical actions presented to MCP clients and unscoped contract consumers. */
169
+ export const PM_DISCOVERABLE_TOOL_ACTIONS = Object.freeze(PM_TOOL_ACTIONS.filter((action) => !PM_DEPRECATED_TOOL_ACTIONS.includes(action)));
163
170
  /** Static CLI-to-tool action parity evidence used by quality gates and tests. */
164
171
  export function analyzePmToolActionParity(cliCommands = PM_CORE_COMMAND_NAMES, toolActions = PM_TOOL_ACTIONS, waivers = PM_CLI_ONLY_TOOL_ACTION_WAIVERS) {
165
172
  const toolActionSet = new Set(toolActions);
@@ -191,4 +198,4 @@ export function isPmExtensionPolicySurfaceContract(value) {
191
198
  return PM_EXTENSION_POLICY_SURFACE_CONTRACTS.includes(value);
192
199
  }
193
200
  //# sourceMappingURL=enum-contracts.js.map
194
- //# debugId=818ca284-2aaa-5d35-b280-8c963d443b0c
201
+ //# debugId=d05ce92b-bee8-5cce-afc2-8c7901306a30
@@ -1,3 +1,4 @@
1
+ import { type PmPositionalActionContract } from "./grammar-contracts.js";
1
2
  /** A single CLI flag's contract: its canonical `--flag`, optional short form, aliases, value metadata, and repeat/list semantics. One source of truth shared by Commander registration, argv normalization, shell completion, and the `pm contracts` command so every surface agrees on the flag vocabulary. */
2
3
  export interface CliFlagContract {
3
4
  /** Value that configures or reports flag for this contract. */
@@ -214,6 +215,10 @@ export declare const CONTRACTS_FLAG_CONTRACTS: CliFlagContract[];
214
215
  export declare const COMPLETION_FLAG_CONTRACTS: CliFlagContract[];
215
216
  /** Deduplicates flag contracts by their `flag`/`short`/`aliases` identity, preserving first-seen order. Used when merging the shared subcommand-global flags into a command's own contracts so a flag declared by both surfaces is registered only once. */
216
217
  export declare function toUniqueFlagContracts(contracts: CliFlagContract[]): CliFlagContract[];
218
+ /** Resolve every positional action's accepted flags against one parent contract. */
219
+ export declare function resolvePmPositionalActionFlagContracts(actions?: readonly PmPositionalActionContract[]): Array<readonly [string, CliFlagContract[]]>;
220
+ /** Validated positional action flag entries shared by registration and contracts. */
221
+ export declare const PM_POSITIONAL_ACTION_FLAG_CONTRACTS: (readonly [string, CliFlagContract[]])[];
217
222
  /** Returns whether a normalized command path owns a concrete core flag-contract row. Surface-less commands such as `help` intentionally return false, while positional virtual paths such as `workspace snapshot create` return true. */
218
223
  export declare function hasSubcommandFlagContractsForCommand(commandName: string | undefined): boolean;
219
224
  /** Resolves the flag contracts a given command (or list/extension subcommand) accepts, merged with the shared subcommand-global flags. Returns the global set for unknown or surface-less commands so completion and validation degrade gracefully. */
@@ -7,9 +7,10 @@
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]="c82d9b50-274f-585d-be0e-9a0c5067b9e9")}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]="505e9b6b-a62a-5981-8862-619624246170")}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
+ import { PM_POSITIONAL_ACTION_CONTRACTS, } from "./grammar-contracts.js";
13
14
  function normalizeFlagAliasKey(flag) {
14
15
  if (!flag.startsWith("--")) {
15
16
  return flag;
@@ -136,6 +137,7 @@ export const LIST_FILTER_FLAG_CONTRACTS = withCursorSemantics([
136
137
  { flag: "--for", value_name: "intent" },
137
138
  { flag: "--token-budget", aliases: ["--token_budget"] },
138
139
  { flag: "--status", list: true },
140
+ { flag: "--all", value_type: "boolean" },
139
141
  { flag: "--type", list: true },
140
142
  { flag: "--tag", aliases: ["--tags"], list: true },
141
143
  { flag: "--priority", list: true },
@@ -1138,8 +1140,8 @@ export const CREATE_FLAG_CONTRACTS = [
1138
1140
  { flag: "--comment" },
1139
1141
  { flag: "--note" },
1140
1142
  { flag: "--learning" },
1141
- { flag: "--file" },
1142
- { flag: "--test" },
1143
+ { flag: "--file", aliases: ["--linked-file"] },
1144
+ { flag: "--test", aliases: ["--linked-test"] },
1143
1145
  { flag: "--doc" },
1144
1146
  { flag: "--unset" },
1145
1147
  { flag: "--clear-deps" },
@@ -1239,8 +1241,8 @@ export const UPDATE_FLAG_CONTRACTS = [
1239
1241
  { flag: "--comment" },
1240
1242
  { flag: "--note" },
1241
1243
  { flag: "--learning" },
1242
- { flag: "--file" },
1243
- { flag: "--test" },
1244
+ { flag: "--file", aliases: ["--linked-file"] },
1245
+ { flag: "--test", aliases: ["--linked-test"] },
1244
1246
  { flag: "--doc" },
1245
1247
  { flag: "--reminder" },
1246
1248
  { flag: "--event" },
@@ -1416,6 +1418,7 @@ export const EVENTS_FLAG_CONTRACTS = [
1416
1418
  { flag: "--author", repeatable: true },
1417
1419
  { flag: "--item", repeatable: true },
1418
1420
  { flag: "--limit", value_type: "number" },
1421
+ { flag: "--cursor-mode", value_name: "batch|row" },
1419
1422
  { flag: "--full" },
1420
1423
  { flag: "--provenance" },
1421
1424
  { flag: "--provenance-summary" },
@@ -1634,11 +1637,35 @@ export function toUniqueFlagContracts(contracts) {
1634
1637
  return unique;
1635
1638
  }
1636
1639
  function withSubcommandGlobalFlags(contracts) {
1637
- return withFlagAliasMetadata(toUniqueFlagContracts([...SUBCOMMAND_GLOBAL_FLAG_CONTRACTS, ...contracts]));
1640
+ const byCanonicalFlag = new Map();
1641
+ for (const contract of [...SUBCOMMAND_GLOBAL_FLAG_CONTRACTS, ...contracts]) {
1642
+ const canonicalFlag = normalizeFlagAliasKey(contract.flag);
1643
+ const prior = byCanonicalFlag.get(canonicalFlag);
1644
+ const { aliases: declaredAliases, ...contractWithoutAliases } = contract;
1645
+ const aliases = normalizeUniqueStringList([
1646
+ ...(declaredAliases ?? []),
1647
+ ...(contract.flag === canonicalFlag ? [] : [contract.flag]),
1648
+ ]).filter((alias) => alias !== canonicalFlag);
1649
+ const normalizedContract = {
1650
+ ...contractWithoutAliases,
1651
+ flag: canonicalFlag,
1652
+ ...(aliases.length > 0 ? { aliases } : {}),
1653
+ };
1654
+ const mergedAliases = normalizeUniqueStringList([
1655
+ ...(prior?.aliases ?? []),
1656
+ ...(normalizedContract.aliases ?? []),
1657
+ ]);
1658
+ byCanonicalFlag.set(canonicalFlag, prior === undefined
1659
+ ? normalizedContract
1660
+ : {
1661
+ ...prior,
1662
+ ...normalizedContract,
1663
+ ...(mergedAliases.length > 0 ? { aliases: mergedAliases } : {}),
1664
+ });
1665
+ }
1666
+ return withFlagAliasMetadata([...byCanonicalFlag.values()]);
1638
1667
  }
1639
- const LIST_COMMAND_FLAG_ALIASES = [
1640
- "list",
1641
- "list-all",
1668
+ const FIXED_STATUS_LIST_COMMAND_ALIASES = [
1642
1669
  "list-draft",
1643
1670
  "list-open",
1644
1671
  "list-in-progress",
@@ -1646,6 +1673,45 @@ const LIST_COMMAND_FLAG_ALIASES = [
1646
1673
  "list-closed",
1647
1674
  "list-canceled",
1648
1675
  ];
1676
+ const FIXED_STATUS_LIST_FLAG_CONTRACTS = LIST_FILTER_FLAG_CONTRACTS.filter((contract) => contract.flag !== "--status" && contract.flag !== "--all");
1677
+ const ALL_STATUS_LIST_FLAG_CONTRACTS = LIST_FILTER_FLAG_CONTRACTS.filter((contract) => contract.flag !== "--status");
1678
+ function indexCliFlagContracts(contracts) {
1679
+ const index = new Map();
1680
+ for (const contract of contracts) {
1681
+ for (const spelling of [contract.flag, ...(contract.aliases ?? [])]) {
1682
+ const matches = index.get(spelling) ?? [];
1683
+ matches.push(contract);
1684
+ index.set(spelling, matches);
1685
+ }
1686
+ }
1687
+ return index;
1688
+ }
1689
+ const PLAN_FLAG_CONTRACT_INDEX = indexCliFlagContracts(PLAN_FLAG_CONTRACTS);
1690
+ const ASSURANCE_FLAG_CONTRACT_INDEX = indexCliFlagContracts(ASSURANCE_FLAG_CONTRACTS);
1691
+ const POSITIONAL_ACTION_FLAG_INDEX_BY_PARENT = new Map([
1692
+ ["assurance", ASSURANCE_FLAG_CONTRACT_INDEX],
1693
+ ["plan", PLAN_FLAG_CONTRACT_INDEX],
1694
+ ["workspace snapshot", indexCliFlagContracts(WORKSPACE_FLAG_CONTRACTS)],
1695
+ ]);
1696
+ /** Resolve every positional action's accepted flags against one parent contract. */
1697
+ export function resolvePmPositionalActionFlagContracts(actions = PM_POSITIONAL_ACTION_CONTRACTS) {
1698
+ return actions.map(({ command, parent, accepted_flags: acceptedFlags }) => {
1699
+ const parentFlagIndex = POSITIONAL_ACTION_FLAG_INDEX_BY_PARENT.get(parent);
1700
+ if (!parentFlagIndex) {
1701
+ throw new Error(`Positional action ${command} has no flag-contract index for ${parent}.`);
1702
+ }
1703
+ const selected = acceptedFlags.map((acceptedFlag) => {
1704
+ const matches = parentFlagIndex.get(acceptedFlag) ?? [];
1705
+ if (matches.length !== 1) {
1706
+ throw new Error(`Positional action ${command} accepted flag ${acceptedFlag} does not resolve to exactly one ${parent} flag contract.`);
1707
+ }
1708
+ return matches[0];
1709
+ });
1710
+ return [command, selected];
1711
+ });
1712
+ }
1713
+ /** Validated positional action flag entries shared by registration and contracts. */
1714
+ export const PM_POSITIONAL_ACTION_FLAG_CONTRACTS = resolvePmPositionalActionFlagContracts();
1649
1715
  // Single-token command (plus the `list`/`cal`/`ctx`/`templates` aliases) → its
1650
1716
  // dedicated flag-contract table. Lookups fall back to the subcommand-global set,
1651
1717
  // so tokens absent here (`reindex`, `help`, or any unknown command) degrade to
@@ -1653,9 +1719,11 @@ const LIST_COMMAND_FLAG_ALIASES = [
1653
1719
  // plain object) keeps an untrusted command token from ever resolving an inherited
1654
1720
  // member such as `constructor` or `toString`.
1655
1721
  const SUBCOMMAND_FLAG_CONTRACTS_BY_COMMAND = new Map([
1656
- ...LIST_COMMAND_FLAG_ALIASES.map((command) => [
1722
+ ["list", LIST_FILTER_FLAG_CONTRACTS],
1723
+ ["list-all", ALL_STATUS_LIST_FLAG_CONTRACTS],
1724
+ ...FIXED_STATUS_LIST_COMMAND_ALIASES.map((command) => [
1657
1725
  command,
1658
- LIST_FILTER_FLAG_CONTRACTS,
1726
+ FIXED_STATUS_LIST_FLAG_CONTRACTS,
1659
1727
  ]),
1660
1728
  ["templates", CREATE_FLAG_CONTRACTS],
1661
1729
  ["cal", CALENDAR_FLAG_CONTRACTS],
@@ -1719,6 +1787,7 @@ const SUBCOMMAND_FLAG_CONTRACTS_BY_COMMAND = new Map([
1719
1787
  ["telemetry", TELEMETRY_FLAG_CONTRACTS],
1720
1788
  ["health", HEALTH_FLAG_CONTRACTS],
1721
1789
  ["assurance", ASSURANCE_FLAG_CONTRACTS],
1790
+ ...PM_POSITIONAL_ACTION_FLAG_CONTRACTS,
1722
1791
  ["validate", VALIDATE_FLAG_CONTRACTS],
1723
1792
  ["gc", GC_FLAG_CONTRACTS],
1724
1793
  ["stats", STATS_FLAG_CONTRACTS],
@@ -1747,6 +1816,7 @@ const EXTENSION_LIFECYCLE_FLAG_CONTRACTS_BY_SUBCOMMAND = new Map([
1747
1816
  ["reload", EXTENSION_RELOAD_FLAG_CONTRACTS],
1748
1817
  ["doctor", EXTENSION_DOCTOR_FLAG_CONTRACTS],
1749
1818
  ["catalog", EXTENSION_CATALOG_FLAG_CONTRACTS],
1819
+ ["list", EXTENSION_CATALOG_FLAG_CONTRACTS],
1750
1820
  ["adopt", EXTENSION_ADOPT_FLAG_CONTRACTS],
1751
1821
  ["adopt-all", EXTENSION_ADOPT_ALL_FLAG_CONTRACTS],
1752
1822
  ["activate", EXTENSION_ACTIVATE_FLAG_CONTRACTS],
@@ -1772,11 +1842,12 @@ export function hasSubcommandFlagContractsForCommand(commandName) {
1772
1842
  lifecycleSubcommand !== undefined &&
1773
1843
  extraParts.length === 0 &&
1774
1844
  (lifecycleSubcommand === "init" ||
1845
+ lifecycleSubcommand === "scaffold" ||
1775
1846
  EXTENSION_LIFECYCLE_FLAG_CONTRACTS_BY_SUBCOMMAND.has(lifecycleSubcommand)));
1776
1847
  }
1777
1848
  /** Resolves the flag contracts an `extension`/`package <subcommand>` lifecycle invocation accepts. `init` carries the package-only `--declarative` flag, so `package`/`packages init` resolve to the package init table while `extension init` resolves to the extension init table; every other lifecycle subcommand shares one table, and an unknown subcommand falls back to globals-only. */
1778
1849
  function resolveExtensionLifecycleFlagContracts(rootCommand, lifecycleSubcommand) {
1779
- if (lifecycleSubcommand === "init") {
1850
+ if (lifecycleSubcommand === "init" || lifecycleSubcommand === "scaffold") {
1780
1851
  // `--declarative` is package-only, so `package init` / `packages init` carry it.
1781
1852
  return rootCommand === "extension"
1782
1853
  ? EXTENSION_INIT_FLAG_CONTRACTS
@@ -1821,4 +1892,4 @@ export function toCompletionFlagString(flagContracts, includeGlobal = true) {
1821
1892
  return normalizeUniqueStringList(all).join(" ");
1822
1893
  }
1823
1894
  //# sourceMappingURL=flag-contracts.js.map
1824
- //# debugId=c82d9b50-274f-585d-be0e-9a0c5067b9e9
1895
+ //# debugId=505e9b6b-a62a-5981-8862-619624246170
@@ -0,0 +1,55 @@
1
+ import { type PmCommandCapabilityFamily } from "../agent-capability-contracts.js";
2
+ /** Stable value kinds used by the public flag lexicon. */
3
+ export type PmFlagValueKind = "boolean" | "string" | "number" | "list";
4
+ /** One canonical command-flag concept and every accepted compatibility alias. */
5
+ export interface PmFlagLexiconEntry {
6
+ /** Canonical command path. */
7
+ command: string;
8
+ /** Command capability family. */
9
+ family: PmCommandCapabilityFamily;
10
+ /** Stable semantic concept identifier. */
11
+ concept: string;
12
+ /** Canonical long spelling emitted by generated surfaces. */
13
+ flag: string;
14
+ /** Accepted compatibility spellings that must never become canonical rows. */
15
+ aliases: readonly string[];
16
+ /** Parsed value shape. */
17
+ value_kind: PmFlagValueKind;
18
+ }
19
+ /** Ratcheted canonical flag budget for one command. */
20
+ export interface PmCommandFlagBudget {
21
+ /** Canonical command path. */
22
+ command: string;
23
+ /** Current canonical flag count. */
24
+ current: number;
25
+ /** Maximum count accepted by the repository gate. */
26
+ maximum: number;
27
+ }
28
+ /** One fail-closed lexicon or budget violation. */
29
+ export interface PmFlagLexiconFinding {
30
+ /** Stable finding code. */
31
+ code: "alias_collision" | "budget_exceeded" | "duplicate_canonical_flag" | "inconsistent_concept_kind" | "missing_budget" | "stale_budget";
32
+ /** Canonical command path. */
33
+ command: string;
34
+ /** Human-readable finding detail. */
35
+ detail: string;
36
+ }
37
+ /** Complete verification receipt for a flag lexicon corpus. */
38
+ export interface PmFlagLexiconReport {
39
+ /** Whether every invariant and ratchet passed. */
40
+ ok: boolean;
41
+ /** Number of canonical command-flag rows checked. */
42
+ entry_count: number;
43
+ /** Number of command budgets checked. */
44
+ budget_count: number;
45
+ /** Stable ordered findings. */
46
+ findings: readonly PmFlagLexiconFinding[];
47
+ }
48
+ /** Build the canonical lexicon lazily from the same contracts as CLI and MCP. */
49
+ export declare function listPmFlagLexicon(): readonly PmFlagLexiconEntry[];
50
+ /** Return persisted no-growth ratchets with current counts derived from the canonical vocabulary. */
51
+ export declare function listPmCommandFlagBudgets(): readonly PmCommandFlagBudget[];
52
+ /** Verify uniqueness, concept kind stability, alias safety, and flag budgets. */
53
+ export declare function verifyPmFlagLexicon(entries?: readonly PmFlagLexiconEntry[], budgets?: readonly PmCommandFlagBudget[]): PmFlagLexiconReport;
54
+ /** Render a compact, generated family and command budget reference. Persisted budget rows are initialized to an explicit fallback so stale rows remain renderable. */
55
+ export declare function renderPmFlagLexiconMarkdown(): string;