@unbrained/pm-cli 2026.8.30 → 2026.9.1
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 +1 -1
- package/.agents/skills/pm-developer/SKILL.md +1 -1
- package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +2 -2
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +1 -1
- package/.agents/skills/pm-developer/references/TOKEN_BUDGETS.md +1 -1
- package/.agents/skills/pm-extensions/SKILL.md +2 -2
- package/.agents/skills/pm-extensions/references/AUTHORING.md +1 -1
- package/.agents/skills/pm-extensions/references/LIFECYCLE.md +1 -1
- package/.agents/skills/pm-sdk/SKILL.md +1 -1
- package/.agents/skills/pm-user/SKILL.md +2 -2
- package/.agents/skills/pm-user/references/WORKFLOWS.md +2 -2
- package/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +16 -14
- package/CHANGELOG.md +41 -6
- package/README.md +3 -3
- package/dist/cli/commands/merge.d.ts +1 -1
- package/dist/cli/commands/merge.js +3 -3
- package/dist/cli/register-list-query.js +32 -17
- package/dist/cli/register-mutation.js +8 -5
- package/dist/cli/register-operations.d.ts +2 -0
- package/dist/cli/register-operations.js +20 -9
- package/dist/cli-bundle/bundle-manifest.json +144 -144
- package/dist/cli-bundle/chunks/{chunk-CMIEDWAY.js → chunk-2MC2LCXZ.js} +41 -41
- package/dist/cli-bundle/chunks/{chunk-WS2GJQVG.js → chunk-3WICXLVT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7SKMLSMX.js → chunk-6XIIGE7U.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ALKKAUFN.js +35 -0
- package/dist/cli-bundle/chunks/{chunk-MTTKAUBX.js → chunk-DTGWEL23.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-GOACULJW.js +13 -0
- package/dist/cli-bundle/chunks/chunk-NOPL37X4.js +205 -0
- package/dist/cli-bundle/chunks/{chunk-2UETTHY6.js → chunk-TAG4VC22.js} +30 -30
- package/dist/cli-bundle/chunks/{chunk-3TEF3HM5.js → chunk-U45JXJCC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TGNAA66W.js → chunk-X4RCGLTX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-2MKLQL2E.js → chunk-Y7VOMSZT.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-OMKJ5ONN.js → register-list-query-XYNX4ASQ.js} +11 -11
- package/dist/cli-bundle/chunks/register-mutation-2MVLRS3J.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-WCIDXBU3.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-GLQ5SYV3.js → register-setup-KVNC5KPL.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-HVQ22RC4.js → chunk-2FEZ5SKM.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-Y3JJXRVK.js → chunk-4O4CJAR6.js} +5 -5
- package/dist/cli-bundle/focused-chunks/chunk-7VATS5QY.js +16 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LYFWQMVC.js → chunk-BEVHCEWG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-TDK3OCX3.js → chunk-FWPLDEXF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-JEFKLWMM.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-JZYPPMXF.js → chunk-KB5OFSFD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-73EDXGYE.js → chunk-MKHG3T76.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-3AVAWVZA.js → chunk-PF3E6Q36.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-AD6ULRAF.js → chunk-QDFJIRKN.js} +4 -4
- package/dist/cli-bundle/focused-chunks/{chunk-RKOKG43G.js → chunk-RMRCQPWU.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XXOWRJZ5.js → chunk-S4U5CN5Q.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-THEPQMLX.js → chunk-SVXJYD6G.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-T2LXXSOD.js +158 -0
- package/dist/cli-bundle/focused-chunks/chunk-Y6JJIX6I.js +51 -0
- package/dist/cli-bundle/main.js +2 -2
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +27 -27
- 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 +33 -33
- 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 +10 -10
- package/dist/core/history/drift-scan.js +6 -6
- package/dist/core/history/history.d.ts +6 -0
- package/dist/core/history/history.js +47 -5
- package/dist/core/history/replay.d.ts +12 -1
- package/dist/core/history/replay.js +60 -39
- package/dist/core/schema/runtime-schema.d.ts +4 -0
- package/dist/core/schema/runtime-schema.js +60 -48
- package/dist/core/schema/status-defs-file.js +5 -2
- package/dist/mcp/legacy-adapter.d.ts +11 -2
- package/dist/mcp/legacy-adapter.js +26 -12
- package/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/server.js +78 -15
- package/dist/mcp/tool-definitions.js +56 -2
- package/dist/sdk/agent-capability-contracts.js +4 -2
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +6 -2
- package/dist/sdk/cli-contracts/grammar-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +12 -2
- package/dist/sdk/cli-contracts/runtime-contracts.js +3 -2
- package/dist/sdk/cli-contracts/tool-schema.js +11 -3
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +14 -2
- package/dist/sdk/governance/health.js +17 -6
- package/dist/sdk/governance/status-role-diagnostics.d.ts +27 -0
- package/dist/sdk/governance/status-role-diagnostics.js +36 -0
- package/dist/sdk/governance/validate-normalization.d.ts +6 -0
- package/dist/sdk/governance/validate-normalization.js +37 -0
- package/dist/sdk/governance/validate.d.ts +1 -1
- package/dist/sdk/governance/validate.js +20 -35
- package/dist/sdk/governance/workspace-position.d.ts +69 -0
- package/dist/sdk/governance/workspace-position.js +164 -0
- package/dist/sdk/governance.d.ts +2 -0
- package/dist/sdk/governance.js +4 -2
- package/dist/sdk/history-read.js +14 -6
- package/dist/sdk/history-repair.js +17 -10
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.js +4 -3
- package/dist/sdk/init-agent-guidance.js +4 -4
- package/dist/sdk/lifecycle/update.js +23 -10
- package/dist/sdk/mcp/discovery.d.ts +152 -0
- package/dist/sdk/mcp/discovery.js +495 -0
- package/dist/sdk/mcp/protocol.d.ts +10 -2
- package/dist/sdk/mcp/protocol.js +15 -4
- package/dist/sdk/merge/index.d.ts +1 -1
- package/dist/sdk/merge/index.js +3 -3
- package/dist/sdk/merge/receipts.d.ts +27 -1
- package/dist/sdk/merge/receipts.js +27 -8
- package/dist/sdk/merge/three-way.d.ts +3 -1
- package/dist/sdk/merge/three-way.js +9 -7
- package/dist/sdk/query/context.js +11 -14
- package/dist/sdk/query/list.d.ts +2 -0
- package/dist/sdk/query/list.js +33 -12
- package/dist/sdk/runtime-extended-actions.js +10 -6
- package/dist/sdk/schema.js +12 -2
- package/dist/sdk/test/execution.d.ts +15 -0
- package/dist/sdk/test/execution.js +35 -27
- package/docs/AGENT_GUIDE.md +12 -4
- package/docs/AGENT_PROVENANCE_ADR.md +1 -1
- package/docs/AGENT_RUNTIME_PRIMITIVES.md +2 -2
- package/docs/ARCHITECTURE.md +5 -0
- package/docs/CLAUDE_CODE_PLUGIN.md +5 -5
- package/docs/COMMANDS.md +12 -12
- package/docs/CONFIGURATION.md +1 -1
- package/docs/CONTEXT_RECOVERY_PRIMITIVES.md +14 -5
- package/docs/DEFECT_RECURRENCE.md +2 -0
- package/docs/MCP_2026_07_28.md +33 -9
- package/docs/MCP_2026_07_28_CONFORMANCE.md +1 -0
- package/docs/MCP_CAPABILITY_SURFACES.md +7 -1
- package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +15 -3
- package/docs/MERGE_SAFETY.md +30 -2
- package/docs/ONBOARDING.md +1 -1
- package/docs/OUTPUT_TOKEN_ACCOUNTING.md +5 -3
- package/docs/PROGRESSIVE_TOOL_DISCOVERY.md +42 -0
- package/docs/README.md +3 -1
- package/docs/READ_OUTPUT_CONTRACTS.md +1 -1
- package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +1 -1
- package/docs/SDK.md +3 -3
- package/docs/TESTING.md +23 -14
- package/docs/WORKSPACE_POSITION_AND_LIFECYCLE.md +113 -0
- package/docs/agent-task-token-baseline.json +157 -3
- package/docs/agent-task-transcripts.json +143 -0
- package/docs/examples/policy-restricted-extension/README.md +2 -2
- package/docs/examples/starter-extension/README.md +1 -1
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
- package/docs/performance/cli-transport-overhead.md +8 -6
- package/marketplace.json +2 -2
- package/package.json +4 -4
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +4 -3
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/sdk/public-surface.json +314 -10
- package/dist/cli-bundle/chunks/chunk-7X6OZEIV.js +0 -34
- package/dist/cli-bundle/chunks/chunk-GNWPTEBW.js +0 -205
- package/dist/cli-bundle/chunks/chunk-N6OR6FAR.js +0 -13
- package/dist/cli-bundle/chunks/register-mutation-QBSNCOY3.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-UC77FQZC.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-3UMBF26I.js +0 -158
- package/dist/cli-bundle/focused-chunks/chunk-AXZ5AJAF.js +0 -50
- package/dist/cli-bundle/focused-chunks/chunk-G6PATS5E.js +0 -16
- package/dist/cli-bundle/focused-chunks/chunk-LLNTHF5X.js +0 -2
package/.agents/skills/README.md
CHANGED
|
@@ -15,7 +15,7 @@ pnpm build
|
|
|
15
15
|
```bash
|
|
16
16
|
pm context --limit 10
|
|
17
17
|
pm search "<keywords>" --limit 10
|
|
18
|
-
pm list
|
|
18
|
+
pm list --status open --limit 20
|
|
19
19
|
pm claim <ID>
|
|
20
20
|
pm update <ID> --status in_progress --description "..."
|
|
21
21
|
pm append <ID> --body "Implementation notes"
|
|
@@ -42,7 +42,7 @@ pm release <ID>
|
|
|
42
42
|
## Local Docs Routing
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
pm install guide-shell --project
|
|
45
|
+
pm package install guide-shell --project
|
|
46
46
|
pm guide workflows
|
|
47
47
|
pm guide commands --depth standard
|
|
48
48
|
pm guide release --json
|
|
@@ -22,7 +22,7 @@ Skipping this is the single most common cause of tracker merge conflicts.
|
|
|
22
22
|
- `pm claim <ID>` before substantial edits. A claim is a recorded lease, not a
|
|
23
23
|
lock file, and it survives branching.
|
|
24
24
|
- `pm release <ID>` when pausing, handing off, closing, or canceling.
|
|
25
|
-
- `pm list
|
|
25
|
+
- `pm list --status in_progress` shows what the fleet currently holds.
|
|
26
26
|
- Never force an ownership or lock override without explicit human approval.
|
|
27
27
|
|
|
28
28
|
Author identity is detected per invocation — harness, model, effort, role, and
|
|
@@ -81,5 +81,5 @@ pm next # ~2.5k tok — one actionable item with its context
|
|
|
81
81
|
pm contracts --summary # ~2.6k tok — the command surface with per-command ceilings
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
Prefer `pm next` over `pm list
|
|
84
|
+
Prefer `pm next` over `pm list --status open` when the goal is to start work: it applies
|
|
85
85
|
relevance ranking and returns a working set rather than a page of rows.
|
|
@@ -29,7 +29,7 @@ profiles over the same substrate.
|
|
|
29
29
|
Optional deep routing that never goes stale:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
pm install guide-shell --project
|
|
32
|
+
pm package install guide-shell --project
|
|
33
33
|
pm guide extensions
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -59,7 +59,7 @@ pm contracts --runtime-only --availability-only
|
|
|
59
59
|
pm package explore --project # inspect state first
|
|
60
60
|
pm package manage --detail summary
|
|
61
61
|
pm package doctor --detail deep
|
|
62
|
-
pm install <package> --project # then mutate
|
|
62
|
+
pm package install <package> --project # then mutate
|
|
63
63
|
pm contracts --command <extension-command> --flags-only
|
|
64
64
|
pm package doctor --detail deep # verify after
|
|
65
65
|
```
|
|
@@ -74,7 +74,7 @@ moment the package publishes.
|
|
|
74
74
|
```bash
|
|
75
75
|
pm package init <name> # scaffold
|
|
76
76
|
# ...implement extensions/*.ts...
|
|
77
|
-
pm install <path-or-name> --project # install locally
|
|
77
|
+
pm package install <path-or-name> --project # install locally
|
|
78
78
|
pm package doctor --detail deep # activation diagnostics
|
|
79
79
|
pm contracts --command <your-command> --flags-only
|
|
80
80
|
pm <your-command> --help --json # the contract a consumer will read
|
|
@@ -29,7 +29,7 @@ integration should never import repository internals to get it.
|
|
|
29
29
|
Optional deep routing that never goes stale:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
pm install guide-shell --project
|
|
32
|
+
pm package install guide-shell --project
|
|
33
33
|
pm guide sdk
|
|
34
34
|
pm guide tokens --depth brief
|
|
35
35
|
```
|
|
@@ -28,7 +28,7 @@ agent can rebuild the full situation from it alone.
|
|
|
28
28
|
Optional deep routing that never goes stale:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
pm install guide-shell --project
|
|
31
|
+
pm package install guide-shell --project
|
|
32
32
|
pm guide quickstart
|
|
33
33
|
pm guide commands --depth brief
|
|
34
34
|
```
|
|
@@ -47,7 +47,7 @@ pm guide commands --depth brief
|
|
|
47
47
|
```bash
|
|
48
48
|
pm context --limit 10
|
|
49
49
|
pm search "<request keywords>" --limit 10
|
|
50
|
-
pm list
|
|
50
|
+
pm list --status open --limit 20 --brief
|
|
51
51
|
# reuse if it exists; otherwise create with lineage
|
|
52
52
|
pm create --create-mode progressive \
|
|
53
53
|
--title "..." --description "..." --type Task --status open \
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
```bash
|
|
8
8
|
pm context --limit 10
|
|
9
9
|
pm search "<keywords>" --limit 10
|
|
10
|
-
pm list
|
|
11
|
-
pm list
|
|
10
|
+
pm list --status open --limit 20
|
|
11
|
+
pm list --status in_progress --limit 20
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
2. If existing item matches, reuse and update it.
|
|
@@ -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
|
+
"version": "2026.9.1"
|
|
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.
|
|
16
|
+
"version": "2026.9.1",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"url": "https://github.com/unbraind/pm-cli"
|
package/AGENTS.md
CHANGED
|
@@ -4,22 +4,22 @@ This file is the low-context entrypoint for agents working in this repository. R
|
|
|
4
4
|
|
|
5
5
|
## Progressive Disclosure
|
|
6
6
|
|
|
7
|
-
| Need
|
|
8
|
-
|
|
9
|
-
| Agent workflow and ownership
|
|
10
|
-
| Exact command families and examples | [Command Reference](docs/COMMANDS.md)
|
|
11
|
-
| Sandbox-safe verification
|
|
12
|
-
| Settings, output, and environment
|
|
13
|
-
| Package or extension work
|
|
14
|
-
| Release work
|
|
15
|
-
| Full docs map
|
|
7
|
+
| Need | Read |
|
|
8
|
+
| ----------------------------------- | ----------------------------------------------------------------- |
|
|
9
|
+
| Agent workflow and ownership | [Agent Guide](docs/AGENT_GUIDE.md) |
|
|
10
|
+
| Exact command families and examples | [Command Reference](docs/COMMANDS.md) |
|
|
11
|
+
| Sandbox-safe verification | [Testing](docs/TESTING.md) |
|
|
12
|
+
| Settings, output, and environment | [Configuration](docs/CONFIGURATION.md) |
|
|
13
|
+
| Package or extension work | [Packages and Extensions](docs/EXTENSIONS.md), [SDK](docs/SDK.md) |
|
|
14
|
+
| Release work | [Releasing](docs/RELEASING.md) |
|
|
15
|
+
| Full docs map | [Documentation Index](docs/README.md) |
|
|
16
16
|
|
|
17
17
|
Use runtime contracts for exact flags because packages and settings can change the active surface:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
pm <command> --help --json
|
|
21
21
|
pm contracts --command <command> --flags-only --json
|
|
22
|
-
pm install guide-shell --project
|
|
22
|
+
pm package install guide-shell --project
|
|
23
23
|
pm guide <topic>
|
|
24
24
|
```
|
|
25
25
|
|
|
@@ -58,10 +58,11 @@ On a fresh clone or worktree, also run `pm merge install` once: the committed `.
|
|
|
58
58
|
For real repository tracking, do not override `PM_PATH`. If a script must target a tracker explicitly, prefer `--pm-path <repo>/.agents/pm`; `--path` is only a backward-compatible tracker-root alias, not a workspace/cwd flag. For tests and dogfood runs, use sandboxed `PM_PATH` and `PM_GLOBAL_PATH`; prefer `node scripts/run-tests.mjs ...` because it sets them automatically.
|
|
59
59
|
|
|
60
60
|
<!-- pm-cli:agent-guidance:start:v1 -->
|
|
61
|
+
|
|
61
62
|
## pm Workflow Quickstart
|
|
62
63
|
|
|
63
64
|
```bash
|
|
64
|
-
pm context --limit 10
|
|
65
|
+
pm context --limit 10 --for orient
|
|
65
66
|
pm search "<request keywords>" --limit 10
|
|
66
67
|
pm list --status open --limit 20
|
|
67
68
|
pm list --status in_progress --limit 20
|
|
@@ -73,21 +74,22 @@ pm docs <id> --add path=<path>,scope=project,note="<why>"
|
|
|
73
74
|
pm test <id> --add command="node scripts/run-tests.mjs test -- <target>",scope=project,timeout_seconds=240
|
|
74
75
|
pm comments <id> "Evidence: <what changed and what passed>"
|
|
75
76
|
pm test <id> --run --progress
|
|
76
|
-
pm close <id> "<reason with evidence>" --validate-close warn
|
|
77
|
+
pm close <id> "<reason with evidence>" --resolution "<what changed>" --expected "<expected outcome>" --actual "<observed outcome>" --validate-close warn
|
|
77
78
|
pm release <id>
|
|
78
79
|
```
|
|
79
80
|
|
|
80
81
|
Author identity is automatic; use `--author` only for an explicit override.
|
|
82
|
+
|
|
81
83
|
<!-- pm-cli:agent-guidance:end -->
|
|
82
84
|
|
|
83
85
|
## Working Rules
|
|
84
86
|
|
|
85
|
-
- **Orient:**
|
|
87
|
+
- **Orient:** start with the measured canonical cold-start, `pm context --limit 10 --for orient`. Before `pm create`, also run request-specific `pm search`, `pm list --status open`, and `pm list --status in_progress` so duplicate and ownership checks use live state. If net-new work is required, create or reuse the parent lineage first and record duplicate-check evidence in a create-time comment.
|
|
86
88
|
- **Verify before you claim:** the verification recipe for the Non-Negotiable above. A `closed` item whose `resolution`/`close_reason` describes the fix represents completed, shipped work — never describe it as outstanding. Confirm release/CI/infra status against the live system, e.g. `pm get pm-9gxi`, `npm view @unbrained/pm-cli version`, `gh release list`, `gh run list --workflow=auto-release.yml`.
|
|
87
89
|
- **Implement:** keep edits scoped to the claimed item. Link changed files with `pm files`, docs with `pm docs`, and runnable verification with `pm test`.
|
|
88
90
|
- **Record:** use `pm comments`, `pm notes`, and `pm learnings` for progress, rationale, and durable lessons. Prefer append-style updates over rewriting item content.
|
|
89
91
|
- **Verify:** use sandbox-safe commands. For documentation-only work, run at least `pnpm build` and a focused link/content check. For broader work, run linked tests, coverage, validation, and release gates as appropriate.
|
|
90
|
-
- **Close:** add evidence first, then `pm close <id> "<reason>" --validate-close warn`, then `pm release <id>`.
|
|
92
|
+
- **Close:** add evidence first, then atomically include `--resolution`, `--expected`, and `--actual` on `pm close <id> "<reason>" --validate-close warn`, then `pm release <id>`. Structured evidence belongs in the immutable close event, not in a later backfill.
|
|
91
93
|
- **Land closeout through review:** tracker evidence, item closure, and the generated changelog are part of the reviewed delivery. Never push post-merge closeout commits directly to `main`; if evidence depends on the merge SHA, carry it in a normal `main`-based follow-up PR so the new head retains analyzer provenance. See [Releasing](docs/RELEASING.md#reviewed-delivery-closeout).
|
|
92
94
|
|
|
93
95
|
## Test Safety
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.9.1 - 2026-09-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- GH-796: duplicate recurrence now reopens the canonical terminal item instead of creating a second item ([pm-83cz0o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-83cz0o.toon))
|
|
8
|
+
- Progressive MCP discovery and canonical tool results: reveal the minimum relevant catalog and deliver one unambiguous model-facing output contract ([pm-3g3f8z](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-3g3f8z.toon))
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- The two-call agent cold start proposed as canonical costs more tokens than the four-call protocol it replaces, and no gate measures either ([pm-jjqyzd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-jjqyzd.toon))
|
|
13
|
+
- GH-1166: root help hides the --all discovery option that reveals the full command surface ([pm-7f9zkh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-7f9zkh.toon))
|
|
14
|
+
- GH-1104: health must not certify pending lossless merge receipts as reconciled ([pm-baksix](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-baksix.toon))
|
|
15
|
+
- GH-1135: item_hash_version 2 still masks writer hash divergence as corruption ([pm-2qahia](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-2qahia.toon))
|
|
16
|
+
|
|
17
|
+
### Other
|
|
18
|
+
|
|
19
|
+
- Document the measured canonical agent cold-start across docs and generated guidance ([pm-ka6d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-ka6d.toon))
|
|
20
|
+
- Close-time completeness signal for structured resolution fields (resolution/expected/actual) — config-gated warn or require ([pm-wenq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-wenq.toon))
|
|
21
|
+
|
|
22
|
+
## 2026.8.31 - 2026-08-31
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Workspace position read: one bounded answer to where this workspace stands in the branch-and-merge workflow and what to run next, replacing a protocol the agent must remember ([pm-bq0ii8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-bq0ii8.toon))
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Custom statuses registered without a lifecycle role are silently orphaned from every work-selection surface ([pm-0mhspz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-0mhspz.toon))
|
|
31
|
+
- GH-1158: Windows Node 24 nightly receipt fixture derives a root-relative expectation from a drive-qualified path ([pm-46hpx8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-46hpx8.toon))
|
|
32
|
+
- GH-1154: linked-test sandbox guard is command-shape inconsistent and undocumented ([pm-s8cth5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-s8cth5.toon))
|
|
33
|
+
- The local preflight token-budget gate is red on a workstation and green in hosted CI for the same commit again, because the earlier remediation closed the one ambient channel that had bitten instead of closing the fixture's environment ([pm-4o7tlx](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-4o7tlx.toon))
|
|
34
|
+
- The bounded legacy MCP compatibility set stops one revision short of the spec's own legacy boundary, so every current host is refused at initialize and the dual-era guarantee is unmet ([pm-edywqn](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-edywqn.toon))
|
|
35
|
+
|
|
36
|
+
### Security
|
|
37
|
+
|
|
38
|
+
- Refresh compatible GitHub Actions and tsx tooling dependencies ([pm-k47gdd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-k47gdd.toon))
|
|
39
|
+
|
|
40
|
+
### Deprecated
|
|
41
|
+
|
|
42
|
+
- The project's own agent-facing documentation and skills instruct deprecated command spellings, so the alias-usage signal that decides when a spelling can be retired is manufactured by the instructions rather than observed from callers ([pm-q2n4vd](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-q2n4vd.toon))
|
|
43
|
+
|
|
3
44
|
## 2026.8.30 - 2026-08-30
|
|
4
45
|
|
|
5
46
|
### Other
|
|
@@ -16,7 +57,6 @@
|
|
|
16
57
|
- GH-1148: cached drift mismatch can falsely report tracker corruption ([pm-sxg7wl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-sxg7wl.toon))
|
|
17
58
|
- GH-1138: linked test name filters can pass after executing zero tests ([pm-ntnv4k](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ntnv4k.toon))
|
|
18
59
|
- GH-1136: npm 12 object-form npm pack receipts break registry package installs ([pm-xrjy8o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-xrjy8o.toon))
|
|
19
|
-
- GH-1135: item_hash_version 2 still masks writer hash divergence as corruption ([pm-2qahia](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-2qahia.toon))
|
|
20
60
|
- The annotation key=value grammar has three divergent comma behaviours, two of which silently corrupt the evidence text before it is made immutable ([pm-hu92i3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hu92i3.toon))
|
|
21
61
|
- GH-1150: health remediation for pending merge receipts must perform the repair ([pm-r0p3at](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-r0p3at.toon))
|
|
22
62
|
- GH-1134: required collection recovery omits truthful --clear-\* intent ([pm-t7wl00](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-t7wl00.toon))
|
|
@@ -114,7 +154,6 @@
|
|
|
114
154
|
|
|
115
155
|
### Fixed
|
|
116
156
|
|
|
117
|
-
- GH-1104: health must not certify pending lossless merge receipts as reconciled ([pm-baksix](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-baksix.toon))
|
|
118
157
|
- Dynamic-read continuation cursors are born stale: pm health emits a cursor that its next invocation rejects ([pm-oahhyc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-oahhyc.toon))
|
|
119
158
|
- GH-1105: contracts must declare each command projection vocabulary before invocation ([pm-q4isdq](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-q4isdq.toon))
|
|
120
159
|
- The outcome-milestone ladder is a sibling set rather than a layer: 1,024 terminal items reach the roadmap apex through 154 typed roots without traversing any outcome milestone ([pm-h6b73t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-h6b73t.toon))
|
|
@@ -205,10 +244,6 @@
|
|
|
205
244
|
|
|
206
245
|
## 2026.8.20 - 2026-08-20
|
|
207
246
|
|
|
208
|
-
### Added
|
|
209
|
-
|
|
210
|
-
- GH-796: no reopen transition for terminal items, so recurrence is recorded as a duplicate instead of a reopening ([pm-83cz0o](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-83cz0o.toon))
|
|
211
|
-
|
|
212
247
|
### Fixed
|
|
213
248
|
|
|
214
249
|
- GH-529: init --agent-guidance emits run-tests.mjs linked-test example that may not exist in the target repo ([pm-surv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-surv.toon))
|
package/README.md
CHANGED
|
@@ -99,11 +99,11 @@ pm release <item-id>
|
|
|
99
99
|
|
|
100
100
|
## Agent Loop
|
|
101
101
|
|
|
102
|
-
Use `pm next`
|
|
102
|
+
Use the measured one-call context intent for cold-start orientation. Use `pm next` as an alternative when you only need the single highest-priority ready item, then search all statuses before creating anything. Measurement methodology and ratcheted evidence live in the [Agent Guide](docs/AGENT_GUIDE.md#agent-quick-context).
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
pm
|
|
106
|
-
pm
|
|
105
|
+
pm context --limit 10 --for orient # canonical cold start: state, ownership, actionable work
|
|
106
|
+
# Alternative: pm next # one actionable item + rationale, ready/blocked queues
|
|
107
107
|
pm search "keywords for the requested work" --limit 10
|
|
108
108
|
pm list --status open --limit 20
|
|
109
109
|
pm list --status in_progress --limit 20
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* primitives. The SDK owns the three-way merge semantics, the git merge
|
|
6
6
|
* driver runner, and the repository merge-configuration installer.
|
|
7
7
|
*/
|
|
8
|
-
export { MERGE_DRIVER_ARTIFACT_VALUES, mergeHistoryStreams, mergeItemDocuments, mergeJsonDocuments, runMergeDriver, runMergeInstall, runMergeReceiptReport, runMergeReconcile, type MergeDriverArtifact, type MergeDriverOptions, type MergeDriverResult, type MergeInstallOptions, type MergeInstallResult, type MergeReceiptReport, type MergeReconcileOptions, type MergeReconcileResult, } from "../../sdk/merge/index.js";
|
|
8
|
+
export { MERGE_DRIVER_ARTIFACT_VALUES, mergeHistoryStreams, mergeItemDocuments, mergeJsonDocuments, runMergeDriver, runMergeInstall, runMergeReceiptEvidenceReport, runMergeReceiptReport, runMergeReconcile, type MergeDriverArtifact, type MergeDriverOptions, type MergeDriverResult, type MergeInstallOptions, type MergeInstallResult, type MergeReceiptEvidenceReport, type MergeReceiptReport, type MergeReconcileOptions, type MergeReconcileResult, } from "../../sdk/merge/index.js";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* driver runner, and the repository merge-configuration installer.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
10
|
-
export { MERGE_DRIVER_ARTIFACT_VALUES, mergeHistoryStreams, mergeItemDocuments, mergeJsonDocuments, runMergeDriver, runMergeInstall, runMergeReceiptReport, runMergeReconcile, } from "../../sdk/merge/index.js";
|
|
9
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0ac2cdcd-45da-5420-ba98-a49ecf54f75c")}catch(e){}}();
|
|
10
|
+
export { MERGE_DRIVER_ARTIFACT_VALUES, mergeHistoryStreams, mergeItemDocuments, mergeJsonDocuments, runMergeDriver, runMergeInstall, runMergeReceiptEvidenceReport, runMergeReceiptReport, runMergeReconcile, } from "../../sdk/merge/index.js";
|
|
11
11
|
//# sourceMappingURL=merge.js.map
|
|
12
|
-
//# debugId=
|
|
12
|
+
//# debugId=0ac2cdcd-45da-5420-ba98-a49ecf54f75c
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1c6a0524-a8eb-5a20-b395-b488249c4e83")}catch(e){}}();
|
|
3
3
|
import { EXIT_CODE, PmCliError, readSettings, renderRowsAsCsv, renderRowsAsTable, resolvePmRoot, } from "../sdk/runtime-primitives.js";
|
|
4
4
|
import { renderPmCommandAliasMigrationHint, resolvePmCommandAlias, } from "../sdk/cli-contracts.js";
|
|
5
5
|
import { EVAL_QUERY_SET_SCHEMA_ID } from "../sdk/eval.js";
|
|
6
6
|
import { applyContextIntentProjection } from "../sdk/context-intent-contracts.js";
|
|
7
7
|
import { renderPmClosedDomainHelp } from "../sdk/agent/closed-domain-contracts.js";
|
|
8
|
-
import { serializeNdjsonRows, serializeNdjsonStream
|
|
8
|
+
import { serializeNdjsonRows, serializeNdjsonStream } from "../sdk/output.js";
|
|
9
9
|
import { listMutationEvents, subscribeMutationEventBatches, subscribeMutationEvents, } from "../sdk/mutation-events.js";
|
|
10
10
|
import { runActivity } from "./commands/activity.js";
|
|
11
11
|
import { runAggregate } from "./commands/aggregate.js";
|
|
@@ -169,6 +169,22 @@ async function runRegisteredListCommand(params) {
|
|
|
169
169
|
}
|
|
170
170
|
const intentOptions = applyContextIntentProjection("list", params.options);
|
|
171
171
|
const listOptions = normalizeListOptions(intentOptions);
|
|
172
|
+
const selection = resolveRegisteredListSelection(params, listOptions);
|
|
173
|
+
const { effectiveName, effectiveStatus, effectiveDependencyBlocked, effectiveExcludeTerminal, } = selection;
|
|
174
|
+
applyDefaultListProjection(listOptions, effectiveName);
|
|
175
|
+
Object.assign(listOptions, { projectionCommand: effectiveName });
|
|
176
|
+
if (effectiveExcludeTerminal)
|
|
177
|
+
listOptions.excludeTerminal = true;
|
|
178
|
+
listOptions.dependencyBlocked = effectiveDependencyBlocked;
|
|
179
|
+
const output = resolveRegisteredListOutputContext(intentOptions, globalOptions);
|
|
180
|
+
const result = await runList(effectiveDependencyBlocked ? undefined : effectiveStatus, listOptions, globalOptions);
|
|
181
|
+
renderRegisteredListResult("list", result, output);
|
|
182
|
+
if (globalOptions.profile) {
|
|
183
|
+
printError(`profile:command=list took_ms=${Date.now() - startedAt}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** Resolve aliases and lifecycle buckets into one SDK list selection. */
|
|
187
|
+
function resolveRegisteredListSelection(params, listOptions) {
|
|
172
188
|
let effectiveName = params.name;
|
|
173
189
|
let effectiveStatus = params.status;
|
|
174
190
|
let effectiveDependencyBlocked = params.dependencyBlocked === true;
|
|
@@ -183,7 +199,8 @@ async function runRegisteredListCommand(params) {
|
|
|
183
199
|
effectiveExcludeTerminal = false;
|
|
184
200
|
listOptions.status = undefined;
|
|
185
201
|
}
|
|
186
|
-
else if (requestedStatus !== undefined &&
|
|
202
|
+
else if (requestedStatus !== undefined &&
|
|
203
|
+
requestedVariant !== undefined) {
|
|
187
204
|
effectiveName = requestedVariant.name;
|
|
188
205
|
effectiveStatus = requestedStatus;
|
|
189
206
|
effectiveDependencyBlocked = requestedVariant.dependencyBlocked;
|
|
@@ -191,17 +208,17 @@ async function runRegisteredListCommand(params) {
|
|
|
191
208
|
listOptions.status = undefined;
|
|
192
209
|
}
|
|
193
210
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
listOptions.dependencyBlocked = effectiveDependencyBlocked;
|
|
199
|
-
const output = resolveRegisteredListOutputContext(intentOptions, globalOptions);
|
|
200
|
-
const result = await runList(effectiveDependencyBlocked ? undefined : effectiveStatus, listOptions, globalOptions);
|
|
201
|
-
renderRegisteredListResult("list", result, output);
|
|
202
|
-
if (globalOptions.profile) {
|
|
203
|
-
printError(`profile:command=list took_ms=${Date.now() - startedAt}`);
|
|
211
|
+
if (effectiveName === "list-open" || effectiveName === "list-in-progress") {
|
|
212
|
+
listOptions.lifecycleBucket =
|
|
213
|
+
effectiveName === "list-open" ? "open" : "in_progress";
|
|
214
|
+
effectiveStatus = undefined;
|
|
204
215
|
}
|
|
216
|
+
return {
|
|
217
|
+
effectiveName,
|
|
218
|
+
effectiveStatus,
|
|
219
|
+
effectiveDependencyBlocked,
|
|
220
|
+
effectiveExcludeTerminal,
|
|
221
|
+
};
|
|
205
222
|
}
|
|
206
223
|
function registerListCommand(program, descriptor) {
|
|
207
224
|
const { name, description, status, excludeTerminal, allowStatusFilter, dependencyBlocked, aliasContract, } = descriptor;
|
|
@@ -465,9 +482,7 @@ function buildMutationEventOptions(options, pmRoot) {
|
|
|
465
482
|
limit: typeof options.limit === "string" ? Number(options.limit) : undefined,
|
|
466
483
|
full: options.full === true,
|
|
467
484
|
...(options.provenance === true ? { provenance: true } : {}),
|
|
468
|
-
...(options.provenanceSummary === true
|
|
469
|
-
? { provenanceSummary: true }
|
|
470
|
-
: {}),
|
|
485
|
+
...(options.provenanceSummary === true ? { provenanceSummary: true } : {}),
|
|
471
486
|
...(harness === undefined ? {} : { harness }),
|
|
472
487
|
...(agentInstance === undefined ? {} : { agentInstance }),
|
|
473
488
|
...(provenanceFilter === undefined ? {} : { provenanceFilter }),
|
|
@@ -924,4 +939,4 @@ export const _testOnlyRegisterListQuery = {
|
|
|
924
939
|
parseListFormat,
|
|
925
940
|
};
|
|
926
941
|
//# sourceMappingURL=register-list-query.js.map
|
|
927
|
-
//# debugId=
|
|
942
|
+
//# debugId=1c6a0524-a8eb-5a20-b395-b488249c4e83
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4e3b2528-5128-5bfd-8234-1e60fe90d9e2")}catch(e){}}();
|
|
3
3
|
import { resolveBodyFileContent, resolveCliBulkIdsInput, EXIT_CODE, splitCommaList, PmCliError, createUnknownSubcommandError, } from "../sdk/runtime-primitives.js";
|
|
4
4
|
import { CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS, MERGE_SUBCOMMAND_VALUES, PLAN_CREATE_METADATA_PARAMETER_KEYS, UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS, } from "../sdk/cli-contracts.js";
|
|
5
5
|
import { BUILTIN_ITEM_TYPE_VALUES, PLAN_STEP_LINK_KIND_VALUES, } from "../types/index.js";
|
|
6
|
-
import { MERGE_DRIVER_ARTIFACT_VALUES, runMergeDriver, runMergeInstall, runMergeReconcile,
|
|
6
|
+
import { MERGE_DRIVER_ARTIFACT_VALUES, runMergeDriver, runMergeInstall, runMergeReconcile, runMergeReceiptEvidenceReport, } from "./commands/merge.js";
|
|
7
7
|
import { runAppend } from "./commands/append.js";
|
|
8
8
|
import { runClose } from "./commands/close.js";
|
|
9
9
|
import { runCloseMany } from "./commands/close-many.js";
|
|
@@ -847,9 +847,12 @@ async function runMergeAction(subcommand, artifact, base, ours, theirs, options,
|
|
|
847
847
|
if (artifact !== undefined) {
|
|
848
848
|
throw new PmCliError("merge report takes no positional arguments.", EXIT_CODE.USAGE);
|
|
849
849
|
}
|
|
850
|
-
|
|
850
|
+
const result = await runMergeReceiptEvidenceReport({
|
|
851
851
|
includeReconciled: options.includeReconciled === true,
|
|
852
|
-
})
|
|
852
|
+
});
|
|
853
|
+
printResult(result, globalOptions);
|
|
854
|
+
if (!result.ok)
|
|
855
|
+
process.exitCode = EXIT_CODE.GENERIC_FAILURE;
|
|
853
856
|
break;
|
|
854
857
|
}
|
|
855
858
|
case "driver":
|
|
@@ -1886,4 +1889,4 @@ export function registerMutationCommands(program, registrationOptions = {}) {
|
|
|
1886
1889
|
.action(runDepsAction);
|
|
1887
1890
|
}
|
|
1888
1891
|
//# sourceMappingURL=register-mutation.js.map
|
|
1889
|
-
//# debugId=
|
|
1892
|
+
//# debugId=4e3b2528-5128-5bfd-8234-1e60fe90d9e2
|
|
@@ -53,6 +53,7 @@ declare function buildRunTestOptions(options: Record<string, unknown>, values: {
|
|
|
53
53
|
export declare const _testOnlyRegisterOperations: {
|
|
54
54
|
buildRunTestOptions: typeof buildRunTestOptions;
|
|
55
55
|
buildRunTestAllOptions: typeof buildRunTestAllOptions;
|
|
56
|
+
runWorkspacePositionAction: typeof runWorkspacePositionAction;
|
|
56
57
|
validateBackgroundTestOptions: typeof validateBackgroundTestOptions;
|
|
57
58
|
};
|
|
58
59
|
declare function buildRunTestAllOptions(options: Record<string, unknown>): {
|
|
@@ -76,6 +77,7 @@ declare function buildRunTestAllOptions(options: Record<string, unknown>): {
|
|
|
76
77
|
checkContext: boolean;
|
|
77
78
|
autoPmContext: boolean;
|
|
78
79
|
};
|
|
80
|
+
declare function runWorkspacePositionAction(_options: Record<string, unknown>, command: Command): Promise<void>;
|
|
79
81
|
/** Enforces the claim target XOR selection contract before dispatch. */
|
|
80
82
|
export declare function requireClaimTarget(id: string | undefined, next: boolean): void;
|
|
81
83
|
/** Implements register operation commands for the public runtime surface of this module. */
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ecf75f5d-6345-5487-b7e4-1bd8f97326fd")}catch(e){}}();
|
|
3
3
|
import { resolveRuntimeStatusRegistry, setActiveCommandResult, EXIT_CODE, PmCliError, createUnknownSubcommandError, resolveAuthor, resolvePmRoot, readSettings, } from "../sdk/runtime-primitives.js";
|
|
4
4
|
import { resolveStartTaskInProgressStatus } from "../sdk/start-task-status.js";
|
|
5
5
|
import { parseStatsAnalyticsJson } from "./stats-analytics-json.js";
|
|
6
6
|
import { createWorkspaceSnapshot, deleteWorkspaceSnapshot, inspectWorkspaceSnapshot, listWorkspaceSnapshots, planWorkspaceSnapshotRestore, restoreWorkspaceSnapshotWithRecovery, WORKSPACE_SNAPSHOT_ACTIONS, } from "../sdk/workspace-snapshot.js";
|
|
7
|
+
import { readWorkspacePosition } from "../sdk/governance/workspace-position.js";
|
|
7
8
|
import { runClaim, runClaimNext, runRelease } from "./commands/claim.js";
|
|
8
9
|
import { runClose } from "./commands/close.js";
|
|
9
10
|
import { runContracts } from "./commands/contracts.js";
|
|
@@ -141,6 +142,7 @@ function buildRunTestOptions(options, values) {
|
|
|
141
142
|
export const _testOnlyRegisterOperations = {
|
|
142
143
|
buildRunTestOptions,
|
|
143
144
|
buildRunTestAllOptions,
|
|
145
|
+
runWorkspacePositionAction,
|
|
144
146
|
validateBackgroundTestOptions,
|
|
145
147
|
};
|
|
146
148
|
async function runForegroundLinkedTests(id, options, globalOptions, values) {
|
|
@@ -308,7 +310,7 @@ async function runHealthAction(options, command) {
|
|
|
308
310
|
const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);
|
|
309
311
|
const result = await runHealth(globalOptions, {
|
|
310
312
|
strictDirectories: Boolean(options.strictDirectories),
|
|
311
|
-
requireMergeDrivers: Boolean(options.requireMergeDrivers),
|
|
313
|
+
requireMergeDrivers: Boolean(options.requireMergeDrivers) || strictExit,
|
|
312
314
|
checkOnly: Boolean(options.checkOnly),
|
|
313
315
|
checkTelemetry: Boolean(options.checkTelemetry),
|
|
314
316
|
noRefresh: Boolean(options.noRefresh),
|
|
@@ -446,6 +448,10 @@ async function runWorkspaceSnapshotAction(action, target, options, command) {
|
|
|
446
448
|
}
|
|
447
449
|
printResult(await deleteWorkspaceSnapshot(pmRoot, target), globalOptions);
|
|
448
450
|
}
|
|
451
|
+
async function runWorkspacePositionAction(_options, command) {
|
|
452
|
+
const globalOptions = getGlobalOptions(command);
|
|
453
|
+
printResult(await readWorkspacePosition(globalOptions), globalOptions);
|
|
454
|
+
}
|
|
449
455
|
async function runContractsAction(options, command) {
|
|
450
456
|
const globalOptions = getGlobalOptions(command);
|
|
451
457
|
const startedAt = Date.now();
|
|
@@ -595,8 +601,8 @@ export function registerOperationCommands(program) {
|
|
|
595
601
|
const testCommand = program
|
|
596
602
|
.command("test")
|
|
597
603
|
.argument("<id>", "Item id")
|
|
598
|
-
.option("--add <value>", "Add
|
|
599
|
-
.option("--add-json <value>", "Add
|
|
604
|
+
.option("--add <value>", "Add verified isolated test (CSV/markdown or stdin)", collect)
|
|
605
|
+
.option("--add-json <value>", "Add verified isolated test (JSON object/array or stdin)", collect)
|
|
600
606
|
.option("--remove <value>", "Remove linked test entry by exact command/path (command=<value> and path=<value> preserve commas and equals signs; or - for stdin)", collect)
|
|
601
607
|
.option("--remove-index <n>", "Remove the 1-based linked-test index from --list order (repeatable)", collect)
|
|
602
608
|
.option("--list", "List linked tests without mutating")
|
|
@@ -712,13 +718,18 @@ export function registerOperationCommands(program) {
|
|
|
712
718
|
.option("--scope <value>", "Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime, locks, checkpoints, transactions", collect)
|
|
713
719
|
.description("Delete optional cache artifacts by default (including expired lock debris) and show a summary.")
|
|
714
720
|
.action(runGcAction);
|
|
715
|
-
program
|
|
721
|
+
const workspaceCommand = program
|
|
716
722
|
.command("workspace")
|
|
717
|
-
.description("
|
|
723
|
+
.description("Inspect workspace state and snapshots.");
|
|
724
|
+
workspaceCommand
|
|
725
|
+
.command("position")
|
|
726
|
+
.description("Show merge and history readiness.")
|
|
727
|
+
.action(runWorkspacePositionAction);
|
|
728
|
+
workspaceCommand
|
|
718
729
|
.command("snapshot")
|
|
719
|
-
.argument("<action>", "
|
|
730
|
+
.argument("<action>", "Action: create, list, inspect, restore, delete")
|
|
720
731
|
.argument("[target]", "Optional name for create; name or fingerprint otherwise")
|
|
721
|
-
.description("
|
|
732
|
+
.description("Manage content-addressed tracker snapshots.")
|
|
722
733
|
.option("--dry-run", "Preview restore file, item, stream, and history-entry impact without mutating state")
|
|
723
734
|
.option("--force", "Explicitly confirm a whole-workspace snapshot restore")
|
|
724
735
|
.option("--author <value>", "Actor recorded on the restore audit event")
|
|
@@ -898,4 +909,4 @@ function registerSchedulingShortcutCommands(program) {
|
|
|
898
909
|
});
|
|
899
910
|
}
|
|
900
911
|
//# sourceMappingURL=register-operations.js.map
|
|
901
|
-
//# debugId=
|
|
912
|
+
//# debugId=ecf75f5d-6345-5487-b7e4-1bd8f97326fd
|