@unbrained/pm-cli 2026.10.23 → 2026.10.25

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 (194) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +41 -0
  3. package/dist/cli/error-guidance.js +2 -2
  4. package/dist/cli/extension-command-help.js +2 -2
  5. package/dist/cli/register-history-activity.js +1 -1
  6. package/dist/cli-bundle/bundle-manifest.json +1 -1
  7. package/dist/cli-bundle/chunks/{chunk-R7KWBFM2.js → chunk-3CYXE6BV.js} +2 -2
  8. package/dist/cli-bundle/chunks/chunk-444VPGQT.js +20 -0
  9. package/dist/cli-bundle/chunks/{chunk-5V4HU6GK.js → chunk-4GD6QOP6.js} +21 -21
  10. package/dist/cli-bundle/chunks/{chunk-5DKCD4KV.js → chunk-5ZPT67NJ.js} +35 -34
  11. package/dist/cli-bundle/chunks/{chunk-KY34HTT2.js → chunk-7C3GCLOO.js} +29 -29
  12. package/dist/cli-bundle/chunks/{chunk-MTRYEVZR.js → chunk-7T3H24HN.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-REXCO5AG.js → chunk-EYCVAAIP.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-2UX2TAN2.js → chunk-FNZT4BTE.js} +60 -56
  15. package/dist/cli-bundle/chunks/chunk-HMJSFWHK.js +2 -0
  16. package/dist/cli-bundle/chunks/{chunk-ZDVTXLA6.js → chunk-LNKPH2DD.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-HDKY2YX3.js → chunk-MVJGGCGQ.js} +2 -2
  18. package/dist/cli-bundle/chunks/{chunk-3S5FLCG7.js → chunk-O3ZTGRIH.js} +2 -2
  19. package/dist/cli-bundle/chunks/{chunk-ZEI3DC5E.js → chunk-RD6UW3MW.js} +3 -3
  20. package/dist/cli-bundle/chunks/chunk-RLXK2S7P.js +2 -0
  21. package/dist/cli-bundle/chunks/{chunk-F76ZUP73.js → chunk-RQKDANP7.js} +42 -42
  22. package/dist/cli-bundle/chunks/chunk-TLMXSYJA.js +2 -0
  23. package/dist/cli-bundle/chunks/{chunk-AAX7CNL7.js → chunk-UI3FD3DW.js} +2 -2
  24. package/dist/cli-bundle/chunks/{chunk-ZMJF5HQW.js → chunk-VAEB6IUQ.js} +2 -2
  25. package/dist/cli-bundle/chunks/{chunk-ZNDYAZZ6.js → chunk-XYLBOXSH.js} +6 -6
  26. package/dist/cli-bundle/chunks/{chunk-AXGFNNI3.js → chunk-YCCGZHOR.js} +2 -2
  27. package/dist/cli-bundle/chunks/{indexed-receipt-blobs-XANVELIV.js → indexed-receipt-blobs-47I6KKDO.js} +2 -2
  28. package/dist/cli-bundle/chunks/{mutation-admission-P6LOBNLO.js → mutation-admission-747C6IUR.js} +2 -2
  29. package/dist/cli-bundle/chunks/{register-list-query-JOB65KDN.js → register-list-query-COST6KRV.js} +3 -3
  30. package/dist/cli-bundle/chunks/{register-mutation-QMNIN3RJ.js → register-mutation-JZVVJUHY.js} +2 -2
  31. package/dist/cli-bundle/chunks/register-operations-S4LKLUBJ.js +2 -0
  32. package/dist/cli-bundle/chunks/{register-setup-GNKWL3VL.js → register-setup-3ITZXPOL.js} +2 -2
  33. package/dist/cli-bundle/chunks/{settlement-hook-YUVCO65H.js → settlement-hook-5IVCF6ZY.js} +2 -2
  34. package/dist/cli-bundle/chunks/stage-3UUIYROS.js +2 -0
  35. package/dist/cli-bundle/focused-chunks/{chunk-DWQMYLFM.js → chunk-22727JYL.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-4MNUQCGR.js → chunk-3FM75SBJ.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/{chunk-ZHMF34DT.js → chunk-3M5FZCMC.js} +53 -53
  38. package/dist/cli-bundle/focused-chunks/{chunk-BUZ2Z4P3.js → chunk-46KDJH3K.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/chunk-5LBZR6YW.js +2 -0
  40. package/dist/cli-bundle/focused-chunks/{chunk-EDXTOAXP.js → chunk-74KC7FUQ.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/chunk-77NU7NPN.js +2 -0
  42. package/dist/cli-bundle/focused-chunks/{chunk-MLET6I3I.js → chunk-7DEZT4JN.js} +2 -2
  43. package/dist/cli-bundle/focused-chunks/{chunk-NSMZY6IK.js → chunk-B5JOVH5F.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/chunk-HMYDUEQK.js +8 -0
  45. package/dist/cli-bundle/focused-chunks/chunk-IVLIUPVV.js +12 -0
  46. package/dist/cli-bundle/focused-chunks/chunk-KIIGME23.js +2 -0
  47. package/dist/cli-bundle/focused-chunks/{chunk-P7DPS5M4.js → chunk-LWJ2X75I.js} +24 -24
  48. package/dist/cli-bundle/focused-chunks/{chunk-6GTZ24YV.js → chunk-MT5TYMEU.js} +2 -2
  49. package/dist/cli-bundle/focused-chunks/{chunk-OMXMYTEX.js → chunk-NC5HUGHU.js} +3 -3
  50. package/dist/cli-bundle/focused-chunks/chunk-NI5SG2M2.js +2 -0
  51. package/dist/cli-bundle/focused-chunks/chunk-QH5KMIYZ.js +91 -0
  52. package/dist/cli-bundle/focused-chunks/{chunk-UNTCCJPL.js → chunk-U6HXIF6G.js} +2 -2
  53. package/dist/cli-bundle/focused-chunks/{chunk-CGL36F6I.js → chunk-URWYYJ7K.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/{chunk-I2USTQNQ.js → chunk-W7MCCFYV.js} +2 -2
  55. package/dist/cli-bundle/focused-chunks/chunk-WMPDY5ZU.js +21 -0
  56. package/dist/cli-bundle/focused-chunks/{chunk-R536272H.js → chunk-Y4JHHY24.js} +2 -2
  57. package/dist/cli-bundle/focused-chunks/{chunk-KI5YFKNN.js → chunk-ZYCOMRFT.js} +2 -2
  58. package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-FVOA3XMI.js → indexed-receipt-blobs-YCLN2ZZG.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/{mutation-admission-HTFAIHJL.js → mutation-admission-BQBQXILV.js} +2 -2
  60. package/dist/cli-bundle/focused-chunks/{settlement-hook-2VXEB6PP.js → settlement-hook-XVS6P2XI.js} +2 -2
  61. package/dist/cli-bundle/focused-chunks/stage-VSIL4MTZ.js +2 -0
  62. package/dist/cli-bundle/main.js +21 -21
  63. package/dist/cli-bundle/sdk-authoring.js +1 -1
  64. package/dist/cli-bundle/sdk-contracts.js +2 -2
  65. package/dist/cli-bundle/sdk-core.js +24 -24
  66. package/dist/cli-bundle/sdk-governance.js +1 -1
  67. package/dist/cli-bundle/sdk-graph.js +1 -1
  68. package/dist/cli-bundle/sdk-merge.js +51 -52
  69. package/dist/cli-bundle/sdk-query.js +1 -1
  70. package/dist/cli-bundle/sdk-runtime.js +1 -1
  71. package/dist/cli-bundle/sdk-testing.js +1 -1
  72. package/dist/cli-bundle/sdk.js +9 -9
  73. package/dist/core/checkpoint/mutation-checkpoint.d.ts +6 -3
  74. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  75. package/dist/core/checkpoint/mutation-context.d.ts +10 -0
  76. package/dist/core/checkpoint/mutation-context.js +2 -0
  77. package/dist/core/diagnostics/remediation.js +1 -1
  78. package/dist/core/shared/errors.d.ts +13 -0
  79. package/dist/core/shared/errors.js +1 -1
  80. package/dist/core/store/item-store.js +1 -1
  81. package/dist/core/store/settings.js +2 -2
  82. package/dist/sdk/agent/command-recovery.d.ts +1 -0
  83. package/dist/sdk/agent/command-recovery.js +1 -1
  84. package/dist/sdk/agent/linked-resource-recovery.d.ts +13 -0
  85. package/dist/sdk/agent/linked-resource-recovery.js +2 -0
  86. package/dist/sdk/cli-contracts/commander-types.js +1 -1
  87. package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
  88. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  89. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
  90. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  91. package/dist/sdk/cli-contracts/registration-helpers.d.ts +2 -0
  92. package/dist/sdk/cli-contracts/registration-helpers.js +2 -2
  93. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  94. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -1
  95. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +3 -2
  96. package/dist/sdk/completion/fish.js +3 -1
  97. package/dist/sdk/completion/zsh.js +3 -1
  98. package/dist/sdk/core.d.ts +1 -1
  99. package/dist/sdk/core.js +1 -1
  100. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  101. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  102. package/dist/sdk/governance/health-merge-evidence.d.ts +5 -0
  103. package/dist/sdk/governance/health-merge-evidence.js +1 -1
  104. package/dist/sdk/governance/health.js +1 -1
  105. package/dist/sdk/index.d.ts +2 -1
  106. package/dist/sdk/index.js +1 -1
  107. package/dist/sdk/lifecycle/checkpoint-rollback.d.ts +7 -0
  108. package/dist/sdk/lifecycle/checkpoint-rollback.js +2 -0
  109. package/dist/sdk/lifecycle/close-many.d.ts +1 -1
  110. package/dist/sdk/lifecycle/close-many.js +1 -1
  111. package/dist/sdk/lifecycle/update-many.d.ts +1 -1
  112. package/dist/sdk/lifecycle/update-many.js +1 -1
  113. package/dist/sdk/merge/history-scalar-rebase.d.ts +9 -0
  114. package/dist/sdk/merge/history-scalar-rebase.js +2 -0
  115. package/dist/sdk/merge/ignored-artifacts.d.ts +13 -0
  116. package/dist/sdk/merge/ignored-artifacts.js +2 -0
  117. package/dist/sdk/merge/stage.js +1 -1
  118. package/dist/sdk/merge/three-way.js +1 -1
  119. package/dist/sdk/public-surface.json +1 -1
  120. package/dist/sdk/query/activity.d.ts +14 -2
  121. package/dist/sdk/query/activity.js +1 -1
  122. package/dist/sdk/query/calendar.d.ts +16 -0
  123. package/dist/sdk/query/calendar.js +3 -3
  124. package/dist/sdk/query/context.d.ts +2 -1
  125. package/dist/sdk/query/context.js +2 -2
  126. package/dist/sdk/query/get.d.ts +2 -1
  127. package/dist/sdk/query/get.js +1 -1
  128. package/dist/sdk/query/list.d.ts +2 -1
  129. package/dist/sdk/query/list.js +1 -1
  130. package/dist/sdk/query/search/types.d.ts +2 -1
  131. package/dist/sdk/query/search-contracts.js +1 -1
  132. package/dist/sdk/query/window-pagination.d.ts +20 -0
  133. package/dist/sdk/query/window-pagination.js +2 -0
  134. package/dist/sdk/query.d.ts +1 -0
  135. package/dist/sdk/query.js +1 -1
  136. package/dist/sdk/read-output-contracts.d.ts +10 -2
  137. package/dist/sdk/read-output-contracts.js +1 -1
  138. package/dist/sdk/runtime-input.js +1 -1
  139. package/dist/sdk/runtime-primitives.d.ts +1 -0
  140. package/dist/sdk/runtime-primitives.js +1 -1
  141. package/dist/sdk/runtime.d.ts +11 -11
  142. package/dist/sdk/runtime.js +1 -1
  143. package/dist/sdk/schema-migration.js +2 -2
  144. package/dist/sdk/templates.d.ts +7 -1
  145. package/dist/sdk/templates.js +2 -2
  146. package/dist/sdk/test/batch.js +2 -2
  147. package/dist/sdk/test/entry.d.ts +5 -1
  148. package/dist/sdk/test/entry.js +2 -1
  149. package/dist/sdk/test/execution.js +2 -2
  150. package/docs/COMMANDS.md +40 -3
  151. package/docs/EXTENSIONS.md +1 -1
  152. package/docs/MERGE_SAFETY.md +28 -0
  153. package/docs/READ_OUTPUT_CONTRACTS.md +15 -0
  154. package/docs/SDK.md +130 -6
  155. package/docs/TESTING.md +28 -0
  156. package/docs/generated/FLAG_LEXICON_BUDGETS.md +2 -2
  157. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +7 -3
  158. package/marketplace.json +1 -1
  159. package/package.json +1 -1
  160. package/packages/pm-beads/package.json +1 -1
  161. package/packages/pm-calendar/extensions/calendar/index.ts +6 -0
  162. package/packages/pm-calendar/package.json +1 -1
  163. package/packages/pm-command-kit/package.json +1 -1
  164. package/packages/pm-digital-twin/package.json +1 -1
  165. package/packages/pm-governance-audit/package.json +1 -1
  166. package/packages/pm-guide-shell/package.json +1 -1
  167. package/packages/pm-kanban/package.json +1 -1
  168. package/packages/pm-lifecycle-hooks/package.json +1 -1
  169. package/packages/pm-linked-test-adapters/package.json +1 -1
  170. package/packages/pm-search-advanced/package.json +1 -1
  171. package/packages/pm-templates/extensions/templates/runtime.ts +3 -1
  172. package/packages/pm-templates/package.json +1 -1
  173. package/packages/pm-todos/package.json +1 -1
  174. package/packages/pm-vcs/package.json +1 -1
  175. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  176. package/plugins/pm-claude/package.json +1 -1
  177. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  178. package/plugins/pm-codex/package.json +1 -1
  179. package/plugins/pm-codex/plugin.json +1 -1
  180. package/runtime-dependencies.json +1 -1
  181. package/dist/cli-bundle/chunks/chunk-2LTGJ5DL.js +0 -2
  182. package/dist/cli-bundle/chunks/chunk-MMVX5L32.js +0 -20
  183. package/dist/cli-bundle/chunks/chunk-QSY55FTA.js +0 -2
  184. package/dist/cli-bundle/chunks/register-operations-Z4VET3I7.js +0 -2
  185. package/dist/cli-bundle/chunks/stage-FW5OXCCR.js +0 -2
  186. package/dist/cli-bundle/focused-chunks/chunk-BM652VCB.js +0 -8
  187. package/dist/cli-bundle/focused-chunks/chunk-FO4U3FIP.js +0 -91
  188. package/dist/cli-bundle/focused-chunks/chunk-GXKP56W7.js +0 -2
  189. package/dist/cli-bundle/focused-chunks/chunk-JDN34LEZ.js +0 -2
  190. package/dist/cli-bundle/focused-chunks/chunk-LEHGCPZ6.js +0 -12
  191. package/dist/cli-bundle/focused-chunks/chunk-XIZYJDYW.js +0 -2
  192. package/dist/cli-bundle/focused-chunks/chunk-Z5LDTMZ3.js +0 -2
  193. package/dist/cli-bundle/focused-chunks/chunk-ZR6ZKQUK.js +0 -20
  194. package/dist/cli-bundle/focused-chunks/stage-X3BUGEJT.js +0 -2
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
@@ -298,6 +312,19 @@ explicitly installs the merge-aware pre-commit hook; the default installs no hoo
298
312
  verified lossless history and receipt artifacts. It refuses forced acceptance,
299
313
  competing values, unrelated drift, dirty reconciliation paths and unresolved Git
300
314
  paths. `staged_paths` reports exactly which relative paths were added to the index.
315
+ Git-ignored artifacts refuse before staging or auditing with
316
+ `merge_settlement_review_required`, `reason: ignored_merge_artifacts`, relative
317
+ `paths`, and owning ignore-rule coordinates. The same check applies to
318
+ `{ stage: true, dryRun: true }`; health reports legacy directory rules before a
319
+ merge exists. This recovery is tracked by
320
+ [pm-gh1556](../.agents/pm/issues/pm-gh1556.toon).
321
+
322
+ `mergeHistoryStreams` preserves validated whole-field assignment/removal intent
323
+ when another branch removed its target. Nested or conditional patches that
324
+ cannot replay refuse with `history_union_rebase_conflict` and typed
325
+ `PmCliError.context.history_merge` coordinates, retaining source inputs for
326
+ deliberate recovery. See [history semantics](MERGE_SAFETY.md#artifact-semantics)
327
+ and [pm-gh1553](../.agents/pm/issues/pm-gh1553.toon).
301
328
 
302
329
  The single-commit journey pauses Git with `git merge --no-commit --no-ff` before
303
330
  reconciliation or an opted-in pre-commit hook runs. `durable_receipt_ids` on the
@@ -629,12 +656,41 @@ explicit full projection. Active package commands receive deterministic
629
656
  fallback contracts, so extension authors can discover a bounded surface before
630
657
  they invoke it.
631
658
 
632
- `pm activity` applies a compact 20-row default bound; direct SDK calls default
633
- to five full rows. Results disclose `total_count`, `omitted_count`, `has_more`,
634
- and `applied_bound`. An explicit `limit` remains authoritative, while
635
- `unbounded: true` (CLI: `--unbounded`) is an intentional opt-out and cannot be
636
- combined with a limit. The activity flag and tool schemas publish the same
637
- option for extension and transport consumers.
659
+ `runActivity` defaults to a 15-item digest over the last 24 hours. `raw: true`
660
+ selects compact events (20 by default); `raw: true, compact: false` selects full
661
+ history entries (five by default). CLI equivalents are `--raw` and `--full`.
662
+ Results disclose `total_count`, `count`, `page_start`, `omitted_count`,
663
+ `has_more`, `next_cursor`, and `applied_bound`. Continue with the same options
664
+ and `after: result.next_cursor` (CLI/MCP: `--after` / `after`). Page size may
665
+ change. `omitted_count` counts rows remaining after the current page.
666
+
667
+ Activity's `window` publishes the original evaluation `anchor`, inclusive
668
+ `from`, and exclusive `to`. Bounded reads without an explicit upper bound pin
669
+ `to` to that anchor. Relative bounds resolve against the same clock on every
670
+ page. Later writes outside the window do not disturb continuation. Query,
671
+ projection, workspace, or matching-content changes refuse the old cursor with
672
+ `invalid_query_cursor`; start the query again without `after`. This is checked
673
+ continuation over an unchanged matching set, not a persisted snapshot or an
674
+ atomic cross-file read. Backdated writes within the window and current metadata
675
+ changes affecting digest rows can require a restart. `unbounded: true`
676
+ intentionally removes the row bound and cannot be combined with a limit.
677
+
678
+ Queries collect the matching rows and scan them on each page to detect changes.
679
+ Content fingerprints hash canonical rows incrementally, bounding additional
680
+ serialization storage to the largest row. Digest activity also hashes its full
681
+ source events incrementally so hidden patch changes still invalidate a cursor.
682
+
683
+ `runCalendar` uses the same `after` contract and frozen clock. `total_count`
684
+ counts matching expanded rows within the selected window and recurrence caps;
685
+ `count`, `page_start`, `omitted_count`, `has_more`, and `next_cursor` describe
686
+ the page. `summary_scope: "returned_rows"` labels `summary` and `days` as
687
+ page-local. Exact-full and empty results have `has_more: false`. A zero limit
688
+ returns counts without rows or a new cursor; repeat with `limit: "1"` or larger
689
+ to fetch rows. Existing recurrence expansion limits remain separate from
690
+ pagination, and calendar mutations affecting matching rows require a restart.
691
+ Repository tracking (PM records are excluded from the npm package):
692
+ [pm-gh1554](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1554.toon)
693
+ and [pm-gh1562](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1562.toon).
638
694
 
639
695
  The required `quality:token-budget` gate keeps discovery and answer cost
640
696
  separate. Help and contract discovery surfaces use ratcheted baselines;
@@ -997,6 +1053,18 @@ pm contracts --action calendar --runtime-only --schema-only --json
997
1053
  pm contracts --command templates --runtime-only --flags-only --json
998
1054
  ```
999
1055
 
1056
+ The SDK owns template persistence independently of the presentation package.
1057
+ `runTemplatesSave(name, options: TemplatesSaveOptions, global)` accepts priority
1058
+ as an integer `0..4`, a numeric string, or a named priority such as `critical`.
1059
+ It validates priority before writing and stores its normalized numeric string;
1060
+ `0` therefore survives save, show, and item creation. Invalid priority values
1061
+ refuse with exit code 2 and the accepted forms, preserving the template and
1062
+ workspace history. Other template keys retain the existing string/string-array
1063
+ storage contract, including extension-defined fields. Import the input type
1064
+ and function from `@unbrained/pm-cli/sdk/runtime` or the aggregate SDK.
1065
+ Tracked by [pm-gh1561](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1561.toon)
1066
+ (repository-only tracker record, excluded from npm).
1067
+
1000
1068
  Use static SDK contracts for baseline validation, then use runtime contracts in the target project before invoking package-provided commands or actions. Embedded SDK consumers can avoid subprocesses:
1001
1069
 
1002
1070
  ```ts
@@ -1727,6 +1795,23 @@ the SDK search engine directly. Package authors can import these functions and
1727
1795
  their typed result contracts from `@unbrained/pm-cli/sdk` without importing CLI
1728
1796
  implementation modules.
1729
1797
 
1798
+ Read projections also accept metadata names registered by active extensions with
1799
+ `registerItemFields`, including `item.<name>` selectors. For example,
1800
+ `client.get(id, { fields: "id,probe_score" })` returns the declared numeric value
1801
+ without requiring a full item read. `list` and `search` use the same active field
1802
+ vocabulary; search retains the requested selector spelling in its row keys.
1803
+ Disabling the extension removes its selectors from validation and recovery.
1804
+ Unknown names still refuse, and recovery retains valid requested custom fields.
1805
+ Tracked by [pm-gh1571](../.agents/pm/issues/pm-gh1571.toon).
1806
+
1807
+ Settings reads load optional schema files without creating missing files. Missing
1808
+ sections use configured or built-in defaults in memory, and later file creation
1809
+ invalidates the settings cache. Explicit `pm init --defaults` scaffolds missing
1810
+ sections while preserving existing schema definitions. This applies to shared
1811
+ SDK settings reads and CLI read commands; derived query caches and normal
1812
+ observability retain their own policies. Tracked by
1813
+ [pm-gh1568](../.agents/pm/issues/pm-gh1568.toon).
1814
+
1730
1815
  The shared query cursor contract treats every published list, context, and
1731
1816
  search flag as query-semantic by default: it changes the matched or ordered
1732
1817
  result and therefore invalidates a cursor. Only page-size and rendering flags
@@ -2496,6 +2581,14 @@ same list/default semantics as core flags:
2496
2581
  `default: "a,b"` or `default: ["a,b", "c"]`) are split into elements. A default
2497
2582
  that would not cleanly coerce under the declared `value_type` (e.g.
2498
2583
  `value_type: "number", default: "abc"`) is rejected at registration.
2584
+ Declared defaults are discoverable without running the command: text help
2585
+ shows `(default: ...)`, JSON help uses `default_value`, and runtime flag
2586
+ contracts and command schemas use `default`, preserving strings, numbers,
2587
+ booleans, empty strings and arrays. These are declaration values; runtime
2588
+ coercion and list flattening still apply during execution. Explicit values
2589
+ replace omitted-flag defaults, including list defaults. Tracked by
2590
+ [pm-gh1560](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1560.toon)
2591
+ (repository-only tracker record, excluded from npm).
2499
2592
  - `value_validation` (`"coerce"` | `"strict"`, tracked by
2500
2593
  [pm-extension-scalar-validation](../.agents/pm/features/pm-extension-scalar-validation.toon))
2501
2594
  decides what happens to a `number`/`boolean` token that does not coerce.
@@ -2599,6 +2692,37 @@ time.
2599
2692
 
2600
2693
  ## Expected CLI Errors
2601
2694
 
2695
+ Packages and adapters can derive explicit retries for misplaced linked-resource
2696
+ values with the public SDK:
2697
+
2698
+ ```ts
2699
+ import { resolveLinkedResourcePositionalRecovery } from "@unbrained/pm-cli/sdk";
2700
+
2701
+ const recovery = resolveLinkedResourcePositionalRecovery("docs", [
2702
+ "docs", "pm-example", "design, notes.md", "--json",
2703
+ ]);
2704
+ // recovery.retryArgs retains the item and presentation flags, with an explicit
2705
+ // --add value that preserves the literal comma through structured parsing.
2706
+ ```
2707
+
2708
+ The helper returns `undefined` for ambiguous input. When a positional test value
2709
+ contains metadata without its actual command, the receipt retains `itemId` and
2710
+ `value` and omits `retryArgs`. Its `templateArgs` retains the selected tracker
2711
+ and output options while requiring the actual-command placeholder to be filled.
2712
+ The adapter can request that command using the receipt. Explicit `command=` or
2713
+ `cmd=` entries retain their structured metadata; empty commands receive templates.
2714
+ Suggested test retries pass the same command-admission guard as registration;
2715
+ assignment/comment-only candidates receive command-required templates.
2716
+ `runTestAll()` retains these legacy configuration refusals as per-test results
2717
+ and continues valid tests and later items. Refused entries retain their owning
2718
+ item and result position; aggregate and per-item tracking still report failure.
2719
+ Linked tests containing only assignments or shell comments fail with
2720
+ `linked_test_command_not_executable` before registration or execution; quoted
2721
+ environment assignments and later-line real commands remain supported. The
2722
+ guard also recognizes assignment-only lists separated by `;`, `&&`, `||`, `|`
2723
+ or `&`, including a trailing semicolon. Quoted and escaped separators stay
2724
+ inside assignment values; lists containing executable commands remain supported.
2725
+
2602
2726
  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:
2603
2727
 
2604
2728
  ```ts
package/docs/TESTING.md CHANGED
@@ -789,6 +789,34 @@ pm test <item-id> --run --pm-context auto --check-context --auto-pm-context
789
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"}'
790
790
  ```
791
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
+
792
820
  For complex linked-test commands, prefer JSON input so shell syntax survives unchanged:
793
821
 
794
822
  ```bash
@@ -42,7 +42,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
42
42
  | `merge` | workspace | 29 | 29 |
43
43
  | `schema` | workspace | 43 | 43 |
44
44
  | `profile` | workspace | 22 | 22 |
45
- | `activity` | context | 35 | 35 |
45
+ | `activity` | context | 36 | 36 |
46
46
  | `restore` | intake | 23 | 23 |
47
47
  | `update` | lifecycle | 105 | 105 |
48
48
  | `update-many` | lifecycle | 146 | 146 |
@@ -80,7 +80,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
80
80
  | `history redact` | evidence | 27 | 27 |
81
81
  | `history repair` | evidence | 27 | 27 |
82
82
  | `history compact` | evidence | 30 | 30 |
83
- | `history activity` | context | 35 | 35 |
83
+ | `history activity` | context | 36 | 36 |
84
84
  | `history restore` | intake | 23 | 23 |
85
85
  | `context next` | context | 38 | 38 |
86
86
  | `context focus` | intake | 22 | 22 |
@@ -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: 425
7
+ - Catalog error codes: 429
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: 406
12
- - Coverage fraction: 0.044706
11
+ - Uncovered error codes: 410
12
+ - Coverage fraction: 0.044289
13
13
  - Closed-domain probes: 19
14
14
  - Grammar probes: 117
15
15
 
@@ -134,6 +134,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
134
134
  | `history_stream_over_compact_threshold` | `history_stream_over_compact_threshold` | uncovered | none | 0 |
135
135
  | `history_target_out_of_range` | `history_target_out_of_range` | uncovered | none | 0 |
136
136
  | `history_timestamp_invalid` | `history_timestamp_invalid` | uncovered | none | 0 |
137
+ | `history_union_rebase_conflict` | `history_union_rebase_conflict` | uncovered | none | 0 |
137
138
  | `history_unknown_author_events` | `history_unknown_author_events` | uncovered | none | 0 |
138
139
  | `history_version_mapping_unavailable` | `history_version_mapping_unavailable` | uncovered | none | 0 |
139
140
  | `history_version_pruned` | `history_version_pruned` | uncovered | none | 0 |
@@ -191,6 +192,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
191
192
  | `item_not_found` | `item_not_found` | uncovered | none | 0 |
192
193
  | `likely_duplicate` | `likely_duplicate` | uncovered | none | 0 |
193
194
  | `linked_artifact_mutation_conflict` | `linked_artifact_mutation_conflict` | uncovered | none | 0 |
195
+ | `linked_resource_positional_value` | `linked_resource_positional_value` | uncovered | none | 0 |
196
+ | `linked_test_command_not_executable` | `linked_test_command_not_executable` | uncovered | none | 0 |
194
197
  | `linked_test_context_invalid` | `linked_test_context_invalid` | uncovered | none | 0 |
195
198
  | `linked_test_remove_no_match` | `linked_test_remove_no_match` | uncovered | none | 0 |
196
199
  | `linked_test_update_ambiguous` | `linked_test_update_ambiguous` | uncovered | none | 0 |
@@ -213,6 +216,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
213
216
  | `mcp_annotation_file_unavailable` | `mcp_annotation_file_unavailable` | uncovered | none | 0 |
214
217
  | `mcp_stdin_unavailable` | `mcp_stdin_unavailable` | uncovered | none | 0 |
215
218
  | `mcp_task_not_found_or_not_authorized` | `mcp_task_not_found_or_not_authorized` | uncovered | none | 0 |
219
+ | `merge_artifacts_ignored` | `merge_artifacts_ignored` | uncovered | none | 0 |
216
220
  | `merge_bun_launcher_unavailable` | `merge_bun_launcher_unavailable` | uncovered | none | 0 |
217
221
  | `merge_conflict_markers_detected` | `merge_conflict_markers_detected` | uncovered | none | 0 |
218
222
  | `merge_decisions_unreviewed` | `merge_decisions_unreviewed` | 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.23","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.23","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.25","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.25","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.23",
3
+ "version": "2026.10.25",
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.23","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.25","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"]}}
@@ -37,6 +37,12 @@ export const manifest = {
37
37
  };
38
38
 
39
39
  const calendarFlags = [
40
+ {
41
+ long: "--after",
42
+ value_name: "cursor",
43
+ value_type: "string",
44
+ description: "Continue the original fixed-window calendar query.",
45
+ },
40
46
  {
41
47
  long: "--view",
42
48
  value_name: "value",
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-calendar","version":"2026.10.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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"]}}
@@ -12,6 +12,7 @@ import {
12
12
  type GlobalOptions,
13
13
  type TemplatesListResult,
14
14
  type TemplatesSaveResult,
15
+ type TemplatesSaveOptions,
15
16
  type TemplatesShowResult,
16
17
  } from "@unbrained/pm-cli/sdk";
17
18
 
@@ -19,6 +20,7 @@ export type {
19
20
  CreateTemplateOptions,
20
21
  TemplatesListResult,
21
22
  TemplatesSaveResult,
23
+ TemplatesSaveOptions,
22
24
  TemplatesShowResult,
23
25
  } from "@unbrained/pm-cli/sdk";
24
26
 
@@ -33,7 +35,7 @@ export async function loadCreateTemplateOptions(
33
35
  /** Executes the templates save operation through the package runtime. */
34
36
  export async function runTemplatesSave(
35
37
  rawTemplateName: string,
36
- options: Record<string, unknown>,
38
+ options: TemplatesSaveOptions,
37
39
  global: GlobalOptions,
38
40
  ): Promise<TemplatesSaveResult> {
39
41
  return runSdkTemplatesSave(rawTemplateName, options, global);
@@ -1 +1 @@
1
- {"name":"@unbrained/pm-templates","version":"2026.10.23","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.25","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.23","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.25","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.23","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.25","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.23","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.25","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.23","dependencies":{"@unbrained/pm-cli":"2026.10.23"}}
1
+ {"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.25","dependencies":{"@unbrained/pm-cli":"2026.10.25"}}
@@ -1 +1 @@
1
- {"name":"pm-codex","version":"2026.10.23","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.25","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.23","dependencies":{"@unbrained/pm-cli":"2026.10.23"}}
1
+ {"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.25","dependencies":{"@unbrained/pm-cli":"2026.10.25"}}
@@ -1 +1 @@
1
- {"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.23","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.25","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"}}}}