@a-company/paradigm 3.46.0 → 5.3.3

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 (166) hide show
  1. package/dist/{accept-orchestration-ZUWQUHSK.js → accept-orchestration-GX2YRWM4.js} +5 -5
  2. package/dist/{add-VSPZ6FM4.js → add-FZRKEGH4.js} +1 -1
  3. package/dist/agent-HYKC2LAK.js +387 -0
  4. package/dist/agent-loader-SJPJJS33.js +36 -0
  5. package/dist/{agents-suggest-65SER5IS.js → agents-suggest-DNSYJ6IA.js} +1 -1
  6. package/dist/{aggregate-SV3VGEIL.js → aggregate-H57K7PNV.js} +1 -1
  7. package/dist/{assess-UHBDYIK7.js → assess-4WVXZLZQ.js} +2 -2
  8. package/dist/{auto-24ICVUH4.js → auto-QFS5NHQU.js} +1 -1
  9. package/dist/{beacon-3SJV4DAP.js → beacon-KXZXYQHX.js} +1 -1
  10. package/dist/{calibration-WWHK73WU.js → calibration-V46G7JTY.js} +2 -2
  11. package/dist/{check-OLI6AUS6.js → check-OWAIWV23.js} +1 -1
  12. package/dist/{chunk-RP6TZYGE.js → chunk-2IO7JAG2.js} +1 -1
  13. package/dist/chunk-2T6BTYBN.js +712 -0
  14. package/dist/{chunk-CDMAMDSG.js → chunk-5VKJBNJL.js} +13 -5
  15. package/dist/{chunk-KB4XJWE3.js → chunk-6N3JTACN.js} +98 -437
  16. package/dist/chunk-7N7GSU6K.js +34 -0
  17. package/dist/chunk-A2L4TSLZ.js +526 -0
  18. package/dist/{chunk-P7XSBJE3.js → chunk-ABVQGRF7.js} +1 -1
  19. package/dist/{chunk-HIKKOCXY.js → chunk-EI32ZBE6.js} +1 -1
  20. package/dist/{chunk-QIOCFXDQ.js → chunk-EKGMAM62.js} +1 -1
  21. package/dist/chunk-EZ3GOCYC.js +132 -0
  22. package/dist/chunk-GGMI6C2L.js +1075 -0
  23. package/dist/{chunk-DS5QY37M.js → chunk-GTR2TBIJ.js} +247 -15
  24. package/dist/{chunk-QDXI2DHR.js → chunk-J2JEQRT3.js} +1 -1
  25. package/dist/{chunk-AKIMFN6I.js → chunk-JASGXLK3.js} +2 -2
  26. package/dist/{chunk-J4E6K5MG.js → chunk-LSRABQIY.js} +25 -1
  27. package/dist/chunk-MCMOGQMU.js +145 -0
  28. package/dist/{chunk-ZXMDA7VB.js → chunk-PDX44BCA.js} +1 -6
  29. package/dist/{chunk-2SKXFXIT.js → chunk-S3ORKP3V.js} +10 -15
  30. package/dist/{chunk-ZMQA6SCO.js → chunk-S6MZ2IEX.js} +628 -228
  31. package/dist/chunk-TAIJOFOE.js +124 -0
  32. package/dist/{chunk-FS3WTUHY.js → chunk-TXESEO7Y.js} +6 -6
  33. package/dist/{chunk-7COU5S2Z.js → chunk-VL67H5IC.js} +1 -1
  34. package/dist/{chunk-QWA26UNO.js → chunk-WQITYKHM.js} +7 -7
  35. package/dist/{chunk-MW5DMGBB.js → chunk-YMDLDELF.js} +114 -55
  36. package/dist/{claude-63ISJAZK.js → claude-FRRWJSTJ.js} +1 -1
  37. package/dist/{claude-cli-ABML5RHX.js → claude-cli-XJLK2X4L.js} +1 -1
  38. package/dist/{claude-code-JRLMRPTO.js → claude-code-HTBA4XRB.js} +1 -1
  39. package/dist/{claude-code-teams-CAJBEFIZ.js → claude-code-teams-T4SP24MD.js} +1 -1
  40. package/dist/{conductor-HLWYWUVH.js → conductor-PGPDVIVE.js} +1 -1
  41. package/dist/{config-schema-3YNIFJCJ.js → config-schema-EA4XALGG.js} +4 -2
  42. package/dist/{constellation-FAGT45TU.js → constellation-A26CCGQS.js} +1 -1
  43. package/dist/{context-audit-557EO6PK.js → context-audit-RLO3ETRP.js} +8 -5
  44. package/dist/{cost-XEBADYFT.js → cost-BGM32XJU.js} +1 -1
  45. package/dist/{cost-UD3WPEKZ.js → cost-VI46A4XL.js} +1 -1
  46. package/dist/{cursor-cli-QUOOF2N4.js → cursor-cli-JVEZGHWQ.js} +1 -1
  47. package/dist/{cursorrules-3TKZ4E4R.js → cursorrules-HLIKJJZT.js} +1 -1
  48. package/dist/decision-loader-WWCLIQPJ.js +20 -0
  49. package/dist/{delete-RRK4RL6Y.js → delete-KBRPQLPC.js} +2 -2
  50. package/dist/{diff-IP5CIARP.js → diff-RQLLNAFI.js} +5 -5
  51. package/dist/{discipline-5F5OVTXB.js → discipline-FA4OZXIS.js} +1 -1
  52. package/dist/{dist-UXWV4OKX.js → dist-34NA5RS5.js} +1 -1
  53. package/dist/{dist-5QE2BB2B-X6DYVSUL.js → dist-5QE2BB2B-5S3T6Y3T.js} +1 -1
  54. package/dist/{dist-CM3MVWWW.js → dist-77JDTVAY.js} +1 -0
  55. package/dist/{dist-POMVY6WP.js → dist-QK4SQAK7.js} +1 -1
  56. package/dist/{dist-3RVKEJRT.js → dist-TA6LSC2Q.js} +1 -1
  57. package/dist/docs-LVLRPBAW.js +155 -0
  58. package/dist/docs-PBZB7LYP.js +89 -0
  59. package/dist/{doctor-GKZJU7QG.js → doctor-ULBOHEIC.js} +3 -3
  60. package/dist/{drift-YGT4LJ7Q.js → drift-R5NRKFHI.js} +1 -1
  61. package/dist/{echo-A6HD5UP7.js → echo-O2LY7CC2.js} +1 -1
  62. package/dist/{edit-4CLNN5JG.js → edit-R2HNLMOG.js} +2 -2
  63. package/dist/event-25OJKDCE.js +31 -0
  64. package/dist/{export-T7CMMJIB.js → export-IWVL7XLF.js} +1 -1
  65. package/dist/{flow-UFMPVOEM.js → flow-CRRVV3O3.js} +2 -2
  66. package/dist/{global-HHUJSBG5.js → global-3NG5JXUB.js} +1 -1
  67. package/dist/graduate-USAWGBJM.js +160 -0
  68. package/dist/{graph-YYUXI3F7.js → graph-VHUMAAS6.js} +2 -2
  69. package/dist/{graph-server-ZPXRSGCW.js → graph-server-YL22VBBN.js} +1 -1
  70. package/dist/{habits-RG5SVKXP.js → habits-OL5NGPXO.js} +3 -3
  71. package/dist/{history-CETCSUCP.js → history-WOWC573W.js} +1 -1
  72. package/dist/{hooks-TCUHQMPF.js → hooks-HFWSCGPV.js} +2 -2
  73. package/dist/index.js +290 -188
  74. package/dist/{integrity-MK2OP5TA.js → integrity-IHO4FZTS.js} +1 -1
  75. package/dist/{integrity-checker-J7YXRTBT.js → integrity-checker-PSKJA5SB.js} +1 -0
  76. package/dist/journal-loader-5EYSBFFY.js +18 -0
  77. package/dist/{lint-HYWGS3JJ.js → lint-K6CJGGPH.js} +1 -1
  78. package/dist/{list-IUCYPGMK.js → list-4YK7QKFF.js} +1 -1
  79. package/dist/{list-BTLFHSRC.js → list-ENR7Q4CR.js} +2 -2
  80. package/dist/{lore-loader-VTEEZDX3.js → lore-loader-7NO6N6FT.js} +4 -1
  81. package/dist/{lore-server-NOOAHKJX.js → lore-server-UNJY5KC3.js} +1 -1
  82. package/dist/{manual-AFJ2J2V3.js → manual-G6FISID5.js} +1 -1
  83. package/dist/mcp.js +3764 -359
  84. package/dist/{migrate-FQVGQNXZ.js → migrate-LS45DNEV.js} +2 -2
  85. package/dist/{migrate-assessments-JP6Q5KME.js → migrate-assessments-RGH4O6IX.js} +2 -2
  86. package/dist/nomination-engine-Q4XSXFKT.js +40 -0
  87. package/dist/notebook-YWIYGEHV.js +155 -0
  88. package/dist/{orchestrate-A226N6FC.js → orchestrate-XZA33TJC.js} +5 -5
  89. package/dist/{peers-RFQCWVLV.js → peers-DEOUIZM6.js} +1 -1
  90. package/dist/persona-UHAHIVST.js +390 -0
  91. package/dist/{pipeline-3G2FRAKM.js → pipeline-L4HCSBGN.js} +1 -1
  92. package/dist/{platform-server-H7Y6Q7O4.js → platform-server-PMD57BEG.js} +264 -18
  93. package/dist/{plugin-update-checker-HMRPGY5Z.js → plugin-update-checker-ELOEEQYS.js} +1 -0
  94. package/dist/{portal-check-FF5EKZE5.js → portal-check-NPYGII2D.js} +2 -2
  95. package/dist/{portal-compliance-VU4NIFEN.js → portal-compliance-J7DGAPFX.js} +2 -2
  96. package/dist/{probe-7JK7IDNI.js → probe-MHL5HQZ2.js} +3 -3
  97. package/dist/{promote-XO63XMAN.js → promote-F6ZYZZAL.js} +2 -2
  98. package/dist/{providers-YNFSL6HK.js → providers-GK7PB2OL.js} +2 -2
  99. package/dist/{quiz-I75NU2QQ.js → quiz-M66SC7F7.js} +1 -1
  100. package/dist/{record-46CLR4OG.js → record-RA4WR2BO.js} +2 -2
  101. package/dist/{reindex-WIJMCJ4A.js → reindex-HRA2AUS6.js} +3 -2
  102. package/dist/{remember-4EUZKIIB.js → remember-HBWJ655S.js} +1 -1
  103. package/dist/{retag-KC4JVRLE.js → retag-3OLCVDEQ.js} +2 -2
  104. package/dist/{review-Q7M4CRB5.js → review-27ATYTD2.js} +2 -2
  105. package/dist/review-57QMURZV.js +334 -0
  106. package/dist/{ripple-RI3LOT6R.js → ripple-JPBXP5I3.js} +1 -1
  107. package/dist/{sentinel-UOIGJWHH.js → sentinel-4XIG4STA.js} +2 -2
  108. package/dist/{sentinel-bridge-APDXYAZS.js → sentinel-bridge-MDUXTQRL.js} +2 -2
  109. package/dist/{serve-KKEHE44G.js → serve-FLTFTM3P.js} +2 -2
  110. package/dist/{serve-22A4XOIG.js → serve-INL7SNBK.js} +2 -2
  111. package/dist/{serve-2YJ6D2Y6.js → serve-KBSE36PL.js} +4 -4
  112. package/dist/{server-JV6UFGWZ.js → server-54SKYFFY.js} +2 -2
  113. package/dist/{server-RDLQ3DK7.js → server-XUOIO7E6.js} +1 -1
  114. package/dist/{setup-YNZJQLW7.js → setup-EDS27WUR.js} +1 -1
  115. package/dist/{setup-M2ZKLKNN.js → setup-KO5AFC4K.js} +2 -2
  116. package/dist/{shift-LNMKFYLR.js → shift-VFG23DLA.js} +16 -16
  117. package/dist/{show-P7GYO43X.js → show-5PV5KFJE.js} +2 -2
  118. package/dist/{show-PKZMYKRN.js → show-NQKYX6WQ.js} +1 -1
  119. package/dist/{snapshot-Y3COXK4T.js → snapshot-BK4RBPCG.js} +1 -1
  120. package/dist/{spawn-SSXZX45U.js → spawn-AW6GDECS.js} +3 -3
  121. package/dist/{status-KLHALGW4.js → status-WGIAQODY.js} +1 -1
  122. package/dist/{summary-5NQNOD3F.js → summary-NIRABMF5.js} +2 -2
  123. package/dist/{sweep-EZU3GU6S.js → sweep-QMHNSIY5.js} +2 -2
  124. package/dist/{switch-WYUMVNA5.js → switch-6EJPZDIA.js} +1 -1
  125. package/dist/{symphony-6K3HD7AW.js → symphony-4OCY36AI.js} +5 -5
  126. package/dist/{symphony-YCHBYN3E.js → symphony-B75X2MME.js} +2 -2
  127. package/dist/{symphony-peers-HSY3RI3S.js → symphony-peers-2ZQYLRNI.js} +1 -1
  128. package/dist/{symphony-peers-APOGJPF4.js → symphony-peers-OL7F6M5S.js} +1 -0
  129. package/dist/{symphony-relay-GTAJRCVF.js → symphony-relay-UJYUXN65.js} +28 -1
  130. package/dist/{sync-ZM4Q3R4U.js → sync-VEHUH4OA.js} +3 -3
  131. package/dist/{sync-llms-JIPP3XX4.js → sync-llms-YHCFIE6X.js} +2 -2
  132. package/dist/{task-loader-7M2FCBX6.js → task-loader-LDYWQSLM.js} +1 -0
  133. package/dist/{team-HGLJXWQG.js → team-7HG7XK5C.js} +6 -6
  134. package/dist/{test-WTR5Q33E.js → test-566CP5KC.js} +1 -1
  135. package/dist/{thread-3WM7KKID.js → thread-N754I4D5.js} +1 -1
  136. package/dist/{timeline-ANC7LVDL.js → timeline-M3CICQFE.js} +2 -2
  137. package/dist/{triage-IZ4MDYNB.js → triage-HHYGT3HY.js} +1 -1
  138. package/dist/{tutorial-GC6QL4US.js → tutorial-KD22SUNO.js} +1 -1
  139. package/dist/university-content/courses/.purpose +66 -0
  140. package/dist/university-content/courses/para-401.json +146 -0
  141. package/dist/university-content/courses/para-501.json +67 -0
  142. package/dist/university-content/courses/para-601.json +608 -0
  143. package/dist/university-content/plsat/.purpose +6 -0
  144. package/dist/university-content/plsat/v2.0.json +2 -2
  145. package/dist/university-content/plsat/v3.0.json +563 -3
  146. package/dist/university-content/reference.json +91 -0
  147. package/dist/{upgrade-ANX3LVSA.js → upgrade-H5PF32BW.js} +2 -2
  148. package/dist/{validate-GD5XWILV.js → validate-CNKEKO6A.js} +1 -1
  149. package/dist/{validate-ITC5D6QG.js → validate-MB5ULIHS.js} +1 -1
  150. package/dist/{validate-ZVPNN4FL.js → validate-QH3LADM6.js} +1 -1
  151. package/dist/{watch-X64UK7K4.js → watch-2TKP5PVL.js} +3 -3
  152. package/dist/{watch-ERBEJUJW.js → watch-ZF4ML6CD.js} +2 -2
  153. package/dist/{wisdom-L2WC7J62.js → wisdom-AATMGNFA.js} +1 -1
  154. package/dist/work-log-loader-5L45XNYZ.js +14 -0
  155. package/dist/{workspace-UIUTHZTD.js → workspace-6E6OSRNU.js} +4 -4
  156. package/package.json +1 -1
  157. package/platform-ui/dist/assets/DocsSection-ByAgPzWV.js +1 -0
  158. package/platform-ui/dist/assets/DocsSection-CjdO6R-u.css +1 -0
  159. package/platform-ui/dist/assets/{GitSection-BD3Ze06e.js → GitSection-BLovj9yT.js} +1 -1
  160. package/platform-ui/dist/assets/{GraphSection-SglITfSs.js → GraphSection-C5PCPUFl.js} +1 -1
  161. package/platform-ui/dist/assets/{LoreSection-bR5Km4Fd.js → LoreSection-BftejTla.js} +1 -1
  162. package/platform-ui/dist/assets/{SentinelSection-QSpAZArG.js → SentinelSection-CnYcasN7.js} +1 -1
  163. package/platform-ui/dist/assets/{SymphonySection-CobYJgvg.js → SymphonySection-BpmqCHeK.js} +1 -1
  164. package/platform-ui/dist/assets/{index-DbxeSMkV.js → index-G9JnWEs_.js} +10 -10
  165. package/platform-ui/dist/index.html +1 -1
  166. package/dist/dist-PSF5CP4I.js +0 -7294
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  initCommand
4
- } from "./chunk-AKIMFN6I.js";
5
- import "./chunk-7COU5S2Z.js";
4
+ } from "./chunk-JASGXLK3.js";
5
+ import "./chunk-VL67H5IC.js";
6
6
  import "./chunk-36TKPM5Z.js";
7
7
  import {
8
8
  aggregateFromDirectory,
@@ -15,14 +15,14 @@ import {
15
15
  import {
16
16
  findGateFiles
17
17
  } from "./chunk-IRKUEJVW.js";
18
- import "./chunk-QDXI2DHR.js";
18
+ import "./chunk-J2JEQRT3.js";
19
19
  import "./chunk-UPLDI7CN.js";
20
- import "./chunk-KB4XJWE3.js";
20
+ import "./chunk-6N3JTACN.js";
21
21
  import "./chunk-YO6DVTL7.js";
22
22
  import {
23
23
  log
24
24
  } from "./chunk-4NCFWYGG.js";
25
- import "./chunk-ZXMDA7VB.js";
25
+ import "./chunk-PDX44BCA.js";
26
26
 
27
27
  // src/index.ts
28
28
  import { Command } from "commander";
@@ -111,11 +111,11 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
111
111
  program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
112
112
  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("--stack <stack>", "Stack preset (e.g., nextjs, fastapi, swift-ios). Auto-detected if omitted.").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);
113
113
  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").option("--stack <stack>", "Stack preset (e.g., nextjs, fastapi, swift-ios). Auto-detected if omitted.").option("--workspace <name>", "Create or join a multi-project workspace with this name (creates ../.paradigm-workspace)").option("--workspace-path <path>", "Custom workspace file location (default: ../.paradigm-workspace)").action(async (options) => {
114
- const { shiftCommand } = await import("./shift-LNMKFYLR.js");
114
+ const { shiftCommand } = await import("./shift-VFG23DLA.js");
115
115
  await shiftCommand(options);
116
116
  });
117
117
  program.command("presets").description("List available stack presets for paradigm init/shift").option("-d, --discipline <discipline>", "Filter by discipline (e.g., fullstack, api, mobile)").action(async (options) => {
118
- const { listStackPresets } = await import("./discipline-5F5OVTXB.js");
118
+ const { listStackPresets } = await import("./discipline-FA4OZXIS.js");
119
119
  const chalk3 = (await import("chalk")).default;
120
120
  const presets = listStackPresets(options.discipline);
121
121
  if (presets.length === 0) {
@@ -142,95 +142,100 @@ program.command("presets").description("List available stack presets for paradig
142
142
  console.log(chalk3.gray(` ${presets.length} presets available. Auto-detected when --stack is omitted.
143
143
  `));
144
144
  });
145
+ var eventCmd = program.command("event").description("Ambient event stream commands");
146
+ eventCmd.command("emit").description("Emit an event to the ambient event stream (fast, for hook integration)").requiredOption("--type <type>", "Event type (e.g., file-modified, compliance-violation)").requiredOption("--source <source>", "Event source (e.g., post-write-hook, stop-hook)").option("--path <path>", "File path (if applicable)").option("--symbols <symbols...>", "Paradigm symbols referenced").option("--context <context>", "Brief context snippet").option("--severity <severity>", "Severity: info, warning, error, critical").action(async (options) => {
147
+ const { eventEmitCommand } = await import("./event-25OJKDCE.js");
148
+ await eventEmitCommand(options);
149
+ });
145
150
  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) => {
146
- const { setupCommand } = await import("./setup-M2ZKLKNN.js");
151
+ const { setupCommand } = await import("./setup-KO5AFC4K.js");
147
152
  await setupCommand(path2, options);
148
153
  });
149
154
  program.command("status").alias("st").description("Show project status and symbol counts").action(statusCommand);
150
155
  var purposeCmd = program.command("purpose").description("Purpose-related commands");
151
156
  purposeCmd.command("remember [path]").description("Aggregate and display purpose context").action(async (path2 = ".") => {
152
- const { purposeRememberCommand } = await import("./remember-4EUZKIIB.js");
157
+ const { purposeRememberCommand } = await import("./remember-HBWJ655S.js");
153
158
  await purposeRememberCommand(path2);
154
159
  });
155
160
  purposeCmd.command("validate [path]").description("Validate purpose files").action(async (path2 = ".") => {
156
- const { purposeValidateCommand } = await import("./validate-ZVPNN4FL.js");
161
+ const { purposeValidateCommand } = await import("./validate-QH3LADM6.js");
157
162
  await purposeValidateCommand(path2);
158
163
  });
159
164
  var portalCmd = program.command("portal").description("Portal-related commands");
160
165
  portalCmd.command("validate [path]").description("Validate portal.yaml configuration").action(async (path2 = "./portal.yaml") => {
161
- const { gateValidateCommand } = await import("./validate-ITC5D6QG.js");
166
+ const { gateValidateCommand } = await import("./validate-MB5ULIHS.js");
162
167
  await gateValidateCommand(path2);
163
168
  });
164
169
  portalCmd.command("check").description("Check portal gate implementation compliance (declared vs used)").option("--json", "Output as JSON").action(async (options) => {
165
- const { portalCheckCommand } = await import("./portal-check-FF5EKZE5.js");
170
+ const { portalCheckCommand } = await import("./portal-check-NPYGII2D.js");
166
171
  await portalCheckCommand(options);
167
172
  });
168
173
  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) => {
169
- const { gateTestCommand } = await import("./test-WTR5Q33E.js");
174
+ const { gateTestCommand } = await import("./test-566CP5KC.js");
170
175
  await gateTestCommand(path2, options);
171
176
  });
172
177
  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) => {
173
- const { portalWatchCommand } = await import("./watch-X64UK7K4.js");
178
+ const { portalWatchCommand } = await import("./watch-2TKP5PVL.js");
174
179
  await portalWatchCommand(path2, options);
175
180
  });
176
181
  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) => {
177
- const { portalReportCommand } = await import("./watch-X64UK7K4.js");
182
+ const { portalReportCommand } = await import("./watch-2TKP5PVL.js");
178
183
  await portalReportCommand(session, options);
179
184
  });
180
185
  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) => {
181
- const { portalExportCommand } = await import("./watch-X64UK7K4.js");
186
+ const { portalExportCommand } = await import("./watch-2TKP5PVL.js");
182
187
  await portalExportCommand(path2, options);
183
188
  });
184
189
  var premiseCmd = program.command("premise").description("Premise-related commands");
185
190
  premiseCmd.command("aggregate [path]").description("Aggregate all sources into symbol index").action(async (path2 = ".") => {
186
- const { premiseAggregateCommand } = await import("./aggregate-SV3VGEIL.js");
191
+ const { premiseAggregateCommand } = await import("./aggregate-H57K7PNV.js");
187
192
  await premiseAggregateCommand(path2);
188
193
  });
189
194
  premiseCmd.command("snapshot <name>").description("Create a timeline snapshot").option("-d, --description <desc>", "Snapshot description").action(async (name, options) => {
190
- const { premiseSnapshotCommand } = await import("./snapshot-Y3COXK4T.js");
195
+ const { premiseSnapshotCommand } = await import("./snapshot-BK4RBPCG.js");
191
196
  await premiseSnapshotCommand(name, options.description);
192
197
  });
193
198
  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) => {
194
- const { syncCommand } = await import("./sync-ZM4Q3R4U.js");
199
+ const { syncCommand } = await import("./sync-VEHUH4OA.js");
195
200
  await syncCommand(ide, options);
196
201
  });
197
202
  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) => {
198
- const { syncLlmsCommand } = await import("./sync-llms-JIPP3XX4.js");
203
+ const { syncLlmsCommand } = await import("./sync-llms-YHCFIE6X.js");
199
204
  await syncLlmsCommand(options);
200
205
  });
201
206
  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) => {
202
207
  console.log("\x1B[33m\u26A0\uFE0F `paradigm cursorrules` is deprecated. Use `paradigm sync cursor` instead.\x1B[0m\n");
203
- const { cursorrrulesCommand } = await import("./cursorrules-3TKZ4E4R.js");
208
+ const { cursorrrulesCommand } = await import("./cursorrules-HLIKJJZT.js");
204
209
  await cursorrrulesCommand(path2, options);
205
210
  });
206
211
  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) => {
207
- const { indexCommand } = await import("./probe-7JK7IDNI.js");
212
+ const { indexCommand } = await import("./probe-MHL5HQZ2.js");
208
213
  await indexCommand(path2, options);
209
214
  });
210
215
  var probeCmd = program.command("probe").description("Probe-related commands");
211
216
  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) => {
212
- const { indexCommand } = await import("./probe-7JK7IDNI.js");
217
+ const { indexCommand } = await import("./probe-MHL5HQZ2.js");
213
218
  await indexCommand(path2, options);
214
219
  });
215
220
  program.command("migrate").description("Detect and apply migrations to bring project up to date").option("--dry-run", "Preview changes without applying").option("--apply", "Apply all auto migrations without prompting").option("-f, --force", "Re-run previously applied migrations").option("--only <ids...>", "Run specific migrations by ID").option("--category <cat>", "Run migrations in a category (directory, config, template, hook)").option("--no-sync", "Skip template sync").option("--list", "List all migrations and their status").option("-v, --verbose", "Show detailed output").action(async (options) => {
216
- const { migrateCommand } = await import("./migrate-FQVGQNXZ.js");
221
+ const { migrateCommand } = await import("./migrate-LS45DNEV.js");
217
222
  await migrateCommand(options);
218
223
  });
219
224
  program.command("upgrade [path]").description("(Deprecated) Upgrade project with new Paradigm features \u2014 use `paradigm migrate`").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) => {
220
- const { upgradeCommand } = await import("./upgrade-ANX3LVSA.js");
225
+ const { upgradeCommand } = await import("./upgrade-H5PF32BW.js");
221
226
  await upgradeCommand(path2, options);
222
227
  });
223
228
  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) => {
224
- const { lintCommand } = await import("./lint-HYWGS3JJ.js");
229
+ const { lintCommand } = await import("./lint-K6CJGGPH.js");
225
230
  await lintCommand(path2, options);
226
231
  });
227
232
  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) => {
228
- const { costCommand } = await import("./cost-UD3WPEKZ.js");
233
+ const { costCommand } = await import("./cost-VI46A4XL.js");
229
234
  await costCommand(path2, options);
230
235
  });
231
236
  var scanCmd = program.command("scan").description("Visual discovery and auto-generation commands");
232
237
  scanCmd.command("auto [path]").description("Auto-generate .purpose files from code analysis").option("-n, --dry-run", "Show what would be generated without writing").option("-f, --force", "Overwrite existing .purpose files").option("--json", "Output as JSON").option("--init", "Full project initialization: generate .purpose files + portal.yaml").action(async (path2, options) => {
233
- const { autoScanCommand } = await import("./auto-24ICVUH4.js");
238
+ const { autoScanCommand } = await import("./auto-QFS5NHQU.js");
234
239
  await autoScanCommand(path2, options);
235
240
  });
236
241
  scanCmd.action(() => {
@@ -241,7 +246,7 @@ scanCmd.action(() => {
241
246
  });
242
247
  var flowCmd = program.command("flow").description("Flow management commands");
243
248
  flowCmd.command("diagram <flowId>").description("Generate Mermaid diagram for a flow").option("-o, --output <path>", "Output file path").action(async (flowId, options) => {
244
- const { flowDiagramCommand } = await import("./flow-UFMPVOEM.js");
249
+ const { flowDiagramCommand } = await import("./flow-CRRVV3O3.js");
245
250
  await flowDiagramCommand(flowId, options);
246
251
  });
247
252
  flowCmd.action(() => {
@@ -249,7 +254,7 @@ flowCmd.action(() => {
249
254
  });
250
255
  var teamCmd = program.command("team").description("Multi-agent orchestration commands");
251
256
  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) => {
252
- const { teamInitCommand } = await import("./team-HGLJXWQG.js");
257
+ const { teamInitCommand } = await import("./team-7HG7XK5C.js");
253
258
  await teamInitCommand(path2, {
254
259
  ...options,
255
260
  configureModels: options.configureModels,
@@ -257,68 +262,68 @@ teamCmd.command("init [path]").description("Initialize team configuration with d
257
262
  });
258
263
  });
259
264
  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) => {
260
- const { teamStatusCommand } = await import("./team-HGLJXWQG.js");
265
+ const { teamStatusCommand } = await import("./team-7HG7XK5C.js");
261
266
  await teamStatusCommand(path2, options);
262
267
  });
263
268
  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) => {
264
- const { teamHandoffCommand } = await import("./team-HGLJXWQG.js");
269
+ const { teamHandoffCommand } = await import("./team-7HG7XK5C.js");
265
270
  await teamHandoffCommand(path2, options);
266
271
  });
267
272
  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) => {
268
- const { teamAcceptCommand } = await import("./team-HGLJXWQG.js");
273
+ const { teamAcceptCommand } = await import("./team-7HG7XK5C.js");
269
274
  await teamAcceptCommand(handoffId, path2, options);
270
275
  });
271
276
  teamCmd.command("check [path]").description("Check for conflicts and team health issues").option("--json", "Output as JSON").action(async (path2, options) => {
272
- const { teamCheckCommand } = await import("./team-HGLJXWQG.js");
277
+ const { teamCheckCommand } = await import("./team-7HG7XK5C.js");
273
278
  await teamCheckCommand(path2, options);
274
279
  });
275
280
  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) => {
276
- const { teamHistoryCommand } = await import("./team-HGLJXWQG.js");
281
+ const { teamHistoryCommand } = await import("./team-7HG7XK5C.js");
277
282
  await teamHistoryCommand(path2, { ...options, limit: parseInt(options.limit) });
278
283
  });
279
284
  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) => {
280
- const { teamResetCommand } = await import("./team-HGLJXWQG.js");
285
+ const { teamResetCommand } = await import("./team-7HG7XK5C.js");
281
286
  await teamResetCommand(path2, options);
282
287
  });
283
288
  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) => {
284
- const { teamSpawnCommand } = await import("./spawn-SSXZX45U.js");
289
+ const { teamSpawnCommand } = await import("./spawn-AW6GDECS.js");
285
290
  await teamSpawnCommand(agent, path2, options);
286
291
  });
287
292
  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) => {
288
- const { teamOrchestrateCommand } = await import("./orchestrate-A226N6FC.js");
293
+ const { teamOrchestrateCommand } = await import("./orchestrate-XZA33TJC.js");
289
294
  await teamOrchestrateCommand(task, path2, options);
290
295
  });
291
296
  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) => {
292
- const { teamDiffCommand } = await import("./diff-IP5CIARP.js");
297
+ const { teamDiffCommand } = await import("./diff-RQLLNAFI.js");
293
298
  await teamDiffCommand(orchestrationId, path2, options);
294
299
  });
295
300
  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) => {
296
- const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-ZUWQUHSK.js");
301
+ const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-GX2YRWM4.js");
297
302
  await teamAcceptOrchestrationCommand(orchestrationId, path2, options);
298
303
  });
299
304
  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) => {
300
- const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-ZUWQUHSK.js");
305
+ const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-GX2YRWM4.js");
301
306
  await teamRejectOrchestrationCommand(orchestrationId, path2, options);
302
307
  });
303
308
  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) => {
304
- const { teamCostCommand } = await import("./cost-XEBADYFT.js");
309
+ const { teamCostCommand } = await import("./cost-BGM32XJU.js");
305
310
  await teamCostCommand(path2, options);
306
311
  });
307
312
  teamCmd.command("export [path]").description("Export orchestration data").option("-f, --format <format>", "Output format: json, csv", "json").option("--from <date>", "From date (ISO format)").option("--to <date>", "To date (ISO format)").option("-o, --output <file>", "Output file path").action(async (path2, options) => {
308
- const { teamExportCommand } = await import("./export-T7CMMJIB.js");
313
+ const { teamExportCommand } = await import("./export-IWVL7XLF.js");
309
314
  await teamExportCommand(path2, options);
310
315
  });
311
316
  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) => {
312
- const { teamProvidersCommand } = await import("./providers-YNFSL6HK.js");
317
+ const { teamProvidersCommand } = await import("./providers-GK7PB2OL.js");
313
318
  await teamProvidersCommand(path2, options);
314
319
  });
315
320
  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) => {
316
- const { teamModelsCommand } = await import("./team-HGLJXWQG.js");
321
+ const { teamModelsCommand } = await import("./team-7HG7XK5C.js");
317
322
  await teamModelsCommand(path2, options);
318
323
  });
319
324
  var agentsCmd = teamCmd.command("agents").description("Agent management commands");
320
325
  agentsCmd.command("suggest <task>").description("Suggest agents for a task based on triggers").option("--json", "Output as JSON").action(async (task, options) => {
321
- const { agentsSuggestCommand } = await import("./agents-suggest-65SER5IS.js");
326
+ const { agentsSuggestCommand } = await import("./agents-suggest-DNSYJ6IA.js");
322
327
  await agentsSuggestCommand(task, options);
323
328
  });
324
329
  agentsCmd.action(() => {
@@ -328,237 +333,241 @@ agentsCmd.action(() => {
328
333
  console.log("\nRun `paradigm team agents suggest --help` for options.\n");
329
334
  });
330
335
  teamCmd.action(async () => {
331
- const { teamStatusCommand } = await import("./team-HGLJXWQG.js");
336
+ const { teamStatusCommand } = await import("./team-7HG7XK5C.js");
332
337
  await teamStatusCommand(void 0, {});
333
338
  });
334
339
  var pluginCmd = program.command("plugin").description("Plugin management commands");
335
340
  pluginCmd.command("check").description("Check for updates to installed Claude Code plugins").option("-u, --update", "Pull latest changes for all stale marketplace clones").action(async (options) => {
336
- const { pluginCheckCommand } = await import("./check-OLI6AUS6.js");
341
+ const { pluginCheckCommand } = await import("./check-OWAIWV23.js");
337
342
  await pluginCheckCommand(options);
338
343
  });
339
344
  pluginCmd.action(async () => {
340
- const { pluginCheckCommand } = await import("./check-OLI6AUS6.js");
345
+ const { pluginCheckCommand } = await import("./check-OWAIWV23.js");
341
346
  await pluginCheckCommand({});
342
347
  });
343
348
  var workspaceCmd = program.command("workspace").description("Multi-project workspace commands");
344
349
  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) => {
345
- const { workspaceInitCommand } = await import("./workspace-UIUTHZTD.js");
350
+ const { workspaceInitCommand } = await import("./workspace-6E6OSRNU.js");
346
351
  await workspaceInitCommand(options);
347
352
  });
348
353
  workspaceCmd.command("status").description("Show workspace member status and symbol counts").option("--json", "Output as JSON").action(async (options) => {
349
- const { workspaceStatusCommand } = await import("./workspace-UIUTHZTD.js");
354
+ const { workspaceStatusCommand } = await import("./workspace-6E6OSRNU.js");
350
355
  await workspaceStatusCommand(options);
351
356
  });
352
357
  workspaceCmd.command("reindex").description("Rebuild scan-index.json for all workspace members").option("-q, --quiet", "Suppress progress output").action(async (options) => {
353
- const { workspaceReindexCommand } = await import("./workspace-UIUTHZTD.js");
358
+ const { workspaceReindexCommand } = await import("./workspace-6E6OSRNU.js");
354
359
  await workspaceReindexCommand(options);
355
360
  });
356
361
  workspaceCmd.action(async () => {
357
- const { workspaceStatusCommand } = await import("./workspace-UIUTHZTD.js");
362
+ const { workspaceStatusCommand } = await import("./workspace-6E6OSRNU.js");
358
363
  await workspaceStatusCommand({});
359
364
  });
360
365
  program.command("doctor").description("Health check - validate Paradigm setup").option("--context", "Run only context audit checks (CLAUDE.md quality)").action(async (options) => {
361
- const { doctorCommand } = await import("./doctor-GKZJU7QG.js");
366
+ const { doctorCommand } = await import("./doctor-ULBOHEIC.js");
362
367
  await doctorCommand(options);
363
368
  });
364
369
  program.command("integrity").description("Symbol integrity check \u2014 broken refs, duplicates, orphans, missing anchors").option("--json", "Output machine-readable JSON").action(async (options) => {
365
- const { integrityCommand } = await import("./integrity-MK2OP5TA.js");
370
+ const { integrityCommand } = await import("./integrity-IHO4FZTS.js");
366
371
  await integrityCommand(options);
367
372
  });
373
+ program.command("review").description("Automated two-stage review pipeline \u2014 spec compliance + code quality").option("--pr <number>", "Review a PR via gh CLI").option("--ci", "Exit 1 on blocking findings").option("--deep", "Include code quality checks (eval, secrets, console.log)").option("--json", "Output machine-readable JSON").action(async (options) => {
374
+ const { reviewCommand } = await import("./review-57QMURZV.js");
375
+ await reviewCommand(options);
376
+ });
368
377
  program.command("sweep").description("Entropy detection and cleanup \u2014 find orphaned symbols, stale purpose files, phantom gates").option("--dry", "Report only, no fixes applied").option("--skip-fix", "Same as --dry").option("-q, --quiet", "Minimal output").action(async (options) => {
369
- const { sweepCommand } = await import("./sweep-EZU3GU6S.js");
378
+ const { sweepCommand } = await import("./sweep-QMHNSIY5.js");
370
379
  await sweepCommand(options);
371
380
  });
372
381
  var driftCmd = program.command("drift").description("Aspect anchor drift detection");
373
382
  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) => {
374
- const { driftCheckCommand } = await import("./drift-YGT4LJ7Q.js");
383
+ const { driftCheckCommand } = await import("./drift-R5NRKFHI.js");
375
384
  await driftCheckCommand(options);
376
385
  });
377
386
  var globalCmd = program.command("global").description("Manage Global Brain (~/.paradigm/)");
378
387
  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) => {
379
- const { globalCleanCommand } = await import("./global-HHUJSBG5.js");
388
+ const { globalCleanCommand } = await import("./global-3NG5JXUB.js");
380
389
  await globalCleanCommand(options);
381
390
  });
382
391
  globalCmd.action(() => {
383
392
  globalCmd.outputHelp();
384
393
  });
385
394
  program.command("watch").description("Watch for changes and auto-sync IDE files").action(async () => {
386
- const { watchCommand } = await import("./watch-ERBEJUJW.js");
395
+ const { watchCommand } = await import("./watch-ZF4ML6CD.js");
387
396
  await watchCommand();
388
397
  });
389
398
  program.command("summary").description("Generate .paradigm/project.md with project stats").action(async () => {
390
- const { summaryCommand } = await import("./summary-5NQNOD3F.js");
399
+ const { summaryCommand } = await import("./summary-NIRABMF5.js");
391
400
  await summaryCommand();
392
401
  });
393
402
  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) => {
394
- const { constellationCommand } = await import("./constellation-FAGT45TU.js");
403
+ const { constellationCommand } = await import("./constellation-A26CCGQS.js");
395
404
  await constellationCommand(path2, options);
396
405
  });
397
406
  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) => {
398
- const { beaconCommand } = await import("./beacon-3SJV4DAP.js");
407
+ const { beaconCommand } = await import("./beacon-KXZXYQHX.js");
399
408
  await beaconCommand(path2, options);
400
409
  });
401
410
  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) => {
402
- const { rippleCommand } = await import("./ripple-RI3LOT6R.js");
411
+ const { rippleCommand } = await import("./ripple-JPBXP5I3.js");
403
412
  await rippleCommand(symbol, path2, options);
404
413
  });
405
414
  var threadCmd = program.command("thread").description("Session continuity - pass context between AI agent sessions");
406
415
  threadCmd.command("show [path]").alias("s").description("Show current thread").option("--json", "Output as JSON (for AI agent queries)").action(async (path2, options) => {
407
- const { threadShowCommand } = await import("./thread-3WM7KKID.js");
416
+ const { threadShowCommand } = await import("./thread-N754I4D5.js");
408
417
  await threadShowCommand(path2, options);
409
418
  });
410
419
  threadCmd.command("save <message> [path]").description("Save activity to the thread trail").option("-q, --quiet", "Suppress output").action(async (message, path2, options) => {
411
- const { threadSaveCommand } = await import("./thread-3WM7KKID.js");
420
+ const { threadSaveCommand } = await import("./thread-N754I4D5.js");
412
421
  await threadSaveCommand(message, path2, options);
413
422
  });
414
423
  threadCmd.command("todo <task> [path]").description("Add a loose end (unfinished task)").option("-q, --quiet", "Suppress output").action(async (task, path2, options) => {
415
- const { threadTodoCommand } = await import("./thread-3WM7KKID.js");
424
+ const { threadTodoCommand } = await import("./thread-N754I4D5.js");
416
425
  await threadTodoCommand(task, path2, options);
417
426
  });
418
427
  threadCmd.command("note <note> [path]").description("Add a breadcrumb (note for next agent)").option("-q, --quiet", "Suppress output").action(async (note, path2, options) => {
419
- const { threadNoteCommand } = await import("./thread-3WM7KKID.js");
428
+ const { threadNoteCommand } = await import("./thread-N754I4D5.js");
420
429
  await threadNoteCommand(note, path2, options);
421
430
  });
422
431
  threadCmd.command("clear [path]").description("Clear the thread").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
423
- const { threadClearCommand } = await import("./thread-3WM7KKID.js");
432
+ const { threadClearCommand } = await import("./thread-N754I4D5.js");
424
433
  await threadClearCommand(path2, options);
425
434
  });
426
435
  threadCmd.option("--json", "Output as JSON (for AI agent queries)").action(async (options) => {
427
- const { threadShowCommand } = await import("./thread-3WM7KKID.js");
436
+ const { threadShowCommand } = await import("./thread-N754I4D5.js");
428
437
  await threadShowCommand(void 0, options);
429
438
  });
430
439
  var echoCmd = program.command("echo").description("Error-to-symbol mapping - find related symbols for error codes");
431
440
  echoCmd.command("lookup <errorCode> [path]").alias("l").description("Look up an error code").option("--json", "Output as JSON (for AI agent queries)").action(async (errorCode, path2, options) => {
432
- const { echoCommand } = await import("./echo-A6HD5UP7.js");
441
+ const { echoCommand } = await import("./echo-O2LY7CC2.js");
433
442
  await echoCommand(errorCode, path2, options);
434
443
  });
435
444
  echoCmd.command("init [path]").description("Create .paradigm/echoes.yaml template").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
436
- const { echoInitCommand } = await import("./echo-A6HD5UP7.js");
445
+ const { echoInitCommand } = await import("./echo-O2LY7CC2.js");
437
446
  await echoInitCommand(path2, options);
438
447
  });
439
448
  echoCmd.command("list [path]").alias("ls").description("List all error mappings").action(async (path2) => {
440
- const { echoListCommand } = await import("./echo-A6HD5UP7.js");
449
+ const { echoListCommand } = await import("./echo-O2LY7CC2.js");
441
450
  await echoListCommand(path2);
442
451
  });
443
452
  echoCmd.argument("[errorCode]", "Error code to look up").option("--json", "Output as JSON (for AI agent queries)").action(async (errorCode, options) => {
444
453
  if (errorCode) {
445
- const { echoCommand } = await import("./echo-A6HD5UP7.js");
454
+ const { echoCommand } = await import("./echo-O2LY7CC2.js");
446
455
  await echoCommand(errorCode, void 0, options);
447
456
  } else {
448
- const { echoListCommand } = await import("./echo-A6HD5UP7.js");
457
+ const { echoListCommand } = await import("./echo-O2LY7CC2.js");
449
458
  await echoListCommand();
450
459
  }
451
460
  });
452
461
  var tutorialCmd = program.command("tutorial").description("Interactive tutorial system");
453
462
  tutorialCmd.command("start [path]").description("Start the tutorial").action(async (path2) => {
454
- const { tutorialStartCommand } = await import("./tutorial-GC6QL4US.js");
463
+ const { tutorialStartCommand } = await import("./tutorial-KD22SUNO.js");
455
464
  await tutorialStartCommand(path2);
456
465
  });
457
466
  tutorialCmd.command("step [n] [path]").description("Show tutorial step").action(async (n, path2) => {
458
- const { tutorialStepCommand } = await import("./tutorial-GC6QL4US.js");
467
+ const { tutorialStepCommand } = await import("./tutorial-KD22SUNO.js");
459
468
  await tutorialStepCommand(path2, n);
460
469
  });
461
470
  tutorialCmd.command("checkpoint [path]").description("Validate current checkpoint").action(async (path2) => {
462
- const { tutorialCheckpointCommand } = await import("./tutorial-GC6QL4US.js");
471
+ const { tutorialCheckpointCommand } = await import("./tutorial-KD22SUNO.js");
463
472
  await tutorialCheckpointCommand(path2);
464
473
  });
465
474
  tutorialCmd.command("next [path]").description("Move to next step").action(async (path2) => {
466
- const { tutorialNextCommand } = await import("./tutorial-GC6QL4US.js");
475
+ const { tutorialNextCommand } = await import("./tutorial-KD22SUNO.js");
467
476
  await tutorialNextCommand(path2);
468
477
  });
469
478
  tutorialCmd.command("status [path]").description("Show tutorial progress").action(async (path2) => {
470
- const { tutorialStatusCommand } = await import("./tutorial-GC6QL4US.js");
479
+ const { tutorialStatusCommand } = await import("./tutorial-KD22SUNO.js");
471
480
  await tutorialStatusCommand(path2);
472
481
  });
473
482
  tutorialCmd.command("reset [path]").description("Reset tutorial to beginning").action(async (path2) => {
474
- const { tutorialResetCommand } = await import("./tutorial-GC6QL4US.js");
483
+ const { tutorialResetCommand } = await import("./tutorial-KD22SUNO.js");
475
484
  await tutorialResetCommand(path2);
476
485
  });
477
486
  tutorialCmd.command("bugs [path]").description("List intentional bugs").action(async (path2) => {
478
- const { tutorialBugsCommand } = await import("./tutorial-GC6QL4US.js");
487
+ const { tutorialBugsCommand } = await import("./tutorial-KD22SUNO.js");
479
488
  await tutorialBugsCommand(path2);
480
489
  });
481
490
  var mcpCmd = program.command("mcp").description("MCP server configuration for AI clients");
482
491
  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) => {
483
- const { mcpSetupCommand } = await import("./setup-YNZJQLW7.js");
492
+ const { mcpSetupCommand } = await import("./setup-EDS27WUR.js");
484
493
  await mcpSetupCommand(options);
485
494
  });
486
495
  mcpCmd.command("status").description("Show MCP configuration status across clients").option("--json", "Output as JSON").action(async (options) => {
487
- const { mcpStatusCommand } = await import("./setup-YNZJQLW7.js");
496
+ const { mcpStatusCommand } = await import("./setup-EDS27WUR.js");
488
497
  await mcpStatusCommand(options);
489
498
  });
490
499
  mcpCmd.command("list").alias("ls").description("List all configured MCP servers across all clients").option("--json", "Output as JSON").action(async (options) => {
491
- const { mcpListCommand } = await import("./setup-YNZJQLW7.js");
500
+ const { mcpListCommand } = await import("./setup-EDS27WUR.js");
492
501
  await mcpListCommand(options);
493
502
  });
494
503
  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) => {
495
- const { mcpRemoveCommand } = await import("./setup-YNZJQLW7.js");
504
+ const { mcpRemoveCommand } = await import("./setup-EDS27WUR.js");
496
505
  await mcpRemoveCommand(server, options);
497
506
  });
498
507
  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) => {
499
- const { mcpUseDevCommand } = await import("./switch-WYUMVNA5.js");
508
+ const { mcpUseDevCommand } = await import("./switch-6EJPZDIA.js");
500
509
  await mcpUseDevCommand(options);
501
510
  });
502
511
  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) => {
503
- const { mcpUseProdCommand } = await import("./switch-WYUMVNA5.js");
512
+ const { mcpUseProdCommand } = await import("./switch-6EJPZDIA.js");
504
513
  await mcpUseProdCommand(options);
505
514
  });
506
515
  mcpCmd.action(async () => {
507
- const { mcpSwitchStatusCommand } = await import("./switch-WYUMVNA5.js");
516
+ const { mcpSwitchStatusCommand } = await import("./switch-6EJPZDIA.js");
508
517
  await mcpSwitchStatusCommand({});
509
518
  });
510
519
  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) => {
511
- const { promoteCommand } = await import("./promote-XO63XMAN.js");
520
+ const { promoteCommand } = await import("./promote-F6ZYZZAL.js");
512
521
  await promoteCommand(options);
513
522
  });
514
523
  var wisdomCmd = program.command("wisdom").description("Team wisdom - preferences, antipatterns, decisions, expertise");
515
524
  wisdomCmd.command("show [symbol]").description("Display wisdom for symbols or overview").option("--json", "Output as JSON").action(async (symbol, options) => {
516
- const { wisdomShowCommand } = await import("./wisdom-L2WC7J62.js");
525
+ const { wisdomShowCommand } = await import("./wisdom-AATMGNFA.js");
517
526
  await wisdomShowCommand(symbol, options);
518
527
  });
519
528
  wisdomCmd.command("init").description("Initialize wisdom directory with templates").option("-f, --force", "Overwrite existing files").action(async (options) => {
520
- const { wisdomInitCommand } = await import("./wisdom-L2WC7J62.js");
529
+ const { wisdomInitCommand } = await import("./wisdom-AATMGNFA.js");
521
530
  await wisdomInitCommand(options);
522
531
  });
523
532
  wisdomCmd.command("add-antipattern").description("Add a new antipattern").requiredOption("--id <id>", "Antipattern ID (e.g., api-001)").requiredOption("--symbols <symbols>", "Comma-separated symbols").requiredOption("--description <desc>", "What NOT to do").requiredOption("--reason <reason>", "Why this is bad").requiredOption("--alternative <alt>", "What to do instead").action(async (options) => {
524
- const { wisdomAddAntipatternCommand } = await import("./wisdom-L2WC7J62.js");
533
+ const { wisdomAddAntipatternCommand } = await import("./wisdom-AATMGNFA.js");
525
534
  await wisdomAddAntipatternCommand(options);
526
535
  });
527
536
  wisdomCmd.command("decide").description("Create a new decision record (ADR)").requiredOption("--id <id>", "Decision ID (e.g., 001)").requiredOption("--title <title>", "Decision title").requiredOption("--symbols <symbols>", "Comma-separated symbols").requiredOption("--context <context>", "Context/problem").requiredOption("--decision <decision>", "The decision made").option("--status <status>", "Status: proposed, accepted", "proposed").action(async (options) => {
528
- const { wisdomDecideCommand } = await import("./wisdom-L2WC7J62.js");
537
+ const { wisdomDecideCommand } = await import("./wisdom-AATMGNFA.js");
529
538
  await wisdomDecideCommand(options);
530
539
  });
531
540
  wisdomCmd.command("expert [query]").description("Find experts for symbols or areas").option("--json", "Output as JSON").action(async (query, options) => {
532
- const { wisdomExpertCommand } = await import("./wisdom-L2WC7J62.js");
541
+ const { wisdomExpertCommand } = await import("./wisdom-AATMGNFA.js");
533
542
  await wisdomExpertCommand(query, options);
534
543
  });
535
544
  wisdomCmd.option("--json", "Output as JSON").action(async (options) => {
536
- const { wisdomShowCommand } = await import("./wisdom-L2WC7J62.js");
545
+ const { wisdomShowCommand } = await import("./wisdom-AATMGNFA.js");
537
546
  await wisdomShowCommand(void 0, options);
538
547
  });
539
548
  var historyCmd = program.command("history").description("Implementation history - tracking changes, validation, fragility");
540
549
  historyCmd.command("show [symbol]").description("Display history for symbols or overview").option("--json", "Output as JSON").option("-l, --limit <number>", "Number of entries", "10").action(async (symbol, options) => {
541
- const { historyShowCommand } = await import("./history-CETCSUCP.js");
550
+ const { historyShowCommand } = await import("./history-WOWC573W.js");
542
551
  await historyShowCommand(symbol, { ...options, limit: parseInt(options.limit) });
543
552
  });
544
553
  historyCmd.command("init").description("Initialize history directory").option("-f, --force", "Overwrite existing files").action(async (options) => {
545
- const { historyInitCommand } = await import("./history-CETCSUCP.js");
554
+ const { historyInitCommand } = await import("./history-WOWC573W.js");
546
555
  await historyInitCommand(options);
547
556
  });
548
557
  historyCmd.command("fragile").description("Show fragile symbols that need extra care").option("--json", "Output as JSON").action(async (options) => {
549
- const { historyFragileCommand } = await import("./history-CETCSUCP.js");
558
+ const { historyFragileCommand } = await import("./history-WOWC573W.js");
550
559
  await historyFragileCommand(options);
551
560
  });
552
561
  historyCmd.command("reindex").description("Regenerate index from log").action(async () => {
553
- const { historyReindexCommand } = await import("./history-CETCSUCP.js");
562
+ const { historyReindexCommand } = await import("./history-WOWC573W.js");
554
563
  await historyReindexCommand();
555
564
  });
556
565
  historyCmd.command("record").description("Record an implementation event").requiredOption("--type <type>", "Type: implement, refactor, rollback").requiredOption("--symbols <symbols>", "Comma-separated symbols").requiredOption("--description <desc>", "What was done").option("--intent <intent>", "Intent: feature, fix, refactor").option("--commit <hash>", "Git commit hash").option("--reason <reason>", "Reason for rollback").action(async (options) => {
557
- const { historyRecordCommand } = await import("./history-CETCSUCP.js");
566
+ const { historyRecordCommand } = await import("./history-WOWC573W.js");
558
567
  await historyRecordCommand(options);
559
568
  });
560
569
  historyCmd.command("validate").description("Record a validation result").requiredOption("--result <result>", "Result: pass, fail, partial").option("--ref <id>", "Implementation ID being validated").option("--passed <n>", "Tests passed").option("--failed <n>", "Tests failed").action(async (options) => {
561
- const { historyValidateCommand } = await import("./history-CETCSUCP.js");
570
+ const { historyValidateCommand } = await import("./history-WOWC573W.js");
562
571
  await historyValidateCommand({
563
572
  ...options,
564
573
  passed: options.passed ? parseInt(options.passed) : void 0,
@@ -566,361 +575,454 @@ historyCmd.command("validate").description("Record a validation result").require
566
575
  });
567
576
  });
568
577
  historyCmd.option("--json", "Output as JSON").action(async (options) => {
569
- const { historyShowCommand } = await import("./history-CETCSUCP.js");
578
+ const { historyShowCommand } = await import("./history-WOWC573W.js");
570
579
  await historyShowCommand(void 0, options);
571
580
  });
572
581
  var hooksCmd = program.command("hooks").description("Git hooks for automatic history capture");
573
582
  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) => {
574
- const { hooksInstallCommand } = await import("./hooks-TCUHQMPF.js");
583
+ const { hooksInstallCommand } = await import("./hooks-HFWSCGPV.js");
575
584
  await hooksInstallCommand(options);
576
585
  });
577
586
  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) => {
578
- const { hooksUninstallCommand } = await import("./hooks-TCUHQMPF.js");
587
+ const { hooksUninstallCommand } = await import("./hooks-HFWSCGPV.js");
579
588
  await hooksUninstallCommand(options);
580
589
  });
581
590
  hooksCmd.command("status").description("Check git hooks status").action(async () => {
582
- const { hooksStatusCommand } = await import("./hooks-TCUHQMPF.js");
591
+ const { hooksStatusCommand } = await import("./hooks-HFWSCGPV.js");
583
592
  await hooksStatusCommand();
584
593
  });
585
594
  hooksCmd.action(async () => {
586
- const { hooksStatusCommand } = await import("./hooks-TCUHQMPF.js");
595
+ const { hooksStatusCommand } = await import("./hooks-HFWSCGPV.js");
587
596
  await hooksStatusCommand();
588
597
  });
589
598
  var triageCmd = program.command("triage").description("Semantic error triage - incident management and pattern matching");
590
599
  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) => {
591
- const { triageListCommand } = await import("./triage-IZ4MDYNB.js");
600
+ const { triageListCommand } = await import("./triage-HHYGT3HY.js");
592
601
  await triageListCommand(options);
593
602
  });
594
603
  triageCmd.command("show <id>").description("Show full incident details").option("--timeline", "Include flow timeline").option("--json", "Output as JSON").action(async (id, options) => {
595
- const { triageShowCommand } = await import("./triage-IZ4MDYNB.js");
604
+ const { triageShowCommand } = await import("./triage-HHYGT3HY.js");
596
605
  await triageShowCommand(id, options);
597
606
  });
598
607
  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) => {
599
- const { triageResolveCommand } = await import("./triage-IZ4MDYNB.js");
608
+ const { triageResolveCommand } = await import("./triage-HHYGT3HY.js");
600
609
  await triageResolveCommand(id, options);
601
610
  });
602
611
  triageCmd.command("note <id> <note>").description("Add a note to an incident").action(async (id, note) => {
603
- const { triageNoteCommand } = await import("./triage-IZ4MDYNB.js");
612
+ const { triageNoteCommand } = await import("./triage-HHYGT3HY.js");
604
613
  await triageNoteCommand(id, note);
605
614
  });
606
615
  triageCmd.command("link <id1> <id2>").description("Link two related incidents").action(async (id1, id2) => {
607
- const { triageLinkCommand } = await import("./triage-IZ4MDYNB.js");
616
+ const { triageLinkCommand } = await import("./triage-HHYGT3HY.js");
608
617
  await triageLinkCommand(id1, id2);
609
618
  });
610
619
  var triagePatternsCmd = triageCmd.command("patterns").description("Manage failure patterns");
611
620
  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) => {
612
- const { triagePatternsListCommand } = await import("./triage-IZ4MDYNB.js");
621
+ const { triagePatternsListCommand } = await import("./triage-HHYGT3HY.js");
613
622
  await triagePatternsListCommand(options);
614
623
  });
615
624
  triagePatternsCmd.command("show <id>").description("Show pattern details").option("--json", "Output as JSON").action(async (id, options) => {
616
- const { triagePatternsShowCommand } = await import("./triage-IZ4MDYNB.js");
625
+ const { triagePatternsShowCommand } = await import("./triage-HHYGT3HY.js");
617
626
  await triagePatternsShowCommand(id, options);
618
627
  });
619
628
  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) => {
620
- const { triagePatternsAddCommand } = await import("./triage-IZ4MDYNB.js");
629
+ const { triagePatternsAddCommand } = await import("./triage-HHYGT3HY.js");
621
630
  await triagePatternsAddCommand(options);
622
631
  });
623
632
  triagePatternsCmd.command("delete <id>").alias("rm").description("Delete a pattern").action(async (id) => {
624
- const { triagePatternsDeleteCommand } = await import("./triage-IZ4MDYNB.js");
633
+ const { triagePatternsDeleteCommand } = await import("./triage-HHYGT3HY.js");
625
634
  await triagePatternsDeleteCommand(id);
626
635
  });
627
636
  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) => {
628
- const { triagePatternsTestCommand } = await import("./triage-IZ4MDYNB.js");
637
+ const { triagePatternsTestCommand } = await import("./triage-HHYGT3HY.js");
629
638
  await triagePatternsTestCommand(id, options);
630
639
  });
631
640
  triagePatternsCmd.command("seed").description("Load built-in seed patterns").action(async () => {
632
- const { triagePatternsSeedCommand } = await import("./triage-IZ4MDYNB.js");
641
+ const { triagePatternsSeedCommand } = await import("./triage-HHYGT3HY.js");
633
642
  await triagePatternsSeedCommand();
634
643
  });
635
644
  triagePatternsCmd.action(async () => {
636
- const { triagePatternsListCommand } = await import("./triage-IZ4MDYNB.js");
645
+ const { triagePatternsListCommand } = await import("./triage-HHYGT3HY.js");
637
646
  await triagePatternsListCommand({});
638
647
  });
639
648
  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) => {
640
- const { triageExportCommand } = await import("./triage-IZ4MDYNB.js");
649
+ const { triageExportCommand } = await import("./triage-HHYGT3HY.js");
641
650
  await triageExportCommand(type, options);
642
651
  });
643
652
  triageCmd.command("import <file>").description("Import patterns from JSON file").option("--overwrite", "Overwrite existing patterns").action(async (file, options) => {
644
- const { triageImportCommand } = await import("./triage-IZ4MDYNB.js");
653
+ const { triageImportCommand } = await import("./triage-HHYGT3HY.js");
645
654
  await triageImportCommand(file, options);
646
655
  });
647
656
  triageCmd.command("restore <file>").description("Restore from full backup").action(async (file) => {
648
- const { triageRestoreCommand } = await import("./triage-IZ4MDYNB.js");
657
+ const { triageRestoreCommand } = await import("./triage-HHYGT3HY.js");
649
658
  await triageRestoreCommand(file);
650
659
  });
651
660
  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) => {
652
- const { triageStatsCommand } = await import("./triage-IZ4MDYNB.js");
661
+ const { triageStatsCommand } = await import("./triage-HHYGT3HY.js");
653
662
  await triageStatsCommand(options);
654
663
  });
655
664
  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) => {
656
- const { triageRecordCommand } = await import("./triage-IZ4MDYNB.js");
665
+ const { triageRecordCommand } = await import("./triage-HHYGT3HY.js");
657
666
  await triageRecordCommand(options);
658
667
  });
659
668
  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) => {
660
- const { triageListCommand } = await import("./triage-IZ4MDYNB.js");
669
+ const { triageListCommand } = await import("./triage-HHYGT3HY.js");
661
670
  await triageListCommand(options);
662
671
  });
663
672
  var loreCmd = program.command("lore").description("Project lore - timeline of everything that happened to this project");
664
673
  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, retro, insight").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) => {
665
- const { loreListCommand } = await import("./list-BTLFHSRC.js");
674
+ const { loreListCommand } = await import("./list-ENR7Q4CR.js");
666
675
  await loreListCommand(options);
667
676
  });
668
677
  loreCmd.command("show <id>").description("Show full detail for a lore entry").option("--json", "Output as JSON").action(async (id, options) => {
669
- const { loreShowCommand } = await import("./show-P7GYO43X.js");
678
+ const { loreShowCommand } = await import("./show-5PV5KFJE.js");
670
679
  await loreShowCommand(id, options);
671
680
  });
672
681
  loreCmd.command("record").description("Record a new lore entry (human note, milestone, etc.)").option("--type <type>", "Entry type: human-note, decision, milestone, retro, insight", "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").option("--meta <json>", `Project-defined metadata as JSON (e.g., '{"sprint": 12}')`).option("--body <text>", "Long-form content (detailed notes, rationale, etc.)").option("--link-lore <ids>", "Comma-separated lore entry IDs to link").option("--link-commits <shas>", "Comma-separated git commit SHAs to link").option("--confidence <number>", "Confidence in correctness (0.0 to 1.0)").action(async (options) => {
673
- const { loreRecordCommand } = await import("./record-46CLR4OG.js");
682
+ const { loreRecordCommand } = await import("./record-RA4WR2BO.js");
674
683
  await loreRecordCommand(options);
675
684
  });
676
685
  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) => {
677
- const { loreReviewCommand } = await import("./review-Q7M4CRB5.js");
686
+ const { loreReviewCommand } = await import("./review-27ATYTD2.js");
678
687
  await loreReviewCommand(id, options);
679
688
  });
680
689
  loreCmd.command("assess <id> <verdict>").description("Record an assessment verdict on a lore entry (correct/partial/incorrect)").option("--assessor <name>", "Assessor name").option("--notes <text>", "Assessment notes").action(async (id, verdict, options) => {
681
- const { loreAssessCommand } = await import("./assess-UHBDYIK7.js");
690
+ const { loreAssessCommand } = await import("./assess-4WVXZLZQ.js");
682
691
  await loreAssessCommand(id, verdict, options);
683
692
  });
684
693
  loreCmd.command("calibration").description("Show calibration statistics across assessed lore entries").option("--symbol <symbol>", "Filter by symbol").option("--tag <tag>", "Filter by tag").option("--author <author>", "Filter by author").option("--group-by <dimension>", "Group by: symbol, tag, type").option("--json", "Output as JSON").action(async (options) => {
685
- const { loreCalibrationCommand } = await import("./calibration-WWHK73WU.js");
694
+ const { loreCalibrationCommand } = await import("./calibration-V46G7JTY.js");
686
695
  await loreCalibrationCommand(options);
687
696
  });
688
697
  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) => {
689
- const { loreEditCommand } = await import("./edit-4CLNN5JG.js");
698
+ const { loreEditCommand } = await import("./edit-R2HNLMOG.js");
690
699
  await loreEditCommand(id, options);
691
700
  });
692
701
  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) => {
693
- const { loreDeleteCommand } = await import("./delete-RRK4RL6Y.js");
702
+ const { loreDeleteCommand } = await import("./delete-KBRPQLPC.js");
694
703
  await loreDeleteCommand(id, options);
695
704
  });
696
705
  loreCmd.command("migrate-assessments").description("Migrate assessment entries to lore with arc: tags").option("--dry-run", "Show what would be migrated without making changes").action(async (options) => {
697
- const { loreMigrateAssessmentsCommand } = await import("./migrate-assessments-JP6Q5KME.js");
706
+ const { loreMigrateAssessmentsCommand } = await import("./migrate-assessments-RGH4O6IX.js");
698
707
  await loreMigrateAssessmentsCommand(options);
699
708
  });
700
709
  loreCmd.command("retag").description("Add or remove tags from matching lore entries").option("--add <tag>", "Tag to add").option("--remove <tag>", "Tag to remove").option("--type <type>", "Filter by entry type").option("--symbol <symbol>", "Filter by symbol").option("--author <author>", "Filter by author").option("--from <date>", "Filter from date").option("--to <date>", "Filter to date").option("--tags <tags>", "Filter by existing tags (comma-separated)").option("--dry-run", "Show what would change without making changes").action(async (options) => {
701
- const { loreRetagCommand } = await import("./retag-KC4JVRLE.js");
710
+ const { loreRetagCommand } = await import("./retag-3OLCVDEQ.js");
702
711
  await loreRetagCommand(options);
703
712
  });
704
713
  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) => {
705
- const { loreTimelineCommand } = await import("./timeline-ANC7LVDL.js");
714
+ const { loreTimelineCommand } = await import("./timeline-M3CICQFE.js");
706
715
  await loreTimelineCommand(options);
707
716
  });
708
717
  loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open", "Don't open browser automatically").action(async (options) => {
709
- const { loreServeCommand } = await import("./serve-22A4XOIG.js");
718
+ const { loreServeCommand } = await import("./serve-INL7SNBK.js");
710
719
  await loreServeCommand(void 0, options);
711
720
  });
712
721
  program.command("serve").description("Launch Paradigm Platform \u2014 unified development management UI").option("-p, --port <port>", "Port to run on", "3850").option("--no-open", "Don't open browser automatically").option("--sections <list>", "Comma-separated sections to enable (e.g., lore,graph,git)").action(async (options) => {
713
- const { serveCommand } = await import("./serve-KKEHE44G.js");
722
+ const { serveCommand } = await import("./serve-FLTFTM3P.js");
714
723
  await serveCommand(options);
715
724
  });
716
725
  var graphCmd = program.command("graph").description("Interactive symbol relationship graph").argument("[path]", "Project directory", void 0).option("-p, --port <port>", "Port to run on", "3841").option("--no-open", "Don't open browser automatically").action(async (path2, options) => {
717
- const { graphCommand } = await import("./graph-YYUXI3F7.js");
726
+ const { graphCommand } = await import("./graph-VHUMAAS6.js");
718
727
  await graphCommand(path2, options);
719
728
  });
720
729
  graphCmd.command("generate").description("Generate a named graph file in .paradigm/graphs/").argument("<name>", "Graph name (used as filename: {name}.graph.json)").argument("[path]", "Project directory", void 0).option("-s, --symbols <list>", "Comma-separated symbol names to include").option("-g, --group <spec...>", 'Group spec: "Label:#sym1,#sym2" (repeatable)').option("-l, --link <spec...>", 'Link spec: "Source>Target:label" (repeatable)').action(async (name, path2, options) => {
721
- const { graphGenerateCommand } = await import("./graph-YYUXI3F7.js");
730
+ const { graphGenerateCommand } = await import("./graph-VHUMAAS6.js");
722
731
  await graphGenerateCommand(name, path2, options);
723
732
  });
724
733
  var habitsCmd = program.command("habits").description("Behavioral habits - practice tracking and compliance");
725
734
  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) => {
726
- const { habitsListCommand } = await import("./habits-RG5SVKXP.js");
735
+ const { habitsListCommand } = await import("./habits-OL5NGPXO.js");
727
736
  await habitsListCommand(options);
728
737
  });
729
738
  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) => {
730
- const { habitsStatusCommand } = await import("./habits-RG5SVKXP.js");
739
+ const { habitsStatusCommand } = await import("./habits-OL5NGPXO.js");
731
740
  await habitsStatusCommand(options);
732
741
  });
733
742
  habitsCmd.command("init").description("Initialize habits.yaml with seed habits").option("-f, --force", "Overwrite existing file").action(async (options) => {
734
- const { habitsInitCommand } = await import("./habits-RG5SVKXP.js");
743
+ const { habitsInitCommand } = await import("./habits-OL5NGPXO.js");
735
744
  await habitsInitCommand(options);
736
745
  });
737
746
  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) => {
738
- const { habitsCheckCommand } = await import("./habits-RG5SVKXP.js");
747
+ const { habitsCheckCommand } = await import("./habits-OL5NGPXO.js");
739
748
  await habitsCheckCommand(options);
740
749
  });
741
750
  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) => {
742
- const { habitsAddCommand } = await import("./habits-RG5SVKXP.js");
751
+ const { habitsAddCommand } = await import("./habits-OL5NGPXO.js");
743
752
  await habitsAddCommand({ ...options, checkType: options.checkType });
744
753
  });
745
754
  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) => {
746
- const { habitsEditCommand } = await import("./habits-RG5SVKXP.js");
755
+ const { habitsEditCommand } = await import("./habits-OL5NGPXO.js");
747
756
  await habitsEditCommand(id, { ...options, checkType: options.checkType });
748
757
  });
749
758
  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) => {
750
- const { habitsRemoveCommand } = await import("./habits-RG5SVKXP.js");
759
+ const { habitsRemoveCommand } = await import("./habits-OL5NGPXO.js");
751
760
  await habitsRemoveCommand(id, options);
752
761
  });
753
762
  habitsCmd.command("enable <id>").description("Enable a habit").action(async (id) => {
754
- const { habitsToggleCommand } = await import("./habits-RG5SVKXP.js");
763
+ const { habitsToggleCommand } = await import("./habits-OL5NGPXO.js");
755
764
  await habitsToggleCommand(id, "enable");
756
765
  });
757
766
  habitsCmd.command("disable <id>").description("Disable a habit").action(async (id) => {
758
- const { habitsToggleCommand } = await import("./habits-RG5SVKXP.js");
767
+ const { habitsToggleCommand } = await import("./habits-OL5NGPXO.js");
759
768
  await habitsToggleCommand(id, "disable");
760
769
  });
761
770
  habitsCmd.action(async () => {
762
- const { habitsListCommand } = await import("./habits-RG5SVKXP.js");
771
+ const { habitsListCommand } = await import("./habits-OL5NGPXO.js");
763
772
  await habitsListCommand({});
764
773
  });
774
+ var graduateCmd = program.command("graduate").description("Automation tier graduation \u2014 migrate habits to hooks");
775
+ graduateCmd.command("status", { isDefault: true }).description("Show current automation tier of every habit").option("--json", "Output as JSON").action(async (options) => {
776
+ const { graduateStatusCommand } = await import("./graduate-USAWGBJM.js");
777
+ await graduateStatusCommand(options);
778
+ });
779
+ graduateCmd.command("promote <habitId>").description("Graduate a habit to hook tier (skip MCP evaluation)").action(async (habitId) => {
780
+ const { graduatePromoteCommand } = await import("./graduate-USAWGBJM.js");
781
+ await graduatePromoteCommand(habitId);
782
+ });
783
+ graduateCmd.command("demote <habitId>").description("Demote a habit from hook back to habit tier").option("--cooldown <days>", "Cooldown period in days before re-graduation", "14").action(async (habitId, options) => {
784
+ const { graduateDemoteCommand } = await import("./graduate-USAWGBJM.js");
785
+ await graduateDemoteCommand(habitId, options);
786
+ });
787
+ var personaCmd = program.command("persona").description("Personas \u2014 actor-driven journey testing");
788
+ personaCmd.command("list", { isDefault: true }).alias("ls").description("List all personas").option("--tag <tag>", "Filter by tag").option("--trigger <type>", "Filter by trigger type (root, invitation, signup, api)").option("--gate <gate>", "Filter by gate usage").option("--json", "Output as JSON").action(async (options) => {
789
+ const { personaListCommand } = await import("./persona-UHAHIVST.js");
790
+ await personaListCommand(options);
791
+ });
792
+ personaCmd.command("show <id>").description("Show full persona detail").option("--json", "Output as JSON").action(async (id, options) => {
793
+ const { personaShowCommand } = await import("./persona-UHAHIVST.js");
794
+ await personaShowCommand(id, options);
795
+ });
796
+ personaCmd.command("validate [id]").description("Validate persona schema and cross-references").option("--json", "Output as JSON").action(async (id, options) => {
797
+ const { personaValidateCommand } = await import("./persona-UHAHIVST.js");
798
+ await personaValidateCommand(id, options);
799
+ });
800
+ personaCmd.command("coverage").description("Coverage report \u2014 routes and gates with/without persona coverage").option("--json", "Output as JSON").action(async (options) => {
801
+ const { personaCoverageCommand } = await import("./persona-UHAHIVST.js");
802
+ await personaCoverageCommand(options);
803
+ });
804
+ personaCmd.command("run <id>").description("Execute persona journey against a running server").requiredOption("--base-url <url>", "Base URL (e.g. http://localhost:3000)").option("--dry-run", "Show steps without making HTTP requests").option("--json", "Output as JSON").action(async (id, options) => {
805
+ const { personaRunCommand } = await import("./persona-UHAHIVST.js");
806
+ await personaRunCommand(id, options);
807
+ });
808
+ personaCmd.command("affected <symbol>").description("Show which personas reference a given symbol (gate, flow, signal)").option("--json", "Output as JSON").action(async (symbol, options) => {
809
+ const { personaAffectedCommand } = await import("./persona-UHAHIVST.js");
810
+ await personaAffectedCommand(symbol, options);
811
+ });
812
+ personaCmd.command("delete <id>").description("Delete a persona").action(async (id) => {
813
+ const { personaDeleteCommand } = await import("./persona-UHAHIVST.js");
814
+ await personaDeleteCommand(id);
815
+ });
765
816
  var sentinelCmd = program.command("sentinel").description("Sentinel \u2014 semantic error monitoring");
766
817
  sentinelCmd.command("defend [path]", { isDefault: true }).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) => {
767
- const { sentinelCommand } = await import("./sentinel-UOIGJWHH.js");
818
+ const { sentinelCommand } = await import("./sentinel-4XIG4STA.js");
768
819
  await sentinelCommand(path2, options);
769
820
  });
770
821
  program.command("conductor").description("Launch Paradigm Conductor \u2014 multimodal mission control for Claude Code sessions").option("--build", "Force rebuild the native binary").option("-v, --verbose", "Show build output").action(async (options) => {
771
- const { conductorCommand } = await import("./conductor-HLWYWUVH.js");
822
+ const { conductorCommand } = await import("./conductor-PGPDVIVE.js");
772
823
  await conductorCommand(options);
773
824
  });
774
825
  var universityCmd = program.command("university").description("Per-project university - knowledge base, quizzes, learning paths & PLSAT certification");
775
826
  universityCmd.command("serve").description("Launch Paradigm University learning platform").option("-p, --port <port>", "Port to run on", "3839").option("--no-open", "Don't open browser automatically").action(async (options) => {
776
- const { universityServeCommand } = await import("./serve-2YJ6D2Y6.js");
827
+ const { universityServeCommand } = await import("./serve-KBSE36PL.js");
777
828
  await universityServeCommand(void 0, options);
778
829
  });
779
830
  universityCmd.command("list").alias("ls").description("List university content").option("--type <type>", "Filter by type: note, policy, guide, runbook, quiz, path").option("--tag <tag>", "Filter by tag").option("--difficulty <level>", "Filter by difficulty: beginner, intermediate, advanced").option("--symbol <symbol>", "Filter by Paradigm symbol").option("-l, --limit <number>", "Number of entries", "20").option("--json", "Output as JSON").action(async (options) => {
780
- const { universityListCommand } = await import("./list-IUCYPGMK.js");
831
+ const { universityListCommand } = await import("./list-4YK7QKFF.js");
781
832
  await universityListCommand(options);
782
833
  });
783
834
  universityCmd.command("add <type>").description("Create university content (note, policy, guide, runbook, quiz)").option("--title <title>", "Content title (required)").option("--body <text>", "Content body (markdown)").option("--tags <tags>", "Comma-separated tags").option("--symbols <symbols>", "Comma-separated Paradigm symbols").option("--difficulty <level>", "Difficulty: beginner, intermediate, advanced").option("--minutes <n>", "Estimated reading time in minutes").action(async (type, options) => {
784
- const { universityAddCommand } = await import("./add-VSPZ6FM4.js");
835
+ const { universityAddCommand } = await import("./add-FZRKEGH4.js");
785
836
  await universityAddCommand(type, options);
786
837
  });
787
838
  universityCmd.command("show <id>").description("Show a content item in full").option("--json", "Output as JSON").action(async (id, options) => {
788
- const { universityShowCommand } = await import("./show-PKZMYKRN.js");
839
+ const { universityShowCommand } = await import("./show-NQKYX6WQ.js");
789
840
  await universityShowCommand(id, options);
790
841
  });
791
842
  universityCmd.command("quiz <id>").description("Take an interactive quiz in the terminal").action(async (id) => {
792
- const { universityQuizCommand } = await import("./quiz-I75NU2QQ.js");
843
+ const { universityQuizCommand } = await import("./quiz-M66SC7F7.js");
793
844
  await universityQuizCommand(id);
794
845
  });
795
846
  universityCmd.command("status").description("Show university content overview and completion stats").option("--json", "Output as JSON").action(async (options) => {
796
- const { universityStatusCommand } = await import("./status-KLHALGW4.js");
847
+ const { universityStatusCommand } = await import("./status-WGIAQODY.js");
797
848
  await universityStatusCommand(options);
798
849
  });
799
850
  universityCmd.command("validate").description("Validate university content integrity").option("--deep", "Enable deep cross-reference checks against scan-index").option("--id <id>", "Validate a specific content item").option("--json", "Output as JSON").action(async (options) => {
800
- const { universityValidateCommand } = await import("./validate-GD5XWILV.js");
851
+ const { universityValidateCommand } = await import("./validate-CNKEKO6A.js");
801
852
  await universityValidateCommand(options);
802
853
  });
803
854
  universityCmd.option("-p, --port <port>", "Port to run on", "3839").option("--no-open", "Don't open browser automatically").action(async (options) => {
804
- const { universityServeCommand } = await import("./serve-2YJ6D2Y6.js");
855
+ const { universityServeCommand } = await import("./serve-KBSE36PL.js");
805
856
  await universityServeCommand(void 0, options);
806
857
  });
858
+ var docsCmd = program.command("docs").description("Auto-generated documentation from the symbol graph");
859
+ docsCmd.command("serve").description("Launch interactive docs viewer in browser").option("-p, --port <port>", "Port number (default: 3850)").option("--no-open", "Do not open browser automatically").action(async (options) => {
860
+ const { docsServeCommand } = await import("./docs-LVLRPBAW.js");
861
+ await docsServeCommand(options);
862
+ });
863
+ docsCmd.command("build").description("Build static documentation site").option("-o, --output <dir>", "Output directory (default: from config or .paradigm/docs-site)").action(async (options) => {
864
+ const { docsBuildCommand } = await import("./docs-LVLRPBAW.js");
865
+ await docsBuildCommand(options);
866
+ });
867
+ docsCmd.action(async () => {
868
+ const { docsServeCommand } = await import("./docs-LVLRPBAW.js");
869
+ await docsServeCommand({});
870
+ });
807
871
  var pipelineCmd = program.command("pipeline").description("Spec pipeline \u2014 structured feature workflow with configurable gates");
808
872
  pipelineCmd.command("start <description>").description("Create a new pipeline for a feature").option("--template <template>", "Pipeline template (add-feature, bug-fix, security-change, refactor)", "add-feature").option("--gates <gates>", "Custom gate modes: specify,plan,task,implement,validate").action(async (description, options) => {
809
- const { pipelineStartCommand } = await import("./pipeline-3G2FRAKM.js");
873
+ const { pipelineStartCommand } = await import("./pipeline-L4HCSBGN.js");
810
874
  await pipelineStartCommand(description, options);
811
875
  });
812
876
  pipelineCmd.command("status [feature]").description("Show pipeline status").action(async (feature) => {
813
- const { pipelineStatusCommand } = await import("./pipeline-3G2FRAKM.js");
877
+ const { pipelineStatusCommand } = await import("./pipeline-L4HCSBGN.js");
814
878
  await pipelineStatusCommand(feature);
815
879
  });
816
880
  pipelineCmd.command("advance <feature>").description("Advance pipeline past current gate").action(async (feature) => {
817
- const { pipelineAdvanceCommand } = await import("./pipeline-3G2FRAKM.js");
881
+ const { pipelineAdvanceCommand } = await import("./pipeline-L4HCSBGN.js");
818
882
  await pipelineAdvanceCommand(feature);
819
883
  });
820
884
  pipelineCmd.command("configure <feature>").description("Change gate mode on active pipeline").requiredOption("--stage <stage>", "Stage to configure").requiredOption("--gate <gate>", "New gate mode (auto, manual, sentinel)").option("--reason <reason>", "Reason for change").action(async (feature, options) => {
821
- const { pipelineConfigureCommand } = await import("./pipeline-3G2FRAKM.js");
885
+ const { pipelineConfigureCommand } = await import("./pipeline-L4HCSBGN.js");
822
886
  await pipelineConfigureCommand(feature, options);
823
887
  });
824
888
  pipelineCmd.command("abort <feature>").description("Cancel a pipeline").action(async (feature) => {
825
- const { pipelineAbortCommand } = await import("./pipeline-3G2FRAKM.js");
889
+ const { pipelineAbortCommand } = await import("./pipeline-L4HCSBGN.js");
826
890
  await pipelineAbortCommand(feature);
827
891
  });
828
892
  pipelineCmd.command("list").description("List all active pipelines").action(async () => {
829
- const { pipelineListCommand } = await import("./pipeline-3G2FRAKM.js");
893
+ const { pipelineListCommand } = await import("./pipeline-L4HCSBGN.js");
830
894
  await pipelineListCommand();
831
895
  });
832
896
  pipelineCmd.action(async () => {
833
- const { pipelineListCommand } = await import("./pipeline-3G2FRAKM.js");
897
+ const { pipelineListCommand } = await import("./pipeline-L4HCSBGN.js");
834
898
  await pipelineListCommand();
835
899
  });
836
900
  var symphonyCmd = program.command("symphony").description("Symphony \u2014 agent-to-agent messaging for multi-session collaboration");
837
901
  symphonyCmd.command("join").description("Join this session to the Symphony network").option("--remote <ip>", "Connect to remote Symphony server").action(async (options) => {
838
- const { symphonyJoinCommand } = await import("./symphony-6K3HD7AW.js");
902
+ const { symphonyJoinCommand } = await import("./symphony-4OCY36AI.js");
839
903
  await symphonyJoinCommand(options);
840
904
  });
841
905
  symphonyCmd.command("leave").description("Remove this session from the Symphony network").action(async () => {
842
- const { symphonyLeaveCommand } = await import("./symphony-6K3HD7AW.js");
906
+ const { symphonyLeaveCommand } = await import("./symphony-4OCY36AI.js");
843
907
  await symphonyLeaveCommand();
844
908
  });
845
909
  symphonyCmd.command("whoami").description("Show this agent's identity and linked peers").action(async () => {
846
- const { symphonyWhoamiCommand } = await import("./symphony-6K3HD7AW.js");
910
+ const { symphonyWhoamiCommand } = await import("./symphony-4OCY36AI.js");
847
911
  await symphonyWhoamiCommand();
848
912
  });
849
913
  symphonyCmd.command("list").alias("ls").description("List all joined agents").option("--json", "Output as JSON").action(async (options) => {
850
- const { symphonyListCommand } = await import("./symphony-6K3HD7AW.js");
914
+ const { symphonyListCommand } = await import("./symphony-4OCY36AI.js");
851
915
  await symphonyListCommand(options);
852
916
  });
853
917
  symphonyCmd.command("send <message>").description("Send a note to agents").option("--to <agent>", "Send to specific agent (omit for broadcast)").option("--thread <id>", "Reply to existing thread").action(async (message, options) => {
854
- const { symphonySendCommand } = await import("./symphony-6K3HD7AW.js");
918
+ const { symphonySendCommand } = await import("./symphony-4OCY36AI.js");
855
919
  await symphonySendCommand(message, options);
856
920
  });
857
921
  symphonyCmd.command("read").description("Show unread notes").action(async () => {
858
- const { symphonyReadCommand } = await import("./symphony-6K3HD7AW.js");
922
+ const { symphonyReadCommand } = await import("./symphony-4OCY36AI.js");
859
923
  await symphonyReadCommand();
860
924
  });
861
925
  symphonyCmd.command("inbox").description("Show unread notes (alias for read)").action(async () => {
862
- const { symphonyReadCommand } = await import("./symphony-6K3HD7AW.js");
926
+ const { symphonyReadCommand } = await import("./symphony-4OCY36AI.js");
863
927
  await symphonyReadCommand();
864
928
  });
865
929
  symphonyCmd.command("threads").description("List all threads").option("--json", "Output as JSON").action(async (options) => {
866
- const { symphonyThreadsCommand } = await import("./symphony-6K3HD7AW.js");
930
+ const { symphonyThreadsCommand } = await import("./symphony-4OCY36AI.js");
867
931
  await symphonyThreadsCommand(options);
868
932
  });
869
933
  symphonyCmd.command("thread <id>").description("Show full thread conversation").action(async (id) => {
870
- const { symphonyThreadCommand } = await import("./symphony-6K3HD7AW.js");
934
+ const { symphonyThreadCommand } = await import("./symphony-4OCY36AI.js");
871
935
  await symphonyThreadCommand(id);
872
936
  });
873
937
  symphonyCmd.command("resolve <id>").description("Mark a thread as resolved").option("--decision <text>", "Decision text to record").action(async (id, options) => {
874
- const { symphonyResolveCommand } = await import("./symphony-6K3HD7AW.js");
938
+ const { symphonyResolveCommand } = await import("./symphony-4OCY36AI.js");
875
939
  await symphonyResolveCommand(id, options);
876
940
  });
877
941
  symphonyCmd.command("status").description("Show Symphony network status").option("--json", "Output as JSON").action(async (options) => {
878
- const { symphonyStatusCommand } = await import("./symphony-6K3HD7AW.js");
942
+ const { symphonyStatusCommand } = await import("./symphony-4OCY36AI.js");
879
943
  await symphonyStatusCommand(options);
880
944
  });
881
945
  symphonyCmd.command("serve").description("Start Symphony relay server for cross-machine networking").option("--port <port>", "Port to listen on", "3939").option("--public", "Show connection string for internet access").action(async (options) => {
882
- const { symphonyServeCommand } = await import("./symphony-6K3HD7AW.js");
946
+ const { symphonyServeCommand } = await import("./symphony-4OCY36AI.js");
883
947
  await symphonyServeCommand(options);
884
948
  });
885
949
  var peersCmd = symphonyCmd.command("peers").description("Manage trusted remote peers");
886
950
  peersCmd.command("list", { isDefault: true }).description("List trusted peers and their agents").option("--json", "Output as JSON").action(async (options) => {
887
- const { symphonyPeersCommand } = await import("./peers-RFQCWVLV.js");
951
+ const { symphonyPeersCommand } = await import("./peers-DEOUIZM6.js");
888
952
  await symphonyPeersCommand(options);
889
953
  });
890
954
  peersCmd.command("revoke <id>").description("Revoke trust for a peer (disconnects immediately)").action(async (id) => {
891
- const { symphonyPeersRevokeCommand } = await import("./peers-RFQCWVLV.js");
955
+ const { symphonyPeersRevokeCommand } = await import("./peers-DEOUIZM6.js");
892
956
  await symphonyPeersRevokeCommand(id);
893
957
  });
894
958
  peersCmd.command("forget").description("Clear all peer trust records").option("--force", "Skip confirmation").action(async (options) => {
895
- const { symphonyPeersForgetCommand } = await import("./peers-RFQCWVLV.js");
959
+ const { symphonyPeersForgetCommand } = await import("./peers-DEOUIZM6.js");
896
960
  await symphonyPeersForgetCommand(options);
897
961
  });
898
962
  peersCmd.action(async () => {
899
- const { symphonyPeersCommand } = await import("./peers-RFQCWVLV.js");
963
+ const { symphonyPeersCommand } = await import("./peers-DEOUIZM6.js");
900
964
  await symphonyPeersCommand({});
901
965
  });
902
966
  symphonyCmd.command("request <file>").description("Request a file from another agent").option("--from <agent>", "Agent to request from").option("--reason <text>", "Why this file is needed").action(async (file, options) => {
903
- const { symphonyRequestCommand } = await import("./symphony-6K3HD7AW.js");
967
+ const { symphonyRequestCommand } = await import("./symphony-4OCY36AI.js");
904
968
  await symphonyRequestCommand(file, options);
905
969
  });
906
970
  symphonyCmd.command("requests").description("List pending file requests").action(async () => {
907
- const { symphonyRequestsCommand } = await import("./symphony-6K3HD7AW.js");
971
+ const { symphonyRequestsCommand } = await import("./symphony-4OCY36AI.js");
908
972
  await symphonyRequestsCommand();
909
973
  });
910
974
  symphonyCmd.command("approve <id>").description("Approve a file request").option("--redact", "Strip sensitive lines before sending").action(async (id, options) => {
911
- const { symphonyApproveCommand } = await import("./symphony-6K3HD7AW.js");
975
+ const { symphonyApproveCommand } = await import("./symphony-4OCY36AI.js");
912
976
  await symphonyApproveCommand(id, options);
913
977
  });
914
978
  symphonyCmd.command("deny <id>").description("Deny a file request").option("--reason <text>", "Reason for denial").action(async (id, options) => {
915
- const { symphonyDenyCommand } = await import("./symphony-6K3HD7AW.js");
979
+ const { symphonyDenyCommand } = await import("./symphony-4OCY36AI.js");
916
980
  await symphonyDenyCommand(id, options);
917
981
  });
918
982
  symphonyCmd.command("watch").description("Watch inbox in real-time \u2014 zero AI tokens, pure file monitoring").option("--interval <ms>", "Poll interval in milliseconds (default: 2000)").option("--thread <id>", "Only show messages from this thread").option("--quiet", "Minimal output \u2014 messages only, no header").action(async (options) => {
919
- const { symphonyWatchCommand } = await import("./symphony-6K3HD7AW.js");
983
+ const { symphonyWatchCommand } = await import("./symphony-4OCY36AI.js");
920
984
  await symphonyWatchCommand(options);
921
985
  });
922
986
  symphonyCmd.action(async () => {
923
- const { symphonyStatusCommand } = await import("./symphony-6K3HD7AW.js");
987
+ const { symphonyStatusCommand } = await import("./symphony-4OCY36AI.js");
924
988
  await symphonyStatusCommand({});
925
989
  });
990
+ var notebookCmd = program.command("notebook").description("Agent notebook management \u2014 curated snippet libraries");
991
+ notebookCmd.command("list").alias("ls").description("List notebook entries").option("--agent <id>", "Filter by agent ID").option("--json", "Output as JSON").action(async (options) => {
992
+ const { notebookListCommand } = await import("./notebook-YWIYGEHV.js");
993
+ await notebookListCommand(options);
994
+ });
995
+ notebookCmd.command("show <id>").description("Show a specific notebook entry").option("--agent <id>", "Agent ID").option("--json", "Output as JSON").action(async (id, options) => {
996
+ const { notebookShowCommand } = await import("./notebook-YWIYGEHV.js");
997
+ await notebookShowCommand(id, options);
998
+ });
999
+ notebookCmd.command("export").description("Export notebook entries").option("--agent <id>", "Filter by agent ID").option("--format <format>", "Output format: yaml or json (default: yaml)").action(async (options) => {
1000
+ const { notebookExportCommand } = await import("./notebook-YWIYGEHV.js");
1001
+ await notebookExportCommand(options);
1002
+ });
1003
+ notebookCmd.action(async () => {
1004
+ const { notebookListCommand } = await import("./notebook-YWIYGEHV.js");
1005
+ await notebookListCommand({});
1006
+ });
1007
+ var agentCmd = program.command("agent").description("Agent identity management \u2014 persistent profiles with expertise tracking");
1008
+ agentCmd.command("list").alias("ls").description("List all agent identity profiles").option("--json", "Output as JSON").option("--global", "Show only global profiles").option("--project", "Show only project-level profiles").action(async (options) => {
1009
+ const { agentListCommand } = await import("./agent-HYKC2LAK.js");
1010
+ await agentListCommand(options);
1011
+ });
1012
+ agentCmd.command("show <id>").description("Show full agent profile with expertise table").option("--json", "Output as JSON").action(async (id, options) => {
1013
+ const { agentShowCommand } = await import("./agent-HYKC2LAK.js");
1014
+ await agentShowCommand(id, options);
1015
+ });
1016
+ agentCmd.command("create <id>").description("Create a new .agent identity file").option("-r, --role <role>", "Agent role description").option("-d, --description <desc>", "Extended description").option("-g, --global", "Create in global ~/.paradigm/agents/ (default)").option("--deny-paths <patterns>", 'Comma-separated glob patterns to deny (e.g., ".env*,*.key")').action(async (id, options) => {
1017
+ const { agentCreateCommand } = await import("./agent-HYKC2LAK.js");
1018
+ await agentCreateCommand(id, { ...options, global: options.global !== false });
1019
+ });
1020
+ agentCmd.command("sync <id>").description("Bootstrap expertise from existing project lore").option("-n, --dry-run", "Show what would change without writing").option("--json", "Output as JSON").action(async (id, options) => {
1021
+ const { agentSyncCommand } = await import("./agent-HYKC2LAK.js");
1022
+ await agentSyncCommand(id, options);
1023
+ });
1024
+ agentCmd.action(async () => {
1025
+ const { agentListCommand } = await import("./agent-HYKC2LAK.js");
1026
+ await agentListCommand({});
1027
+ });
926
1028
  program.parse();