@unbrained/pm-cli 2026.10.22 → 2026.10.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +38 -0
  3. package/dist/cli/error-guidance.d.ts +12 -0
  4. package/dist/cli/error-guidance.js +2 -2
  5. package/dist/cli/register-setup.js +1 -1
  6. package/dist/cli-bundle/bundle-manifest.json +1 -1
  7. package/dist/cli-bundle/chunks/{chunk-2B5HAZFK.js → chunk-3S5FLCG7.js} +2 -2
  8. package/dist/cli-bundle/chunks/{chunk-PCPOTFJP.js → chunk-3VI4XDP2.js} +2 -2
  9. package/dist/cli-bundle/chunks/{chunk-UYYTV2TX.js → chunk-4PNAUT2E.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-E3JC3WQL.js → chunk-CDR5ES7Q.js} +54 -54
  11. package/dist/cli-bundle/chunks/chunk-CNEUJHA4.js +2 -0
  12. package/dist/cli-bundle/chunks/{chunk-AOAQDCXX.js → chunk-CSE47ZAN.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-MV3KYY2A.js → chunk-FASDGYQC.js} +3 -3
  14. package/dist/cli-bundle/chunks/chunk-HZNFNETE.js +127 -0
  15. package/dist/cli-bundle/chunks/{chunk-7OTYULIJ.js → chunk-KGZGXC7T.js} +29 -29
  16. package/dist/cli-bundle/chunks/{chunk-HC2DCGFA.js → chunk-MA7SNKYK.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-GWIGZDRS.js → chunk-R7KWBFM2.js} +2 -2
  18. package/dist/cli-bundle/chunks/chunk-TZYQ4JDZ.js +6 -0
  19. package/dist/cli-bundle/chunks/chunk-URZB3USE.js +113 -0
  20. package/dist/cli-bundle/chunks/chunk-UY5UHI4I.js +2 -0
  21. package/dist/cli-bundle/chunks/{chunk-TNU3XVPC.js → chunk-VPMQEVU6.js} +14 -14
  22. package/dist/cli-bundle/chunks/{chunk-URV4VHQ4.js → chunk-VSSHB6XI.js} +2 -2
  23. package/dist/cli-bundle/chunks/{chunk-LIC5EUQS.js → chunk-YEI4N4A6.js} +48 -48
  24. package/dist/cli-bundle/chunks/chunk-Z62RXNHW.js +3 -0
  25. package/dist/cli-bundle/chunks/chunk-ZDVTXLA6.js +9 -0
  26. package/dist/cli-bundle/chunks/{indexed-receipt-blobs-L3BOTMZN.js → indexed-receipt-blobs-XANVELIV.js} +2 -2
  27. package/dist/cli-bundle/chunks/{mutation-admission-TATOFEXF.js → mutation-admission-NVTBZ7DH.js} +2 -2
  28. package/dist/cli-bundle/chunks/{register-list-query-GULR2IYO.js → register-list-query-2FE6K7FQ.js} +2 -2
  29. package/dist/cli-bundle/chunks/{register-mutation-HLSQ4WVW.js → register-mutation-KZXQUZUH.js} +2 -2
  30. package/dist/cli-bundle/chunks/{register-operations-FE3GGA7O.js → register-operations-BOCBWNKJ.js} +2 -2
  31. package/dist/cli-bundle/chunks/register-setup-P3VLCTDY.js +2 -0
  32. package/dist/cli-bundle/chunks/{settlement-hook-UVFYSBMU.js → settlement-hook-YUVCO65H.js} +2 -2
  33. package/dist/cli-bundle/chunks/{stage-QCPZBZRC.js → stage-WRDTMCCF.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-UQ5JPBY2.js → chunk-3QYTS4OY.js} +4 -4
  35. package/dist/cli-bundle/focused-chunks/{chunk-46HBJC6J.js → chunk-5MKNVJCM.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-QGDKWULS.js → chunk-6HJCSHBG.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/chunk-7RQOFHMH.js +26 -0
  38. package/dist/cli-bundle/focused-chunks/chunk-AGCEWJ27.js +21 -0
  39. package/dist/cli-bundle/focused-chunks/{chunk-3LWH2RJC.js → chunk-BUZ2Z4P3.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-2GFTVXKZ.js → chunk-CEEOWDB7.js} +3 -3
  41. package/dist/cli-bundle/focused-chunks/{chunk-25NQRZ7J.js → chunk-ES2NGVHZ.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/chunk-GXAXDPD4.js +2 -0
  43. package/dist/cli-bundle/focused-chunks/{chunk-VYAZND5Q.js → chunk-IUAYTD2S.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/{chunk-TMN3RAXZ.js → chunk-JYXA4JIP.js} +2 -2
  45. package/dist/cli-bundle/focused-chunks/{chunk-A52W6GLA.js → chunk-NFFPNMTH.js} +2 -2
  46. package/dist/cli-bundle/focused-chunks/{chunk-KM77WU5U.js → chunk-NX7TVNUM.js} +2 -2
  47. package/dist/cli-bundle/focused-chunks/{chunk-CX5FNEFC.js → chunk-POLMFGPQ.js} +3 -3
  48. package/dist/cli-bundle/focused-chunks/chunk-R536272H.js +9 -0
  49. package/dist/cli-bundle/focused-chunks/{chunk-W2CND3BD.js → chunk-RSEGFZTY.js} +54 -54
  50. package/dist/cli-bundle/focused-chunks/{chunk-EHPRSWJE.js → chunk-RVUGTIIU.js} +2 -2
  51. package/dist/cli-bundle/focused-chunks/{chunk-CB7TSZ7P.js → chunk-SBJ2IKTH.js} +2 -2
  52. package/dist/cli-bundle/focused-chunks/{chunk-SXVJRLLP.js → chunk-SHUPX6G2.js} +2 -2
  53. package/dist/cli-bundle/focused-chunks/{chunk-GVKYTDOH.js → chunk-TAHSXKAT.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/chunk-X5YRJMAY.js +2 -0
  55. package/dist/cli-bundle/focused-chunks/chunk-XTYEASIY.js +2 -0
  56. package/dist/cli-bundle/focused-chunks/chunk-ZMWLV2CE.js +91 -0
  57. package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-AAQOKO5B.js → indexed-receipt-blobs-FVOA3XMI.js} +2 -2
  58. package/dist/cli-bundle/focused-chunks/{mutation-admission-TBKR4KRM.js → mutation-admission-PB6YFY7S.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/{settlement-hook-MNCHFCAX.js → settlement-hook-2VXEB6PP.js} +2 -2
  60. package/dist/cli-bundle/focused-chunks/{stage-RM6MJIMT.js → stage-MQE4PFWT.js} +2 -2
  61. package/dist/cli-bundle/main.js +21 -21
  62. package/dist/cli-bundle/sdk-authoring.js +1 -1
  63. package/dist/cli-bundle/sdk-contracts.js +5 -2
  64. package/dist/cli-bundle/sdk-core.js +33 -33
  65. package/dist/cli-bundle/sdk-governance.js +1 -1
  66. package/dist/cli-bundle/sdk-graph.js +1 -1
  67. package/dist/cli-bundle/sdk-merge.js +58 -58
  68. package/dist/cli-bundle/sdk-query.js +1 -1
  69. package/dist/cli-bundle/sdk-runtime.js +1 -1
  70. package/dist/cli-bundle/sdk-testing.js +1 -1
  71. package/dist/cli-bundle/sdk.js +12 -9
  72. package/dist/core/checkpoint/mutation-checkpoint.d.ts +6 -3
  73. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  74. package/dist/core/checkpoint/mutation-context.d.ts +10 -0
  75. package/dist/core/checkpoint/mutation-context.js +2 -0
  76. package/dist/core/config/nested-settings.js +1 -1
  77. package/dist/core/extensions/loader.js +1 -1
  78. package/dist/core/extensions/version-diagnostics.d.ts +2 -0
  79. package/dist/core/extensions/version-diagnostics.js +2 -0
  80. package/dist/core/lock/lock.d.ts +40 -6
  81. package/dist/core/lock/lock.js +3 -3
  82. package/dist/core/shared/errors.d.ts +28 -0
  83. package/dist/core/shared/errors.js +1 -1
  84. package/dist/core/store/item-store.js +1 -1
  85. package/dist/mcp/http-server.js +2 -2
  86. package/dist/mcp/server.js +2 -2
  87. package/dist/sdk/agent/command-recovery.d.ts +1 -0
  88. package/dist/sdk/agent/command-recovery.js +1 -1
  89. package/dist/sdk/agent/linked-resource-recovery.d.ts +13 -0
  90. package/dist/sdk/agent/linked-resource-recovery.js +2 -0
  91. package/dist/sdk/cli-contracts/agent-output-contracts.js +1 -1
  92. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  93. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +3 -2
  94. package/dist/sdk/contracts.d.ts +1 -0
  95. package/dist/sdk/contracts.js +1 -1
  96. package/dist/sdk/core.d.ts +1 -1
  97. package/dist/sdk/core.js +1 -1
  98. package/dist/sdk/extension/doctor.js +1 -1
  99. package/dist/sdk/extension/install-receipts.js +1 -1
  100. package/dist/sdk/extension/install-snapshot.d.ts +11 -0
  101. package/dist/sdk/extension/install-snapshot.js +1 -1
  102. package/dist/sdk/extension.d.ts +12 -0
  103. package/dist/sdk/extension.js +1 -1
  104. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  105. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  106. package/dist/sdk/governance/health.d.ts +1 -0
  107. package/dist/sdk/governance/health.js +2 -2
  108. package/dist/sdk/index.d.ts +4 -2
  109. package/dist/sdk/index.js +1 -1
  110. package/dist/sdk/lifecycle/checkpoint-rollback.d.ts +7 -0
  111. package/dist/sdk/lifecycle/checkpoint-rollback.js +2 -0
  112. package/dist/sdk/lifecycle/close-many.d.ts +1 -1
  113. package/dist/sdk/lifecycle/close-many.js +1 -1
  114. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
  115. package/dist/sdk/lifecycle/restore.js +1 -1
  116. package/dist/sdk/lifecycle/update-many.d.ts +1 -1
  117. package/dist/sdk/lifecycle/update-many.js +1 -1
  118. package/dist/sdk/mcp/executable.d.ts +13 -0
  119. package/dist/sdk/mcp/executable.js +5 -0
  120. package/dist/sdk/public-surface.json +1 -1
  121. package/dist/sdk/query/context.d.ts +2 -1
  122. package/dist/sdk/query/context.js +1 -1
  123. package/dist/sdk/query/get.d.ts +2 -1
  124. package/dist/sdk/query/get.js +1 -1
  125. package/dist/sdk/query/list.d.ts +2 -1
  126. package/dist/sdk/query/list.js +1 -1
  127. package/dist/sdk/query/search/types.d.ts +2 -1
  128. package/dist/sdk/query.d.ts +1 -0
  129. package/dist/sdk/query.js +1 -1
  130. package/dist/sdk/read-output-contracts.d.ts +10 -2
  131. package/dist/sdk/read-output-contracts.js +1 -1
  132. package/dist/sdk/runtime-input.js +1 -1
  133. package/dist/sdk/runtime-primitives.d.ts +2 -1
  134. package/dist/sdk/runtime-primitives.js +1 -1
  135. package/dist/sdk/runtime.d.ts +11 -11
  136. package/dist/sdk/runtime.js +1 -1
  137. package/dist/sdk/test/batch.js +2 -2
  138. package/dist/sdk/test/entry.d.ts +5 -1
  139. package/dist/sdk/test/entry.js +2 -1
  140. package/dist/sdk/test/execution.js +2 -2
  141. package/dist/sdk/workspace-snapshot.d.ts +5 -1
  142. package/dist/sdk/workspace-snapshot.js +3 -3
  143. package/dist/sdk/workspace.js +2 -2
  144. package/docs/COMMANDS.md +21 -2
  145. package/docs/CONFIGURATION.md +19 -3
  146. package/docs/EXTENSION_AUTHOR_CONTRACTS.md +2 -1
  147. package/docs/EXTENSION_LIFECYCLE.md +47 -0
  148. package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +16 -1
  149. package/docs/READ_OUTPUT_CONTRACTS.md +15 -0
  150. package/docs/RELEASING.md +9 -0
  151. package/docs/SDK.md +84 -5
  152. package/docs/SDK_STORAGE_LIFECYCLE.md +2 -1
  153. package/docs/TESTING.md +39 -7
  154. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +8 -3
  155. package/marketplace.json +1 -1
  156. package/package.json +1 -1
  157. package/packages/pm-beads/package.json +1 -1
  158. package/packages/pm-calendar/package.json +1 -1
  159. package/packages/pm-command-kit/package.json +1 -1
  160. package/packages/pm-digital-twin/package.json +1 -1
  161. package/packages/pm-governance-audit/package.json +1 -1
  162. package/packages/pm-guide-shell/package.json +1 -1
  163. package/packages/pm-kanban/package.json +1 -1
  164. package/packages/pm-lifecycle-hooks/package.json +1 -1
  165. package/packages/pm-linked-test-adapters/package.json +1 -1
  166. package/packages/pm-search-advanced/package.json +1 -1
  167. package/packages/pm-templates/package.json +1 -1
  168. package/packages/pm-todos/package.json +1 -1
  169. package/packages/pm-vcs/package.json +1 -1
  170. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  171. package/plugins/pm-claude/package.json +1 -1
  172. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  173. package/plugins/pm-codex/package.json +1 -1
  174. package/plugins/pm-codex/plugin.json +1 -1
  175. package/runtime-dependencies.json +1 -1
  176. package/dist/cli-bundle/chunks/chunk-35ISFIPC.js +0 -113
  177. package/dist/cli-bundle/chunks/chunk-5LSN7K4N.js +0 -2
  178. package/dist/cli-bundle/chunks/chunk-BAIVTLJM.js +0 -6
  179. package/dist/cli-bundle/chunks/chunk-C37RDYZI.js +0 -3
  180. package/dist/cli-bundle/chunks/chunk-J444ZX23.js +0 -126
  181. package/dist/cli-bundle/chunks/chunk-O67N62DT.js +0 -2
  182. package/dist/cli-bundle/chunks/chunk-VO3KDIU7.js +0 -9
  183. package/dist/cli-bundle/chunks/register-setup-XUIKAIZA.js +0 -2
  184. package/dist/cli-bundle/focused-chunks/chunk-25L3L2PF.js +0 -2
  185. package/dist/cli-bundle/focused-chunks/chunk-DVNUHTVK.js +0 -9
  186. package/dist/cli-bundle/focused-chunks/chunk-GC4VMLXL.js +0 -20
  187. package/dist/cli-bundle/focused-chunks/chunk-QWKCQ5PW.js +0 -91
  188. package/dist/cli-bundle/focused-chunks/chunk-SOVXHW6Z.js +0 -2
  189. package/dist/cli-bundle/focused-chunks/chunk-UUPJ6OZL.js +0 -26
  190. package/dist/cli-bundle/focused-chunks/chunk-XX5JQCLF.js +0 -2
@@ -4,6 +4,9 @@ Tracked by [pm-ig5cfe](../.agents/pm/issues/pm-ig5cfe.toon),
4
4
  [pm-495lkc](../.agents/pm/issues/pm-495lkc.toon), and
5
5
  [pm-miy5k6](../.agents/pm/issues/pm-miy5k6.toon).
6
6
  Static inventory is tracked by [pm-lhhnx9](../.agents/pm/issues/pm-lhhnx9.toon).
7
+ Verified replacements and disabled compatibility findings are tracked by
8
+ [pm-c9wz5ef4ulnv](../.agents/pm/issues/pm-c9wz5ef4ulnv.toon) and
9
+ [pm-5xn8we1wue0m](../.agents/pm/issues/pm-5xn8we1wue0m.toon).
7
10
 
8
11
  ## Read-only configured inventory
9
12
 
@@ -32,6 +35,45 @@ each. Use `pm install npm:<package>` to force npm identity or the reported bare
32
35
  alias command to force the bundled package. Install-all results carry the same
33
36
  receipt on every package row.
34
37
 
38
+ ## Verified replacements
39
+
40
+ `pm package install` and the SDK's `runExtension(source, { install: true }, global)`
41
+ retain the previous installation through fresh-module runtime verification and
42
+ contribution persistence. When a copied replacement fails to load or activate,
43
+ pm restores the previous package tree and exact managed/settings content. A
44
+ settings restoration appends a compensating workspace-history event.
45
+
46
+ The failed attempt still returns `ok: false` and its candidate diagnostics, with
47
+ `previous_state_preserved: true`, `overwritten: false`, and
48
+ `rollback.status: "restored"`. The previous command remains available in a new
49
+ process. Multi-target and install-all receipts retain these fields per package.
50
+ SDK `ExtensionCommandResult` / `PackageCommandResult` consumers can narrow
51
+ `details.rollback.status` to access typed recovery arguments on failed restoration.
52
+ These two diagnostic keys are now reserved typed fields. Code constructing
53
+ lifecycle result objects or test doubles must use the boolean and rollback
54
+ shapes, or rename custom metadata stored under those keys. Ordinary result
55
+ readers remain compatible; the runtime implementation is unchanged by this
56
+ declaration refinement.
57
+
58
+ If restoration fails, `previous_state_preserved` is false. The retained backup
59
+ and executable `rollback.recovery_args` / `rollback.recovery_command` identify a
60
+ source for reinstalling the previous package. Resolve the reported filesystem
61
+ failure first. Fresh installations and installations whose source is already
62
+ the destination retain failed code for diagnosis and report
63
+ `previous_state_preserved: false`; they have no earlier package version to
64
+ recover. Package code can have external side effects during activation; this
65
+ snapshot protects the installation and its managed/settings content.
66
+
67
+ ## Disabled package compatibility
68
+
69
+ An explicitly disabled package remains visible in inventory and discovery.
70
+ Its host-version warnings use `extension_disabled_pm_*` codes and are advisory
71
+ in health, including `--strict-exit`. Each finding identifies the package,
72
+ required bound and scoped activation command to use after satisfying that
73
+ bound. Enabled packages retain the ordinary `extension_pm_*` compatibility
74
+ checks and blocking policy. Deactivation does not permit incompatible code to
75
+ load or suppress malformed-manifest, missing-entry or other unrelated findings.
76
+
35
77
  ## Durable Extension Migrations
36
78
 
37
79
  Active packages register schema migrations through `api.registerMigration`.
@@ -62,3 +104,8 @@ compose without warnings, and runtime invokes only the matching owner. Empty or
62
104
  omitted command ownership retains the legacy global behavior and collides with
63
105
  every other override. Activation summaries and persisted contribution
64
106
  inventories expose `preflight_ownership` for static doctor and tooling output.
107
+
108
+ Rollback failures retain the initial error as their cause and expose an original
109
+ typed refusal as `context.original_code`, while keeping the rollback code and
110
+ exit policy. This diagnostic boundary is tracked by
111
+ [pm-4vymxc](../.agents/pm/issues/pm-4vymxc.toon).
@@ -3,7 +3,8 @@
3
3
  Tracker references: [pm-3g3f8z](../.agents/pm/features/pm-3g3f8z.toon),
4
4
  [pm-v7e337](../.agents/pm/features/pm-v7e337.toon),
5
5
  [pm-3zh9s4](../.agents/pm/features/pm-3zh9s4.toon), and
6
- [pm-vzcisw](../.agents/pm/chores/pm-vzcisw.toon).
6
+ [pm-vzcisw](../.agents/pm/chores/pm-vzcisw.toon), and executable probes
7
+ [pm-gh1540](../.agents/pm/issues/pm-gh1540.toon).
7
8
 
8
9
  pm exposes the same MCP 2026-07-28 dispatcher through two adapters:
9
10
 
@@ -20,6 +21,20 @@ thin bindings over those contracts.
20
21
 
21
22
  ## Run the HTTP adapter
22
23
 
24
+ Both executables accept `--help` / `-h` and `--version` / `-V`. These probes
25
+ return before reading transport settings, opening stdin, or binding a listener,
26
+ including when server configuration is invalid. Help includes configuration,
27
+ supported protocol revisions, and a version-pinned client or launch example.
28
+ No arguments starts the selected transport. Unsupported arguments return usage
29
+ exit code 64 with a help command. Server configuration uses environment variables.
30
+
31
+ Embedded launchers can import `resolvePmMcpExecutableInvocation` and its
32
+ `PmMcpExecutableTransport` / `PmMcpExecutableInvocation` types from
33
+ `@unbrained/pm-cli/sdk/contracts` or the aggregate SDK. This pure function takes
34
+ the argument vector, transport, and package version, and returns either a
35
+ `serve` decision or an `exit` decision with stdout, stderr, and exit code.
36
+ It does not read the environment, workspace, or process streams.
37
+
23
38
  The safe default binds only `127.0.0.1:3000`:
24
39
 
25
40
  ```bash
@@ -87,6 +87,17 @@ apply. `estimated_tokens` measures the emitted envelope;
87
87
 
88
88
  ## Typed producer pages
89
89
 
90
+ Receipt typing is tracked by [pm-gh1551](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1551.toon)
91
+ (repository-only tracker record excluded from npm).
92
+ Finalized `list`, `context`, `search`, and `get` first pages expose the shared
93
+ `PmReadOutputMetadata` contract. Their `omission_receipt` is present; accounting
94
+ receipts `read_output`, `read_session`, and `output_budget_truncation` remain
95
+ optional. The raw query result types expose these receipts optionally because
96
+ `runList`, `runContext`, `runSearch`, and `runGet` return before final projection.
97
+ The metadata type is available from the root, core, query, contracts, and runtime
98
+ entrypoints. Producer continuation pages may reference the initial omission
99
+ receipt, and whole-result budget omissions retain their separate discriminant.
100
+
90
101
  Tracked by [pm-oybmsd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-oybmsd.toon),
91
102
  [pm-jqgkis](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-jqgkis.toon), and
92
103
  [pm-qal1uw](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-qal1uw.toon)
@@ -250,6 +261,10 @@ The estimate is `ceil(utf8_bytes / 4)` for the complete envelope. The CLI uses
250
261
  its selected built-in JSON or TOON representation, including indentation and
251
262
  the final newline. SDK calls that select `outputFormat` use that representation;
252
263
  structured SDK calls without a renderer retain compact JSON measurement.
264
+ The native SDK dispatcher preserves that distinction for packing decisions,
265
+ infeasible-budget receipts, and session debits, including the returned next state
266
+ ([pm-gh1552](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1552.toon),
267
+ repository-only tracker record excluded from npm).
253
268
  Those unformatted calls keep the conservative workload-class ceiling
254
269
  (`default_max_estimated_tokens`, also used as the generated TOON ceiling).
255
270
  Selecting JSON explicitly opts into its larger declared rendering allowance;
package/docs/RELEASING.md CHANGED
@@ -171,6 +171,15 @@ configuration belong in private operator documentation.
171
171
  result before candidate provenance, proves publication, and exits without
172
172
  evaluating the generated release commit as a new candidate
173
173
 
174
+ Dependency advisory diagnostics are tracked by
175
+ [pm-z20n3s](../.agents/pm/tasks/pm-z20n3s.toon). Both Auto Release and Release
176
+ retain the original `.cache/dependency-security/receipt.json` after the gate,
177
+ including failures, as `dependency-advisory-<run-id>-<attempt>` for seven days.
178
+ Only that public receipt is uploaded, with explicit hidden-file inclusion.
179
+ It records registry and OSV findings or unavailable evidence without raw
180
+ stderr, credentials, telemetry, or sibling caches. Missing receipts warn rather
181
+ than masking the original failure. Retention never changes the gate verdict.
182
+
174
183
  Pipeline entrypoint:
175
184
 
176
185
  ```bash
package/docs/SDK.md CHANGED
@@ -63,6 +63,10 @@ Terminal recurrence and executable recovery are tracked by
63
63
  [pm-surv](../.agents/pm/issues/pm-surv.toon); see
64
64
  [Recurrence and Executable Recovery Contracts](RECURRENCE_RECOVERY_CONTRACTS.md).
65
65
 
66
+ Linked-resource argument recovery and assignment-only test admission are tracked
67
+ by [pm-t2dqzijokl31](../.agents/pm/issues/pm-t2dqzijokl31.toon) and
68
+ [pm-gh1555](../.agents/pm/issues/pm-gh1555.toon).
69
+
66
70
  Use it for extension authoring, package authoring, command/action contract discovery, and deterministic app or CI automation. Do not import private `src/core/...` modules from external integrations or packages.
67
71
 
68
72
  MCP hosts can build on the public stateless protocol, MRTR, cache/schema, and
@@ -223,6 +227,16 @@ follow the migration guidance for changed unions or error codes. The shared
223
227
  [primitive inventory](SDK_PRIMITIVE_INVENTORY.md) records CLI/MCP ownership:
224
228
  presentation modules import the SDK and have zero private-core edges.
225
229
 
230
+ Bulk recovery is tracked by [pm-gh1563](../.agents/pm/issues/pm-gh1563.toon)
231
+ and [pm-gh1564](../.agents/pm/issues/pm-gh1564.toon). `PmUpdateManyActionOptions`
232
+ and `PmCloseManyActionOptions` accept `rollback: "checkpoint-id"`; boolean
233
+ values are refused before dispatch. The shared SDK inverse writer verifies
234
+ attributed history and current field postimages under the item lock, preserving
235
+ unrelated peer context. Rollback rows can now be `skipped` when no committed
236
+ effect remains. Exhaustive consumers should handle that additional row state.
237
+ See [bulk operations](COMMANDS.md#bulk-operations) for conflict, collection,
238
+ legacy-checkpoint and ownership semantics.
239
+
226
240
  ### Lock ownership and recovery
227
241
 
228
242
  Use the public `acquireLock` primitive when a package must serialize its own
@@ -243,12 +257,46 @@ async function writePackageState(pmRoot: string, write: () => Promise<void>) {
243
257
 
244
258
  The built-in provider automatically recovers a provably dead original Linux
245
259
  owner before TTL. Unknown owners retain the existing lease policy. Conflicts
246
- expose the lock identity, observed process state and wait advice through
247
- `PmCliError.context`. Force does not bypass an unexpired lock whose owner is
260
+ expose the lock identity, observed process state, `waited_ms`, observed
261
+ `owner_handoffs` and wait advice through `PmCliError.context`. The wait budget
262
+ is a fixed total by default. Pass `{ waitPolicy: "progress" }` in the options
263
+ object to treat it as a no-progress window instead: each observed owner handoff
264
+ restarts it, so a queue of live writers drains while a stalled owner still
265
+ refuses after the budget. Without an explicit `maxWaitMs` such a wait is capped
266
+ at 120 seconds (or the budget, when larger). Item mutations, restore and the
267
+ hierarchy lock use the progress policy. Force does not bypass an unexpired lock whose owner is
248
268
  alive or unverifiable. TTL expiry permits removal regardless of owner liveness.
249
- An expired holder can continue writing, so mutual exclusion beyond TTL is not
250
- guaranteed. Choose a TTL longer than the critical section, or fence protected
251
- resource writes at the caller. See
269
+
270
+ An expired holder can keep running, so fence the protected write with
271
+ `acquireLockLease`. With the built-in lock provider, `fence(commit)` runs
272
+ `commit` only while this lease still owns its lock generation; after a TTL or
273
+ forced takeover it refuses with `lock_lost` (exit 4, `context.lease` and
274
+ `context.current_owner`) and never runs `commit`. Takeover and fencing share one
275
+ per-lock gate, so a takeover cannot interleave with a fenced commit. When an
276
+ extension `lock_acquire` override handles the acquisition, the extension owns
277
+ the lock lifecycle and `fence(commit)` runs `commit` unfenced: such a provider
278
+ must itself exclude or fence concurrent commits, or perform an atomic
279
+ compare-and-write at the storage boundary. A revision check made before the
280
+ write is not a substitute, because another writer can commit between the check
281
+ and the write. `mutateItem` and `deleteItem` additionally refuse with
282
+ `stale_revision` when the stored item bytes changed after the locked read; that
283
+ narrows, but does not close, the window for an unfenced override-held lock. `restore` fences its write with the lease
284
+ (`lock_lost`) and re-verifies item and history under its lock, refusing with its
285
+ own "changed while waiting for lock" conflict rather than `stale_revision`:
286
+
287
+ ```ts
288
+ import { acquireLockLease } from "@unbrained/pm-cli/sdk";
289
+
290
+ const lease = await acquireLockLease(pmRoot, "example.state", 3600, "example-package", false, true, 30_000);
291
+ try {
292
+ const next = await computeNextState(); // may outlive the TTL
293
+ await lease.fence(() => writeState(next)); // refuses instead of overwriting a newer owner
294
+ } finally {
295
+ await lease.release();
296
+ }
297
+ ```
298
+
299
+ See
252
300
  [Configuration](CONFIGURATION.md#common-settings) for host identity, local
253
301
  recovery audit receipts and `PM_LOCK_WAIT_MS` precedence. Extension lock
254
302
  providers retain responsibility for their own ownership and recovery policy.
@@ -2565,6 +2613,37 @@ time.
2565
2613
 
2566
2614
  ## Expected CLI Errors
2567
2615
 
2616
+ Packages and adapters can derive explicit retries for misplaced linked-resource
2617
+ values with the public SDK:
2618
+
2619
+ ```ts
2620
+ import { resolveLinkedResourcePositionalRecovery } from "@unbrained/pm-cli/sdk";
2621
+
2622
+ const recovery = resolveLinkedResourcePositionalRecovery("docs", [
2623
+ "docs", "pm-example", "design, notes.md", "--json",
2624
+ ]);
2625
+ // recovery.retryArgs retains the item and presentation flags, with an explicit
2626
+ // --add value that preserves the literal comma through structured parsing.
2627
+ ```
2628
+
2629
+ The helper returns `undefined` for ambiguous input. When a positional test value
2630
+ contains metadata without its actual command, the receipt retains `itemId` and
2631
+ `value` and omits `retryArgs`. Its `templateArgs` retains the selected tracker
2632
+ and output options while requiring the actual-command placeholder to be filled.
2633
+ The adapter can request that command using the receipt. Explicit `command=` or
2634
+ `cmd=` entries retain their structured metadata; empty commands receive templates.
2635
+ Suggested test retries pass the same command-admission guard as registration;
2636
+ assignment/comment-only candidates receive command-required templates.
2637
+ `runTestAll()` retains these legacy configuration refusals as per-test results
2638
+ and continues valid tests and later items. Refused entries retain their owning
2639
+ item and result position; aggregate and per-item tracking still report failure.
2640
+ Linked tests containing only assignments or shell comments fail with
2641
+ `linked_test_command_not_executable` before registration or execution; quoted
2642
+ environment assignments and later-line real commands remain supported. The
2643
+ guard also recognizes assignment-only lists separated by `;`, `&&`, `||`, `|`
2644
+ or `&`, including a trailing semicolon. Quoted and escaped separators stay
2645
+ inside assignment values; lists containing executable commands remain supported.
2646
+
2568
2647
  Package commands should throw expected user/action errors with the public SDK shape so the CLI can preserve exit codes and Sentry can filter expected retry failures:
2569
2648
 
2570
2649
  ```ts
@@ -39,7 +39,8 @@ For optional background work, pass `maxWaitMs: 0` in the final `acquireLock`
39
39
  options object. The built-in lock then fails fast for active contention, even
40
40
  when `PM_LOCK_WAIT_MS` requests a longer wait. Stale-lock handling may still
41
41
  retry creation after removing a confirmed stale owner. A positive `maxWaitMs` caps the normal
42
- environment-or-caller retry budget without increasing it. Filesystem calls and
42
+ environment-or-caller retry budget without increasing it, including the
43
+ handoff-restarted no-progress window. Filesystem calls and
43
44
  extension execution still take their ordinary execution time; the cap is not a
44
45
  wall-clock timeout. Extension lock overrides receive `max_wait_ms` and remain
45
46
  responsible for observing it.
package/docs/TESTING.md CHANGED
@@ -270,13 +270,17 @@ original assertions, deadlines and retry policy. This allocation is tracked by
270
270
  [pm-89297t](../.agents/pm/tasks/pm-89297t.toon); it does not classify or erase
271
271
  historical failed attempts.
272
272
 
273
- The complete macOS Node 24 and Windows Node 24 nightly suites each use two
274
- Vitest shards. Both halves must pass within the existing 20-minute job limit;
275
- sharding retains the same complete file population, serial phase, assertions,
276
- per-test deadlines and retry policy. The recurrence collector retains the old
277
- unsharded platform families alongside both current shard identities, so changing
278
- the matrix does not erase earlier failures. macOS allocation is tracked by
279
- [pm-qrirz8](../.agents/pm/tasks/pm-qrirz8.toon).
273
+ The complete nightly suites use two Vitest shards on Linux Node 22/25 and
274
+ macOS Node 24, and four shards on Windows Node 24 and Linux Node 24 coverage.
275
+ Every partition must pass within the existing 20-minute job limit. Sharding
276
+ retains the complete file population, serial phase, assertions, per-test
277
+ deadlines and retry policy. Linux coverage blobs merge only after all native
278
+ partitions succeed; the aggregate retains exact 100% lines, branches, functions
279
+ and statements. Missing, canceled, skipped or failed partitions refuse admission.
280
+ The recurrence collector retains retired families alongside current partitions
281
+ and the coverage aggregate, preserving original failed attempts. This allocation
282
+ is tracked by [pm-gxq0dt](../.agents/pm/issues/pm-gxq0dt.toon); the prior macOS
283
+ allocation remains completed in [pm-qrirz8](../.agents/pm/tasks/pm-qrirz8.toon).
280
284
 
281
285
  Vitest's GitHub reporter emits annotations and retry evidence. The repository
282
286
  reliability reporter additionally writes
@@ -785,6 +789,34 @@ pm test <item-id> --run --pm-context auto --check-context --auto-pm-context
785
789
  pm test <item-id> --add-json '{"command":"pnpm exec vitest run tests/integration/linked-test-context-trust.integration.spec.ts","pm_context_mode":"none","workspace_context_mode":"snapshot"}'
786
790
  ```
787
791
 
792
+ Command admission and positional recovery are tracked by
793
+ [pm-gh1555](../.agents/pm/issues/pm-gh1555.toon) and
794
+ [pm-t2dqzijokl31](../.agents/pm/issues/pm-t2dqzijokl31.toon).
795
+ Commands consisting only of assignments or shell comments, such as
796
+ `status=passed`, `RESULT=ok # note` or `RESULT=ok;`, are
797
+ refused with `linked_test_command_not_executable` before registration or
798
+ execution, including already-stored entries. They do not establish test-pass
799
+ evidence. Remove a legacy entry with `pm test <id> --remove-index <index>`,
800
+ then register the actual command. Environment assignments preceding a real
801
+ command remain supported on shells that accept that syntax, including commands
802
+ on a later line after a comment.
803
+ Assignment-only lists separated by `;`, `&&`, `||`, `|` or `&` also fail
804
+ admission. Quoted or escaped separators remain part of their assignment value;
805
+ the guard preserves lists containing an actual executable command.
806
+
807
+ A misplaced positional path on `files` or `docs` is refused with an explicit
808
+ `--add path=...` retry in `recovery.suggested_retry_args`; supplied values and
809
+ presentation options are preserved. A quoted positional test command receives
810
+ an explicit `--add-json` retry. Explicit `command=` or `cmd=` entries retain their
811
+ structured metadata through `--add`. An empty command or metadata alone, such
812
+ as `timeout_seconds=3600`, receives a template requiring the actual command, without a guessed executable
813
+ retry. Refused invocations do not modify the item.
814
+ Assignment/comment-only positional commands also receive templates instead of
815
+ retries that the registration guard would immediately refuse.
816
+ For legacy entries, `test-all` reports each refusal in its owning item's ordered
817
+ `run_results` with `failure_category: "config_refusal"`. Valid tests and later
818
+ items continue; refusals count as failures in aggregate and persisted summaries.
819
+
788
820
  For complex linked-test commands, prefer JSON input so shell syntax survives unchanged:
789
821
 
790
822
  ```bash
@@ -4,12 +4,12 @@ Tracker: `pm-f05lsg`.
4
4
 
5
5
  Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
6
6
 
7
- - Catalog error codes: 422
7
+ - Catalog error codes: 427
8
8
  - Executable error codes: 19
9
9
  - Executable-code ratchet floor: 18
10
10
  - Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
11
- - Uncovered error codes: 403
12
- - Coverage fraction: 0.045024
11
+ - Uncovered error codes: 408
12
+ - Coverage fraction: 0.044496
13
13
  - Closed-domain probes: 19
14
14
  - Grammar probes: 117
15
15
 
@@ -92,6 +92,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
92
92
  | `extension_dependency_version_unsafe` | `extension_dependency_version_unsafe` | uncovered | none | 0 |
93
93
  | `extension_flag_value_invalid` | `extension_flag_value_invalid` | uncovered | none | 0 |
94
94
  | `extension_install_incomplete_source_scan` | `extension_install_incomplete_source_scan` | uncovered | none | 0 |
95
+ | `extension_install_rollback_failed` | `extension_install_rollback_failed` | uncovered | none | 0 |
95
96
  | `extension_install_soft_failed` | `extension_install_soft_failed` | uncovered | none | 0 |
96
97
  | `extension_install_source_contains_destination` | `extension_install_source_contains_destination` | uncovered | none | 0 |
97
98
  | `extension_item_field_reserved` | `extension_item_field_reserved` | uncovered | none | 0 |
@@ -190,6 +191,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
190
191
  | `item_not_found` | `item_not_found` | uncovered | none | 0 |
191
192
  | `likely_duplicate` | `likely_duplicate` | uncovered | none | 0 |
192
193
  | `linked_artifact_mutation_conflict` | `linked_artifact_mutation_conflict` | uncovered | none | 0 |
194
+ | `linked_resource_positional_value` | `linked_resource_positional_value` | uncovered | none | 0 |
195
+ | `linked_test_command_not_executable` | `linked_test_command_not_executable` | uncovered | none | 0 |
193
196
  | `linked_test_context_invalid` | `linked_test_context_invalid` | uncovered | none | 0 |
194
197
  | `linked_test_remove_no_match` | `linked_test_remove_no_match` | uncovered | none | 0 |
195
198
  | `linked_test_update_ambiguous` | `linked_test_update_ambiguous` | uncovered | none | 0 |
@@ -199,6 +202,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
199
202
  | `local_package_archive_unsafe` | `local_package_archive_unsafe` | uncovered | none | 0 |
200
203
  | `local_source_not_found_bare_name` | `local_source_not_found_bare_name` | uncovered | none | 0 |
201
204
  | `lock_conflict` | `lock_conflict` | uncovered | none | 0 |
205
+ | `lock_lost` | `lock_lost` | uncovered | none | 0 |
202
206
  | `locks_stale_count` | `locks_stale_count` | uncovered | none | 0 |
203
207
  | `locks_unreadable` | `locks_unreadable` | uncovered | none | 0 |
204
208
  | `malformed_plan_step_evidence` | `malformed_plan_step_evidence` | uncovered | none | 0 |
@@ -310,6 +314,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
310
314
  | `stale_budget` | `stale_budget` | uncovered | none | 0 |
311
315
  | `stale_destination` | `stale_destination` | uncovered | none | 0 |
312
316
  | `stale_observed_signature` | `stale_observed_signature` | uncovered | none | 0 |
317
+ | `stale_revision` | `stale_revision` | uncovered | none | 0 |
313
318
  | `status_duplicate` | `status_duplicate` | uncovered | none | 0 |
314
319
  | `status_invalid` | `status_invalid` | uncovered | none | 0 |
315
320
  | `status_lifecycle_role_required` | `status_lifecycle_role_required` | uncovered | none | 0 |
package/marketplace.json CHANGED
@@ -1 +1 @@
1
- {"name":"pm","owner":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"description":"Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.","version":"2026.10.22","plugins":[{"name":"pm-claude","source":"./plugins/pm-claude","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 workflow skills with slash invocations, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.","version":"2026.10.22","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"],"category":"productivity"}]}
1
+ {"name":"pm","owner":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"description":"Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.","version":"2026.10.24","plugins":[{"name":"pm-claude","source":"./plugins/pm-claude","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 workflow skills with slash invocations, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.","version":"2026.10.24","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"],"category":"productivity"}]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.10.22",
3
+ "version": "2026.10.24",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.28.5",
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-beads","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for importing Beads JSONL records.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-beads"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","beads"],"pm":{"aliases":["beads"],"extensions":["extensions/beads"],"catalog":{"display_name":"Beads Import","category":"migration","summary":"Import Beads JSONL records into pm while preserving source IDs.","tags":["migration","beads","import"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-beads","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for importing Beads JSONL records.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-beads"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","beads"],"pm":{"aliases":["beads"],"extensions":["extensions/beads"],"catalog":{"display_name":"Beads Import","category":"migration","summary":"Import Beads JSONL records into pm while preserving source IDs.","tags":["migration","beads","import"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-calendar","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for calendar and agenda views.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-calendar"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","calendar","agenda"],"pm":{"aliases":["calendar"],"extensions":["extensions/calendar"],"catalog":{"display_name":"Calendar Views","category":"workflow","summary":"Show agenda, day, week, and month views for deadlines, reminders, and scheduled events.","tags":["calendar","agenda","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-calendar","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for calendar and agenda views.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-calendar"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","calendar","agenda"],"pm":{"aliases":["calendar"],"extensions":["extensions/calendar"],"catalog":{"display_name":"Calendar Views","category":"workflow","summary":"Show agenda, day, week, and month views for deadlines, reminders, and scheduled events.","tags":["calendar","agenda","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-command-kit","version":"2026.10.22","private":true,"type":"module","description":"First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-command-kit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","commands","exemplar"],"pm":{"aliases":["command-kit"],"extensions":["extensions/command-kit"],"catalog":{"display_name":"Command Kit Exemplar","category":"sdk","summary":"Copy-paste-able exemplar for registerCommand, registerFlags, and registerParser.","tags":["sdk","commands","parser","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-command-kit","version":"2026.10.24","private":true,"type":"module","description":"First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-command-kit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","commands","exemplar"],"pm":{"aliases":["command-kit"],"extensions":["extensions/command-kit"],"catalog":{"display_name":"Command Kit Exemplar","category":"sdk","summary":"Copy-paste-able exemplar for registerCommand, registerFlags, and registerParser.","tags":["sdk","commands","parser","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-digital-twin","version":"2026.10.22","private":true,"type":"module","description":"Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-digital-twin"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","digital-twin","event-sourcing","temporal-graph","exemplar"],"pm":{"aliases":["digital-twin","twin"],"extensions":["extensions/digital-twin"],"catalog":{"display_name":"Digital Twin SDK Exemplar","category":"sdk","summary":"Temporal facility graph proving event replay, point-in-time state, invariants, federation, checkpoints, and compact exports through public SDK contracts.","tags":["sdk","digital-twin","event-sourcing","graph","offline-first","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-digital-twin","version":"2026.10.24","private":true,"type":"module","description":"Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-digital-twin"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","digital-twin","event-sourcing","temporal-graph","exemplar"],"pm":{"aliases":["digital-twin","twin"],"extensions":["extensions/digital-twin"],"catalog":{"display_name":"Digital Twin SDK Exemplar","category":"sdk","summary":"Temporal facility graph proving event replay, point-in-time state, invariants, federation, checkpoints, and compact exports through public SDK contracts.","tags":["sdk","digital-twin","event-sourcing","graph","offline-first","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-governance-audit","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for governance audit and normalization workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-governance-audit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","governance","audit","normalize","hooks"],"pm":{"aliases":["governance-audit","audit"],"extensions":["extensions/governance-audit"],"catalog":{"display_name":"Governance Audit","category":"governance","summary":"Run dedupe audits, comments audits, and normalize sweeps as package-owned workflows.","tags":["governance","audit","normalize","hooks"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-governance-audit","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for governance audit and normalization workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-governance-audit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","governance","audit","normalize","hooks"],"pm":{"aliases":["governance-audit","audit"],"extensions":["extensions/governance-audit"],"catalog":{"display_name":"Governance Audit","category":"governance","summary":"Run dedupe audits, comments audits, and normalize sweeps as package-owned workflows.","tags":["governance","audit","normalize","hooks"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-guide-shell","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for guide and shell completion workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-guide-shell"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","guide","completion","shell"],"pm":{"aliases":["guide-shell"],"extensions":["extensions/guide-shell"],"catalog":{"display_name":"Guide + Shell UX","category":"workflow","summary":"Restore guide documentation and shell completion commands as package-owned UX surfaces.","tags":["guide","completion","shell"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-guide-shell","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for guide and shell completion workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-guide-shell"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","guide","completion","shell"],"pm":{"aliases":["guide-shell"],"extensions":["extensions/guide-shell"],"catalog":{"display_name":"Guide + Shell UX","category":"workflow","summary":"Restore guide documentation and shell completion commands as package-owned UX surfaces.","tags":["guide","completion","shell"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-kanban","version":"2026.10.22","private":true,"type":"module","description":"First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-kanban"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","profile","archetype","kanban","exemplar"],"pm":{"aliases":["kanban"],"extensions":["extensions/kanban"],"catalog":{"display_name":"Kanban Archetype","category":"sdk","summary":"Installable Kanban continuous-flow archetype: Card item type, flow fields, and a ProjectProfileDefinition built on public SDK primitives.","tags":["sdk","profile","archetype","kanban","schema","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-kanban","version":"2026.10.24","private":true,"type":"module","description":"First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-kanban"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","profile","archetype","kanban","exemplar"],"pm":{"aliases":["kanban"],"extensions":["extensions/kanban"],"catalog":{"display_name":"Kanban Archetype","category":"sdk","summary":"Installable Kanban continuous-flow archetype: Card item type, flow fields, and a ProjectProfileDefinition built on public SDK primitives.","tags":["sdk","profile","archetype","kanban","schema","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-lifecycle-hooks","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package demonstrating safe lifecycle hook registration.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-lifecycle-hooks"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","hooks","lifecycle","sdk"],"pm":{"aliases":["lifecycle-hooks"],"extensions":["extensions/lifecycle-hooks"],"catalog":{"display_name":"Lifecycle Hooks","category":"sdk","summary":"Default-inert lifecycle hook exemplar for package authors.","tags":["hooks","lifecycle","sdk"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-lifecycle-hooks","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package demonstrating safe lifecycle hook registration.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-lifecycle-hooks"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","hooks","lifecycle","sdk"],"pm":{"aliases":["lifecycle-hooks"],"extensions":["extensions/lifecycle-hooks"],"catalog":{"display_name":"Lifecycle Hooks","category":"sdk","summary":"Default-inert lifecycle hook exemplar for package authors.","tags":["hooks","lifecycle","sdk"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-linked-test-adapters","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for optional linked-test run management adapters and reporters.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-linked-test-adapters"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","linked-tests","background-runs","test-runs"],"pm":{"aliases":["linked-test-adapters"],"extensions":["extensions/linked-test-adapters"],"catalog":{"display_name":"Linked Test Adapters","category":"testing","summary":"Restore optional linked-test run management/reporting command surfaces.","tags":["tests","linked-tests","background","reporting"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-linked-test-adapters","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for optional linked-test run management adapters and reporters.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-linked-test-adapters"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","linked-tests","background-runs","test-runs"],"pm":{"aliases":["linked-test-adapters"],"extensions":["extensions/linked-test-adapters"],"catalog":{"display_name":"Linked Test Adapters","category":"testing","summary":"Restore optional linked-test run management/reporting command surfaces.","tags":["tests","linked-tests","background","reporting"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-search-advanced","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for semantic, hybrid, and reindex search workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-search-advanced"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","search","reindex","semantic","hybrid"],"pm":{"aliases":["search-advanced"],"extensions":["extensions/search-advanced"],"catalog":{"display_name":"Advanced Search","category":"search","summary":"Enable semantic/hybrid search modes and reindex workflows.","tags":["search","semantic","hybrid","reindex"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-search-advanced","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for semantic, hybrid, and reindex search workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-search-advanced"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","search","reindex","semantic","hybrid"],"pm":{"aliases":["search-advanced"],"extensions":["extensions/search-advanced"],"catalog":{"display_name":"Advanced Search","category":"search","summary":"Enable semantic/hybrid search modes and reindex workflows.","tags":["search","semantic","hybrid","reindex"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-templates","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for reusable create templates.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-templates"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","templates"],"pm":{"aliases":["templates"],"extensions":["extensions/templates"],"catalog":{"display_name":"Create Templates","category":"workflow","summary":"Save, list, show, and apply reusable pm create option templates.","tags":["templates","create","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-templates","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for reusable create templates.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-templates"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","templates"],"pm":{"aliases":["templates"],"extensions":["extensions/templates"],"catalog":{"display_name":"Create Templates","category":"workflow","summary":"Save, list, show, and apply reusable pm create option templates.","tags":["templates","create","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-todos","version":"2026.10.22","private":true,"type":"module","description":"First-party pm package for Todo markdown import and export.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-todos"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","todos"],"pm":{"aliases":["todos"],"extensions":["extensions/todos"],"catalog":{"display_name":"Todos Import/Export","category":"migration","summary":"Import and export Todo markdown tasks through pm package commands.","tags":["migration","todos","import","export"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-todos","version":"2026.10.24","private":true,"type":"module","description":"First-party pm package for Todo markdown import and export.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-todos"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","todos"],"pm":{"aliases":["todos"],"extensions":["extensions/todos"],"catalog":{"display_name":"Todos Import/Export","category":"migration","summary":"Import and export Todo markdown tasks through pm package commands.","tags":["migration","todos","import","export"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-vcs-sdk-exemplar","version":"2026.10.22","private":true,"type":"module","description":"Beyond-PM exemplar: a VCS-style changeset workflow built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-vcs"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","vcs","event-sourcing","exemplar"],"pm":{"aliases":["vcs-exemplar"],"extensions":["extensions/vcs"],"catalog":{"display_name":"VCS SDK Exemplar","category":"sdk","summary":"Non-PM changeset/ref workflow proving custom schema, domain commands, hooks, history replay, and typed relationship events through public SDK contracts.","tags":["sdk","vcs","event-sourcing","graph","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
1
+ {"name":"@unbrained/pm-vcs-sdk-exemplar","version":"2026.10.24","private":true,"type":"module","description":"Beyond-PM exemplar: a VCS-style changeset workflow built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-vcs"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","vcs","event-sourcing","exemplar"],"pm":{"aliases":["vcs-exemplar"],"extensions":["extensions/vcs"],"catalog":{"display_name":"VCS SDK Exemplar","category":"sdk","summary":"Non-PM changeset/ref workflow proving custom schema, domain commands, hooks, history replay, and typed relationship events through public SDK contracts.","tags":["sdk","vcs","event-sourcing","graph","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
@@ -1 +1 @@
1
- {"$schema":"https://json.schemastore.org/claude-code-plugin-manifest.json","name":"pm-claude","displayName":"pm CLI","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.","version":"2026.10.22","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"]}
1
+ {"$schema":"https://json.schemastore.org/claude-code-plugin-manifest.json","name":"pm-claude","displayName":"pm CLI","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.","version":"2026.10.24","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"]}
@@ -1 +1 @@
1
- {"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.22","dependencies":{"@unbrained/pm-cli":"2026.10.22"}}
1
+ {"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.24","dependencies":{"@unbrained/pm-cli":"2026.10.24"}}
@@ -1 +1 @@
1
- {"name":"pm-codex","version":"2026.10.22","description":"Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents","tasks","workflows"],"skills":"./skills/","mcpServers":"./.mcp.json","interface":{"displayName":"pm CLI","shortDescription":"Native pm tracker tools and agent workflows","longDescription":"Use pm CLI from Codex through native MCP tools instead of shelling out to the pm command. The plugin bundles tracker operations, skills, command prompts, and subagent workflow guidance for planning, execution, validation, release, and audit work.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm CLI to orient, claim, track, verify, and close this repository task"],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","screenshots":[],"brandColor":"#2563EB"}}
1
+ {"name":"pm-codex","version":"2026.10.24","description":"Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents","tasks","workflows"],"skills":"./skills/","mcpServers":"./.mcp.json","interface":{"displayName":"pm CLI","shortDescription":"Native pm tracker tools and agent workflows","longDescription":"Use pm CLI from Codex through native MCP tools instead of shelling out to the pm command. The plugin bundles tracker operations, skills, command prompts, and subagent workflow guidance for planning, execution, validation, release, and audit work.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm CLI to orient, claim, track, verify, and close this repository task"],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","screenshots":[],"brandColor":"#2563EB"}}
@@ -1 +1 @@
1
- {"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.22","dependencies":{"@unbrained/pm-cli":"2026.10.22"}}
1
+ {"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.24","dependencies":{"@unbrained/pm-cli":"2026.10.24"}}
@@ -1 +1 @@
1
- {"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.22","description":"Repository-native project context workflows and a version-pinned pm MCP server for Codex.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents"],"extensions":{"com.openai":{"interface":{"displayName":"pm CLI","shortDescription":"Track project context with pm","longDescription":"Orient, plan, implement, verify, and hand off work with repository-native pm records and a bundled MCP server.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm to orient, track, verify, and hand off this repository task."],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","brandColor":"#2563EB"}}}}
1
+ {"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.24","description":"Repository-native project context workflows and a version-pinned pm MCP server for Codex.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents"],"extensions":{"com.openai":{"interface":{"displayName":"pm CLI","shortDescription":"Track project context with pm","longDescription":"Orient, plan, implement, verify, and hand off work with repository-native pm records and a bundled MCP server.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm to orient, track, verify, and hand off this repository task."],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","brandColor":"#2563EB"}}}}