@unbrained/pm-cli 2026.9.4 → 2026.9.6
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/.agents/skills/HARNESS_COMPATIBILITY.md +1 -1
- package/.agents/skills/README.md +2 -2
- package/.agents/skills/pm-developer/SKILL.md +4 -1
- package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +10 -0
- package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +3 -1
- package/.agents/skills/pm-extensions/SKILL.md +2 -2
- package/.agents/skills/pm-extensions/references/LIFECYCLE.md +3 -3
- package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +3 -3
- package/.agents/skills/pm-user/SKILL.md +2 -0
- package/.agents/skills/pm-user/references/BACKLOG_SHAPING.md +5 -0
- package/.agents/skills/pm-user/references/WORKFLOWS.md +20 -5
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +58 -3
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +15 -12
- package/dist/cli/help-json-payload.js +12 -7
- package/dist/cli/main.js +22 -11
- package/dist/cli/register-list-query.js +4 -2
- package/dist/cli/register-mutation.js +4 -2
- package/dist/cli/register-operations.js +17 -8
- package/dist/cli-bundle/bundle-manifest.json +153 -161
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +9 -0
- package/dist/cli-bundle/chunks/{chunk-V72UV7QS.js → chunk-BAX2BYUW.js} +73 -73
- package/dist/cli-bundle/chunks/{chunk-HI6BHPCU.js → chunk-CKOL5U7J.js} +51 -51
- package/dist/cli-bundle/chunks/{chunk-A24WAVE6.js → chunk-JT6XF6GE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-I2AS367G.js → chunk-JX4DH4WC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YW4QK2G7.js → chunk-NPN5I67J.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +5 -0
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +232 -0
- package/dist/cli-bundle/chunks/{chunk-RI4XNOYS.js → chunk-RWWBOWJ5.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +40 -0
- package/dist/cli-bundle/chunks/{chunk-X6CMGV6L.js → chunk-WI2AYPA7.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-Z5YYSJJG.js → register-list-query-5JL52D33.js} +3 -3
- package/dist/cli-bundle/chunks/{register-mutation-ELSP6I4I.js → register-mutation-ZPG7KMVP.js} +4 -4
- package/dist/cli-bundle/chunks/register-operations-I5W3KMGB.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-E2AE72QG.js → register-setup-H4SVAVX7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-3646BZ4W.js → chunk-3BZEOXLT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-NBMJD6MK.js → chunk-EZR3GHFE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +56 -0
- package/dist/cli-bundle/focused-chunks/{chunk-53IHPICX.js → chunk-LIJIA4TY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-25UJBH4M.js → chunk-M6PBRFSH.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-AJR3OP2E.js → chunk-NTPY5GSO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +177 -0
- package/dist/cli-bundle/focused-chunks/{chunk-MHKUIPJW.js → chunk-PEFABF7E.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-6PWPQKDN.js → chunk-QTVCLMSZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-7N2TV7WZ.js → chunk-QTZRBUYA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +10 -0
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +2 -0
- package/dist/cli-bundle/main.js +22 -15
- 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 +37 -37
- 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 +42 -39
- 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 +9 -9
- package/dist/core/extensions/extension-types.d.ts +2 -0
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/module-graph-snapshot.js +5 -4
- package/dist/core/fs/host-environment-errors.d.ts +27 -0
- package/dist/core/fs/host-environment-errors.js +142 -0
- package/dist/core/history/drift-scan.d.ts +5 -0
- package/dist/core/history/drift-scan.js +16 -6
- package/dist/core/history/event-classification.d.ts +1 -1
- package/dist/core/history/event-classification.js +3 -2
- package/dist/core/history/history.js +37 -5
- package/dist/core/history/identity.d.ts +15 -0
- package/dist/core/history/identity.js +31 -0
- package/dist/core/history/projection.js +50 -17
- package/dist/core/history/read.js +6 -3
- package/dist/core/history/replay.d.ts +1 -2
- package/dist/core/history/replay.js +4 -4
- package/dist/core/history/version-address.d.ts +13 -0
- package/dist/core/history/version-address.js +33 -0
- package/dist/core/item/actionability.d.ts +21 -1
- package/dist/core/item/actionability.js +45 -10
- package/dist/core/item/id.js +8 -4
- package/dist/core/item/item-type-definition.d.ts +2 -0
- package/dist/core/item/item-type-definition.js +9 -2
- package/dist/core/item/type-registry.d.ts +5 -1
- package/dist/core/item/type-registry.js +9 -4
- package/dist/core/output/mutation-projection.js +12 -5
- package/dist/core/shared/errors.d.ts +8 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/store/item-metadata-query-index.js +13 -10
- package/dist/core/store/item-metadata-read-work.d.ts +19 -0
- package/dist/core/store/item-metadata-read-work.js +44 -0
- package/dist/core/store/item-store.d.ts +14 -0
- package/dist/core/store/item-store.js +52 -10
- package/dist/core/store/settings-validator.js +3 -2
- package/dist/core/validate/fix-planning.d.ts +1 -1
- package/dist/core/validate/fix-planning.js +2 -2
- package/dist/core/validate/missing-link-owners.d.ts +1 -1
- package/dist/core/validate/missing-link-owners.js +5 -3
- package/dist/core/validate/stale-file-classification.d.ts +6 -4
- package/dist/core/validate/stale-file-classification.js +20 -5
- package/dist/mcp/server.js +12 -5
- package/dist/sdk/actionability.d.ts +1 -1
- package/dist/sdk/actionability.js +3 -3
- package/dist/sdk/cli-contracts/command-aliases.js +11 -2
- package/dist/sdk/cli-contracts/completeness.js +4 -3
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +31 -5
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +21 -13
- package/dist/sdk/cli-contracts/grammar-contracts.js +11 -2
- package/dist/sdk/cli-contracts/runtime-contracts.js +5 -2
- package/dist/sdk/cli-contracts/schemas/assurance-definition.d.ts +254 -5
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +52 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +30 -6
- package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
- package/dist/sdk/cli-contracts/tool-schema.js +32 -7
- package/dist/sdk/context/usage-ledger.d.ts +41 -0
- package/dist/sdk/context/usage-ledger.js +186 -0
- package/dist/sdk/context-intent-contracts.js +3 -3
- package/dist/sdk/context-usage.d.ts +18 -9
- package/dist/sdk/context-usage.js +44 -121
- package/dist/sdk/define.d.ts +1 -1
- package/dist/sdk/define.js +2 -2
- package/dist/sdk/dependency-provenance.d.ts +7 -0
- package/dist/sdk/dependency-provenance.js +14 -4
- package/dist/sdk/duplicates.d.ts +2 -0
- package/dist/sdk/duplicates.js +3 -2
- package/dist/sdk/environment/host-environment-errors.d.ts +5 -27
- package/dist/sdk/environment/host-environment-errors.js +4 -137
- package/dist/sdk/extension/install-runtime.js +9 -6
- package/dist/sdk/extension/install-snapshot.js +7 -6
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +104 -56
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +50 -2
- package/dist/sdk/governance/assurance-action.d.ts +3 -2
- package/dist/sdk/governance/assurance-action.js +23 -11
- package/dist/sdk/governance/assurance-runtime.d.ts +2 -0
- package/dist/sdk/governance/assurance-runtime.js +6 -3
- package/dist/sdk/governance/defect-recurrence-coverage.d.ts +93 -0
- package/dist/sdk/governance/defect-recurrence-coverage.js +189 -0
- package/dist/sdk/governance/defect-recurrence-graph.d.ts +33 -0
- package/dist/sdk/governance/defect-recurrence-graph.js +121 -0
- package/dist/sdk/governance/defect-recurrence.d.ts +8 -0
- package/dist/sdk/governance/defect-recurrence.js +118 -17
- package/dist/sdk/governance/health.d.ts +17 -2
- package/dist/sdk/governance/health.js +31 -10
- package/dist/sdk/governance/linked-file-report.d.ts +41 -0
- package/dist/sdk/governance/linked-file-report.js +72 -0
- package/dist/sdk/governance/validate-history-drift.js +16 -5
- package/dist/sdk/governance/validate.d.ts +5 -2
- package/dist/sdk/governance/validate.js +21 -37
- package/dist/sdk/governance.d.ts +2 -0
- package/dist/sdk/governance.js +4 -2
- package/dist/sdk/guide-topics.js +116 -2
- package/dist/sdk/history/salvage.d.ts +35 -0
- package/dist/sdk/history/salvage.js +248 -0
- package/dist/sdk/history-compact.js +32 -37
- package/dist/sdk/history-read.d.ts +3 -2
- package/dist/sdk/history-read.js +6 -3
- package/dist/sdk/history-repair.d.ts +12 -0
- package/dist/sdk/history-repair.js +60 -13
- package/dist/sdk/lifecycle/claim.d.ts +4 -0
- package/dist/sdk/lifecycle/claim.js +9 -3
- package/dist/sdk/lifecycle/close.d.ts +8 -0
- package/dist/sdk/lifecycle/close.js +16 -8
- package/dist/sdk/lifecycle/create.js +9 -12
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +19 -7
- package/dist/sdk/lifecycle/update.js +12 -12
- package/dist/sdk/lifecycle-policy.d.ts +3 -0
- package/dist/sdk/lifecycle-policy.js +2 -2
- package/dist/sdk/merge/abandoned-receipts.d.ts +15 -0
- package/dist/sdk/merge/abandoned-receipts.js +47 -0
- package/dist/sdk/merge/driver.js +4 -2
- package/dist/sdk/merge/index.d.ts +1 -0
- package/dist/sdk/merge/index.js +2 -2
- package/dist/sdk/merge/receipt-operation.d.ts +15 -0
- package/dist/sdk/merge/receipt-operation.js +97 -0
- package/dist/sdk/merge/receipt-schema.d.ts +20 -0
- package/dist/sdk/merge/receipt-schema.js +398 -0
- package/dist/sdk/merge/receipts.d.ts +16 -7
- package/dist/sdk/merge/receipts.js +54 -340
- package/dist/sdk/merge/reconcile.d.ts +2 -0
- package/dist/sdk/merge/reconcile.js +11 -4
- package/dist/sdk/output-projection.d.ts +3 -1
- package/dist/sdk/output-projection.js +11 -3
- package/dist/sdk/public-surface.json +1 -0
- package/dist/sdk/query/context.d.ts +9 -0
- package/dist/sdk/query/context.js +33 -21
- package/dist/sdk/query/duplicate-candidates.d.ts +7 -0
- package/dist/sdk/query/duplicate-candidates.js +71 -0
- package/dist/sdk/query/get.d.ts +2 -2
- package/dist/sdk/query/get.js +9 -8
- package/dist/sdk/query/history.d.ts +11 -0
- package/dist/sdk/query/history.js +34 -10
- package/dist/sdk/query/next.d.ts +15 -1
- package/dist/sdk/query/next.js +43 -20
- package/dist/sdk/query.d.ts +3 -0
- package/dist/sdk/query.js +5 -2
- package/dist/sdk/read-output-session.js +5 -3
- package/dist/sdk/runtime-primitives.d.ts +1 -1
- package/dist/sdk/runtime-primitives.js +3 -3
- package/dist/sdk/runtime.js +4 -2
- package/dist/sdk/similarity.d.ts +24 -3
- package/dist/sdk/similarity.js +50 -55
- package/dist/types.d.ts +2 -0
- package/dist/types.js +2 -2
- package/docs/AGENT_GUIDE.md +58 -1
- package/docs/BOUNDED_CONTEXT_READS.md +185 -0
- package/docs/CLOSE_EVIDENCE_RECOVERY.md +35 -0
- package/docs/COMMANDS.md +30 -8
- package/docs/CONTEXT_RELEVANCE.md +16 -4
- package/docs/DEFECT_RECURRENCE.md +80 -6
- package/docs/EXTENSIONS.md +18 -19
- package/docs/HISTORY_RECOVERY.md +146 -0
- package/docs/MERGE_SAFETY.md +50 -0
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +66 -0
- package/docs/PR_REVIEW_LOOP.md +18 -3
- package/docs/README.md +19 -1
- package/docs/RELEASING.md +31 -13
- package/docs/SDK_CONTEXT_TRUTH_CONTRACTS.md +24 -1
- package/docs/SDK_EXECUTION_CONTRACTS.md +105 -0
- package/docs/SDK_LIFECYCLE.md +27 -0
- package/docs/SDK_RUNTIME_BOUNDARIES.md +11 -0
- package/docs/TESTING.md +5 -0
- package/docs/agent-task-token-baseline.json +17 -17
- package/docs/agent-task-transcripts.json +2 -1
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +11 -11
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -3
- package/marketplace.json +2 -2
- package/package.json +8 -6
- 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/README.md +10 -1
- package/packages/pm-governance-audit/extensions/governance-audit/dedupe-audit.ts +50 -65
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/sdk.ts +1 -0
- 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/skills/pm-audit/SKILL.md +2 -2
- package/plugins/pm-claude/skills/pm-developer/SKILL.md +2 -2
- package/plugins/pm-claude/skills/pm-planner/SKILL.md +2 -2
- package/plugins/pm-claude/skills/pm-release/SKILL.md +2 -2
- package/plugins/pm-claude/skills/pm-workflow/SKILL.md +3 -3
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/skills/pm-auditor/SKILL.md +2 -2
- package/plugins/pm-codex/skills/pm-native/SKILL.md +3 -4
- package/plugins/pm-codex/skills/pm-release/SKILL.md +2 -2
- package/scripts/finalize-build.mjs +13 -1
- package/dist/cli-bundle/chunks/chunk-6XSKPNCF.js +0 -230
- package/dist/cli-bundle/chunks/chunk-OGBVU67G.js +0 -5
- package/dist/cli-bundle/chunks/chunk-TXW6VL33.js +0 -38
- package/dist/cli-bundle/chunks/chunk-VGLHECAP.js +0 -9
- package/dist/cli-bundle/chunks/register-operations-OH7R3ZT4.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-4YRAVI43.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-5P4HVOWG.js +0 -176
- package/dist/cli-bundle/focused-chunks/chunk-636VVQ7F.js +0 -54
- package/dist/cli-bundle/focused-chunks/chunk-B3A6MJYE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-BFDDJ2T2.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-BHUIRZWQ.js +0 -9
- package/dist/cli-bundle/focused-chunks/chunk-JADHHPY6.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-NSKBLHVI.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-P2GOAOQN.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-YARWJM2B.js +0 -2
- package/sdk/public-surface.json +0 -33034
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# SDK Execution and Recovery Contracts
|
|
2
|
+
|
|
3
|
+
Tracker references: [pm-08mt4k](../.agents/pm/issues/pm-08mt4k.toon),
|
|
4
|
+
[pm-ugld](../.agents/pm/issues/pm-ugld.toon),
|
|
5
|
+
[pm-2bqgs7](../.agents/pm/issues/pm-2bqgs7.toon),
|
|
6
|
+
[pm-u4t9gp](../.agents/pm/issues/pm-u4t9gp.toon), and
|
|
7
|
+
[pm-bfa1ob](../.agents/pm/issues/pm-bfa1ob.toon).
|
|
8
|
+
|
|
9
|
+
## Declare Who Can Execute a Type
|
|
10
|
+
|
|
11
|
+
Custom settings definitions and package `defineItemType` definitions accept
|
|
12
|
+
`execution_role: "agent" | "human" | "gate"`. An omitted role defaults to agent
|
|
13
|
+
execution; built-in Decision and Milestone types default to human and gate,
|
|
14
|
+
respectively. A definition can override a built-in role. Aliases resolve through
|
|
15
|
+
the type registry, and invalid roles are rejected rather than silently enabling
|
|
16
|
+
execution.
|
|
17
|
+
|
|
18
|
+
Package authors can declare a review checkpoint alongside the rest of their item
|
|
19
|
+
type definition:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { defineItemType } from "@unbrained/pm-cli/sdk/authoring";
|
|
23
|
+
|
|
24
|
+
export const checkpoint = defineItemType({
|
|
25
|
+
name: "Checkpoint",
|
|
26
|
+
folder: "checkpoints",
|
|
27
|
+
aliases: ["checkpoint"],
|
|
28
|
+
execution_role: "gate",
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`computeActionabilityReport` is the pure SDK primitive: it accepts candidates,
|
|
33
|
+
the surrounding item corpus, a status registry, and an optional item type
|
|
34
|
+
registry. It resolves both forward `blocked_by` and reverse `blocks` edges,
|
|
35
|
+
terminal prerequisites, active descendants, and execution roles. Its result
|
|
36
|
+
contains ready leaves, blocked leaves, human decisions, gates, and containers.
|
|
37
|
+
`selectActionableEntries` applies explicit dispatch opt-ins to that report;
|
|
38
|
+
ownership and ranking remain the responsibility of the caller. The selector
|
|
39
|
+
returns `ready`, `decisions`, and `gates`: eligible opted-in containers enter
|
|
40
|
+
`ready`, subject to their execution role. Read `report.containers` for the full
|
|
41
|
+
classified container worklist; the selector does not return a separate
|
|
42
|
+
`containers` property.
|
|
43
|
+
|
|
44
|
+
Integrations that construct an `ActionabilityReport` themselves must now provide
|
|
45
|
+
the `containers`, `decisions`, and `gates` arrays. Prefer computing the report
|
|
46
|
+
through the SDK so these classifications stay consistent with dependency and
|
|
47
|
+
schema rules. Existing callers may omit the new selection options and type
|
|
48
|
+
registry argument.
|
|
49
|
+
|
|
50
|
+
## Read Every Scheduling Bucket
|
|
51
|
+
|
|
52
|
+
`pm next` exposes `ready`, `decision_needed`, `gate_needed`, `containers`,
|
|
53
|
+
`blocked`, and `held_by_others`. Summary counts describe the full matching
|
|
54
|
+
buckets; each bounded worklist has truncation totals when needed. The row
|
|
55
|
+
contract advertises the new gate and container collections to generic consumers.
|
|
56
|
+
Intent budgets compact these worklists along with the other scheduling rows.
|
|
57
|
+
Final-delivery feedback records their visible identifiers so recursive context
|
|
58
|
+
improvement observes what the caller actually received.
|
|
59
|
+
A workspace containing only outcome gates returns no recommendation and explains
|
|
60
|
+
how to inspect or explicitly include gates.
|
|
61
|
+
|
|
62
|
+
`--include-decisions`, `--include-gates`, and `--include-containers` opt into
|
|
63
|
+
held-out work for both `next` and `claim --next`. The SDK and MCP use
|
|
64
|
+
`includeDecisions`, `includeGates`, and `includeContainers`. These options do not
|
|
65
|
+
bypass unresolved blockers, blocked lifecycle states, or ownership checks.
|
|
66
|
+
Context places gates, human work, and containers in high-level context rather
|
|
67
|
+
than agent execution detail. Population summaries retain all matching work.
|
|
68
|
+
|
|
69
|
+
## Stop Work Explicitly
|
|
70
|
+
|
|
71
|
+
`release` relinquishes ownership and preserves status. When an in-progress item
|
|
72
|
+
is released (using the configured workflow status), its result includes `released_unclaimed_in_progress` and a concrete
|
|
73
|
+
`pm pause-task <id>` suggestion. Use `pause-task` when the intended operation is
|
|
74
|
+
to stop work and return it to the configured open state. Consumers should not
|
|
75
|
+
interpret an ownership release as evidence that work has stopped.
|
|
76
|
+
|
|
77
|
+
## Recover from Command Mistakes
|
|
78
|
+
|
|
79
|
+
Unknown commands direct the caller to `pm --help --all`, the complete core
|
|
80
|
+
command surface. `pm tests <id>` is an executable alias of `pm test <id>`.
|
|
81
|
+
Positional item operands are accepted in help requests, including hybrid
|
|
82
|
+
commands such as `pm files <id> --help --json`; invalid child command names still
|
|
83
|
+
produce usage errors.
|
|
84
|
+
|
|
85
|
+
With `--token-accounting`, JSON refusals carry the same serialized-output
|
|
86
|
+
accounting used by successful commands. Accounting is attached after diagnostic
|
|
87
|
+
projection and recalculated if extension failures enrich the refusal. The
|
|
88
|
+
receipt measures the emitted diagnostic, including its own receipt overhead.
|
|
89
|
+
Recovery metadata retains the actual invocation, including the accounting flag.
|
|
90
|
+
The executable transcript gate predicts that transport change independently and
|
|
91
|
+
rejects any other payload drift. It also verifies that the accounting-off
|
|
92
|
+
attempted command agrees with its normalized arguments before projection.
|
|
93
|
+
Detailed recovery evidence must contain argument and provided-field arrays.
|
|
94
|
+
Compact recovery is accepted only when the transcript explicitly declares and
|
|
95
|
+
verifies that mode; its advertised retry still executes as a separate step.
|
|
96
|
+
Serialized JSON refusals use the SDK `writeStderr` transport primitive so an
|
|
97
|
+
`error_format` text override cannot replace a measured machine payload.
|
|
98
|
+
Human-readable error formatting remains customizable through `error_format`.
|
|
99
|
+
|
|
100
|
+
The flag-invocation gate compares registered executable options against SDK
|
|
101
|
+
contracts without filtering out undeclared observations. An option missing from
|
|
102
|
+
the contract and a root command missing a resolver both fail the gate. A seeded
|
|
103
|
+
undeclared option is a mandatory negative control. Contract snapshots, MCP
|
|
104
|
+
parameter declarations, help, and completion are regenerated from the shared
|
|
105
|
+
contract tables.
|
package/docs/SDK_LIFECYCLE.md
CHANGED
|
@@ -39,6 +39,33 @@ Package authors can import these operations from `@unbrained/pm-cli/sdk`
|
|
|
39
39
|
without importing CLI modules or spawning the executable. Existing CLI import
|
|
40
40
|
paths remain source-compatible while integrations migrate.
|
|
41
41
|
|
|
42
|
+
## Relationship Identity
|
|
43
|
+
|
|
44
|
+
Tracked by [pm-olcoon](../.agents/pm/issues/pm-olcoon.toon).
|
|
45
|
+
|
|
46
|
+
`normalizeItemReference(reference, prefix, sourceKind?)` is the shared public
|
|
47
|
+
SDK primitive for parent and dependency identities. Local shorthand, optional
|
|
48
|
+
leading `#`, and case variants normalize to the workspace's canonical prefix.
|
|
49
|
+
Explicit URL or provider locators (`github:`, `gitlab:`, `jira:`, `linear:`)
|
|
50
|
+
retain their spelling and case; externally sourced dependency IDs do too.
|
|
51
|
+
Only surrounding whitespace is trimmed from remote identities.
|
|
52
|
+
|
|
53
|
+
Create, update, and plan materialization persist the canonical local parent,
|
|
54
|
+
so lookup success cannot leave an unresolved shorthand in the stored graph.
|
|
55
|
+
Explicit remote parents remain external references without a local
|
|
56
|
+
missing-parent warning. Local missing parents still follow workspace policy,
|
|
57
|
+
and self-parent and hierarchy-cycle checks remain enforced. A foreign-looking
|
|
58
|
+
bare string is treated as local unless external provenance is supplied; the
|
|
59
|
+
SDK does not guess a remote workspace from punctuation.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import { normalizeItemReference } from "@unbrained/pm-cli/sdk";
|
|
63
|
+
|
|
64
|
+
normalizeItemReference("#ABC", "team-"); // team-abc
|
|
65
|
+
normalizeItemReference("github:Org/Repo#42", "team-"); // unchanged
|
|
66
|
+
normalizeItemReference("OTHER-Case", "team-", "external"); // unchanged
|
|
67
|
+
```
|
|
68
|
+
|
|
42
69
|
## Reason Contract
|
|
43
70
|
|
|
44
71
|
`resolveTerminalReason` is the pure precedence primitive. It chooses the first
|
|
@@ -72,6 +72,17 @@ exceeds temporary-filesystem capacity fails with a stable recovery contract,
|
|
|
72
72
|
while linked tests whose effective context is schema avoid materializing
|
|
73
73
|
tracker data at all.
|
|
74
74
|
|
|
75
|
+
Package installation applies the same boundary to `extension_install_copy`,
|
|
76
|
+
`extension_install_backup`, `extension_install_rollback`, and
|
|
77
|
+
`extension_module_graph_snapshot`. These fixed operation labels identify the
|
|
78
|
+
failed stage without exposing source, destination, backup, or temporary paths.
|
|
79
|
+
Capacity and permission faults are not transient copy races and are not retried;
|
|
80
|
+
existing bounded retries for concurrent filesystem changes remain available.
|
|
81
|
+
The shared implementation lives under `core/fs`, while the public SDK exports
|
|
82
|
+
remain stable for package authors. This coverage does not imply that every
|
|
83
|
+
filesystem operation in the repository has adopted the boundary; the complete
|
|
84
|
+
migration and recurrence-gate obligation remains tracked in `pm-3lhth4`.
|
|
85
|
+
|
|
75
86
|
Existing SDK surfaces can supply category-specific `codes` to preserve their
|
|
76
87
|
published error vocabulary while still sharing classification, path redaction,
|
|
77
88
|
and recovery guidance. Workspace snapshots use this compatibility path for
|
package/docs/TESTING.md
CHANGED
|
@@ -146,6 +146,11 @@ boilerplate summaries are rejected.
|
|
|
146
146
|
|
|
147
147
|
## TOON Storage Round-Trip Gate
|
|
148
148
|
|
|
149
|
+
History-only lifecycle reconstruction and recovery contracts are described in
|
|
150
|
+
[History durability and recovery](HISTORY_RECOVERY.md). Their integration suite
|
|
151
|
+
is part of the required all-source test run and compares historical projections
|
|
152
|
+
against independently captured item files, including after removing those files.
|
|
153
|
+
|
|
149
154
|
TOON item serialization is a fail-closed storage boundary. Before returning
|
|
150
155
|
bytes to any create, update, merge, migration, or package caller, pm decodes the
|
|
151
156
|
new `@toon-format/toon` output and compares it with the JSON-like canonical
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 4,
|
|
3
3
|
"transcript_version": 2,
|
|
4
|
-
"transcript_digest": "sha256:
|
|
4
|
+
"transcript_digest": "sha256:b8a6aea318c41e6a40dbcaf8094da8397ca747515a7df249d35c1f21ad94a307",
|
|
5
5
|
"estimator": "ceil(utf8_bytes / 4)",
|
|
6
6
|
"measurement_scope": "output_before_token_accounting",
|
|
7
7
|
"published_with_release": true,
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"active_ownership",
|
|
13
13
|
"workspace_state"
|
|
14
14
|
],
|
|
15
|
-
"measured_winner_tokens":
|
|
15
|
+
"measured_winner_tokens": 1102,
|
|
16
16
|
"protocols": [
|
|
17
17
|
{
|
|
18
18
|
"task_id": "orientation-context-intent",
|
|
19
19
|
"command_count": 1,
|
|
20
|
-
"estimated_tokens":
|
|
20
|
+
"estimated_tokens": 1102,
|
|
21
21
|
"capabilities": [
|
|
22
22
|
"actionable_work",
|
|
23
23
|
"active_ownership",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
{
|
|
48
48
|
"task_id": "orientation-operating-rules",
|
|
49
49
|
"command_count": 4,
|
|
50
|
-
"estimated_tokens":
|
|
50
|
+
"estimated_tokens": 2340,
|
|
51
51
|
"capabilities": [
|
|
52
52
|
"actionable_work",
|
|
53
53
|
"active_ownership",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
{
|
|
78
78
|
"task_id": "orientation-contracts-next",
|
|
79
79
|
"command_count": 2,
|
|
80
|
-
"estimated_tokens":
|
|
80
|
+
"estimated_tokens": 4829,
|
|
81
81
|
"capabilities": [
|
|
82
82
|
"actionable_work",
|
|
83
83
|
"active_ownership",
|
|
@@ -109,18 +109,18 @@
|
|
|
109
109
|
"tasks": [
|
|
110
110
|
{
|
|
111
111
|
"id": "orientation-context-intent",
|
|
112
|
-
"max_estimated_tokens":
|
|
112
|
+
"max_estimated_tokens": 1102,
|
|
113
113
|
"steps": [
|
|
114
114
|
{
|
|
115
115
|
"id": "context",
|
|
116
|
-
"max_estimated_tokens":
|
|
116
|
+
"max_estimated_tokens": 1102,
|
|
117
117
|
"accounting_mode": "self_reported"
|
|
118
118
|
}
|
|
119
119
|
]
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"id": "orientation-contracts-next",
|
|
123
|
-
"max_estimated_tokens":
|
|
123
|
+
"max_estimated_tokens": 4829,
|
|
124
124
|
"steps": [
|
|
125
125
|
{
|
|
126
126
|
"id": "contracts",
|
|
@@ -129,18 +129,18 @@
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"id": "next",
|
|
132
|
-
"max_estimated_tokens":
|
|
132
|
+
"max_estimated_tokens": 718,
|
|
133
133
|
"accounting_mode": "self_reported"
|
|
134
134
|
}
|
|
135
135
|
]
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
"id": "orientation-operating-rules",
|
|
139
|
-
"max_estimated_tokens":
|
|
139
|
+
"max_estimated_tokens": 2340,
|
|
140
140
|
"steps": [
|
|
141
141
|
{
|
|
142
142
|
"id": "context",
|
|
143
|
-
"max_estimated_tokens":
|
|
143
|
+
"max_estimated_tokens": 1102,
|
|
144
144
|
"accounting_mode": "self_reported"
|
|
145
145
|
},
|
|
146
146
|
{
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
"id": "context-bootstrap",
|
|
165
|
-
"max_estimated_tokens":
|
|
165
|
+
"max_estimated_tokens": 2025,
|
|
166
166
|
"steps": [
|
|
167
167
|
{
|
|
168
168
|
"id": "triage",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"id": "orient",
|
|
174
|
-
"max_estimated_tokens":
|
|
174
|
+
"max_estimated_tokens": 1102,
|
|
175
175
|
"accounting_mode": "self_reported"
|
|
176
176
|
},
|
|
177
177
|
{
|
|
@@ -199,12 +199,12 @@
|
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"id": "unknown-option-recovery",
|
|
202
|
-
"max_estimated_tokens":
|
|
202
|
+
"max_estimated_tokens": 603,
|
|
203
203
|
"steps": [
|
|
204
204
|
{
|
|
205
205
|
"id": "refuse-option",
|
|
206
|
-
"max_estimated_tokens":
|
|
207
|
-
"accounting_mode": "
|
|
206
|
+
"max_estimated_tokens": 440,
|
|
207
|
+
"accounting_mode": "self_reported"
|
|
208
208
|
},
|
|
209
209
|
{
|
|
210
210
|
"id": "retry-option",
|
|
@@ -261,5 +261,5 @@
|
|
|
261
261
|
]
|
|
262
262
|
}
|
|
263
263
|
],
|
|
264
|
-
"composite_max_estimated_tokens":
|
|
264
|
+
"composite_max_estimated_tokens": 12667
|
|
265
265
|
}
|
|
@@ -186,6 +186,7 @@
|
|
|
186
186
|
"expected_accounting_mode": "self_reported",
|
|
187
187
|
"required_fields": ["code", "refusal", "recovery"],
|
|
188
188
|
"expected_error_code": "unknown_context_intent",
|
|
189
|
+
"expected_field_values": { "recovery.recovery_mode": "compact" },
|
|
189
190
|
"expected_refusal_surface": "--for"
|
|
190
191
|
},
|
|
191
192
|
{
|
|
@@ -216,7 +217,7 @@
|
|
|
216
217
|
],
|
|
217
218
|
"expected_exit_code": 2,
|
|
218
219
|
"expected_output_kind": "refusal",
|
|
219
|
-
"expected_accounting_mode": "
|
|
220
|
+
"expected_accounting_mode": "self_reported",
|
|
220
221
|
"required_fields": ["code", "refusal", "recovery"],
|
|
221
222
|
"expected_error_code": "unknown_option",
|
|
222
223
|
"expected_refusal_surface": "--include-body"
|
|
@@ -5,7 +5,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
5
5
|
| Command | Capability family | Canonical flags | Maximum |
|
|
6
6
|
| --- | --- | ---: | ---: |
|
|
7
7
|
| `init` | workspace | 30 | 30 |
|
|
8
|
-
| `config` | workspace |
|
|
8
|
+
| `config` | workspace | 36 | 36 |
|
|
9
9
|
| `extension` | extensions | 53 | 53 |
|
|
10
10
|
| `package` | extensions | 54 | 54 |
|
|
11
11
|
| `packages` | extensions | 54 | 54 |
|
|
@@ -15,7 +15,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
15
15
|
| `copy` | intake | 24 | 24 |
|
|
16
16
|
| `focus` | intake | 22 | 22 |
|
|
17
17
|
| `list` | context | 86 | 86 |
|
|
18
|
-
| `list-all` | context |
|
|
18
|
+
| `list-all` | context | 86 | 86 |
|
|
19
19
|
| `list-draft` | context | 84 | 84 |
|
|
20
20
|
| `list-open` | context | 84 | 84 |
|
|
21
21
|
| `list-in-progress` | context | 84 | 84 |
|
|
@@ -28,34 +28,34 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
28
28
|
| `get` | context | 30 | 30 |
|
|
29
29
|
| `graph` | graph | 34 | 34 |
|
|
30
30
|
| `search` | context | 78 | 78 |
|
|
31
|
-
| `duplicates` | context |
|
|
31
|
+
| `duplicates` | context | 25 | 25 |
|
|
32
32
|
| `eval` | context | 25 | 25 |
|
|
33
|
-
| `next` | context |
|
|
33
|
+
| `next` | context | 38 | 38 |
|
|
34
34
|
| `history` | evidence | 35 | 35 |
|
|
35
35
|
| `events` | evidence | 33 | 33 |
|
|
36
36
|
| `history-redact` | evidence | 27 | 27 |
|
|
37
|
-
| `history-repair` | evidence |
|
|
37
|
+
| `history-repair` | evidence | 27 | 27 |
|
|
38
38
|
| `history-compact` | evidence | 30 | 30 |
|
|
39
39
|
| `history-author-acknowledge` | evidence | 28 | 28 |
|
|
40
|
-
| `merge` | workspace |
|
|
40
|
+
| `merge` | workspace | 27 | 27 |
|
|
41
41
|
| `schema` | workspace | 40 | 40 |
|
|
42
42
|
| `profile` | workspace | 22 | 22 |
|
|
43
43
|
| `activity` | context | 35 | 35 |
|
|
44
44
|
| `restore` | intake | 23 | 23 |
|
|
45
45
|
| `update` | lifecycle | 105 | 105 |
|
|
46
|
-
| `update-many` | lifecycle |
|
|
46
|
+
| `update-many` | lifecycle | 146 | 146 |
|
|
47
47
|
| `close` | lifecycle | 31 | 31 |
|
|
48
48
|
| `close-many` | lifecycle | 72 | 72 |
|
|
49
49
|
| `delete` | lifecycle | 24 | 24 |
|
|
50
|
-
| `append` | evidence |
|
|
50
|
+
| `append` | evidence | 25 | 25 |
|
|
51
51
|
| `comments` | evidence | 31 | 31 |
|
|
52
52
|
| `notes` | evidence | 35 | 35 |
|
|
53
|
-
| `learnings` | evidence |
|
|
53
|
+
| `learnings` | evidence | 31 | 31 |
|
|
54
54
|
| `files` | evidence | 39 | 39 |
|
|
55
55
|
| `docs` | evidence | 30 | 30 |
|
|
56
56
|
| `deps` | graph | 32 | 32 |
|
|
57
57
|
| `plan` | graph | 109 | 109 |
|
|
58
|
-
| `test` | quality |
|
|
58
|
+
| `test` | quality | 53 | 53 |
|
|
59
59
|
| `test-all` | quality | 40 | 40 |
|
|
60
60
|
| `telemetry` | workspace | 21 | 21 |
|
|
61
61
|
| `stats` | context | 29 | 29 |
|
|
@@ -65,7 +65,7 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
|
|
|
65
65
|
| `gc` | workspace | 22 | 22 |
|
|
66
66
|
| `workspace` | workspace | 23 | 23 |
|
|
67
67
|
| `contracts` | quality | 29 | 29 |
|
|
68
|
-
| `claim` | lifecycle |
|
|
68
|
+
| `claim` | lifecycle | 38 | 38 |
|
|
69
69
|
| `release` | lifecycle | 23 | 23 |
|
|
70
70
|
| `start-task` | lifecycle | 23 | 23 |
|
|
71
71
|
| `pause-task` | lifecycle | 23 | 23 |
|
|
@@ -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: 365
|
|
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: 346
|
|
12
|
+
- Coverage fraction: 0.052055
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
14
|
- Grammar probes: 94
|
|
15
15
|
|
|
@@ -111,17 +111,23 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
111
111
|
| `history_author_acknowledge_selector_required` | `history_author_acknowledge_selector_required` | uncovered | none | 0 |
|
|
112
112
|
| `history_author_acknowledge_target_not_actionable` | `history_author_acknowledge_target_not_actionable` | uncovered | none | 0 |
|
|
113
113
|
| `history_author_acknowledge_target_unreadable` | `history_author_acknowledge_target_unreadable` | uncovered | none | 0 |
|
|
114
|
+
| `history_baseline_unavailable` | `history_baseline_unavailable` | uncovered | none | 0 |
|
|
114
115
|
| `history_drift_chain_mismatch` | `history_drift_chain_mismatch` | uncovered | none | 0 |
|
|
115
116
|
| `history_drift_hash_mismatch` | `history_drift_hash_mismatch` | uncovered | none | 0 |
|
|
116
117
|
| `history_drift_merge_receipt` | `history_drift_merge_receipt` | uncovered | none | 0 |
|
|
117
118
|
| `history_drift_missing_stream` | `history_drift_missing_stream` | uncovered | none | 0 |
|
|
118
119
|
| `history_drift_unreadable_stream` | `history_drift_unreadable_stream` | uncovered | none | 0 |
|
|
119
120
|
| `history_drift_version_skew` | `history_drift_version_skew` | uncovered | none | 0 |
|
|
121
|
+
| `history_json_invalid` | `history_json_invalid` | uncovered | none | 0 |
|
|
120
122
|
| `history_merge_conflict_markers_detected` | `merge_conflict_markers_detected` | uncovered | none | 0 |
|
|
123
|
+
| `history_replay_invalid` | `history_replay_invalid` | uncovered | none | 0 |
|
|
124
|
+
| `history_salvage_refused` | `history_salvage_refused` | uncovered | none | 0 |
|
|
121
125
|
| `history_stream_over_compact_threshold` | `history_stream_over_compact_threshold` | uncovered | none | 0 |
|
|
122
126
|
| `history_target_out_of_range` | `history_target_out_of_range` | uncovered | none | 0 |
|
|
123
127
|
| `history_timestamp_invalid` | `history_timestamp_invalid` | uncovered | none | 0 |
|
|
124
128
|
| `history_unknown_author_events` | `history_unknown_author_events` | uncovered | none | 0 |
|
|
129
|
+
| `history_version_mapping_unavailable` | `history_version_mapping_unavailable` | uncovered | none | 0 |
|
|
130
|
+
| `history_version_pruned` | `history_version_pruned` | uncovered | none | 0 |
|
|
125
131
|
| `host_environment_capacity_fault` | `host_environment_capacity_fault` | uncovered | none | 0 |
|
|
126
132
|
| `host_environment_operation_invalid` | `host_environment_operation_invalid` | uncovered | none | 0 |
|
|
127
133
|
| `host_environment_permission_fault` | `host_environment_permission_fault` | uncovered | none | 0 |
|
|
@@ -163,9 +169,11 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
163
169
|
| `invalid_reproducible_process_environment` | `invalid_reproducible_process_environment` | uncovered | none | 0 |
|
|
164
170
|
| `invalid_workspace_snapshot_target` | `invalid_workspace_snapshot_target` | uncovered | none | 0 |
|
|
165
171
|
| `item_already_active` | `item_already_active` | uncovered | none | 0 |
|
|
172
|
+
| `item_document_encoding_invalid` | `item_document_encoding_invalid` | uncovered | none | 0 |
|
|
166
173
|
| `item_document_invalid` | `item_document_invalid` | uncovered | none | 0 |
|
|
167
174
|
| `item_document_roundtrip_failed` | `item_document_roundtrip_failed` | uncovered | none | 0 |
|
|
168
175
|
| `item_id_collision` | `item_id_collision` | uncovered | none | 0 |
|
|
176
|
+
| `item_identity_reserved` | `item_identity_reserved` | uncovered | none | 0 |
|
|
169
177
|
| `item_not_found` | `item_not_found` | uncovered | none | 0 |
|
|
170
178
|
| `likely_duplicate` | `likely_duplicate` | uncovered | none | 0 |
|
|
171
179
|
| `linked_artifact_mutation_conflict` | `linked_artifact_mutation_conflict` | uncovered | none | 0 |
|
package/marketplace.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
9
|
-
"version": "2026.9.
|
|
9
|
+
"version": "2026.9.6"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "pm-claude",
|
|
14
14
|
"source": "./plugins/pm-claude",
|
|
15
15
|
"description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
|
|
16
|
-
"version": "2026.9.
|
|
16
|
+
"version": "2026.9.6",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"url": "https://github.com/unbraind/pm-cli"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-cli",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.6",
|
|
4
4
|
"description": "Git-native project management CLI for humans and agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.10.0",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"import": "./dist/cli-bundle/sdk-testing.js",
|
|
77
77
|
"default": "./dist/cli-bundle/sdk-testing.js"
|
|
78
78
|
},
|
|
79
|
-
"./sdk/public-surface.json": "./sdk/public-surface.json",
|
|
79
|
+
"./sdk/public-surface.json": "./dist/sdk/public-surface.json",
|
|
80
80
|
"./cli": {
|
|
81
81
|
"types": "./dist/cli/public.d.ts",
|
|
82
82
|
"import": "./dist/cli/public.js",
|
|
@@ -95,7 +95,6 @@
|
|
|
95
95
|
"LICENSE",
|
|
96
96
|
"AGENTS.md",
|
|
97
97
|
"docs/**",
|
|
98
|
-
"sdk/public-surface.json",
|
|
99
98
|
".claude-plugin/**",
|
|
100
99
|
"plugins/**",
|
|
101
100
|
"packages/pm-*/**",
|
|
@@ -225,12 +224,15 @@
|
|
|
225
224
|
"@types/npm-package-arg": "^6.1.4",
|
|
226
225
|
"@vitest/coverage-v8": "^4.1.11",
|
|
227
226
|
"esbuild": "0.28.2",
|
|
228
|
-
"eslint": "^10.
|
|
227
|
+
"eslint": "^10.10.0",
|
|
229
228
|
"eslint-plugin-sonarjs": "^4.2.0",
|
|
230
229
|
"eslint-plugin-unicorn": "74.0.0",
|
|
231
230
|
"fast-check": "^4.9.0",
|
|
232
|
-
"
|
|
233
|
-
"
|
|
231
|
+
"github-slugger": "2.0.0",
|
|
232
|
+
"greptile": "^3.5.2",
|
|
233
|
+
"jscpd": "^5.1.2",
|
|
234
|
+
"marked": "18.0.11",
|
|
235
|
+
"parse5": "8.0.1",
|
|
234
236
|
"tsx": "^4.23.13",
|
|
235
237
|
"typescript": "^6.0.3",
|
|
236
238
|
"typescript-eslint": "^8.69.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.6",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
|
|
@@ -67,7 +67,16 @@ pm normalize --dry-run --json
|
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
`dedupe-audit --status all` explicitly selects every status and is equivalent
|
|
70
|
-
to omitting the filter.
|
|
70
|
+
to omitting the filter. The receipt retains `filters.status: "all"` for an
|
|
71
|
+
explicit all-status request. Configured status aliases and comma-separated OR
|
|
72
|
+
filters use the host SDK parser; combining `all` with another status or using
|
|
73
|
+
an unknown status fails. `--limit` caps returned clusters after the complete
|
|
74
|
+
matching item population is scanned, and unreadable source items fail the read.
|
|
75
|
+
Workflow terminality is captured per invocation so concurrent SDK calls cannot
|
|
76
|
+
exchange workspace policy. These contracts are tracked by
|
|
77
|
+
[pm-449do9](../../.agents/pm/issues/pm-449do9.toon).
|
|
78
|
+
|
|
79
|
+
For `comments-audit`, `--limit-items` caps item
|
|
71
80
|
scanning while `--limit-rows` caps emitted comment rows across the whole
|
|
72
81
|
result. The older `--limit` spelling remains a deprecated alias for
|
|
73
82
|
`--limit-rows`; do not combine the two row-limit spellings.
|