@unbrained/pm-cli 2026.5.11 → 2026.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +3 -116
- package/CHANGELOG.md +18 -0
- package/PRD.md +18 -39
- package/README.md +8 -5
- package/dist/cli/commander-usage.js +27 -0
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.js +19 -4
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/calendar.js +5 -2
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/contracts.js +63 -19
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +58 -3
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +14 -3
- package/dist/cli/commands/extension.js +481 -95
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -8
- package/dist/cli/commands/index.js +1 -8
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +8 -0
- package/dist/cli/commands/reindex.js +96 -23
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/search.js +51 -25
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.js +14 -6
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +63 -0
- package/dist/cli/commands/upgrade.js +260 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/guide-topics.js +18 -16
- package/dist/cli/guide-topics.js.map +1 -1
- package/dist/cli/help-content.js +57 -18
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/main.js +73 -7
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +24 -142
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +49 -257
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +29 -198
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +181 -204
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +2 -2
- package/dist/cli/registration-helpers.js +1 -19
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/core/extensions/loader.js +7 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/packages/manifest.d.ts +38 -0
- package/dist/core/packages/manifest.js +221 -0
- package/dist/core/packages/manifest.js.map +1 -0
- package/dist/core/search/embedding-batches.d.ts +13 -1
- package/dist/core/search/embedding-batches.js +19 -1
- package/dist/core/search/embedding-batches.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +8 -1
- package/dist/core/store/front-matter-cache.js +20 -11
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +100 -43
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.d.ts +7 -0
- package/dist/sdk/cli-contracts/commander-mutation-options.js +477 -0
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -0
- package/dist/sdk/cli-contracts/commander-types.d.ts +21 -0
- package/dist/sdk/cli-contracts/commander-types.js +92 -0
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +22 -32
- package/dist/sdk/cli-contracts.js +155 -296
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.js +2 -0
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +29 -0
- package/dist/sdk/runtime.js +28 -0
- package/dist/sdk/runtime.js.map +1 -0
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/COMMANDS.md +17 -1
- package/docs/EXTENSIONS.md +169 -61
- package/docs/QUICKSTART.md +11 -2
- package/docs/README.md +4 -6
- package/docs/RELEASING.md +4 -2
- package/docs/SDK.md +79 -438
- package/package.json +6 -23
- package/packages/pm-beads/README.md +10 -0
- package/packages/pm-beads/extensions/beads/index.js +113 -0
- package/{.agents/pm/extensions/beads/index.js → packages/pm-beads/extensions/beads/index.ts} +42 -20
- package/{.agents/pm → packages/pm-beads}/extensions/beads/runtime.js +2 -17
- package/{.agents/pm → packages/pm-beads}/extensions/beads/runtime.ts +41 -18
- package/packages/pm-beads/package.json +50 -0
- package/packages/pm-calendar/README.md +13 -0
- package/packages/pm-calendar/extensions/calendar/index.js +56 -0
- package/packages/pm-calendar/extensions/calendar/index.ts +62 -0
- package/packages/pm-calendar/extensions/calendar/manifest.json +7 -0
- package/packages/pm-calendar/extensions/calendar/runtime.js +95 -0
- package/packages/pm-calendar/extensions/calendar/runtime.ts +104 -0
- package/packages/pm-calendar/package.json +51 -0
- package/packages/pm-governance-audit/README.md +23 -0
- package/packages/pm-governance-audit/extensions/governance-audit/index.js +117 -0
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +118 -0
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +7 -0
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +159 -0
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +176 -0
- package/packages/pm-governance-audit/package.json +52 -0
- package/packages/pm-guide-shell/README.md +23 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +76 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +81 -0
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +7 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +263 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +327 -0
- package/packages/pm-guide-shell/package.json +52 -0
- package/packages/pm-linked-test-adapters/README.md +24 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +101 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +102 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +7 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +142 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +173 -0
- package/packages/pm-linked-test-adapters/package.json +53 -0
- package/packages/pm-search-advanced/README.md +27 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +93 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +94 -0
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +7 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +120 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +144 -0
- package/packages/pm-search-advanced/package.json +54 -0
- package/packages/pm-templates/README.md +20 -0
- package/packages/pm-templates/extensions/templates/index.js +101 -0
- package/packages/pm-templates/extensions/templates/index.ts +109 -0
- package/packages/pm-templates/extensions/templates/manifest.json +7 -0
- package/packages/pm-templates/extensions/templates/runtime.js +226 -0
- package/packages/pm-templates/extensions/templates/runtime.ts +283 -0
- package/packages/pm-templates/package.json +50 -0
- package/packages/pm-todos/README.md +11 -0
- package/packages/pm-todos/extensions/todos/index.js +130 -0
- package/{.agents/pm/extensions/todos/index.js → packages/pm-todos/extensions/todos/index.ts} +47 -23
- package/{.agents/pm → packages/pm-todos}/extensions/todos/runtime.js +3 -18
- package/{.agents/pm → packages/pm-todos}/extensions/todos/runtime.ts +42 -20
- package/packages/pm-todos/package.json +51 -0
- package/plugins/pm-cli-claude/README.md +1 -2
- package/plugins/pm-cli-claude/hooks/session-start.mjs +4 -55
- package/plugins/pm-cli-claude/scripts/pm-mcp-server.mjs +4 -2
- package/plugins/pm-cli-codex/scripts/pm-mcp-server.mjs +4 -2
- package/.agents/pm/extensions/.managed-extensions.json +0 -42
- package/.agents/skills/HARNESS_COMPATIBILITY.md +0 -45
- package/.agents/skills/README.md +0 -21
- package/.agents/skills/pm-developer/SKILL.md +0 -73
- package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +0 -48
- package/.agents/skills/pm-developer/references/PROMPTS.md +0 -17
- package/.agents/skills/pm-extensions/SKILL.md +0 -57
- package/.agents/skills/pm-extensions/references/LIFECYCLE.md +0 -40
- package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +0 -25
- package/.agents/skills/pm-sdk/SKILL.md +0 -50
- package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +0 -31
- package/.agents/skills/pm-sdk/references/PROMPTS.md +0 -13
- package/.agents/skills/pm-user/SKILL.md +0 -59
- package/.agents/skills/pm-user/references/PROMPTS.md +0 -17
- package/.agents/skills/pm-user/references/WORKFLOWS.md +0 -35
- package/.pi/README.md +0 -35
- package/.pi/agents/pm-triage-agent.md +0 -19
- package/.pi/agents/pm-verification-agent.md +0 -21
- package/.pi/chains/pm-native-delivery.chain.md +0 -11
- package/.pi/extensions/pm-cli/index.js +0 -387
- package/.pi/prompts/pm-workflow.md +0 -5
- package/.pi/skills/pm-native/SKILL.md +0 -44
- package/.pi/skills/pm-release/SKILL.md +0 -35
- package/dist/pi/native.d.ts +0 -5
- package/dist/pi/native.js +0 -236
- package/dist/pi/native.js.map +0 -1
- package/docs/PI_PACKAGE.md +0 -141
- /package/{.agents/pm → packages/pm-beads}/extensions/beads/manifest.json +0 -0
- /package/{.agents/pm → packages/pm-todos}/extensions/todos/manifest.json +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { pathExists } from "../core/fs/fs-utils.js";
|
|
2
|
-
import { resolveItemTypeRegistry } from "../core/item/type-registry.js";
|
|
3
1
|
import { normalizeStatusInput } from "../core/item/status.js";
|
|
4
|
-
import {
|
|
2
|
+
import { resolveRuntimeStatusRegistry } from "../core/schema/runtime-schema.js";
|
|
5
3
|
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
6
4
|
import { PmCliError } from "../core/shared/errors.js";
|
|
7
|
-
import {
|
|
8
|
-
import { getSettingsPath, resolvePmRoot } from "../core/store/paths.js";
|
|
5
|
+
import { resolvePmRoot } from "../core/store/paths.js";
|
|
9
6
|
import { readSettings } from "../core/store/settings.js";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { buildBackgroundTestAllCommandArgs, buildBackgroundTestCommandArgs, collect, getGlobalOptions, invalidateSearchCachesForMutation, printError, printResult, } from "./registration-helpers.js";
|
|
8
|
+
let operationCommandsModulePromise = null;
|
|
9
|
+
async function loadOperationCommandsModule() {
|
|
10
|
+
operationCommandsModulePromise ??= import("./commands/index.js");
|
|
11
|
+
return operationCommandsModulePromise;
|
|
12
|
+
}
|
|
13
13
|
export function registerOperationCommands(program) {
|
|
14
14
|
program
|
|
15
15
|
.command("test")
|
|
@@ -48,6 +48,7 @@ export function registerOperationCommands(program) {
|
|
|
48
48
|
throw new PmCliError("--background does not support --add/--remove; update linked tests first, then run in background", EXIT_CODE.USAGE);
|
|
49
49
|
}
|
|
50
50
|
if (runInBackground) {
|
|
51
|
+
const { runStartBackgroundRun } = await loadOperationCommandsModule();
|
|
51
52
|
const result = await runStartBackgroundRun({
|
|
52
53
|
kind: "test",
|
|
53
54
|
commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, remove: removeValues }),
|
|
@@ -61,6 +62,7 @@ export function registerOperationCommands(program) {
|
|
|
61
62
|
}
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
65
|
+
const { runTest } = await loadOperationCommandsModule();
|
|
64
66
|
const result = await runTest(id, {
|
|
65
67
|
add: addValues,
|
|
66
68
|
remove: removeValues,
|
|
@@ -118,6 +120,7 @@ export function registerOperationCommands(program) {
|
|
|
118
120
|
const startedAt = Date.now();
|
|
119
121
|
const runInBackground = options.background === true;
|
|
120
122
|
if (runInBackground) {
|
|
123
|
+
const { runStartBackgroundRun } = await loadOperationCommandsModule();
|
|
121
124
|
const result = await runStartBackgroundRun({
|
|
122
125
|
kind: "test-all",
|
|
123
126
|
commandArgs: buildBackgroundTestAllCommandArgs(options),
|
|
@@ -130,6 +133,7 @@ export function registerOperationCommands(program) {
|
|
|
130
133
|
}
|
|
131
134
|
return;
|
|
132
135
|
}
|
|
136
|
+
const { runTestAll } = await loadOperationCommandsModule();
|
|
133
137
|
const result = await runTestAll({
|
|
134
138
|
status: typeof options.status === "string" ? options.status : undefined,
|
|
135
139
|
limit: typeof options.limit === "string" ? options.limit : undefined,
|
|
@@ -157,103 +161,13 @@ export function registerOperationCommands(program) {
|
|
|
157
161
|
printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);
|
|
158
162
|
}
|
|
159
163
|
});
|
|
160
|
-
const testRunsCommand = program
|
|
161
|
-
.command("test-runs")
|
|
162
|
-
.description("Manage background linked-test runs.")
|
|
163
|
-
.action(async (_options, command) => {
|
|
164
|
-
const globalOptions = getGlobalOptions(command);
|
|
165
|
-
const startedAt = Date.now();
|
|
166
|
-
const result = await runTestRunsList({}, globalOptions);
|
|
167
|
-
printResult(result, globalOptions);
|
|
168
|
-
if (globalOptions.profile) {
|
|
169
|
-
printError(`profile:command=test-runs took_ms=${Date.now() - startedAt}`);
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
testRunsCommand
|
|
173
|
-
.command("list")
|
|
174
|
-
.option("--status <value>", "Filter by background run status")
|
|
175
|
-
.option("--limit <value>", "Limit number of runs returned")
|
|
176
|
-
.description("List background test runs.")
|
|
177
|
-
.action(async (options, command) => {
|
|
178
|
-
const globalOptions = getGlobalOptions(command);
|
|
179
|
-
const startedAt = Date.now();
|
|
180
|
-
const result = await runTestRunsList({
|
|
181
|
-
status: typeof options.status === "string" ? options.status : undefined,
|
|
182
|
-
limit: typeof options.limit === "string" ? options.limit : undefined,
|
|
183
|
-
}, globalOptions);
|
|
184
|
-
printResult(result, globalOptions);
|
|
185
|
-
if (globalOptions.profile) {
|
|
186
|
-
printError(`profile:command=test-runs list took_ms=${Date.now() - startedAt}`);
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
testRunsCommand
|
|
190
|
-
.command("status")
|
|
191
|
-
.argument("<runId>", "Background run id")
|
|
192
|
-
.description("Show status, health, and resource snapshot for a background run.")
|
|
193
|
-
.action(async (runId, _options, command) => {
|
|
194
|
-
const globalOptions = getGlobalOptions(command);
|
|
195
|
-
const startedAt = Date.now();
|
|
196
|
-
const result = await runTestRunsStatus(runId, globalOptions);
|
|
197
|
-
printResult(result, globalOptions);
|
|
198
|
-
if (globalOptions.profile) {
|
|
199
|
-
printError(`profile:command=test-runs status took_ms=${Date.now() - startedAt}`);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
testRunsCommand
|
|
203
|
-
.command("logs")
|
|
204
|
-
.argument("<runId>", "Background run id")
|
|
205
|
-
.option("--stream <value>", "Log stream selector: stdout|stderr|both")
|
|
206
|
-
.option("--tail <value>", "Tail number of lines per selected stream")
|
|
207
|
-
.description("Show tailed logs for a background run.")
|
|
208
|
-
.action(async (runId, options, command) => {
|
|
209
|
-
const globalOptions = getGlobalOptions(command);
|
|
210
|
-
const startedAt = Date.now();
|
|
211
|
-
const result = await runTestRunsLogs(runId, {
|
|
212
|
-
stream: typeof options.stream === "string" ? options.stream : undefined,
|
|
213
|
-
tail: typeof options.tail === "string" ? options.tail : undefined,
|
|
214
|
-
}, globalOptions);
|
|
215
|
-
printResult(result, globalOptions);
|
|
216
|
-
if (globalOptions.profile) {
|
|
217
|
-
printError(`profile:command=test-runs logs took_ms=${Date.now() - startedAt}`);
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
testRunsCommand
|
|
221
|
-
.command("stop")
|
|
222
|
-
.argument("<runId>", "Background run id")
|
|
223
|
-
.option("--force", "Force-stop via SIGKILL")
|
|
224
|
-
.description("Stop a running background test run.")
|
|
225
|
-
.action(async (runId, options, command) => {
|
|
226
|
-
const globalOptions = getGlobalOptions(command);
|
|
227
|
-
const startedAt = Date.now();
|
|
228
|
-
const result = await runTestRunsStop(runId, { force: options.force === true }, globalOptions);
|
|
229
|
-
printResult(result, globalOptions);
|
|
230
|
-
if (globalOptions.profile) {
|
|
231
|
-
printError(`profile:command=test-runs stop took_ms=${Date.now() - startedAt}`);
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
testRunsCommand
|
|
235
|
-
.command("resume")
|
|
236
|
-
.argument("<runId>", "Background run id")
|
|
237
|
-
.option("--author <value>", "Resume author (falls back to PM_AUTHOR/settings)")
|
|
238
|
-
.description("Resume a previously terminal background test run by starting a new attempt.")
|
|
239
|
-
.action(async (runId, options, command) => {
|
|
240
|
-
const globalOptions = getGlobalOptions(command);
|
|
241
|
-
const startedAt = Date.now();
|
|
242
|
-
const result = await runTestRunsResume(runId, {
|
|
243
|
-
author: typeof options.author === "string" ? options.author : undefined,
|
|
244
|
-
noExtensions: globalOptions.noExtensions === true,
|
|
245
|
-
}, globalOptions);
|
|
246
|
-
printResult(result, globalOptions);
|
|
247
|
-
if (globalOptions.profile) {
|
|
248
|
-
printError(`profile:command=test-runs resume took_ms=${Date.now() - startedAt}`);
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
164
|
program
|
|
252
165
|
.command("test-runs-worker", { hidden: true })
|
|
253
166
|
.argument("<runId>", "Background run id")
|
|
254
167
|
.description("Internal background worker command.")
|
|
255
168
|
.action(async (runId, _options, command) => {
|
|
256
169
|
const globalOptions = getGlobalOptions(command);
|
|
170
|
+
const { runTestRunsWorker } = await loadOperationCommandsModule();
|
|
257
171
|
await runTestRunsWorker(runId, globalOptions);
|
|
258
172
|
});
|
|
259
173
|
program
|
|
@@ -262,6 +176,7 @@ export function registerOperationCommands(program) {
|
|
|
262
176
|
.action(async (_options, command) => {
|
|
263
177
|
const globalOptions = getGlobalOptions(command);
|
|
264
178
|
const startedAt = Date.now();
|
|
179
|
+
const { runStats } = await loadOperationCommandsModule();
|
|
265
180
|
const result = await runStats(globalOptions);
|
|
266
181
|
printResult(result, globalOptions);
|
|
267
182
|
if (globalOptions.profile) {
|
|
@@ -282,6 +197,7 @@ export function registerOperationCommands(program) {
|
|
|
282
197
|
.action(async (options, command) => {
|
|
283
198
|
const globalOptions = getGlobalOptions(command);
|
|
284
199
|
const startedAt = Date.now();
|
|
200
|
+
const { runHealth } = await loadOperationCommandsModule();
|
|
285
201
|
const result = await runHealth(globalOptions, {
|
|
286
202
|
strictDirectories: Boolean(options.strictDirectories),
|
|
287
203
|
checkOnly: Boolean(options.checkOnly),
|
|
@@ -319,6 +235,7 @@ export function registerOperationCommands(program) {
|
|
|
319
235
|
.action(async (options, command) => {
|
|
320
236
|
const globalOptions = getGlobalOptions(command);
|
|
321
237
|
const startedAt = Date.now();
|
|
238
|
+
const { runValidate } = await loadOperationCommandsModule();
|
|
322
239
|
const result = await runValidate({
|
|
323
240
|
checkMetadata: Boolean(options.checkMetadata),
|
|
324
241
|
metadataProfile: typeof options.metadataProfile === "string" ? options.metadataProfile : undefined,
|
|
@@ -350,6 +267,7 @@ export function registerOperationCommands(program) {
|
|
|
350
267
|
.action(async (options, command) => {
|
|
351
268
|
const globalOptions = getGlobalOptions(command);
|
|
352
269
|
const startedAt = Date.now();
|
|
270
|
+
const { runGc } = await loadOperationCommandsModule();
|
|
353
271
|
const result = await runGc(globalOptions, {
|
|
354
272
|
dryRun: options.dryRun === true,
|
|
355
273
|
scope: Array.isArray(options.scope) ? options.scope : [],
|
|
@@ -372,6 +290,7 @@ export function registerOperationCommands(program) {
|
|
|
372
290
|
.action(async (options, command) => {
|
|
373
291
|
const globalOptions = getGlobalOptions(command);
|
|
374
292
|
const startedAt = Date.now();
|
|
293
|
+
const { runContracts } = await loadOperationCommandsModule();
|
|
375
294
|
const result = await runContracts({
|
|
376
295
|
action: typeof options.action === "string" ? options.action : undefined,
|
|
377
296
|
command: typeof options.command === "string" ? options.command : undefined,
|
|
@@ -395,6 +314,7 @@ export function registerOperationCommands(program) {
|
|
|
395
314
|
.action(async (id, options, command) => {
|
|
396
315
|
const globalOptions = getGlobalOptions(command);
|
|
397
316
|
const startedAt = Date.now();
|
|
317
|
+
const { runClaim } = await loadOperationCommandsModule();
|
|
398
318
|
const result = await runClaim(id, Boolean(options.force), globalOptions, {
|
|
399
319
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
400
320
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
@@ -416,6 +336,7 @@ export function registerOperationCommands(program) {
|
|
|
416
336
|
.action(async (id, options, command) => {
|
|
417
337
|
const globalOptions = getGlobalOptions(command);
|
|
418
338
|
const startedAt = Date.now();
|
|
339
|
+
const { runRelease } = await loadOperationCommandsModule();
|
|
419
340
|
const result = await runRelease(id, Boolean(options.force), globalOptions, {
|
|
420
341
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
421
342
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
@@ -446,9 +367,10 @@ export function registerOperationCommands(program) {
|
|
|
446
367
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
447
368
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
448
369
|
};
|
|
449
|
-
const
|
|
370
|
+
const commands = await loadOperationCommandsModule();
|
|
371
|
+
const claimResult = await commands.runClaim(id, force, globalOptions, mutationOptions);
|
|
450
372
|
await invalidateSearchCachesForMutation(globalOptions, claimResult);
|
|
451
|
-
const updateResult = await runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);
|
|
373
|
+
const updateResult = await commands.runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);
|
|
452
374
|
await invalidateSearchCachesForMutation(globalOptions, updateResult);
|
|
453
375
|
printResult({ id, action: "start_task", claim: claimResult, update: updateResult }, globalOptions);
|
|
454
376
|
if (globalOptions.profile) {
|
|
@@ -474,9 +396,10 @@ export function registerOperationCommands(program) {
|
|
|
474
396
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
475
397
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
476
398
|
};
|
|
477
|
-
const
|
|
399
|
+
const commands = await loadOperationCommandsModule();
|
|
400
|
+
const updateResult = await commands.runUpdate(id, { ...mutationOptions, status: openStatus, force }, globalOptions);
|
|
478
401
|
await invalidateSearchCachesForMutation(globalOptions, updateResult);
|
|
479
|
-
const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
|
|
402
|
+
const releaseResult = await commands.runRelease(id, force, globalOptions, mutationOptions);
|
|
480
403
|
await invalidateSearchCachesForMutation(globalOptions, releaseResult);
|
|
481
404
|
printResult({ id, action: "pause_task", update: updateResult, release: releaseResult }, globalOptions);
|
|
482
405
|
if (globalOptions.profile) {
|
|
@@ -500,111 +423,19 @@ export function registerOperationCommands(program) {
|
|
|
500
423
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
501
424
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
502
425
|
};
|
|
503
|
-
const
|
|
426
|
+
const commands = await loadOperationCommandsModule();
|
|
427
|
+
const closeResult = await commands.runClose(id, reason, {
|
|
504
428
|
...mutationOptions,
|
|
505
429
|
validateClose: typeof options.validateClose === "string" ? options.validateClose : undefined,
|
|
506
430
|
force,
|
|
507
431
|
}, globalOptions);
|
|
508
432
|
await invalidateSearchCachesForMutation(globalOptions, closeResult);
|
|
509
|
-
const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);
|
|
433
|
+
const releaseResult = await commands.runRelease(id, force, globalOptions, mutationOptions);
|
|
510
434
|
await invalidateSearchCachesForMutation(globalOptions, releaseResult);
|
|
511
435
|
printResult({ id, action: "close_task", close: closeResult, release: releaseResult }, globalOptions);
|
|
512
436
|
if (globalOptions.profile) {
|
|
513
437
|
printError(`profile:command=close-task took_ms=${Date.now() - startedAt}`);
|
|
514
438
|
}
|
|
515
439
|
});
|
|
516
|
-
program
|
|
517
|
-
.command("completion")
|
|
518
|
-
.argument("<shell>", "Shell type: bash, zsh, or fish")
|
|
519
|
-
.option("--eager-tags", "Embed current tracker tags directly in generated scripts (legacy eager mode)")
|
|
520
|
-
.description("Generate shell completion for pm.")
|
|
521
|
-
.action(async (shell, options, command) => {
|
|
522
|
-
const globalOptions = getGlobalOptions(command);
|
|
523
|
-
const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
|
|
524
|
-
let completionTypes;
|
|
525
|
-
let completionTags;
|
|
526
|
-
let completionStatuses;
|
|
527
|
-
const completionCommandFlags = {};
|
|
528
|
-
const eagerTags = Boolean(options.eagerTags);
|
|
529
|
-
if (await pathExists(getSettingsPath(pmRoot))) {
|
|
530
|
-
const settings = await readSettings(pmRoot);
|
|
531
|
-
const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
|
|
532
|
-
const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
|
|
533
|
-
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
534
|
-
completionTypes = typeRegistry.types;
|
|
535
|
-
completionStatuses = statusRegistry.definitions.map((definition) => definition.id);
|
|
536
|
-
for (const [commandKey, definitions] of runtimeFieldRegistry.command_to_fields.entries()) {
|
|
537
|
-
if (commandKey !== "list" &&
|
|
538
|
-
commandKey !== "create" &&
|
|
539
|
-
commandKey !== "update" &&
|
|
540
|
-
commandKey !== "search" &&
|
|
541
|
-
commandKey !== "calendar" &&
|
|
542
|
-
commandKey !== "context") {
|
|
543
|
-
continue;
|
|
544
|
-
}
|
|
545
|
-
const runtimeFlags = new Set();
|
|
546
|
-
for (const definition of definitions) {
|
|
547
|
-
runtimeFlags.add(`--${definition.cli_flag}`);
|
|
548
|
-
for (const alias of definition.cli_aliases) {
|
|
549
|
-
if (alias.startsWith("--") || (alias.startsWith("-") && !alias.startsWith("--"))) {
|
|
550
|
-
runtimeFlags.add(alias);
|
|
551
|
-
}
|
|
552
|
-
else {
|
|
553
|
-
runtimeFlags.add(`--${alias}`);
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
completionCommandFlags[commandKey] = [...runtimeFlags].sort((left, right) => left.localeCompare(right));
|
|
558
|
-
}
|
|
559
|
-
if (completionCommandFlags.update) {
|
|
560
|
-
completionCommandFlags["update-many"] = [...completionCommandFlags.update];
|
|
561
|
-
}
|
|
562
|
-
if (eagerTags) {
|
|
563
|
-
const items = await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);
|
|
564
|
-
completionTags = [...new Set(items.flatMap((item) => item.tags ?? []).map((tag) => tag.trim()).filter((tag) => tag.length > 0))]
|
|
565
|
-
.sort((left, right) => left.localeCompare(right));
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
const result = runCompletion(shell, completionTypes, completionTags ?? [], eagerTags, {
|
|
569
|
-
statuses: completionStatuses,
|
|
570
|
-
command_flags: completionCommandFlags,
|
|
571
|
-
});
|
|
572
|
-
if (globalOptions.json) {
|
|
573
|
-
printResult(result, globalOptions);
|
|
574
|
-
}
|
|
575
|
-
else if (!globalOptions.quiet) {
|
|
576
|
-
writeStdout(`${result.script}\n`);
|
|
577
|
-
}
|
|
578
|
-
if (globalOptions.profile) {
|
|
579
|
-
printError(`profile:command=completion took_ms=0`);
|
|
580
|
-
}
|
|
581
|
-
});
|
|
582
|
-
program
|
|
583
|
-
.command("completion-tags", { hidden: true })
|
|
584
|
-
.description("Internal dynamic completion tag source.")
|
|
585
|
-
.action(async (_options, command) => {
|
|
586
|
-
const globalOptions = getGlobalOptions(command);
|
|
587
|
-
const startedAt = Date.now();
|
|
588
|
-
const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);
|
|
589
|
-
let tags = [];
|
|
590
|
-
if (await pathExists(getSettingsPath(pmRoot))) {
|
|
591
|
-
const settings = await readSettings(pmRoot);
|
|
592
|
-
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
593
|
-
const items = await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);
|
|
594
|
-
tags = [...new Set(items.flatMap((item) => item.tags ?? []).map((tag) => tag.trim()).filter((tag) => tag.length > 0))].sort((left, right) => left.localeCompare(right));
|
|
595
|
-
}
|
|
596
|
-
if (globalOptions.json) {
|
|
597
|
-
printResult({ tags, count: tags.length }, globalOptions);
|
|
598
|
-
}
|
|
599
|
-
else if (!globalOptions.quiet) {
|
|
600
|
-
writeStdout(tags.join("\n"));
|
|
601
|
-
if (tags.length > 0) {
|
|
602
|
-
writeStdout("\n");
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
if (globalOptions.profile) {
|
|
606
|
-
printError(`profile:command=completion-tags took_ms=${Date.now() - startedAt}`);
|
|
607
|
-
}
|
|
608
|
-
});
|
|
609
440
|
}
|
|
610
441
|
//# sourceMappingURL=register-operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-operations.js","sourceRoot":"/","sources":["cli/register-operations.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Command } from \"commander\";\nimport { pathExists } from \"../core/fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../core/item/type-registry.js\";\nimport { normalizeStatusInput } from \"../core/item/status.js\";\nimport { resolveRuntimeFieldRegistry, resolveRuntimeStatusRegistry } from \"../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { listAllFrontMatter } from \"../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../core/store/paths.js\";\nimport { readSettings } from \"../core/store/settings.js\";\nimport { getActiveExtensionRegistrations } from \"../core/extensions/index.js\";\nimport {\n runClaim,\n runClose,\n runCompletion,\n runContracts,\n runGc,\n runHealth,\n runRelease,\n runStartBackgroundRun,\n runStats,\n runTest,\n runTestAll,\n runTestRunsList,\n runTestRunsLogs,\n runTestRunsResume,\n runTestRunsStatus,\n runTestRunsStop,\n runTestRunsWorker,\n runUpdate,\n runValidate,\n} from \"./commands/index.js\";\nimport {\n buildBackgroundTestAllCommandArgs,\n buildBackgroundTestCommandArgs,\n collect,\n getGlobalOptions,\n invalidateSearchCachesForMutation,\n printError,\n printResult,\n writeStdout,\n} from \"./registration-helpers.js\";\n\nexport function registerOperationCommands(program: Command): void {\n program\n .command(\"test\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--add <value>\", \"Add linked test entry (CSV/markdown pairs or - for stdin)\", collect)\n .option(\"--remove <value>\", \"Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)\", collect)\n .option(\"--run\", \"Run linked test commands\")\n .option(\"--background\", \"Run linked tests in managed background mode\")\n .option(\"--timeout <seconds>\", \"Default run timeout in seconds\")\n .option(\"--progress\", \"Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)\")\n .option(\"--env-set <value>\", \"Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)\", collect)\n .option(\"--env-clear <value>\", \"Clear environment variable(s) for linked-test runs (NAME, repeatable)\", collect)\n .option(\"--shared-host-safe\", \"Apply additive shared-host-safe runtime defaults for linked-test runs\")\n .option(\"--pm-context <mode>\", \"PM linked-test context mode: schema|tracker|auto (default: schema)\")\n .option(\"--override-linked-pm-context\", \"Force run-level --pm-context to override per-linked-test pm_context_mode metadata\")\n .option(\"--fail-on-context-mismatch\", \"Fail linked PM commands when context item counts differ\")\n .option(\"--fail-on-skipped\", \"Treat skipped linked tests as dependency failures\")\n .option(\"--fail-on-empty-test-run\", \"Treat successful linked-test commands that report zero executed tests as failures\")\n .option(\"--require-assertions-for-pm\", \"Require assertion metadata for linked PM command tests\")\n .option(\"--check-context\", \"Preflight linked PM command context diagnostics before executing commands\")\n .option(\"--auto-pm-context\", \"Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Manage tests linked to an item and optionally run them.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addValues = Array.isArray(options.add) ? (options.add as string[]) : [];\n const removeValues = Array.isArray(options.remove) ? (options.remove as string[]) : [];\n const runInBackground = options.background === true;\n if (runInBackground && options.run !== true) {\n throw new PmCliError(\"--background requires --run\", EXIT_CODE.USAGE);\n }\n if (runInBackground && (addValues.length > 0 || removeValues.length > 0)) {\n throw new PmCliError(\"--background does not support --add/--remove; update linked tests first, then run in background\", EXIT_CODE.USAGE);\n }\n if (runInBackground) {\n const result = await runStartBackgroundRun({\n kind: \"test\",\n commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, remove: removeValues }),\n targetId: id,\n author: typeof options.author === \"string\" ? options.author : undefined,\n noExtensions: globalOptions.noExtensions === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test took_ms=${Date.now() - startedAt}`);\n }\n return;\n }\n const result = await runTest(id, {\n add: addValues,\n remove: removeValues,\n run: Boolean(options.run),\n timeout: typeof options.timeout === \"string\" ? options.timeout : undefined,\n progress: Boolean(options.progress),\n envSet: Array.isArray(options.envSet) ? (options.envSet as string[]) : [],\n envClear: Array.isArray(options.envClear) ? (options.envClear as string[]) : [],\n sharedHostSafe: Boolean(options.sharedHostSafe),\n pmContext: typeof options.pmContext === \"string\" ? options.pmContext : undefined,\n overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),\n failOnContextMismatch: Boolean(options.failOnContextMismatch),\n failOnSkipped: Boolean(options.failOnSkipped),\n failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),\n requireAssertionsForPm: Boolean(options.requireAssertionsForPm),\n checkContext: Boolean(options.checkContext),\n autoPmContext: Boolean(options.autoPmContext),\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n if (addValues.length > 0 || removeValues.length > 0 || options.run === true) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (result.run_results.some((entry) => entry.status === \"failed\") || result.fail_on_skipped_triggered === true) {\n process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;\n }\n if (globalOptions.profile) {\n printError(`profile:command=test took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"test-all\")\n .description(\"Run linked tests across matching items.\")\n .option(\"--status <value>\", \"Filter items by status before running tests\")\n .option(\"--limit <n>\", \"Limit matching items before running linked tests\")\n .option(\"--offset <n>\", \"Skip matching items before running linked tests\")\n .option(\"--background\", \"Run linked tests in managed background mode\")\n .option(\"--timeout <seconds>\", \"Default run timeout in seconds\")\n .option(\"--progress\", \"Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)\")\n .option(\"--env-set <value>\", \"Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)\", collect)\n .option(\"--env-clear <value>\", \"Clear environment variable(s) for linked-test runs (NAME, repeatable)\", collect)\n .option(\"--shared-host-safe\", \"Apply additive shared-host-safe runtime defaults for linked-test runs\")\n .option(\"--pm-context <mode>\", \"PM linked-test context mode: schema|tracker|auto (default: schema)\")\n .option(\"--override-linked-pm-context\", \"Force run-level --pm-context to override per-linked-test pm_context_mode metadata\")\n .option(\"--fail-on-context-mismatch\", \"Fail linked PM commands when context item counts differ\")\n .option(\"--fail-on-skipped\", \"Treat skipped linked tests as dependency failures\")\n .option(\"--fail-on-empty-test-run\", \"Treat successful linked-test commands that report zero executed tests as failures\")\n .option(\"--require-assertions-for-pm\", \"Require assertion metadata for linked PM command tests\")\n .option(\"--check-context\", \"Preflight linked PM command context diagnostics before executing commands\")\n .option(\"--auto-pm-context\", \"Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const runInBackground = options.background === true;\n if (runInBackground) {\n const result = await runStartBackgroundRun({\n kind: \"test-all\",\n commandArgs: buildBackgroundTestAllCommandArgs(options),\n statusFilter: typeof options.status === \"string\" ? options.status : undefined,\n noExtensions: globalOptions.noExtensions === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);\n }\n return;\n }\n const result = await runTestAll({\n status: typeof options.status === \"string\" ? options.status : undefined,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n offset: typeof options.offset === \"string\" ? options.offset : undefined,\n timeout: typeof options.timeout === \"string\" ? options.timeout : undefined,\n progress: Boolean(options.progress),\n envSet: Array.isArray(options.envSet) ? (options.envSet as string[]) : [],\n envClear: Array.isArray(options.envClear) ? (options.envClear as string[]) : [],\n sharedHostSafe: Boolean(options.sharedHostSafe),\n pmContext: typeof options.pmContext === \"string\" ? options.pmContext : undefined,\n overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),\n failOnContextMismatch: Boolean(options.failOnContextMismatch),\n failOnSkipped: Boolean(options.failOnSkipped),\n failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),\n requireAssertionsForPm: Boolean(options.requireAssertionsForPm),\n checkContext: Boolean(options.checkContext),\n autoPmContext: Boolean(options.autoPmContext),\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, { ids: result.results.map((entry) => entry.id) });\n printResult(result, globalOptions);\n if (result.failed > 0 || result.fail_on_skipped_triggered === true) {\n process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;\n }\n if (globalOptions.profile) {\n printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const testRunsCommand = program\n .command(\"test-runs\")\n .description(\"Manage background linked-test runs.\")\n .action(async (_options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsList({}, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs took_ms=${Date.now() - startedAt}`);\n }\n });\n\n testRunsCommand\n .command(\"list\")\n .option(\"--status <value>\", \"Filter by background run status\")\n .option(\"--limit <value>\", \"Limit number of runs returned\")\n .description(\"List background test runs.\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsList({\n status: typeof options.status === \"string\" ? options.status : undefined,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs list took_ms=${Date.now() - startedAt}`);\n }\n });\n\n testRunsCommand\n .command(\"status\")\n .argument(\"<runId>\", \"Background run id\")\n .description(\"Show status, health, and resource snapshot for a background run.\")\n .action(async (runId: string, _options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsStatus(runId, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs status took_ms=${Date.now() - startedAt}`);\n }\n });\n\n testRunsCommand\n .command(\"logs\")\n .argument(\"<runId>\", \"Background run id\")\n .option(\"--stream <value>\", \"Log stream selector: stdout|stderr|both\")\n .option(\"--tail <value>\", \"Tail number of lines per selected stream\")\n .description(\"Show tailed logs for a background run.\")\n .action(async (runId: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsLogs(runId, {\n stream: typeof options.stream === \"string\" ? options.stream : undefined,\n tail: typeof options.tail === \"string\" ? options.tail : undefined,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs logs took_ms=${Date.now() - startedAt}`);\n }\n });\n\n testRunsCommand\n .command(\"stop\")\n .argument(\"<runId>\", \"Background run id\")\n .option(\"--force\", \"Force-stop via SIGKILL\")\n .description(\"Stop a running background test run.\")\n .action(async (runId: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsStop(runId, { force: options.force === true }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs stop took_ms=${Date.now() - startedAt}`);\n }\n });\n\n testRunsCommand\n .command(\"resume\")\n .argument(\"<runId>\", \"Background run id\")\n .option(\"--author <value>\", \"Resume author (falls back to PM_AUTHOR/settings)\")\n .description(\"Resume a previously terminal background test run by starting a new attempt.\")\n .action(async (runId: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runTestRunsResume(runId, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n noExtensions: globalOptions.noExtensions === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-runs resume took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"test-runs-worker\", { hidden: true })\n .argument(\"<runId>\", \"Background run id\")\n .description(\"Internal background worker command.\")\n .action(async (runId: string, _options: Record<string, unknown>, command: Command) => {\n const globalOptions = getGlobalOptions(command);\n await runTestRunsWorker(runId, globalOptions);\n });\n\n program\n .command(\"stats\")\n .description(\"Show project tracker statistics.\")\n .action(async (_options: unknown, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runStats(globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=stats took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"health\")\n .description(\"Show project tracker health checks.\")\n .option(\"--strict-directories\", \"Treat optional item-type directories as required failures\")\n .option(\"--check-only\", \"Run read-only health diagnostics without refreshing vectors\")\n .option(\"--check-telemetry\", \"Probe telemetry endpoint health and include network diagnostics\")\n .option(\"--no-refresh\", \"Disable automatic vector refresh attempts during health checks\")\n .option(\"--refresh-vectors\", \"Explicitly enable vector refresh attempts during health checks\")\n .option(\"--verbose-stale-items\", \"Include full stale vectorization ID lists in health output\")\n .option(\"--strict-exit\", \"Return non-zero exit when health warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runHealth(globalOptions, {\n strictDirectories: Boolean(options.strictDirectories),\n checkOnly: Boolean(options.checkOnly),\n checkTelemetry: Boolean(options.checkTelemetry),\n noRefresh: Boolean(options.noRefresh),\n refreshVectors: Boolean(options.refreshVectors),\n verboseStaleItems: Boolean(options.verboseStaleItems),\n });\n printResult(result, globalOptions);\n const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);\n if (strictExit && !result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=health took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"validate\")\n .description(\"Run standalone metadata, resolution, lifecycle, files, linked-command reference, and history drift validation checks.\")\n .option(\"--check-metadata\", \"Run metadata completeness checks\")\n .option(\"--metadata-profile <value>\", \"Select metadata validation profile for --check-metadata (core|strict|custom)\")\n .option(\"--check-resolution\", \"Run closed-item resolution metadata checks\")\n .option(\"--check-lifecycle\", \"Run active-item lifecycle governance drift checks\")\n .option(\"--check-stale-blockers\", \"Include stale blocker-pattern diagnostics in lifecycle checks\")\n .option(\"--dependency-cycle-severity <value>\", \"Set dependency-cycle warning policy for lifecycle checks (off|warn|error)\")\n .option(\"--check-files\", \"Run linked-file and orphaned-file checks\")\n .option(\"--check-command-references\", \"Run linked-command PM-ID reference checks\")\n .option(\"--scan-mode <value>\", \"Select file candidate scan mode for --check-files (default|tracked-all|tracked-all-strict)\")\n .option(\"--include-pm-internals\", \"Include PM storage internals in tracked-all candidate scans\")\n .option(\"--verbose-file-lists\", \"Include full file-path lists for validate --check-files details\")\n .option(\"--strict-exit\", \"Return non-zero exit when validation warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit\")\n .option(\"--check-history-drift\", \"Run item/history hash drift checks\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runValidate({\n checkMetadata: Boolean(options.checkMetadata),\n metadataProfile: typeof options.metadataProfile === \"string\" ? options.metadataProfile : undefined,\n checkResolution: Boolean(options.checkResolution),\n checkLifecycle: Boolean(options.checkLifecycle),\n checkStaleBlockers: Boolean(options.checkStaleBlockers),\n dependencyCycleSeverity: typeof options.dependencyCycleSeverity === \"string\" ? options.dependencyCycleSeverity : undefined,\n checkFiles: Boolean(options.checkFiles),\n checkCommandReferences: Boolean(options.checkCommandReferences),\n scanMode: typeof options.scanMode === \"string\" ? options.scanMode : undefined,\n includePmInternals: Boolean(options.includePmInternals),\n verboseFileLists: Boolean(options.verboseFileLists),\n checkHistoryDrift: Boolean(options.checkHistoryDrift),\n }, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);\n if (strictExit && !result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=validate took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"gc\")\n .option(\"--dry-run\", \"Preview cleanup targets without deleting files\")\n .option(\"--scope <value>\", \"Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime\", collect)\n .description(\"Clean optional cache artifacts and show a summary.\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runGc(globalOptions, {\n dryRun: options.dryRun === true,\n scope: Array.isArray(options.scope) ? (options.scope as string[]) : [],\n });\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=gc took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"contracts\")\n .description(\"Show machine-readable command and schema contracts for agents.\")\n .option(\"--action <value>\", \"Filter tool schema branches to a specific action\")\n .option(\"--command <value>\", \"Scope contracts output to one CLI command (narrow-by-default)\")\n .option(\"--schema-only\", \"Return schema-focused output only\")\n .option(\"--flags-only\", \"Return command flag contracts only\")\n .option(\"--availability-only\", \"Return action availability surface only\")\n .option(\"--runtime-only\", \"Include only actions invocable in the current runtime\")\n .option(\"--active-only\", \"Alias for --runtime-only\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runContracts({\n action: typeof options.action === \"string\" ? options.action : undefined,\n command: typeof options.command === \"string\" ? options.command : undefined,\n schemaOnly: Boolean(options.schemaOnly),\n flagsOnly: Boolean(options.flagsOnly),\n availabilityOnly: Boolean(options.availabilityOnly),\n runtimeOnly: Boolean(options.runtimeOnly) || Boolean(options.activeOnly),\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=contracts took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"claim\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force claim override\")\n .description(\"Claim an item for active work.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runClaim(id, Boolean(options.force), globalOptions, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n });\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=claim took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"release\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--allow-audit-release\", \"Allow non-owner release handoffs without requiring --force\")\n .option(\"--force\", \"Force release override\")\n .description(\"Release an item's active claim.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const result = await runRelease(id, Boolean(options.force), globalOptions, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n allowAuditRelease: options.allowAuditRelease === true,\n });\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=release took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"start-task\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership or terminal override when required\")\n .description(\"Lifecycle alias: claim an item and move it to in_progress.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const inProgressStatus = normalizeStatusInput(\"in_progress\", statusRegistry) ?? statusRegistry.open_status;\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const claimResult = await runClaim(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, claimResult);\n const updateResult = await runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, updateResult);\n printResult({ id, action: \"start_task\", claim: claimResult, update: updateResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=start-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"pause-task\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override when required\")\n .description(\"Lifecycle alias: move an item to open and release its claim.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const openStatus = statusRegistry.open_status;\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const updateResult = await runUpdate(id, { ...mutationOptions, status: openStatus, force }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, updateResult);\n const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, releaseResult);\n printResult({ id, action: \"pause_task\", update: updateResult, release: releaseResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=pause-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"close-task\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"<reason>\", \"Close reason text\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--validate-close <value>\", \"Close-time validation mode: off|warn|strict\")\n .option(\"--force\", \"Force ownership or terminal override when required\")\n .description(\"Lifecycle alias: close an item with reason and release assignment metadata.\")\n .action(async (id: string, reason: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const closeResult = await runClose(id, reason, {\n ...mutationOptions,\n validateClose: typeof options.validateClose === \"string\" ? options.validateClose : undefined,\n force,\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, closeResult);\n const releaseResult = await runRelease(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, releaseResult);\n printResult({ id, action: \"close_task\", close: closeResult, release: releaseResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=close-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"completion\")\n .argument(\"<shell>\", \"Shell type: bash, zsh, or fish\")\n .option(\"--eager-tags\", \"Embed current tracker tags directly in generated scripts (legacy eager mode)\")\n .description(\"Generate shell completion for pm.\")\n .action(async (shell: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n let completionTypes: string[] | undefined;\n let completionTags: string[] | undefined;\n let completionStatuses: string[] | undefined;\n const completionCommandFlags: Partial<\n Record<\"list\" | \"create\" | \"update\" | \"update-many\" | \"search\" | \"calendar\" | \"context\", string[]>\n > = {};\n const eagerTags = Boolean(options.eagerTags);\n if (await pathExists(getSettingsPath(pmRoot))) {\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n completionTypes = typeRegistry.types;\n completionStatuses = statusRegistry.definitions.map((definition) => definition.id);\n for (const [commandKey, definitions] of runtimeFieldRegistry.command_to_fields.entries()) {\n if (\n commandKey !== \"list\" &&\n commandKey !== \"create\" &&\n commandKey !== \"update\" &&\n commandKey !== \"search\" &&\n commandKey !== \"calendar\" &&\n commandKey !== \"context\"\n ) {\n continue;\n }\n const runtimeFlags = new Set<string>();\n for (const definition of definitions) {\n runtimeFlags.add(`--${definition.cli_flag}`);\n for (const alias of definition.cli_aliases) {\n if (alias.startsWith(\"--\") || (alias.startsWith(\"-\") && !alias.startsWith(\"--\"))) {\n runtimeFlags.add(alias);\n } else {\n runtimeFlags.add(`--${alias}`);\n }\n }\n }\n completionCommandFlags[commandKey] = [...runtimeFlags].sort((left, right) => left.localeCompare(right));\n }\n if (completionCommandFlags.update) {\n completionCommandFlags[\"update-many\"] = [...completionCommandFlags.update];\n }\n if (eagerTags) {\n const items = await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n completionTags = [...new Set(items.flatMap((item) => item.tags ?? []).map((tag) => tag.trim()).filter((tag) => tag.length > 0))]\n .sort((left, right) => left.localeCompare(right));\n }\n }\n const result = runCompletion(shell, completionTypes, completionTags ?? [], eagerTags, {\n statuses: completionStatuses,\n command_flags: completionCommandFlags,\n });\n if (globalOptions.json) {\n printResult(result, globalOptions);\n } else if (!globalOptions.quiet) {\n writeStdout(`${result.script}\\n`);\n }\n if (globalOptions.profile) {\n printError(`profile:command=completion took_ms=0`);\n }\n });\n\n program\n .command(\"completion-tags\", { hidden: true })\n .description(\"Internal dynamic completion tag source.\")\n .action(async (_options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n let tags: string[] = [];\n if (await pathExists(getSettingsPath(pmRoot))) {\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const items = await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n tags = [...new Set(items.flatMap((item) => item.tags ?? []).map((tag) => tag.trim()).filter((tag) => tag.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n }\n if (globalOptions.json) {\n printResult({ tags, count: tags.length }, globalOptions);\n } else if (!globalOptions.quiet) {\n writeStdout(tags.join(\"\\n\"));\n if (tags.length > 0) {\n writeStdout(\"\\n\");\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=completion-tags took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"register-operations.js","sourceRoot":"/","sources":["cli/register-operations.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Command } from \"commander\";\nimport { normalizeStatusInput } from \"../core/item/status.js\";\nimport { resolveRuntimeStatusRegistry } from \"../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { resolvePmRoot } from \"../core/store/paths.js\";\nimport { readSettings } from \"../core/store/settings.js\";\nimport {\n buildBackgroundTestAllCommandArgs,\n buildBackgroundTestCommandArgs,\n collect,\n getGlobalOptions,\n invalidateSearchCachesForMutation,\n printError,\n printResult,\n} from \"./registration-helpers.js\";\n\ntype OperationCommandsModule = typeof import(\"./commands/index.js\");\n\nlet operationCommandsModulePromise: Promise<OperationCommandsModule> | null = null;\n\nasync function loadOperationCommandsModule(): Promise<OperationCommandsModule> {\n operationCommandsModulePromise ??= import(\"./commands/index.js\");\n return operationCommandsModulePromise;\n}\n\nexport function registerOperationCommands(program: Command): void {\n program\n .command(\"test\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--add <value>\", \"Add linked test entry (CSV/markdown pairs or - for stdin)\", collect)\n .option(\"--remove <value>\", \"Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)\", collect)\n .option(\"--run\", \"Run linked test commands\")\n .option(\"--background\", \"Run linked tests in managed background mode\")\n .option(\"--timeout <seconds>\", \"Default run timeout in seconds\")\n .option(\"--progress\", \"Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)\")\n .option(\"--env-set <value>\", \"Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)\", collect)\n .option(\"--env-clear <value>\", \"Clear environment variable(s) for linked-test runs (NAME, repeatable)\", collect)\n .option(\"--shared-host-safe\", \"Apply additive shared-host-safe runtime defaults for linked-test runs\")\n .option(\"--pm-context <mode>\", \"PM linked-test context mode: schema|tracker|auto (default: schema)\")\n .option(\"--override-linked-pm-context\", \"Force run-level --pm-context to override per-linked-test pm_context_mode metadata\")\n .option(\"--fail-on-context-mismatch\", \"Fail linked PM commands when context item counts differ\")\n .option(\"--fail-on-skipped\", \"Treat skipped linked tests as dependency failures\")\n .option(\"--fail-on-empty-test-run\", \"Treat successful linked-test commands that report zero executed tests as failures\")\n .option(\"--require-assertions-for-pm\", \"Require assertion metadata for linked PM command tests\")\n .option(\"--check-context\", \"Preflight linked PM command context diagnostics before executing commands\")\n .option(\"--auto-pm-context\", \"Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Manage tests linked to an item and optionally run them.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addValues = Array.isArray(options.add) ? (options.add as string[]) : [];\n const removeValues = Array.isArray(options.remove) ? (options.remove as string[]) : [];\n const runInBackground = options.background === true;\n if (runInBackground && options.run !== true) {\n throw new PmCliError(\"--background requires --run\", EXIT_CODE.USAGE);\n }\n if (runInBackground && (addValues.length > 0 || removeValues.length > 0)) {\n throw new PmCliError(\"--background does not support --add/--remove; update linked tests first, then run in background\", EXIT_CODE.USAGE);\n }\n if (runInBackground) {\n const { runStartBackgroundRun } = await loadOperationCommandsModule();\n const result = await runStartBackgroundRun({\n kind: \"test\",\n commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, remove: removeValues }),\n targetId: id,\n author: typeof options.author === \"string\" ? options.author : undefined,\n noExtensions: globalOptions.noExtensions === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test took_ms=${Date.now() - startedAt}`);\n }\n return;\n }\n const { runTest } = await loadOperationCommandsModule();\n const result = await runTest(id, {\n add: addValues,\n remove: removeValues,\n run: Boolean(options.run),\n timeout: typeof options.timeout === \"string\" ? options.timeout : undefined,\n progress: Boolean(options.progress),\n envSet: Array.isArray(options.envSet) ? (options.envSet as string[]) : [],\n envClear: Array.isArray(options.envClear) ? (options.envClear as string[]) : [],\n sharedHostSafe: Boolean(options.sharedHostSafe),\n pmContext: typeof options.pmContext === \"string\" ? options.pmContext : undefined,\n overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),\n failOnContextMismatch: Boolean(options.failOnContextMismatch),\n failOnSkipped: Boolean(options.failOnSkipped),\n failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),\n requireAssertionsForPm: Boolean(options.requireAssertionsForPm),\n checkContext: Boolean(options.checkContext),\n autoPmContext: Boolean(options.autoPmContext),\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n if (addValues.length > 0 || removeValues.length > 0 || options.run === true) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (result.run_results.some((entry) => entry.status === \"failed\") || result.fail_on_skipped_triggered === true) {\n process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;\n }\n if (globalOptions.profile) {\n printError(`profile:command=test took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"test-all\")\n .description(\"Run linked tests across matching items.\")\n .option(\"--status <value>\", \"Filter items by status before running tests\")\n .option(\"--limit <n>\", \"Limit matching items before running linked tests\")\n .option(\"--offset <n>\", \"Skip matching items before running linked tests\")\n .option(\"--background\", \"Run linked tests in managed background mode\")\n .option(\"--timeout <seconds>\", \"Default run timeout in seconds\")\n .option(\"--progress\", \"Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)\")\n .option(\"--env-set <value>\", \"Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)\", collect)\n .option(\"--env-clear <value>\", \"Clear environment variable(s) for linked-test runs (NAME, repeatable)\", collect)\n .option(\"--shared-host-safe\", \"Apply additive shared-host-safe runtime defaults for linked-test runs\")\n .option(\"--pm-context <mode>\", \"PM linked-test context mode: schema|tracker|auto (default: schema)\")\n .option(\"--override-linked-pm-context\", \"Force run-level --pm-context to override per-linked-test pm_context_mode metadata\")\n .option(\"--fail-on-context-mismatch\", \"Fail linked PM commands when context item counts differ\")\n .option(\"--fail-on-skipped\", \"Treat skipped linked tests as dependency failures\")\n .option(\"--fail-on-empty-test-run\", \"Treat successful linked-test commands that report zero executed tests as failures\")\n .option(\"--require-assertions-for-pm\", \"Require assertion metadata for linked PM command tests\")\n .option(\"--check-context\", \"Preflight linked PM command context diagnostics before executing commands\")\n .option(\"--auto-pm-context\", \"Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const runInBackground = options.background === true;\n if (runInBackground) {\n const { runStartBackgroundRun } = await loadOperationCommandsModule();\n const result = await runStartBackgroundRun({\n kind: \"test-all\",\n commandArgs: buildBackgroundTestAllCommandArgs(options),\n statusFilter: typeof options.status === \"string\" ? options.status : undefined,\n noExtensions: globalOptions.noExtensions === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);\n }\n return;\n }\n const { runTestAll } = await loadOperationCommandsModule();\n const result = await runTestAll({\n status: typeof options.status === \"string\" ? options.status : undefined,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n offset: typeof options.offset === \"string\" ? options.offset : undefined,\n timeout: typeof options.timeout === \"string\" ? options.timeout : undefined,\n progress: Boolean(options.progress),\n envSet: Array.isArray(options.envSet) ? (options.envSet as string[]) : [],\n envClear: Array.isArray(options.envClear) ? (options.envClear as string[]) : [],\n sharedHostSafe: Boolean(options.sharedHostSafe),\n pmContext: typeof options.pmContext === \"string\" ? options.pmContext : undefined,\n overrideLinkedPmContext: Boolean(options.overrideLinkedPmContext),\n failOnContextMismatch: Boolean(options.failOnContextMismatch),\n failOnSkipped: Boolean(options.failOnSkipped),\n failOnEmptyTestRun: Boolean(options.failOnEmptyTestRun),\n requireAssertionsForPm: Boolean(options.requireAssertionsForPm),\n checkContext: Boolean(options.checkContext),\n autoPmContext: Boolean(options.autoPmContext),\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, { ids: result.results.map((entry) => entry.id) });\n printResult(result, globalOptions);\n if (result.failed > 0 || result.fail_on_skipped_triggered === true) {\n process.exitCode = EXIT_CODE.DEPENDENCY_FAILED;\n }\n if (globalOptions.profile) {\n printError(`profile:command=test-all took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"test-runs-worker\", { hidden: true })\n .argument(\"<runId>\", \"Background run id\")\n .description(\"Internal background worker command.\")\n .action(async (runId: string, _options: Record<string, unknown>, command: Command) => {\n const globalOptions = getGlobalOptions(command);\n const { runTestRunsWorker } = await loadOperationCommandsModule();\n await runTestRunsWorker(runId, globalOptions);\n });\n\n program\n .command(\"stats\")\n .description(\"Show project tracker statistics.\")\n .action(async (_options: unknown, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runStats } = await loadOperationCommandsModule();\n const result = await runStats(globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=stats took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"health\")\n .description(\"Show project tracker health checks.\")\n .option(\"--strict-directories\", \"Treat optional item-type directories as required failures\")\n .option(\"--check-only\", \"Run read-only health diagnostics without refreshing vectors\")\n .option(\"--check-telemetry\", \"Probe telemetry endpoint health and include network diagnostics\")\n .option(\"--no-refresh\", \"Disable automatic vector refresh attempts during health checks\")\n .option(\"--refresh-vectors\", \"Explicitly enable vector refresh attempts during health checks\")\n .option(\"--verbose-stale-items\", \"Include full stale vectorization ID lists in health output\")\n .option(\"--strict-exit\", \"Return non-zero exit when health warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runHealth } = await loadOperationCommandsModule();\n const result = await runHealth(globalOptions, {\n strictDirectories: Boolean(options.strictDirectories),\n checkOnly: Boolean(options.checkOnly),\n checkTelemetry: Boolean(options.checkTelemetry),\n noRefresh: Boolean(options.noRefresh),\n refreshVectors: Boolean(options.refreshVectors),\n verboseStaleItems: Boolean(options.verboseStaleItems),\n });\n printResult(result, globalOptions);\n const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);\n if (strictExit && !result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=health took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"validate\")\n .description(\"Run standalone metadata, resolution, lifecycle, files, linked-command reference, and history drift validation checks.\")\n .option(\"--check-metadata\", \"Run metadata completeness checks\")\n .option(\"--metadata-profile <value>\", \"Select metadata validation profile for --check-metadata (core|strict|custom)\")\n .option(\"--check-resolution\", \"Run closed-item resolution metadata checks\")\n .option(\"--check-lifecycle\", \"Run active-item lifecycle governance drift checks\")\n .option(\"--check-stale-blockers\", \"Include stale blocker-pattern diagnostics in lifecycle checks\")\n .option(\"--dependency-cycle-severity <value>\", \"Set dependency-cycle warning policy for lifecycle checks (off|warn|error)\")\n .option(\"--check-files\", \"Run linked-file and orphaned-file checks\")\n .option(\"--check-command-references\", \"Run linked-command PM-ID reference checks\")\n .option(\"--scan-mode <value>\", \"Select file candidate scan mode for --check-files (default|tracked-all|tracked-all-strict)\")\n .option(\"--include-pm-internals\", \"Include PM storage internals in tracked-all candidate scans\")\n .option(\"--verbose-file-lists\", \"Include full file-path lists for validate --check-files details\")\n .option(\"--strict-exit\", \"Return non-zero exit when validation warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit\")\n .option(\"--check-history-drift\", \"Run item/history hash drift checks\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runValidate } = await loadOperationCommandsModule();\n const result = await runValidate({\n checkMetadata: Boolean(options.checkMetadata),\n metadataProfile: typeof options.metadataProfile === \"string\" ? options.metadataProfile : undefined,\n checkResolution: Boolean(options.checkResolution),\n checkLifecycle: Boolean(options.checkLifecycle),\n checkStaleBlockers: Boolean(options.checkStaleBlockers),\n dependencyCycleSeverity: typeof options.dependencyCycleSeverity === \"string\" ? options.dependencyCycleSeverity : undefined,\n checkFiles: Boolean(options.checkFiles),\n checkCommandReferences: Boolean(options.checkCommandReferences),\n scanMode: typeof options.scanMode === \"string\" ? options.scanMode : undefined,\n includePmInternals: Boolean(options.includePmInternals),\n verboseFileLists: Boolean(options.verboseFileLists),\n checkHistoryDrift: Boolean(options.checkHistoryDrift),\n }, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(options.strictExit) || Boolean(options.failOnWarn);\n if (strictExit && !result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=validate took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"gc\")\n .option(\"--dry-run\", \"Preview cleanup targets without deleting files\")\n .option(\"--scope <value>\", \"Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime\", collect)\n .description(\"Clean optional cache artifacts and show a summary.\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runGc } = await loadOperationCommandsModule();\n const result = await runGc(globalOptions, {\n dryRun: options.dryRun === true,\n scope: Array.isArray(options.scope) ? (options.scope as string[]) : [],\n });\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=gc took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"contracts\")\n .description(\"Show machine-readable command and schema contracts for agents.\")\n .option(\"--action <value>\", \"Filter tool schema branches to a specific action\")\n .option(\"--command <value>\", \"Scope contracts output to one CLI command (narrow-by-default)\")\n .option(\"--schema-only\", \"Return schema-focused output only\")\n .option(\"--flags-only\", \"Return command flag contracts only\")\n .option(\"--availability-only\", \"Return action availability surface only\")\n .option(\"--runtime-only\", \"Include only actions invocable in the current runtime\")\n .option(\"--active-only\", \"Alias for --runtime-only\")\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runContracts } = await loadOperationCommandsModule();\n const result = await runContracts({\n action: typeof options.action === \"string\" ? options.action : undefined,\n command: typeof options.command === \"string\" ? options.command : undefined,\n schemaOnly: Boolean(options.schemaOnly),\n flagsOnly: Boolean(options.flagsOnly),\n availabilityOnly: Boolean(options.availabilityOnly),\n runtimeOnly: Boolean(options.runtimeOnly) || Boolean(options.activeOnly),\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=contracts took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"claim\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force claim override\")\n .description(\"Claim an item for active work.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runClaim } = await loadOperationCommandsModule();\n const result = await runClaim(id, Boolean(options.force), globalOptions, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n });\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=claim took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"release\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--allow-audit-release\", \"Allow non-owner release handoffs without requiring --force\")\n .option(\"--force\", \"Force release override\")\n .description(\"Release an item's active claim.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runRelease } = await loadOperationCommandsModule();\n const result = await runRelease(id, Boolean(options.force), globalOptions, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n allowAuditRelease: options.allowAuditRelease === true,\n });\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=release took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"start-task\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership or terminal override when required\")\n .description(\"Lifecycle alias: claim an item and move it to in_progress.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const inProgressStatus = normalizeStatusInput(\"in_progress\", statusRegistry) ?? statusRegistry.open_status;\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const commands = await loadOperationCommandsModule();\n const claimResult = await commands.runClaim(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, claimResult);\n const updateResult = await commands.runUpdate(id, { ...mutationOptions, status: inProgressStatus, force }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, updateResult);\n printResult({ id, action: \"start_task\", claim: claimResult, update: updateResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=start-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"pause-task\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override when required\")\n .description(\"Lifecycle alias: move an item to open and release its claim.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pmRoot = resolvePmRoot(process.cwd(), globalOptions.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const openStatus = statusRegistry.open_status;\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const commands = await loadOperationCommandsModule();\n const updateResult = await commands.runUpdate(id, { ...mutationOptions, status: openStatus, force }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, updateResult);\n const releaseResult = await commands.runRelease(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, releaseResult);\n printResult({ id, action: \"pause_task\", update: updateResult, release: releaseResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=pause-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"close-task\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"<reason>\", \"Close reason text\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--validate-close <value>\", \"Close-time validation mode: off|warn|strict\")\n .option(\"--force\", \"Force ownership or terminal override when required\")\n .description(\"Lifecycle alias: close an item with reason and release assignment metadata.\")\n .action(async (id: string, reason: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const force = Boolean(options.force);\n const mutationOptions = {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n const commands = await loadOperationCommandsModule();\n const closeResult = await commands.runClose(id, reason, {\n ...mutationOptions,\n validateClose: typeof options.validateClose === \"string\" ? options.validateClose : undefined,\n force,\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, closeResult);\n const releaseResult = await commands.runRelease(id, force, globalOptions, mutationOptions);\n await invalidateSearchCachesForMutation(globalOptions, releaseResult);\n printResult({ id, action: \"close_task\", close: closeResult, release: releaseResult }, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=close-task took_ms=${Date.now() - startedAt}`);\n }\n });\n\n}\n"]}
|