@a-company/paradigm 3.1.5 → 3.5.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.
Files changed (80) hide show
  1. package/dist/{accept-orchestration-CWZNCGZX.js → accept-orchestration-DIGPJVUR.js} +6 -5
  2. package/dist/{aggregate-W7Q6VIM2.js → aggregate-V4KPR3RW.js} +2 -2
  3. package/dist/{beacon-B47XSTL7.js → beacon-XRXL5KZB.js} +2 -2
  4. package/dist/{chunk-4LGLU2LO.js → chunk-2E2RTBSM.js} +533 -182
  5. package/dist/{chunk-YCLN7WXV.js → chunk-2QNZ6PVD.js} +219 -35
  6. package/dist/{chunk-UM54F7G5.js → chunk-4N6AYEEA.js} +1 -1
  7. package/dist/{chunk-MVXJVRFI.js → chunk-5TUAVVIG.js} +65 -1
  8. package/dist/{chunk-5C4SGQKH.js → chunk-6P4IFIK2.js} +4 -2
  9. package/dist/{chunk-WS5KM7OL.js → chunk-6RNYVBSG.js} +1 -1
  10. package/dist/{chunk-N6PJAPDE.js → chunk-AK5M6KJB.js} +18 -0
  11. package/dist/{chunk-VZ7CXFRZ.js → chunk-CRICL4FQ.js} +1004 -17
  12. package/dist/{chunk-MC7XC7XQ.js → chunk-GZDFVP2N.js} +20 -13
  13. package/dist/chunk-HPC3JAUP.js +42 -0
  14. package/dist/chunk-IRVA7NKV.js +657 -0
  15. package/dist/{chunk-ZPN7MXRA.js → chunk-KFHK6EBI.js} +184 -1
  16. package/dist/{chunk-UUZ2DMG5.js → chunk-KWDTBXP2.js} +1 -1
  17. package/dist/{chunk-DRUDZKIT.js → chunk-M2XMTJHQ.js} +693 -70
  18. package/dist/{chunk-PW2EXJQT.js → chunk-MRENOFTR.js} +24 -1
  19. package/dist/{chunk-QS36NGWV.js → chunk-QHJGB5TV.js} +1 -1
  20. package/dist/chunk-UI3XXVJ6.js +449 -0
  21. package/dist/{chunk-AD2LSCHB.js → chunk-Y4XZWCHK.js} +40 -74
  22. package/dist/{constellation-K3CIQCHI.js → constellation-GNK5DIMH.js} +2 -2
  23. package/dist/{cost-AEK6R7HK.js → cost-AGO5N7DD.js} +1 -1
  24. package/dist/{cursorrules-KI5QWHIX.js → cursorrules-LQFA7M62.js} +2 -2
  25. package/dist/{delete-W67IVTLJ.js → delete-3YXAJ5AA.js} +12 -1
  26. package/dist/{diff-AJJ5H6HV.js → diff-J6C5IHPV.js} +6 -5
  27. package/dist/{dist-2F7NO4H4-KSL6SJIO.js → dist-AG5JNIZU-XSEZ2LLK.js} +28 -3
  28. package/dist/dist-JOHRYQUA.js +7294 -0
  29. package/dist/{dist-NHJQVVUW.js → dist-Q6SAZI7X.js} +2 -2
  30. package/dist/{dist-GPQ4LAY3.js → dist-YP2CO4TG.js} +24 -6
  31. package/dist/{doctor-JBIV5PMN.js → doctor-TQYRF7KK.js} +2 -2
  32. package/dist/{edit-Y7XPYSMK.js → edit-EOMPXOG5.js} +1 -1
  33. package/dist/flow-7JUH6D4H.js +185 -0
  34. package/dist/global-AXILUM5X.js +136 -0
  35. package/dist/{habits-FA65W77Y.js → habits-CHP4EW5H.js} +234 -5
  36. package/dist/{hooks-JKWO44WH.js → hooks-DLZEYHI3.js} +1 -1
  37. package/dist/index.js +125 -100
  38. package/dist/{lint-HXKTWRNO.js → lint-N4LMMEXH.js} +141 -1
  39. package/dist/{list-R3QWW4SC.js → list-JKBJ7ESH.js} +1 -1
  40. package/dist/mcp.js +9273 -6515
  41. package/dist/{orchestrate-4ZH5GUQH.js → orchestrate-FAV64G2R.js} +6 -5
  42. package/dist/{probe-OYCP4JYG.js → probe-X3J2JX62.js} +18 -3
  43. package/dist/{promote-E6NBZ3BK.js → promote-HZH5E5CO.js} +1 -1
  44. package/dist/{providers-4PGPZEWP.js → providers-NQ67LO2Z.js} +1 -1
  45. package/dist/{record-OHQNWOUP.js → record-EECZ3E4I.js} +1 -1
  46. package/dist/{remember-6VZ74B7E.js → remember-3KJZGDUG.js} +1 -1
  47. package/dist/{review-RUHX25A5.js → review-BF26ILZB.js} +1 -1
  48. package/dist/{ripple-SBQOSTZD.js → ripple-JIUAMBLA.js} +2 -2
  49. package/dist/sentinel-ZTL224IG.js +63 -0
  50. package/dist/{server-MV4HNFVF.js → server-MZBYDXJY.js} +4193 -9
  51. package/dist/{setup-DF4F3ICN.js → setup-363IB6MO.js} +1 -1
  52. package/dist/{setup-JHBPZAG7.js → setup-UKJ3VGHI.js} +4 -4
  53. package/dist/{shift-2LQFQP4P.js → shift-KDVYB6CR.js} +16 -13
  54. package/dist/{show-WTOJXUTN.js → show-SAMTXEHG.js} +1 -1
  55. package/dist/{snapshot-GTVPRYZG.js → snapshot-KCMONZAO.js} +2 -2
  56. package/dist/{spawn-BJRQA2NR.js → spawn-EO7B2UM3.js} +2 -2
  57. package/dist/{summary-5SBFO7QK.js → summary-E2PU4UN2.js} +3 -3
  58. package/dist/{switch-6EANJ7O6.js → switch-CC2KACXO.js} +1 -1
  59. package/dist/{sync-5KSTPJ4B.js → sync-5VJPZQNX.js} +2 -2
  60. package/dist/sync-llms-7QDA3ZWC.js +166 -0
  61. package/dist/{team-NWP2KJAB.js → team-6CCNANKE.js} +7 -6
  62. package/dist/{test-MA5TWJQV.js → test-DK2RWLTK.js} +91 -8
  63. package/dist/{thread-JCJVRUQR.js → thread-RNSLADXN.js} +18 -2
  64. package/dist/{timeline-P7BARFLI.js → timeline-TJDVVVA3.js} +1 -1
  65. package/dist/{triage-TBIWJA6R.js → triage-PXMU3RWV.js} +2 -2
  66. package/dist/university-content/courses/para-101.json +2 -1
  67. package/dist/university-content/courses/para-201.json +102 -3
  68. package/dist/university-content/courses/para-301.json +14 -11
  69. package/dist/university-content/courses/para-401.json +57 -3
  70. package/dist/university-content/courses/para-501.json +204 -6
  71. package/dist/university-content/plsat/v3.0.json +808 -3
  72. package/dist/university-content/reference.json +270 -0
  73. package/dist/{upgrade-TIYFQYPO.js → upgrade-RBSE4M6I.js} +1 -1
  74. package/dist/{validate-QEEY6KFS.js → validate-2LTHHORX.js} +1 -1
  75. package/dist/{watch-4LT4O6K7.js → watch-NBPOMOEX.js} +76 -0
  76. package/dist/{watch-2XEYUH43.js → watch-PAEH6MOG.js} +1 -1
  77. package/package.json +1 -1
  78. package/dist/chunk-GWM2WRXL.js +0 -1095
  79. package/dist/sentinel-WB7GIK4V.js +0 -43
  80. /package/dist/{chunk-TAP5N3HH.js → chunk-CCG6KYBT.js} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  hooksInstallCommand,
4
4
  hooksStatusCommand,
5
5
  hooksUninstallCommand
6
- } from "./chunk-DRUDZKIT.js";
6
+ } from "./chunk-M2XMTJHQ.js";
7
7
  import "./chunk-MO4EEYFW.js";
8
8
  export {
9
9
  hooksInstallCommand,
package/dist/index.js CHANGED
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  initCommand
4
- } from "./chunk-GWM2WRXL.js";
4
+ } from "./chunk-IRVA7NKV.js";
5
+ import "./chunk-UI3XXVJ6.js";
5
6
  import "./chunk-CHSHON3O.js";
6
- import "./chunk-N6PJAPDE.js";
7
+ import "./chunk-AK5M6KJB.js";
7
8
  import {
8
9
  aggregateFromDirectory,
9
10
  buildSymbolIndex,
10
11
  getSymbolCounts
11
- } from "./chunk-5C4SGQKH.js";
12
+ } from "./chunk-6P4IFIK2.js";
12
13
  import {
13
14
  findPurposeFiles
14
- } from "./chunk-PW2EXJQT.js";
15
+ } from "./chunk-MRENOFTR.js";
15
16
  import {
16
17
  findGateFiles
17
18
  } from "./chunk-IRKUEJVW.js";
18
- import "./chunk-YCLN7WXV.js";
19
+ import "./chunk-2QNZ6PVD.js";
19
20
  import {
20
21
  log
21
22
  } from "./chunk-4NCFWYGG.js";
@@ -109,21 +110,21 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
109
110
  program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
110
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);
111
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) => {
112
- const { shiftCommand } = await import("./shift-2LQFQP4P.js");
113
+ const { shiftCommand } = await import("./shift-KDVYB6CR.js");
113
114
  await shiftCommand(options);
114
115
  });
115
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) => {
116
- const { setupCommand } = await import("./setup-JHBPZAG7.js");
117
+ const { setupCommand } = await import("./setup-UKJ3VGHI.js");
117
118
  await setupCommand(path2, options);
118
119
  });
119
120
  program.command("status").alias("st").description("Show project status and symbol counts").action(statusCommand);
120
121
  var purposeCmd = program.command("purpose").description("Purpose-related commands");
121
122
  purposeCmd.command("remember [path]").description("Aggregate and display purpose context").action(async (path2 = ".") => {
122
- const { purposeRememberCommand } = await import("./remember-6VZ74B7E.js");
123
+ const { purposeRememberCommand } = await import("./remember-3KJZGDUG.js");
123
124
  await purposeRememberCommand(path2);
124
125
  });
125
126
  purposeCmd.command("validate [path]").description("Validate purpose files").action(async (path2 = ".") => {
126
- const { purposeValidateCommand } = await import("./validate-QEEY6KFS.js");
127
+ const { purposeValidateCommand } = await import("./validate-2LTHHORX.js");
127
128
  await purposeValidateCommand(path2);
128
129
  });
129
130
  var portalCmd = program.command("portal").description("Portal-related commands");
@@ -132,54 +133,62 @@ portalCmd.command("validate [path]").description("Validate portal.yaml configura
132
133
  await gateValidateCommand(path2);
133
134
  });
134
135
  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) => {
135
- const { gateTestCommand } = await import("./test-MA5TWJQV.js");
136
+ const { gateTestCommand } = await import("./test-DK2RWLTK.js");
136
137
  await gateTestCommand(path2, options);
137
138
  });
138
139
  portalCmd.command("watch [path]").alias("w").description("Launch the Portal Viewer - real-time visualization dashboard").option("-p, --port <port>", "WebSocket port for SDK connections", "42196").option("-u, --ui-port <port>", "HTTP port for UI", "42195").option("-c, --config <path>", "Path to portal.yaml config").option("--no-open", "Do not auto-open browser").action(async (path2, options) => {
139
- const { portalWatchCommand } = await import("./watch-4LT4O6K7.js");
140
+ const { portalWatchCommand } = await import("./watch-NBPOMOEX.js");
140
141
  await portalWatchCommand(path2, options);
141
142
  });
142
143
  portalCmd.command("report <session>").description("Generate a report from a session file").option("-f, --format <format>", "Output format: json, markdown, slack, discord", "markdown").option("-o, --output <path>", "Output file path").action(async (session, options) => {
143
- const { portalReportCommand } = await import("./watch-4LT4O6K7.js");
144
+ const { portalReportCommand } = await import("./watch-NBPOMOEX.js");
144
145
  await portalReportCommand(session, options);
145
146
  });
147
+ portalCmd.command("export [path]").description("Export portal configuration in json, csv, or markdown format").option("-f, --format <format>", "Output format: json, csv, markdown", "json").option("-o, --output <path>", "Output file path").option("-c, --config <path>", "Path to portal.yaml").action(async (path2, options) => {
148
+ const { portalExportCommand } = await import("./watch-NBPOMOEX.js");
149
+ await portalExportCommand(path2, options);
150
+ });
146
151
  var premiseCmd = program.command("premise").description("Premise-related commands");
147
152
  premiseCmd.command("aggregate [path]").description("Aggregate all sources into symbol index").action(async (path2 = ".") => {
148
- const { premiseAggregateCommand } = await import("./aggregate-W7Q6VIM2.js");
153
+ const { premiseAggregateCommand } = await import("./aggregate-V4KPR3RW.js");
149
154
  await premiseAggregateCommand(path2);
150
155
  });
151
156
  premiseCmd.command("snapshot <name>").description("Create a timeline snapshot").option("-d, --description <desc>", "Snapshot description").action(async (name, options) => {
152
- const { premiseSnapshotCommand } = await import("./snapshot-GTVPRYZG.js");
157
+ const { premiseSnapshotCommand } = await import("./snapshot-KCMONZAO.js");
153
158
  await premiseSnapshotCommand(name, options.description);
154
159
  });
155
160
  program.command("sync [ide]").description("Generate IDE instruction files from .paradigm/ config").option("--all", "Sync all supported IDEs").option("-f, --force", "Overwrite existing files").option("--mcp", "Generate MCP configuration (default: true)").option("--no-mcp", "Skip MCP configuration generation").option("--nested", "Generate nested CLAUDE.md files for directories with .purpose").action(async (ide, options) => {
156
- const { syncCommand } = await import("./sync-5KSTPJ4B.js");
161
+ const { syncCommand } = await import("./sync-5VJPZQNX.js");
157
162
  await syncCommand(ide, options);
158
163
  });
164
+ program.command("sync-llms").description("Generate llms.txt \u2014 LLM-readable project summary").option("-o, --output <path>", "Output path (default: ./llms.txt)").action(async (options) => {
165
+ const { syncLlmsCommand } = await import("./sync-llms-7QDA3ZWC.js");
166
+ await syncLlmsCommand(options);
167
+ });
159
168
  program.command("cursorrules [path]").description("[DEPRECATED] Use `paradigm sync cursor` instead").option("-a, --append", "Append to existing .cursorrules").option("-f, --force", "Overwrite existing .cursorrules").option("-p, --preview", "Preview output without writing").option("--init", "Create default .paradigm config if missing").option("--with-scan", "Include probe protocol section").action(async (path2, options) => {
160
169
  console.log("\x1B[33m\u26A0\uFE0F `paradigm cursorrules` is deprecated. Use `paradigm sync cursor` instead.\x1B[0m\n");
161
- const { cursorrrulesCommand } = await import("./cursorrules-KI5QWHIX.js");
170
+ const { cursorrrulesCommand } = await import("./cursorrules-LQFA7M62.js");
162
171
  await cursorrrulesCommand(path2, options);
163
172
  });
164
173
  program.command("index [path]").description("Generate probe index for visual discovery").option("-o, --output <path>", "Output path for probe-index.json").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
165
- const { indexCommand } = await import("./probe-OYCP4JYG.js");
174
+ const { indexCommand } = await import("./probe-X3J2JX62.js");
166
175
  await indexCommand(path2, options);
167
176
  });
168
177
  var probeCmd = program.command("probe").description("Probe-related commands");
169
178
  probeCmd.command("index [path]").description("Generate probe index (alias for `paradigm index`)").option("-o, --output <path>", "Output path for probe-index.json").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
170
- const { indexCommand } = await import("./probe-OYCP4JYG.js");
179
+ const { indexCommand } = await import("./probe-X3J2JX62.js");
171
180
  await indexCommand(path2, options);
172
181
  });
173
182
  program.command("upgrade [path]").description("Upgrade project with new Paradigm features").option("--features <features...>", "Features to upgrade (probe, logger)").option("--all", "Apply all available upgrades").option("--from-horizon", "Migrate from Horizon to Paradigm").option("--dry-run", "Show what would be upgraded without making changes").option("-f, --force", "Force re-upgrade even if already configured").action(async (path2, options) => {
174
- const { upgradeCommand } = await import("./upgrade-TIYFQYPO.js");
183
+ const { upgradeCommand } = await import("./upgrade-RBSE4M6I.js");
175
184
  await upgradeCommand(path2, options);
176
185
  });
177
- program.command("lint [path]").description("Validate .purpose files for schema errors").option("-f, --fix", "Auto-fix issues where possible").option("-s, --strict", "Fail on warnings (not just errors)").option("-q, --quiet", "Suppress output except errors").option("--json", "Output as JSON").action(async (path2, options) => {
178
- const { lintCommand } = await import("./lint-HXKTWRNO.js");
186
+ program.command("lint [path]").description("Validate .purpose files for schema errors").option("-f, --fix", "Auto-fix issues where possible").option("-s, --strict", "Fail on warnings (not just errors)").option("-q, --quiet", "Suppress output except errors").option("--json", "Output as JSON").option("--auto-populate", "Scan for undocumented source dirs and suggest .purpose entries (use with --fix to write)").action(async (path2, options) => {
187
+ const { lintCommand } = await import("./lint-N4LMMEXH.js");
179
188
  await lintCommand(path2, options);
180
189
  });
181
190
  program.command("cost [path]").description("Analyze token costs for AI context").option("-d, --detailed", "Show detailed breakdown by file").option("--json", "Output as JSON").action(async (path2, options) => {
182
- const { costCommand } = await import("./cost-AEK6R7HK.js");
191
+ const { costCommand } = await import("./cost-AGO5N7DD.js");
183
192
  await costCommand(path2, options);
184
193
  });
185
194
  var scanCmd = program.command("scan").description("Visual discovery and auto-generation commands");
@@ -193,9 +202,17 @@ scanCmd.action(() => {
193
202
  console.log(" auto [path] Auto-generate .purpose files from code analysis");
194
203
  console.log("\nRun `paradigm scan auto --help` for options.\n");
195
204
  });
205
+ var flowCmd = program.command("flow").description("Flow management commands");
206
+ 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-7JUH6D4H.js");
208
+ await flowDiagramCommand(flowId, options);
209
+ });
210
+ flowCmd.action(() => {
211
+ flowCmd.outputHelp();
212
+ });
196
213
  var teamCmd = program.command("team").description("Multi-agent orchestration commands");
197
214
  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) => {
198
- const { teamInitCommand } = await import("./team-NWP2KJAB.js");
215
+ const { teamInitCommand } = await import("./team-6CCNANKE.js");
199
216
  await teamInitCommand(path2, {
200
217
  ...options,
201
218
  configureModels: options.configureModels,
@@ -203,47 +220,47 @@ teamCmd.command("init [path]").description("Initialize team configuration with d
203
220
  });
204
221
  });
205
222
  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) => {
206
- const { teamStatusCommand } = await import("./team-NWP2KJAB.js");
223
+ const { teamStatusCommand } = await import("./team-6CCNANKE.js");
207
224
  await teamStatusCommand(path2, options);
208
225
  });
209
226
  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) => {
210
- const { teamHandoffCommand } = await import("./team-NWP2KJAB.js");
227
+ const { teamHandoffCommand } = await import("./team-6CCNANKE.js");
211
228
  await teamHandoffCommand(path2, options);
212
229
  });
213
230
  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) => {
214
- const { teamAcceptCommand } = await import("./team-NWP2KJAB.js");
231
+ const { teamAcceptCommand } = await import("./team-6CCNANKE.js");
215
232
  await teamAcceptCommand(handoffId, path2, options);
216
233
  });
217
234
  teamCmd.command("check [path]").description("Check for conflicts and team health issues").option("--json", "Output as JSON").action(async (path2, options) => {
218
- const { teamCheckCommand } = await import("./team-NWP2KJAB.js");
235
+ const { teamCheckCommand } = await import("./team-6CCNANKE.js");
219
236
  await teamCheckCommand(path2, options);
220
237
  });
221
238
  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) => {
222
- const { teamHistoryCommand } = await import("./team-NWP2KJAB.js");
239
+ const { teamHistoryCommand } = await import("./team-6CCNANKE.js");
223
240
  await teamHistoryCommand(path2, { ...options, limit: parseInt(options.limit) });
224
241
  });
225
242
  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) => {
226
- const { teamResetCommand } = await import("./team-NWP2KJAB.js");
243
+ const { teamResetCommand } = await import("./team-6CCNANKE.js");
227
244
  await teamResetCommand(path2, options);
228
245
  });
229
246
  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) => {
230
- const { teamSpawnCommand } = await import("./spawn-BJRQA2NR.js");
247
+ const { teamSpawnCommand } = await import("./spawn-EO7B2UM3.js");
231
248
  await teamSpawnCommand(agent, path2, options);
232
249
  });
233
250
  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) => {
234
- const { teamOrchestrateCommand } = await import("./orchestrate-4ZH5GUQH.js");
251
+ const { teamOrchestrateCommand } = await import("./orchestrate-FAV64G2R.js");
235
252
  await teamOrchestrateCommand(task, path2, options);
236
253
  });
237
254
  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) => {
238
- const { teamDiffCommand } = await import("./diff-AJJ5H6HV.js");
255
+ const { teamDiffCommand } = await import("./diff-J6C5IHPV.js");
239
256
  await teamDiffCommand(orchestrationId, path2, options);
240
257
  });
241
258
  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) => {
242
- const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-CWZNCGZX.js");
259
+ const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-DIGPJVUR.js");
243
260
  await teamAcceptOrchestrationCommand(orchestrationId, path2, options);
244
261
  });
245
262
  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) => {
246
- const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-CWZNCGZX.js");
263
+ const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-DIGPJVUR.js");
247
264
  await teamRejectOrchestrationCommand(orchestrationId, path2, options);
248
265
  });
249
266
  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) => {
@@ -255,11 +272,11 @@ teamCmd.command("export [path]").description("Export orchestration data").option
255
272
  await teamExportCommand(path2, options);
256
273
  });
257
274
  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) => {
258
- const { teamProvidersCommand } = await import("./providers-4PGPZEWP.js");
275
+ const { teamProvidersCommand } = await import("./providers-NQ67LO2Z.js");
259
276
  await teamProvidersCommand(path2, options);
260
277
  });
261
278
  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) => {
262
- const { teamModelsCommand } = await import("./team-NWP2KJAB.js");
279
+ const { teamModelsCommand } = await import("./team-6CCNANKE.js");
263
280
  await teamModelsCommand(path2, options);
264
281
  });
265
282
  var agentsCmd = teamCmd.command("agents").description("Agent management commands");
@@ -274,7 +291,7 @@ agentsCmd.action(() => {
274
291
  console.log("\nRun `paradigm team agents suggest --help` for options.\n");
275
292
  });
276
293
  teamCmd.action(async () => {
277
- const { teamStatusCommand } = await import("./team-NWP2KJAB.js");
294
+ const { teamStatusCommand } = await import("./team-6CCNANKE.js");
278
295
  await teamStatusCommand(void 0, {});
279
296
  });
280
297
  var pluginCmd = program.command("plugin").description("Plugin management commands");
@@ -287,52 +304,60 @@ pluginCmd.action(async () => {
287
304
  await pluginCheckCommand({});
288
305
  });
289
306
  program.command("doctor").description("Health check - validate Paradigm setup").action(async () => {
290
- const { doctorCommand } = await import("./doctor-JBIV5PMN.js");
307
+ const { doctorCommand } = await import("./doctor-TQYRF7KK.js");
291
308
  await doctorCommand();
292
309
  });
310
+ var globalCmd = program.command("global").description("Manage Global Brain (~/.paradigm/)");
311
+ 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
+ const { globalCleanCommand } = await import("./global-AXILUM5X.js");
313
+ await globalCleanCommand(options);
314
+ });
315
+ globalCmd.action(() => {
316
+ globalCmd.outputHelp();
317
+ });
293
318
  program.command("watch").description("Watch for changes and auto-sync IDE files").action(async () => {
294
- const { watchCommand } = await import("./watch-2XEYUH43.js");
319
+ const { watchCommand } = await import("./watch-PAEH6MOG.js");
295
320
  await watchCommand();
296
321
  });
297
322
  program.command("summary").description("Generate .paradigm/project.md with project stats").action(async () => {
298
- const { summaryCommand } = await import("./summary-5SBFO7QK.js");
323
+ const { summaryCommand } = await import("./summary-E2PU4UN2.js");
299
324
  await summaryCommand();
300
325
  });
301
326
  program.command("constellation [path]").alias("const").description("Generate .paradigm/constellation.json - symbol relationship graph for AI agents").option("-f, --format <format>", "Output format: json or yaml", "json").option("-o, --output <path>", "Custom output path").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
302
- const { constellationCommand } = await import("./constellation-K3CIQCHI.js");
327
+ const { constellationCommand } = await import("./constellation-GNK5DIMH.js");
303
328
  await constellationCommand(path2, options);
304
329
  });
305
330
  program.command("beacon [path]").description("Generate .paradigm/beacon.md - quick-start orientation for AI agents").option("-r, --refresh", "Regenerate even if beacon exists").option("-o, --output <path>", "Custom output path").option("--json", "Output as JSON (for AI agent queries)").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
306
- const { beaconCommand } = await import("./beacon-B47XSTL7.js");
331
+ const { beaconCommand } = await import("./beacon-XRXL5KZB.js");
307
332
  await beaconCommand(path2, options);
308
333
  });
309
334
  program.command("ripple <symbol> [path]").description("Show change impact analysis for a symbol").option("-d, --depth <depth>", "Analysis depth (default: 1)", "1").option("--json", "Output as JSON").option("-q, --quiet", "Suppress output").action(async (symbol, path2, options) => {
310
- const { rippleCommand } = await import("./ripple-SBQOSTZD.js");
335
+ const { rippleCommand } = await import("./ripple-JIUAMBLA.js");
311
336
  await rippleCommand(symbol, path2, options);
312
337
  });
313
338
  var threadCmd = program.command("thread").description("Session continuity - pass context between AI agent sessions");
314
339
  threadCmd.command("show [path]").alias("s").description("Show current thread").option("--json", "Output as JSON (for AI agent queries)").action(async (path2, options) => {
315
- const { threadShowCommand } = await import("./thread-JCJVRUQR.js");
340
+ const { threadShowCommand } = await import("./thread-RNSLADXN.js");
316
341
  await threadShowCommand(path2, options);
317
342
  });
318
343
  threadCmd.command("save <message> [path]").description("Save activity to the thread trail").option("-q, --quiet", "Suppress output").action(async (message, path2, options) => {
319
- const { threadSaveCommand } = await import("./thread-JCJVRUQR.js");
344
+ const { threadSaveCommand } = await import("./thread-RNSLADXN.js");
320
345
  await threadSaveCommand(message, path2, options);
321
346
  });
322
347
  threadCmd.command("todo <task> [path]").description("Add a loose end (unfinished task)").option("-q, --quiet", "Suppress output").action(async (task, path2, options) => {
323
- const { threadTodoCommand } = await import("./thread-JCJVRUQR.js");
348
+ const { threadTodoCommand } = await import("./thread-RNSLADXN.js");
324
349
  await threadTodoCommand(task, path2, options);
325
350
  });
326
351
  threadCmd.command("note <note> [path]").description("Add a breadcrumb (note for next agent)").option("-q, --quiet", "Suppress output").action(async (note, path2, options) => {
327
- const { threadNoteCommand } = await import("./thread-JCJVRUQR.js");
352
+ const { threadNoteCommand } = await import("./thread-RNSLADXN.js");
328
353
  await threadNoteCommand(note, path2, options);
329
354
  });
330
355
  threadCmd.command("clear [path]").description("Clear the thread").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
331
- const { threadClearCommand } = await import("./thread-JCJVRUQR.js");
356
+ const { threadClearCommand } = await import("./thread-RNSLADXN.js");
332
357
  await threadClearCommand(path2, options);
333
358
  });
334
359
  threadCmd.option("--json", "Output as JSON (for AI agent queries)").action(async (options) => {
335
- const { threadShowCommand } = await import("./thread-JCJVRUQR.js");
360
+ const { threadShowCommand } = await import("./thread-RNSLADXN.js");
336
361
  await threadShowCommand(void 0, options);
337
362
  });
338
363
  var echoCmd = program.command("echo").description("Error-to-symbol mapping - find related symbols for error codes");
@@ -388,35 +413,35 @@ tutorialCmd.command("bugs [path]").description("List intentional bugs").action(a
388
413
  });
389
414
  var mcpCmd = program.command("mcp").description("MCP server configuration for AI clients");
390
415
  mcpCmd.command("setup").description("Configure MCP server for detected AI clients").option("-c, --client <client>", "Target client: cursor, claude-desktop, continue, cline, all").option("-f, --force", "Overwrite existing config").option("--json", "Output as JSON").option("--no-gitignore", "Do not add config to .gitignore").action(async (options) => {
391
- const { mcpSetupCommand } = await import("./setup-DF4F3ICN.js");
416
+ const { mcpSetupCommand } = await import("./setup-363IB6MO.js");
392
417
  await mcpSetupCommand(options);
393
418
  });
394
419
  mcpCmd.command("status").description("Show MCP configuration status across clients").option("--json", "Output as JSON").action(async (options) => {
395
- const { mcpStatusCommand } = await import("./setup-DF4F3ICN.js");
420
+ const { mcpStatusCommand } = await import("./setup-363IB6MO.js");
396
421
  await mcpStatusCommand(options);
397
422
  });
398
423
  mcpCmd.command("list").alias("ls").description("List all configured MCP servers across all clients").option("--json", "Output as JSON").action(async (options) => {
399
- const { mcpListCommand } = await import("./setup-DF4F3ICN.js");
424
+ const { mcpListCommand } = await import("./setup-363IB6MO.js");
400
425
  await mcpListCommand(options);
401
426
  });
402
427
  mcpCmd.command("remove [server]").alias("rm").description("Remove MCP server from client configs").option("-c, --client <client>", "Target client: cursor, claude-desktop, continue, cline, all").option("-f, --force", "Skip confirmation").option("--json", "Output as JSON").action(async (server, options) => {
403
- const { mcpRemoveCommand } = await import("./setup-DF4F3ICN.js");
428
+ const { mcpRemoveCommand } = await import("./setup-363IB6MO.js");
404
429
  await mcpRemoveCommand(server, options);
405
430
  });
406
431
  mcpCmd.command("use-dev").description("Switch MCP configs to use local dev build").option("-c, --client <client>", "Target client: cursor, claude-desktop, claude-code, continue, cline").option("--json", "Output as JSON").action(async (options) => {
407
- const { mcpUseDevCommand } = await import("./switch-6EANJ7O6.js");
432
+ const { mcpUseDevCommand } = await import("./switch-CC2KACXO.js");
408
433
  await mcpUseDevCommand(options);
409
434
  });
410
435
  mcpCmd.command("use-prod").description("Switch MCP configs back to global production binary").option("-c, --client <client>", "Target client: cursor, claude-desktop, claude-code, continue, cline").option("--json", "Output as JSON").action(async (options) => {
411
- const { mcpUseProdCommand } = await import("./switch-6EANJ7O6.js");
436
+ const { mcpUseProdCommand } = await import("./switch-CC2KACXO.js");
412
437
  await mcpUseProdCommand(options);
413
438
  });
414
439
  mcpCmd.action(async () => {
415
- const { mcpSwitchStatusCommand } = await import("./switch-6EANJ7O6.js");
440
+ const { mcpSwitchStatusCommand } = await import("./switch-CC2KACXO.js");
416
441
  await mcpSwitchStatusCommand({});
417
442
  });
418
443
  program.command("promote").description("Copy local build to production (~/.paradigm-cli/)").option("-f, --force", "Create production directory if missing").option("--skip-build", "Skip npm run build step").option("--json", "Output as JSON").action(async (options) => {
419
- const { promoteCommand } = await import("./promote-E6NBZ3BK.js");
444
+ const { promoteCommand } = await import("./promote-HZH5E5CO.js");
420
445
  await promoteCommand(options);
421
446
  });
422
447
  var wisdomCmd = program.command("wisdom").description("Team wisdom - preferences, antipatterns, decisions, expertise");
@@ -478,123 +503,123 @@ historyCmd.option("--json", "Output as JSON").action(async (options) => {
478
503
  await historyShowCommand(void 0, options);
479
504
  });
480
505
  var hooksCmd = program.command("hooks").description("Git hooks for automatic history capture");
481
- 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)").action(async (options) => {
482
- const { hooksInstallCommand } = await import("./hooks-JKWO44WH.js");
506
+ 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-DLZEYHI3.js");
483
508
  await hooksInstallCommand(options);
484
509
  });
485
- hooksCmd.command("uninstall").description("Remove paradigm hooks (git hooks, or --cursor for Cursor hooks)").option("--cursor", "Remove Cursor hooks instead of git hooks").action(async (options) => {
486
- const { hooksUninstallCommand } = await import("./hooks-JKWO44WH.js");
510
+ 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-DLZEYHI3.js");
487
512
  await hooksUninstallCommand(options);
488
513
  });
489
514
  hooksCmd.command("status").description("Check git hooks status").action(async () => {
490
- const { hooksStatusCommand } = await import("./hooks-JKWO44WH.js");
515
+ const { hooksStatusCommand } = await import("./hooks-DLZEYHI3.js");
491
516
  await hooksStatusCommand();
492
517
  });
493
518
  hooksCmd.action(async () => {
494
- const { hooksStatusCommand } = await import("./hooks-JKWO44WH.js");
519
+ const { hooksStatusCommand } = await import("./hooks-DLZEYHI3.js");
495
520
  await hooksStatusCommand();
496
521
  });
497
522
  var triageCmd = program.command("triage").description("Semantic error triage - incident management and pattern matching");
498
523
  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) => {
499
- const { triageListCommand } = await import("./triage-TBIWJA6R.js");
524
+ const { triageListCommand } = await import("./triage-PXMU3RWV.js");
500
525
  await triageListCommand(options);
501
526
  });
502
527
  triageCmd.command("show <id>").description("Show full incident details").option("--timeline", "Include flow timeline").option("--json", "Output as JSON").action(async (id, options) => {
503
- const { triageShowCommand } = await import("./triage-TBIWJA6R.js");
528
+ const { triageShowCommand } = await import("./triage-PXMU3RWV.js");
504
529
  await triageShowCommand(id, options);
505
530
  });
506
531
  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) => {
507
- const { triageResolveCommand } = await import("./triage-TBIWJA6R.js");
532
+ const { triageResolveCommand } = await import("./triage-PXMU3RWV.js");
508
533
  await triageResolveCommand(id, options);
509
534
  });
510
535
  triageCmd.command("note <id> <note>").description("Add a note to an incident").action(async (id, note) => {
511
- const { triageNoteCommand } = await import("./triage-TBIWJA6R.js");
536
+ const { triageNoteCommand } = await import("./triage-PXMU3RWV.js");
512
537
  await triageNoteCommand(id, note);
513
538
  });
514
539
  triageCmd.command("link <id1> <id2>").description("Link two related incidents").action(async (id1, id2) => {
515
- const { triageLinkCommand } = await import("./triage-TBIWJA6R.js");
540
+ const { triageLinkCommand } = await import("./triage-PXMU3RWV.js");
516
541
  await triageLinkCommand(id1, id2);
517
542
  });
518
543
  var triagePatternsCmd = triageCmd.command("patterns").description("Manage failure patterns");
519
544
  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) => {
520
- const { triagePatternsListCommand } = await import("./triage-TBIWJA6R.js");
545
+ const { triagePatternsListCommand } = await import("./triage-PXMU3RWV.js");
521
546
  await triagePatternsListCommand(options);
522
547
  });
523
548
  triagePatternsCmd.command("show <id>").description("Show pattern details").option("--json", "Output as JSON").action(async (id, options) => {
524
- const { triagePatternsShowCommand } = await import("./triage-TBIWJA6R.js");
549
+ const { triagePatternsShowCommand } = await import("./triage-PXMU3RWV.js");
525
550
  await triagePatternsShowCommand(id, options);
526
551
  });
527
552
  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) => {
528
- const { triagePatternsAddCommand } = await import("./triage-TBIWJA6R.js");
553
+ const { triagePatternsAddCommand } = await import("./triage-PXMU3RWV.js");
529
554
  await triagePatternsAddCommand(options);
530
555
  });
531
556
  triagePatternsCmd.command("delete <id>").alias("rm").description("Delete a pattern").action(async (id) => {
532
- const { triagePatternsDeleteCommand } = await import("./triage-TBIWJA6R.js");
557
+ const { triagePatternsDeleteCommand } = await import("./triage-PXMU3RWV.js");
533
558
  await triagePatternsDeleteCommand(id);
534
559
  });
535
560
  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) => {
536
- const { triagePatternsTestCommand } = await import("./triage-TBIWJA6R.js");
561
+ const { triagePatternsTestCommand } = await import("./triage-PXMU3RWV.js");
537
562
  await triagePatternsTestCommand(id, options);
538
563
  });
539
564
  triagePatternsCmd.command("seed").description("Load built-in seed patterns").action(async () => {
540
- const { triagePatternsSeedCommand } = await import("./triage-TBIWJA6R.js");
565
+ const { triagePatternsSeedCommand } = await import("./triage-PXMU3RWV.js");
541
566
  await triagePatternsSeedCommand();
542
567
  });
543
568
  triagePatternsCmd.action(async () => {
544
- const { triagePatternsListCommand } = await import("./triage-TBIWJA6R.js");
569
+ const { triagePatternsListCommand } = await import("./triage-PXMU3RWV.js");
545
570
  await triagePatternsListCommand({});
546
571
  });
547
572
  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) => {
548
- const { triageExportCommand } = await import("./triage-TBIWJA6R.js");
573
+ const { triageExportCommand } = await import("./triage-PXMU3RWV.js");
549
574
  await triageExportCommand(type, options);
550
575
  });
551
576
  triageCmd.command("import <file>").description("Import patterns from JSON file").option("--overwrite", "Overwrite existing patterns").action(async (file, options) => {
552
- const { triageImportCommand } = await import("./triage-TBIWJA6R.js");
577
+ const { triageImportCommand } = await import("./triage-PXMU3RWV.js");
553
578
  await triageImportCommand(file, options);
554
579
  });
555
580
  triageCmd.command("restore <file>").description("Restore from full backup").action(async (file) => {
556
- const { triageRestoreCommand } = await import("./triage-TBIWJA6R.js");
581
+ const { triageRestoreCommand } = await import("./triage-PXMU3RWV.js");
557
582
  await triageRestoreCommand(file);
558
583
  });
559
584
  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) => {
560
- const { triageStatsCommand } = await import("./triage-TBIWJA6R.js");
585
+ const { triageStatsCommand } = await import("./triage-PXMU3RWV.js");
561
586
  await triageStatsCommand(options);
562
587
  });
563
588
  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) => {
564
- const { triageRecordCommand } = await import("./triage-TBIWJA6R.js");
589
+ const { triageRecordCommand } = await import("./triage-PXMU3RWV.js");
565
590
  await triageRecordCommand(options);
566
591
  });
567
592
  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) => {
568
- const { triageListCommand } = await import("./triage-TBIWJA6R.js");
593
+ const { triageListCommand } = await import("./triage-PXMU3RWV.js");
569
594
  await triageListCommand(options);
570
595
  });
571
596
  var loreCmd = program.command("lore").description("Project lore - timeline of everything that happened to this project");
572
597
  loreCmd.command("list").alias("ls").description("List recent lore entries").option("--author <author>", "Filter by author").option("--type <type>", "Filter by type: agent-session, human-note, decision, review, incident, milestone").option("--symbol <symbol>", "Filter by symbol").option("--tags <tags>", "Filter by tags (comma-separated)").option("--from <date>", "Filter from date (ISO format, e.g., 2026-02-20)").option("--to <date>", "Filter to date (ISO format)").option("-l, --limit <number>", "Number of entries", "20").option("--json", "Output as JSON").action(async (options) => {
573
- const { loreListCommand } = await import("./list-R3QWW4SC.js");
598
+ const { loreListCommand } = await import("./list-JKBJ7ESH.js");
574
599
  await loreListCommand(options);
575
600
  });
576
601
  loreCmd.command("show <id>").description("Show full detail for a lore entry").option("--json", "Output as JSON").action(async (id, options) => {
577
- const { loreShowCommand } = await import("./show-WTOJXUTN.js");
602
+ const { loreShowCommand } = await import("./show-SAMTXEHG.js");
578
603
  await loreShowCommand(id, options);
579
604
  });
580
605
  loreCmd.command("record").description("Record a new lore entry (human note, milestone, etc.)").option("--type <type>", "Entry type: human-note, decision, milestone", "human-note").option("--author <author>", "Author name").option("--title <title>", "Entry title").option("--summary <summary>", "Entry summary").option("--symbols <symbols>", "Comma-separated symbols").option("--tags <tags>", "Comma-separated tags").option("--files-modified <files>", "Comma-separated files modified").option("--files-created <files>", "Comma-separated files created").option("--commit <hash>", "Git commit hash").option("--learnings <items>", "Comma-separated learnings").option("--duration <minutes>", "Duration in minutes").action(async (options) => {
581
- const { loreRecordCommand } = await import("./record-OHQNWOUP.js");
606
+ const { loreRecordCommand } = await import("./record-EECZ3E4I.js");
582
607
  await loreRecordCommand(options);
583
608
  });
584
609
  loreCmd.command("review <id>").description("Add a review to a lore entry").option("--reviewer <name>", "Reviewer name").option("--completeness <n>", "Completeness score (1-5)", "3").option("--quality <n>", "Quality score (1-5)", "3").option("--notes <text>", "Review notes").action(async (id, options) => {
585
- const { loreReviewCommand } = await import("./review-RUHX25A5.js");
610
+ const { loreReviewCommand } = await import("./review-BF26ILZB.js");
586
611
  await loreReviewCommand(id, options);
587
612
  });
588
613
  loreCmd.command("edit <id>").description("Edit an existing lore entry").option("--title <title>", "New title").option("--summary <summary>", "New summary").option("--type <type>", "New type: agent-session, human-note, decision, review, incident, milestone").option("--symbols <symbols>", "Comma-separated symbols").option("--tags <tags>", "Comma-separated tags").option("--learnings <items>", "Comma-separated learnings").action(async (id, options) => {
589
- const { loreEditCommand } = await import("./edit-Y7XPYSMK.js");
614
+ const { loreEditCommand } = await import("./edit-EOMPXOG5.js");
590
615
  await loreEditCommand(id, options);
591
616
  });
592
- loreCmd.command("delete <id>").description("Delete a lore entry").option("-y, --yes", "Skip confirmation").action(async (id, options) => {
593
- const { loreDeleteCommand } = await import("./delete-W67IVTLJ.js");
617
+ loreCmd.command("delete <id>").description("Delete a lore entry").option("-y, --yes", "Skip confirmation").option("--dry-run", "Show what would be deleted without making changes").action(async (id, options) => {
618
+ const { loreDeleteCommand } = await import("./delete-3YXAJ5AA.js");
594
619
  await loreDeleteCommand(id, options);
595
620
  });
596
621
  loreCmd.command("timeline").description("Show lore timeline grouped by date with hot symbols and authors").option("-l, --limit <number>", "Number of entries", "20").option("--json", "Output as JSON").action(async (options) => {
597
- const { loreTimelineCommand } = await import("./timeline-P7BARFLI.js");
622
+ const { loreTimelineCommand } = await import("./timeline-TJDVVVA3.js");
598
623
  await loreTimelineCommand(options);
599
624
  });
600
625
  loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open", "Don't open browser automatically").action(async (options) => {
@@ -603,47 +628,47 @@ loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open"
603
628
  });
604
629
  var habitsCmd = program.command("habits").description("Behavioral habits - practice tracking and compliance");
605
630
  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) => {
606
- const { habitsListCommand } = await import("./habits-FA65W77Y.js");
631
+ const { habitsListCommand } = await import("./habits-CHP4EW5H.js");
607
632
  await habitsListCommand(options);
608
633
  });
609
634
  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) => {
610
- const { habitsStatusCommand } = await import("./habits-FA65W77Y.js");
635
+ const { habitsStatusCommand } = await import("./habits-CHP4EW5H.js");
611
636
  await habitsStatusCommand(options);
612
637
  });
613
638
  habitsCmd.command("init").description("Initialize habits.yaml with seed habits").option("-f, --force", "Overwrite existing file").action(async (options) => {
614
- const { habitsInitCommand } = await import("./habits-FA65W77Y.js");
639
+ const { habitsInitCommand } = await import("./habits-CHP4EW5H.js");
615
640
  await habitsInitCommand(options);
616
641
  });
617
642
  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) => {
618
- const { habitsCheckCommand } = await import("./habits-FA65W77Y.js");
643
+ const { habitsCheckCommand } = await import("./habits-CHP4EW5H.js");
619
644
  await habitsCheckCommand(options);
620
645
  });
621
646
  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) => {
622
- const { habitsAddCommand } = await import("./habits-FA65W77Y.js");
647
+ const { habitsAddCommand } = await import("./habits-CHP4EW5H.js");
623
648
  await habitsAddCommand({ ...options, checkType: options.checkType });
624
649
  });
625
650
  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) => {
626
- const { habitsEditCommand } = await import("./habits-FA65W77Y.js");
651
+ const { habitsEditCommand } = await import("./habits-CHP4EW5H.js");
627
652
  await habitsEditCommand(id, { ...options, checkType: options.checkType });
628
653
  });
629
654
  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) => {
630
- const { habitsRemoveCommand } = await import("./habits-FA65W77Y.js");
655
+ const { habitsRemoveCommand } = await import("./habits-CHP4EW5H.js");
631
656
  await habitsRemoveCommand(id, options);
632
657
  });
633
658
  habitsCmd.command("enable <id>").description("Enable a habit").action(async (id) => {
634
- const { habitsToggleCommand } = await import("./habits-FA65W77Y.js");
659
+ const { habitsToggleCommand } = await import("./habits-CHP4EW5H.js");
635
660
  await habitsToggleCommand(id, "enable");
636
661
  });
637
662
  habitsCmd.command("disable <id>").description("Disable a habit").action(async (id) => {
638
- const { habitsToggleCommand } = await import("./habits-FA65W77Y.js");
663
+ const { habitsToggleCommand } = await import("./habits-CHP4EW5H.js");
639
664
  await habitsToggleCommand(id, "disable");
640
665
  });
641
666
  habitsCmd.action(async () => {
642
- const { habitsListCommand } = await import("./habits-FA65W77Y.js");
667
+ const { habitsListCommand } = await import("./habits-CHP4EW5H.js");
643
668
  await habitsListCommand({});
644
669
  });
645
670
  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) => {
646
- const { sentinelCommand } = await import("./sentinel-WB7GIK4V.js");
671
+ const { sentinelCommand } = await import("./sentinel-ZTL224IG.js");
647
672
  await sentinelCommand(path2, options);
648
673
  });
649
674
  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) => {