@unbrained/pm-cli 2026.6.11 → 2026.6.12
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/CHANGELOG.md +28 -0
- package/dist/cli/commands/completion.js +20 -8
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/create.js +6 -3
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/docs.d.ts +2 -0
- package/dist/cli/commands/docs.js +2 -2
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/files.d.ts +2 -0
- package/dist/cli/commands/files.js +2 -2
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/health.d.ts +1 -1
- package/dist/cli/commands/health.js +77 -2
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-repair.d.ts +36 -0
- package/dist/cli/commands/history-repair.js +68 -3
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.js +3 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/linked-artifacts.d.ts +18 -0
- package/dist/cli/commands/linked-artifacts.js +26 -3
- package/dist/cli/commands/linked-artifacts.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +6 -0
- package/dist/cli/commands/plan.js +93 -32
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +20 -0
- package/dist/cli/commands/validate.js +292 -28
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help-content.js +7 -3
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-mutation.js +47 -16
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +10 -2
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +16 -16
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli-bundle/chunks/{chunk-P2PSODAQ.js → chunk-35P4GT6E.js} +110 -9
- package/dist/cli-bundle/chunks/chunk-35P4GT6E.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-B65UUCGQ.js → chunk-37CYVF73.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-J3GD64J2.js → chunk-7AMK6DOW.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-J3GD64J2.js.map → chunk-7AMK6DOW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IKOH24GZ.js → chunk-AX4GEVQC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-IKOH24GZ.js.map → chunk-AX4GEVQC.js.map} +2 -2
- package/dist/cli-bundle/chunks/chunk-C6SAP27O.js +187 -0
- package/dist/cli-bundle/chunks/chunk-C6SAP27O.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-EKS6O2IR.js +217 -0
- package/dist/cli-bundle/chunks/chunk-EKS6O2IR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PSD7F7DX.js → chunk-KBPQHXWG.js} +17 -4
- package/dist/cli-bundle/chunks/chunk-KBPQHXWG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3SLOMKCJ.js → chunk-L5EPZQIC.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-NAWVUHXH.js +220 -0
- package/dist/cli-bundle/chunks/chunk-NAWVUHXH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UOO6BYIA.js → chunk-PNYAAB4S.js} +21 -188
- package/dist/cli-bundle/chunks/chunk-PNYAAB4S.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-R2OUQVBK.js +190 -0
- package/dist/cli-bundle/chunks/chunk-R2OUQVBK.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LCSCXBGT.js → chunk-R4VWYWRN.js} +19 -193
- package/dist/cli-bundle/chunks/chunk-R4VWYWRN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7RIT3OCD.js → chunk-SO55HRA5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FXRU333M.js → chunk-UIG4TW2H.js} +110 -9
- package/dist/cli-bundle/chunks/chunk-UIG4TW2H.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-E5DUIJA4.js → chunk-WPDMBIX6.js} +16 -3
- package/dist/cli-bundle/chunks/chunk-WPDMBIX6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IH4MBKK7.js → chunk-XWMF3POR.js} +2 -2
- package/dist/cli-bundle/chunks/{contracts-3NKWYKKU.js → contracts-2G66IGIA.js} +2 -2
- package/dist/cli-bundle/chunks/{contracts-MIXBWJIB.js → contracts-PJCHYSO5.js} +2 -2
- package/dist/cli-bundle/chunks/{create-IFA26O2I.js → create-5433DP3G.js} +2 -2
- package/dist/cli-bundle/chunks/{create-JVXYHYH4.js → create-VWLWS34Z.js} +2 -2
- package/dist/cli-bundle/chunks/{docs-5WMBVQT2.js → docs-I3BAF5WH.js} +4 -4
- package/dist/cli-bundle/chunks/docs-I3BAF5WH.js.map +1 -0
- package/dist/cli-bundle/chunks/{docs-MB53UJAJ.js → docs-MXLGZUIT.js} +3 -3
- package/dist/cli-bundle/chunks/docs-MXLGZUIT.js.map +7 -0
- package/dist/cli-bundle/chunks/{files-GVMNVLCB.js → files-FYP3MDPX.js} +3 -3
- package/dist/cli-bundle/chunks/files-FYP3MDPX.js.map +7 -0
- package/dist/cli-bundle/chunks/{files-DLB5LJEP.js → files-GUXUM2MB.js} +4 -4
- package/dist/cli-bundle/chunks/files-GUXUM2MB.js.map +1 -0
- package/dist/cli-bundle/chunks/{gc-2WEPW6D6.js → gc-FENB2ESG.js} +12 -174
- package/dist/cli-bundle/chunks/gc-FENB2ESG.js.map +1 -0
- package/dist/cli-bundle/chunks/{gc-4Z3IKHAZ.js → gc-KGQG66SA.js} +10 -179
- package/dist/cli-bundle/chunks/gc-KGQG66SA.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-YO5LRWN4.js → health-7MTXAVR2.js} +71 -4
- package/dist/cli-bundle/chunks/health-7MTXAVR2.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-4ZYB3IYQ.js → health-E4D7KGHD.js} +72 -5
- package/dist/cli-bundle/chunks/health-E4D7KGHD.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-KVPFJKOS.js → history-repair-OSQOKJ3E.js} +61 -3
- package/dist/cli-bundle/chunks/history-repair-OSQOKJ3E.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-repair-RUGKD3YR.js → history-repair-SBK7P34V.js} +62 -4
- package/dist/cli-bundle/chunks/history-repair-SBK7P34V.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-VNUG3WZZ.js → plan-2YTQYWGM.js} +52 -12
- package/dist/cli-bundle/chunks/plan-2YTQYWGM.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-FQLMJRLZ.js → plan-7IVSICR6.js} +51 -11
- package/dist/cli-bundle/chunks/plan-7IVSICR6.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-VHDXWEPP.js → register-list-query-4UPMHONX.js} +3 -3
- package/dist/cli-bundle/chunks/{register-list-query-NPE3ECJQ.js → register-list-query-7VOW2C3W.js} +3 -3
- package/dist/cli-bundle/chunks/{register-mutation-EAYNLGOS.js → register-mutation-FARSGYRD.js} +43 -26
- package/dist/cli-bundle/chunks/{register-mutation-EAYNLGOS.js.map → register-mutation-FARSGYRD.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-DG53FCBV.js → register-mutation-LJDNVREU.js} +44 -27
- package/dist/cli-bundle/chunks/{register-mutation-DG53FCBV.js.map → register-mutation-LJDNVREU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-AM6KTWB6.js → register-operations-FFTYAL42.js} +17 -13
- package/dist/cli-bundle/chunks/register-operations-FFTYAL42.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-FWFE64JG.js → register-operations-HCJKDUA6.js} +16 -12
- package/dist/cli-bundle/chunks/{register-operations-FWFE64JG.js.map → register-operations-HCJKDUA6.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-IKX5524L.js → register-setup-6AVIUOCC.js} +19 -19
- package/dist/cli-bundle/chunks/register-setup-6AVIUOCC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-G4QYI3RX.js → register-setup-KVNLO5OJ.js} +18 -18
- package/dist/cli-bundle/chunks/register-setup-KVNLO5OJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-2EVXOC7V.js → update-36JM7YZT.js} +3 -3
- package/dist/cli-bundle/chunks/{update-5A2B6QYB.js → update-I246PCLO.js} +3 -3
- package/dist/cli-bundle/chunks/{update-many-V4LA3C4H.js → update-many-F4IKDWZB.js} +3 -3
- package/dist/cli-bundle/chunks/{update-many-TUGU5YXQ.js → update-many-NTWZ5YT3.js} +3 -3
- package/dist/cli-bundle/chunks/{validate-EQTT6WVX.js → validate-46KCRHL7.js} +448 -36
- package/dist/cli-bundle/chunks/validate-46KCRHL7.js.map +1 -0
- package/dist/cli-bundle/chunks/{validate-XN4I4DPL.js → validate-CRFMPTYD.js} +468 -35
- package/dist/cli-bundle/chunks/validate-CRFMPTYD.js.map +7 -0
- package/dist/cli-bundle/main.js +24 -10
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/core/diagnostics/remediation.js +19 -6
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/lock/lock-gc.d.ts +31 -0
- package/dist/core/lock/lock-gc.js +120 -62
- package/dist/core/lock/lock-gc.js.map +1 -1
- package/dist/core/telemetry/consent.js +18 -3
- package/dist/core/telemetry/consent.js.map +1 -1
- package/dist/core/validate/fix-planning.d.ts +130 -0
- package/dist/core/validate/fix-planning.js +202 -0
- package/dist/core/validate/fix-planning.js.map +1 -0
- package/dist/core/validate/missing-by-type.d.ts +21 -0
- package/dist/core/validate/missing-by-type.js +39 -0
- package/dist/core/validate/missing-by-type.js.map +1 -0
- package/dist/core/validate/stale-file-classification.d.ts +41 -0
- package/dist/core/validate/stale-file-classification.js +73 -0
- package/dist/core/validate/stale-file-classification.js.map +1 -0
- package/dist/mcp/server.js +41 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +38 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +6 -1
- package/dist/sdk/cli-contracts.js +74 -7
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/docs/AGENT_GUIDE.md +6 -1
- package/docs/COMMANDS.md +23 -1
- package/package.json +1 -1
- package/dist/cli-bundle/chunks/chunk-E5DUIJA4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FXRU333M.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LCSCXBGT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-P2PSODAQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PSD7F7DX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UOO6BYIA.js.map +0 -1
- package/dist/cli-bundle/chunks/docs-5WMBVQT2.js.map +0 -1
- package/dist/cli-bundle/chunks/docs-MB53UJAJ.js.map +0 -7
- package/dist/cli-bundle/chunks/files-DLB5LJEP.js.map +0 -1
- package/dist/cli-bundle/chunks/files-GVMNVLCB.js.map +0 -7
- package/dist/cli-bundle/chunks/gc-2WEPW6D6.js.map +0 -1
- package/dist/cli-bundle/chunks/gc-4Z3IKHAZ.js.map +0 -7
- package/dist/cli-bundle/chunks/health-4ZYB3IYQ.js.map +0 -1
- package/dist/cli-bundle/chunks/health-YO5LRWN4.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-KVPFJKOS.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-RUGKD3YR.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-FQLMJRLZ.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-VNUG3WZZ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-AM6KTWB6.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-G4QYI3RX.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-IKX5524L.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-EQTT6WVX.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-XN4I4DPL.js.map +0 -7
- /package/dist/cli-bundle/chunks/{chunk-B65UUCGQ.js.map → chunk-37CYVF73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3SLOMKCJ.js.map → chunk-L5EPZQIC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7RIT3OCD.js.map → chunk-SO55HRA5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IH4MBKK7.js.map → chunk-XWMF3POR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-3NKWYKKU.js.map → contracts-2G66IGIA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-MIXBWJIB.js.map → contracts-PJCHYSO5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-IFA26O2I.js.map → create-5433DP3G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-JVXYHYH4.js.map → create-VWLWS34Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-VHDXWEPP.js.map → register-list-query-4UPMHONX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-NPE3ECJQ.js.map → register-list-query-7VOW2C3W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-2EVXOC7V.js.map → update-36JM7YZT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-5A2B6QYB.js.map → update-I246PCLO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-V4LA3C4H.js.map → update-many-F4IKDWZB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-TUGU5YXQ.js.map → update-many-NTWZ5YT3.js.map} +0 -0
package/dist/cli-bundle/chunks/{register-mutation-DG53FCBV.js → register-mutation-LJDNVREU.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5cbbc60e-2417-5f4f-bb35-757e6c45886a")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
collect,
|
|
5
5
|
extractUpdateManyMutationOptionSource,
|
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
invalidateSearchCachesForMutation,
|
|
9
9
|
normalizeCreateOptions,
|
|
10
10
|
normalizeUpdateOptions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XWMF3POR.js";
|
|
12
12
|
import {
|
|
13
13
|
CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,
|
|
14
14
|
UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UIG4TW2H.js";
|
|
16
16
|
import "./chunk-XJDGS74Y.js";
|
|
17
17
|
import {
|
|
18
18
|
printError,
|
|
@@ -143,7 +143,7 @@ function registerMutationCommands(program) {
|
|
|
143
143
|
options.title = positionalTitle;
|
|
144
144
|
}
|
|
145
145
|
const normalized = normalizeCreateOptions(options, { requireType: false });
|
|
146
|
-
const { runCreate } = await import("./create-
|
|
146
|
+
const { runCreate } = await import("./create-5433DP3G.js");
|
|
147
147
|
const result = await runCreate(normalized, globalOptions);
|
|
148
148
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
149
149
|
printResult(result, globalOptions);
|
|
@@ -174,7 +174,7 @@ function registerMutationCommands(program) {
|
|
|
174
174
|
updateCommand.action(async (id, options, command) => {
|
|
175
175
|
const globalOptions = getGlobalOptions(command);
|
|
176
176
|
const startedAt = Date.now();
|
|
177
|
-
const { runUpdate } = await import("./update-
|
|
177
|
+
const { runUpdate } = await import("./update-I246PCLO.js");
|
|
178
178
|
const result = await runUpdate(id, normalizeUpdateOptions(options), globalOptions);
|
|
179
179
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
180
180
|
printResult(result, globalOptions);
|
|
@@ -214,7 +214,7 @@ function registerMutationCommands(program) {
|
|
|
214
214
|
updateManyCommand.action(async (options, command) => {
|
|
215
215
|
const globalOptions = getGlobalOptions(command);
|
|
216
216
|
const startedAt = Date.now();
|
|
217
|
-
const { runUpdateMany } = await import("./update-many-
|
|
217
|
+
const { runUpdateMany } = await import("./update-many-F4IKDWZB.js");
|
|
218
218
|
const result = await runUpdateMany({
|
|
219
219
|
status: typeof options.filterStatus === "string" ? options.filterStatus : void 0,
|
|
220
220
|
list: {
|
|
@@ -396,7 +396,7 @@ function registerMutationCommands(program) {
|
|
|
396
396
|
printError(`profile:command=restore took_ms=${Date.now() - startedAt}`);
|
|
397
397
|
}
|
|
398
398
|
});
|
|
399
|
-
const planCommand = program.command("plan").description("Agent-optimized Plan item workflow: create, manage steps, link dependencies, approve, and materialize.").argument("[subcommand]", "Plan subcommand: create|show|add-step|update-step|complete-step|block-step|reorder-step|remove-step|link|unlink|decision|discovery|validation|resume|approve|materialize").argument("[id]", "Plan id (required for non-create subcommands); for create this may be the positional title").argument("[stepRef]", "Step reference: stable id (plan-step-001) or order integer").argument("[reorderTo]", "New order integer for reorder-step").option("--title <value>", "Plan title").option("--description <value>", "Plan description").option("--scope <value>", "Short scope statement of the target change or investigation").option("--parent <value>", "Parent pm item id").option("--related <value>", "Related pm item ids (repeatable, csv-friendly)", collect).option("--blocks <value>", "Pm item ids this plan blocks (repeatable, csv-friendly)", collect).option("--blocked-by <value>", "Pm item ids that block this plan (repeatable, csv-friendly)", collect).option("--harness <value>", "Plan harness provenance: codex|claude-code|cursor|generic").option("--mode <value>", "Plan mode: draft|research|review|approved|executing|paused|completed|superseded").option("--resume-context <value>", "Compact context summary for a future stateless agent").option("--tags <value>", "Comma-separated tags").option("--priority <value>", "Priority 0-4").option("--body <value>", "Plan item body").option("--claim", "Claim the plan on create for the author").option("--from-search <value>", "Record the search query that led to plan creation").option("--step-title <value>", "Step title for add-step / update-step").option("--step <value>", "
|
|
399
|
+
const planCommand = program.command("plan").description("Agent-optimized Plan item workflow: create, manage steps, link dependencies, approve, and materialize.").argument("[subcommand]", "Plan subcommand: create|show|add-step|update-step|complete-step|block-step|reorder-step|remove-step|link|unlink|decision|discovery|validation|resume|approve|materialize").argument("[id]", "Plan id (required for non-create subcommands); for create this may be the positional title").argument("[stepRef]", "Step reference: stable id (plan-step-001) or order integer").argument("[reorderTo]", "New order integer for reorder-step").option("--title <value>", "Plan title").option("--description <value>", "Plan description").option("--scope <value>", "Short scope statement of the target change or investigation").option("--parent <value>", "Parent pm item id").option("--related <value>", "Related pm item ids (repeatable, csv-friendly)", collect).option("--blocks <value>", "Pm item ids this plan blocks (repeatable, csv-friendly)", collect).option("--blocked-by <value>", "Pm item ids that block this plan (repeatable, csv-friendly)", collect).option("--harness <value>", "Plan harness provenance: codex|claude-code|cursor|generic").option("--mode <value>", "Plan mode: draft|research|review|approved|executing|paused|completed|superseded").option("--resume-context <value>", "Compact context summary for a future stateless agent").option("--tags <value>", "Comma-separated tags").option("--priority <value>", "Priority 0-4").option("--body <value>", "Plan item body").option("--claim", "Claim the plan on create for the author").option("--from-search <value>", "Record the search query that led to plan creation").option("--step-title <value>", "Step title for add-step / update-step").option("--step <value>", "Step title (repeatable on create: each --step appends an ordered step; elsewhere a single value aliases --step-title)", collect).option("--step-body <value>", "Step body text").option("--step-owner <value>", "Step owner").option("--step-status <value>", "Step status: pending|in_progress|completed|blocked|skipped|superseded").option("--step-evidence <value>", "Step evidence text (used by update-step/complete-step)").option("--step-blocked-reason <value>", "Step blocked reason (required when blocking)").option("--step-replacement <value>", "Replacement reference for a superseded step").option("--depends-on <value>", "Pm item ids the step depends on (repeatable, csv-friendly)", collect).option("--link <value>", "Pm item id to link (repeatable, csv-friendly)", collect).option("--link-kind <value>", "Link kind: related|blocks|blocked_by|depends_on|discovered_from|implements|verifies|supersedes").option("--link-note <value>", "Optional note for the link").option("--promote-to-item-dep", "Also add the linked id as a top-level item dependency when linking").option("--allow-multiple-active", "Allow multiple steps to be in_progress at once").option("--file <value>", "Step linked file path=<value>[,scope=project|global,note=<text>] (repeatable)", collect).option("--test <value>", "Step linked test command=<value>[,path=<value>,note=<text>] (repeatable)", collect).option("--doc <value>", "Step linked doc path=<value>[,scope=project|global,note=<text>] (repeatable)", collect).option("--decision-text <value>", "Decision log entry text").option("--decision <value>", "Alias for --decision-text").option("--decision-rationale <value>", "Decision log entry rationale").option("--decision-evidence <value>", "Decision log entry evidence").option("--discovery-text <value>", "Discovery log entry text").option("--discovery <value>", "Alias for --discovery-text").option("--validation-text <value>", "Validation log entry text").option("--validation <value>", "Alias for --validation-text").option("--validation-command <value>", "Validation log entry command").option("--validation-expected <value>", "Validation log entry expected outcome").option("--depth <value>", "Show depth: brief|standard|deep (default: brief)").option("--fields <value>", "Comma-separated field projection for show output").option("--steps <value>", "Comma-separated step ids/orders for materialize").option("--materialize-type <value>", "Item type for materialized steps (default: Task)").option("--materialize-parent <value>", "Parent item id for materialized children (default: the plan)").option("--materialize-tags <value>", "Comma-separated tags for materialized children").option("--author <value>", "Mutation author").option("--message <value>", "Mutation message").option("--force", "Force ownership override");
|
|
400
400
|
for (const [flags, description] of [
|
|
401
401
|
["--resume_context <value>", "Alias for --resume-context"],
|
|
402
402
|
["--from_search <value>", "Alias for --from-search"],
|
|
@@ -433,7 +433,7 @@ function registerMutationCommands(program) {
|
|
|
433
433
|
planCommand.action(async (subcommand, id, stepRef, reorderToken, options, command) => {
|
|
434
434
|
const globalOptions = getGlobalOptions(command);
|
|
435
435
|
const startedAt = Date.now();
|
|
436
|
-
const { runPlan, PLAN_SUBCOMMANDS } = await import("./plan-
|
|
436
|
+
const { runPlan, PLAN_SUBCOMMANDS } = await import("./plan-2YTQYWGM.js");
|
|
437
437
|
const normalizedSubcommand = (subcommand ?? "").trim().toLowerCase();
|
|
438
438
|
if (!normalizedSubcommand) {
|
|
439
439
|
throw new PmCliError(`pm plan requires a subcommand. Allowed: ${PLAN_SUBCOMMANDS.join(", ")}`, EXIT_CODE.USAGE, {
|
|
@@ -454,7 +454,10 @@ function registerMutationCommands(program) {
|
|
|
454
454
|
["blocked_by", "blockedBy"],
|
|
455
455
|
["resume_context", "resumeContext"],
|
|
456
456
|
["from_search", "fromSearch"],
|
|
457
|
-
|
|
457
|
+
// pm-6mit: "step" is no longer folded into stepTitle here — it is a
|
|
458
|
+
// first-class repeatable option normalized inside runPlan (create
|
|
459
|
+
// accumulates ordered steps; other subcommands accept a single value
|
|
460
|
+
// as a stepTitle alias).
|
|
458
461
|
["step_title", "stepTitle"],
|
|
459
462
|
["step_body", "stepBody"],
|
|
460
463
|
["step_owner", "stepOwner"],
|
|
@@ -534,17 +537,28 @@ function registerMutationCommands(program) {
|
|
|
534
537
|
printError(`profile:command=history-redact took_ms=${Date.now() - startedAt}`);
|
|
535
538
|
}
|
|
536
539
|
});
|
|
537
|
-
program.command("history-repair").argument("
|
|
540
|
+
program.command("history-repair").argument("[id]", "Item id (omit with --all)").option("--all", "Scan every stream for drift and repair each drifted stream in one audited pass").option("--dry-run", "Preview the re-anchor impact without writing the history file").option("--author <value>", "Mutation author").option("--message <value>", "Audit history message for the repair marker entry").option("--force", "Force ownership/lock override").description("Re-anchor a drifted item history chain (recompute hashes, reconcile with the on-disk item) and record an audit marker. Use --all to repair every drifted stream.").action(async (id, options, command) => {
|
|
538
541
|
const globalOptions = getGlobalOptions(command);
|
|
539
542
|
const startedAt = Date.now();
|
|
540
|
-
const { runHistoryRepair } = await import("./history-repair-
|
|
541
|
-
const
|
|
543
|
+
const { runHistoryRepair, runHistoryRepairAll, assertHistoryRepairTarget } = await import("./history-repair-SBK7P34V.js");
|
|
544
|
+
const all = options.all === true;
|
|
545
|
+
assertHistoryRepairTarget(id, all);
|
|
546
|
+
const repairOptions = {
|
|
542
547
|
dryRun: options.dryRun === true,
|
|
543
548
|
author: typeof options.author === "string" ? options.author : void 0,
|
|
544
549
|
message: typeof options.message === "string" ? options.message : void 0,
|
|
545
550
|
force: Boolean(options.force)
|
|
546
|
-
}
|
|
547
|
-
|
|
551
|
+
};
|
|
552
|
+
if (all) {
|
|
553
|
+
const result = await runHistoryRepairAll(repairOptions, globalOptions);
|
|
554
|
+
printResult(result, globalOptions);
|
|
555
|
+
if (result.totals.failed > 0) {
|
|
556
|
+
process.exitCode = EXIT_CODE.GENERIC_FAILURE;
|
|
557
|
+
}
|
|
558
|
+
} else {
|
|
559
|
+
const result = await runHistoryRepair(id, repairOptions, globalOptions);
|
|
560
|
+
printResult(result, globalOptions);
|
|
561
|
+
}
|
|
548
562
|
if (globalOptions.profile) {
|
|
549
563
|
printError(`profile:command=history-repair took_ms=${Date.now() - startedAt}`);
|
|
550
564
|
}
|
|
@@ -735,19 +749,20 @@ function registerMutationCommands(program) {
|
|
|
735
749
|
}
|
|
736
750
|
});
|
|
737
751
|
const filesCommand = program.command("files").description("Manage files linked to an item.");
|
|
738
|
-
filesCommand.argument("<id>", "Item id").option("--add <value>", "Add linked file entry (CSV/markdown pairs or - for stdin)", collect).option("--add-glob <value>", "Add linked file entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)", collect).option("--remove <value>", "Remove linked file by path (path=<value>, path:<value>, plain path, or - for stdin)", collect).option("--migrate <value>", "Migrate linked file paths in-place (from=<prefix>,to=<prefix>; repeatable)", collect).option("--list", "List linked files without mutating").option("--append-stable", "Preserve existing linked-file order and append new links without full-array resorting").option("--validate-paths", "Validate linked file paths for existence and file shape").option("--audit", "Audit linked file usage across all items for this item's linked paths").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").action(async (id, options, command) => {
|
|
752
|
+
filesCommand.argument("<id>", "Item id").option("--add <value>", "Add linked file entry (CSV/markdown pairs or - for stdin)", collect).option("--add-glob <value>", "Add linked file entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)", collect).option("--remove <value>", "Remove linked file by path (path=<value>, path:<value>, plain path, or - for stdin)", collect).option("--migrate <value>", "Migrate linked file paths in-place (from=<prefix>,to=<prefix>; repeatable)", collect).option("--note <value>", "Note attached to every link added by --add/--add-glob in this invocation (embedded note= wins)").option("--list", "List linked files without mutating").option("--append-stable", "Preserve existing linked-file order and append new links without full-array resorting").option("--validate-paths", "Validate linked file paths for existence and file shape").option("--audit", "Audit linked file usage across all items for this item's linked paths").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").action(async (id, options, command) => {
|
|
739
753
|
const globalOptions = getGlobalOptions(command);
|
|
740
754
|
const startedAt = Date.now();
|
|
741
755
|
const addValues = Array.isArray(options.add) ? options.add : [];
|
|
742
756
|
const addGlobValues = Array.isArray(options.addGlob) ? options.addGlob : [];
|
|
743
757
|
const removeValues = Array.isArray(options.remove) ? options.remove : [];
|
|
744
758
|
const migrateValues = Array.isArray(options.migrate) ? options.migrate : [];
|
|
745
|
-
const { runFiles } = await import("./files-
|
|
759
|
+
const { runFiles } = await import("./files-GUXUM2MB.js");
|
|
746
760
|
const result = await runFiles(id, {
|
|
747
761
|
add: addValues,
|
|
748
762
|
addGlob: addGlobValues,
|
|
749
763
|
remove: removeValues,
|
|
750
764
|
migrate: migrateValues,
|
|
765
|
+
note: typeof options.note === "string" ? options.note : void 0,
|
|
751
766
|
list: Boolean(options.list),
|
|
752
767
|
appendStable: Boolean(options.appendStable),
|
|
753
768
|
validatePaths: Boolean(options.validatePaths),
|
|
@@ -767,14 +782,15 @@ function registerMutationCommands(program) {
|
|
|
767
782
|
filesCommand.command("discover").argument("<id>", "Item id").option("--apply", "Add discovered missing files to the item").option("--note <value>", "Note to attach to discovered file links").option("--append-stable", "Preserve existing linked-file order and append discovered links without full-array resorting").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Discover existing file paths referenced in item text and optionally link missing files.").action(async (id, options, command) => {
|
|
768
783
|
const globalOptions = getGlobalOptions(command);
|
|
769
784
|
const startedAt = Date.now();
|
|
770
|
-
const
|
|
785
|
+
const mergedOptions = { ...command.optsWithGlobals(), ...options };
|
|
786
|
+
const { runFilesDiscover } = await import("./files-GUXUM2MB.js");
|
|
771
787
|
const result = await runFilesDiscover(id, {
|
|
772
|
-
apply: Boolean(
|
|
773
|
-
note: typeof
|
|
774
|
-
appendStable: Boolean(
|
|
775
|
-
author: typeof
|
|
776
|
-
message: typeof
|
|
777
|
-
force: Boolean(
|
|
788
|
+
apply: Boolean(mergedOptions.apply),
|
|
789
|
+
note: typeof mergedOptions.note === "string" ? mergedOptions.note : void 0,
|
|
790
|
+
appendStable: Boolean(mergedOptions.appendStable),
|
|
791
|
+
author: typeof mergedOptions.author === "string" ? mergedOptions.author : void 0,
|
|
792
|
+
message: typeof mergedOptions.message === "string" ? mergedOptions.message : void 0,
|
|
793
|
+
force: Boolean(mergedOptions.force)
|
|
778
794
|
}, globalOptions);
|
|
779
795
|
if (result.changed) {
|
|
780
796
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
@@ -784,19 +800,20 @@ function registerMutationCommands(program) {
|
|
|
784
800
|
printError(`profile:command=files.discover took_ms=${Date.now() - startedAt}`);
|
|
785
801
|
}
|
|
786
802
|
});
|
|
787
|
-
program.command("docs").argument("<id>", "Item id").option("--add <value>", "Add linked doc entry (CSV/markdown pairs or - for stdin)", collect).option("--add-glob <value>", "Add linked doc entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)", collect).option("--remove <value>", "Remove linked doc by path (path=<value>, path:<value>, plain path, or - for stdin)", collect).option("--migrate <value>", "Migrate linked doc paths in-place (from=<prefix>,to=<prefix>; repeatable)", collect).option("--list", "List linked docs without mutating").option("--validate-paths", "Validate linked doc paths for existence and file shape").option("--audit", "Audit linked doc usage across all items for this item's linked paths").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage docs linked to an item.").action(async (id, options, command) => {
|
|
803
|
+
program.command("docs").argument("<id>", "Item id").option("--add <value>", "Add linked doc entry (CSV/markdown pairs or - for stdin)", collect).option("--add-glob <value>", "Add linked doc entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)", collect).option("--remove <value>", "Remove linked doc by path (path=<value>, path:<value>, plain path, or - for stdin)", collect).option("--migrate <value>", "Migrate linked doc paths in-place (from=<prefix>,to=<prefix>; repeatable)", collect).option("--note <value>", "Note attached to every link added by --add/--add-glob in this invocation (embedded note= wins)").option("--list", "List linked docs without mutating").option("--validate-paths", "Validate linked doc paths for existence and file shape").option("--audit", "Audit linked doc usage across all items for this item's linked paths").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage docs linked to an item.").action(async (id, options, command) => {
|
|
788
804
|
const globalOptions = getGlobalOptions(command);
|
|
789
805
|
const startedAt = Date.now();
|
|
790
806
|
const addValues = Array.isArray(options.add) ? options.add : [];
|
|
791
807
|
const addGlobValues = Array.isArray(options.addGlob) ? options.addGlob : [];
|
|
792
808
|
const removeValues = Array.isArray(options.remove) ? options.remove : [];
|
|
793
809
|
const migrateValues = Array.isArray(options.migrate) ? options.migrate : [];
|
|
794
|
-
const { runDocs } = await import("./docs-
|
|
810
|
+
const { runDocs } = await import("./docs-I3BAF5WH.js");
|
|
795
811
|
const result = await runDocs(id, {
|
|
796
812
|
add: addValues,
|
|
797
813
|
addGlob: addGlobValues,
|
|
798
814
|
remove: removeValues,
|
|
799
815
|
migrate: migrateValues,
|
|
816
|
+
note: typeof options.note === "string" ? options.note : void 0,
|
|
800
817
|
list: Boolean(options.list),
|
|
801
818
|
validatePaths: Boolean(options.validatePaths),
|
|
802
819
|
audit: Boolean(options.audit),
|
|
@@ -831,6 +848,6 @@ function registerMutationCommands(program) {
|
|
|
831
848
|
export {
|
|
832
849
|
registerMutationCommands
|
|
833
850
|
};
|
|
834
|
-
//# sourceMappingURL=register-mutation-
|
|
851
|
+
//# sourceMappingURL=register-mutation-LJDNVREU.js.map
|
|
835
852
|
|
|
836
|
-
//# debugId=
|
|
853
|
+
//# debugId=5cbbc60e-2417-5f4f-bb35-757e6c45886a
|