@unbrained/pm-cli 2026.10.28 → 2026.10.31
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 +50 -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.d.ts +45 -5
- package/dist/cli/error-guidance.js +5 -3
- package/dist/cli/extension-command-help.d.ts +1 -0
- package/dist/cli/extension-command-help.js +2 -2
- package/dist/cli/help-content.js +2 -2
- package/dist/cli/main.d.ts +1 -5
- package/dist/cli/main.js +5 -5
- package/dist/cli/migration-gates.d.ts +1 -1
- package/dist/cli/migration-gates.js +1 -1
- package/dist/cli/preflight-warnings.d.ts +11 -0
- package/dist/cli/preflight-warnings.js +4 -0
- package/dist/cli/register-list-query.js +3 -3
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/chunk-24J6TNYE.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-YYD5MNAV.js → chunk-2AHSPMKJ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-35Q2B2GJ.js +2 -0
- package/dist/cli-bundle/chunks/chunk-43R7UTWV.js +2 -0
- package/dist/cli-bundle/chunks/chunk-6PSDQ7T7.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-YUBUNECD.js → chunk-BS2KXT24.js} +84 -84
- package/dist/cli-bundle/chunks/{chunk-D3AIQZXF.js → chunk-GMBDZID5.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-HSBTITO4.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-LWW4F4G2.js → chunk-MRUA2Z43.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-P3LNMWL2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-PT7TS6E7.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-TH5KPAN4.js → chunk-SBVX5CMV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D6P6IBPN.js → chunk-TL3O5GZA.js} +45 -45
- package/dist/cli-bundle/chunks/chunk-U7JXZMU5.js +6 -0
- package/dist/cli-bundle/chunks/{chunk-DM3PICGU.js → chunk-V6EWBTNH.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-VC7TA67O.js +20 -0
- package/dist/cli-bundle/chunks/chunk-WNF6FOL7.js +31 -0
- package/dist/cli-bundle/chunks/chunk-WRXQAW7Q.js +114 -0
- package/dist/cli-bundle/chunks/{chunk-RZQNFHXO.js → chunk-WX25MU4N.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-XDDPSWIW.js +2 -0
- package/dist/cli-bundle/chunks/chunk-YT5D5HNG.js +2 -0
- package/dist/cli-bundle/chunks/chunk-ZTJVOBDU.js +128 -0
- package/dist/cli-bundle/chunks/{indexed-receipt-blobs-LHLE7PSG.js → indexed-receipt-blobs-KGMJVFH2.js} +2 -2
- package/dist/cli-bundle/chunks/item-transaction-UWV6UNSV.js +2 -0
- package/dist/cli-bundle/chunks/{mutation-admission-GKDKHRTZ.js → mutation-admission-I4RHIT3Q.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-MHJJUM6M.js → register-list-query-MVDL5EXG.js} +6 -6
- package/dist/cli-bundle/chunks/register-mutation-GAF7LXRB.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-JLFRL36Q.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-WUZ2ZSMY.js → register-setup-MZN6ONB3.js} +2 -2
- package/dist/cli-bundle/chunks/{settlement-hook-MN3Y7LVX.js → settlement-hook-YWSWFOZY.js} +2 -2
- package/dist/cli-bundle/chunks/{stage-2FYJGGG3.js → stage-2ZORTOF6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-4GN2ZPT5.js → chunk-2J7T2UCH.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YLVHHWHN.js → chunk-4PW5XWVI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-4QPGJO2G.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-IQKLJFJE.js → chunk-57HPXGOQ.js} +18 -18
- package/dist/cli-bundle/focused-chunks/chunk-5MCGYBOQ.js +91 -0
- package/dist/cli-bundle/focused-chunks/chunk-6F6APBCX.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-AFVN2KCP.js +44 -0
- package/dist/cli-bundle/focused-chunks/{chunk-ON5WFDCG.js → chunk-DFUTCKUF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-EA65HVBO.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-GP2WU43K.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-C2GLO7HU.js → chunk-HPWT3RBG.js} +54 -54
- package/dist/cli-bundle/focused-chunks/chunk-HSAEEWSI.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7SZPZOIC.js → chunk-JLXGRDTG.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-JNKRUCVZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-JTCGDODH.js → chunk-KH5QJXY7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-KKRIFBSL.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-TUN4M757.js → chunk-MW77Q3AQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-NOKG4RFN.js +22 -0
- package/dist/cli-bundle/focused-chunks/{chunk-DRN4W3YJ.js → chunk-NRBUMDLF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ML5JIUM6.js → chunk-PC3R5CJV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-PFBQOZPK.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-R3EA3SDW.js → chunk-QFMJGQGO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-I4X6AKOO.js → chunk-SFQKCA5K.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-WHIE2C6Q.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-Y6UYRMVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-5H6RMRTK.js → indexed-receipt-blobs-KHWT44EK.js} +2 -2
- package/dist/cli-bundle/focused-chunks/item-transaction-LU75EG7D.js +2 -0
- package/dist/cli-bundle/focused-chunks/{mutation-admission-TM3SVU2O.js → mutation-admission-KDJ7SCPA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{settlement-hook-LBVWWSCF.js → settlement-hook-SJV52ZTV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{stage-7ZBRX2Q2.js → stage-R4KEBO37.js} +2 -2
- package/dist/cli-bundle/main.js +26 -22
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +4 -4
- package/dist/cli-bundle/sdk-core.js +1 -43
- 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/config/nested-settings.js +1 -1
- package/dist/core/extensions/extension-hook-runtime.js +1 -1
- package/dist/core/extensions/extension-types.d.ts +4 -0
- package/dist/core/extensions/extension-types.js +1 -1
- package/dist/core/extensions/loader.js +1 -1
- 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/lock/lock.js +4 -4
- package/dist/core/output/output.js +3 -3
- package/dist/core/schema/fields-file.js +1 -1
- package/dist/core/sentry/helpers.d.ts +6 -0
- package/dist/core/sentry/helpers.js +1 -1
- package/dist/core/sentry/instrument.d.ts +1 -1
- package/dist/core/sentry/instrument.js +1 -1
- package/dist/core/shared/constants.js +1 -1
- package/dist/core/shared/errors.d.ts +6 -0
- package/dist/core/shared/errors.js +1 -1
- package/dist/core/shared/output-unicode.d.ts +10 -0
- package/dist/core/shared/output-unicode.js +2 -0
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.js +1 -1
- package/dist/core/telemetry/policy.d.ts +8 -0
- package/dist/core/telemetry/policy.js +1 -1
- package/dist/core/telemetry/runtime.js +3 -3
- package/dist/sdk/agent/command-recovery.d.ts +15 -0
- package/dist/sdk/agent/command-recovery.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +28 -0
- package/dist/sdk/cli-contracts/agent-output-contracts.js +2 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
- 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/grammar-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/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/completion/fish.js +4 -4
- package/dist/sdk/completion/zsh.js +3 -3
- package/dist/sdk/config.d.ts +1 -0
- package/dist/sdk/config.js +1 -1
- package/dist/sdk/core.d.ts +1 -0
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/error-runtime.d.ts +9 -0
- package/dist/sdk/error-runtime.js +1 -1
- package/dist/sdk/errors.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 +2 -2
- 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/claim.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/plan.d.ts +2 -3
- package/dist/sdk/lifecycle/plan.js +1 -1
- package/dist/sdk/lifecycle/reopen.js +1 -1
- package/dist/sdk/lifecycle/repeated-terminal-state.d.ts +45 -0
- package/dist/sdk/lifecycle/repeated-terminal-state.js +2 -0
- package/dist/sdk/lifecycle/shared-unset-fields.d.ts +9 -0
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
- package/dist/sdk/lifecycle/update-many.d.ts +0 -1
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.d.ts +29 -1
- package/dist/sdk/lifecycle/update.js +2 -2
- package/dist/sdk/output/table-rows.d.ts +15 -1
- package/dist/sdk/output/table-rows.js +1 -1
- package/dist/sdk/output.d.ts +1 -0
- package/dist/sdk/output.js +2 -2
- package/dist/sdk/ownership-source.d.ts +18 -0
- package/dist/sdk/ownership-source.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/get.d.ts +1 -1
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/history.d.ts +2 -0
- package/dist/sdk/query/history.js +1 -1
- package/dist/sdk/query/next-ranking-policy.d.ts +35 -0
- package/dist/sdk/query/next-ranking-policy.js +2 -0
- package/dist/sdk/query/next.d.ts +12 -2
- package/dist/sdk/query/next.js +2 -2
- package/dist/sdk/query/projection-contracts.d.ts +4 -0
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/read-output/surfaces.d.ts +27 -0
- package/dist/sdk/read-output/surfaces.js +2 -0
- package/dist/sdk/read-output-contracts.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 +2 -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/execution-receipts.d.ts +25 -0
- package/dist/sdk/test/execution-receipts.js +2 -2
- package/dist/sdk/test/execution.d.ts +5 -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/dist/types.d.ts +2 -0
- package/dist/types.js +1 -1
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/AGENT_OUTPUT_ENCODINGS.md +12 -0
- package/docs/AGENT_UX_CONTRACTS.md +2 -1
- package/docs/COMMANDS.md +73 -15
- package/docs/CONFIGURATION.md +48 -1
- package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +26 -0
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +24 -2
- package/docs/PACKED_FIRST_RUN.md +2 -1
- package/docs/READ_OUTPUT_CONTRACTS.md +24 -6
- package/docs/SDK.md +207 -11
- package/docs/TESTING.md +46 -2
- package/docs/agent-task-token-baseline.json +1 -1
- 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/extensions/calendar/index.ts +1 -0
- 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-2J7I54MQ.js +0 -2
- package/dist/cli-bundle/chunks/chunk-3KMYHYJV.js +0 -2
- package/dist/cli-bundle/chunks/chunk-4D25HF3V.js +0 -2
- package/dist/cli-bundle/chunks/chunk-7V37RC2L.js +0 -114
- package/dist/cli-bundle/chunks/chunk-AHVN4GHF.js +0 -31
- package/dist/cli-bundle/chunks/chunk-CS7QDSUX.js +0 -128
- package/dist/cli-bundle/chunks/chunk-CXUQEZDX.js +0 -8
- package/dist/cli-bundle/chunks/chunk-DKLEDWVW.js +0 -3
- package/dist/cli-bundle/chunks/chunk-E5QBZ4HI.js +0 -8
- package/dist/cli-bundle/chunks/chunk-JESLOJD7.js +0 -2
- package/dist/cli-bundle/chunks/chunk-PQLRKFPZ.js +0 -20
- package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XHONSCLJ.js +0 -6
- package/dist/cli-bundle/chunks/chunk-ZX3XMTZG.js +0 -2
- package/dist/cli-bundle/chunks/register-mutation-SN425O3R.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-EYUIUGPW.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-3EHVI673.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-46WLWK73.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-6L4KKRK7.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-6VDRAJYX.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-B4ZQJEMT.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-BZSACRVX.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-F6UQJJYB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-L5GX2FGZ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-LPWZERVD.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-OASYSUOH.js +0 -22
- package/dist/cli-bundle/focused-chunks/chunk-QUPGBO2L.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-Z26ZPQH6.js +0 -3
package/docs/SDK.md
CHANGED
|
@@ -278,7 +278,17 @@ async function writePackageState(pmRoot: string, write: () => Promise<void>) {
|
|
|
278
278
|
```
|
|
279
279
|
|
|
280
280
|
The built-in provider automatically recovers a provably dead original Linux
|
|
281
|
-
owner before TTL
|
|
281
|
+
owner before TTL, including an owner killed inside its commit fence. Recovery
|
|
282
|
+
retains the gate generation as evidence so concurrent recoverers cannot
|
|
283
|
+
remove its replacement, including recovery after the age grace when a dead PID
|
|
284
|
+
or verified PID reuse establishes abandonment. A readable gate with a live PID
|
|
285
|
+
and unavailable start identity is retained regardless of age. An unreadable
|
|
286
|
+
gate owner is also retained; age and failed reads do not prove abandonment.
|
|
287
|
+
Recorded host coordinates must be verified; a local PID comparison cannot
|
|
288
|
+
authorize recovery of foreign or unverifiable host evidence.
|
|
289
|
+
Acquisition, commit-gate and release wait budgets use
|
|
290
|
+
a monotonic clock; wall-clock adjustments do not extend those budgets.
|
|
291
|
+
Unknown owners retain the existing lease policy. Conflicts
|
|
282
292
|
expose the lock identity, observed process state, `waited_ms`, observed
|
|
283
293
|
`owner_handoffs` and wait advice through `PmCliError.context`. The wait budget
|
|
284
294
|
is a fixed total by default. Pass `{ waitPolicy: "progress" }` in the options
|
|
@@ -453,15 +463,22 @@ Promoted Plan links retain their graph semantics: `depends_on` canonicalizes to
|
|
|
453
463
|
|
|
454
464
|
### Immutable history and rich item reads
|
|
455
465
|
|
|
456
|
-
`runHistory(id, { compact: true }, global)` and `{ provenance: true }`
|
|
457
|
-
newest-first rows
|
|
458
|
-
|
|
459
|
-
`
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
466
|
+
`runHistory(id, { compact: true }, global)` and `{ provenance: true }` default
|
|
467
|
+
to newest-first rows, with or without `limit`. Full SDK reads (`runHistory(id,
|
|
468
|
+
{}, global)`) and `runAction` with `full: true` default to chronological rows.
|
|
469
|
+
Set `order: "oldest_first"` or `order: "newest_first"` explicitly to use the same
|
|
470
|
+
direction across every projection, including value diffs. `limit` selects the
|
|
471
|
+
latest N matching entries before ordering; it never changes the direction.
|
|
472
|
+
CLI and `runAction` defaults use compact rows. The result declares `order` and
|
|
473
|
+
a complete matching `total`; physical indices and durable versions stay unchanged.
|
|
474
|
+
Read-output continuations traverse the chosen order without changing it.
|
|
475
|
+
Verification and value-diff reconstruction still consume the authoritative chain.
|
|
476
|
+
|
|
477
|
+
Compatibility: compact/provenance reads with a limit previously returned
|
|
478
|
+
chronological rows. Replay consumers must now request `order: "oldest_first"`
|
|
479
|
+
(or CLI `--order oldest_first`) explicitly. Full reads retain their prior default.
|
|
480
|
+
Tracked by [pm-gh1617](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1617.toon)
|
|
481
|
+
(tracker record excluded from npm).
|
|
465
482
|
|
|
466
483
|
Tracked: [pm-4a7m](../.agents/pm/features/pm-4a7m.toon),
|
|
467
484
|
[pm-hib1](../.agents/pm/features/pm-hib1.toon),
|
|
@@ -668,7 +685,7 @@ import {
|
|
|
668
685
|
parseMutationReceipt,
|
|
669
686
|
estimatePmOutputTokens,
|
|
670
687
|
resolvePmCommandOutputBudget,
|
|
671
|
-
} from "@
|
|
688
|
+
} from "@unbrained/pm-cli/sdk/contracts";
|
|
672
689
|
|
|
673
690
|
const compactRead = definePmCommandOutputBudget({
|
|
674
691
|
command: "get",
|
|
@@ -1166,6 +1183,46 @@ recurrence reason, accepts only the workspace open or in-progress target, and
|
|
|
1166
1183
|
returns the terminal evidence captured atomically before the update path clears
|
|
1167
1184
|
it from active metadata.
|
|
1168
1185
|
|
|
1186
|
+
Literal mutation data and runtime value admission are tracked by
|
|
1187
|
+
[pm-gh1614](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1614.toon)
|
|
1188
|
+
and [pm-gh1606](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1606.toon)
|
|
1189
|
+
(repository-only tracker records excluded from npm).
|
|
1190
|
+
SDK `create`, `update`, and `append` inputs are data: `"-"` remains text,
|
|
1191
|
+
`"none"` and `"null"` remain text where the field's domain permits them, and
|
|
1192
|
+
`"@file"` remains text. These calls do not implicitly consume stdin or read a
|
|
1193
|
+
file. This also applies to the corresponding `runCreate`, `runUpdate`,
|
|
1194
|
+
`runAppend` operations and update-many mutation values. Normal field validation,
|
|
1195
|
+
whitespace handling, structured collection syntax, and project schemas still
|
|
1196
|
+
apply. Clear fields explicitly with `unset: ["assignee"]` or the declared
|
|
1197
|
+
`clear*` collection options; JavaScript `null` is not an unset directive.
|
|
1198
|
+
CLI adapters retain `--description -`, append stdin, file flags, and legacy
|
|
1199
|
+
clear-token compatibility. Values inside CLI `--stdin-json` documents are
|
|
1200
|
+
literal data, including `"none"` and `"null"`. Explicit CLI flags override
|
|
1201
|
+
document values and retain CLI interpretation, including legacy clear tokens.
|
|
1202
|
+
Use explicit clear/unset flags when the intent is to remove a field.
|
|
1203
|
+
|
|
1204
|
+
Native create/update/reopen values are checked against the SDK-owned option contracts
|
|
1205
|
+
before normalization and writes. A malformed append body or option value throws
|
|
1206
|
+
`PmCliError` with `code: "invalid_argument_value"`, usage exit code 2, the
|
|
1207
|
+
affected `context.field`, corrective guidance, and `context.changed: false`.
|
|
1208
|
+
For example, `estimatedMinutes` requires `"45"`, while `priority` accepts a
|
|
1209
|
+
string or finite number. JavaScript and JSON bridge callers must correct invalid
|
|
1210
|
+
types instead of relying on coercion. Integrations that previously used `"-"`
|
|
1211
|
+
to request stdin should read that input themselves and pass the resulting text;
|
|
1212
|
+
integrations that used `"none"` to clear must migrate to `unset`.
|
|
1213
|
+
Direct `runCreate`/`runUpdate` calls require the declared string arrays for
|
|
1214
|
+
repeatable fields. Generic action dispatch retains its documented scalar-to-array
|
|
1215
|
+
normalization before invoking those operations.
|
|
1216
|
+
|
|
1217
|
+
Adapter authors can import `withCliMutationInput` and
|
|
1218
|
+
`withLiteralMutationInput` from the SDK root or runtime entrypoint. Both return
|
|
1219
|
+
cloned option bags and collection values with an in-process input policy. Use
|
|
1220
|
+
the first only for explicit CLI parsing, and the second for decoded JSON or
|
|
1221
|
+
other literal data inside that adapter. Existing literal data and already-resolved stdin fields
|
|
1222
|
+
retain their policy through the clone; no marker is serialized into an item.
|
|
1223
|
+
Reusing a collection in a fresh CLI option bag does not inherit literal policy
|
|
1224
|
+
from another call or modify the caller's collection.
|
|
1225
|
+
|
|
1169
1226
|
Create focus policy is tracked by [pm-gh1577](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1577.toon)
|
|
1170
1227
|
(this tracker record is repository-only and excluded from npm).
|
|
1171
1228
|
Programmatic `create`, `PmClient.create`, `runCreate`, and MCP `pm_create`
|
|
@@ -1602,6 +1659,84 @@ the same durable coordinator, restoring annotations, linked artifacts,
|
|
|
1602
1659
|
lifecycle fields, and claim ownership on failure. It is the SDK primitive
|
|
1603
1660
|
behind `pm item complete`.
|
|
1604
1661
|
|
|
1662
|
+
Host-bound batch and recovery APIs are tracked by
|
|
1663
|
+
[pm-gh1598](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gh1598.toon) and
|
|
1664
|
+
[pm-gh1597](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-gh1597.toon)
|
|
1665
|
+
(tracker records excluded from npm). A `PmClient` acquired from an
|
|
1666
|
+
extension host supports the same batch coordinator without reconstructing its
|
|
1667
|
+
tracker root or overriding the host author policy:
|
|
1668
|
+
|
|
1669
|
+
```ts
|
|
1670
|
+
const plan = { transactionId: "sync-42", mutations };
|
|
1671
|
+
const preview = await client.previewItemMutations(plan);
|
|
1672
|
+
await client.commitItemMutations(plan);
|
|
1673
|
+
const receipt = await client.itemTransactions.status("sync-42");
|
|
1674
|
+
```
|
|
1675
|
+
|
|
1676
|
+
Preview and status setup use configuration-only source reads, so activation
|
|
1677
|
+
does not open optional schema files before preview validates their storage.
|
|
1678
|
+
|
|
1679
|
+
Each mutation in a newly staged batch contributes a `records` row with its
|
|
1680
|
+
original `index`, canonical `id`, operation, and full public `item` projection
|
|
1681
|
+
including body after the complete batch. Repeated targets therefore show the
|
|
1682
|
+
same final staged state. `execution` distinguishes a newly `applied` mutation
|
|
1683
|
+
from `adopted` existing state; adopted values do not certify the unused create
|
|
1684
|
+
options. `commit_time_fields` lists JSON pointers to potentially
|
|
1685
|
+
regenerated clocks, conservatively including existing or explicitly supplied
|
|
1686
|
+
clocks. These preview values are observations, not reserved commit values.
|
|
1687
|
+
Compare normalized intent separately from those clocks; commit still evaluates
|
|
1688
|
+
current state, attribution, extension policy and concurrency. A committed replay returns an empty
|
|
1689
|
+
`records` array, not a reconstruction of its original write values. While the
|
|
1690
|
+
committed journal is retained, replaying the identical plan performs no item
|
|
1691
|
+
write; changing its ordered payload under the same id refuses with
|
|
1692
|
+
`transaction_plan_mismatch`. If transaction GC removes that committed journal,
|
|
1693
|
+
the coordinator can treat its id as new; replay guarantees do not survive that
|
|
1694
|
+
removal.
|
|
1695
|
+
|
|
1696
|
+
The workspace transaction lock serializes transaction coordinators. Ordinary
|
|
1697
|
+
SDK and CLI item writers can still interleave between a step's read and write;
|
|
1698
|
+
the lock does not provide a general read-decide-write critical section.
|
|
1699
|
+
|
|
1700
|
+
New item journals retain their original mutation plan and compensation policy.
|
|
1701
|
+
History redaction does not rewrite transaction journals: values removed from
|
|
1702
|
+
item history can remain in interrupted or abandoned journals. GC retains those
|
|
1703
|
+
recovery receipts. Do not include secrets in batch mutations.
|
|
1704
|
+
The status receipt contains the validated journal and a SHA-256 `planDigest`
|
|
1705
|
+
over its ordered payload-bound step identifiers. Started/completed lists report
|
|
1706
|
+
persisted coordinator progress: a crash after apply but before recording can
|
|
1707
|
+
leave an applied step listed only as started. Recovery re-inspects durable item
|
|
1708
|
+
history before compensation. No retained journal returns `undefined`; corrupt
|
|
1709
|
+
journals refuse instead of appearing absent.
|
|
1710
|
+
|
|
1711
|
+
```ts
|
|
1712
|
+
await client.itemTransactions.supersede("interrupted-sync", "sync-43", {
|
|
1713
|
+
reason: "Re-plan against the current item revision",
|
|
1714
|
+
});
|
|
1715
|
+
// Read current items and build the replacement only after retirement succeeds.
|
|
1716
|
+
await client.commitItemMutations({ transactionId: "sync-43", mutations: replanned });
|
|
1717
|
+
```
|
|
1718
|
+
|
|
1719
|
+
`abandon(id, { reason })` durably fences forward replay before compensating
|
|
1720
|
+
interrupted owned effects in reverse order,
|
|
1721
|
+
records a workspace audit event, and marks the identity `abandoned`. Retirement
|
|
1722
|
+
upgrades the journal to schema version 2 so older coordinators refuse the pending
|
|
1723
|
+
intent instead of silently resuming it.
|
|
1724
|
+
`supersede(id, newId, { reason })` performs that retirement and records the
|
|
1725
|
+
replacement identity; it does not atomically commit the replacement plan or
|
|
1726
|
+
reserve its id. Repeating the same retirement is idempotent. Committed journals
|
|
1727
|
+
cannot be abandoned. A pending-retirement refusal keeps the
|
|
1728
|
+
`transaction_abandoned` code, reports `retirement.state: "pending"` and the
|
|
1729
|
+
recorded `superseded_by` value (`null` for abandonment without a replacement),
|
|
1730
|
+
and explains how to retry the original intent. Finish that retirement before
|
|
1731
|
+
re-planning. During compensation, a later peer edit refuses with
|
|
1732
|
+
`transaction_partial_mutation` and retains recovery data; it is never silently
|
|
1733
|
+
overwritten. Legacy journals without a retained item plan require the original
|
|
1734
|
+
plan and adapter for replay. Abandoned receipts remain retained by transaction
|
|
1735
|
+
GC, including pending retirement intents, so their identities cannot silently
|
|
1736
|
+
become reusable. Mutation inputs are copied before coordinator admission; later
|
|
1737
|
+
caller edits cannot change the payload whose identity and recovery plan were
|
|
1738
|
+
recorded.
|
|
1739
|
+
|
|
1605
1740
|
`previewItemMutations` validates an ordered plan with the same transaction
|
|
1606
1741
|
coordinator and lifecycle primitives as apply, using a disposable copy of the
|
|
1607
1742
|
tracker. Earlier staged creates, evidence updates and closures participate in
|
|
@@ -1915,6 +2050,19 @@ contract compact and fail-safe for newly added flags. Use
|
|
|
1915
2050
|
package-authored query surface. `encodeQueryCursor`, `decodeQueryCursorState`, and
|
|
1916
2051
|
`paginateQueryRows` remain the transport-neutral continuation primitives.
|
|
1917
2052
|
|
|
2053
|
+
A flag with a closed value domain declares it in `CliFlagContract.values`. For
|
|
2054
|
+
example, `get` and `context` declare `--depth brief|standard|deep|full`, and
|
|
2055
|
+
`plan` declares `--depth brief|standard|deep`, so `pm contracts --command <c>
|
|
2056
|
+
--flags-only --json` shows the accepted spellings without parsing help prose.
|
|
2057
|
+
`resolveReadCompletenessControls(command)` combines that domain with the
|
|
2058
|
+
command's read-output projection modes. `resolveReadOptionRetryArgs` uses the
|
|
2059
|
+
result to correct a completeness spelling only into a flag the attempted
|
|
2060
|
+
command declares
|
|
2061
|
+
([pm-gh1626](../.agents/pm/issues/pm-gh1626.toon)). A flag that accepts a
|
|
2062
|
+
comma-separated value list declares `list: true`. `--unset` on create, update
|
|
2063
|
+
and update-many does, so repeated flags and comma lists reach the parser as the
|
|
2064
|
+
same field set ([pm-gh1633](../.agents/pm/issues/pm-gh1633.toon)).
|
|
2065
|
+
|
|
1918
2066
|
`decodeQueryCursorEnvelope`, `decodeQueryCursorState`, and
|
|
1919
2067
|
`resolveQueryCursorStart` accept an optional final `cursorFlag` argument
|
|
1920
2068
|
(`"--after"`, the default, or `"--cursor"`) so package-authored queries can
|
|
@@ -2216,6 +2364,13 @@ const signalRead = await store.readOrRebuild(itemsFromDerivedIndex, {
|
|
|
2216
2364
|
const report = await scoreContextCandidates(signalRead.candidates);
|
|
2217
2365
|
```
|
|
2218
2366
|
|
|
2367
|
+
`pm next` applies a ranking policy after scoring: `priority_floor` (the
|
|
2368
|
+
default, from `context.next_ranking_policy` or the `rankingPolicy` option)
|
|
2369
|
+
resumes in-progress work, then orders by priority tier with relevance inside a
|
|
2370
|
+
tier; `weighted` keeps the blended score order. The response discloses it as
|
|
2371
|
+
`filters.ranking_policy`, and the recommendation reasons name the disagreement
|
|
2372
|
+
when the score leader differs from the recommendation (GH-1618).
|
|
2373
|
+
|
|
2219
2374
|
Use `--explain-ranking --json` on `pm context` or `pm next` to include the model,
|
|
2220
2375
|
available signals, baseline rank, final rank, score, and per-signal
|
|
2221
2376
|
contributions. Explanation data is opt-in so default agent output stays bounded.
|
|
@@ -2724,6 +2879,19 @@ delivered to the registered positional arguments unchanged.
|
|
|
2724
2879
|
|
|
2725
2880
|
## Output Ownership
|
|
2726
2881
|
|
|
2882
|
+
Unicode output policy ([pm-gh1624](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1624.toon), tracker record excluded from npm):
|
|
2883
|
+
the built-in JSON and TOON formatters refuse unpaired UTF-16 surrogates in
|
|
2884
|
+
structured output values or object keys with `text_unpaired_surrogate` and a
|
|
2885
|
+
field path. Custom `toJSON()` values and boxed primitives are materialized once
|
|
2886
|
+
per render using their native JSON semantics; the resulting snapshot is validated
|
|
2887
|
+
and shared by both formatters. Valid astral characters and caller data are preserved. Extension
|
|
2888
|
+
producers can call `assertWellFormedOutputText(value)` before returning
|
|
2889
|
+
JSON-compatible data. When replacing malformed external text is intentional,
|
|
2890
|
+
use `toWellFormedText(text)` from `@unbrained/pm-cli/sdk/core` (also available from
|
|
2891
|
+
`@unbrained/pm-cli/sdk`); it replaces lone
|
|
2892
|
+
surrogates with U+FFFD without splitting valid pairs. Apply normalization before
|
|
2893
|
+
constructing object keys so the producer can handle possible key collisions.
|
|
2894
|
+
|
|
2727
2895
|
Command handlers should normally return structured data and let the host select
|
|
2728
2896
|
TOON, JSON, service, or registered renderer output. A renderer override returns a
|
|
2729
2897
|
string when it owns the matching payload and `null` to fall back to native
|
|
@@ -2790,6 +2958,34 @@ A typo fails activation with a did-you-mean hint (e.g. `type: "strnig"` →
|
|
|
2790
2958
|
`Did you mean "string"?`) instead of silently passing and failing opaquely at use
|
|
2791
2959
|
time.
|
|
2792
2960
|
|
|
2961
|
+
## Package Error Provenance
|
|
2962
|
+
|
|
2963
|
+
Expected package errors retain their structured `context` across separately
|
|
2964
|
+
bundled SDK copies. Use `createPmCliExpectedError` to declare an expected refusal.
|
|
2965
|
+
A custom exception carrying only `code`, `exitCode: 1` and `remediation` remains
|
|
2966
|
+
an unexpected fault. Sentry error attribution uses the same bounded source
|
|
2967
|
+
context as telemetry without requiring telemetry delivery or command tracing, with host version
|
|
2968
|
+
and the registered command owner's manifest version. Noninteractive traffic
|
|
2969
|
+
uses `automation`; explicit `test`/`dogfood` contexts retain their own environments.
|
|
2970
|
+
Error events and usage logs tagged `user` use `production`, including when CI was inferred at initialization.
|
|
2971
|
+
Early errors retain `--json` and `--quiet` automation attribution. Original
|
|
2972
|
+
extension causes remain available locally through the SDK; Sentry's extra error
|
|
2973
|
+
data integration does not copy cause payload fields into diagnostic contexts.
|
|
2974
|
+
Explicit `SENTRY_ENVIRONMENT`, consent and test isolation remain authoritative.
|
|
2975
|
+
Sequential commands clear previous extension attribution. Tracked by
|
|
2976
|
+
[pm-gh1625](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1625.toon)
|
|
2977
|
+
(tracker record excluded from npm).
|
|
2978
|
+
|
|
2979
|
+
`resolveTelemetrySourceAttribution(options?, env?, interactive?)` exposes that
|
|
2980
|
+
same pure attribution policy to custom SDK hosts without reading configuration,
|
|
2981
|
+
creating an installation identity, or sending data. Expected refusals use
|
|
2982
|
+
`createPmCliExpectedError`; unexpected handler failures retain their original
|
|
2983
|
+
non-enumerable `cause` in `CommandHandlerResult` and become
|
|
2984
|
+
`ExtensionCommandError` in the CLI host. The host preserves structured diagnostics
|
|
2985
|
+
and reports these faults as exceptions. An exception name alone cannot declare
|
|
2986
|
+
an expected refusal when the original error violates the public contract.
|
|
2987
|
+
SDK extension actions and delegated template reads retain the same failure kind.
|
|
2988
|
+
|
|
2793
2989
|
## Expected CLI Errors
|
|
2794
2990
|
|
|
2795
2991
|
`resolveLifecycleVerbRecovery(verb, availablePaths)` returns explicit argument
|
package/docs/TESTING.md
CHANGED
|
@@ -58,6 +58,14 @@ node scripts/run-tests.mjs test
|
|
|
58
58
|
node scripts/run-tests.mjs coverage
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
+
The Linux killed-owner integration suite always exercises Node. Its additional
|
|
62
|
+
Bun case runs locally when `bun --version` succeeds; CI requires Bun and retains
|
|
63
|
+
the case even when the executable is missing, so a broken CI setup fails visibly.
|
|
64
|
+
Install Bun before claiming local Node-and-Bun recovery coverage. This fixture
|
|
65
|
+
policy is tracked by
|
|
66
|
+
[pm-gh1609](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-gh1609.toon)
|
|
67
|
+
(repository tracker record excluded from npm).
|
|
68
|
+
|
|
61
69
|
For the exact ordered local preflight used to make release-readiness claims,
|
|
62
70
|
run the registry-owned entrypoint:
|
|
63
71
|
|
|
@@ -80,6 +88,14 @@ policy-check budget. This allocation is tracked by
|
|
|
80
88
|
[pm-a3c6g4](../.agents/pm/tasks/pm-a3c6g4.toon); broader runner qualification
|
|
81
89
|
remains with [pm-bj7rq0](../.agents/pm/issues/pm-bj7rq0.toon).
|
|
82
90
|
|
|
91
|
+
The same cohort runs the complete cold transport-floor and executable refusal
|
|
92
|
+
gate fixture files after parallel contracts
|
|
93
|
+
([pm-serial-cold-gates](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-serial-cold-gates.toon),
|
|
94
|
+
a repository-only tracker record excluded from npm). Their original 30-second
|
|
95
|
+
and 360-second test deadlines, assertions, negative controls, retries, and product
|
|
96
|
+
benchmark thresholds are unchanged. Isolated passes qualify this allocation;
|
|
97
|
+
they do not establish passing product latency or replace complete-suite proof.
|
|
98
|
+
|
|
83
99
|
The same serial cohort runs the ten-thousand-item aggregation, cold governance
|
|
84
100
|
read, and surface-replication fixture files after parallel contracts
|
|
85
101
|
([pm-ckb8w5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ckb8w5.toon),
|
|
@@ -256,6 +272,26 @@ node scripts/run-tests.mjs test -- tests/integration/cli.integration.spec.ts
|
|
|
256
272
|
|
|
257
273
|
Use focused runs while iterating, then run coverage before closure when risk or scope warrants it.
|
|
258
274
|
|
|
275
|
+
## CI Job Layout and Runner Budget
|
|
276
|
+
|
|
277
|
+
Every pull-request push draws from the account-wide hosted-runner pool (20
|
|
278
|
+
concurrent jobs, 5 on macOS, shared by every repository on the account), so the
|
|
279
|
+
required CI asks for as few runners as the proofs allow
|
|
280
|
+
([pm-m6ig79](../.agents/pm/issues/pm-m6ig79.toon)):
|
|
281
|
+
|
|
282
|
+
| Job | Runs |
|
|
283
|
+
| --- | --- |
|
|
284
|
+
| `Build foundation (Ubuntu, Node 24)` | Build, `dist` artifact, packed tarball. |
|
|
285
|
+
| `Packed runtime (<os>)` × 3 | Packed first run on Node 22.18.0 and 24 in isolated prefixes, dist version smoke; Ubuntu adds the Node 22 telemetry and snapshot regressions, macOS the native shell and portability checks, Windows the full npm npx and Bun bunx acceptance. |
|
|
286
|
+
| `Gates (static)` | Typecheck, version, changelog, secret scan, `pnpm lint` (`quality:static`), package artifact, token budgets, tracker merge-safety and assurance gates. |
|
|
287
|
+
| `Gates (smokes)` | Shell completion, npx/plugin smokes, host isolation, context evaluation, compatibility migration and published workspace compatibility. |
|
|
288
|
+
| `Coverage shard N/4` × 4, `Gates (coverage)` | Sharded coverage, then the merged 100% threshold. |
|
|
289
|
+
| `Windows regression cohort` × 3, `Windows regression (Node 24)` | Script and native Windows cohorts, all running at once, then their aggregate. |
|
|
290
|
+
|
|
291
|
+
Add a proof as a step inside the job that owns its platform and runtime rather
|
|
292
|
+
than as a new job: a sub-minute job still waits in the shared queue before it
|
|
293
|
+
starts.
|
|
294
|
+
|
|
259
295
|
## CI Retry and Timeout Diagnostics
|
|
260
296
|
|
|
261
297
|
The required `Gates (coverage)` job runs after the coverage matrix settles and
|
|
@@ -751,8 +787,9 @@ pm test <item-id> --run --workspace-context snapshot --override-linked-workspace
|
|
|
751
787
|
Node 24 releases retain the same dangling-link behavior; the async `stat`
|
|
752
788
|
`throwIfNoEntry` option was added in
|
|
753
789
|
[Node 24.15](https://nodejs.org/download/release/v24.20.0/docs/api/fs.html#fspromisesstatpath-options).
|
|
754
|
-
The real filesystem and CLI snapshot suite runs in the required
|
|
755
|
-
|
|
790
|
+
The real filesystem and CLI snapshot suite runs on Node 22 in the required
|
|
791
|
+
`Packed runtime (ubuntu-latest)` job and in the native Windows regression job
|
|
792
|
+
before merge.
|
|
756
793
|
|
|
757
794
|
Windows execution is tracked by [pm-bj7rq0](../.agents/pm/issues/pm-bj7rq0.toon).
|
|
758
795
|
Script and native keeper cohorts run independently on Windows Node 24. Their
|
|
@@ -870,6 +907,13 @@ pm test <item-id> --run --only-index 2
|
|
|
870
907
|
pm test <item-id> --run --only-last
|
|
871
908
|
```
|
|
872
909
|
|
|
910
|
+
A selective run's receipt lists only the tests it selected. When the
|
|
911
|
+
receipt includes `tests_omitted`, copy and run the complete
|
|
912
|
+
`tests_omitted.restore_with` command to read the whole stored collection. It
|
|
913
|
+
keeps the invocation's `--pm-path` (including a tracker chosen through
|
|
914
|
+
`PM_PATH`) and `--no-extensions`, which a bare `pm test <item-id> --list` would
|
|
915
|
+
drop.
|
|
916
|
+
|
|
873
917
|
Linked-command stdout and stderr are captured through temporary regular files,
|
|
874
918
|
then read back with the 20 MiB per-stream retention bound. This keeps inherited
|
|
875
919
|
descriptors blocking for Bun, Rust, and other runtimes that treat `EAGAIN` on a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":5,"transcript_version":2,"transcript_digest":"sha256:83d4523ca528ad5e8801cf5c7c02dcebbf2b87dc72422d4b8e648755dcdc36c2","estimator":"ceil(utf8_bytes / 4)","comparison_scope":"plan_recovery_tracker_root_canonicalized","measurement_scope":"output_before_token_accounting","published_with_release":true,"orientation":{"canonical_task_id":"orientation-context-intent","required_capabilities":["actionable_work","active_ownership","workspace_state"],"measured_winner_tokens":
|
|
1
|
+
{"version":5,"transcript_version":2,"transcript_digest":"sha256:83d4523ca528ad5e8801cf5c7c02dcebbf2b87dc72422d4b8e648755dcdc36c2","estimator":"ceil(utf8_bytes / 4)","comparison_scope":"plan_recovery_tracker_root_canonicalized","measurement_scope":"output_before_token_accounting","published_with_release":true,"orientation":{"canonical_task_id":"orientation-context-intent","required_capabilities":["actionable_work","active_ownership","workspace_state"],"measured_winner_tokens":1051,"protocols":[{"task_id":"orientation-context-intent","command_count":1,"estimated_tokens":1051,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"context","field_path":"hierarchy"}],"active_ownership":[{"step_id":"context","field_path":"activity"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-operating-rules","command_count":4,"estimated_tokens":2067,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"open","field_path":"items"}],"active_ownership":[{"step_id":"in-progress","field_path":"items"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-contracts-next","command_count":2,"estimated_tokens":5213,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"next","field_path":"recommended.id"}],"active_ownership":[{"step_id":"next","field_path":"held_by_others"}],"workspace_state":[{"step_id":"next","field_path":"summary.in_progress"}]}}]},"tasks":[{"id":"orientation-context-intent","max_estimated_tokens":1051,"steps":[{"id":"context","max_estimated_tokens":1051,"accounting_mode":"self_reported"}]},{"id":"orientation-contracts-next","max_estimated_tokens":5213,"steps":[{"id":"contracts","max_estimated_tokens":4481,"accounting_mode":"self_reported"},{"id":"next","max_estimated_tokens":732,"accounting_mode":"self_reported"}]},{"id":"orientation-operating-rules","max_estimated_tokens":2067,"steps":[{"id":"context","max_estimated_tokens":1015,"accounting_mode":"self_reported"},{"id":"search","max_estimated_tokens":164,"accounting_mode":"self_reported"},{"id":"open","max_estimated_tokens":712,"accounting_mode":"self_reported"},{"id":"in-progress","max_estimated_tokens":176,"accounting_mode":"self_reported"}]},{"id":"context-bootstrap","max_estimated_tokens":2005,"steps":[{"id":"triage","max_estimated_tokens":619,"accounting_mode":"self_reported"},{"id":"orient","max_estimated_tokens":1015,"accounting_mode":"self_reported"},{"id":"inspect","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"closed-domain-recovery","max_estimated_tokens":630,"steps":[{"id":"refuse-intent","max_estimated_tokens":259,"accounting_mode":"self_reported"},{"id":"retry-intent","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"unknown-option-recovery","max_estimated_tokens":596,"steps":[{"id":"refuse-option","max_estimated_tokens":433,"accounting_mode":"self_reported"},{"id":"retry-option","max_estimated_tokens":163,"accounting_mode":"self_reported"}]},{"id":"lifecycle-mutation","max_estimated_tokens":873,"steps":[{"id":"create","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"inspect-open","max_estimated_tokens":363,"accounting_mode":"self_reported"},{"id":"close","max_estimated_tokens":92,"accounting_mode":"self_reported"},{"id":"inspect-closed","max_estimated_tokens":398,"accounting_mode":"self_reported"}]},{"id":"bulk-effect-outcomes","max_estimated_tokens":392,"steps":[{"id":"create-bulk-target","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"partial-effect","max_estimated_tokens":240,"accounting_mode":"self_reported"},{"id":"no-effect","max_estimated_tokens":132,"accounting_mode":"self_reported"}]},{"id":"plan-execution-mutations","max_estimated_tokens":806,"steps":[{"id":"create-plan","max_estimated_tokens":21,"accounting_mode":"self_reported"},{"id":"add-step","max_estimated_tokens":254,"accounting_mode":"self_reported"},{"id":"complete-step","max_estimated_tokens":253,"accounting_mode":"self_reported"},{"id":"inspect-plan","max_estimated_tokens":278,"accounting_mode":"self_reported"}]}],"composite_max_estimated_tokens":13633}
|
|
@@ -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.31","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.31","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.31","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"]}}
|
|
@@ -20,6 +20,7 @@ const CALENDAR_VIEW_NAMES = ["agenda", "day", "week", "month"] as const;
|
|
|
20
20
|
// not leak into Sentry as crashes.
|
|
21
21
|
class PmCliError extends Error {
|
|
22
22
|
exitCode: number;
|
|
23
|
+
context: Record<string, unknown> = {};
|
|
23
24
|
constructor(message: string, exitCode: number) {
|
|
24
25
|
super(message);
|
|
25
26
|
this.name = "PmCliError";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-calendar","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-calendar","version":"2026.10.31","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.31","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.31","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.31","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.31","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.31","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.31","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.31","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.31","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.31","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.31","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"]}}
|