@unbrained/pm-cli 2026.9.9 → 2026.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +48 -11
  3. package/dist/cli/command-namespaces.d.ts +9 -0
  4. package/dist/cli/command-namespaces.js +2 -0
  5. package/dist/cli/extension-command-help.js +3 -3
  6. package/dist/cli/help-content.js +1 -1
  7. package/dist/cli/help-json-payload.d.ts +5 -1
  8. package/dist/cli/help-json-payload.js +2 -2
  9. package/dist/cli/main.d.ts +5 -0
  10. package/dist/cli/main.js +3 -3
  11. package/dist/cli/register-history-maintenance.js +2 -1
  12. package/dist/cli/register-list-query.js +2 -2
  13. package/dist/cli/register-mutation.js +2 -2
  14. package/dist/cli/register-operations.d.ts +0 -5
  15. package/dist/cli/register-operations.js +1 -1
  16. package/dist/cli-bundle/bundle-manifest.json +154 -162
  17. package/dist/cli-bundle/chunks/{chunk-L5RCDKQ2.js → chunk-BN5QVWNY.js} +2 -2
  18. package/dist/cli-bundle/chunks/chunk-DAWH7TGV.js +3 -0
  19. package/dist/cli-bundle/chunks/chunk-FBY6PEIR.js +20 -0
  20. package/dist/cli-bundle/chunks/chunk-IRUNFLLG.js +2 -0
  21. package/dist/cli-bundle/chunks/chunk-JMQKJ7CJ.js +8 -0
  22. package/dist/cli-bundle/chunks/{chunk-OHNLSGGV.js → chunk-QER6OSOP.js} +2 -2
  23. package/dist/cli-bundle/chunks/chunk-RJQSCK74.js +6 -0
  24. package/dist/cli-bundle/chunks/chunk-RJZFAXBW.js +235 -0
  25. package/dist/cli-bundle/chunks/chunk-SGAKQIGQ.js +29 -0
  26. package/dist/cli-bundle/chunks/chunk-T3AMFUCN.js +2 -0
  27. package/dist/cli-bundle/chunks/{chunk-ECBLPN7B.js → chunk-TDKWJQD7.js} +2 -2
  28. package/dist/cli-bundle/chunks/chunk-TFVKBJJ4.js +2247 -0
  29. package/dist/cli-bundle/chunks/{chunk-3IPRM75M.js → chunk-VFKBNGF6.js} +2 -2
  30. package/dist/cli-bundle/chunks/{register-list-query-UIHRCS6D.js → register-list-query-U6MY437C.js} +6 -6
  31. package/dist/cli-bundle/chunks/register-mutation-HAPHD4S7.js +20 -0
  32. package/dist/cli-bundle/chunks/register-operations-EHWIZW3X.js +2 -0
  33. package/dist/cli-bundle/chunks/{register-setup-PERI45EM.js → register-setup-BZYL3HBL.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-YJUXGS57.js → chunk-3JVTLBCW.js} +4 -4
  35. package/dist/cli-bundle/focused-chunks/chunk-6JF66HAG.js +2 -0
  36. package/dist/cli-bundle/focused-chunks/{chunk-ZTCE4UO6.js → chunk-7WISPJRZ.js} +53 -52
  37. package/dist/cli-bundle/focused-chunks/chunk-BEQAW7OT.js +12 -0
  38. package/dist/cli-bundle/focused-chunks/{chunk-PNKIANFZ.js → chunk-DZ3ATEFS.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/{chunk-BUCJUZVG.js → chunk-FJDEFA64.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-QQQ4SAUO.js → chunk-GKUF7TM5.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/{chunk-7PC4R5QB.js → chunk-HM6JS6Q3.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/chunk-M74YW332.js +164 -0
  43. package/dist/cli-bundle/focused-chunks/{chunk-7N6DOREF.js → chunk-MOT32PR2.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/chunk-ONDKO4EL.js +2 -0
  45. package/dist/cli-bundle/focused-chunks/{chunk-5FHTCOHS.js → chunk-TGMSSI3Z.js} +2 -2
  46. package/dist/cli-bundle/focused-chunks/chunk-TWE3GPQM.js +30 -0
  47. package/dist/cli-bundle/focused-chunks/chunk-UJCQXUD2.js +8 -0
  48. package/dist/cli-bundle/focused-chunks/chunk-VS6MR2HT.js +2 -0
  49. package/dist/cli-bundle/focused-chunks/chunk-YOPNRWSX.js +2 -0
  50. package/dist/cli-bundle/main.js +26 -26
  51. package/dist/cli-bundle/sdk-authoring.js +1 -1
  52. package/dist/cli-bundle/sdk-contracts.js +2 -2
  53. package/dist/cli-bundle/sdk-core.js +37 -37
  54. package/dist/cli-bundle/sdk-governance.js +1 -1
  55. package/dist/cli-bundle/sdk-graph.js +1 -1
  56. package/dist/cli-bundle/sdk-merge.js +42 -42
  57. package/dist/cli-bundle/sdk-query.js +1 -1
  58. package/dist/cli-bundle/sdk-runtime.js +1 -1
  59. package/dist/cli-bundle/sdk-testing.js +1 -1
  60. package/dist/cli-bundle/sdk.js +10 -10
  61. package/dist/core/history/digest.d.ts +12 -0
  62. package/dist/core/history/digest.js +2 -0
  63. package/dist/core/history/drift-scan.js +1 -1
  64. package/dist/core/history/history.d.ts +5 -3
  65. package/dist/core/history/history.js +2 -2
  66. package/dist/core/history/replay.d.ts +3 -2
  67. package/dist/core/history/replay.js +1 -1
  68. package/dist/core/telemetry/runtime.d.ts +1 -0
  69. package/dist/core/telemetry/runtime.js +2 -2
  70. package/dist/sdk/agent/command-recovery.js +1 -1
  71. package/dist/sdk/agent/item-addressing.js +1 -1
  72. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -1
  73. package/dist/sdk/agent-capability-contracts.js +1 -1
  74. package/dist/sdk/cli-bootstrap.d.ts +2 -1
  75. package/dist/sdk/cli-bootstrap.js +1 -1
  76. package/dist/sdk/cli-contracts/command-aliases.d.ts +13 -1
  77. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  78. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  79. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  80. package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
  81. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  82. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
  83. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  84. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +4 -1
  85. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  86. package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -3
  87. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  88. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +2 -0
  89. package/dist/sdk/cli-contracts.d.ts +1 -1
  90. package/dist/sdk/cli-contracts.js +1 -1
  91. package/dist/sdk/completion.d.ts +2 -0
  92. package/dist/sdk/completion.js +375 -350
  93. package/dist/sdk/contracts.d.ts +1 -0
  94. package/dist/sdk/contracts.js +1 -1
  95. package/dist/sdk/governance.d.ts +3 -0
  96. package/dist/sdk/governance.js +1 -1
  97. package/dist/sdk/history/attestation-command.d.ts +22 -0
  98. package/dist/sdk/history/attestation-command.js +3 -0
  99. package/dist/sdk/history/attestation-contract.d.ts +103 -0
  100. package/dist/sdk/history/attestation-contract.js +2 -0
  101. package/dist/sdk/history/attestation-scan.d.ts +16 -0
  102. package/dist/sdk/history/attestation-scan.js +2 -0
  103. package/dist/sdk/history/attestation.d.ts +8 -0
  104. package/dist/sdk/history/attestation.js +2 -0
  105. package/dist/sdk/history/salvage.js +1 -1
  106. package/dist/sdk/history-compact.js +1 -1
  107. package/dist/sdk/history-read.js +1 -1
  108. package/dist/sdk/history-redact.js +1 -1
  109. package/dist/sdk/history-repair.js +1 -1
  110. package/dist/sdk/index.d.ts +3 -1
  111. package/dist/sdk/index.js +1 -1
  112. package/dist/sdk/lifecycle/claim.js +1 -1
  113. package/dist/sdk/lifecycle/lifecycle-transitions.d.ts +1 -1
  114. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
  115. package/dist/sdk/lifecycle/mcp-actions.js +1 -1
  116. package/dist/sdk/lifecycle/task-composition.d.ts +17 -0
  117. package/dist/sdk/lifecycle/task-composition.js +2 -0
  118. package/dist/sdk/public-surface.json +1 -1
  119. package/dist/sdk/query/workspace-contracts.d.ts +3 -0
  120. package/dist/sdk/query/workspace-contracts.js +2 -0
  121. package/dist/sdk/read-output-budget.d.ts +4 -10
  122. package/dist/sdk/read-output-budget.js +1 -1
  123. package/dist/sdk/read-output-contracts.d.ts +1 -1
  124. package/dist/sdk/read-output-contracts.js +1 -1
  125. package/dist/sdk/read-output-session.d.ts +1 -1
  126. package/dist/sdk/read-output-session.js +1 -1
  127. package/dist/sdk/runtime-input.js +1 -1
  128. package/dist/sdk/runtime.d.ts +72 -9
  129. package/dist/sdk/runtime.js +1 -1
  130. package/dist/types.d.ts +5 -1
  131. package/dist/types.js +1 -1
  132. package/docs/CLI_GRAMMAR.md +23 -0
  133. package/docs/COMMANDS.md +26 -24
  134. package/docs/COMMAND_NAMESPACES.md +65 -0
  135. package/docs/HISTORY_ATTESTATION.md +164 -0
  136. package/docs/LIFECYCLE_COMMANDS.md +77 -0
  137. package/docs/README.md +3 -0
  138. package/docs/READ_OUTPUT_CONTRACTS.md +13 -0
  139. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +6 -6
  140. package/docs/generated/AGENT_COMMAND_SURFACE.md +24 -0
  141. package/docs/generated/FLAG_LEXICON_BUDGETS.md +26 -3
  142. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -4
  143. package/marketplace.json +2 -2
  144. package/package.json +4 -4
  145. package/packages/pm-beads/package.json +1 -1
  146. package/packages/pm-calendar/package.json +1 -1
  147. package/packages/pm-command-kit/package.json +1 -1
  148. package/packages/pm-digital-twin/package.json +1 -1
  149. package/packages/pm-governance-audit/README.md +13 -9
  150. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +6 -3
  151. package/packages/pm-governance-audit/package.json +1 -1
  152. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +7 -19
  153. package/packages/pm-guide-shell/package.json +1 -1
  154. package/packages/pm-kanban/package.json +1 -1
  155. package/packages/pm-lifecycle-hooks/package.json +1 -1
  156. package/packages/pm-linked-test-adapters/package.json +1 -1
  157. package/packages/pm-search-advanced/README.md +15 -9
  158. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +3 -2
  159. package/packages/pm-search-advanced/package.json +1 -1
  160. package/packages/pm-templates/package.json +1 -1
  161. package/packages/pm-todos/package.json +1 -1
  162. package/packages/pm-vcs/package.json +1 -1
  163. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  164. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  165. package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +0 -2
  166. package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +0 -29
  167. package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +0 -20
  168. package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +0 -235
  169. package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +0 -2
  170. package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +0 -2
  171. package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +0 -5
  172. package/dist/cli-bundle/chunks/chunk-XZ6T7YPP.js +0 -2217
  173. package/dist/cli-bundle/chunks/chunk-Z3XVXUVF.js +0 -8
  174. package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +0 -20
  175. package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +0 -2
  176. package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +0 -2
  177. package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +0 -12
  178. package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +0 -2
  179. package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +0 -2
  180. package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +0 -10
  181. package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +0 -177
  182. package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +0 -2
  183. package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +0 -9
  184. package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +0 -8
@@ -0,0 +1,65 @@
1
+ # Context and operations command namespaces
2
+
3
+ Tracked in [pm-kcs4](../.agents/pm/tasks/pm-kcs4.toon),
4
+ [pm-6apl](../.agents/pm/tasks/pm-6apl.toon), and
5
+ [pm-3i9q8g](../.agents/pm/tasks/pm-3i9q8g.toon).
6
+
7
+ The CLI groups navigation and maintenance under stable nouns. Existing root
8
+ spellings remain executable compatibility aliases with the same arguments,
9
+ results, exit codes, and SDK behavior.
10
+
11
+ | Native invocation | Compatibility spelling | Purpose |
12
+ | --- | --- | --- |
13
+ | `pm context next` | `pm next` | Select ready work and explain blockers |
14
+ | `pm context focus` | `pm focus` | Read, set, or clear the focused item |
15
+ | `pm ops stats` | `pm stats` | Inspect tracker statistics |
16
+ | `pm ops health` | `pm health` | Diagnose tracker health |
17
+ | `pm ops validate` | `pm validate` | Validate metadata and history |
18
+ | `pm ops gc` | `pm gc` | Clean optional cache artifacts |
19
+ | `pm ops telemetry` | `pm telemetry` | Inspect and manage telemetry |
20
+ | `pm ops eval` | `pm eval` | Evaluate retrieval quality |
21
+ | `pm ops test-all` | `pm test-all` | Run selected linked tests |
22
+ | `pm ops reindex` | `pm reindex` | Refresh indexes through search-advanced |
23
+ | `pm ops normalize` | `pm normalize` | Normalize through an active governance package |
24
+ | `pm history events` | `pm events` | Read or follow committed mutation events |
25
+
26
+ `pm context --limit 10 --for orient` still produces a context snapshot.
27
+ `pm history <id> --verify` still reads and verifies one item's history.
28
+ Namespace leaves do not change either default operation.
29
+
30
+ ## Discover only what the current task needs
31
+
32
+ ```bash
33
+ pm context next --limit 5 --ready-only
34
+ pm context focus --id pm-example
35
+ pm ops health --check-only --summary
36
+ pm ops validate --check-history-drift
37
+ pm history events --item pm-example --limit 10
38
+ pm ops --help
39
+ pm contracts --command "ops stats" --flags-only
40
+ ```
41
+
42
+ Help, contracts, and shell completion expose native paths. Compatibility aliases
43
+ remain declared in the SDK alias table. Alias guidance uses the existing
44
+ `ux.deprecation_hints` setting. Human-readable calls emit it on stderr; JSON and
45
+ quiet calls suppress it. Compact contract summaries omit duplicate root alias
46
+ rows; full and explicitly selected contracts retain them. Optional commands appear only when their providing package is active;
47
+ namespace placement does not promote package behavior into core.
48
+
49
+ ## SDK and package integration
50
+
51
+ `PM_NAMESPACED_COMMAND_ALIASES` and `resolvePmCommandOperation` are exported
52
+ from `@unbrained/pm-cli/sdk` and `@unbrained/pm-cli/sdk/contracts`.
53
+ The resolver maps a native path such as `context next` to the existing SDK
54
+ operation identity `next`. Unknown paths are preserved. SDK functions, MCP
55
+ action names, extension activation selectors, and command hooks retain their
56
+ existing operation identities.
57
+
58
+ Packages that provide `reindex` or `normalize` keep their existing command
59
+ registration. The CLI places the registered handler beneath `ops` after
60
+ activation, preserving flags, argument parsing, and nested commands. A conflicting
61
+ native destination fails explicitly instead of silently replacing a handler.
62
+
63
+ Generated Bash, Zsh, and Fish scripts recognize namespace command positions and
64
+ skip global option values when selecting a leaf. Re-generate installed completion
65
+ scripts after upgrading with `pm completion <shell>` from guide-shell.
@@ -0,0 +1,164 @@
1
+ # History algorithms and detached attestations
2
+
3
+ Tracking: [pm-bbk8we](../.agents/pm/issues/pm-bbk8we.toon),
4
+ [pm-3z0k](../.agents/pm/features/pm-3z0k.toon).
5
+
6
+ A detached attestation commits to the exact bytes of every retained history
7
+ stream. Keep the bundle, or its workspace digest, independently of the tracker.
8
+ Verification can then detect a rewritten stream even when its author recomputed
9
+ an internally valid hash chain.
10
+
11
+ ## CLI
12
+
13
+ ```sh
14
+ pm history attest --output proof.json
15
+ pm history attest --verify proof.json
16
+ pm history attest --hash-algorithm sha512 --output proof-sha512.json
17
+ ```
18
+
19
+ Export with `--output` creates a new JSON file exclusively and returns a compact
20
+ receipt containing its path, workspace digest, and stream count. Existing files
21
+ are not overwritten. Without `--output`, export writes the complete JSON bundle
22
+ to stdout. Proof bytes bypass default row projection and output budgets so a
23
+ redirected artifact retains its digest. Explicit universal output controls such
24
+ as `--output-limit` are rejected. `--quiet` suppresses stdout. Verification returns a nonzero process
25
+ exit status if any stream changed, appeared, disappeared, or failed validation.
26
+ `--verify` cannot be combined with export options.
27
+
28
+ Only the tracker directory and its `history/*.jsonl` files are needed. For a
29
+ bare history copy, select the directory containing `history`:
30
+
31
+ ```sh
32
+ pm --pm-path /path/to/copied-tracker history attest --verify proof.json
33
+ ```
34
+
35
+ Item files, settings, indexes, extensions, and the original Git checkout are not
36
+ needed. The verifier does not acquire tracker locks or create derived state.
37
+ CLI attestation invocations disable extension loading automatically.
38
+
39
+ ## SDK
40
+
41
+ ```ts
42
+ import {
43
+ exportAttestation,
44
+ parseHistoryAttestation,
45
+ verifyAttestation,
46
+ } from "@unbrained/pm-cli/sdk/governance";
47
+
48
+ const proof = await exportAttestation({
49
+ pmRoot: "/path/to/tracker",
50
+ hashAlgorithm: "sha256",
51
+ });
52
+ const parsed = parseHistoryAttestation(proof);
53
+ const result = await verifyAttestation(parsed, {
54
+ pmRoot: "/path/to/copied-tracker",
55
+ });
56
+ ```
57
+
58
+ The same APIs are available from the SDK root. `generatedAt` optionally accepts
59
+ an RFC 3339 timestamp with millisecond precision for reproducible exports.
60
+ Equal stream bytes, options, and timestamps yield identical bundle digests.
61
+ `PmClient.historyAttest` and `runAction({ action: "history-attest", ... })` expose
62
+ the adapter used by CLI and MCP. Local CLI and SDK callers may use proof paths;
63
+ SDK callers may also pass a typed bundle as `verify`. Direct export and verify functions
64
+ accept and return typed bundles without requiring a proof file.
65
+
66
+ ## MCP
67
+
68
+ Call `pm_run` with `action: "history-attest"` to receive the complete JSON bundle.
69
+ Retain it on the client and pass that object as `verify` to compare the tracker.
70
+ Both flat arguments and nested `options` use this data-only proof transport.
71
+ MCP refuses `output` and string `verify` values before accessing proof files;
72
+ server-local proof paths are available only to local CLI and SDK callers.
73
+
74
+ ## Version 1 wire format
75
+
76
+ `PM_HISTORY_ATTESTATION_CONTRACT` is exported from the SDK contracts entrypoint.
77
+ The JSON document has exactly these fields:
78
+
79
+ | Field | Meaning |
80
+ | --- | --- |
81
+ | `format` | Literal `pm-history-attestation` |
82
+ | `version` | Integer `1` |
83
+ | `hash_algorithm` | `sha256` or `sha512`, for bundle commitments |
84
+ | `generated_at` | Exporter's asserted timestamp |
85
+ | `streams` | Complete retained stream inventory, sorted by ID |
86
+ | `workspace_digest` | Digest of the stable JSON encoding of all other fields |
87
+
88
+ Each stream contains its filename stem, exact byte length, nonblank record count,
89
+ exact-byte digest, latest item-state and whole-record anchors, latest record
90
+ algorithm, retained rewrite-evidence count, compact checkpoint digest, and last
91
+ maintenance marker. Empty streams have null anchors and no maintenance marker.
92
+ The workspace stream and streams belonging to deleted items are included.
93
+ Identifiers contain only ASCII letters, digits, underscores, and hyphens.
94
+ No item content, author, filesystem root, or patch value is embedded in a bundle.
95
+ The bundle grows with the number of streams, not their event counts.
96
+
97
+ Stream digests hash all file bytes, including blank lines, whitespace, and line
98
+ endings. Thus a formatting-only change is also a divergence. The workspace
99
+ rollup uses the SDK's recursive stable JSON encoding with sorted object keys
100
+ and preserved array order, excluding only `workspace_digest`. Stream ordering
101
+ uses ascending JavaScript code-unit comparison of IDs, not locale collation.
102
+ Lowercase hexadecimal digest lengths are 64 for SHA-256 and 128 for SHA-512.
103
+
104
+ Verification validates the bundle schema and rollup before inspecting files.
105
+ It reports `changed_streams`, `missing_streams`, `added_streams`, and
106
+ `invalid_streams`; these categories may overlap. `transitions` includes before
107
+ and after byte digests plus the current last maintenance marker for each changed
108
+ stream. Export refuses invalid streams instead of producing partial evidence.
109
+ Unknown format versions and algorithms are rejected.
110
+
111
+ ## Record algorithms and migration
112
+
113
+ Each new history entry names `hash_algorithm`. This label selects the digest
114
+ used for `before_hash`, `after_hash`, and `record_hash`. Current writers default
115
+ to `sha256`; callers constructing entries may explicitly select `sha512`.
116
+ The immutable record digest covers the algorithm label itself.
117
+
118
+ An absent label **always means SHA-256**, regardless of future writer defaults.
119
+ Existing unlabeled history remains verifiable without rewriting it. A stream
120
+ may mix algorithms: replay reconstructs the prior state and verifies each link
121
+ using that entry's declared algorithm. Adjacent bare digest strings need not be
122
+ equal when algorithms differ. Unknown labels fail verification even on legacy
123
+ entries without whole-record seals.
124
+
125
+ `item_hash_version` selects canonical item encoding and remains separate from
126
+ `hash_algorithm`. The item document `format_version` does not change for this
127
+ additive history field. `record_hash_version: 1` still defines stable record
128
+ encoding; the algorithm field defines the digest. Older readers lacking the
129
+ algorithm capability cannot verify SHA-512 entries and should be upgraded
130
+ before such entries are introduced. No automatic archive migration is needed.
131
+
132
+ Retained rewrite evidence carries the original entry's algorithm. Repair,
133
+ redaction, merge reconciliation, and compaction preserve verifiable original
134
+ algorithm commitments where they retain evidence. Version 1 patch digests and
135
+ compact pruned-prefix commitments remain explicitly fixed to SHA-256; they are
136
+ separate commitments, not item-state or record digests.
137
+
138
+ Advancing the default affects future writes only. Never infer an unlabeled
139
+ record's algorithm from digest length or the current default, and never rewrite
140
+ an archive simply to add labels. Bundle algorithms are independent of record
141
+ algorithms: a SHA-256 bundle can cover SHA-512 records and vice versa. Existing
142
+ bundles retain their declared verification algorithm. Re-export after an
143
+ intentional append or maintenance operation, review the reported transition,
144
+ and retain both proofs if historical comparison matters.
145
+
146
+ ## Trust and consistency
147
+
148
+ A self-consistent bundle is not a digital signature or a trusted timestamp. It
149
+ does not identify an author, prove that events happened in the real world, or
150
+ recover a pruned prefix. If an attacker can replace both tracker and trusted
151
+ bundle, these hashes do not establish authenticity. Packages can anchor the
152
+ workspace digest in an independent repository, signing service, or transparency
153
+ log without changing this baseline format.
154
+
155
+ Verification establishes equality with the retained proof and checks each
156
+ current stream's internal replay integrity. It does not assert that current
157
+ item files match history, or that every intended mutation was recorded. Use
158
+ normal workspace validation for those checks.
159
+
160
+ The scanner takes a snapshot per stream and checks filename inventories and
161
+ file metadata again before returning. Observable concurrent changes fail with
162
+ a retry error. This is not a transaction across independent writers; use a
163
+ quiescent or externally snapshotted copy when a single workspace-wide instant
164
+ is required. Symlink stream files and malformed UTF-8/JSONL are invalid.
@@ -0,0 +1,77 @@
1
+ # Lifecycle Commands and Ownership
2
+
3
+ Tracked by [pm-ik19](../.agents/pm/tasks/pm-ik19.toon) and
4
+ [pm-eq4x](../.agents/pm/tasks/pm-eq4x.toon).
5
+
6
+ Bulk mutations and ownership compositions share SDK implementations with their
7
+ compatibility spellings. Runtime help and contracts describe the active surface:
8
+
9
+ ```bash
10
+ pm update many --help
11
+ pm close many --help
12
+ pm close delete --help
13
+ pm contracts --command 'close many' --flags-only --json
14
+ ```
15
+
16
+ ## Command migration
17
+
18
+ | Canonical invocation | Compatibility invocation |
19
+ | --- | --- |
20
+ | `pm update many --ids <ids> --priority 1` | `pm update-many --ids <ids> --priority 1` |
21
+ | `pm close many --ids <ids> --reason "Verified"` | `pm close-many --ids <ids> --reason "Verified"` |
22
+ | `pm close delete <id> --dry-run` | `pm delete <id> --dry-run` |
23
+ | `pm claim <id> --start` | `pm start-task <id>` |
24
+ | `pm release <id> --pause` | `pm pause-task <id>` |
25
+ | `pm close <id> "Verified" --release-assignment` | `pm close-task <id> "Verified"` |
26
+
27
+ The old spellings remain accepted as hidden aliases. Bulk aliases are permanent;
28
+ the three task aliases are deprecated. Human output for deprecated aliases can
29
+ include migration hints according to `ux.deprecation_hints`; JSON and quiet
30
+ invocations suppress those hints. Bulk commands retain their existing filters,
31
+ stdin selection, dry runs, rollback behavior, and evidence flags. Put bulk flags
32
+ after `many`. Deletion recovery remains `pm history restore <id> <version>`.
33
+
34
+ Plain `claim`, `release`, `update`, and `close` keep their original semantics.
35
+ `claim --start` requires an explicit item and rejects `--next` and
36
+ `--if-available` before mutation. It claims ownership, then moves the item to the
37
+ configured in-progress status. `release --pause` moves work to the configured
38
+ open status, then releases ownership. `close --release-assignment` records the
39
+ close and its inline evidence, then releases ownership.
40
+
41
+ Each constituent operation enforces its own policy and writes its own history.
42
+ Compositions do not provide rollback across operations: for example, if the
43
+ status transition fails after a successful claim, the claim remains. Inspect the
44
+ item before retrying after an error.
45
+
46
+ ## SDK and MCP
47
+
48
+ ```ts
49
+ import { PmClient } from "@unbrained/pm-cli/sdk";
50
+
51
+ const pm = new PmClient({ pmRoot: "/project/.agents/pm" });
52
+ const started = await pm.claim("pm-example", { start: true });
53
+ const paused = await pm.release("pm-example", { pause: true });
54
+ const closed = await pm.close("pm-example", "Acceptance verified", {
55
+ releaseAssignment: true,
56
+ resolution: "Implemented the requested behavior",
57
+ expectedResult: "Acceptance checks pass",
58
+ actualResult: "Acceptance checks passed",
59
+ validateClose: "warn",
60
+ });
61
+ ```
62
+
63
+ Literal `true` options return typed `StartTaskResult`, `PauseTaskResult`, or
64
+ `CloseTaskResult` receipts. Their discriminators remain `start_task`,
65
+ `pause_task`, and `close_task`, with the constituent results available under
66
+ `claim`, `update`, `close`, or `release`. Public `runStartTask`, `runPauseTask`, and
67
+ `runCloseTask` primitives expose the same SDK-owned compositions.
68
+
69
+ MCP actions remain `claim`, `release`, and `close`, using `start`, `pause`, and
70
+ `releaseAssignment`. Action-specific discovery types claim's `start` as boolean;
71
+ scheduling actions retain string timestamps. For the broad provider tool schema,
72
+ pass the claim boolean through `options: { start: true }` because its shared flat
73
+ `start` property retains the scheduling string contract. Bulk action names remain
74
+ `update_many`, `close_many`, and `delete` for transport compatibility.
75
+
76
+ See [SDK Lifecycle Policy](SDK_LIFECYCLE.md) for transaction and policy ownership
77
+ and [CLI Scripting Contract](SCRIPTING.md) for output projection.
package/docs/README.md CHANGED
@@ -35,6 +35,7 @@ pm guide release --json
35
35
  - [Onboarding](ONBOARDING.md) - first-two-hours maintainer and contributor setup.
36
36
  - [Agent Guide](AGENT_GUIDE.md) - canonical agent loop, tracker linking, and token-minimal command choices.
37
37
  - [Command Reference](COMMANDS.md) - command families with examples and when to use each family.
38
+ - [Context and Operations Namespaces](COMMAND_NAMESPACES.md) - native navigation, diagnostics, event streams, and compatibility aliases.
38
39
  - [CLI Scripting Contract](SCRIPTING.md) - exit codes, flat mutation receipts versus read envelopes, stdout/stderr boundaries, stable JSON fields, uniform OR filters, and shell composition recipes.
39
40
  - [Configuration](CONFIGURATION.md) - settings, storage formats, output, search, validation, and environment variables.
40
41
  - [Testing](TESTING.md) - sandbox-safe local tests and linked-test orchestration.
@@ -61,6 +62,7 @@ pm guide release --json
61
62
  - [Generated Refusal Closure Census](generated/REFUSAL_CLOSURE_CENSUS.md) - complete error-catalog join to executable refusal evidence and explicit uncovered obligations.
62
63
  - [Universal Read Output Contracts](READ_OUTPUT_CONTRACTS.md) - cross-command include, amount, cost, and encoding controls for CLI, SDK, MCP, and packages.
63
64
  - [Diagnostic Output Contracts](DIAGNOSTIC_OUTPUT_CONTRACTS.md) - action-first error budgets, deterministic degradation, SDK projection, and executable refusal assurance.
65
+ - [History Algorithms and Detached Attestations](HISTORY_ATTESTATION.md) - named record digests, portable exact-byte proofs, and read-only verification.
64
66
  - [History Maintenance and Recovery](HISTORY_MAINTENANCE.md) - native history commands, permanent aliases, shared SDK transforms, and transactional recovery.
65
67
  - [Declarative Workflow Policies](WORKFLOW_POLICIES.md) - portable lifecycle requirements, independent approvals, and completeness reports.
66
68
  - [Mutation Integrity](MUTATION_INTEGRITY.md) - shared CLI/SDK/MCP author, secret, append-only disposition, and stale-work guardrails.
@@ -100,6 +102,7 @@ Additional SDK, operations, and generated contracts:
100
102
  - [Item Read Projections](ITEM_READ_PROJECTIONS.md) - identity, projections, and read completeness.
101
103
  - [MCP Capability Surfaces](MCP_CAPABILITY_SURFACES.md) - negotiated MCP discovery contracts.
102
104
  - [PR Review Loop](PR_REVIEW_LOOP.md) - complete review inventories and feedback acknowledgment.
105
+ - [Lifecycle Commands and Ownership](LIFECYCLE_COMMANDS.md) - canonical bulk commands, ownership compositions, and SDK/MCP migration.
103
106
  - [SDK Lifecycle](SDK_LIFECYCLE.md) - lifecycle primitives and package integration.
104
107
  - [SDK Runtime Boundaries](SDK_RUNTIME_BOUNDARIES.md) - runtime ownership and import boundaries.
105
108
  - [Sentry Contract Epochs](SENTRY_CONTRACT_EPOCHS.md) - diagnostic compatibility and release epochs.
@@ -153,6 +153,19 @@ pm contracts --full --json
153
153
 
154
154
  Every projected result carries a `read_output` receipt with the requested dimensions, precedence, observed option provenance, deterministic estimated token count, string/row compaction signals, and budget outcome. When canonical controls are present, `canonical_options_used` records spellings such as `--output-include`; the optional field is omitted when no canonical control was supplied so minimum-budget session receipts remain compact. `legacy_aliases_used` and `migration_hints` record only compatibility flags the caller actually supplied. A command-local flag synthesized internally to execute a canonical projection mode is therefore never misreported as deprecated syntax. When both spellings are supplied, both provenance arrays report that mixed invocation. Budget degradation discovers nested arrays as well as declared result rows, so validation diagnostics and other governance payloads compact their inner findings before the useful result is omitted. `compacted_row_paths` names every reduced collection without redefining those nested arrays as ordinary pagination rows.
155
155
 
156
+ The estimate is `ceil(utf8_bytes / 4)` for the complete envelope. The CLI uses
157
+ its selected built-in JSON or TOON representation, including indentation and
158
+ the final newline. SDK calls that select `outputFormat` use that representation;
159
+ structured SDK calls without a renderer retain compact JSON measurement.
160
+ Those unformatted calls keep the conservative workload-class ceiling
161
+ (`default_max_estimated_tokens`, also used as the generated TOON ceiling).
162
+ Selecting JSON explicitly opts into its larger declared rendering allowance;
163
+ serializing an SDK object for measurement does not implicitly select that policy.
164
+ Per-call and session receipts include their own cost and continuation disclosure.
165
+ Compaction reserves room for that disclosure before returning a useful page, so
166
+ an envelope cannot claim to fit merely because its rows fit before receipts were
167
+ added. An infeasible ceiling returns the explicit omission result.
168
+
156
169
  For `context` and `next`, that final projection is also the usage-feedback
157
170
  delivery boundary. The SDK carries a JSON-invisible serve receipt through
158
171
  intent and universal output projection, then appends the final omitted decision
@@ -6,12 +6,12 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
6
6
 
7
7
  | Capability family | Commands |
8
8
  | --- | --- |
9
- | workspace | `init`, `config`, `merge`, `schema`, `profile`, `telemetry`, `health`, `gc`, `workspace` |
10
- | intake | `create`, `copy`, `focus`, `restore` |
11
- | context | `list`, `aggregate`, `context`, `get`, `search`, `duplicates`, `eval`, `next`, `activity`, `stats`, `help` |
12
- | lifecycle | `update`, `update-many`, `close`, `close-many`, `delete`, `claim`, `release`, `start-task`, `pause-task`, `close-task` |
13
- | evidence | `history`, `events`, `history-redact`, `history-repair`, `history-compact`, `history-author-acknowledge`, `append`, `comments`, `notes`, `learnings`, `files`, `docs` |
9
+ | workspace | `init`, `config`, `workspace merge`, `schema`, `profile`, `ops telemetry`, `ops health`, `ops gc`, `workspace` |
10
+ | intake | `create`, `item copy`, `context focus`, `history restore` |
11
+ | context | `list`, `aggregate`, `context`, `get`, `search`, `item duplicates`, `ops eval`, `context next`, `history activity`, `ops stats`, `help` |
12
+ | lifecycle | `update`, `update many`, `close`, `close many`, `close delete`, `claim`, `release` |
13
+ | evidence | `history`, `history events`, `history redact`, `history repair`, `history compact`, `history attest`, `history-author-acknowledge`, `append`, `comments`, `notes`, `learnings`, `files`, `docs` |
14
14
  | graph | `graph`, `deps`, `plan` |
15
- | quality | `test`, `test-all`, `validate`, `assurance`, `contracts` |
15
+ | quality | `test`, `ops test-all`, `ops validate`, `assurance`, `contracts`, `ops` |
16
16
  | automation | `meet`, `event`, `remind` |
17
17
  | extensions | `package` |
@@ -14,7 +14,9 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
14
14
  | `create` | core | intake |
15
15
  | `item-reopen` | full | lifecycle |
16
16
  | `copy` | full | intake |
17
+ | `item copy` | full | intake |
17
18
  | `focus` | standard | intake |
19
+ | `context focus` | standard | intake |
18
20
  | `list` | core | context |
19
21
  | `list-all` | standard | context |
20
22
  | `list-draft` | full | context |
@@ -30,24 +32,39 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
30
32
  | `graph` | standard | graph |
31
33
  | `search` | core | context |
32
34
  | `duplicates` | full | context |
35
+ | `item duplicates` | full | context |
33
36
  | `eval` | full | context |
37
+ | `ops eval` | full | context |
34
38
  | `next` | core | context |
39
+ | `context next` | core | context |
35
40
  | `history` | standard | evidence |
36
41
  | `events` | standard | evidence |
42
+ | `history events` | standard | evidence |
37
43
  | `history-redact` | full | evidence |
44
+ | `history redact` | full | evidence |
38
45
  | `history-repair` | full | evidence |
46
+ | `history repair` | full | evidence |
39
47
  | `history-compact` | full | evidence |
48
+ | `history compact` | full | evidence |
49
+ | `history-attest` | full | evidence |
50
+ | `history attest` | full | evidence |
40
51
  | `history-author-acknowledge` | full | evidence |
41
52
  | `merge` | full | workspace |
53
+ | `workspace merge` | full | workspace |
42
54
  | `schema` | standard | workspace |
43
55
  | `profile` | standard | workspace |
44
56
  | `activity` | full | context |
57
+ | `history activity` | full | context |
45
58
  | `restore` | full | intake |
59
+ | `history restore` | full | intake |
46
60
  | `update` | core | lifecycle |
47
61
  | `update-many` | full | lifecycle |
62
+ | `update many` | full | lifecycle |
48
63
  | `close` | core | lifecycle |
49
64
  | `close-many` | full | lifecycle |
65
+ | `close many` | full | lifecycle |
50
66
  | `delete` | full | lifecycle |
67
+ | `close delete` | full | lifecycle |
51
68
  | `append` | standard | evidence |
52
69
  | `comments` | standard | evidence |
53
70
  | `notes` | standard | evidence |
@@ -58,12 +75,18 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
58
75
  | `plan` | core | graph |
59
76
  | `test` | standard | quality |
60
77
  | `test-all` | full | quality |
78
+ | `ops test-all` | full | quality |
61
79
  | `telemetry` | full | workspace |
80
+ | `ops telemetry` | full | workspace |
62
81
  | `stats` | full | context |
82
+ | `ops stats` | full | context |
63
83
  | `health` | standard | workspace |
84
+ | `ops health` | standard | workspace |
64
85
  | `validate` | core | quality |
86
+ | `ops validate` | core | quality |
65
87
  | `assurance` | full | quality |
66
88
  | `gc` | full | workspace |
89
+ | `ops gc` | full | workspace |
67
90
  | `workspace` | full | workspace |
68
91
  | `contracts` | standard | quality |
69
92
  | `claim` | core | lifecycle |
@@ -75,6 +98,7 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
75
98
  | `event` | full | automation |
76
99
  | `remind` | full | automation |
77
100
  | `help` | core | context |
101
+ | `ops` | core | quality |
78
102
  | `completion-statuses` | internal | internal |
79
103
  | `completion-tags` | internal | internal |
80
104
  | `completion-types` | internal | internal |
@@ -33,6 +33,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
33
33
  | `next` | context | 38 | 38 |
34
34
  | `history` | evidence | 35 | 35 |
35
35
  | `events` | evidence | 33 | 33 |
36
+ | `history-attest` | evidence | 23 | 23 |
36
37
  | `history-redact` | evidence | 27 | 27 |
37
38
  | `history-repair` | evidence | 27 | 27 |
38
39
  | `history-compact` | evidence | 30 | 30 |
@@ -44,7 +45,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
44
45
  | `restore` | intake | 23 | 23 |
45
46
  | `update` | lifecycle | 105 | 105 |
46
47
  | `update-many` | lifecycle | 146 | 146 |
47
- | `close` | lifecycle | 31 | 31 |
48
+ | `close` | lifecycle | 32 | 32 |
48
49
  | `close-many` | lifecycle | 72 | 72 |
49
50
  | `delete` | lifecycle | 24 | 24 |
50
51
  | `append` | evidence | 25 | 25 |
@@ -65,8 +66,8 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
65
66
  | `gc` | workspace | 22 | 22 |
66
67
  | `workspace` | workspace | 23 | 23 |
67
68
  | `contracts` | quality | 29 | 29 |
68
- | `claim` | lifecycle | 38 | 38 |
69
- | `release` | lifecycle | 23 | 23 |
69
+ | `claim` | lifecycle | 39 | 39 |
70
+ | `release` | lifecycle | 24 | 24 |
70
71
  | `start-task` | lifecycle | 23 | 23 |
71
72
  | `pause-task` | lifecycle | 23 | 23 |
72
73
  | `close-task` | lifecycle | 24 | 24 |
@@ -74,3 +75,25 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
74
75
  | `event` | automation | 33 | 33 |
75
76
  | `remind` | automation | 29 | 29 |
76
77
  | `test-runs-worker` | internal | 25 | 25 |
78
+ | `history attest` | evidence | 23 | 23 |
79
+ | `history redact` | evidence | 27 | 27 |
80
+ | `history repair` | evidence | 27 | 27 |
81
+ | `history compact` | evidence | 30 | 30 |
82
+ | `history activity` | context | 35 | 35 |
83
+ | `history restore` | intake | 23 | 23 |
84
+ | `context next` | context | 38 | 38 |
85
+ | `context focus` | intake | 22 | 22 |
86
+ | `ops stats` | context | 29 | 29 |
87
+ | `ops health` | workspace | 36 | 36 |
88
+ | `ops validate` | quality | 46 | 46 |
89
+ | `ops gc` | workspace | 22 | 22 |
90
+ | `ops telemetry` | workspace | 21 | 21 |
91
+ | `ops eval` | context | 25 | 25 |
92
+ | `ops test-all` | quality | 40 | 40 |
93
+ | `history events` | evidence | 33 | 33 |
94
+ | `update many` | lifecycle | 146 | 146 |
95
+ | `close many` | lifecycle | 72 | 72 |
96
+ | `close delete` | lifecycle | 24 | 24 |
97
+ | `item copy` | intake | 24 | 24 |
98
+ | `workspace merge` | workspace | 27 | 27 |
99
+ | `item duplicates` | context | 25 | 25 |
@@ -11,7 +11,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
11
11
  - Uncovered error codes: 352
12
12
  - Coverage fraction: 0.051213
13
13
  - Closed-domain probes: 19
14
- - Grammar probes: 97
14
+ - Grammar probes: 101
15
15
 
16
16
  | Error code | Canonical code | Disposition | Evidence kinds | Probe count |
17
17
  | --- | --- | --- | --- | --- |
@@ -211,7 +211,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
211
211
  | `missing_parameter_alias` | `missing_parameter_alias` | uncovered | none | 0 |
212
212
  | `missing_positive_execution_receipt` | `missing_positive_execution_receipt` | uncovered | none | 0 |
213
213
  | `missing_probe` | `missing_probe` | uncovered | none | 0 |
214
- | `missing_required_argument` | `missing_required_argument` | executable | grammar | 60 |
214
+ | `missing_required_argument` | `missing_required_argument` | executable | grammar | 63 |
215
215
  | `missing_required_option` | `missing_required_option` | uncovered | none | 0 |
216
216
  | `missing_suggested_retry` | `missing_suggested_retry` | uncovered | none | 0 |
217
217
  | `missing_suggested_retry_args` | `missing_suggested_retry_args` | uncovered | none | 0 |
@@ -313,13 +313,13 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
313
313
  | `unknown_field` | `unknown_field` | uncovered | none | 0 |
314
314
  | `unknown_field_projection` | `unknown_field_projection` | executable | closed_domain | 10 |
315
315
  | `unknown_item_type` | `unknown_item_type` | uncovered | none | 0 |
316
- | `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state | 11 |
316
+ | `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state | 12 |
317
317
  | `unknown_noun` | `unknown_noun` | uncovered | none | 0 |
318
318
  | `unknown_option` | `unknown_option` | executable | owned_state | 1 |
319
319
  | `unknown_plan_template` | `unknown_plan_template` | uncovered | none | 0 |
320
320
  | `unknown_provenance_dimension` | `unknown_provenance_dimension` | uncovered | none | 0 |
321
321
  | `unknown_status` | `unknown_status` | uncovered | none | 0 |
322
- | `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state | 11 |
322
+ | `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state | 12 |
323
323
  | `unsafe_init_recovery` | `unsafe_init_recovery` | uncovered | none | 0 |
324
324
  | `unsupported_update_option` | `unsupported_update_option` | uncovered | none | 0 |
325
325
  | `validate_command_references_stale_pm_ids` | `validate_command_references_stale_pm_ids` | uncovered | none | 0 |
package/marketplace.json CHANGED
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
9
- "version": "2026.9.9"
9
+ "version": "2026.9.11"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "pm-claude",
14
14
  "source": "./plugins/pm-claude",
15
15
  "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
16
- "version": "2026.9.9",
16
+ "version": "2026.9.11",
17
17
  "author": {
18
18
  "name": "unbrained",
19
19
  "url": "https://github.com/unbraind/pm-cli"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.9.9",
3
+ "version": "2026.9.11",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -205,7 +205,7 @@
205
205
  "node": ">=22.18.0"
206
206
  },
207
207
  "dependencies": {
208
- "@sentry/node": "10.73.0",
208
+ "@sentry/node": "10.74.0",
209
209
  "@toon-format/toon": "^4.1.1",
210
210
  "@types/node": ">=22",
211
211
  "commander": "^15.0.0",
@@ -218,7 +218,7 @@
218
218
  "devDependencies": {
219
219
  "@codspeed/vitest-plugin": "^5.7.1",
220
220
  "@eslint/js": "^10.0.1",
221
- "@modelcontextprotocol/ext-apps": "1.7.5",
221
+ "@modelcontextprotocol/ext-apps": "2.0.0",
222
222
  "@sentry/cli": "^3.7.0",
223
223
  "@types/node": "^26.5.0",
224
224
  "@types/npm-package-arg": "^6.1.4",
@@ -230,7 +230,7 @@
230
230
  "fast-check": "^4.9.0",
231
231
  "github-slugger": "2.0.0",
232
232
  "greptile": "^3.5.2",
233
- "jscpd": "^5.1.2",
233
+ "jscpd": "^5.2.0",
234
234
  "marked": "18.0.12",
235
235
  "parse5": "8.0.1",
236
236
  "tsx": "^4.23.13",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.9.9",
3
+ "version": "2026.9.11",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for importing Beads JSONL records.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-calendar",
3
- "version": "2026.9.9",
3
+ "version": "2026.9.11",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for calendar and agenda views.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-command-kit",
3
- "version": "2026.9.9",
3
+ "version": "2026.9.11",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-digital-twin",
3
- "version": "2026.9.9",
3
+ "version": "2026.9.11",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",