@unbrained/pm-cli 2026.10.2 → 2026.10.4
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 +2 -2
- package/CHANGELOG.md +31 -1
- package/dist/cli/error-guidance.js +1 -1
- package/dist/cli/runtime/invocation-options.js +1 -1
- package/dist/cli/runtime/selection.js +1 -1
- package/dist/cli/runtime-compatibility-boundary.d.ts +1 -1
- package/dist/cli/runtime-compatibility-boundary.js +3 -3
- package/dist/cli-bundle/bundle-manifest.json +149 -149
- package/dist/cli-bundle/chunks/{chunk-HY6M34B4.js → chunk-7CE2DJMA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WP6NRH72.js → chunk-7UVXKI7K.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7FUEQOYG.js → chunk-D7Z2ZMJL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TRYXVQ7W.js → chunk-GZMWISWW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZI7F3FVE.js → chunk-J52QIRRZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-R4TUD355.js → chunk-JDKD3WGG.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-JQ7DW663.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-SV7CZEVV.js → chunk-QXIDOOWT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XOUBIF6Z.js → chunk-SMKHR6BM.js} +49 -49
- package/dist/cli-bundle/chunks/{chunk-MTJMOI4I.js → chunk-V3U77H3V.js} +31 -31
- package/dist/cli-bundle/chunks/{chunk-Z2GYDSAO.js → chunk-XZDWAYJC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-R7ULWMBG.js → chunk-Y6VRBTP3.js} +71 -71
- package/dist/cli-bundle/chunks/{chunk-CZLAWXDR.js → chunk-YAAFYFS4.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-R4PHNB7W.js → register-list-query-QBGXO5JJ.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-PDDAUDYV.js → register-mutation-53ZLT4RX.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-A5HJT46K.js → register-operations-OBK2FXUU.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-EZ2F25JI.js → register-setup-HM3OCBH2.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-FKK2HI3S.js → chunk-2JFYR56O.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-UTRSM3ZK.js → chunk-32EVUSS4.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-DBD4W4QP.js → chunk-467EW5RL.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-IR4UXLRP.js → chunk-5GUSO2P4.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-GMYUNHST.js → chunk-6XBRADQQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-EJN7DY3B.js → chunk-7O4NUJVO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-E754JDLY.js → chunk-CURTIIQT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-4FFPGNCJ.js → chunk-IJUWEEEB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XRSCIYHR.js → chunk-JCVMOSWQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZIXFMIUL.js → chunk-JMJK2L4Z.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-WCY6HRZO.js → chunk-KG3H4UZZ.js} +14 -14
- package/dist/cli-bundle/focused-chunks/{chunk-VVWYI2X7.js → chunk-MHQ2XICU.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-3BIYG72P.js → chunk-Q6DJ5DFQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BLCTBSGT.js → chunk-RJV6QVJE.js} +26 -26
- package/dist/cli-bundle/focused-chunks/{chunk-GBD4EN6S.js → chunk-ZE2JZ7R6.js} +11 -11
- package/dist/cli-bundle/focused-chunks/chunk-ZLEN4HZD.js +165 -0
- package/dist/cli-bundle/main.js +22 -22
- 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 +31 -31
- 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 +23 -23
- 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 +1 -1
- package/dist/core/extensions/extension-types.d.ts +8 -1
- package/dist/core/extensions/extension-types.js +1 -1
- package/dist/core/shared/secret-rules.js +1 -1
- package/dist/core/shared/time.js +1 -1
- package/dist/core/store/settings.d.ts +11 -2
- package/dist/core/store/settings.js +2 -2
- package/dist/sdk/agent/subcommand-recovery.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/context-intent-contracts.js +1 -1
- package/dist/sdk/extension-command-context.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/item-transaction.js +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
- package/dist/sdk/lifecycle/task-composition.js +1 -1
- package/dist/sdk/linked-artifacts.d.ts +1 -1
- package/dist/sdk/linked-artifacts.js +1 -1
- package/dist/sdk/output-projection.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/search-pagination.d.ts +1 -1
- package/dist/sdk/query/search-pagination.js +1 -1
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/test/workspace-snapshot.d.ts +11 -0
- package/dist/sdk/test/workspace-snapshot.js +2 -0
- package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +109 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +25 -0
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +23 -0
- package/docs/SDK_AUDITED_MUTATIONS.md +35 -0
- package/docs/TESTING.md +40 -5
- package/docs/ecosystem-review-2026-09-28.json +2864 -3157
- package/marketplace.json +2 -2
- package/package.json +5 -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/package.json +2 -2
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +2 -2
- package/plugins/pm-codex/plugin.json +1 -1
- package/dist/cli-bundle/chunks/chunk-7NL3A2BY.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-YC32ZSLS.js +0 -165
|
@@ -232,6 +232,29 @@ activity limits so the built-in orientation declaration remains feasible on a
|
|
|
232
232
|
large tracker. All five intent commands accept the same
|
|
233
233
|
`--token-budget` override. Explicit `--depth` and `--limit` controls still win.
|
|
234
234
|
|
|
235
|
+
Context omission instructions request the named section, for example
|
|
236
|
+
`--section files`, so they can be appended while retaining `--for handoff` or
|
|
237
|
+
`--for orient`. An explicit depth suppresses the intent's default section subset;
|
|
238
|
+
an explicit section remains authoritative at any depth. Workspace memory that
|
|
239
|
+
is already present is never reported as omitted. The original filters and token
|
|
240
|
+
budget remain binding; an oversized restoration reports its remaining budget
|
|
241
|
+
constraint. Tracked by [pm-gh1367](../.agents/pm/issues/pm-gh1367.toon).
|
|
242
|
+
|
|
243
|
+
For namespaced commands, options supplied on an ancestor apply only when the
|
|
244
|
+
selected leaf declares them. `context --tag urgent next` forwards the tag;
|
|
245
|
+
a leaf-supplied limit takes precedence. `context next --depth deep` and
|
|
246
|
+
`context --depth deep next` fail with `unknown_option`, because `next` does not
|
|
247
|
+
declare a depth projection. Inspect the leaf's help before applying context
|
|
248
|
+
controls to it. Tracked by [pm-gh1368](../.agents/pm/issues/pm-gh1368.toon).
|
|
249
|
+
|
|
250
|
+
Ownership compositions use the resolved canonical item ID in every stage and
|
|
251
|
+
the root receipt, including short-ID invocations. Default CLI/MCP start, pause,
|
|
252
|
+
and close receipts expose the final status and aggregate changed-field count
|
|
253
|
+
without repeating item bodies. `--full-changed-fields` and typed SDK methods
|
|
254
|
+
retain complete constituent results. A failed later step reports the canonical
|
|
255
|
+
item and prior durable mutation without implying rollback.
|
|
256
|
+
Tracked by [pm-gh1369](../.agents/pm/issues/pm-gh1369.toon).
|
|
257
|
+
|
|
235
258
|
If a selected result exceeds its budget, long explanatory strings compact
|
|
236
259
|
first, followed by deterministic root-row reduction that retains at least one
|
|
237
260
|
useful row and reports `budget_row_compaction`. Only a result whose minimum
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
The extension settings contract is tracked by
|
|
4
4
|
[pm-wtqltn](../.agents/pm/issues/pm-wtqltn.toon). Full-item JSON annotation
|
|
5
5
|
integrity is tracked by [pm-2589e6](../.agents/pm/issues/pm-2589e6.toon).
|
|
6
|
+
Canonical previews are tracked by [pm-2sef82](../.agents/pm/features/pm-2sef82.toon).
|
|
6
7
|
|
|
7
8
|
## Extension settings
|
|
8
9
|
|
|
@@ -36,10 +37,44 @@ the same operation ID can then be used for the real mutation. A normal return
|
|
|
36
37
|
also reports `changed` and `dry_run`. Invalid results fail before writing, and
|
|
37
38
|
a history-append failure restores the previous settings bytes. The callback
|
|
38
39
|
must derive its complete next settings object from the locked `current` value.
|
|
40
|
+
The callback receives normalized inline settings with defaults and preset knobs
|
|
41
|
+
even when the source file is sparse. Returning that tree unchanged retains the
|
|
42
|
+
original source bytes, including unknown fields, without creating an audit event.
|
|
43
|
+
Changed writes apply known-setting changes to the captured source through the
|
|
44
|
+
standard serializer, preserving sparse omissions and unrecognized fields in
|
|
45
|
+
unchanged containers for forward compatibility. Those fields remain outside the
|
|
46
|
+
typed callback and canonical preview. Replacing an array replaces its complete
|
|
47
|
+
contents, as in normal settings writes. Present legacy values are canonicalized
|
|
48
|
+
on a changed write; an identity no-op still retains the original bytes.
|
|
49
|
+
The host also validates the final serialized bytes before committing, so a
|
|
50
|
+
proposal that changes while being serialized cannot persist invalid settings.
|
|
39
51
|
The host applies the standard settings serializer, including legacy format
|
|
40
52
|
coercion and collection-name sanitization, and runs active `onWrite` hooks
|
|
41
53
|
after a changed write.
|
|
42
54
|
|
|
55
|
+
Request `includePreview: true` to receive an optional `preview` settings tree
|
|
56
|
+
alongside the receipt. The host resolves it from the exact serialized bytes
|
|
57
|
+
inside the audit lock, using the same defaults and governance presets as normal
|
|
58
|
+
settings reads. A named `minimal` preset therefore reports ownership `none`
|
|
59
|
+
even if the callback proposed `strict`. Custom presets retain their configured
|
|
60
|
+
knobs. Legacy formats and collection names reflect their canonical persisted
|
|
61
|
+
values. This tree describes inline settings before optional file-backed schema
|
|
62
|
+
overlays; it does not load or create those files.
|
|
63
|
+
|
|
64
|
+
Use `dryRun: true, includePreview: true` to inspect the result before applying
|
|
65
|
+
the same operation. A fresh no-op also includes its canonical tree. An idempotent
|
|
66
|
+
replay omits `preview`: the original callback is not re-executed, and later
|
|
67
|
+
settings changes cannot reconstruct its historical proposal. Receipts remain
|
|
68
|
+
three booleans when the option is absent. Direct SDK dry runs read configuration
|
|
69
|
+
without executing read hooks, scaffolding optional schemas, or populating the
|
|
70
|
+
hydrated settings cache. Mutation callbacks should only derive settings and
|
|
71
|
+
avoid external side effects.
|
|
72
|
+
|
|
73
|
+
For an extension that requires previews, set its manifest `pm_min_version` to
|
|
74
|
+
a published host release containing this option. Check for `preview` on a fresh
|
|
75
|
+
dry-run operation before applying settings, while allowing replay receipts to
|
|
76
|
+
omit it as described above.
|
|
77
|
+
|
|
43
78
|
## Full-item JSON updates
|
|
44
79
|
|
|
45
80
|
`pm update <id> --stdin-json` accepts a full item read document. New comments,
|
package/docs/TESTING.md
CHANGED
|
@@ -288,6 +288,8 @@ control and fails if `pm eval --fail-under` stops returning a non-zero exit.
|
|
|
288
288
|
Refresh the baseline only with `pnpm quality:retrieval-eval:update` after
|
|
289
289
|
reviewing query-level ranking changes.
|
|
290
290
|
|
|
291
|
+
Development tools must also pass the [development dependency security gate](DEVELOPMENT_DEPENDENCY_SECURITY.md), including the full audit and installed bundle integrity policy.
|
|
292
|
+
|
|
291
293
|
## Context Quality Evaluation
|
|
292
294
|
|
|
293
295
|
The required context relevance gate proves that `pm context` and `pm next`
|
|
@@ -545,11 +547,44 @@ pm test <item-id> --run --workspace-context snapshot --override-linked-workspace
|
|
|
545
547
|
declaration. Use it only for commands that do not require checkout files.
|
|
546
548
|
- `snapshot` copies the workspace into the linked-test sandbox, runs from that
|
|
547
549
|
copy, and binds its `.agents/pm` path to the selected temporary tracker.
|
|
548
|
-
`.git`, `.agents`,
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
550
|
+
`.git`, `.agents`, coverage output, and common cache directories are excluded
|
|
551
|
+
at every directory depth, with reserved names matched case-insensitively for
|
|
552
|
+
portable admission. Each existing root or nested `node_modules`
|
|
553
|
+
directory is linked at its original relative path, including installations
|
|
554
|
+
already represented by directory symlinks. This preserves independent
|
|
555
|
+
monorepo dependency versions without copying dependency trees. Dependency
|
|
556
|
+
aliases into excluded trees or included workspace source are refused. Internal
|
|
557
|
+
shared targets must remain within admitted `node_modules` subtrees; external
|
|
558
|
+
installations must be disjoint from the source workspace, rather than
|
|
559
|
+
containing it. They remain available even when an external ancestor shares an
|
|
560
|
+
excluded directory name.
|
|
561
|
+
Links are read-only **by convention**; they do not prevent a trusted command
|
|
562
|
+
from modifying the original installation. Use an independent installation
|
|
563
|
+
when testing package-manager operations or dependency writes. Built output
|
|
564
|
+
remains available so linked commands such as `node dist/cli.js` keep working.
|
|
565
|
+
The source workspace root is resolved before copying. Ordinary file and
|
|
566
|
+
directory symlinks into included workspace source are rebased into the copy,
|
|
567
|
+
including dangling file aliases; writes through those aliases stay in the
|
|
568
|
+
disposable snapshot. Targets are canonicalized through their nearest existing
|
|
569
|
+
ancestor, so absolute aliases through another workspace path spelling and
|
|
570
|
+
missing target suffixes retain the same isolation on supported platforms.
|
|
571
|
+
Source aliases into unadmitted external directories or excluded tracker/build
|
|
572
|
+
trees fail before the linked command runs. An alias into an admitted shared
|
|
573
|
+
dependency namespace retains the dependency-write convention above, including
|
|
574
|
+
packages linked within that installation. Source and snapshot destinations
|
|
575
|
+
must be physically disjoint; overlapping roots fail before copying with a
|
|
576
|
+
diagnostic directing the caller to a temporary root outside the checkout.
|
|
577
|
+
|
|
578
|
+
Snapshot target probes treat only `ENOENT` as absence and propagate other
|
|
579
|
+
filesystem failures. They use explicit error handling so Node 22 and older
|
|
580
|
+
Node 24 releases retain the same dangling-link behavior; the async `stat`
|
|
581
|
+
`throwIfNoEntry` option was added in
|
|
582
|
+
[Node 24.15](https://nodejs.org/download/release/v24.20.0/docs/api/fs.html#fspromisesstatpath-options).
|
|
583
|
+
The real filesystem and CLI snapshot suite runs in the required Node 22
|
|
584
|
+
telemetry regression job and native Windows regression job before merge.
|
|
585
|
+
|
|
586
|
+
The real-filesystem regression for this contract is tracked by
|
|
587
|
+
[pm-5iwfkj](../.agents/pm/issues/pm-5iwfkj.toon).
|
|
553
588
|
|
|
554
589
|
Every result reports the requested/effective workspace mode, working
|
|
555
590
|
directory, exposed source root, and trust decision. Recorded `test_runs` retain
|