@a-company/paradigm 3.9.0 → 3.11.0
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/dist/{accept-orchestration-DIGPJVUR.js → accept-orchestration-Z35I5AYN.js} +5 -5
- package/dist/{assessment-loader-T4GPBHLB.js → assessment-loader-C5EOUM47.js} +0 -1
- package/dist/{chunk-Y4XZWCHK.js → chunk-24AAVLME.js} +8 -8
- package/dist/{chunk-4N6AYEEA.js → chunk-3TWXFFZ3.js} +1 -1
- package/dist/{chunk-5S5CF3ER.js → chunk-4ZO3ZOPM.js} +19 -2141
- package/dist/{chunk-6RNYVBSG.js → chunk-CP6IZGUN.js} +4 -4
- package/dist/{chunk-M2XMTJHQ.js → chunk-DS5QY37M.js} +201 -287
- package/dist/chunk-F6EJKLF4.js +4971 -0
- package/dist/chunk-MW5DMGBB.js +255 -0
- package/dist/{chunk-KFHK6EBI.js → chunk-OSYMVGWX.js} +59 -3
- package/dist/{chunk-GY5KO3YZ.js → chunk-RDPXBMHK.js} +1 -1
- package/dist/{chunk-ADOBV4PH.js → chunk-UVI3OH3G.js} +6 -2127
- package/dist/{diff-J6C5IHPV.js → diff-PZAYCIAE.js} +5 -5
- package/dist/{dist-OLFOTUHS.js → dist-6SX5ZKKF.js} +2 -2
- package/dist/{dist-OMY7U6NR.js → dist-YB7T54QE.js} +1 -2
- package/dist/{doctor-TQYRF7KK.js → doctor-3YQ55536.js} +1 -1
- package/dist/drift-FH2UY64B.js +251 -0
- package/dist/{flow-7JUH6D4H.js → flow-MCKPJGRJ.js} +1 -1
- package/dist/{habits-ZJBAL4HD.js → habits-NC2TRMRV.js} +2 -2
- package/dist/{hooks-DLZEYHI3.js → hooks-JXYHVGIN.js} +1 -1
- package/dist/index.js +77 -51
- package/dist/mcp.js +5502 -9984
- package/dist/{orchestrate-FAV64G2R.js → orchestrate-BGRFBGBH.js} +5 -5
- package/dist/{plugin-update-checker-TWBWUSAG.js → plugin-update-checker-S3W4BUJO.js} +0 -1
- package/dist/portal-check-2HI4FFD6.js +42 -0
- package/dist/portal-compliance-KQCTAQTJ.js +18 -0
- package/dist/{providers-NQ67LO2Z.js → providers-IONB4YRJ.js} +1 -1
- package/dist/reindex-ZM6J53UP.js +11 -0
- package/dist/{sentinel-KDIGZWKT.js → sentinel-BGCISNIK.js} +1 -1
- package/dist/{server-NN7WDAZJ.js → server-3K3TTJH3.js} +1 -1
- package/dist/{shift-KJWSJLWN.js → shift-6I6N6RNK.js} +36 -8
- package/dist/{spawn-EO7B2UM3.js → spawn-WGFJ5RQZ.js} +5 -5
- package/dist/{task-loader-GUX4KS6N.js → task-loader-7M2FCBX6.js} +0 -1
- package/dist/{team-6CCNANKE.js → team-AFOKQ7YQ.js} +6 -6
- package/dist/{triage-B5W6GZLT.js → triage-MKKIWBSW.js} +2 -2
- package/dist/workspace-VBTW7OYL.js +271 -0
- package/package.json +2 -1
- package/dist/chunk-HPC3JAUP.js +0 -42
- /package/dist/{chunk-CCG6KYBT.js → chunk-5N5LR2KS.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -110,7 +110,7 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
|
|
|
110
110
|
program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
|
|
111
111
|
program.command("init").description("Initialize Paradigm in the current project").option("-f, --force", "Overwrite existing files").option("--name <name>", "Project name").option("--ide <ide>", "Target IDE: cursor, copilot, windsurf, claude").option("--migrate", "Output migration prompt for existing IDE files").option("--quick", "Non-interactive mode with smart defaults").option("--dry-run", "Show what would be created without creating").action(initCommand);
|
|
112
112
|
program.command("shift").description("Full project setup in one command (init + team init + scan + sync all IDEs + doctor)").option("-f, --force", "Reinitialize even if already setup").option("-q, --quick", "Skip slow operations (scan)").option("--verify", "Run health checks after setup").option("--ide <ide>", "Target specific IDE instead of all").option("--configure-models", "Force model configuration prompts for team agents").action(async (options) => {
|
|
113
|
-
const { shiftCommand } = await import("./shift-
|
|
113
|
+
const { shiftCommand } = await import("./shift-6I6N6RNK.js");
|
|
114
114
|
await shiftCommand(options);
|
|
115
115
|
});
|
|
116
116
|
program.command("setup [path]").description("Interactive setup wizard for Paradigm").option("-y, --yes", "Accept all defaults (non-interactive)").option("-f, --force", "Overwrite existing .paradigm config").action(async (path2, options) => {
|
|
@@ -132,6 +132,10 @@ portalCmd.command("validate [path]").description("Validate portal.yaml configura
|
|
|
132
132
|
const { gateValidateCommand } = await import("./validate-F3YHBCRZ.js");
|
|
133
133
|
await gateValidateCommand(path2);
|
|
134
134
|
});
|
|
135
|
+
portalCmd.command("check").description("Check portal gate implementation compliance (declared vs used)").option("--json", "Output as JSON").action(async (options) => {
|
|
136
|
+
const { portalCheckCommand } = await import("./portal-check-2HI4FFD6.js");
|
|
137
|
+
await portalCheckCommand(options);
|
|
138
|
+
});
|
|
135
139
|
portalCmd.command("test [path]").description("Test portals and generate test files").option("--generate", "Generate test files from portal.yaml").option("--portal <portalId>", "Test specific portal").option("--component", "Validate component access").option("--framework <framework>", "Test framework (jest, vitest, mocha)", "jest").option("--output <dir>", "Output directory for generated tests", "tests/portals").action(async (path2, options) => {
|
|
136
140
|
const { gateTestCommand } = await import("./test-DK2RWLTK.js");
|
|
137
141
|
await gateTestCommand(path2, options);
|
|
@@ -204,7 +208,7 @@ scanCmd.action(() => {
|
|
|
204
208
|
});
|
|
205
209
|
var flowCmd = program.command("flow").description("Flow management commands");
|
|
206
210
|
flowCmd.command("diagram <flowId>").description("Generate Mermaid diagram for a flow").option("-o, --output <path>", "Output file path").action(async (flowId, options) => {
|
|
207
|
-
const { flowDiagramCommand } = await import("./flow-
|
|
211
|
+
const { flowDiagramCommand } = await import("./flow-MCKPJGRJ.js");
|
|
208
212
|
await flowDiagramCommand(flowId, options);
|
|
209
213
|
});
|
|
210
214
|
flowCmd.action(() => {
|
|
@@ -212,7 +216,7 @@ flowCmd.action(() => {
|
|
|
212
216
|
});
|
|
213
217
|
var teamCmd = program.command("team").description("Multi-agent orchestration commands");
|
|
214
218
|
teamCmd.command("init [path]").description("Initialize team configuration with default agents").option("-f, --force", "Overwrite existing configuration").option("--configure-models", "Force model configuration prompts").option("--no-configure-models", "Skip model configuration").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
215
|
-
const { teamInitCommand } = await import("./team-
|
|
219
|
+
const { teamInitCommand } = await import("./team-AFOKQ7YQ.js");
|
|
216
220
|
await teamInitCommand(path2, {
|
|
217
221
|
...options,
|
|
218
222
|
configureModels: options.configureModels,
|
|
@@ -220,47 +224,47 @@ teamCmd.command("init [path]").description("Initialize team configuration with d
|
|
|
220
224
|
});
|
|
221
225
|
});
|
|
222
226
|
teamCmd.command("status [path]").description("Show current team status").option("--running", "Show only running orchestrations").option("--id <id>", "Show specific orchestration").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
223
|
-
const { teamStatusCommand } = await import("./team-
|
|
227
|
+
const { teamStatusCommand } = await import("./team-AFOKQ7YQ.js");
|
|
224
228
|
await teamStatusCommand(path2, options);
|
|
225
229
|
});
|
|
226
230
|
teamCmd.command("handoff [path]").description("Hand off current task to another agent").requiredOption("-t, --to <agent>", "Target agent name").option("-s, --summary <text>", "Summary of what was done").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
227
|
-
const { teamHandoffCommand } = await import("./team-
|
|
231
|
+
const { teamHandoffCommand } = await import("./team-AFOKQ7YQ.js");
|
|
228
232
|
await teamHandoffCommand(path2, options);
|
|
229
233
|
});
|
|
230
234
|
teamCmd.command("accept [handoff-id] [path]").description("Accept a pending handoff").option("-n, --note <text>", "Acceptance note").option("--json", "Output as JSON").action(async (handoffId, path2, options) => {
|
|
231
|
-
const { teamAcceptCommand } = await import("./team-
|
|
235
|
+
const { teamAcceptCommand } = await import("./team-AFOKQ7YQ.js");
|
|
232
236
|
await teamAcceptCommand(handoffId, path2, options);
|
|
233
237
|
});
|
|
234
238
|
teamCmd.command("check [path]").description("Check for conflicts and team health issues").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
235
|
-
const { teamCheckCommand } = await import("./team-
|
|
239
|
+
const { teamCheckCommand } = await import("./team-AFOKQ7YQ.js");
|
|
236
240
|
await teamCheckCommand(path2, options);
|
|
237
241
|
});
|
|
238
242
|
teamCmd.command("history [path]").description("Show full activity log").option("-l, --limit <number>", "Number of entries to show", "50").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
239
|
-
const { teamHistoryCommand } = await import("./team-
|
|
243
|
+
const { teamHistoryCommand } = await import("./team-AFOKQ7YQ.js");
|
|
240
244
|
await teamHistoryCommand(path2, { ...options, limit: parseInt(options.limit) });
|
|
241
245
|
});
|
|
242
246
|
teamCmd.command("reset [path]").description("Reset team state for fresh start").option("-f, --force", "Force reset even with pending work").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
243
|
-
const { teamResetCommand } = await import("./team-
|
|
247
|
+
const { teamResetCommand } = await import("./team-AFOKQ7YQ.js");
|
|
244
248
|
await teamResetCommand(path2, options);
|
|
245
249
|
});
|
|
246
250
|
teamCmd.command("spawn <agent> [path]").description("Spawn an AI agent to work on a task").requiredOption("-t, --task <task>", "Task for the agent to perform").option("-m, --model <model>", "Model to use: opus, sonnet, haiku").option("-p, --provider <provider>", "Provider: auto, claude, claude-code, claude-cli, manual").option("--budget <budget>", 'Budget limits (e.g., "tokens=100000,cost=2")').option("--timeout <ms>", "Timeout in milliseconds").option("--checkpoint", "Pause for approval before writes/deletes").option("-q, --quiet", "Suppress output").option("--json", "Output as JSON").action(async (agent, path2, options) => {
|
|
247
|
-
const { teamSpawnCommand } = await import("./spawn-
|
|
251
|
+
const { teamSpawnCommand } = await import("./spawn-WGFJ5RQZ.js");
|
|
248
252
|
await teamSpawnCommand(agent, path2, options);
|
|
249
253
|
});
|
|
250
254
|
teamCmd.command("orchestrate <task> [path]").description("Orchestrate a multi-agent task").option("--solo", "Run in solo mode (single Claude)").option("--faceted", "Run in faceted mode (multi-agent, default)").option("--compare", "Run both modes and compare results").option("--background", "Run in background mode (returns immediately)").option("--notify <methods>", "Notification methods: bell,desktop,file,webhook (default: bell)").option("-m, --model <model>", "Orchestrator model: opus, sonnet, haiku").option("-p, --provider <provider>", "Provider: auto, claude, claude-code, claude-cli, manual").option("--budget <budget>", 'Budget limits (e.g., "tokens=500000,cost=5")').option("--checkpoint", "Pause for approval between agents").option("--live", "Stream agent output live").option("--pm", "Enable PM governance (compliance checks before/after)").option("-q, --quiet", "Suppress output").option("--json", "Output as JSON").action(async (task, path2, options) => {
|
|
251
|
-
const { teamOrchestrateCommand } = await import("./orchestrate-
|
|
255
|
+
const { teamOrchestrateCommand } = await import("./orchestrate-BGRFBGBH.js");
|
|
252
256
|
await teamOrchestrateCommand(task, path2, options);
|
|
253
257
|
});
|
|
254
258
|
teamCmd.command("diff <orchestration-id> [path]").description("Show diff of changes from a completed orchestration").option("--full", "Show full file contents").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
|
|
255
|
-
const { teamDiffCommand } = await import("./diff-
|
|
259
|
+
const { teamDiffCommand } = await import("./diff-PZAYCIAE.js");
|
|
256
260
|
await teamDiffCommand(orchestrationId, path2, options);
|
|
257
261
|
});
|
|
258
262
|
teamCmd.command("accept-orch <orchestration-id> [path]").description("Accept orchestration changes").option("-n, --note <text>", "Acceptance note").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
|
|
259
|
-
const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-
|
|
263
|
+
const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-Z35I5AYN.js");
|
|
260
264
|
await teamAcceptOrchestrationCommand(orchestrationId, path2, options);
|
|
261
265
|
});
|
|
262
266
|
teamCmd.command("reject-orch <orchestration-id> [path]").description("Reject orchestration changes").option("-r, --reason <text>", "Rejection reason").option("--cleanup", "Delete created files").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
|
|
263
|
-
const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-
|
|
267
|
+
const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-Z35I5AYN.js");
|
|
264
268
|
await teamRejectOrchestrationCommand(orchestrationId, path2, options);
|
|
265
269
|
});
|
|
266
270
|
teamCmd.command("cost [path]").description("Show cost summary for orchestrations").option("--from <date>", "From date (ISO format)").option("--to <date>", "To date (ISO format)").option("--days <n>", "Last N days").option("-d, --detailed", "Show detailed breakdown").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
@@ -272,11 +276,11 @@ teamCmd.command("export [path]").description("Export orchestration data").option
|
|
|
272
276
|
await teamExportCommand(path2, options);
|
|
273
277
|
});
|
|
274
278
|
teamCmd.command("providers [path]").description("Show available agent providers and their status").option("--set <provider>", "Set preferred provider: auto, claude, claude-code, claude-cli, manual").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
275
|
-
const { teamProvidersCommand } = await import("./providers-
|
|
279
|
+
const { teamProvidersCommand } = await import("./providers-IONB4YRJ.js");
|
|
276
280
|
await teamProvidersCommand(path2, options);
|
|
277
281
|
});
|
|
278
282
|
teamCmd.command("models [path]").description("Configure or view agent model assignments").option("--refresh", "Refresh model cache from environment").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
279
|
-
const { teamModelsCommand } = await import("./team-
|
|
283
|
+
const { teamModelsCommand } = await import("./team-AFOKQ7YQ.js");
|
|
280
284
|
await teamModelsCommand(path2, options);
|
|
281
285
|
});
|
|
282
286
|
var agentsCmd = teamCmd.command("agents").description("Agent management commands");
|
|
@@ -291,7 +295,7 @@ agentsCmd.action(() => {
|
|
|
291
295
|
console.log("\nRun `paradigm team agents suggest --help` for options.\n");
|
|
292
296
|
});
|
|
293
297
|
teamCmd.action(async () => {
|
|
294
|
-
const { teamStatusCommand } = await import("./team-
|
|
298
|
+
const { teamStatusCommand } = await import("./team-AFOKQ7YQ.js");
|
|
295
299
|
await teamStatusCommand(void 0, {});
|
|
296
300
|
});
|
|
297
301
|
var pluginCmd = program.command("plugin").description("Plugin management commands");
|
|
@@ -303,10 +307,32 @@ pluginCmd.action(async () => {
|
|
|
303
307
|
const { pluginCheckCommand } = await import("./check-UZY647TB.js");
|
|
304
308
|
await pluginCheckCommand({});
|
|
305
309
|
});
|
|
310
|
+
var workspaceCmd = program.command("workspace").description("Multi-project workspace commands");
|
|
311
|
+
workspaceCmd.command("init").description("Create a .paradigm-workspace file from sibling projects").option("-n, --name <name>", "Workspace name (default: directory name)").option("-f, --force", "Overwrite existing workspace file").action(async (options) => {
|
|
312
|
+
const { workspaceInitCommand } = await import("./workspace-VBTW7OYL.js");
|
|
313
|
+
await workspaceInitCommand(options);
|
|
314
|
+
});
|
|
315
|
+
workspaceCmd.command("status").description("Show workspace member status and symbol counts").option("--json", "Output as JSON").action(async (options) => {
|
|
316
|
+
const { workspaceStatusCommand } = await import("./workspace-VBTW7OYL.js");
|
|
317
|
+
await workspaceStatusCommand(options);
|
|
318
|
+
});
|
|
319
|
+
workspaceCmd.command("reindex").description("Rebuild scan-index.json for all workspace members").option("-q, --quiet", "Suppress progress output").action(async (options) => {
|
|
320
|
+
const { workspaceReindexCommand } = await import("./workspace-VBTW7OYL.js");
|
|
321
|
+
await workspaceReindexCommand(options);
|
|
322
|
+
});
|
|
323
|
+
workspaceCmd.action(async () => {
|
|
324
|
+
const { workspaceStatusCommand } = await import("./workspace-VBTW7OYL.js");
|
|
325
|
+
await workspaceStatusCommand({});
|
|
326
|
+
});
|
|
306
327
|
program.command("doctor").description("Health check - validate Paradigm setup").action(async () => {
|
|
307
|
-
const { doctorCommand } = await import("./doctor-
|
|
328
|
+
const { doctorCommand } = await import("./doctor-3YQ55536.js");
|
|
308
329
|
await doctorCommand();
|
|
309
330
|
});
|
|
331
|
+
var driftCmd = program.command("drift").description("Aspect anchor drift detection");
|
|
332
|
+
driftCmd.command("check").description("Check aspect anchors for drift and auto-heal shifted anchors").option("--json", "Output as JSON").option("--auto-heal", "Auto-heal shifted anchors (default: true)").option("--no-auto-heal", "Disable auto-healing").action(async (options) => {
|
|
333
|
+
const { driftCheckCommand } = await import("./drift-FH2UY64B.js");
|
|
334
|
+
await driftCheckCommand(options);
|
|
335
|
+
});
|
|
310
336
|
var globalCmd = program.command("global").description("Manage Global Brain (~/.paradigm/)");
|
|
311
337
|
globalCmd.command("clean").description("Remove old files from ~/.paradigm/ (Global Brain rotation)").option("--older-than <duration>", "Remove files older than duration (e.g., 90d, 30d, 7d)", "90d").option("-n, --dry-run", "Show what would be deleted without deleting").action(async (options) => {
|
|
312
338
|
const { globalCleanCommand } = await import("./global-AXILUM5X.js");
|
|
@@ -504,93 +530,93 @@ historyCmd.option("--json", "Output as JSON").action(async (options) => {
|
|
|
504
530
|
});
|
|
505
531
|
var hooksCmd = program.command("hooks").description("Git hooks for automatic history capture");
|
|
506
532
|
hooksCmd.command("install").description("Install git hooks, Claude Code hooks, and Cursor hooks").option("-f, --force", "Overwrite existing hooks").option("--post-commit", "Only install post-commit hook").option("--pre-push", "Only install pre-push hook").option("--claude-code", "Only install Claude Code hooks (stop + pre-commit)").option("--cursor", "Only install Cursor hooks (.cursor/hooks.json)").option("--dry-run", "Show what would be installed without making changes").action(async (options) => {
|
|
507
|
-
const { hooksInstallCommand } = await import("./hooks-
|
|
533
|
+
const { hooksInstallCommand } = await import("./hooks-JXYHVGIN.js");
|
|
508
534
|
await hooksInstallCommand(options);
|
|
509
535
|
});
|
|
510
536
|
hooksCmd.command("uninstall").description("Remove paradigm hooks (git hooks, or --cursor for Cursor hooks)").option("--cursor", "Remove Cursor hooks instead of git hooks").option("--dry-run", "Show what would be removed without making changes").action(async (options) => {
|
|
511
|
-
const { hooksUninstallCommand } = await import("./hooks-
|
|
537
|
+
const { hooksUninstallCommand } = await import("./hooks-JXYHVGIN.js");
|
|
512
538
|
await hooksUninstallCommand(options);
|
|
513
539
|
});
|
|
514
540
|
hooksCmd.command("status").description("Check git hooks status").action(async () => {
|
|
515
|
-
const { hooksStatusCommand } = await import("./hooks-
|
|
541
|
+
const { hooksStatusCommand } = await import("./hooks-JXYHVGIN.js");
|
|
516
542
|
await hooksStatusCommand();
|
|
517
543
|
});
|
|
518
544
|
hooksCmd.action(async () => {
|
|
519
|
-
const { hooksStatusCommand } = await import("./hooks-
|
|
545
|
+
const { hooksStatusCommand } = await import("./hooks-JXYHVGIN.js");
|
|
520
546
|
await hooksStatusCommand();
|
|
521
547
|
});
|
|
522
548
|
var triageCmd = program.command("triage").description("Semantic error triage - incident management and pattern matching");
|
|
523
549
|
triageCmd.command("list").alias("ls").description("List recent incidents with matched patterns").option("-l, --limit <number>", "Maximum incidents to show", "10").option("-s, --status <status>", "Filter by status: open, investigating, resolved, wont-fix, all").option("--symbol <symbol>", "Filter by symbol (e.g., @checkout, ^auth)").option("-e, --env <environment>", "Filter by environment").option("--search <text>", "Search in error messages").option("--from <date>", "Filter from date (ISO format)").option("--to <date>", "Filter to date (ISO format)").option("--json", "Output as JSON").action(async (options) => {
|
|
524
|
-
const { triageListCommand } = await import("./triage-
|
|
550
|
+
const { triageListCommand } = await import("./triage-MKKIWBSW.js");
|
|
525
551
|
await triageListCommand(options);
|
|
526
552
|
});
|
|
527
553
|
triageCmd.command("show <id>").description("Show full incident details").option("--timeline", "Include flow timeline").option("--json", "Output as JSON").action(async (id, options) => {
|
|
528
|
-
const { triageShowCommand } = await import("./triage-
|
|
554
|
+
const { triageShowCommand } = await import("./triage-MKKIWBSW.js");
|
|
529
555
|
await triageShowCommand(id, options);
|
|
530
556
|
});
|
|
531
557
|
triageCmd.command("resolve <id>").description("Mark incident as resolved").option("-p, --pattern <patternId>", "Pattern that led to resolution").option("-c, --commit <hash>", "Git commit hash of fix").option("--pr <url>", "Pull request URL").option("-n, --notes <text>", "Resolution notes").option("--wont-fix", "Mark as will not fix").action(async (id, options) => {
|
|
532
|
-
const { triageResolveCommand } = await import("./triage-
|
|
558
|
+
const { triageResolveCommand } = await import("./triage-MKKIWBSW.js");
|
|
533
559
|
await triageResolveCommand(id, options);
|
|
534
560
|
});
|
|
535
561
|
triageCmd.command("note <id> <note>").description("Add a note to an incident").action(async (id, note) => {
|
|
536
|
-
const { triageNoteCommand } = await import("./triage-
|
|
562
|
+
const { triageNoteCommand } = await import("./triage-MKKIWBSW.js");
|
|
537
563
|
await triageNoteCommand(id, note);
|
|
538
564
|
});
|
|
539
565
|
triageCmd.command("link <id1> <id2>").description("Link two related incidents").action(async (id1, id2) => {
|
|
540
|
-
const { triageLinkCommand } = await import("./triage-
|
|
566
|
+
const { triageLinkCommand } = await import("./triage-MKKIWBSW.js");
|
|
541
567
|
await triageLinkCommand(id1, id2);
|
|
542
568
|
});
|
|
543
569
|
var triagePatternsCmd = triageCmd.command("patterns").description("Manage failure patterns");
|
|
544
570
|
triagePatternsCmd.command("list").alias("ls").description("List all patterns").option("--source <source>", "Filter by source: manual, suggested, imported, community").option("--min-confidence <score>", "Minimum confidence score").option("--json", "Output as JSON").action(async (options) => {
|
|
545
|
-
const { triagePatternsListCommand } = await import("./triage-
|
|
571
|
+
const { triagePatternsListCommand } = await import("./triage-MKKIWBSW.js");
|
|
546
572
|
await triagePatternsListCommand(options);
|
|
547
573
|
});
|
|
548
574
|
triagePatternsCmd.command("show <id>").description("Show pattern details").option("--json", "Output as JSON").action(async (id, options) => {
|
|
549
|
-
const { triagePatternsShowCommand } = await import("./triage-
|
|
575
|
+
const { triagePatternsShowCommand } = await import("./triage-MKKIWBSW.js");
|
|
550
576
|
await triagePatternsShowCommand(id, options);
|
|
551
577
|
});
|
|
552
578
|
triagePatternsCmd.command("add").description("Create a new pattern").requiredOption("--id <id>", "Pattern ID (kebab-case)").requiredOption("--name <name>", "Human-readable name").option("--description <text>", "Pattern description").option("--symbols <pairs>", 'Symbol criteria (e.g., "feature:@checkout,gate:^auth")').option("--error-contains <keywords>", "Error keywords (comma-separated)").option("--missing-signals <signals>", "Expected missing signals (comma-separated)").option("--strategy <strategy>", "Resolution strategy: retry, fallback, fix-data, fix-code, ignore, escalate", "fix-code").option("--priority <priority>", "Priority: low, medium, high, critical", "medium").option("--code-hint <text>", "Code hint for resolution").option("--tags <tags>", "Tags (comma-separated)").option("--from-incident <id>", "Generate suggestion from incident").action(async (options) => {
|
|
553
|
-
const { triagePatternsAddCommand } = await import("./triage-
|
|
579
|
+
const { triagePatternsAddCommand } = await import("./triage-MKKIWBSW.js");
|
|
554
580
|
await triagePatternsAddCommand(options);
|
|
555
581
|
});
|
|
556
582
|
triagePatternsCmd.command("delete <id>").alias("rm").description("Delete a pattern").action(async (id) => {
|
|
557
|
-
const { triagePatternsDeleteCommand } = await import("./triage-
|
|
583
|
+
const { triagePatternsDeleteCommand } = await import("./triage-MKKIWBSW.js");
|
|
558
584
|
await triagePatternsDeleteCommand(id);
|
|
559
585
|
});
|
|
560
586
|
triagePatternsCmd.command("test <id>").description("Test pattern against historical incidents").option("-l, --limit <number>", "Max incidents to test against", "100").option("--json", "Output as JSON").action(async (id, options) => {
|
|
561
|
-
const { triagePatternsTestCommand } = await import("./triage-
|
|
587
|
+
const { triagePatternsTestCommand } = await import("./triage-MKKIWBSW.js");
|
|
562
588
|
await triagePatternsTestCommand(id, options);
|
|
563
589
|
});
|
|
564
590
|
triagePatternsCmd.command("seed").description("Load built-in seed patterns").action(async () => {
|
|
565
|
-
const { triagePatternsSeedCommand } = await import("./triage-
|
|
591
|
+
const { triagePatternsSeedCommand } = await import("./triage-MKKIWBSW.js");
|
|
566
592
|
await triagePatternsSeedCommand();
|
|
567
593
|
});
|
|
568
594
|
triagePatternsCmd.action(async () => {
|
|
569
|
-
const { triagePatternsListCommand } = await import("./triage-
|
|
595
|
+
const { triagePatternsListCommand } = await import("./triage-MKKIWBSW.js");
|
|
570
596
|
await triagePatternsListCommand({});
|
|
571
597
|
});
|
|
572
598
|
triageCmd.command("export <type>").description("Export patterns or full backup (type: patterns, backup)").option("-o, --output <path>", "Output file path").option("--include-private", "Include private patterns").action(async (type, options) => {
|
|
573
|
-
const { triageExportCommand } = await import("./triage-
|
|
599
|
+
const { triageExportCommand } = await import("./triage-MKKIWBSW.js");
|
|
574
600
|
await triageExportCommand(type, options);
|
|
575
601
|
});
|
|
576
602
|
triageCmd.command("import <file>").description("Import patterns from JSON file").option("--overwrite", "Overwrite existing patterns").action(async (file, options) => {
|
|
577
|
-
const { triageImportCommand } = await import("./triage-
|
|
603
|
+
const { triageImportCommand } = await import("./triage-MKKIWBSW.js");
|
|
578
604
|
await triageImportCommand(file, options);
|
|
579
605
|
});
|
|
580
606
|
triageCmd.command("restore <file>").description("Restore from full backup").action(async (file) => {
|
|
581
|
-
const { triageRestoreCommand } = await import("./triage-
|
|
607
|
+
const { triageRestoreCommand } = await import("./triage-MKKIWBSW.js");
|
|
582
608
|
await triageRestoreCommand(file);
|
|
583
609
|
});
|
|
584
610
|
triageCmd.command("stats").description("Show statistics dashboard").option("-p, --period <period>", "Time period: 1d, 7d, 30d, 90d", "7d").option("--symbol <symbol>", "Show health for specific symbol").option("--json", "Output as JSON").action(async (options) => {
|
|
585
|
-
const { triageStatsCommand } = await import("./triage-
|
|
611
|
+
const { triageStatsCommand } = await import("./triage-MKKIWBSW.js");
|
|
586
612
|
await triageStatsCommand(options);
|
|
587
613
|
});
|
|
588
614
|
triageCmd.command("record").description("Manually record an incident").requiredOption("--error <message>", "Error message").requiredOption("-e, --env <environment>", "Environment").option("--feature <symbol>", "Feature symbol (@...)").option("--component <symbol>", "Component symbol (#...)").option("--flow <symbol>", "Flow symbol ($...)").option("--gate <symbol>", "Gate symbol (^...)").option("--signal <symbol>", "Signal symbol (!...)").option("--state <symbol>", "State symbol (%...)").option("--integration <symbol>", "Integration symbol (&...)").option("--service <name>", "Service name").option("--version <version>", "App version").option("--stack <trace>", "Stack trace").option("--json", "Output as JSON").action(async (options) => {
|
|
589
|
-
const { triageRecordCommand } = await import("./triage-
|
|
615
|
+
const { triageRecordCommand } = await import("./triage-MKKIWBSW.js");
|
|
590
616
|
await triageRecordCommand(options);
|
|
591
617
|
});
|
|
592
618
|
triageCmd.option("-l, --limit <number>", "Maximum incidents to show", "10").option("-s, --status <status>", "Filter by status").option("--json", "Output as JSON").action(async (options) => {
|
|
593
|
-
const { triageListCommand } = await import("./triage-
|
|
619
|
+
const { triageListCommand } = await import("./triage-MKKIWBSW.js");
|
|
594
620
|
await triageListCommand(options);
|
|
595
621
|
});
|
|
596
622
|
var loreCmd = program.command("lore").description("Project lore - timeline of everything that happened to this project");
|
|
@@ -628,47 +654,47 @@ loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open"
|
|
|
628
654
|
});
|
|
629
655
|
var habitsCmd = program.command("habits").description("Behavioral habits - practice tracking and compliance");
|
|
630
656
|
habitsCmd.command("list").alias("ls").description("List all configured habits").option("--trigger <trigger>", "Filter by trigger: preflight, postflight, on-stop, on-commit").option("--category <category>", "Filter by category: discovery, verification, testing, documentation, collaboration, security").option("--json", "Output as JSON").action(async (options) => {
|
|
631
|
-
const { habitsListCommand } = await import("./habits-
|
|
657
|
+
const { habitsListCommand } = await import("./habits-NC2TRMRV.js");
|
|
632
658
|
await habitsListCommand(options);
|
|
633
659
|
});
|
|
634
660
|
habitsCmd.command("status").description("Show practice profile with compliance rates").option("-p, --period <period>", "Time period: 7d, 30d, 90d, all", "30d").option("--json", "Output as JSON").action(async (options) => {
|
|
635
|
-
const { habitsStatusCommand } = await import("./habits-
|
|
661
|
+
const { habitsStatusCommand } = await import("./habits-NC2TRMRV.js");
|
|
636
662
|
await habitsStatusCommand(options);
|
|
637
663
|
});
|
|
638
664
|
habitsCmd.command("init").description("Initialize habits.yaml with seed habits").option("-f, --force", "Overwrite existing file").action(async (options) => {
|
|
639
|
-
const { habitsInitCommand } = await import("./habits-
|
|
665
|
+
const { habitsInitCommand } = await import("./habits-NC2TRMRV.js");
|
|
640
666
|
await habitsInitCommand(options);
|
|
641
667
|
});
|
|
642
668
|
habitsCmd.command("check").description("Evaluate habit compliance for a trigger point").requiredOption("-t, --trigger <trigger>", "Trigger: preflight, postflight, on-stop, on-commit").option("--record", "Record practice events to Sentinel").option("--json", "Output as JSON").option("--files <files>", "Comma-separated files modified (default: git diff)").option("--symbols <symbols>", "Comma-separated symbols touched").action(async (options) => {
|
|
643
|
-
const { habitsCheckCommand } = await import("./habits-
|
|
669
|
+
const { habitsCheckCommand } = await import("./habits-NC2TRMRV.js");
|
|
644
670
|
await habitsCheckCommand(options);
|
|
645
671
|
});
|
|
646
672
|
habitsCmd.command("add").description("Add a custom habit").requiredOption("--id <id>", "Habit ID (kebab-case)").requiredOption("--name <name>", "Human-readable name").requiredOption("--description <desc>", "What this habit enforces").requiredOption("--category <category>", "Category: discovery, verification, testing, documentation, collaboration, security").requiredOption("--trigger <trigger>", "Trigger: preflight, postflight, on-stop, on-commit").option("--severity <severity>", "Severity: advisory, warn, block", "advisory").option("--tools <tools>", "Comma-separated tools to check (for tool-called check type)").option("--check-type <type>", "Check type: tool-called, file-exists, file-modified, lore-recorded, symbols-registered, gates-declared, tests-exist, git-clean", "tool-called").option("--patterns <patterns>", "Comma-separated patterns (for file-exists, file-modified, tests-exist check types)").action(async (options) => {
|
|
647
|
-
const { habitsAddCommand } = await import("./habits-
|
|
673
|
+
const { habitsAddCommand } = await import("./habits-NC2TRMRV.js");
|
|
648
674
|
await habitsAddCommand({ ...options, checkType: options.checkType });
|
|
649
675
|
});
|
|
650
676
|
habitsCmd.command("edit <id>").description("Edit a habit (seed habits: only severity/enabled; custom: all fields)").option("--name <name>", "New name").option("--description <desc>", "New description").option("--category <category>", "New category").option("--trigger <trigger>", "New trigger").option("--severity <severity>", "New severity: advisory, warn, block").option("--enabled <bool>", "Enable or disable: true, false").option("--check-type <type>", "New check type").option("--patterns <patterns>", "Comma-separated patterns").option("--tools <tools>", "Comma-separated tools").action(async (id, options) => {
|
|
651
|
-
const { habitsEditCommand } = await import("./habits-
|
|
677
|
+
const { habitsEditCommand } = await import("./habits-NC2TRMRV.js");
|
|
652
678
|
await habitsEditCommand(id, { ...options, checkType: options.checkType });
|
|
653
679
|
});
|
|
654
680
|
habitsCmd.command("remove <id>").description("Remove a custom habit (seed habits cannot be removed, only disabled)").option("-y, --yes", "Skip confirmation").action(async (id, options) => {
|
|
655
|
-
const { habitsRemoveCommand } = await import("./habits-
|
|
681
|
+
const { habitsRemoveCommand } = await import("./habits-NC2TRMRV.js");
|
|
656
682
|
await habitsRemoveCommand(id, options);
|
|
657
683
|
});
|
|
658
684
|
habitsCmd.command("enable <id>").description("Enable a habit").action(async (id) => {
|
|
659
|
-
const { habitsToggleCommand } = await import("./habits-
|
|
685
|
+
const { habitsToggleCommand } = await import("./habits-NC2TRMRV.js");
|
|
660
686
|
await habitsToggleCommand(id, "enable");
|
|
661
687
|
});
|
|
662
688
|
habitsCmd.command("disable <id>").description("Disable a habit").action(async (id) => {
|
|
663
|
-
const { habitsToggleCommand } = await import("./habits-
|
|
689
|
+
const { habitsToggleCommand } = await import("./habits-NC2TRMRV.js");
|
|
664
690
|
await habitsToggleCommand(id, "disable");
|
|
665
691
|
});
|
|
666
692
|
habitsCmd.action(async () => {
|
|
667
|
-
const { habitsListCommand } = await import("./habits-
|
|
693
|
+
const { habitsListCommand } = await import("./habits-NC2TRMRV.js");
|
|
668
694
|
await habitsListCommand({});
|
|
669
695
|
});
|
|
670
696
|
program.command("sentinel [path]").description("Launch the Sentinel UI - unified codebase intelligence visualizer").option("-p, --port <port>", "Port to run on", "3838").option("--no-open", "Don't open browser automatically").action(async (path2, options) => {
|
|
671
|
-
const { sentinelCommand } = await import("./sentinel-
|
|
697
|
+
const { sentinelCommand } = await import("./sentinel-BGCISNIK.js");
|
|
672
698
|
await sentinelCommand(path2, options);
|
|
673
699
|
});
|
|
674
700
|
program.command("university").description("Launch Paradigm University - interactive learning platform & PLSAT certification").option("-p, --port <port>", "Port to run on", "3839").option("--no-open", "Don't open browser automatically").action(async (options) => {
|