@unbrained/pm-cli 2026.10.27 → 2026.10.30
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +41 -0
- package/dist/cli/commander-usage.js +2 -2
- package/dist/cli/commands/lifecycle/append.d.ts +4 -0
- package/dist/cli/commands/lifecycle/append.js +1 -1
- package/dist/cli/commands/lifecycle/create.d.ts +4 -0
- package/dist/cli/commands/lifecycle/create.js +1 -1
- package/dist/cli/commands/lifecycle/plan.d.ts +3 -0
- package/dist/cli/commands/lifecycle/plan.js +1 -1
- package/dist/cli/commands/lifecycle/update-many.d.ts +4 -0
- package/dist/cli/commands/lifecycle/update-many.js +1 -1
- package/dist/cli/commands/lifecycle/update.d.ts +4 -0
- package/dist/cli/commands/lifecycle/update.js +1 -1
- package/dist/cli/error-guidance.js +2 -2
- package/dist/cli/help-content.js +2 -2
- package/dist/cli/register-list-query.js +3 -3
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/chunk-34MP7WKK.js +6 -0
- package/dist/cli-bundle/chunks/{chunk-25MTQAHX.js → chunk-3KMYHYJV.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-42BHHNTL.js +128 -0
- package/dist/cli-bundle/chunks/{chunk-NNIYQHYT.js → chunk-4BQD5SW2.js} +46 -46
- package/dist/cli-bundle/chunks/{chunk-OQOEBWHU.js → chunk-EHBGHX55.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-2XUDAQK5.js → chunk-GRABKNFL.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-I5O3XZOA.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-34OQP43K.js → chunk-LEIVUGDH.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-57YPOOED.js → chunk-LWW4F4G2.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-MVL27TAH.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-UHKN6TJM.js → chunk-OH7WPD42.js} +44 -44
- package/dist/cli-bundle/chunks/chunk-OOD2A7AF.js +20 -0
- package/dist/cli-bundle/chunks/chunk-Q5V7P6NM.js +2 -0
- package/dist/cli-bundle/chunks/chunk-QLPFYBXN.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-ONC4BBQP.js → chunk-RZQNFHXO.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-S2U7ECUJ.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-32QK43XG.js → chunk-SA5NYLPE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ER7RLJW5.js → chunk-TH5KPAN4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EKV5GP6P.js → chunk-UUQX3PFD.js} +57 -57
- package/dist/cli-bundle/chunks/chunk-VHLAVTJN.js +31 -0
- package/dist/cli-bundle/chunks/{chunk-HIX2OMEZ.js → chunk-XAOVJG52.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-XPQ4RTSF.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-X5TMR7KC.js → chunk-Y6NC3X3E.js} +2 -2
- package/dist/cli-bundle/chunks/{indexed-receipt-blobs-63WYG2PY.js → indexed-receipt-blobs-LHLE7PSG.js} +2 -2
- package/dist/cli-bundle/chunks/item-transaction-WIOBZW4E.js +2 -0
- package/dist/cli-bundle/chunks/{mutation-admission-L3A6FSZ7.js → mutation-admission-TRGAVS7N.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-YSQ7UTFI.js → register-list-query-BH4F6M7Z.js} +6 -6
- package/dist/cli-bundle/chunks/register-mutation-5V2NANIS.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-XSFRMUFX.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-3WAXNDMY.js → register-setup-QPWSVHFZ.js} +2 -2
- package/dist/cli-bundle/chunks/{settlement-hook-CRW6PVQK.js → settlement-hook-MN3Y7LVX.js} +2 -2
- package/dist/cli-bundle/chunks/{stage-I46WD4EN.js → stage-RTB6RAAO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-2V6NMNYN.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-YW5GHQN2.js → chunk-3SRX77ES.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YLVHHWHN.js → chunk-4PW5XWVI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZH7GTEWL.js → chunk-ASHGXMX4.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-XK3XMZM4.js → chunk-BCIUAEWX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-KTXU5WU6.js → chunk-BPE6JTKL.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-MVY6JDIH.js → chunk-CKBN2D42.js} +11 -11
- package/dist/cli-bundle/focused-chunks/chunk-FRFNGMAK.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-I642DXOT.js +22 -0
- package/dist/cli-bundle/focused-chunks/chunk-K7DKG5HM.js +91 -0
- package/dist/cli-bundle/focused-chunks/chunk-NMQBXU7N.js +44 -0
- package/dist/cli-bundle/focused-chunks/{chunk-WDKZB3V6.js → chunk-PGM3ENGZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-R2MTHS2H.js → chunk-POJPJX64.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YQKLKRMW.js → chunk-QFNV4JTA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-4TXZBGOR.js → chunk-QVJCQMZY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-R2TPPPVU.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-B266DDBJ.js → chunk-RGQEJFXO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BH7RE2ZY.js → chunk-RKPUQDWF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RYEZSZJ7.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-E5C24MCV.js → chunk-S23ZUASN.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-SYL73MEI.js → chunk-SAT7IAEB.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-TGUOEOKP.js → chunk-VFWCSQAG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-VJVJ2ZX2.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-Y57A4ZDI.js → chunk-YQUZL2CK.js} +54 -54
- package/dist/cli-bundle/focused-chunks/{chunk-SM2KGD4J.js → chunk-YU7QOYYV.js} +18 -18
- package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-GAFC52LQ.js → indexed-receipt-blobs-VK2363JB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/item-transaction-ZFDKJIP7.js +2 -0
- package/dist/cli-bundle/focused-chunks/{mutation-admission-ENBFMV2X.js → mutation-admission-7VUODEPJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{settlement-hook-PUYJJDFL.js → settlement-hook-OK6A7PG2.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{stage-MAWZTM2H.js → stage-S5RP5SZH.js} +2 -2
- package/dist/cli-bundle/main.js +21 -21
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +1 -42
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +61 -61
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +11 -11
- package/dist/core/history/operation-contract.d.ts +2 -2
- package/dist/core/history/operation-contract.js +1 -1
- package/dist/core/item/literal-mutation-input.d.ts +12 -0
- package/dist/core/item/literal-mutation-input.js +2 -0
- package/dist/core/item/parse.d.ts +2 -0
- package/dist/core/item/parse.js +2 -2
- package/dist/core/item/priority.js +1 -1
- package/dist/core/output/output.js +2 -2
- package/dist/core/shared/errors.d.ts +2 -0
- package/dist/core/shared/errors.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/sdk/agent/command-recovery.d.ts +5 -0
- package/dist/sdk/agent/command-recovery.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/registration-helpers.js +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/command-line.d.ts +6 -0
- package/dist/sdk/command-line.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/item-transaction.d.ts +33 -2
- package/dist/sdk/item-transaction.js +1 -1
- package/dist/sdk/lifecycle/append.js +1 -1
- package/dist/sdk/lifecycle/cli-input.d.ts +4 -0
- package/dist/sdk/lifecycle/cli-input.js +2 -0
- package/dist/sdk/lifecycle/close.js +1 -1
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
- package/dist/sdk/lifecycle/reopen.js +1 -1
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.js +2 -2
- package/dist/sdk/output/table-rows.d.ts +9 -1
- package/dist/sdk/output/table-rows.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/history.d.ts +6 -0
- package/dist/sdk/query/history.js +1 -1
- package/dist/sdk/runtime/actions.js +1 -1
- package/dist/sdk/runtime/mutation-value-validation.d.ts +16 -0
- package/dist/sdk/runtime/mutation-value-validation.js +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime-primitives.d.ts +1 -0
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/runtime.d.ts +14 -0
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/test/command-resolution.d.ts +5 -0
- package/dist/sdk/test/command-resolution.js +3 -0
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/workspace-transaction-gc.js +1 -1
- package/dist/sdk/workspace-transaction.d.ts +54 -0
- package/dist/sdk/workspace-transaction.js +2 -2
- package/docs/COMMANDS.md +33 -1
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +24 -2
- package/docs/SDK.md +165 -0
- package/docs/TESTING.md +36 -2
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +1 -1
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +6 -3
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-4D25HF3V.js +0 -2
- package/dist/cli-bundle/chunks/chunk-5PTMQBKJ.js +0 -30
- package/dist/cli-bundle/chunks/chunk-F26MRQZY.js +0 -6
- package/dist/cli-bundle/chunks/chunk-H434DKYU.js +0 -2
- package/dist/cli-bundle/chunks/chunk-O3LPT34G.js +0 -20
- package/dist/cli-bundle/chunks/chunk-Q55KZDNF.js +0 -2
- package/dist/cli-bundle/chunks/chunk-QQYLNHZK.js +0 -128
- package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XERBUA6A.js +0 -2
- package/dist/cli-bundle/chunks/register-mutation-6HRXYASW.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-4O3YOYXF.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HWD63G54.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-J67PFM3O.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-NLZUI234.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-TAFMNTA5.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-U4UBQBS7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-YC6NCPLK.js +0 -22
- package/dist/cli-bundle/focused-chunks/chunk-ZA6AEYIM.js +0 -2
package/docs/SDK.md
CHANGED
|
@@ -176,6 +176,28 @@ When adopting this update, read `error.context?.changed === false` as proof of a
|
|
|
176
176
|
preflight refusal. An absent property gives no guarantee about writes; do not
|
|
177
177
|
coerce it to `false` or treat an executed failure as safe to retry. Consumers
|
|
178
178
|
that enumerate error keys should accept the additional optional property.
|
|
179
|
+
|
|
180
|
+
Validation refusals for item status and priority carry producer-owned
|
|
181
|
+
`code: "invalid_argument_value"` and `context.field`, `context.value` and
|
|
182
|
+
`context.allowed`. The allowed spellings come from the active status schema or
|
|
183
|
+
priority domain; values are represented as strings, including numeric priority
|
|
184
|
+
input. Missing-item lookups carry `code: "item_not_found"` and `context.id`.
|
|
185
|
+
These are the same codes as the corresponding CLI envelopes. SDK status
|
|
186
|
+
messages name `status` rather than a CLI flag, and callers can handle these
|
|
187
|
+
refusals through `isPmCliExpectedError` without parsing the message. Existing
|
|
188
|
+
document-parse and ownership diagnostics retain their separate codes.
|
|
189
|
+
|
|
190
|
+
`resolvePmCommandScopeArgs({ path, noExtensions }, cwd?)` builds portable
|
|
191
|
+
tracker and extension arguments for package-authored guidance. It preserves an
|
|
192
|
+
explicit path's spelling, omits the implicit cwd tracker, and expresses a
|
|
193
|
+
different environment-selected tracker relative to the invocation directory.
|
|
194
|
+
An environment-selected root-layout tracker at that directory is rendered as
|
|
195
|
+
`--pm-path .` when a nested default tracker also exists.
|
|
196
|
+
Completion corrections, missing close-evidence updates and lifecycle-verb
|
|
197
|
+
examples share this formatter. SDK dispatch preserves the original scope before
|
|
198
|
+
resolving storage paths, so copied commands retain relative selection and
|
|
199
|
+
`--no-extensions` without adding a redundant absolute host path.
|
|
200
|
+
|
|
179
201
|
JavaScript create/update callers must also remove misspelled keys and move
|
|
180
202
|
mutation fields into `options` on generic `run` calls: these requests now fail
|
|
181
203
|
instead of silently dropping fields. See [Robust Automation Pattern](#robust-automation-pattern)
|
|
@@ -431,6 +453,23 @@ Promoted Plan links retain their graph semantics: `depends_on` canonicalizes to
|
|
|
431
453
|
|
|
432
454
|
### Immutable history and rich item reads
|
|
433
455
|
|
|
456
|
+
`runHistory(id, { compact: true }, global)` and `{ provenance: true }` default
|
|
457
|
+
to newest-first rows, with or without `limit`. Full SDK reads (`runHistory(id,
|
|
458
|
+
{}, global)`) and `runAction` with `full: true` default to chronological rows.
|
|
459
|
+
Set `order: "oldest_first"` or `order: "newest_first"` explicitly to use the same
|
|
460
|
+
direction across every projection, including value diffs. `limit` selects the
|
|
461
|
+
latest N matching entries before ordering; it never changes the direction.
|
|
462
|
+
CLI and `runAction` defaults use compact rows. The result declares `order` and
|
|
463
|
+
a complete matching `total`; physical indices and durable versions stay unchanged.
|
|
464
|
+
Read-output continuations traverse the chosen order without changing it.
|
|
465
|
+
Verification and value-diff reconstruction still consume the authoritative chain.
|
|
466
|
+
|
|
467
|
+
Compatibility: compact/provenance reads with a limit previously returned
|
|
468
|
+
chronological rows. Replay consumers must now request `order: "oldest_first"`
|
|
469
|
+
(or CLI `--order oldest_first`) explicitly. Full reads retain their prior default.
|
|
470
|
+
Tracked by [pm-gh1617](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1617.toon)
|
|
471
|
+
(tracker record excluded from npm).
|
|
472
|
+
|
|
434
473
|
Tracked: [pm-4a7m](../.agents/pm/features/pm-4a7m.toon),
|
|
435
474
|
[pm-hib1](../.agents/pm/features/pm-hib1.toon),
|
|
436
475
|
[pm-y4z5](../.agents/pm/issues/pm-y4z5.toon), and
|
|
@@ -1134,6 +1173,46 @@ recurrence reason, accepts only the workspace open or in-progress target, and
|
|
|
1134
1173
|
returns the terminal evidence captured atomically before the update path clears
|
|
1135
1174
|
it from active metadata.
|
|
1136
1175
|
|
|
1176
|
+
Literal mutation data and runtime value admission are tracked by
|
|
1177
|
+
[pm-gh1614](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1614.toon)
|
|
1178
|
+
and [pm-gh1606](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1606.toon)
|
|
1179
|
+
(repository-only tracker records excluded from npm).
|
|
1180
|
+
SDK `create`, `update`, and `append` inputs are data: `"-"` remains text,
|
|
1181
|
+
`"none"` and `"null"` remain text where the field's domain permits them, and
|
|
1182
|
+
`"@file"` remains text. These calls do not implicitly consume stdin or read a
|
|
1183
|
+
file. This also applies to the corresponding `runCreate`, `runUpdate`,
|
|
1184
|
+
`runAppend` operations and update-many mutation values. Normal field validation,
|
|
1185
|
+
whitespace handling, structured collection syntax, and project schemas still
|
|
1186
|
+
apply. Clear fields explicitly with `unset: ["assignee"]` or the declared
|
|
1187
|
+
`clear*` collection options; JavaScript `null` is not an unset directive.
|
|
1188
|
+
CLI adapters retain `--description -`, append stdin, file flags, and legacy
|
|
1189
|
+
clear-token compatibility. Values inside CLI `--stdin-json` documents are
|
|
1190
|
+
literal data, including `"none"` and `"null"`. Explicit CLI flags override
|
|
1191
|
+
document values and retain CLI interpretation, including legacy clear tokens.
|
|
1192
|
+
Use explicit clear/unset flags when the intent is to remove a field.
|
|
1193
|
+
|
|
1194
|
+
Native create/update/reopen values are checked against the SDK-owned option contracts
|
|
1195
|
+
before normalization and writes. A malformed append body or option value throws
|
|
1196
|
+
`PmCliError` with `code: "invalid_argument_value"`, usage exit code 2, the
|
|
1197
|
+
affected `context.field`, corrective guidance, and `context.changed: false`.
|
|
1198
|
+
For example, `estimatedMinutes` requires `"45"`, while `priority` accepts a
|
|
1199
|
+
string or finite number. JavaScript and JSON bridge callers must correct invalid
|
|
1200
|
+
types instead of relying on coercion. Integrations that previously used `"-"`
|
|
1201
|
+
to request stdin should read that input themselves and pass the resulting text;
|
|
1202
|
+
integrations that used `"none"` to clear must migrate to `unset`.
|
|
1203
|
+
Direct `runCreate`/`runUpdate` calls require the declared string arrays for
|
|
1204
|
+
repeatable fields. Generic action dispatch retains its documented scalar-to-array
|
|
1205
|
+
normalization before invoking those operations.
|
|
1206
|
+
|
|
1207
|
+
Adapter authors can import `withCliMutationInput` and
|
|
1208
|
+
`withLiteralMutationInput` from the SDK root or runtime entrypoint. Both return
|
|
1209
|
+
cloned option bags and collection values with an in-process input policy. Use
|
|
1210
|
+
the first only for explicit CLI parsing, and the second for decoded JSON or
|
|
1211
|
+
other literal data inside that adapter. Existing literal data and already-resolved stdin fields
|
|
1212
|
+
retain their policy through the clone; no marker is serialized into an item.
|
|
1213
|
+
Reusing a collection in a fresh CLI option bag does not inherit literal policy
|
|
1214
|
+
from another call or modify the caller's collection.
|
|
1215
|
+
|
|
1137
1216
|
Create focus policy is tracked by [pm-gh1577](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1577.toon)
|
|
1138
1217
|
(this tracker record is repository-only and excluded from npm).
|
|
1139
1218
|
Programmatic `create`, `PmClient.create`, `runCreate`, and MCP `pm_create`
|
|
@@ -1570,6 +1649,84 @@ the same durable coordinator, restoring annotations, linked artifacts,
|
|
|
1570
1649
|
lifecycle fields, and claim ownership on failure. It is the SDK primitive
|
|
1571
1650
|
behind `pm item complete`.
|
|
1572
1651
|
|
|
1652
|
+
Host-bound batch and recovery APIs are tracked by
|
|
1653
|
+
[pm-gh1598](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gh1598.toon) and
|
|
1654
|
+
[pm-gh1597](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gh1597.toon)
|
|
1655
|
+
(tracker records excluded from npm). A `PmClient` acquired from an
|
|
1656
|
+
extension host supports the same batch coordinator without reconstructing its
|
|
1657
|
+
tracker root or overriding the host author policy:
|
|
1658
|
+
|
|
1659
|
+
```ts
|
|
1660
|
+
const plan = { transactionId: "sync-42", mutations };
|
|
1661
|
+
const preview = await client.previewItemMutations(plan);
|
|
1662
|
+
await client.commitItemMutations(plan);
|
|
1663
|
+
const receipt = await client.itemTransactions.status("sync-42");
|
|
1664
|
+
```
|
|
1665
|
+
|
|
1666
|
+
Preview and status setup use configuration-only source reads, so activation
|
|
1667
|
+
does not open optional schema files before preview validates their storage.
|
|
1668
|
+
|
|
1669
|
+
Each mutation in a newly staged batch contributes a `records` row with its
|
|
1670
|
+
original `index`, canonical `id`, operation, and full public `item` projection
|
|
1671
|
+
including body after the complete batch. Repeated targets therefore show the
|
|
1672
|
+
same final staged state. `execution` distinguishes a newly `applied` mutation
|
|
1673
|
+
from `adopted` existing state; adopted values do not certify the unused create
|
|
1674
|
+
options. `commit_time_fields` lists JSON pointers to potentially
|
|
1675
|
+
regenerated clocks, conservatively including existing or explicitly supplied
|
|
1676
|
+
clocks. These preview values are observations, not reserved commit values.
|
|
1677
|
+
Compare normalized intent separately from those clocks; commit still evaluates
|
|
1678
|
+
current state, attribution, extension policy and concurrency. A committed replay returns an empty
|
|
1679
|
+
`records` array, not a reconstruction of its original write values. While the
|
|
1680
|
+
committed journal is retained, replaying the identical plan performs no item
|
|
1681
|
+
write; changing its ordered payload under the same id refuses with
|
|
1682
|
+
`transaction_plan_mismatch`. If transaction GC removes that committed journal,
|
|
1683
|
+
the coordinator can treat its id as new; replay guarantees do not survive that
|
|
1684
|
+
removal.
|
|
1685
|
+
|
|
1686
|
+
The workspace transaction lock serializes transaction coordinators. Ordinary
|
|
1687
|
+
SDK and CLI item writers can still interleave between a step's read and write;
|
|
1688
|
+
the lock does not provide a general read-decide-write critical section.
|
|
1689
|
+
|
|
1690
|
+
New item journals retain their original mutation plan and compensation policy.
|
|
1691
|
+
History redaction does not rewrite transaction journals: values removed from
|
|
1692
|
+
item history can remain in interrupted or abandoned journals. GC retains those
|
|
1693
|
+
recovery receipts. Do not include secrets in batch mutations.
|
|
1694
|
+
The status receipt contains the validated journal and a SHA-256 `planDigest`
|
|
1695
|
+
over its ordered payload-bound step identifiers. Started/completed lists report
|
|
1696
|
+
persisted coordinator progress: a crash after apply but before recording can
|
|
1697
|
+
leave an applied step listed only as started. Recovery re-inspects durable item
|
|
1698
|
+
history before compensation. No retained journal returns `undefined`; corrupt
|
|
1699
|
+
journals refuse instead of appearing absent.
|
|
1700
|
+
|
|
1701
|
+
```ts
|
|
1702
|
+
await client.itemTransactions.supersede("interrupted-sync", "sync-43", {
|
|
1703
|
+
reason: "Re-plan against the current item revision",
|
|
1704
|
+
});
|
|
1705
|
+
// Read current items and build the replacement only after retirement succeeds.
|
|
1706
|
+
await client.commitItemMutations({ transactionId: "sync-43", mutations: replanned });
|
|
1707
|
+
```
|
|
1708
|
+
|
|
1709
|
+
`abandon(id, { reason })` durably fences forward replay before compensating
|
|
1710
|
+
interrupted owned effects in reverse order,
|
|
1711
|
+
records a workspace audit event, and marks the identity `abandoned`. Retirement
|
|
1712
|
+
upgrades the journal to schema version 2 so older coordinators refuse the pending
|
|
1713
|
+
intent instead of silently resuming it.
|
|
1714
|
+
`supersede(id, newId, { reason })` performs that retirement and records the
|
|
1715
|
+
replacement identity; it does not atomically commit the replacement plan or
|
|
1716
|
+
reserve its id. Repeating the same retirement is idempotent. Committed journals
|
|
1717
|
+
cannot be abandoned. A pending-retirement refusal keeps the
|
|
1718
|
+
`transaction_abandoned` code, reports `retirement.state: "pending"` and the
|
|
1719
|
+
recorded `superseded_by` value (`null` for abandonment without a replacement),
|
|
1720
|
+
and explains how to retry the original intent. Finish that retirement before
|
|
1721
|
+
re-planning. During compensation, a later peer edit refuses with
|
|
1722
|
+
`transaction_partial_mutation` and retains recovery data; it is never silently
|
|
1723
|
+
overwritten. Legacy journals without a retained item plan require the original
|
|
1724
|
+
plan and adapter for replay. Abandoned receipts remain retained by transaction
|
|
1725
|
+
GC, including pending retirement intents, so their identities cannot silently
|
|
1726
|
+
become reusable. Mutation inputs are copied before coordinator admission; later
|
|
1727
|
+
caller edits cannot change the payload whose identity and recovery plan were
|
|
1728
|
+
recorded.
|
|
1729
|
+
|
|
1573
1730
|
`previewItemMutations` validates an ordered plan with the same transaction
|
|
1574
1731
|
coordinator and lifecycle primitives as apply, using a disposable copy of the
|
|
1575
1732
|
tracker. Earlier staged creates, evidence updates and closures participate in
|
|
@@ -2760,6 +2917,14 @@ time.
|
|
|
2760
2917
|
|
|
2761
2918
|
## Expected CLI Errors
|
|
2762
2919
|
|
|
2920
|
+
`resolveLifecycleVerbRecovery(verb, availablePaths)` returns explicit argument
|
|
2921
|
+
templates and next steps for unsupported `block` and `unblock` verbs. It checks
|
|
2922
|
+
the SDK's update flag contracts and declines installed verbs, unknown paths,
|
|
2923
|
+
and runtimes without update. Templates require actual identifiers and never
|
|
2924
|
+
execute a mutation. Unblocking uses `--unset blocked-by` to clear all blocker
|
|
2925
|
+
edges, followed by stale-reason cleanup and an optional explanatory note
|
|
2926
|
+
([pm-gh1607](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1607.toon); tracker record excluded from npm).
|
|
2927
|
+
|
|
2763
2928
|
Packages and adapters can derive explicit retries for misplaced linked-resource
|
|
2764
2929
|
values with the public SDK:
|
|
2765
2930
|
|
package/docs/TESTING.md
CHANGED
|
@@ -20,6 +20,30 @@ Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon),
|
|
|
20
20
|
creates its own sandboxed `PM_PATH`.
|
|
21
21
|
- Run linked tests before closing the item that owns the work.
|
|
22
22
|
|
|
23
|
+
Linked tests classify a confirmed missing executable as `spawn_error`, retaining
|
|
24
|
+
the shell's exit code and exact stderr. Confirmation requires a literal leading
|
|
25
|
+
executable, the shell's named lookup diagnostic and a failed lookup using the
|
|
26
|
+
execution's environment and working directory. On POSIX, a resolved script may
|
|
27
|
+
also qualify when a bounded shebang read confirms its absolute interpreter is
|
|
28
|
+
absent. The script is never rerun to probe startup. A child deliberately exiting
|
|
29
|
+
127, arbitrary `ENOENT` output, compound shell programs, expansions, and an
|
|
30
|
+
unavailable lookup probe retain their existing classification. A killed or
|
|
31
|
+
signaled resolver cannot establish absence, even if its reported code is 1.
|
|
32
|
+
The required native fixture captures the real lookup's status, signal, kill
|
|
33
|
+
flag, duration, working directory and effective child-environment equality. It
|
|
34
|
+
requires the category established by that independent evidence; unavailable
|
|
35
|
+
proof must remain an assertion failure. Environment values are not logged.
|
|
36
|
+
This conservative
|
|
37
|
+
rule supports POSIX shells and Windows command lookup; it does not infer setup
|
|
38
|
+
failure from arbitrary runner output
|
|
39
|
+
([pm-gh1604](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1604.toon); tracker record excluded from npm).
|
|
40
|
+
Interpreter verification and replay evidence:
|
|
41
|
+
[pm-script-launch-evidence](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-script-launch-evidence.toon)
|
|
42
|
+
(tracker record excluded from npm).
|
|
43
|
+
Native resolver evidence:
|
|
44
|
+
[pm-windows-lookup-proof](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-windows-lookup-proof.toon)
|
|
45
|
+
(tracker record excluded from npm).
|
|
46
|
+
|
|
23
47
|
Tracked documentation work: [pm-u9d0](../.agents/pm/epics/pm-u9d0.toon).
|
|
24
48
|
|
|
25
49
|
Local/hosted gate parity is tracked by [pm-ei6x66](../.agents/pm/tasks/pm-ei6x66.toon).
|
|
@@ -56,6 +80,14 @@ policy-check budget. This allocation is tracked by
|
|
|
56
80
|
[pm-a3c6g4](../.agents/pm/tasks/pm-a3c6g4.toon); broader runner qualification
|
|
57
81
|
remains with [pm-bj7rq0](../.agents/pm/issues/pm-bj7rq0.toon).
|
|
58
82
|
|
|
83
|
+
The same cohort runs the complete cold transport-floor and executable refusal
|
|
84
|
+
gate fixture files after parallel contracts
|
|
85
|
+
([pm-serial-cold-gates](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-serial-cold-gates.toon),
|
|
86
|
+
a repository-only tracker record excluded from npm). Their original 30-second
|
|
87
|
+
and 360-second test deadlines, assertions, negative controls, retries, and product
|
|
88
|
+
benchmark thresholds are unchanged. Isolated passes qualify this allocation;
|
|
89
|
+
they do not establish passing product latency or replace complete-suite proof.
|
|
90
|
+
|
|
59
91
|
The same serial cohort runs the ten-thousand-item aggregation, cold governance
|
|
60
92
|
read, and surface-replication fixture files after parallel contracts
|
|
61
93
|
([pm-ckb8w5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ckb8w5.toon),
|
|
@@ -262,12 +294,14 @@ into the pass count; a persistent assertion still fails after the bounded
|
|
|
262
294
|
retry. Local runs do not retry, so deterministic failures stay immediate while
|
|
263
295
|
iterating.
|
|
264
296
|
|
|
265
|
-
The complete receipt-operation, aborted-operation recovery, receipt-settlement, merge-portability and
|
|
297
|
+
The complete receipt-operation, receipt-health classification, aborted-operation recovery, receipt-settlement, merge-portability and
|
|
266
298
|
lossless-collection-union integration files run in the existing serial
|
|
267
299
|
`lifecycle-performance` project after parallel contracts. Both nightly shards and
|
|
268
300
|
full coverage use that same project partition, retaining every case and its
|
|
269
301
|
original assertions, deadlines and retry policy. This allocation is tracked by
|
|
270
|
-
[pm-89297t](../.agents/pm/tasks/pm-89297t.toon)
|
|
302
|
+
[pm-89297t](../.agents/pm/tasks/pm-89297t.toon) and
|
|
303
|
+
[pm-receipt-serial](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-receipt-serial.toon)
|
|
304
|
+
(tracker records are excluded from npm); it does not classify or erase
|
|
271
305
|
historical failed attempts.
|
|
272
306
|
|
|
273
307
|
The complete nightly suites use two Vitest shards on Linux Node 22/25 and
|
|
@@ -32,7 +32,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
32
32
|
| `duplicates` | context | 25 | 25 |
|
|
33
33
|
| `eval` | context | 25 | 25 |
|
|
34
34
|
| `next` | context | 38 | 38 |
|
|
35
|
-
| `history` | evidence |
|
|
35
|
+
| `history` | evidence | 36 | 36 |
|
|
36
36
|
| `events` | evidence | 34 | 34 |
|
|
37
37
|
| `history-attest` | evidence | 23 | 23 |
|
|
38
38
|
| `history-redact` | evidence | 27 | 27 |
|
|
@@ -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:
|
|
7
|
+
- Catalog error codes: 434
|
|
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:
|
|
12
|
-
- Coverage fraction: 0.
|
|
11
|
+
- Uncovered error codes: 415
|
|
12
|
+
- Coverage fraction: 0.043779
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
14
|
- Grammar probes: 117
|
|
15
15
|
|
|
@@ -349,6 +349,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
349
349
|
| `tracker_root_missing` | `tracker_root_missing` | executable | owned_state | 1 |
|
|
350
350
|
| `tracker_root_not_directory` | `tracker_root_not_directory` | executable | owned_state | 1 |
|
|
351
351
|
| `tracker_root_unreadable` | `tracker_root_unreadable` | executable | owned_state | 1 |
|
|
352
|
+
| `transaction_abandoned` | `transaction_abandoned` | uncovered | none | 0 |
|
|
353
|
+
| `transaction_committed` | `transaction_committed` | uncovered | none | 0 |
|
|
352
354
|
| `transaction_create_compensated` | `transaction_create_compensated` | uncovered | none | 0 |
|
|
353
355
|
| `transaction_journal_invalid` | `transaction_journal_invalid` | uncovered | none | 0 |
|
|
354
356
|
| `transaction_partial_mutation` | `transaction_partial_mutation` | uncovered | none | 0 |
|
|
@@ -356,6 +358,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
356
358
|
| `transaction_preview_external_schema` | `transaction_preview_external_schema` | uncovered | none | 0 |
|
|
357
359
|
| `transaction_preview_non_regular_file` | `transaction_preview_non_regular_file` | uncovered | none | 0 |
|
|
358
360
|
| `transaction_preview_snapshot_changed` | `transaction_preview_snapshot_changed` | uncovered | none | 0 |
|
|
361
|
+
| `transaction_recovery_plan_missing` | `transaction_recovery_plan_missing` | uncovered | none | 0 |
|
|
359
362
|
| `type_duplicate` | `type_duplicate` | uncovered | none | 0 |
|
|
360
363
|
| `type_invalid` | `type_invalid` | uncovered | none | 0 |
|
|
361
364
|
| `undeclared_observation` | `undeclared_observation` | 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.
|
|
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.30","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.30","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 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-beads","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-beads","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-calendar","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-command-kit","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-digital-twin","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-governance-audit","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-guide-shell","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-kanban","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-lifecycle-hooks","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-linked-test-adapters","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-search-advanced","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-templates","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-todos","version":"2026.10.30","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.
|
|
1
|
+
{"name":"@unbrained/pm-vcs-sdk-exemplar","version":"2026.10.30","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.
|
|
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.30","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.
|
|
1
|
+
{"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.30","dependencies":{"@unbrained/pm-cli":"2026.10.30"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"pm-codex","version":"2026.10.
|
|
1
|
+
{"name":"pm-codex","version":"2026.10.30","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.
|
|
1
|
+
{"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.30","dependencies":{"@unbrained/pm-cli":"2026.10.30"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.
|
|
1
|
+
{"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.30","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"}}}}
|