@unbrained/pm-cli 2026.10.20 → 2026.10.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +25 -0
- package/dist/cli/error-guidance.d.ts +8 -0
- package/dist/cli/error-guidance.js +2 -2
- package/dist/cli/main.js +1 -1
- package/dist/cli/register-list-query.js +2 -2
- package/dist/cli/register-operations.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/{chunk-QMZ73FCW.js → chunk-2B5HAZFK.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-4D25HF3V.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-QETMESEB.js → chunk-4OYU5OXQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YTHI5DTH.js → chunk-5PZ7JNMI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TZU6U5ZE.js → chunk-C6SAXKBO.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-DIKQ2AL5.js +2 -0
- package/dist/cli-bundle/chunks/chunk-DIR3YEFD.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-KU4Q3MSI.js → chunk-DJQVNDXO.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-DR6DUBTU.js +30 -0
- package/dist/cli-bundle/chunks/{chunk-YT2Z3JPC.js → chunk-EMGMLKRV.js} +47 -47
- package/dist/cli-bundle/chunks/{chunk-YECCKB4E.js → chunk-GWIGZDRS.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-IB7UB5TE.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-PNPE2OVJ.js → chunk-KBSVPUFD.js} +46 -45
- package/dist/cli-bundle/chunks/{chunk-7ZOIZ2AZ.js → chunk-MOC5BJHW.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-MZZIAC6S.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-LS55VKRK.js → chunk-NNB65OOO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YW6SIKYP.js → chunk-QPV6UD55.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GHJOMRSF.js → chunk-TMXWWOPJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VLJLWZBO.js → chunk-V3XONSVC.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-V5GJTXYW.js +126 -0
- package/dist/cli-bundle/chunks/{chunk-ZA3XXHEE.js → chunk-ZNKFMIVA.js} +2 -2
- package/dist/cli-bundle/chunks/{indexed-receipt-blobs-U7VGKIYC.js → indexed-receipt-blobs-65XXSPPR.js} +2 -2
- package/dist/cli-bundle/chunks/mutation-admission-FNWOVJLN.js +2 -0
- package/dist/cli-bundle/chunks/{register-list-query-NNDV6F6I.js → register-list-query-6PT5Y2EZ.js} +5 -5
- package/dist/cli-bundle/chunks/{register-mutation-3GCBSNQS.js → register-mutation-TAIQV46L.js} +4 -4
- package/dist/cli-bundle/chunks/register-operations-ONIRO22G.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-OQMUZBJV.js +2 -0
- package/dist/cli-bundle/chunks/{settlement-hook-CLRGA6O7.js → settlement-hook-UVFYSBMU.js} +2 -2
- package/dist/cli-bundle/chunks/stage-FCPVFO3B.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-32ZKLRWM.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-HUZAXSIJ.js → chunk-3LWH2RJC.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZGEK57KD.js → chunk-44353U27.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-4HJVAUFX.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-VLSER3XW.js → chunk-5IMM7GOF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-J6EYUGAR.js → chunk-6QSZHRM7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-F7FD25TG.js → chunk-7UD7XTOE.js} +10 -10
- package/dist/cli-bundle/focused-chunks/{chunk-KKRFSI2N.js → chunk-CUWNNU4N.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-E2S42XCT.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-GHQVM6K6.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-GRSQGMRR.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-NI6NS44Q.js → chunk-HNCMYF2W.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-37SU7BZI.js → chunk-IAGFXKMZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-JI3RXXRN.js +78 -0
- package/dist/cli-bundle/focused-chunks/chunk-JMZPZQHR.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-E4II2D2B.js → chunk-KVYUQS6Y.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-O3M6YWVL.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-P5D7MHDS.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-PDOWLRHC.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-SVOOGGAK.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-T27TLSEU.js +65 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LJPUJ2KK.js → chunk-VD64TPXI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-GYHZ7W6O.js → chunk-VE6MTRH5.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-XE7P7N5X.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-YIWDX6KO.js +91 -0
- package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-H2G6CCGO.js → indexed-receipt-blobs-CRP6HAZY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/mutation-admission-KM57KDDF.js +2 -0
- package/dist/cli-bundle/focused-chunks/{settlement-hook-5SNBBT7C.js → settlement-hook-MNCHFCAX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/stage-UJYGWNZ7.js +2 -0
- package/dist/cli-bundle/main.js +21 -21
- 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 +23 -23
- 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 +58 -57
- 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 +2 -2
- package/dist/core/item/actionability.js +1 -1
- package/dist/core/lock/lock-gc.d.ts +12 -5
- package/dist/core/lock/lock-gc.js +1 -1
- package/dist/core/lock/lock-owner.d.ts +33 -0
- package/dist/core/lock/lock-owner.js +2 -0
- package/dist/core/lock/lock.d.ts +11 -22
- package/dist/core/lock/lock.js +4 -3
- package/dist/core/output/output.js +3 -3
- package/dist/core/shared/errors.d.ts +2 -0
- package/dist/core/shared/errors.js +1 -1
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
- package/dist/sdk/dependencies.js +1 -1
- package/dist/sdk/extension-command-context.js +2 -2
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/governance/assurance-action.js +1 -1
- package/dist/sdk/governance/assurance.js +1 -1
- package/dist/sdk/governance/health.js +2 -2
- package/dist/sdk/output/list-envelope.js +1 -1
- package/dist/sdk/pagination.d.ts +3 -3
- package/dist/sdk/pagination.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/context.js +2 -2
- package/dist/sdk/query/list.d.ts +2 -0
- package/dist/sdk/query/list.js +1 -1
- package/dist/sdk/query/projection-contracts.d.ts +1 -1
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/relationship-context.js +1 -1
- package/dist/sdk/runtime/mutation-admission.d.ts +2 -0
- package/dist/sdk/runtime/mutation-admission.js +2 -0
- package/dist/sdk/runtime-input.d.ts +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/test/execution.d.ts +1 -0
- package/dist/sdk/test/execution.js +2 -2
- package/docs/AGENT_RUNTIME_PRIMITIVES.md +9 -0
- package/docs/ASSURANCE.md +17 -2
- package/docs/COMMANDS.md +17 -3
- package/docs/CONFIGURATION.md +29 -0
- package/docs/CONTEXT_RELEVANCE.md +15 -0
- package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +26 -3
- package/docs/SDK.md +67 -0
- package/docs/TESTING.md +18 -0
- package/docs/agent-task-token-baseline.json +1 -1
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-2GGGOD7P.js +0 -30
- package/dist/cli-bundle/chunks/chunk-7NHA5K77.js +0 -126
- package/dist/cli-bundle/chunks/chunk-PTL3TBT6.js +0 -20
- package/dist/cli-bundle/chunks/chunk-QQYCB2LO.js +0 -2
- package/dist/cli-bundle/chunks/register-operations-YKDGNKUL.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-AOUZQQWB.js +0 -2
- package/dist/cli-bundle/chunks/stage-6QXYRMSU.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-6IU7BESB.js +0 -65
- package/dist/cli-bundle/focused-chunks/chunk-AS3MOBO3.js +0 -25
- package/dist/cli-bundle/focused-chunks/chunk-AW35RDKA.js +0 -78
- package/dist/cli-bundle/focused-chunks/chunk-H5Q2HUU6.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-JEXZEIAX.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-KDGUIIRU.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-MQ42BFGX.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-VAYS754X.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-VS6VTWTZ.js +0 -8
- package/dist/cli-bundle/focused-chunks/stage-EMTISXR7.js +0 -2
package/docs/SDK.md
CHANGED
|
@@ -164,6 +164,19 @@ snapshot. Breaking SDK changes require a date-based release and matching
|
|
|
164
164
|
package compatibility bounds or migration guidance. Never refresh the snapshot
|
|
165
165
|
merely to silence an unexplained diff.
|
|
166
166
|
|
|
167
|
+
The mutation-admission update adds optional `changed?: false` to
|
|
168
|
+
`PmCliErrorContext`. The conservative signature gate records this interface
|
|
169
|
+
addition with a breaking acknowledgement; existing context objects and error
|
|
170
|
+
codes remain valid. Consumers need no data migration or new dependency bounds.
|
|
171
|
+
When adopting this update, read `error.context?.changed === false` as proof of a
|
|
172
|
+
preflight refusal. An absent property gives no guarantee about writes; do not
|
|
173
|
+
coerce it to `false` or treat an executed failure as safe to retry. Consumers
|
|
174
|
+
that enumerate error keys should accept the additional optional property.
|
|
175
|
+
JavaScript create/update callers must also remove misspelled keys and move
|
|
176
|
+
mutation fields into `options` on generic `run` calls: these requests now fail
|
|
177
|
+
instead of silently dropping fields. See [Robust Automation Pattern](#robust-automation-pattern)
|
|
178
|
+
for supported aliases and runtime schema discovery.
|
|
179
|
+
|
|
167
180
|
The snapshot also records an aggregate-completeness census. Every public symbol
|
|
168
181
|
from every non-testing SDK subpath must be available from
|
|
169
182
|
`@unbrained/pm-cli/sdk`; deliberate test-only exclusions require a named reason.
|
|
@@ -210,6 +223,36 @@ follow the migration guidance for changed unions or error codes. The shared
|
|
|
210
223
|
[primitive inventory](SDK_PRIMITIVE_INVENTORY.md) records CLI/MCP ownership:
|
|
211
224
|
presentation modules import the SDK and have zero private-core edges.
|
|
212
225
|
|
|
226
|
+
### Lock ownership and recovery
|
|
227
|
+
|
|
228
|
+
Use the public `acquireLock` primitive when a package must serialize its own
|
|
229
|
+
state changes. Always await its release in `finally`:
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
import { acquireLock } from "@unbrained/pm-cli/sdk";
|
|
233
|
+
|
|
234
|
+
async function writePackageState(pmRoot: string, write: () => Promise<void>) {
|
|
235
|
+
const release = await acquireLock(pmRoot, "example.state", 3600, "example-package", false, true, 30_000);
|
|
236
|
+
try {
|
|
237
|
+
await write();
|
|
238
|
+
} finally {
|
|
239
|
+
await release();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
The built-in provider automatically recovers a provably dead original Linux
|
|
245
|
+
owner before TTL. Unknown owners retain the existing lease policy. Conflicts
|
|
246
|
+
expose the lock identity, observed process state and wait advice through
|
|
247
|
+
`PmCliError.context`. Force does not bypass an unexpired lock whose owner is
|
|
248
|
+
alive or unverifiable. TTL expiry permits removal regardless of owner liveness.
|
|
249
|
+
An expired holder can continue writing, so mutual exclusion beyond TTL is not
|
|
250
|
+
guaranteed. Choose a TTL longer than the critical section, or fence protected
|
|
251
|
+
resource writes at the caller. See
|
|
252
|
+
[Configuration](CONFIGURATION.md#common-settings) for host identity, local
|
|
253
|
+
recovery audit receipts and `PM_LOCK_WAIT_MS` precedence. Extension lock
|
|
254
|
+
providers retain responsibility for their own ownership and recovery policy.
|
|
255
|
+
|
|
213
256
|
### Portable merge settlement
|
|
214
257
|
|
|
215
258
|
Tracked by [pm-gh1475](../.agents/pm/issues/pm-gh1475.toon) and
|
|
@@ -1659,6 +1702,16 @@ contract compact and fail-safe for newly added flags. Use
|
|
|
1659
1702
|
package-authored query surface. `encodeQueryCursor`, `decodeQueryCursorState`, and
|
|
1660
1703
|
`paginateQueryRows` remain the transport-neutral continuation primitives.
|
|
1661
1704
|
|
|
1705
|
+
`decodeQueryCursorEnvelope`, `decodeQueryCursorState`, and
|
|
1706
|
+
`resolveQueryCursorStart` accept an optional final `cursorFlag` argument
|
|
1707
|
+
(`"--after"`, the default, or `"--cursor"`) so package-authored queries can
|
|
1708
|
+
name their actual producer flag in refusal guidance. Relationship packets use
|
|
1709
|
+
`--cursor`. The deps action additionally returns a scoped executable
|
|
1710
|
+
`recovery.suggested_retry_args` for a fresh query after a malformed or mismatched
|
|
1711
|
+
cursor; it preserves traversal and output policy while removing the rejected
|
|
1712
|
+
producer cursor and stale output continuation. See
|
|
1713
|
+
[pm-ohgg1b](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ohgg1b.toon).
|
|
1714
|
+
|
|
1662
1715
|
At the storage boundary, the metadata cache maintains a rebuildable SQLite
|
|
1663
1716
|
query projection under the same source cursor and cross-process writer lock as
|
|
1664
1717
|
the JSON metadata/body/collection tiers. Bounded default-order light `list`
|
|
@@ -3289,6 +3342,20 @@ history and retains mutation governance.
|
|
|
3289
3342
|
|
|
3290
3343
|
## Robust Automation Pattern
|
|
3291
3344
|
|
|
3345
|
+
Native `PmClient.create`, `update`, and their generic `run` routes reject unknown
|
|
3346
|
+
option names at runtime, including JavaScript callers and injected extension
|
|
3347
|
+
clients ([pm-fl3phm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-fl3phm.toon),
|
|
3348
|
+
a repository-only tracker record excluded from npm). A typo such as
|
|
3349
|
+
`priorty` refuses the whole request with `PmCliError.code =
|
|
3350
|
+
"invalid_argument_value"`, `context.reason = "unknown_mutation_option"`, a
|
|
3351
|
+
nearest-name hint when available, and `context.changed = false`. Put mutation
|
|
3352
|
+
fields under `options` when using `run`; existing declared top-level aliases
|
|
3353
|
+
remain accepted. Workspace schema option identities remain available through
|
|
3354
|
+
`run`, while typed convenience methods support extension item fields through `field`.
|
|
3355
|
+
MCP retains its existing transport-specific admission contract. The no-change
|
|
3356
|
+
receipt applies to these preflight refusals; an executed operation's outcome
|
|
3357
|
+
and evidence must be assessed separately.
|
|
3358
|
+
|
|
3292
3359
|
1. Read `PM_TOOL_ACTIONS` or `PM_TOOL_PARAMETERS_SCHEMA` for baseline static validation.
|
|
3293
3360
|
2. Load runtime contracts with `getContracts(pmRoot, { runtimeOnly: true })` or run `pm contracts --runtime-only --json` inside the target project.
|
|
3294
3361
|
3. Verify the action appears in `actions` and has `action_availability[].invocable: true`.
|
package/docs/TESTING.md
CHANGED
|
@@ -56,6 +56,12 @@ policy-check budget. This allocation is tracked by
|
|
|
56
56
|
[pm-a3c6g4](../.agents/pm/tasks/pm-a3c6g4.toon); broader runner qualification
|
|
57
57
|
remains with [pm-bj7rq0](../.agents/pm/issues/pm-bj7rq0.toon).
|
|
58
58
|
|
|
59
|
+
The same serial cohort runs the ten-thousand-item aggregation, cold governance
|
|
60
|
+
read, and surface-replication fixture files after parallel contracts
|
|
61
|
+
([pm-ckb8w5](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ckb8w5.toon),
|
|
62
|
+
a repository-only tracker record excluded from npm). Their original input
|
|
63
|
+
populations, assertions, per-test deadlines and retry policy remain in force.
|
|
64
|
+
|
|
59
65
|
`node scripts/run-tests.mjs` wraps Vitest in temporary tracker roots, disables
|
|
60
66
|
external Sentry delivery for the build, test workers, and their nested CLI
|
|
61
67
|
children, then cleans the roots up. Instrumentation tests can still exercise
|
|
@@ -567,6 +573,18 @@ the descriptor registry does not yet know about.
|
|
|
567
573
|
For in-place metadata corrections and context admission/refusal semantics, see
|
|
568
574
|
[Linked-test edits](LINKED_TEST_EDITS.md).
|
|
569
575
|
|
|
576
|
+
Run-option admission is tracked by
|
|
577
|
+
[pm-hdvxqg](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-hdvxqg.toon)
|
|
578
|
+
(a repository-only tracker record excluded from npm).
|
|
579
|
+
`pm test` requires `--run` for `--timeout`, `--progress`, execution context,
|
|
580
|
+
environment directives, and run selectors. Registration-only calls refuse these
|
|
581
|
+
options before saving links. Combined edits and execution validate the effective
|
|
582
|
+
post-edit selection under the item lock before persistence, including out-of-range
|
|
583
|
+
indexes and unmatched selectors. These admission errors carry `changed: false`
|
|
584
|
+
in structured output. A valid request that executes a failing child can still
|
|
585
|
+
save its accepted edits and execution evidence; inspect its run results before
|
|
586
|
+
retrying.
|
|
587
|
+
|
|
570
588
|
Add tests to the item that owns the work:
|
|
571
589
|
|
|
572
590
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":5,"transcript_version":2,"transcript_digest":"sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78","estimator":"ceil(utf8_bytes / 4)","comparison_scope":"plan_recovery_tracker_root_canonicalized","measurement_scope":"output_before_token_accounting","published_with_release":true,"orientation":{"canonical_task_id":"orientation-context-intent","required_capabilities":["actionable_work","active_ownership","workspace_state"],"measured_winner_tokens":1087,"protocols":[{"task_id":"orientation-context-intent","command_count":1,"estimated_tokens":1087,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"context","field_path":"hierarchy"}],"active_ownership":[{"step_id":"context","field_path":"activity"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-operating-rules","command_count":4,"estimated_tokens":
|
|
1
|
+
{"version":5,"transcript_version":2,"transcript_digest":"sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78","estimator":"ceil(utf8_bytes / 4)","comparison_scope":"plan_recovery_tracker_root_canonicalized","measurement_scope":"output_before_token_accounting","published_with_release":true,"orientation":{"canonical_task_id":"orientation-context-intent","required_capabilities":["actionable_work","active_ownership","workspace_state"],"measured_winner_tokens":1087,"protocols":[{"task_id":"orientation-context-intent","command_count":1,"estimated_tokens":1087,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"context","field_path":"hierarchy"}],"active_ownership":[{"step_id":"context","field_path":"activity"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-operating-rules","command_count":4,"estimated_tokens":2139,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"open","field_path":"items"}],"active_ownership":[{"step_id":"in-progress","field_path":"items"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-contracts-next","command_count":2,"estimated_tokens":5203,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"next","field_path":"recommended.id"}],"active_ownership":[{"step_id":"next","field_path":"held_by_others"}],"workspace_state":[{"step_id":"next","field_path":"summary.in_progress"}]}}]},"tasks":[{"id":"orientation-context-intent","max_estimated_tokens":1087,"steps":[{"id":"context","max_estimated_tokens":1087,"accounting_mode":"self_reported"}]},{"id":"orientation-contracts-next","max_estimated_tokens":5203,"steps":[{"id":"contracts","max_estimated_tokens":4481,"accounting_mode":"self_reported"},{"id":"next","max_estimated_tokens":722,"accounting_mode":"self_reported"}]},{"id":"orientation-operating-rules","max_estimated_tokens":2139,"steps":[{"id":"context","max_estimated_tokens":1087,"accounting_mode":"self_reported"},{"id":"search","max_estimated_tokens":164,"accounting_mode":"self_reported"},{"id":"open","max_estimated_tokens":712,"accounting_mode":"self_reported"},{"id":"in-progress","max_estimated_tokens":176,"accounting_mode":"self_reported"}]},{"id":"context-bootstrap","max_estimated_tokens":2077,"steps":[{"id":"triage","max_estimated_tokens":619,"accounting_mode":"self_reported"},{"id":"orient","max_estimated_tokens":1087,"accounting_mode":"self_reported"},{"id":"inspect","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"closed-domain-recovery","max_estimated_tokens":630,"steps":[{"id":"refuse-intent","max_estimated_tokens":259,"accounting_mode":"self_reported"},{"id":"retry-intent","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"unknown-option-recovery","max_estimated_tokens":596,"steps":[{"id":"refuse-option","max_estimated_tokens":433,"accounting_mode":"self_reported"},{"id":"retry-option","max_estimated_tokens":163,"accounting_mode":"self_reported"}]},{"id":"lifecycle-mutation","max_estimated_tokens":812,"steps":[{"id":"create","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"inspect-open","max_estimated_tokens":363,"accounting_mode":"self_reported"},{"id":"close","max_estimated_tokens":31,"accounting_mode":"self_reported"},{"id":"inspect-closed","max_estimated_tokens":398,"accounting_mode":"self_reported"}]},{"id":"bulk-effect-outcomes","max_estimated_tokens":326,"steps":[{"id":"create-bulk-target","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"partial-effect","max_estimated_tokens":174,"accounting_mode":"self_reported"},{"id":"no-effect","max_estimated_tokens":132,"accounting_mode":"self_reported"}]},{"id":"plan-execution-mutations","max_estimated_tokens":806,"steps":[{"id":"create-plan","max_estimated_tokens":21,"accounting_mode":"self_reported"},{"id":"add-step","max_estimated_tokens":254,"accounting_mode":"self_reported"},{"id":"complete-step","max_estimated_tokens":253,"accounting_mode":"self_reported"},{"id":"inspect-plan","max_estimated_tokens":278,"accounting_mode":"self_reported"}]}],"composite_max_estimated_tokens":13676}
|
package/marketplace.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"pm","owner":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"description":"Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.","version":"2026.10.
|
|
1
|
+
{"name":"pm","owner":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"description":"Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.","version":"2026.10.21","plugins":[{"name":"pm-claude","source":"./plugins/pm-claude","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 workflow skills with slash invocations, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.","version":"2026.10.21","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"],"category":"productivity"}]}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-beads","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-beads","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for importing Beads JSONL records.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-beads"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","beads"],"pm":{"aliases":["beads"],"extensions":["extensions/beads"],"catalog":{"display_name":"Beads Import","category":"migration","summary":"Import Beads JSONL records into pm while preserving source IDs.","tags":["migration","beads","import"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-beads","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-calendar","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-calendar","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for calendar and agenda views.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-calendar"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","calendar","agenda"],"pm":{"aliases":["calendar"],"extensions":["extensions/calendar"],"catalog":{"display_name":"Calendar Views","category":"workflow","summary":"Show agenda, day, week, and month views for deadlines, reminders, and scheduled events.","tags":["calendar","agenda","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-calendar","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-command-kit","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-command-kit","version":"2026.10.21","private":true,"type":"module","description":"First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-command-kit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","commands","exemplar"],"pm":{"aliases":["command-kit"],"extensions":["extensions/command-kit"],"catalog":{"display_name":"Command Kit Exemplar","category":"sdk","summary":"Copy-paste-able exemplar for registerCommand, registerFlags, and registerParser.","tags":["sdk","commands","parser","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-command-kit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-digital-twin","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-digital-twin","version":"2026.10.21","private":true,"type":"module","description":"Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-digital-twin"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","digital-twin","event-sourcing","temporal-graph","exemplar"],"pm":{"aliases":["digital-twin","twin"],"extensions":["extensions/digital-twin"],"catalog":{"display_name":"Digital Twin SDK Exemplar","category":"sdk","summary":"Temporal facility graph proving event replay, point-in-time state, invariants, federation, checkpoints, and compact exports through public SDK contracts.","tags":["sdk","digital-twin","event-sourcing","graph","offline-first","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-digital-twin/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-governance-audit","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-governance-audit","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for governance audit and normalization workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-governance-audit"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","governance","audit","normalize","hooks"],"pm":{"aliases":["governance-audit","audit"],"extensions":["extensions/governance-audit"],"catalog":{"display_name":"Governance Audit","category":"governance","summary":"Run dedupe audits, comments audits, and normalize sweeps as package-owned workflows.","tags":["governance","audit","normalize","hooks"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-governance-audit","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-guide-shell","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-guide-shell","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for guide and shell completion workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-guide-shell"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","guide","completion","shell"],"pm":{"aliases":["guide-shell"],"extensions":["extensions/guide-shell"],"catalog":{"display_name":"Guide + Shell UX","category":"workflow","summary":"Restore guide documentation and shell completion commands as package-owned UX surfaces.","tags":["guide","completion","shell"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-guide-shell","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-kanban","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-kanban","version":"2026.10.21","private":true,"type":"module","description":"First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-kanban"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","sdk","profile","archetype","kanban","exemplar"],"pm":{"aliases":["kanban"],"extensions":["extensions/kanban"],"catalog":{"display_name":"Kanban Archetype","category":"sdk","summary":"Installable Kanban continuous-flow archetype: Card item type, flow fields, and a ProjectProfileDefinition built on public SDK primitives.","tags":["sdk","profile","archetype","kanban","schema","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-kanban","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-lifecycle-hooks","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-lifecycle-hooks","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package demonstrating safe lifecycle hook registration.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-lifecycle-hooks"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","hooks","lifecycle","sdk"],"pm":{"aliases":["lifecycle-hooks"],"extensions":["extensions/lifecycle-hooks"],"catalog":{"display_name":"Lifecycle Hooks","category":"sdk","summary":"Default-inert lifecycle hook exemplar for package authors.","tags":["hooks","lifecycle","sdk"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-lifecycle-hooks","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-linked-test-adapters","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-linked-test-adapters","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for optional linked-test run management adapters and reporters.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-linked-test-adapters"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","linked-tests","background-runs","test-runs"],"pm":{"aliases":["linked-test-adapters"],"extensions":["extensions/linked-test-adapters"],"catalog":{"display_name":"Linked Test Adapters","category":"testing","summary":"Restore optional linked-test run management/reporting command surfaces.","tags":["tests","linked-tests","background","reporting"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-linked-test-adapters","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-search-advanced","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-search-advanced","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for semantic, hybrid, and reindex search workflows.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-search-advanced"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","search","reindex","semantic","hybrid"],"pm":{"aliases":["search-advanced"],"extensions":["extensions/search-advanced"],"catalog":{"display_name":"Advanced Search","category":"search","summary":"Enable semantic/hybrid search modes and reindex workflows.","tags":["search","semantic","hybrid","reindex"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-search-advanced","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-templates","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-templates","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for reusable create templates.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-templates"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","templates"],"pm":{"aliases":["templates"],"extensions":["extensions/templates"],"catalog":{"display_name":"Create Templates","category":"workflow","summary":"Save, list, show, and apply reusable pm create option templates.","tags":["templates","create","workflow"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-templates","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-todos","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-todos","version":"2026.10.21","private":true,"type":"module","description":"First-party pm package for Todo markdown import and export.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-todos"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","project-management","todos"],"pm":{"aliases":["todos"],"extensions":["extensions/todos"],"catalog":{"display_name":"Todos Import/Export","category":"migration","summary":"Import and export Todo markdown tasks through pm package commands.","tags":["migration","todos","import","export"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-todos","report":"https://github.com/unbraind/pm-cli/issues"}},"docs":["README.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-vcs-sdk-exemplar","version":"2026.10.
|
|
1
|
+
{"name":"@unbrained/pm-vcs-sdk-exemplar","version":"2026.10.21","private":true,"type":"module","description":"Beyond-PM exemplar: a VCS-style changeset workflow built entirely on public pm SDK and extension primitives.","homepage":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":{"type":"git","url":"git+https://github.com/unbraind/pm-cli.git","directory":"packages/pm-vcs"},"bugs":{"url":"https://github.com/unbraind/pm-cli/issues"},"keywords":["pm-package","sdk","vcs","event-sourcing","exemplar"],"pm":{"aliases":["vcs-exemplar"],"extensions":["extensions/vcs"],"catalog":{"display_name":"VCS SDK Exemplar","category":"sdk","summary":"Non-PM changeset/ref workflow proving custom schema, domain commands, hooks, history replay, and typed relationship events through public SDK contracts.","tags":["sdk","vcs","event-sourcing","graph","exemplar"],"links":{"docs":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs#readme","repository":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs","report":"https://github.com/unbraind/pm-cli/tree/main/packages/pm-vcs/GAP_REPORT.md"}},"docs":["README.md","GAP_REPORT.md"],"examples":["README.md"]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://json.schemastore.org/claude-code-plugin-manifest.json","name":"pm-claude","displayName":"pm CLI","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.","version":"2026.10.
|
|
1
|
+
{"$schema":"https://json.schemastore.org/claude-code-plugin-manifest.json","name":"pm-claude","displayName":"pm CLI","description":"Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.","version":"2026.10.21","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","project-management","mcp","tasks","agents","workflows","git-native","task-tracker","ai"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.
|
|
1
|
+
{"name":"pm-claude-runtime","private":true,"type":"module","version":"2026.10.21","dependencies":{"@unbrained/pm-cli":"2026.10.21"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"pm-codex","version":"2026.10.
|
|
1
|
+
{"name":"pm-codex","version":"2026.10.21","description":"Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents","tasks","workflows"],"skills":"./skills/","mcpServers":"./.mcp.json","interface":{"displayName":"pm CLI","shortDescription":"Native pm tracker tools and agent workflows","longDescription":"Use pm CLI from Codex through native MCP tools instead of shelling out to the pm command. The plugin bundles tracker operations, skills, command prompts, and subagent workflow guidance for planning, execution, validation, release, and audit work.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm CLI to orient, claim, track, verify, and close this repository task"],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","screenshots":[],"brandColor":"#2563EB"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.
|
|
1
|
+
{"name":"pm-codex-runtime","private":true,"type":"module","version":"2026.10.21","dependencies":{"@unbrained/pm-cli":"2026.10.21"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.
|
|
1
|
+
{"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","name":"pm-codex","version":"2026.10.21","description":"Repository-native project context workflows and a version-pinned pm MCP server for Codex.","author":{"name":"unbrained","url":"https://github.com/unbraind/pm-cli"},"homepage":"https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex","repository":"https://github.com/unbraind/pm-cli","license":"MIT","keywords":["pm-cli","codex","mcp","project-management","agents"],"extensions":{"com.openai":{"interface":{"displayName":"pm CLI","shortDescription":"Track project context with pm","longDescription":"Orient, plan, implement, verify, and hand off work with repository-native pm records and a bundled MCP server.","developerName":"unbrained","category":"Coding","capabilities":["Interactive","Read","Write"],"websiteURL":"https://github.com/unbraind/pm-cli","privacyPolicyURL":"https://github.com/unbraind/pm-cli/blob/main/SECURITY.md","termsOfServiceURL":"https://github.com/unbraind/pm-cli/blob/main/LICENSE","defaultPrompt":["Use pm to orient, track, verify, and hand off this repository task."],"composerIcon":"./assets/pm-cli-small.svg","logo":"./assets/pm-cli-small.svg","brandColor":"#2563EB"}}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@unbrained/pm-cli","version":"2026.10.20","lockfileVersion":3,"requires":true,"packages":{"":{"name":"@unbrained/pm-cli","version":"2026.10.20","dependencies":{"@sentry/node":"10.76.2","@toon-format/toon":"^4.4.0","commander":"^15.0.0","fast-json-patch":"^3.1.1","npm-package-arg":"^13.0.2","semver":"7.8.5","tar":"7.5.22","tinyglobby":"^0.2.17","yaml":"^2.9.1"},"peerDependencies":{"@types/node":"^22 || ^24 || ^26"},"peerDependenciesMeta":{"@types/node":{"optional":true}},"bin":{"pm-cli":"dist/cli.js","pm":"dist/cli.js","pm-mcp":"dist/mcp/server.js","pm-mcp-http":"dist/mcp/http-server.js"},"engines":{"node":">=22.18.0"}},"node_modules/@isaacs/fs-minipass":{"version":"4.0.1","resolved":"https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz","integrity":"sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==","engines":{"node":">=18.0.0"},"dependencies":{"minipass":"7.1.3"}},"node_modules/@opentelemetry/api":{"version":"1.9.1","resolved":"https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz","integrity":"sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==","engines":{"node":">=8.0.0"}},"node_modules/@opentelemetry/api-logs":{"version":"0.220.0","resolved":"https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz","integrity":"sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==","engines":{"node":">=8.0.0"},"dependencies":{"@opentelemetry/api":"1.9.1"}},"node_modules/@opentelemetry/core":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/core/-/core-2.12.0.tgz","integrity":"sha512-1HsSAuvT4/my0QrXWsyXFdWjKaPeCHsismKZgEEIb8NK13LP6DrMRlsUbvD/0F9mDWK3xDom9AMv3IscxgOnOQ==","peerDependencies":{"@opentelemetry/api":">=1.0.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/instrumentation":{"version":"0.220.0","resolved":"https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.220.0.tgz","integrity":"sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==","peerDependencies":{"@opentelemetry/api":"^1.3.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/api-logs":"0.220.0","import-in-the-middle":"3.5.2","require-in-the-middle":"8.0.1"}},"node_modules/@opentelemetry/resources":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.12.0.tgz","integrity":"sha512-+rSRoOdln6NhXTVcBdHSlZxJDNzwxadeweK2ltZO3tVtfp6aklABc06xclDk6ovRR+EiGgIcSbh/6NgjFhnb3A==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/sdk-trace":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.12.0.tgz","integrity":"sha512-ImVuRQ6faOsTi1Wna88s2avgrrf/iDgXPigIeynkUhjstMuoQUDOJXgkez2j1mlU4btjXcXBGa+q7qKFYR3GsA==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/resources":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/sdk-trace-base":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.12.0.tgz","integrity":"sha512-JOERgZCxRM06FEJ5kEWxlSRChah6MmXDx3KwCruqEv/iEyLkTokCSemf2y1w8oIHtfrr8EVTpzebq/31vn2Cpg==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/resources":"2.12.0","@opentelemetry/sdk-trace":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/semantic-conventions":{"version":"1.43.0","resolved":"https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz","integrity":"sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==","engines":{"node":">=14"}},"node_modules/@sentry/conventions":{"version":"0.16.0","resolved":"https://registry.npmjs.org/@sentry/conventions/-/conventions-0.16.0.tgz","integrity":"sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==","engines":{"node":">=14"}},"node_modules/@sentry/core":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/core/-/core-10.76.2.tgz","integrity":"sha512-vndrQalRiwYatTkjlLWvyf69KocXIb9TKJ4A9oiyWguL8PJYtqIRTlRe4OpkpjLrxS18fvRdV0jEm29c/9p3hQ==","engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0"}},"node_modules/@sentry/node":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/node/-/node-10.76.2.tgz","integrity":"sha512-LSwGGE/GceTbkDHRoQQr3lq/dpxxA6RdooBbuGTJ/S6BdqKX2kw2FdV7Se9eJzZJJJ5AxCZum37+ejYS7N2pJg==","engines":{"node":">=18"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/instrumentation":"0.220.0","@opentelemetry/sdk-trace-base":"2.12.0","@sentry/conventions":"0.16.0","@sentry/core":"10.76.2","@sentry/node-core":"10.76.2","@sentry/opentelemetry":"10.76.2","@sentry/server-utils":"10.76.2","import-in-the-middle":"3.5.2"}},"node_modules/@sentry/node-core":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/node-core/-/node-core-10.76.2.tgz","integrity":"sha512-TrgAc/SvU5kQfjw8pz6I8LLIUiblOSf9BPPNkTbS0Dzcqa4yQLVbmsbS3rvGT7ot64m9Vjzn327ZRy63MlI6/w==","peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/core":">=2.8.0 <3.0.0","@opentelemetry/exporter-trace-otlp-http":">=0.57.0 <1","@opentelemetry/instrumentation":">=0.57.1 <1","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.1.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/core":{"optional":true},"@opentelemetry/exporter-trace-otlp-http":{"optional":true},"@opentelemetry/instrumentation":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0","@sentry/core":"10.76.2","@sentry/opentelemetry":"10.76.2","import-in-the-middle":"3.5.2"},"optionalDependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/instrumentation":"0.220.0","@opentelemetry/sdk-trace-base":"2.12.0"}},"node_modules/@sentry/opentelemetry":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.76.2.tgz","integrity":"sha512-deqWrKJGaku3nhiZchg34z8W9v6kUwtzoQ4cmEq6CeT8/4X93X4YfeJgoh1dhbswFRpwor4pQ6kj0KttagKtfA==","peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/core":">=2.8.0 <3.0.0","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.1.0"},"engines":{"node":">=18"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/sdk-trace-base":"2.12.0","@sentry/conventions":"0.16.0","@sentry/core":"10.76.2"}},"node_modules/@sentry/server-utils":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/server-utils/-/server-utils-10.76.2.tgz","integrity":"sha512-wogj6Trj8fAu+aD7HbpvHEBlyANMOvvO9MP5NFJaiQbprLKugtCdE6rFTxDhofXvRo4nswL9m4Cvysg3k5KcvQ==","engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0","@sentry/core":"10.76.2"}},"node_modules/@toon-format/toon":{"version":"4.4.0","resolved":"https://registry.npmjs.org/@toon-format/toon/-/toon-4.4.0.tgz","integrity":"sha512-A6UcsVoWbNdhdLNhJbe6JpRlocmf/DZGG57fur3bd8oQtsjBaKWo2hHbOU2zTuy+byUmLIOyP1xJeitopCZzpQ=="},"node_modules/chownr":{"version":"3.0.0","resolved":"https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz","integrity":"sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==","engines":{"node":">=18"}},"node_modules/cjs-module-lexer":{"version":"2.3.0","resolved":"https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz","integrity":"sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ=="},"node_modules/commander":{"version":"15.0.0","resolved":"https://registry.npmjs.org/commander/-/commander-15.0.0.tgz","integrity":"sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==","engines":{"node":">=22.12.0"}},"node_modules/debug":{"version":"4.4.3","resolved":"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz","integrity":"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==","peerDependencies":{"supports-color":"*"},"peerDependenciesMeta":{"supports-color":{"optional":true}},"engines":{"node":">=6.0"},"dependencies":{"ms":"2.1.3"},"optionalDependencies":{"supports-color":"7.2.0"}},"node_modules/es-module-lexer":{"version":"3.0.3","resolved":"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-3.0.3.tgz","integrity":"sha512-yWGe1O/j+almnV4hOYrmZo8u58JdnmXEMneRQAYkWtqSiT86yoMIEKF4rpqEDj52tbYl3xceBD3DQIBwcsC9Pw=="},"node_modules/fast-json-patch":{"version":"3.1.1","resolved":"https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz","integrity":"sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="},"node_modules/fdir":{"version":"6.5.0","resolved":"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz","integrity":"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==","peerDependencies":{"picomatch":"^3 || ^4"},"peerDependenciesMeta":{"picomatch":{"optional":true}},"engines":{"node":">=12.0.0"},"optionalDependencies":{"picomatch":"4.0.7"}},"node_modules/has-flag":{"version":"4.0.0","resolved":"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz","integrity":"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==","engines":{"node":">=8"},"optional":true},"node_modules/hosted-git-info":{"version":"9.0.3","resolved":"https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz","integrity":"sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==","engines":{"node":"^20.17.0 || >=22.9.0"},"dependencies":{"lru-cache":"11.5.2"}},"node_modules/import-in-the-middle":{"version":"3.5.2","resolved":"https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.5.2.tgz","integrity":"sha512-WseIA/4o56+GYO3RmlOPvejYi771OFeJEeK/ejROsr9bdjW+E5NXTOD1Di8TL40Qgg3JJX9aa97Hf8iiSVIKZw==","engines":{"node":">=18"},"dependencies":{"cjs-module-lexer":"2.3.0","es-module-lexer":"3.0.3","module-details-from-path":"1.0.4"}},"node_modules/lru-cache":{"version":"11.5.2","resolved":"https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz","integrity":"sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==","engines":{"node":"20 || >=22"}},"node_modules/minipass":{"version":"7.1.3","resolved":"https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz","integrity":"sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==","engines":{"node":">=16 || 14 >=14.17"}},"node_modules/minizlib":{"version":"3.1.0","resolved":"https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz","integrity":"sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==","engines":{"node":">= 18"},"dependencies":{"minipass":"7.1.3"}},"node_modules/module-details-from-path":{"version":"1.0.4","resolved":"https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz","integrity":"sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="},"node_modules/ms":{"version":"2.1.3","resolved":"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz","integrity":"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="},"node_modules/npm-package-arg":{"version":"13.0.2","resolved":"https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz","integrity":"sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==","engines":{"node":"^20.17.0 || >=22.9.0"},"dependencies":{"hosted-git-info":"9.0.3","proc-log":"6.1.0","semver":"7.8.5","validate-npm-package-name":"7.0.2"}},"node_modules/picomatch":{"version":"4.0.7","resolved":"https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz","integrity":"sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==","engines":{"node":">=12"}},"node_modules/proc-log":{"version":"6.1.0","resolved":"https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz","integrity":"sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==","engines":{"node":"^20.17.0 || >=22.9.0"}},"node_modules/require-in-the-middle":{"version":"8.0.1","resolved":"https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz","integrity":"sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==","engines":{"node":">=9.3.0 || >=8.10.0 <9.0.0"},"dependencies":{"debug":"4.4.3","module-details-from-path":"1.0.4"}},"node_modules/semver":{"version":"7.8.5","resolved":"https://registry.npmjs.org/semver/-/semver-7.8.5.tgz","integrity":"sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==","engines":{"node":">=10"},"hasBin":true},"node_modules/supports-color":{"version":"7.2.0","resolved":"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz","integrity":"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==","engines":{"node":">=8"},"dependencies":{"has-flag":"4.0.0"},"optional":true},"node_modules/tar":{"version":"7.5.22","resolved":"https://registry.npmjs.org/tar/-/tar-7.5.22.tgz","integrity":"sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==","engines":{"node":">=18"},"dependencies":{"@isaacs/fs-minipass":"4.0.1","chownr":"3.0.0","minipass":"7.1.3","minizlib":"3.1.0","yallist":"5.0.0"}},"node_modules/tinyglobby":{"version":"0.2.17","resolved":"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz","integrity":"sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==","engines":{"node":">=12.0.0"},"dependencies":{"fdir":"6.5.0","picomatch":"4.0.7"}},"node_modules/validate-npm-package-name":{"version":"7.0.2","resolved":"https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz","integrity":"sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==","engines":{"node":"^20.17.0 || >=22.9.0"}},"node_modules/yallist":{"version":"5.0.0","resolved":"https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz","integrity":"sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==","engines":{"node":">=18"}},"node_modules/yaml":{"version":"2.9.1","resolved":"https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz","integrity":"sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==","engines":{"node":">= 14.6"},"hasBin":true}}}
|
|
1
|
+
{"name":"@unbrained/pm-cli","version":"2026.10.21","lockfileVersion":3,"requires":true,"packages":{"":{"name":"@unbrained/pm-cli","version":"2026.10.21","dependencies":{"@sentry/node":"10.76.2","@toon-format/toon":"^4.4.0","commander":"^15.0.0","fast-json-patch":"^3.1.1","npm-package-arg":"^13.0.2","semver":"7.8.5","tar":"7.5.22","tinyglobby":"^0.2.17","yaml":"^2.9.1"},"peerDependencies":{"@types/node":"^22 || ^24 || ^26"},"peerDependenciesMeta":{"@types/node":{"optional":true}},"bin":{"pm-cli":"dist/cli.js","pm":"dist/cli.js","pm-mcp":"dist/mcp/server.js","pm-mcp-http":"dist/mcp/http-server.js"},"engines":{"node":">=22.18.0"}},"node_modules/@isaacs/fs-minipass":{"version":"4.0.1","resolved":"https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz","integrity":"sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==","engines":{"node":">=18.0.0"},"dependencies":{"minipass":"7.1.3"}},"node_modules/@opentelemetry/api":{"version":"1.9.1","resolved":"https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz","integrity":"sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==","engines":{"node":">=8.0.0"}},"node_modules/@opentelemetry/api-logs":{"version":"0.220.0","resolved":"https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz","integrity":"sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==","engines":{"node":">=8.0.0"},"dependencies":{"@opentelemetry/api":"1.9.1"}},"node_modules/@opentelemetry/core":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/core/-/core-2.12.0.tgz","integrity":"sha512-1HsSAuvT4/my0QrXWsyXFdWjKaPeCHsismKZgEEIb8NK13LP6DrMRlsUbvD/0F9mDWK3xDom9AMv3IscxgOnOQ==","peerDependencies":{"@opentelemetry/api":">=1.0.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/instrumentation":{"version":"0.220.0","resolved":"https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.220.0.tgz","integrity":"sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==","peerDependencies":{"@opentelemetry/api":"^1.3.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/api-logs":"0.220.0","import-in-the-middle":"3.5.2","require-in-the-middle":"8.0.1"}},"node_modules/@opentelemetry/resources":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.12.0.tgz","integrity":"sha512-+rSRoOdln6NhXTVcBdHSlZxJDNzwxadeweK2ltZO3tVtfp6aklABc06xclDk6ovRR+EiGgIcSbh/6NgjFhnb3A==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/sdk-trace":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.12.0.tgz","integrity":"sha512-ImVuRQ6faOsTi1Wna88s2avgrrf/iDgXPigIeynkUhjstMuoQUDOJXgkez2j1mlU4btjXcXBGa+q7qKFYR3GsA==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/resources":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/sdk-trace-base":{"version":"2.12.0","resolved":"https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.12.0.tgz","integrity":"sha512-JOERgZCxRM06FEJ5kEWxlSRChah6MmXDx3KwCruqEv/iEyLkTokCSemf2y1w8oIHtfrr8EVTpzebq/31vn2Cpg==","peerDependencies":{"@opentelemetry/api":">=1.3.0 <1.10.0"},"engines":{"node":"^18.19.0 || >=20.6.0"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/resources":"2.12.0","@opentelemetry/sdk-trace":"2.12.0","@opentelemetry/semantic-conventions":"1.43.0"}},"node_modules/@opentelemetry/semantic-conventions":{"version":"1.43.0","resolved":"https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz","integrity":"sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==","engines":{"node":">=14"}},"node_modules/@sentry/conventions":{"version":"0.16.0","resolved":"https://registry.npmjs.org/@sentry/conventions/-/conventions-0.16.0.tgz","integrity":"sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==","engines":{"node":">=14"}},"node_modules/@sentry/core":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/core/-/core-10.76.2.tgz","integrity":"sha512-vndrQalRiwYatTkjlLWvyf69KocXIb9TKJ4A9oiyWguL8PJYtqIRTlRe4OpkpjLrxS18fvRdV0jEm29c/9p3hQ==","engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0"}},"node_modules/@sentry/node":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/node/-/node-10.76.2.tgz","integrity":"sha512-LSwGGE/GceTbkDHRoQQr3lq/dpxxA6RdooBbuGTJ/S6BdqKX2kw2FdV7Se9eJzZJJJ5AxCZum37+ejYS7N2pJg==","engines":{"node":">=18"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/instrumentation":"0.220.0","@opentelemetry/sdk-trace-base":"2.12.0","@sentry/conventions":"0.16.0","@sentry/core":"10.76.2","@sentry/node-core":"10.76.2","@sentry/opentelemetry":"10.76.2","@sentry/server-utils":"10.76.2","import-in-the-middle":"3.5.2"}},"node_modules/@sentry/node-core":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/node-core/-/node-core-10.76.2.tgz","integrity":"sha512-TrgAc/SvU5kQfjw8pz6I8LLIUiblOSf9BPPNkTbS0Dzcqa4yQLVbmsbS3rvGT7ot64m9Vjzn327ZRy63MlI6/w==","peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/core":">=2.8.0 <3.0.0","@opentelemetry/exporter-trace-otlp-http":">=0.57.0 <1","@opentelemetry/instrumentation":">=0.57.1 <1","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.1.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/core":{"optional":true},"@opentelemetry/exporter-trace-otlp-http":{"optional":true},"@opentelemetry/instrumentation":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0","@sentry/core":"10.76.2","@sentry/opentelemetry":"10.76.2","import-in-the-middle":"3.5.2"},"optionalDependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/instrumentation":"0.220.0","@opentelemetry/sdk-trace-base":"2.12.0"}},"node_modules/@sentry/opentelemetry":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.76.2.tgz","integrity":"sha512-deqWrKJGaku3nhiZchg34z8W9v6kUwtzoQ4cmEq6CeT8/4X93X4YfeJgoh1dhbswFRpwor4pQ6kj0KttagKtfA==","peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/core":">=2.8.0 <3.0.0","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.1.0"},"engines":{"node":">=18"},"dependencies":{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.12.0","@opentelemetry/sdk-trace-base":"2.12.0","@sentry/conventions":"0.16.0","@sentry/core":"10.76.2"}},"node_modules/@sentry/server-utils":{"version":"10.76.2","resolved":"https://registry.npmjs.org/@sentry/server-utils/-/server-utils-10.76.2.tgz","integrity":"sha512-wogj6Trj8fAu+aD7HbpvHEBlyANMOvvO9MP5NFJaiQbprLKugtCdE6rFTxDhofXvRo4nswL9m4Cvysg3k5KcvQ==","engines":{"node":">=18"},"dependencies":{"@sentry/conventions":"0.16.0","@sentry/core":"10.76.2"}},"node_modules/@toon-format/toon":{"version":"4.4.0","resolved":"https://registry.npmjs.org/@toon-format/toon/-/toon-4.4.0.tgz","integrity":"sha512-A6UcsVoWbNdhdLNhJbe6JpRlocmf/DZGG57fur3bd8oQtsjBaKWo2hHbOU2zTuy+byUmLIOyP1xJeitopCZzpQ=="},"node_modules/chownr":{"version":"3.0.0","resolved":"https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz","integrity":"sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==","engines":{"node":">=18"}},"node_modules/cjs-module-lexer":{"version":"2.3.0","resolved":"https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz","integrity":"sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ=="},"node_modules/commander":{"version":"15.0.0","resolved":"https://registry.npmjs.org/commander/-/commander-15.0.0.tgz","integrity":"sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==","engines":{"node":">=22.12.0"}},"node_modules/debug":{"version":"4.4.3","resolved":"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz","integrity":"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==","peerDependencies":{"supports-color":"*"},"peerDependenciesMeta":{"supports-color":{"optional":true}},"engines":{"node":">=6.0"},"dependencies":{"ms":"2.1.3"},"optionalDependencies":{"supports-color":"7.2.0"}},"node_modules/es-module-lexer":{"version":"3.0.3","resolved":"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-3.0.3.tgz","integrity":"sha512-yWGe1O/j+almnV4hOYrmZo8u58JdnmXEMneRQAYkWtqSiT86yoMIEKF4rpqEDj52tbYl3xceBD3DQIBwcsC9Pw=="},"node_modules/fast-json-patch":{"version":"3.1.1","resolved":"https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz","integrity":"sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="},"node_modules/fdir":{"version":"6.5.0","resolved":"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz","integrity":"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==","peerDependencies":{"picomatch":"^3 || ^4"},"peerDependenciesMeta":{"picomatch":{"optional":true}},"engines":{"node":">=12.0.0"},"optionalDependencies":{"picomatch":"4.0.7"}},"node_modules/has-flag":{"version":"4.0.0","resolved":"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz","integrity":"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==","engines":{"node":">=8"},"optional":true},"node_modules/hosted-git-info":{"version":"9.0.3","resolved":"https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz","integrity":"sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==","engines":{"node":"^20.17.0 || >=22.9.0"},"dependencies":{"lru-cache":"11.5.2"}},"node_modules/import-in-the-middle":{"version":"3.5.2","resolved":"https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.5.2.tgz","integrity":"sha512-WseIA/4o56+GYO3RmlOPvejYi771OFeJEeK/ejROsr9bdjW+E5NXTOD1Di8TL40Qgg3JJX9aa97Hf8iiSVIKZw==","engines":{"node":">=18"},"dependencies":{"cjs-module-lexer":"2.3.0","es-module-lexer":"3.0.3","module-details-from-path":"1.0.4"}},"node_modules/lru-cache":{"version":"11.5.2","resolved":"https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz","integrity":"sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==","engines":{"node":"20 || >=22"}},"node_modules/minipass":{"version":"7.1.3","resolved":"https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz","integrity":"sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==","engines":{"node":">=16 || 14 >=14.17"}},"node_modules/minizlib":{"version":"3.1.0","resolved":"https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz","integrity":"sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==","engines":{"node":">= 18"},"dependencies":{"minipass":"7.1.3"}},"node_modules/module-details-from-path":{"version":"1.0.4","resolved":"https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz","integrity":"sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="},"node_modules/ms":{"version":"2.1.3","resolved":"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz","integrity":"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="},"node_modules/npm-package-arg":{"version":"13.0.2","resolved":"https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz","integrity":"sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==","engines":{"node":"^20.17.0 || >=22.9.0"},"dependencies":{"hosted-git-info":"9.0.3","proc-log":"6.1.0","semver":"7.8.5","validate-npm-package-name":"7.0.2"}},"node_modules/picomatch":{"version":"4.0.7","resolved":"https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz","integrity":"sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==","engines":{"node":">=12"}},"node_modules/proc-log":{"version":"6.1.0","resolved":"https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz","integrity":"sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==","engines":{"node":"^20.17.0 || >=22.9.0"}},"node_modules/require-in-the-middle":{"version":"8.0.1","resolved":"https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz","integrity":"sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==","engines":{"node":">=9.3.0 || >=8.10.0 <9.0.0"},"dependencies":{"debug":"4.4.3","module-details-from-path":"1.0.4"}},"node_modules/semver":{"version":"7.8.5","resolved":"https://registry.npmjs.org/semver/-/semver-7.8.5.tgz","integrity":"sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==","engines":{"node":">=10"},"hasBin":true},"node_modules/supports-color":{"version":"7.2.0","resolved":"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz","integrity":"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==","engines":{"node":">=8"},"dependencies":{"has-flag":"4.0.0"},"optional":true},"node_modules/tar":{"version":"7.5.22","resolved":"https://registry.npmjs.org/tar/-/tar-7.5.22.tgz","integrity":"sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==","engines":{"node":">=18"},"dependencies":{"@isaacs/fs-minipass":"4.0.1","chownr":"3.0.0","minipass":"7.1.3","minizlib":"3.1.0","yallist":"5.0.0"}},"node_modules/tinyglobby":{"version":"0.2.17","resolved":"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz","integrity":"sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==","engines":{"node":">=12.0.0"},"dependencies":{"fdir":"6.5.0","picomatch":"4.0.7"}},"node_modules/validate-npm-package-name":{"version":"7.0.2","resolved":"https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz","integrity":"sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==","engines":{"node":"^20.17.0 || >=22.9.0"}},"node_modules/yallist":{"version":"5.0.0","resolved":"https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz","integrity":"sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==","engines":{"node":">=18"}},"node_modules/yaml":{"version":"2.9.1","resolved":"https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz","integrity":"sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==","engines":{"node":">= 14.6"},"hasBin":true}}}
|