@a-company/paradigm 5.37.0 → 5.37.2

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 (195) hide show
  1. package/dist/{accept-orchestration-36AP7HTX.js → accept-orchestration-SBZVK3H4.js} +1 -1
  2. package/dist/{add-FGKNJS3F.js → add-P76GEMGF.js} +1 -1
  3. package/dist/{agent-E7LDKJ4O.js → agent-X6I2YWOB.js} +1 -1
  4. package/dist/{agent-loader-2HXKVL6J.js → agent-loader-RIVI6QPP.js} +1 -1
  5. package/dist/{agent-loader-XS6LIMUG.js → agent-loader-RJRVO5GQ.js} +1 -1
  6. package/dist/{agent-state-L7LCPRC3.js → agent-state-KSQ3S7OB.js} +1 -1
  7. package/dist/{agents-suggest-Y5D6AALG.js → agents-suggest-HYTFMQD3.js} +1 -1
  8. package/dist/{aggregate-OZJRRAQR.js → aggregate-W66DM3GA.js} +1 -1
  9. package/dist/{ambient-4NSPAQDJ.js → ambient-GJAEXF7B.js} +4 -4
  10. package/dist/{assess-AMPVSWK7.js → assess-UFPYEJKP.js} +1 -1
  11. package/dist/{auto-A7VUHCUC.js → auto-RHJXOZFL.js} +1 -1
  12. package/dist/{beacon-YBLUUTYY.js → beacon-5QVYV5DF.js} +1 -1
  13. package/dist/{calibration-FQ4YVOE4.js → calibration-OLJYB5HN.js} +1 -1
  14. package/dist/{check-46QL3KMQ.js → check-THVGY4R5.js} +1 -1
  15. package/dist/{chunk-EMMMBAID.js → chunk-3KVVC4WV.js} +1 -1
  16. package/dist/{chunk-3QMRDN65.js → chunk-4Q7XYPL4.js} +2 -2
  17. package/dist/{chunk-3OMJI5TT.js → chunk-4SCKMGTB.js} +2 -2
  18. package/dist/chunk-5TAVYPOV.js +2 -0
  19. package/dist/{chunk-6PP2RPIZ.js → chunk-74SGKSRQ.js} +2 -2
  20. package/dist/{chunk-RN35IVA2.js → chunk-BV5PRPLB.js} +1 -1
  21. package/dist/{chunk-YG5G5GEQ.js → chunk-CMCQHU46.js} +13 -13
  22. package/dist/{chunk-JIF7OSGH.js → chunk-CVPKQ3JH.js} +1 -1
  23. package/dist/{chunk-RLJ5K3J5.js → chunk-D6ZXAI26.js} +1 -1
  24. package/dist/chunk-EK4ZRIFJ.js +3 -0
  25. package/dist/{chunk-X54WXWCX.js → chunk-FILLU77P.js} +5 -5
  26. package/dist/{chunk-7PB7AXQE.js → chunk-J6KWGCHN.js} +1 -1
  27. package/dist/{chunk-BCOPNVPY.js → chunk-JOHAOLEC.js} +2 -2
  28. package/dist/{chunk-JUOOVKK6.js → chunk-KFNHCQ4R.js} +1 -1
  29. package/dist/{chunk-77WX6HGV.js → chunk-LBQBWIEX.js} +1 -1
  30. package/dist/chunk-MBPLJKE5.js +3 -0
  31. package/dist/{chunk-W6WVJLHO.js → chunk-ODVKPZZ4.js} +1 -1
  32. package/dist/{chunk-5YHR77AL.js → chunk-ORDKEGII.js} +1 -1
  33. package/dist/chunk-QGZRM6ZB.js +2 -0
  34. package/dist/chunk-QO7YPQXC.js +2 -0
  35. package/dist/{chunk-DG3VCY43.js → chunk-SUU6M4JH.js} +1 -1
  36. package/dist/{chunk-XNB4TZTD.js → chunk-UNHTQLYO.js} +1 -1
  37. package/dist/chunk-UPFCBVXY.js +3 -0
  38. package/dist/{chunk-6QKCUEEY.js → chunk-VCKKJDLP.js} +1 -1
  39. package/dist/{chunk-4W5TBL3O.js → chunk-VG7FN2TU.js} +1 -1
  40. package/dist/{chunk-7YTAA6XA.js → chunk-WS2N27RX.js} +1 -1
  41. package/dist/{chunk-7SGNNVE5.js → chunk-X3U3IGYT.js} +2 -2
  42. package/dist/{chunk-IW5K3RNR.js → chunk-ZUAUFZRJ.js} +1 -1
  43. package/dist/{claude-OX54QSLC.js → claude-4LR3LJQZ.js} +1 -1
  44. package/dist/{claude-cli-FHLJQVJC.js → claude-cli-UP6HGH7C.js} +1 -1
  45. package/dist/{claude-code-GVGU3A3B.js → claude-code-RLJ4GX77.js} +1 -1
  46. package/dist/{claude-code-teams-ZRHPTGPP.js → claude-code-teams-R37HJY3Y.js} +1 -1
  47. package/dist/{compliance-PHSPVYK2.js → compliance-BPGQMQAX.js} +3 -3
  48. package/dist/{compliance-health-HCZTJDN7.js → compliance-health-JNP3P35P.js} +1 -1
  49. package/dist/conductor-HLU5R6ZY.js +9 -0
  50. package/dist/{config-schema-URJW6UZH.js → config-schema-GUQY2QN7.js} +1 -1
  51. package/dist/{constellation-PX3ZKMWQ.js → constellation-CG7C4WFE.js} +1 -1
  52. package/dist/{context-audit-APFKELFT.js → context-audit-XRPT3OU2.js} +2 -2
  53. package/dist/{cost-B5SAHPOJ.js → cost-IDNVMAEV.js} +1 -1
  54. package/dist/{cost-MMWUDGZC.js → cost-PK4KIF7R.js} +1 -1
  55. package/dist/{cursor-cli-Q2HLQ5TE.js → cursor-cli-QKF7Z6M2.js} +1 -1
  56. package/dist/{cursorrules-3BW6K6D5.js → cursorrules-U5O4G5T4.js} +1 -1
  57. package/dist/{decision-loader-4KMQVAXZ.js → decision-loader-2XPZE4EZ.js} +1 -1
  58. package/dist/{delete-7PQZUERZ.js → delete-P5VULXR4.js} +1 -1
  59. package/dist/{diff-F2HUO2H3.js → diff-JVEYCXUC.js} +1 -1
  60. package/dist/{discipline-ARFFIXQL.js → discipline-H7LDI6NT.js} +1 -1
  61. package/dist/{dist-MRZDZ5SX.js → dist-3ZCH25SG.js} +1 -1
  62. package/dist/{dist-KGRCLBJP-R5CCPPXN.js → dist-KGRCLBJP-2QAPFYNF.js} +1 -1
  63. package/dist/{dist-YUXXIXB3.js → dist-QBTQW4ZW.js} +1 -1
  64. package/dist/{dist-OKM6BXTH.js → dist-VGFSP3XM.js} +1 -1
  65. package/dist/{dist-VWC6FA46.js → dist-VXCZWVVJ.js} +1 -1
  66. package/dist/{dist-5IUWRFG6.js → dist-W3XCATBJ.js} +1 -1
  67. package/dist/{docs-6WOQILZS.js → docs-EDQ2STFK.js} +1 -1
  68. package/dist/{docs-BI2DO7B2.js → docs-USDAF26F.js} +2 -2
  69. package/dist/doctor-G37LCXG5.js +2 -0
  70. package/dist/{drift-6QPDKKUO.js → drift-ILZE5BFJ.js} +1 -1
  71. package/dist/{echo-3JJDKCNF.js → echo-UPTQUEDU.js} +1 -1
  72. package/dist/{edit-PLCGL5OV.js → edit-GUU3HBVW.js} +1 -1
  73. package/dist/{enforcement-IWABOHMY.js → enforcement-46XWPNSA.js} +1 -1
  74. package/dist/{enforcement-5MHSQAXE.js → enforcement-BEGPQIUN.js} +1 -1
  75. package/dist/{event-5J3GBWKT.js → event-Y3VXC2RV.js} +1 -1
  76. package/dist/{explain-files-LPHTJL4N.js → explain-files-3GPZUETV.js} +1 -1
  77. package/dist/{export-NXUFTFPW.js → export-CV5KCTPS.js} +1 -1
  78. package/dist/{flow-IT2IVXXT.js → flow-POQP27WA.js} +1 -1
  79. package/dist/{gap-narrator-DVXPWNFN.js → gap-narrator-NTXLUI7I.js} +1 -1
  80. package/dist/{global-J2VTYKCC.js → global-C44FW4G2.js} +1 -1
  81. package/dist/{graduate-N2HF4JT6.js → graduate-3BBSC27A.js} +1 -1
  82. package/dist/graph-CNDE5TAT.js +2 -0
  83. package/dist/{graph-server-TBHHBFOM.js → graph-server-COZR5C3Z.js} +1 -1
  84. package/dist/{habits-JTMWGVPH.js → habits-BX2IRSUI.js} +3 -3
  85. package/dist/{history-FHS7EC3Z.js → history-UW454SDP.js} +1 -1
  86. package/dist/{hooks-BL6CXRVK.js → hooks-BNWRGACA.js} +1 -1
  87. package/dist/index.js +5 -5
  88. package/dist/init-EHVSM7YY.js +2 -0
  89. package/dist/{integrity-UBMZCB77.js → integrity-UYDOOJDP.js} +1 -1
  90. package/dist/{integrity-checker-VSR3ITBL.js → integrity-checker-DHGMZQDG.js} +1 -1
  91. package/dist/journal-loader-GLH7XFTK.js +2 -0
  92. package/dist/{lint-KQQ2RMSJ.js → lint-IGKE6UPS.js} +1 -1
  93. package/dist/{list-37UCWCOQ.js → list-5IUGP3ZB.js} +1 -1
  94. package/dist/{list-6WY4CFUR.js → list-YKIQNKGB.js} +1 -1
  95. package/dist/lore-loader-RVQI5GXL.js +2 -0
  96. package/dist/{lore-loader-PBUDKXAJ.js → lore-loader-XY5MZRR2.js} +1 -1
  97. package/dist/{lore-server-A3KKZLSY.js → lore-server-FC2GMDLT.js} +1 -1
  98. package/dist/{manual-HKI6OXB4.js → manual-RXSPSFLL.js} +1 -1
  99. package/dist/mcp.js +1 -1
  100. package/dist/{migrate-W3KCXLDS.js → migrate-YQG2FG3J.js} +2 -2
  101. package/dist/{migrate-assessments-D2TOBJ5V.js → migrate-assessments-GEI5WMI2.js} +1 -1
  102. package/dist/{model-discovery-TWX4A4YD.js → model-discovery-HMB3YI4L.js} +1 -1
  103. package/dist/{nomination-engine-A24774W4.js → nomination-engine-KNSOAT4W.js} +1 -1
  104. package/dist/{notebook-LXJ2LHUA.js → notebook-PE3JSYZI.js} +1 -1
  105. package/dist/notebook-loader-CENTDDUJ.js +2 -0
  106. package/dist/{orchestrate-WFCNV2II.js → orchestrate-RCAMBOIB.js} +1 -1
  107. package/dist/{peers-7TPZTKH7.js → peers-P2KXU7ZK.js} +1 -1
  108. package/dist/{persona-UGTCFEGT.js → persona-STQWZH5P.js} +1 -1
  109. package/dist/{pipeline-7PZ6ILWX.js → pipeline-MZUITRVN.js} +1 -1
  110. package/dist/{platform-server-YIBX4YDJ.js → platform-server-DNAMH4YI.js} +2 -2
  111. package/dist/{plugin-update-checker-2EM4K45U.js → plugin-update-checker-M7PW434O.js} +1 -1
  112. package/dist/{portal-check-YSDJRZUR.js → portal-check-Z3OCQEQR.js} +1 -1
  113. package/dist/{portal-compliance-OBPK2IR5.js → portal-compliance-4MG5F2GI.js} +1 -1
  114. package/dist/{probe-WKXR3IN4.js → probe-B22G2JKF.js} +1 -1
  115. package/dist/{project-type-MRBJAKC7.js → project-type-EUCFKEAZ.js} +1 -1
  116. package/dist/{promote-VHBA56KW.js → promote-NJQDZBZA.js} +2 -2
  117. package/dist/{providers-RX7SBLHZ.js → providers-AWA7WLLM.js} +1 -1
  118. package/dist/{quiz-3SQNPRJ3.js → quiz-FE5UGAY2.js} +1 -1
  119. package/dist/{record-7QJPZZP7.js → record-YXPB34MY.js} +1 -1
  120. package/dist/{registry-LR5QACRK.js → registry-KOOKFUWD.js} +2 -2
  121. package/dist/reindex-O3WUCEE2.js +2 -0
  122. package/dist/{remember-SFGBTTEE.js → remember-MJRNTXYS.js} +1 -1
  123. package/dist/{retag-GFXUYP7S.js → retag-N5XF3KXP.js} +1 -1
  124. package/dist/{review-6KKZWV3A.js → review-6UAH6V3R.js} +1 -1
  125. package/dist/{review-GEBSYOZB.js → review-77QI6VOC.js} +1 -1
  126. package/dist/{ripple-4F5ZCXS4.js → ripple-ZGDITCGB.js} +1 -1
  127. package/dist/{roster-RI3UC2YI.js → roster-HV5KYUOI.js} +1 -1
  128. package/dist/{scaffold-WA4L2K7J.js → scaffold-D57JXPCC.js} +1 -1
  129. package/dist/{scopes-commands-5FFIUDRC.js → scopes-commands-NSPERZWV.js} +1 -1
  130. package/dist/{sentinel-37ZEEWT7.js → sentinel-HYAZ3CO5.js} +2 -2
  131. package/dist/{sentinel-bridge-EZGFRVFH.js → sentinel-bridge-VR357PKL.js} +1 -1
  132. package/dist/{serve-2BXDL35A.js → serve-L52ZUTU6.js} +2 -2
  133. package/dist/{serve-5JME5QEM.js → serve-OY6XYL7F.js} +2 -2
  134. package/dist/{serve-2LSTQFFQ.js → serve-U47GULB6.js} +2 -2
  135. package/dist/{server-XLHIYDTZ.js → server-2MNROHF6.js} +1 -1
  136. package/dist/{server-AIXFROYL.js → server-4YNUIK4W.js} +1 -1
  137. package/dist/session-tracker-D2CH7RJF.js +2 -0
  138. package/dist/{session-work-log-6GKGUQ5C.js → session-work-log-BX434ZLK.js} +1 -1
  139. package/dist/{session-work-log-UYMIWWOX.js → session-work-log-NQA7WJEC.js} +1 -1
  140. package/dist/{setup-ZM4JFV5D.js → setup-3F5IK7MO.js} +2 -2
  141. package/dist/{setup-F2N4LUR7.js → setup-KPIMRZ4Q.js} +1 -1
  142. package/dist/{shift-DDYVQJ75.js → shift-RRNL6E4O.js} +3 -3
  143. package/dist/{show-RFOIR2GQ.js → show-BOAVWZPZ.js} +1 -1
  144. package/dist/{show-CZLVYLM5.js → show-PJ5LFLIL.js} +1 -1
  145. package/dist/{snapshot-6N564OUJ.js → snapshot-L2G56RPL.js} +1 -1
  146. package/dist/{spawn-HYARN3RL.js → spawn-M5BAV252.js} +1 -1
  147. package/dist/{status-WBJ6D7BD.js → status-77M3SDIF.js} +1 -1
  148. package/dist/{status-CUG3PKGC.js → status-A37ECYNJ.js} +1 -1
  149. package/dist/{summary-2AM4QVPW.js → summary-LXLHFRN7.js} +1 -1
  150. package/dist/{sweep-WHDT7ENV.js → sweep-HU74OPVW.js} +1 -1
  151. package/dist/{switch-HBGIFNF6.js → switch-CTW4PDGI.js} +1 -1
  152. package/dist/{symphony-CWKKMFAS.js → symphony-7INZR43F.js} +5 -5
  153. package/dist/{symphony-VTHVTE57.js → symphony-G6IENE4K.js} +1 -1
  154. package/dist/{symphony-loader-RYFZOQJS.js → symphony-loader-VA4UREOM.js} +1 -1
  155. package/dist/{symphony-peers-LWBUQ3T4.js → symphony-peers-U4KHMKGI.js} +1 -1
  156. package/dist/{symphony-peers-ISJPKX7W.js → symphony-peers-X5NGWXFP.js} +1 -1
  157. package/dist/{symphony-relay-L3BY6RGM.js → symphony-relay-2RHG25Z4.js} +1 -1
  158. package/dist/{sync-WIFD7UCL.js → sync-DLUBV5HQ.js} +1 -1
  159. package/dist/{sync-llms-MZ3RQWFX.js → sync-llms-7CAI74QL.js} +1 -1
  160. package/dist/{task-loader-EU7JLTR3.js → task-loader-NZFDTUQ5.js} +1 -1
  161. package/dist/{team-C3PWO7XL.js → team-NSP6PMPS.js} +1 -1
  162. package/dist/{test-6MUL4EXS.js → test-BQJMS4Y2.js} +1 -1
  163. package/dist/{thread-K6UHDIUW.js → thread-HFXK65D4.js} +1 -1
  164. package/dist/{timeline-S26CQWHT.js → timeline-K3ZFKJ3R.js} +1 -1
  165. package/dist/tools-NNPANZRA.js +2 -0
  166. package/dist/{triage-YF6WYZY4.js → triage-FCWOZASE.js} +1 -1
  167. package/dist/{tutorial-UEBX7Z2G.js → tutorial-UC6YQMNN.js} +1 -1
  168. package/dist/{university-UMT7PAKE.js → university-FJ7OCOA3.js} +1 -1
  169. package/dist/{upgrade-USW7YJEX.js → upgrade-GX56QE3C.js} +1 -1
  170. package/dist/{validate-VZGBVTPM.js → validate-C6SMKGYD.js} +1 -1
  171. package/dist/{validate-2PZTNYSS.js → validate-LSCDOLBO.js} +1 -1
  172. package/dist/{validate-KW3YFGTV.js → validate-VZXTJHGO.js} +1 -1
  173. package/dist/{watch-KQU3S7KE.js → watch-PZCCUP6K.js} +1 -1
  174. package/dist/{watch-HL3ZOALL.js → watch-YCODNIET.js} +1 -1
  175. package/dist/{wisdom-UU7HOE3M.js → wisdom-XZ3QKPNP.js} +1 -1
  176. package/dist/{work-log-loader-J27XSFCE.js → work-log-loader-DL5GZ2BQ.js} +1 -1
  177. package/dist/workspace-MKSQN7B2.js +2 -0
  178. package/package.json +1 -1
  179. package/dist/chunk-BRHQJLTG.js +0 -2
  180. package/dist/chunk-DSYEGRQ2.js +0 -3
  181. package/dist/chunk-F5BSUC2L.js +0 -3
  182. package/dist/chunk-NFQLONFY.js +0 -3
  183. package/dist/chunk-OVDYPOHR.js +0 -2
  184. package/dist/chunk-XHJ27CER.js +0 -2
  185. package/dist/conductor-LYBMM66Z.js +0 -4
  186. package/dist/doctor-JLTCBMS4.js +0 -2
  187. package/dist/graph-VLMP6DW2.js +0 -2
  188. package/dist/init-ZS7RAR7L.js +0 -2
  189. package/dist/journal-loader-EELDB4P2.js +0 -2
  190. package/dist/lore-loader-CP5RUJ4A.js +0 -2
  191. package/dist/notebook-loader-CF52PNZC.js +0 -2
  192. package/dist/reindex-F7EV3Z34.js +0 -2
  193. package/dist/session-tracker-VSFRNFRL.js +0 -2
  194. package/dist/tools-4WKLLDFU.js +0 -2
  195. package/dist/workspace-CE6LNXVI.js +0 -2
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {b as b$1}from'./chunk-XHJ27CER.js';import*as i from'fs';import*as a from'path';import*as u from'js-yaml';import {execSync}from'child_process';function j(s){let e=s.toLowerCase();return e.includes("claude")||e.includes("anthropic")?"anthropic":e.includes("gpt")||e.includes("openai")||e.includes("o1")||e.includes("o3")?"openai":e.includes("gemini")||e.includes("google")||e.includes("palm")?"google":e.includes("llama")||e.includes("meta")?"meta":e.includes("mistral")||e.includes("mixtral")?"mistral":e.includes("deepseek")?"deepseek":e.includes("cohere")||e.includes("command")?"cohere":"unknown"}function T(s){let e=s,n=e.author;if(e.type||(e.type="agent-session"),typeof n=="string")return s;if(n&&typeof n=="object"&&!Array.isArray(n)){let t=n;t.type==="agent"?(e.author="unknown",e.agent={provider:t.model?j(t.model):j(t.id),model:t.model||t.id}):e.author=t.id||"unknown",delete e.assistedBy;}return e}function E(s){return s.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,20)||"unknown"}function F(){let s=process.env.PARADIGM_AUTHOR;if(s)return E(s);try{let e=execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim();if(e)return E(e)}catch{}try{let e=os.userInfo().username;if(e)return E(e)}catch{}return "unknown"}function L(s){return s.endsWith(".yaml")||s.endsWith(".lore")}function k(s,e,n){let t=a.join(s,_,b,e),r=a.join(t,`${n}.lore`);if(i.existsSync(r))return r;let o=a.join(t,`${n}.yaml`);return i.existsSync(o)?o:null}async function O(s,e){let n=a.join(s,_,b);if(!i.existsSync(n))return [];$(s);let t=[],r=i.readdirSync(n).filter(o=>/^\d{4}-\d{2}-\d{2}$/.test(o)).sort().reverse();for(let o of r){if(e?.dateFrom&&o<e.dateFrom.slice(0,10)||e?.dateTo&&o>e.dateTo.slice(0,10))continue;let f=a.join(n,o),l=i.readdirSync(f).filter(L).sort();for(let c of l)try{let g=i.readFileSync(a.join(f,c),"utf8"),d=u.load(g);t.push(T(d));}catch{}}return e?M(t,e):t}async function P(s,e){let n=e.match(/^L-(\d{4}-\d{2}-\d{2})-/);if(n){let r=n[1],o=k(s,r,e);if(o)try{let f=i.readFileSync(o,"utf8"),l=u.load(f);return T(l)}catch{return null}}return (await O(s)).find(r=>r.id===e)||null}async function z(s){let e=a.join(s,_,R);if(!i.existsSync(e))return null;try{let n=i.readFileSync(e,"utf8");return u.load(n)}catch{return null}}function B(s){try{let e=execSync("git rev-parse HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),n=execSync("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),t=execSync("git status --porcelain",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim();return {ref:e,branch:n,dirty:t.length>0}}catch{return}}async function H(s,e){let n=a.join(s,_),t=e.timestamp.slice(0,10),r=a.join(n,b,t);i.existsSync(r)||i.mkdirSync(r,{recursive:true}),e.author||(e.author=F()),e.git_context||(e.git_context=B(s)),e.id||(e.id=W(s,t,e.author,e.timestamp));let o=a.join(r,`${e.id}.lore`);return i.writeFileSync(o,u.dump(e,{lineWidth:-1,noRefs:true})),await A(s),e.id}async function K(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.review=n,i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function A(s){let e=a.join(s,_),n=a.join(e,b);if(!i.existsSync(n))return;$(s);let t=new Set,r=0,o="",f=i.readdirSync(n).filter(d=>/^\d{4}-\d{2}-\d{2}$/.test(d));for(let d of f){let y=a.join(n,d),h=i.readdirSync(y).filter(L);for(let w of h)try{let m=i.readFileSync(a.join(y,w),"utf8"),S=u.load(m),p=T(S);t.add(p.author),r++,(!o||p.timestamp>o)&&(o=p.timestamp);}catch{}}let l="unknown",c=a.join(s,".paradigm","config.yaml");if(i.existsSync(c))try{let d=u.load(i.readFileSync(c,"utf8"));l=d.project||d.name||"unknown";}catch{}let g={version:"1.0",project:l,entries:r,last_updated:o||new Date().toISOString(),authors:Array.from(t)};i.existsSync(e)||i.mkdirSync(e,{recursive:true}),i.writeFileSync(a.join(e,R),u.dump(g,{lineWidth:-1,noRefs:true}));}function $(s){let e=a.join(s,_,b);if(!i.existsSync(e))return 0;let n=i.readdirSync(e).filter(r=>L(r)&&!r.startsWith(".")),t=0;for(let r of n){let o=a.join(e,r);if(i.statSync(o).isFile())try{let l=i.readFileSync(o,"utf8"),c=u.load(l);if(c.author&&typeof c.author=="object"||typeof c.author=="string"&&c.timestamp)continue;let g=typeof c.date=="string"?c.date.slice(0,10):new Date().toISOString().slice(0,10),d=a.join(e,g);i.existsSync(d)||i.mkdirSync(d,{recursive:!0});let y=F(),h=`${g}T00:00:00.000Z`,w=W(s,g,y,h),m=String(c.type||"agent-session"),S=["agent-session","human-note","decision","review","incident","milestone"].includes(m)?m:"agent-session",p;if(c.test_results&&typeof c.test_results=="object"){let v=c.test_results;p={status:v.total===v.passed?"pass":"partial",details:{tests:v.total===v.passed?"pass":"fail"}};}let C={id:w,type:S,timestamp:h,author:"unknown",agent:{provider:"unknown",model:"unknown"},title:String(c.title||r.replace(/\.(yaml|lore)$/,"")),summary:String(c.summary||""),symbols_touched:Array.isArray(c.symbols_touched)?c.symbols_touched:[],files_modified:Array.isArray(c.files_modified)?c.files_modified:void 0,...p?{verification:p}:{},tags:["migrated",m]};i.writeFileSync(a.join(d,`${w}.lore`),u.dump(C,{lineWidth:-1,noRefs:!0})),i.unlinkSync(o),t++;}catch{}}return t}async function G(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(n.title!==void 0&&(t.title=n.title),n.summary!==void 0&&(t.summary=n.summary),n.type!==void 0&&(t.type=n.type),n.duration_minutes!==void 0&&(t.duration_minutes=n.duration_minutes),n.symbols_touched!==void 0&&(t.symbols_touched=n.symbols_touched),n.symbols_created!==void 0&&(t.symbols_created=n.symbols_created),n.files_created!==void 0&&(t.files_created=n.files_created),n.files_modified!==void 0&&(t.files_modified=n.files_modified),n.lines_added!==void 0&&(t.lines_added=n.lines_added),n.lines_removed!==void 0&&(t.lines_removed=n.lines_removed),n.commit!==void 0&&(t.commit=n.commit),n.decisions!==void 0&&(t.decisions=n.decisions),n.errors_encountered!==void 0&&(t.errors_encountered=n.errors_encountered),n.learnings!==void 0&&(t.learnings=n.learnings),n.verification!==void 0&&(t.verification=n.verification),n.tags!==void 0&&(t.tags=n.tags),n.body!==void 0&&(t.body=n.body),n.linked_lore!==void 0&&(t.linked_lore=n.linked_lore),n.linked_tasks!==void 0&&(t.linked_tasks=n.linked_tasks),n.linked_commits!==void 0&&(t.linked_commits=n.linked_commits),n.confidence!==void 0&&(t.confidence=n.confidence),n.assessment!==void 0&&(t.assessment=n.assessment),n.assessment_delta!==void 0&&(t.assessment_delta=n.assessment_delta),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),await A(s),true):false}function I(s){switch(s){case "correct":return 1;case "partial":return .5;case "incorrect":return 0}}async function V(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.assessment=n,t.confidence!=null&&(t.assessment_delta=I(n.verdict)-t.confidence),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function q(s,e){let n=await P(s,e);if(!n)return false;let t=n.timestamp.slice(0,10),r=k(s,t,e);if(!r)return false;i.unlinkSync(r);let o=a.dirname(r);return i.readdirSync(o).filter(L).length===0&&i.rmdirSync(o),await A(s),true}function M(s,e){let n=s;if(e.author&&(n=n.filter(t=>t.author===e.author)),e.hasAgent!==void 0?n=n.filter(t=>e.hasAgent?t.agent!=null:t.agent==null):e.authorType&&(n=n.filter(t=>e.authorType==="agent"?t.agent!=null:t.agent==null)),e.symbol&&(n=n.filter(t=>t.symbols_touched.includes(e.symbol)||t.symbols_created?.includes(e.symbol))),e.dateFrom){let t=new Date(e.dateFrom).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()>=t);}if(e.dateTo){let t=new Date(e.dateTo).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()<=t);}if(e.type&&(n=n.filter(t=>t.type===e.type)),e.tag){let t=e.tag;n=n.filter(r=>r.tags?.some(o=>o===t||o.startsWith(t+":")||t.includes(":")&&o===t));}return e.tags&&e.tags.length>0&&(n=n.filter(t=>e.tags.some(r=>t.tags?.includes(r)))),e.hasBody!==void 0&&(n=n.filter(t=>e.hasBody?t.body!=null&&t.body.length>0:!t.body||t.body.length===0)),e.hasReview!==void 0&&(n=n.filter(t=>e.hasReview?t.review!=null:t.review==null)),e.hasConfidence!==void 0&&(n=n.filter(t=>e.hasConfidence?t.confidence!=null:t.confidence==null)),e.hasAssessment!==void 0&&(n=n.filter(t=>e.hasAssessment?t.assessment!=null:t.assessment==null)),n.sort((t,r)=>new Date(r.timestamp).getTime()-new Date(t.timestamp).getTime()),e.offset&&(n=n.slice(e.offset)),e.limit&&(n=n.slice(0,e.limit)),n}function W(s,e,n,t){let r=E(n),o=new Date(t),f=String(o.getUTCHours()).padStart(2,"0"),l=String(o.getUTCMinutes()).padStart(2,"0"),c=String(o.getUTCSeconds()).padStart(2,"0"),g=`${f}${l}${c}`,d=`L-${e}-${r}-${g}`,y=a.join(s,_,b,e);if(!i.existsSync(y))return `${d}-001`;let h=i.readdirSync(y).filter(m=>m.startsWith(d)&&L(m)).map(m=>{let S=m.match(/-(\d{3})\.(yaml|lore)$/);return S?parseInt(S[1],10):0}),w=h.length>0?Math.max(...h)+1:1;return `${d}-${String(w).padStart(3,"0")}`}var _,b,R,N=b$1(()=>{_=".paradigm/lore",b="entries",R="timeline.yaml";});N();export{V as addLoreAssessment,K as addLoreReview,q as deleteLoreEntry,O as loadLoreEntries,P as loadLoreEntry,z as loadLoreTimeline,A as rebuildTimeline,H as recordLoreEntry,G as updateLoreEntry};
2
+ import {b as b$1}from'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import*as u from'js-yaml';import {execSync}from'child_process';function j(s){let e=s.toLowerCase();return e.includes("claude")||e.includes("anthropic")?"anthropic":e.includes("gpt")||e.includes("openai")||e.includes("o1")||e.includes("o3")?"openai":e.includes("gemini")||e.includes("google")||e.includes("palm")?"google":e.includes("llama")||e.includes("meta")?"meta":e.includes("mistral")||e.includes("mixtral")?"mistral":e.includes("deepseek")?"deepseek":e.includes("cohere")||e.includes("command")?"cohere":"unknown"}function T(s){let e=s,n=e.author;if(e.type||(e.type="agent-session"),typeof n=="string")return s;if(n&&typeof n=="object"&&!Array.isArray(n)){let t=n;t.type==="agent"?(e.author="unknown",e.agent={provider:t.model?j(t.model):j(t.id),model:t.model||t.id}):e.author=t.id||"unknown",delete e.assistedBy;}return e}function E(s){return s.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,20)||"unknown"}function F(){let s=process.env.PARADIGM_AUTHOR;if(s)return E(s);try{let e=execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim();if(e)return E(e)}catch{}try{let e=os.userInfo().username;if(e)return E(e)}catch{}return "unknown"}function L(s){return s.endsWith(".yaml")||s.endsWith(".lore")}function k(s,e,n){let t=a.join(s,_,b,e),r=a.join(t,`${n}.lore`);if(i.existsSync(r))return r;let o=a.join(t,`${n}.yaml`);return i.existsSync(o)?o:null}async function O(s,e){let n=a.join(s,_,b);if(!i.existsSync(n))return [];$(s);let t=[],r=i.readdirSync(n).filter(o=>/^\d{4}-\d{2}-\d{2}$/.test(o)).sort().reverse();for(let o of r){if(e?.dateFrom&&o<e.dateFrom.slice(0,10)||e?.dateTo&&o>e.dateTo.slice(0,10))continue;let f=a.join(n,o),l=i.readdirSync(f).filter(L).sort();for(let c of l)try{let g=i.readFileSync(a.join(f,c),"utf8"),d=u.load(g);t.push(T(d));}catch{}}return e?M(t,e):t}async function P(s,e){let n=e.match(/^L-(\d{4}-\d{2}-\d{2})-/);if(n){let r=n[1],o=k(s,r,e);if(o)try{let f=i.readFileSync(o,"utf8"),l=u.load(f);return T(l)}catch{return null}}return (await O(s)).find(r=>r.id===e)||null}async function z(s){let e=a.join(s,_,R);if(!i.existsSync(e))return null;try{let n=i.readFileSync(e,"utf8");return u.load(n)}catch{return null}}function B(s){try{let e=execSync("git rev-parse HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),n=execSync("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),t=execSync("git status --porcelain",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim();return {ref:e,branch:n,dirty:t.length>0}}catch{return}}async function H(s,e){let n=a.join(s,_),t=e.timestamp.slice(0,10),r=a.join(n,b,t);i.existsSync(r)||i.mkdirSync(r,{recursive:true}),e.author||(e.author=F()),e.git_context||(e.git_context=B(s)),e.id||(e.id=W(s,t,e.author,e.timestamp));let o=a.join(r,`${e.id}.lore`);return i.writeFileSync(o,u.dump(e,{lineWidth:-1,noRefs:true})),await A(s),e.id}async function K(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.review=n,i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function A(s){let e=a.join(s,_),n=a.join(e,b);if(!i.existsSync(n))return;$(s);let t=new Set,r=0,o="",f=i.readdirSync(n).filter(d=>/^\d{4}-\d{2}-\d{2}$/.test(d));for(let d of f){let y=a.join(n,d),h=i.readdirSync(y).filter(L);for(let w of h)try{let m=i.readFileSync(a.join(y,w),"utf8"),S=u.load(m),p=T(S);t.add(p.author),r++,(!o||p.timestamp>o)&&(o=p.timestamp);}catch{}}let l="unknown",c=a.join(s,".paradigm","config.yaml");if(i.existsSync(c))try{let d=u.load(i.readFileSync(c,"utf8"));l=d.project||d.name||"unknown";}catch{}let g={version:"1.0",project:l,entries:r,last_updated:o||new Date().toISOString(),authors:Array.from(t)};i.existsSync(e)||i.mkdirSync(e,{recursive:true}),i.writeFileSync(a.join(e,R),u.dump(g,{lineWidth:-1,noRefs:true}));}function $(s){let e=a.join(s,_,b);if(!i.existsSync(e))return 0;let n=i.readdirSync(e).filter(r=>L(r)&&!r.startsWith(".")),t=0;for(let r of n){let o=a.join(e,r);if(i.statSync(o).isFile())try{let l=i.readFileSync(o,"utf8"),c=u.load(l);if(c.author&&typeof c.author=="object"||typeof c.author=="string"&&c.timestamp)continue;let g=typeof c.date=="string"?c.date.slice(0,10):new Date().toISOString().slice(0,10),d=a.join(e,g);i.existsSync(d)||i.mkdirSync(d,{recursive:!0});let y=F(),h=`${g}T00:00:00.000Z`,w=W(s,g,y,h),m=String(c.type||"agent-session"),S=["agent-session","human-note","decision","review","incident","milestone"].includes(m)?m:"agent-session",p;if(c.test_results&&typeof c.test_results=="object"){let v=c.test_results;p={status:v.total===v.passed?"pass":"partial",details:{tests:v.total===v.passed?"pass":"fail"}};}let C={id:w,type:S,timestamp:h,author:"unknown",agent:{provider:"unknown",model:"unknown"},title:String(c.title||r.replace(/\.(yaml|lore)$/,"")),summary:String(c.summary||""),symbols_touched:Array.isArray(c.symbols_touched)?c.symbols_touched:[],files_modified:Array.isArray(c.files_modified)?c.files_modified:void 0,...p?{verification:p}:{},tags:["migrated",m]};i.writeFileSync(a.join(d,`${w}.lore`),u.dump(C,{lineWidth:-1,noRefs:!0})),i.unlinkSync(o),t++;}catch{}}return t}async function G(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(n.title!==void 0&&(t.title=n.title),n.summary!==void 0&&(t.summary=n.summary),n.type!==void 0&&(t.type=n.type),n.duration_minutes!==void 0&&(t.duration_minutes=n.duration_minutes),n.symbols_touched!==void 0&&(t.symbols_touched=n.symbols_touched),n.symbols_created!==void 0&&(t.symbols_created=n.symbols_created),n.files_created!==void 0&&(t.files_created=n.files_created),n.files_modified!==void 0&&(t.files_modified=n.files_modified),n.lines_added!==void 0&&(t.lines_added=n.lines_added),n.lines_removed!==void 0&&(t.lines_removed=n.lines_removed),n.commit!==void 0&&(t.commit=n.commit),n.decisions!==void 0&&(t.decisions=n.decisions),n.errors_encountered!==void 0&&(t.errors_encountered=n.errors_encountered),n.learnings!==void 0&&(t.learnings=n.learnings),n.verification!==void 0&&(t.verification=n.verification),n.tags!==void 0&&(t.tags=n.tags),n.body!==void 0&&(t.body=n.body),n.linked_lore!==void 0&&(t.linked_lore=n.linked_lore),n.linked_tasks!==void 0&&(t.linked_tasks=n.linked_tasks),n.linked_commits!==void 0&&(t.linked_commits=n.linked_commits),n.confidence!==void 0&&(t.confidence=n.confidence),n.assessment!==void 0&&(t.assessment=n.assessment),n.assessment_delta!==void 0&&(t.assessment_delta=n.assessment_delta),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),await A(s),true):false}function I(s){switch(s){case "correct":return 1;case "partial":return .5;case "incorrect":return 0}}async function V(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.assessment=n,t.confidence!=null&&(t.assessment_delta=I(n.verdict)-t.confidence),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function q(s,e){let n=await P(s,e);if(!n)return false;let t=n.timestamp.slice(0,10),r=k(s,t,e);if(!r)return false;i.unlinkSync(r);let o=a.dirname(r);return i.readdirSync(o).filter(L).length===0&&i.rmdirSync(o),await A(s),true}function M(s,e){let n=s;if(e.author&&(n=n.filter(t=>t.author===e.author)),e.hasAgent!==void 0?n=n.filter(t=>e.hasAgent?t.agent!=null:t.agent==null):e.authorType&&(n=n.filter(t=>e.authorType==="agent"?t.agent!=null:t.agent==null)),e.symbol&&(n=n.filter(t=>t.symbols_touched.includes(e.symbol)||t.symbols_created?.includes(e.symbol))),e.dateFrom){let t=new Date(e.dateFrom).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()>=t);}if(e.dateTo){let t=new Date(e.dateTo).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()<=t);}if(e.type&&(n=n.filter(t=>t.type===e.type)),e.tag){let t=e.tag;n=n.filter(r=>r.tags?.some(o=>o===t||o.startsWith(t+":")||t.includes(":")&&o===t));}return e.tags&&e.tags.length>0&&(n=n.filter(t=>e.tags.some(r=>t.tags?.includes(r)))),e.hasBody!==void 0&&(n=n.filter(t=>e.hasBody?t.body!=null&&t.body.length>0:!t.body||t.body.length===0)),e.hasReview!==void 0&&(n=n.filter(t=>e.hasReview?t.review!=null:t.review==null)),e.hasConfidence!==void 0&&(n=n.filter(t=>e.hasConfidence?t.confidence!=null:t.confidence==null)),e.hasAssessment!==void 0&&(n=n.filter(t=>e.hasAssessment?t.assessment!=null:t.assessment==null)),n.sort((t,r)=>new Date(r.timestamp).getTime()-new Date(t.timestamp).getTime()),e.offset&&(n=n.slice(e.offset)),e.limit&&(n=n.slice(0,e.limit)),n}function W(s,e,n,t){let r=E(n),o=new Date(t),f=String(o.getUTCHours()).padStart(2,"0"),l=String(o.getUTCMinutes()).padStart(2,"0"),c=String(o.getUTCSeconds()).padStart(2,"0"),g=`${f}${l}${c}`,d=`L-${e}-${r}-${g}`,y=a.join(s,_,b,e);if(!i.existsSync(y))return `${d}-001`;let h=i.readdirSync(y).filter(m=>m.startsWith(d)&&L(m)).map(m=>{let S=m.match(/-(\d{3})\.(yaml|lore)$/);return S?parseInt(S[1],10):0}),w=h.length>0?Math.max(...h)+1:1;return `${d}-${String(w).padStart(3,"0")}`}var _,b,R,N=b$1(()=>{_=".paradigm/lore",b="entries",R="timeline.yaml";});N();export{V as addLoreAssessment,K as addLoreReview,q as deleteLoreEntry,O as loadLoreEntries,P as loadLoreEntry,z as loadLoreTimeline,A as rebuildTimeline,H as recordLoreEntry,G as updateLoreEntry};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a,b,c as c$1}from'./chunk-XMAV5AG6.js';import'./chunk-XHJ27CER.js';import l from'express';import*as c from'path';import*as m from'fs';import {fileURLToPath}from'url';import i from'chalk';var $=fileURLToPath(import.meta.url),g=c.dirname($),p={component(s){let o=i.magenta(`#${s}`);return {info:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.blue("i")} ${o} ${t}${r}`);},success:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.green("+")} ${o} ${t}${r}`);},warn:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.yellow("!")} ${o} ${t}${r}`);},error:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.error(`${i.red("x")} ${o} ${t}${r}`);}}}};function y(s){let o=l();o.use(l.json()),o.use((e,r,n)=>{if(r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),r.header("Access-Control-Allow-Headers","Content-Type"),e.method==="OPTIONS"){r.sendStatus(204);return}n();}),o.use("/api/lore",a(s.projectDir)),o.use("/api/info",b(s.projectDir)),o.use("/api/sessions",c$1(s.projectDir)),o.get("/api/health",(e,r)=>{r.json({status:"ok",timestamp:new Date().toISOString()});});let t=c.join(g,"..","lore-ui","dist");return m.existsSync(t)||(t=c.join(g,"..","..","lore-ui","dist")),m.existsSync(t)?(o.use(l.static(t)),o.get("{*path}",(e,r)=>{e.path.startsWith("/api")||r.sendFile(c.join(t,"index.html"));})):o.get("/",(e,r)=>{r.send(`
2
+ import {a,b,c as c$1}from'./chunk-XMAV5AG6.js';import'./chunk-5TAVYPOV.js';import l from'express';import*as c from'path';import*as m from'fs';import {fileURLToPath}from'url';import i from'chalk';var $=fileURLToPath(import.meta.url),g=c.dirname($),p={component(s){let o=i.magenta(`#${s}`);return {info:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.blue("i")} ${o} ${t}${r}`);},success:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.green("+")} ${o} ${t}${r}`);},warn:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.log(`${i.yellow("!")} ${o} ${t}${r}`);},error:(t,e)=>{let r=e?i.gray(` ${Object.entries(e).map(([n,a])=>`${n}=${a}`).join(" ")}`):"";console.error(`${i.red("x")} ${o} ${t}${r}`);}}}};function y(s){let o=l();o.use(l.json()),o.use((e,r,n)=>{if(r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),r.header("Access-Control-Allow-Headers","Content-Type"),e.method==="OPTIONS"){r.sendStatus(204);return}n();}),o.use("/api/lore",a(s.projectDir)),o.use("/api/info",b(s.projectDir)),o.use("/api/sessions",c$1(s.projectDir)),o.get("/api/health",(e,r)=>{r.json({status:"ok",timestamp:new Date().toISOString()});});let t=c.join(g,"..","lore-ui","dist");return m.existsSync(t)||(t=c.join(g,"..","..","lore-ui","dist")),m.existsSync(t)?(o.use(l.static(t)),o.get("{*path}",(e,r)=>{e.path.startsWith("/api")||r.sendFile(c.join(t,"index.html"));})):o.get("/",(e,r)=>{r.send(`
3
3
  <html>
4
4
  <head><title>Paradigm Lore</title></head>
5
5
  <body style="background:#0a0a0f;color:#e2e8f0;font-family:system-ui;display:flex;align-items:center;justify-content:center;height:100vh;margin:0">
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a as a$1}from'./chunk-EKZDFEJW.js';import'./chunk-XHJ27CER.js';import*as a from'fs';import*as i from'path';import*as m from'js-yaml';var h=class{name="manual";rootDir;constructor(e=process.cwd()){this.rootDir=e;}listModels(){return ["opus","sonnet","haiku"]}supportsParallel(){return false}supportsMcp(){return true}getTokenCost(e){return a$1[e]}async isAvailable(){return true}async*spawn(e,n){let s=i.join(this.rootDir,".paradigm","handoffs"),t=i.join(this.rootDir,".paradigm","tasks");for(let p of [s,t])a.existsSync(p)||a.mkdirSync(p,{recursive:true});let o=`${Date.now()}-manual-${e.name}`,l=i.join(s,`${o}.yaml`),r=i.join(t,`${o}.md`),c={id:o,from:"orchestrator",to:e.name,timestamp:new Date().toISOString(),status:"pending",completed:{symbols:n.context.symbols,artifacts:[]},context:{summary:n.task,key_symbols:n.context.symbols.map(p=>({symbol:p,relevance:"task-related"})),warnings:["This is a manual handoff - execute the task file manually"],suggested_approach:`Read ${r} and follow the instructions`}};a.writeFileSync(l,m.dump(c));let d=this.buildTaskFile(e,n,o);a.writeFileSync(r,d),yield {type:"text",content:`
2
+ import {a as a$1}from'./chunk-EKZDFEJW.js';import'./chunk-5TAVYPOV.js';import*as a from'fs';import*as i from'path';import*as m from'js-yaml';var h=class{name="manual";rootDir;constructor(e=process.cwd()){this.rootDir=e;}listModels(){return ["opus","sonnet","haiku"]}supportsParallel(){return false}supportsMcp(){return true}getTokenCost(e){return a$1[e]}async isAvailable(){return true}async*spawn(e,n){let s=i.join(this.rootDir,".paradigm","handoffs"),t=i.join(this.rootDir,".paradigm","tasks");for(let p of [s,t])a.existsSync(p)||a.mkdirSync(p,{recursive:true});let o=`${Date.now()}-manual-${e.name}`,l=i.join(s,`${o}.yaml`),r=i.join(t,`${o}.md`),c={id:o,from:"orchestrator",to:e.name,timestamp:new Date().toISOString(),status:"pending",completed:{symbols:n.context.symbols,artifacts:[]},context:{summary:n.task,key_symbols:n.context.symbols.map(p=>({symbol:p,relevance:"task-related"})),warnings:["This is a manual handoff - execute the task file manually"],suggested_approach:`Read ${r} and follow the instructions`}};a.writeFileSync(l,m.dump(c));let d=this.buildTaskFile(e,n,o);a.writeFileSync(r,d),yield {type:"text",content:`
3
3
  \u{1F4CB} **Manual Handoff Created**
4
4
 
5
5
  `,timestamp:new Date().toISOString()},yield {type:"text",content:`Agent: **${e.name}**
package/dist/mcp.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {d,g,h,e,a as a$1,b as b$1,f,c}from'./chunk-YG5G5GEQ.js';import'./chunk-4UJ4NIEQ.js';import'./chunk-3QMRDN65.js';import'./chunk-KLBH26PA.js';import'./chunk-JNSJVCTU.js';import'./chunk-Q2J542ST.js';import'./chunk-XROULIQN.js';import'./chunk-IW5K3RNR.js';import'./chunk-EMMMBAID.js';import {m as m$1,n,p as p$1,h as h$1,i,ma}from'./chunk-X54WXWCX.js';import'./chunk-M4UMM6DC.js';import'./chunk-W6WVJLHO.js';import'./chunk-6PP2RPIZ.js';import {j as j$1}from'./chunk-NFQLONFY.js';import {b,a}from'./chunk-F5BSUC2L.js';import'./chunk-3OMJI5TT.js';import'./chunk-DVZWCXB6.js';import'./chunk-OVDYPOHR.js';import'./chunk-4W5TBL3O.js';import'./chunk-XHJ27CER.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import {ListResourcesRequestSchema,ReadResourceRequestSchema}from'@modelcontextprotocol/sdk/types.js';import*as p from'fs';import*as m from'path';function se(e){return {id:e.id,symbol:`^${e.id}`,description:e.description,locks:e.locks?.map(s=>({id:s.id,description:s.description,keys:s.keys?.map(n=>n.expression||n),mode:s.mode||"all"})),prizes:e.prizes?.map(s=>({id:s.id,oneTime:s.oneTime}))}}function F(e){let s=e.gateConfig?.gates||[],n=i(e.index,"gate"),t=new Map;for(let o of n){let r=o.symbol.replace(/^\^/,"");t.set(r,{id:r,symbol:o.symbol,description:o.description,source:"purpose",filePath:o.filePath,data:o.data});}for(let o of s)t.set(o.id,{...se(o),source:"portal.yaml"});return Array.from(t.values())}function I(e){let s=e.gateConfig?.flows||[],n=i(e.index,"flow"),t=new Map;for(let o of n){let r=o.symbol.replace(/^\$/,"");t.set(r,{id:r,symbol:o.symbol,description:o.description,source:"purpose",filePath:o.filePath,data:o.data});}for(let o of s)t.set(o.id,{id:o.id,symbol:`$${o.id}`,description:o.description,gates:o.gates,source:"portal.yaml"});return Array.from(t.values())}function U(){return [{uri:"paradigm://wisdom/preferences",name:"Wisdom - Preferences",description:"Team preferences for patterns, testing, and code style",mimeType:"application/json"},{uri:"paradigm://wisdom/antipatterns",name:"Wisdom - Antipatterns",description:"What NOT to do, with reasons and alternatives",mimeType:"application/json"},{uri:"paradigm://wisdom/decisions",name:"Wisdom - Decisions",description:"Architectural Decision Records (ADRs) index",mimeType:"application/json"}]}async function z(e$1,s){if(e$1==="wisdom/preferences"){let n=await e(s);return {handled:true,text:JSON.stringify({version:n.preferences?.version||"1.0",global:n.preferences?.global||{},by_symbol:n.preferences?.by_symbol||{},symbol_count:Object.keys(n.preferences?.by_symbol||{}).length},null,2)}}if(e$1.startsWith("wisdom/preferences/")){let n=decodeURIComponent(e$1.replace("wisdom/preferences/","")),t=await e(s),o=a$1(t,n);return {handled:true,text:JSON.stringify({symbol:n,preferences:o.preferences,global:t.preferences?.global||{}},null,2)}}if(e$1==="wisdom/antipatterns"){let n=await e(s);return {handled:true,text:JSON.stringify({count:n.antipatterns.length,antipatterns:n.antipatterns},null,2)}}if(e$1.startsWith("wisdom/antipatterns/")){let n=decodeURIComponent(e$1.replace("wisdom/antipatterns/","")),t=await e(s),o=a$1(t,n);return {handled:true,text:JSON.stringify({symbol:n,count:o.antipatterns.length,antipatterns:o.antipatterns},null,2)}}if(e$1==="wisdom/decisions"){let n=await e(s);return {handled:true,text:JSON.stringify({count:n.decisions.length,decisions:n.decisions.map(t=>({id:t.id,title:t.title,status:t.status,date:t.date,symbols:t.symbols}))},null,2)}}if(e$1.startsWith("wisdom/decision/")){let n=e$1.replace("wisdom/decision/",""),t=await e(s),o=t.decisions.find(r=>r.id===n);return o?{handled:true,text:JSON.stringify(o,null,2)}:{handled:true,text:JSON.stringify({error:"Decision not found",id:n,available:t.decisions.map(r=>r.id)},null,2)}}if(e$1.startsWith("wisdom/expertise/")){let n=decodeURIComponent(e$1.replace("wisdom/expertise/","")),t=await e(s),o=b$1(t,{symbol:n});return {handled:true,text:JSON.stringify({symbol:n,count:o.length,experts:o.map(r=>({name:r.name,symbols:r.symbols,areas:r.areas,contact:r.contact}))},null,2)}}return {handled:false,text:""}}function G(){return [{uri:"paradigm://history/fragile",name:"History - Fragile Symbols",description:"Symbols with high fragility that need extra care when modifying",mimeType:"application/json"},{uri:"paradigm://history/validation/summary",name:"History - Validation Summary",description:"Overall validation statistics and pass rates",mimeType:"application/json"}]}async function $(e,s){if(e.startsWith("history/symbol/")&&!e.endsWith("/recent")){let n=decodeURIComponent(e.replace("history/symbol/","")),t=await f(s),o=c(t,n);return {handled:true,text:JSON.stringify({symbol:n,summary:o.summary?{total_changes:o.summary.total_changes,last_modified:o.summary.last_modified,stability_score:o.summary.stability_score,fragility:o.summary.fragility,contributors:o.summary.contributors}:null,recent:o.recent,co_changes:o.co_changes,validation:o.validation},null,2)}}if(e.startsWith("history/symbol/")&&e.endsWith("/recent")){let n=decodeURIComponent(e.replace("history/symbol/","").replace("/recent","")),t=await f(s),o=c(t,n);return {handled:true,text:JSON.stringify({symbol:n,fragility:o.summary?.fragility||"unknown",stability_score:o.summary?.stability_score,recent:o.recent.slice(0,5)},null,2)}}if(e==="history/fragile"){let n=await f(s);return {handled:true,text:JSON.stringify({count:n.index?.fragile_symbols?.length||0,fragile_symbols:n.index?.fragile_symbols||[],recommendation:"Consider adding extra test coverage and reviewing recent changes before modifying these symbols"},null,2)}}if(e.startsWith("history/cochanges/")){let n=decodeURIComponent(e.replace("history/cochanges/","")),o=(await f(s)).index?.co_changes?.filter(r=>r.symbols.includes(n))||[];return {handled:true,text:JSON.stringify({symbol:n,count:o.length,co_changes:o.map(r=>({with:r.symbols.filter(i=>i!==n),frequency:r.frequency,correlation:r.correlation})),recommendation:o.length>0?"These symbols often change together - consider if they need updates too":"No strong co-change patterns detected"},null,2)}}if(e==="history/validation/summary"){let n=await f(s);return {handled:true,text:JSON.stringify({last_run:n.validation?.last_run,total_validations:n.validation?.total_validations||0,pass_rate:n.validation?.pass_rate||0,by_symbol:n.validation?.by_symbol||{}},null,2)}}return {handled:false,text:""}}function q(){return [{uri:"paradigm://context/agent-protocol",name:"Agent Protocol",description:"IMPORTANT: Read this first. Workflow instructions for using Paradigm MCP tools effectively.",mimeType:"text/markdown"},{uri:"paradigm://context/session",name:"Session Info",description:"Current MCP session statistics and context usage estimate",mimeType:"application/json"},{uri:"paradigm://context/handoff-guide",name:"Handoff Guide",description:"When and how to perform context handoffs",mimeType:"text/markdown"}]}async function H(e,s){if(e==="context/agent-protocol")return {handled:true,text:`# Agent Protocol for Paradigm MCP Tools
2
+ import {d,g,h,e,a as a$1,b as b$1,f,c}from'./chunk-CMCQHU46.js';import'./chunk-4UJ4NIEQ.js';import'./chunk-4Q7XYPL4.js';import'./chunk-KLBH26PA.js';import'./chunk-JNSJVCTU.js';import'./chunk-Q2J542ST.js';import'./chunk-XROULIQN.js';import'./chunk-ZUAUFZRJ.js';import'./chunk-3KVVC4WV.js';import {m as m$1,n,p as p$1,h as h$1,i,ma}from'./chunk-FILLU77P.js';import'./chunk-M4UMM6DC.js';import'./chunk-ODVKPZZ4.js';import'./chunk-74SGKSRQ.js';import {j as j$1}from'./chunk-UPFCBVXY.js';import {b,a}from'./chunk-EK4ZRIFJ.js';import'./chunk-4SCKMGTB.js';import'./chunk-DVZWCXB6.js';import'./chunk-QGZRM6ZB.js';import'./chunk-VG7FN2TU.js';import'./chunk-5TAVYPOV.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import {ListResourcesRequestSchema,ReadResourceRequestSchema}from'@modelcontextprotocol/sdk/types.js';import*as p from'fs';import*as m from'path';function se(e){return {id:e.id,symbol:`^${e.id}`,description:e.description,locks:e.locks?.map(s=>({id:s.id,description:s.description,keys:s.keys?.map(n=>n.expression||n),mode:s.mode||"all"})),prizes:e.prizes?.map(s=>({id:s.id,oneTime:s.oneTime}))}}function F(e){let s=e.gateConfig?.gates||[],n=i(e.index,"gate"),t=new Map;for(let o of n){let r=o.symbol.replace(/^\^/,"");t.set(r,{id:r,symbol:o.symbol,description:o.description,source:"purpose",filePath:o.filePath,data:o.data});}for(let o of s)t.set(o.id,{...se(o),source:"portal.yaml"});return Array.from(t.values())}function I(e){let s=e.gateConfig?.flows||[],n=i(e.index,"flow"),t=new Map;for(let o of n){let r=o.symbol.replace(/^\$/,"");t.set(r,{id:r,symbol:o.symbol,description:o.description,source:"purpose",filePath:o.filePath,data:o.data});}for(let o of s)t.set(o.id,{id:o.id,symbol:`$${o.id}`,description:o.description,gates:o.gates,source:"portal.yaml"});return Array.from(t.values())}function U(){return [{uri:"paradigm://wisdom/preferences",name:"Wisdom - Preferences",description:"Team preferences for patterns, testing, and code style",mimeType:"application/json"},{uri:"paradigm://wisdom/antipatterns",name:"Wisdom - Antipatterns",description:"What NOT to do, with reasons and alternatives",mimeType:"application/json"},{uri:"paradigm://wisdom/decisions",name:"Wisdom - Decisions",description:"Architectural Decision Records (ADRs) index",mimeType:"application/json"}]}async function z(e$1,s){if(e$1==="wisdom/preferences"){let n=await e(s);return {handled:true,text:JSON.stringify({version:n.preferences?.version||"1.0",global:n.preferences?.global||{},by_symbol:n.preferences?.by_symbol||{},symbol_count:Object.keys(n.preferences?.by_symbol||{}).length},null,2)}}if(e$1.startsWith("wisdom/preferences/")){let n=decodeURIComponent(e$1.replace("wisdom/preferences/","")),t=await e(s),o=a$1(t,n);return {handled:true,text:JSON.stringify({symbol:n,preferences:o.preferences,global:t.preferences?.global||{}},null,2)}}if(e$1==="wisdom/antipatterns"){let n=await e(s);return {handled:true,text:JSON.stringify({count:n.antipatterns.length,antipatterns:n.antipatterns},null,2)}}if(e$1.startsWith("wisdom/antipatterns/")){let n=decodeURIComponent(e$1.replace("wisdom/antipatterns/","")),t=await e(s),o=a$1(t,n);return {handled:true,text:JSON.stringify({symbol:n,count:o.antipatterns.length,antipatterns:o.antipatterns},null,2)}}if(e$1==="wisdom/decisions"){let n=await e(s);return {handled:true,text:JSON.stringify({count:n.decisions.length,decisions:n.decisions.map(t=>({id:t.id,title:t.title,status:t.status,date:t.date,symbols:t.symbols}))},null,2)}}if(e$1.startsWith("wisdom/decision/")){let n=e$1.replace("wisdom/decision/",""),t=await e(s),o=t.decisions.find(r=>r.id===n);return o?{handled:true,text:JSON.stringify(o,null,2)}:{handled:true,text:JSON.stringify({error:"Decision not found",id:n,available:t.decisions.map(r=>r.id)},null,2)}}if(e$1.startsWith("wisdom/expertise/")){let n=decodeURIComponent(e$1.replace("wisdom/expertise/","")),t=await e(s),o=b$1(t,{symbol:n});return {handled:true,text:JSON.stringify({symbol:n,count:o.length,experts:o.map(r=>({name:r.name,symbols:r.symbols,areas:r.areas,contact:r.contact}))},null,2)}}return {handled:false,text:""}}function G(){return [{uri:"paradigm://history/fragile",name:"History - Fragile Symbols",description:"Symbols with high fragility that need extra care when modifying",mimeType:"application/json"},{uri:"paradigm://history/validation/summary",name:"History - Validation Summary",description:"Overall validation statistics and pass rates",mimeType:"application/json"}]}async function $(e,s){if(e.startsWith("history/symbol/")&&!e.endsWith("/recent")){let n=decodeURIComponent(e.replace("history/symbol/","")),t=await f(s),o=c(t,n);return {handled:true,text:JSON.stringify({symbol:n,summary:o.summary?{total_changes:o.summary.total_changes,last_modified:o.summary.last_modified,stability_score:o.summary.stability_score,fragility:o.summary.fragility,contributors:o.summary.contributors}:null,recent:o.recent,co_changes:o.co_changes,validation:o.validation},null,2)}}if(e.startsWith("history/symbol/")&&e.endsWith("/recent")){let n=decodeURIComponent(e.replace("history/symbol/","").replace("/recent","")),t=await f(s),o=c(t,n);return {handled:true,text:JSON.stringify({symbol:n,fragility:o.summary?.fragility||"unknown",stability_score:o.summary?.stability_score,recent:o.recent.slice(0,5)},null,2)}}if(e==="history/fragile"){let n=await f(s);return {handled:true,text:JSON.stringify({count:n.index?.fragile_symbols?.length||0,fragile_symbols:n.index?.fragile_symbols||[],recommendation:"Consider adding extra test coverage and reviewing recent changes before modifying these symbols"},null,2)}}if(e.startsWith("history/cochanges/")){let n=decodeURIComponent(e.replace("history/cochanges/","")),o=(await f(s)).index?.co_changes?.filter(r=>r.symbols.includes(n))||[];return {handled:true,text:JSON.stringify({symbol:n,count:o.length,co_changes:o.map(r=>({with:r.symbols.filter(i=>i!==n),frequency:r.frequency,correlation:r.correlation})),recommendation:o.length>0?"These symbols often change together - consider if they need updates too":"No strong co-change patterns detected"},null,2)}}if(e==="history/validation/summary"){let n=await f(s);return {handled:true,text:JSON.stringify({last_run:n.validation?.last_run,total_validations:n.validation?.total_validations||0,pass_rate:n.validation?.pass_rate||0,by_symbol:n.validation?.by_symbol||{}},null,2)}}return {handled:false,text:""}}function q(){return [{uri:"paradigm://context/agent-protocol",name:"Agent Protocol",description:"IMPORTANT: Read this first. Workflow instructions for using Paradigm MCP tools effectively.",mimeType:"text/markdown"},{uri:"paradigm://context/session",name:"Session Info",description:"Current MCP session statistics and context usage estimate",mimeType:"application/json"},{uri:"paradigm://context/handoff-guide",name:"Handoff Guide",description:"When and how to perform context handoffs",mimeType:"text/markdown"}]}async function H(e,s){if(e==="context/agent-protocol")return {handled:true,text:`# Agent Protocol for Paradigm MCP Tools
3
3
 
4
4
  ## Query Before Modify
5
5
 
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import'./chunk-XHJ27CER.js';import*as o from'fs';import*as p from'path';import s from'chalk';import we from'ora';import*as F from'js-yaml';import {createRequire}from'module';function K(e,...t){return o.existsSync(p.join(e,...t))}function z(e,...t){o.mkdirSync(p.join(e,...t),{recursive:true});}function A(e){let t=p.join(e,".paradigm","config.yaml");if(!o.existsSync(t))return null;try{return F.load(o.readFileSync(t,"utf8"))}catch{return null}}function I(e){let t=p.join(e,".paradigm","config.yaml");return o.existsSync(t)?o.readFileSync(t,"utf8"):null}function x(e,t){o.writeFileSync(p.join(e,".paradigm","config.yaml"),t,"utf8");}function G(e){try{let t=n=>{let i=o.readdirSync(n,{withFileTypes:!0});for(let r of i)if(r.isDirectory()){if(t(p.join(n,r.name)))return !0}else if(r.name.endsWith(".yaml")&&!r.name.endsWith(".migrated")&&r.name!=="index.yaml"&&r.name!=="arc.yaml")return !0;return !1};return t(e)}catch{return false}}function D(e,t){return t in e||t.replace(/-/g,"_")in e||t.replace(/_/g,"-")in e}var Q={id:"legacy-file-to-directory",introducedIn:"1.0.0",description:"Convert .paradigm file to .paradigm/ directory",category:"directory",auto:true,async check(e){let t=p.join(e,".paradigm");return o.existsSync(t)?o.statSync(t).isFile()?{needed:true,reason:".paradigm is a file, not a directory",details:["Legacy format \u2014 must convert to directory"]}:{needed:false,reason:".paradigm/ is already a directory"}:{needed:false,reason:"No .paradigm found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would convert .paradigm file to directory"};let n=p.join(e,".paradigm"),i=p.join(e,".paradigm.backup"),r=o.readFileSync(n,"utf8");return o.copyFileSync(n,i),o.unlinkSync(n),o.mkdirSync(n,{recursive:true}),o.mkdirSync(p.join(n,"specs"),{recursive:true}),o.mkdirSync(p.join(n,"docs"),{recursive:true}),o.mkdirSync(p.join(n,"prompts"),{recursive:true}),o.writeFileSync(p.join(n,"config.yaml"),r,"utf8"),{status:"applied",message:"Converted .paradigm file to directory (backup at .paradigm.backup)",filesCreated:[".paradigm/",".paradigm/config.yaml",".paradigm/specs/",".paradigm/docs/",".paradigm/prompts/"]}}},X={id:"legacy-scan-index-location",introducedIn:"1.0.0",description:"Move .paradigm-scan-index.json into .paradigm/",category:"format",auto:true,async check(e){let t=p.join(e,".paradigm-scan-index.json");return o.existsSync(t)?{needed:true,reason:"Scan index at root level needs relocation"}:{needed:false,reason:"No legacy scan index at root"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would move .paradigm-scan-index.json"};let n=p.join(e,".paradigm-scan-index.json"),i=p.join(e,".paradigm","scan-index.json");return o.renameSync(n,i),{status:"applied",message:"Moved scan index into .paradigm/",filesModified:[".paradigm/scan-index.json"]}}};function w(e,t,n,i,r){return {id:e,introducedIn:t,description:i,category:"directory",auto:true,async check(a){return K(a,".paradigm",n)?{needed:false,reason:`.paradigm/${n}/ already exists`}:{needed:true,reason:`Missing .paradigm/${n}/`,details:r}},async apply(a,d){return d.dryRun?{status:"skipped",message:`Would create .paradigm/${n}/`}:(z(a,".paradigm",n),{status:"applied",message:`Created .paradigm/${n}/`,filesCreated:[`.paradigm/${n}/`]})}}}var Z=w("add-specs-directory","3.0.0","specs","Create .paradigm/specs/ for specifications",["Stores logger spec, symbols spec, scan spec, etc."]),ee=w("add-docs-directory","3.0.0","docs","Create .paradigm/docs/ for documentation",["Stores commands, patterns, troubleshooting docs"]),te=w("add-prompts-directory","3.0.0","prompts","Create .paradigm/prompts/ for task templates",["Stores add-feature, refactor, trace-flow prompts"]),ne={id:"add-tag-bank-config",introducedIn:"3.2.0",description:"Add tag-bank section to config.yaml",category:"config",auto:true,async check(e){let t=A(e);return t?D(t,"tag-bank")?{needed:false,reason:"tag-bank already configured"}:{needed:true,reason:"Missing tag-bank configuration"}:{needed:false,reason:"No config.yaml found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would add tag-bank to config.yaml"};let n=I(e);return n?(x(e,n.trimEnd()+`
2
+ import'./chunk-5TAVYPOV.js';import*as o from'fs';import*as p from'path';import s from'chalk';import we from'ora';import*as F from'js-yaml';import {createRequire}from'module';function K(e,...t){return o.existsSync(p.join(e,...t))}function z(e,...t){o.mkdirSync(p.join(e,...t),{recursive:true});}function A(e){let t=p.join(e,".paradigm","config.yaml");if(!o.existsSync(t))return null;try{return F.load(o.readFileSync(t,"utf8"))}catch{return null}}function I(e){let t=p.join(e,".paradigm","config.yaml");return o.existsSync(t)?o.readFileSync(t,"utf8"):null}function x(e,t){o.writeFileSync(p.join(e,".paradigm","config.yaml"),t,"utf8");}function G(e){try{let t=n=>{let i=o.readdirSync(n,{withFileTypes:!0});for(let r of i)if(r.isDirectory()){if(t(p.join(n,r.name)))return !0}else if(r.name.endsWith(".yaml")&&!r.name.endsWith(".migrated")&&r.name!=="index.yaml"&&r.name!=="arc.yaml")return !0;return !1};return t(e)}catch{return false}}function D(e,t){return t in e||t.replace(/-/g,"_")in e||t.replace(/_/g,"-")in e}var Q={id:"legacy-file-to-directory",introducedIn:"1.0.0",description:"Convert .paradigm file to .paradigm/ directory",category:"directory",auto:true,async check(e){let t=p.join(e,".paradigm");return o.existsSync(t)?o.statSync(t).isFile()?{needed:true,reason:".paradigm is a file, not a directory",details:["Legacy format \u2014 must convert to directory"]}:{needed:false,reason:".paradigm/ is already a directory"}:{needed:false,reason:"No .paradigm found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would convert .paradigm file to directory"};let n=p.join(e,".paradigm"),i=p.join(e,".paradigm.backup"),r=o.readFileSync(n,"utf8");return o.copyFileSync(n,i),o.unlinkSync(n),o.mkdirSync(n,{recursive:true}),o.mkdirSync(p.join(n,"specs"),{recursive:true}),o.mkdirSync(p.join(n,"docs"),{recursive:true}),o.mkdirSync(p.join(n,"prompts"),{recursive:true}),o.writeFileSync(p.join(n,"config.yaml"),r,"utf8"),{status:"applied",message:"Converted .paradigm file to directory (backup at .paradigm.backup)",filesCreated:[".paradigm/",".paradigm/config.yaml",".paradigm/specs/",".paradigm/docs/",".paradigm/prompts/"]}}},X={id:"legacy-scan-index-location",introducedIn:"1.0.0",description:"Move .paradigm-scan-index.json into .paradigm/",category:"format",auto:true,async check(e){let t=p.join(e,".paradigm-scan-index.json");return o.existsSync(t)?{needed:true,reason:"Scan index at root level needs relocation"}:{needed:false,reason:"No legacy scan index at root"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would move .paradigm-scan-index.json"};let n=p.join(e,".paradigm-scan-index.json"),i=p.join(e,".paradigm","scan-index.json");return o.renameSync(n,i),{status:"applied",message:"Moved scan index into .paradigm/",filesModified:[".paradigm/scan-index.json"]}}};function w(e,t,n,i,r){return {id:e,introducedIn:t,description:i,category:"directory",auto:true,async check(a){return K(a,".paradigm",n)?{needed:false,reason:`.paradigm/${n}/ already exists`}:{needed:true,reason:`Missing .paradigm/${n}/`,details:r}},async apply(a,d){return d.dryRun?{status:"skipped",message:`Would create .paradigm/${n}/`}:(z(a,".paradigm",n),{status:"applied",message:`Created .paradigm/${n}/`,filesCreated:[`.paradigm/${n}/`]})}}}var Z=w("add-specs-directory","3.0.0","specs","Create .paradigm/specs/ for specifications",["Stores logger spec, symbols spec, scan spec, etc."]),ee=w("add-docs-directory","3.0.0","docs","Create .paradigm/docs/ for documentation",["Stores commands, patterns, troubleshooting docs"]),te=w("add-prompts-directory","3.0.0","prompts","Create .paradigm/prompts/ for task templates",["Stores add-feature, refactor, trace-flow prompts"]),ne={id:"add-tag-bank-config",introducedIn:"3.2.0",description:"Add tag-bank section to config.yaml",category:"config",auto:true,async check(e){let t=A(e);return t?D(t,"tag-bank")?{needed:false,reason:"tag-bank already configured"}:{needed:true,reason:"Missing tag-bank configuration"}:{needed:false,reason:"No config.yaml found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would add tag-bank to config.yaml"};let n=I(e);return n?(x(e,n.trimEnd()+`
3
3
  `+`
4
4
  # Tag bank configuration
5
5
  tag-bank:
@@ -48,7 +48,7 @@ component_types:
48
48
  `),{status:"applied",message:"Added component_types glossary to config.yaml",filesModified:[".paradigm/config.yaml"]}):{status:"error",message:"Cannot read config.yaml"}}},ue={id:"add-discipline-config",introducedIn:"3.4.0",description:"Add discipline field to config.yaml",category:"config",auto:true,async check(e){let t=A(e);return t?D(t,"discipline")?{needed:false,reason:"discipline already set"}:{needed:true,reason:"Missing discipline field"}:{needed:false,reason:"No config.yaml found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would add discipline to config.yaml"};let n=I(e);if(!n)return {status:"error",message:"Cannot read config.yaml"};let i=n.replace(/^(project:\s*.+)$/m,`$1
49
49
  discipline: auto`);return i===n?x(e,n.trimEnd()+`
50
50
  discipline: auto
51
- `):x(e,i),{status:"applied",message:"Added discipline: auto to config.yaml",filesModified:[".paradigm/config.yaml"]}}},fe={id:"sync-templates",introducedIn:"evergreen",description:"Update specs/ and docs/ from installed CLI templates",category:"template",auto:true,async check(e){let t=$();if(!t)return {needed:false,reason:"Templates directory not found"};let n=[],i=["specs","docs","prompts"];for(let r of i){let a=p.join(t,r),d=p.join(e,".paradigm",r);if(o.existsSync(a))try{let g=o.readdirSync(a).filter(m=>o.statSync(p.join(a,m)).isFile());for(let m of g)o.existsSync(p.join(d,m))||n.push(`${r}/${m}`);}catch{}}return n.length===0?{needed:false,reason:"All templates are up to date"}:{needed:true,reason:`${n.length} new template file(s) available`,details:n.map(r=>`New: ${r}`)}},async apply(e,t){let n=$();if(!n)return {status:"error",message:"Templates directory not found"};let i=p.basename(e),r=[],a=["specs","docs","prompts"];for(let d of a){let g=p.join(n,d),m=p.join(e,".paradigm",d);if(o.existsSync(g)){t.dryRun||o.mkdirSync(m,{recursive:true});try{let S=o.readdirSync(g,{withFileTypes:!0});for(let k of S){if(k.isDirectory())continue;let M=p.join(m,k.name);if(!o.existsSync(M)){if(t.dryRun){r.push(`${d}/${k.name}`);continue}let c=o.readFileSync(p.join(g,k.name),"utf8");c=c.replace(/\{\{PROJECT_NAME\}\}/g,i),o.writeFileSync(M,c,"utf8"),r.push(`${d}/${k.name}`);}}}catch{}}}return t.dryRun?{status:"skipped",message:`Would copy ${r.length} template file(s)`}:r.length===0?{status:"skipped",message:"No new templates to sync"}:{status:"applied",message:`Synced ${r.length} template file(s)`,filesCreated:r.map(d=>`.paradigm/${d}`)}}},me={id:"refresh-hooks",introducedIn:"evergreen",description:"Reinstall hook scripts from plugin",category:"hook",auto:true,async check(e){let t=[p.join(e,".claude","hooks"),p.join(e,".cursor","hooks")];for(let i of t)if(o.existsSync(i))try{if(o.readdirSync(i).some(a=>a.includes("paradigm")))return {needed:!1,reason:"Hooks are installed"}}catch{}let n=p.join(e,".claude","settings.local.json");if(o.existsSync(n))try{if(JSON.parse(o.readFileSync(n,"utf8")).hooks)return {needed:!1,reason:"Plugin-managed hooks are configured"}}catch{}return {needed:true,reason:"No paradigm hooks found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would reinstall hooks"};try{let{hooksInstallCommand:n}=await import('./hooks-BL6CXRVK.js');return await n({force:!0}),{status:"applied",message:"Hooks reinstalled"}}catch(n){return {status:"error",message:`Hook install failed: ${n.message}`}}}},b=[Q,X,Z,ee,te,ne,se,ue,de,le,re,oe,ie,ae,ce,pe,ge,fe,me];var he=createRequire(import.meta.url),{version:W}=he("../package.json");function C(e){let t=p.join(e,".paradigm","migrate.yaml");if(!o.existsSync(t))return null;try{let n=o.readFileSync(t,"utf8");return F.load(n)}catch{return null}}async function V(e){let t=p.join(e,".paradigm"),n=C(e),i=n?.applied.map(l=>l.id)??[],r="unknown",a=p.join(t,"config.yaml");if(o.existsSync(a))try{let l=F.load(o.readFileSync(a,"utf8"));r=String(l.version??"unknown");}catch{}let g=["specs","docs","prompts","lore","tasks","protocols","personas"].filter(l=>!o.existsSync(p.join(t,l))),m=["discipline","tag-bank","purpose-required","component_types"],S=[];if(o.existsSync(a))try{let l=F.load(o.readFileSync(a,"utf8"));S=m.filter(h=>{let j=h.replace(/-/g,"_");return !(h in l)&&!(j in l)&&!(h.replace(/_/g,"-")in l)});}catch{}let k=[],M=$();if(M){let l=["specs","docs"];for(let h of l){let j=p.join(M,h),L=p.join(t,h);if(o.existsSync(j)&&o.existsSync(L)){let J=o.readdirSync(j).filter(R=>!o.statSync(p.join(j,R)).isDirectory());for(let R of J){let Y=p.join(L,R);o.existsSync(Y)||k.push(`${h}/${R}`);}}}}let c=!o.existsSync(p.join(e,".claude","hooks")),u=[];for(let l of b){let h=l.introducedIn==="evergreen";if(i.includes(l.id)&&!h)continue;(await l.check(e)).needed&&u.push(l);}return {configVersion:r,cliVersion:W,pendingMigrations:u,appliedIds:i,health:{missingDirectories:g,missingConfigFields:S,staleTemplates:k,hooksOutdated:c}}}async function U(e){let t=[],n=new Date().toISOString();for(let i of b){if(i.introducedIn==="evergreen")continue;(await i.check(e)).needed||t.push({id:i.id,appliedAt:n,cliVersion:W});}return t}function $(){let e=new URL(import.meta.url).pathname,t=p.dirname(e),n=[p.join(t,"..","..","..","templates","paradigm"),p.join(t,"..","..","templates","paradigm"),p.join(t,"..","templates","paradigm")];for(let i of n)if(o.existsSync(i))return i;return null}var ke=createRequire(import.meta.url),{version:N}=ke("../package.json");async function B(e){let t=C(e);if(t)return t;let n=await U(e);return {version:"1.0",cliVersion:N,lastMigrated:new Date().toISOString(),applied:n}}function _(e,t){let n=p.join(e,".paradigm","migrate.yaml");o.mkdirSync(p.dirname(n),{recursive:true}),t.cliVersion=N,t.lastMigrated=new Date().toISOString(),o.writeFileSync(n,F.dump(t,{indent:2,lineWidth:120,noRefs:true,sortKeys:false,quotingType:'"'}),"utf8");}async function E(e,t,n,i){let r={applied:0,skipped:0,errors:0,manual:0,results:[]},a=new Date().toISOString();for(let d of t){if(!d.auto){r.manual++,r.results.push({id:d.id,result:{status:"skipped",message:"Manual review recommended"}});continue}try{let g=await d.apply(e,n);r.results.push({id:d.id,result:g}),g.status==="applied"?(r.applied++,i.applied.push({id:d.id,appliedAt:a,cliVersion:N})):g.status==="skipped"?r.skipped++:r.errors++;}catch(g){r.errors++,r.results.push({id:d.id,result:{status:"error",message:g.message}});}}return r}async function _e(e={}){let t=process.cwd(),n=p.join(t,".paradigm");if((!o.existsSync(n)||!o.statSync(n).isDirectory())&&!(o.existsSync(n)&&o.statSync(n).isFile())){e.quiet||console.log(s.yellow("\n No .paradigm/ directory found. Run `paradigm init` or `paradigm shift` first.\n"));return}let i=we();e.quiet||i.start("Detecting project state...");let r=await V(t);e.quiet||i.stop();let a=await B(t),d=r.pendingMigrations;if(e.only&&e.only.length>0&&(d=d.filter(c=>e.only.includes(c.id))),e.category&&(d=d.filter(c=>c.category===e.category)),e.force){let c=e.only?b.filter(u=>e.only.includes(u.id)):e.category?b.filter(u=>u.category===e.category):b;d=[];for(let u of c)((await u.check(t)).needed||e.force)&&d.push(u);}let g=d.filter(c=>c.auto),m=d.filter(c=>!c.auto);if(e.list){Me(a,r,e);return}if(e.quiet){if(g.length===0)return;let c=await E(t,g,e,a);return _(t,a),c}let S=C(t);if(console.log(s.blue(`
51
+ `):x(e,i),{status:"applied",message:"Added discipline: auto to config.yaml",filesModified:[".paradigm/config.yaml"]}}},fe={id:"sync-templates",introducedIn:"evergreen",description:"Update specs/ and docs/ from installed CLI templates",category:"template",auto:true,async check(e){let t=$();if(!t)return {needed:false,reason:"Templates directory not found"};let n=[],i=["specs","docs","prompts"];for(let r of i){let a=p.join(t,r),d=p.join(e,".paradigm",r);if(o.existsSync(a))try{let g=o.readdirSync(a).filter(m=>o.statSync(p.join(a,m)).isFile());for(let m of g)o.existsSync(p.join(d,m))||n.push(`${r}/${m}`);}catch{}}return n.length===0?{needed:false,reason:"All templates are up to date"}:{needed:true,reason:`${n.length} new template file(s) available`,details:n.map(r=>`New: ${r}`)}},async apply(e,t){let n=$();if(!n)return {status:"error",message:"Templates directory not found"};let i=p.basename(e),r=[],a=["specs","docs","prompts"];for(let d of a){let g=p.join(n,d),m=p.join(e,".paradigm",d);if(o.existsSync(g)){t.dryRun||o.mkdirSync(m,{recursive:true});try{let S=o.readdirSync(g,{withFileTypes:!0});for(let k of S){if(k.isDirectory())continue;let M=p.join(m,k.name);if(!o.existsSync(M)){if(t.dryRun){r.push(`${d}/${k.name}`);continue}let c=o.readFileSync(p.join(g,k.name),"utf8");c=c.replace(/\{\{PROJECT_NAME\}\}/g,i),o.writeFileSync(M,c,"utf8"),r.push(`${d}/${k.name}`);}}}catch{}}}return t.dryRun?{status:"skipped",message:`Would copy ${r.length} template file(s)`}:r.length===0?{status:"skipped",message:"No new templates to sync"}:{status:"applied",message:`Synced ${r.length} template file(s)`,filesCreated:r.map(d=>`.paradigm/${d}`)}}},me={id:"refresh-hooks",introducedIn:"evergreen",description:"Reinstall hook scripts from plugin",category:"hook",auto:true,async check(e){let t=[p.join(e,".claude","hooks"),p.join(e,".cursor","hooks")];for(let i of t)if(o.existsSync(i))try{if(o.readdirSync(i).some(a=>a.includes("paradigm")))return {needed:!1,reason:"Hooks are installed"}}catch{}let n=p.join(e,".claude","settings.local.json");if(o.existsSync(n))try{if(JSON.parse(o.readFileSync(n,"utf8")).hooks)return {needed:!1,reason:"Plugin-managed hooks are configured"}}catch{}return {needed:true,reason:"No paradigm hooks found"}},async apply(e,t){if(t.dryRun)return {status:"skipped",message:"Would reinstall hooks"};try{let{hooksInstallCommand:n}=await import('./hooks-BNWRGACA.js');return await n({force:!0}),{status:"applied",message:"Hooks reinstalled"}}catch(n){return {status:"error",message:`Hook install failed: ${n.message}`}}}},b=[Q,X,Z,ee,te,ne,se,ue,de,le,re,oe,ie,ae,ce,pe,ge,fe,me];var he=createRequire(import.meta.url),{version:W}=he("../package.json");function C(e){let t=p.join(e,".paradigm","migrate.yaml");if(!o.existsSync(t))return null;try{let n=o.readFileSync(t,"utf8");return F.load(n)}catch{return null}}async function V(e){let t=p.join(e,".paradigm"),n=C(e),i=n?.applied.map(l=>l.id)??[],r="unknown",a=p.join(t,"config.yaml");if(o.existsSync(a))try{let l=F.load(o.readFileSync(a,"utf8"));r=String(l.version??"unknown");}catch{}let g=["specs","docs","prompts","lore","tasks","protocols","personas"].filter(l=>!o.existsSync(p.join(t,l))),m=["discipline","tag-bank","purpose-required","component_types"],S=[];if(o.existsSync(a))try{let l=F.load(o.readFileSync(a,"utf8"));S=m.filter(h=>{let j=h.replace(/-/g,"_");return !(h in l)&&!(j in l)&&!(h.replace(/_/g,"-")in l)});}catch{}let k=[],M=$();if(M){let l=["specs","docs"];for(let h of l){let j=p.join(M,h),L=p.join(t,h);if(o.existsSync(j)&&o.existsSync(L)){let J=o.readdirSync(j).filter(R=>!o.statSync(p.join(j,R)).isDirectory());for(let R of J){let Y=p.join(L,R);o.existsSync(Y)||k.push(`${h}/${R}`);}}}}let c=!o.existsSync(p.join(e,".claude","hooks")),u=[];for(let l of b){let h=l.introducedIn==="evergreen";if(i.includes(l.id)&&!h)continue;(await l.check(e)).needed&&u.push(l);}return {configVersion:r,cliVersion:W,pendingMigrations:u,appliedIds:i,health:{missingDirectories:g,missingConfigFields:S,staleTemplates:k,hooksOutdated:c}}}async function U(e){let t=[],n=new Date().toISOString();for(let i of b){if(i.introducedIn==="evergreen")continue;(await i.check(e)).needed||t.push({id:i.id,appliedAt:n,cliVersion:W});}return t}function $(){let e=new URL(import.meta.url).pathname,t=p.dirname(e),n=[p.join(t,"..","..","..","templates","paradigm"),p.join(t,"..","..","templates","paradigm"),p.join(t,"..","templates","paradigm")];for(let i of n)if(o.existsSync(i))return i;return null}var ke=createRequire(import.meta.url),{version:N}=ke("../package.json");async function B(e){let t=C(e);if(t)return t;let n=await U(e);return {version:"1.0",cliVersion:N,lastMigrated:new Date().toISOString(),applied:n}}function _(e,t){let n=p.join(e,".paradigm","migrate.yaml");o.mkdirSync(p.dirname(n),{recursive:true}),t.cliVersion=N,t.lastMigrated=new Date().toISOString(),o.writeFileSync(n,F.dump(t,{indent:2,lineWidth:120,noRefs:true,sortKeys:false,quotingType:'"'}),"utf8");}async function E(e,t,n,i){let r={applied:0,skipped:0,errors:0,manual:0,results:[]},a=new Date().toISOString();for(let d of t){if(!d.auto){r.manual++,r.results.push({id:d.id,result:{status:"skipped",message:"Manual review recommended"}});continue}try{let g=await d.apply(e,n);r.results.push({id:d.id,result:g}),g.status==="applied"?(r.applied++,i.applied.push({id:d.id,appliedAt:a,cliVersion:N})):g.status==="skipped"?r.skipped++:r.errors++;}catch(g){r.errors++,r.results.push({id:d.id,result:{status:"error",message:g.message}});}}return r}async function _e(e={}){let t=process.cwd(),n=p.join(t,".paradigm");if((!o.existsSync(n)||!o.statSync(n).isDirectory())&&!(o.existsSync(n)&&o.statSync(n).isFile())){e.quiet||console.log(s.yellow("\n No .paradigm/ directory found. Run `paradigm init` or `paradigm shift` first.\n"));return}let i=we();e.quiet||i.start("Detecting project state...");let r=await V(t);e.quiet||i.stop();let a=await B(t),d=r.pendingMigrations;if(e.only&&e.only.length>0&&(d=d.filter(c=>e.only.includes(c.id))),e.category&&(d=d.filter(c=>c.category===e.category)),e.force){let c=e.only?b.filter(u=>e.only.includes(u.id)):e.category?b.filter(u=>u.category===e.category):b;d=[];for(let u of c)((await u.check(t)).needed||e.force)&&d.push(u);}let g=d.filter(c=>c.auto),m=d.filter(c=>!c.auto);if(e.list){Me(a,r,e);return}if(e.quiet){if(g.length===0)return;let c=await E(t,g,e,a);return _(t,a),c}let S=C(t);if(console.log(s.blue(`
52
52
  \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510`)),console.log(s.blue("\u2502")+s.white.bold(" paradigm migrate ")+s.blue("\u2502")),console.log(s.blue("\u2502")+s.gray(" Bring your project up to date ")+s.blue("\u2502")),console.log(s.blue(`\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
53
53
  `)),console.log(s.white(` Project: ${s.cyan(p.basename(t))}`)),console.log(s.white(` Config version: ${s.cyan(r.configVersion)}`)),console.log(s.white(` CLI version: ${s.cyan(r.cliVersion)}`)),console.log(s.white(` Last migrated: ${s.cyan(S?.lastMigrated??"never")}`)),console.log(""),d.length===0){console.log(s.green(` All migrations are up to date.
54
54
  `)),S||(_(t,a),e.verbose&&console.log(s.gray(` Created .paradigm/migrate.yaml with bootstrap state.
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import {a,c}from'./chunk-7YTAA6XA.js';import'./chunk-XHJ27CER.js';import r from'chalk';import*as e from'fs';import*as i from'path';import*as k from'js-yaml';var D=".paradigm/assessments";async function j(_){let y=process.cwd(),a$1=i.join(y,D,"arcs"),f=!!_.dryRun;if(!e.existsSync(a$1)){console.log(r.yellow(`
2
+ import {a,c}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import r from'chalk';import*as e from'fs';import*as i from'path';import*as k from'js-yaml';var D=".paradigm/assessments";async function j(_){let y=process.cwd(),a$1=i.join(y,D,"arcs"),f=!!_.dryRun;if(!e.existsSync(a$1)){console.log(r.yellow(`
3
3
  No assessments found at .paradigm/assessments/arcs/
4
4
  `));return}let $=e.readdirSync(a$1).filter(o=>e.statSync(i.join(a$1,o)).isDirectory()),l=0,d=0,t=[];for(let o of $){let c$1=i.join(a$1,o,"entries");if(!e.existsSync(c$1))continue;let S=e.readdirSync(c$1).filter(n=>n.endsWith(".yaml")&&!n.endsWith(".migrated"));for(let n of S){let m=i.join(c$1,n);try{let g=e.readFileSync(m,"utf8"),s=k.load(g),w=[`arc:${s.arc_id}`,`assessment:${s.type}`,...s.tags||[],"migrated-from-assessment"],A={id:"",type:s.type,timestamp:s.date,author:s.author,title:s.title,summary:s.summary,body:s.body,symbols_touched:s.symbols||[],tags:w,linked_lore:s.linked_lore,linked_tasks:s.linked_tasks,linked_commits:s.linked_commits},p={...a(A),id:""};f?console.log(r.gray(` [dry-run] Would migrate: ${s.id} \u2192 lore (arc:${s.arc_id})`)):(await c(y,p),e.renameSync(m,m.replace(".yaml",".migrated")),console.log(r.green(` Migrated: ${s.id} \u2192 ${p.id} (arc:${s.arc_id})`))),l++,t.includes(s.arc_id)||t.push(s.arc_id);}catch(g){console.error(r.red(` Failed to migrate ${n}: ${g}`)),d++;}}}console.log(),console.log(f?r.yellow(` Dry run complete: ${l} entries would be migrated from ${t.length} arcs`):r.green(` Migration complete: ${l} entries migrated from ${t.length} arcs`)),d>0&&console.log(r.yellow(` ${d} entries skipped due to errors`)),console.log(r.gray(` Arcs preserved as tags: ${t.map(o=>`arc:${o}`).join(", ")}`)),console.log();}export{j as loreMigrateAssessmentsCommand};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export{a as ModelDiscovery}from'./chunk-Y4XFVDZC.js';import'./chunk-XHJ27CER.js';
2
+ export{a as ModelDiscovery}from'./chunk-Y4XFVDZC.js';import'./chunk-5TAVYPOV.js';
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {v}from'./chunk-3QMRDN65.js';export{o as adjustAttentionFromFeedback,u as applySurfacingRules,s as autoPromoteJournalEntries,g as detectDebates,n as emitAndProcess,k as engageNomination,r as forwardNominationsToRelay,q as getNeverlandMetrics,p as getNominationStats,j as loadDebates,i as loadNominations,t as loadSurfacingConfig,h as persistNominations,f as processEvent,m as processPendingEvents,l as resolveDebate}from'./chunk-3QMRDN65.js';import'./chunk-EMMMBAID.js';import'./chunk-6PP2RPIZ.js';import'./chunk-F5BSUC2L.js';import'./chunk-OVDYPOHR.js';import'./chunk-4W5TBL3O.js';import'./chunk-XHJ27CER.js';v();
2
+ import {v}from'./chunk-4Q7XYPL4.js';export{o as adjustAttentionFromFeedback,u as applySurfacingRules,s as autoPromoteJournalEntries,g as detectDebates,n as emitAndProcess,k as engageNomination,r as forwardNominationsToRelay,q as getNeverlandMetrics,p as getNominationStats,j as loadDebates,i as loadNominations,t as loadSurfacingConfig,h as persistNominations,f as processEvent,m as processPendingEvents,l as resolveDebate}from'./chunk-4Q7XYPL4.js';import'./chunk-3KVVC4WV.js';import'./chunk-74SGKSRQ.js';import'./chunk-EK4ZRIFJ.js';import'./chunk-QGZRM6ZB.js';import'./chunk-VG7FN2TU.js';import'./chunk-5TAVYPOV.js';v();
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as a from'fs';import*as d from'path';import*as y from'os';import n from'chalk';import*as f from'js-yaml';var b=d.join(y.homedir(),".paradigm","notebooks"),m=".paradigm/notebooks",$="nb-",k=".yaml";async function x(e={}){let s=process.cwd(),c=a$1.command("notebook-list").start("Listing notebook entries",{cwd:s}),t=e.agent||"all",r=u(s,t==="all"?void 0:t);if(e.json){console.log(JSON.stringify({count:r.length,entries:r.map(w)},null,2)),c.success(`Found ${r.length} entries`);return}if(console.log(n.blue(`
2
+ import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as a from'fs';import*as d from'path';import*as y from'os';import n from'chalk';import*as f from'js-yaml';var b=d.join(y.homedir(),".paradigm","notebooks"),m=".paradigm/notebooks",$="nb-",k=".yaml";async function x(e={}){let s=process.cwd(),c=a$1.command("notebook-list").start("Listing notebook entries",{cwd:s}),t=e.agent||"all",r=u(s,t==="all"?void 0:t);if(e.json){console.log(JSON.stringify({count:r.length,entries:r.map(w)},null,2)),c.success(`Found ${r.length} entries`);return}if(console.log(n.blue(`
3
3
  \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510`)),console.log(n.blue("\u2502")+n.white.bold(" paradigm notebook list ")+n.blue("\u2502")),console.log(n.blue("\u2502")+n.gray(` Agent: ${t}`.padEnd(50))+n.blue("\u2502")),console.log(n.blue(`\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
4
4
  `)),r.length===0){console.log(n.yellow(" No notebook entries found.")),console.log(n.gray(` Add entries via paradigm_notebook_add or paradigm_notebook_promote.
5
5
  `)),c.success("No entries found");return}for(let o of r){let i=o.concepts.join(", ")||n.gray("none"),l=o.appliedCount>0?n.green(`${o.appliedCount}x applied`):n.gray("unused");console.log(` ${n.white.bold(o.id)}`),console.log(` ${n.gray(o.context.slice(0,80))}`),console.log(` Concepts: ${i} | ${l} | Confidence: ${(o.confidence*100).toFixed(0)}%`),console.log("");}c.success(`Listed ${r.length} entries`);}async function N(e,s={}){let c=process.cwd(),t=a$1.command("notebook-show").start(`Showing notebook ${e}`,{cwd:c}),o=u(c,s.agent).find(i=>i.id===e);if(!o){s.json?console.log(JSON.stringify({error:`Entry "${e}" not found`})):console.log(n.red(`
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import {g}from'./chunk-VG7FN2TU.js';export{c as addNotebookEntry,e as incrementApplied,a as loadNotebookEntries,d as promoteFromLore,b as searchNotebooks}from'./chunk-VG7FN2TU.js';import'./chunk-5TAVYPOV.js';g();
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a,b}from'./chunk-7PB7AXQE.js';import'./chunk-TYWB5IQJ.js';import'./chunk-5YHR77AL.js';import'./chunk-RN35IVA2.js';import {e as e$1}from'./chunk-AO7ZSRME.js';import'./chunk-FYDRENK7.js';import {d,c}from'./chunk-EKZDFEJW.js';import'./chunk-SHD27BQX.js';import'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import'./chunk-XHJ27CER.js';import*as S from'path';import e from'chalk';import O from'ora';async function I(o,n,t){let i=n?S.resolve(n):process.cwd();if(!o){t.json?console.log(JSON.stringify({error:"Task is required"})):(console.log(e.red(`
2
+ import {a,b}from'./chunk-J6KWGCHN.js';import'./chunk-TYWB5IQJ.js';import'./chunk-ORDKEGII.js';import'./chunk-BV5PRPLB.js';import {e as e$1}from'./chunk-AO7ZSRME.js';import'./chunk-FYDRENK7.js';import {d,c}from'./chunk-EKZDFEJW.js';import'./chunk-SHD27BQX.js';import'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import'./chunk-5TAVYPOV.js';import*as S from'path';import e from'chalk';import O from'ora';async function I(o,n,t){let i=n?S.resolve(n):process.cwd();if(!o){t.json?console.log(JSON.stringify({error:"Task is required"})):(console.log(e.red(`
3
3
  Task is required.`)),console.log(e.gray(`Example: paradigm team orchestrate "Build @payment-system with Stripe"
4
4
  `)));return}if(!e$1(i)){t.json?console.log(JSON.stringify({error:"Team not configured"})):console.log(e.yellow("\nTeam not configured. Run `paradigm team init` first.\n"));return}let f="faceted";t.solo&&(f="solo"),t.faceted&&(f="faceted");let g;if(t.budget){let s=t.budget.split(",");g={};for(let l of s){let[a,r]=l.split("=");a==="tokens"&&(g.maxTokens=parseInt(r)),a==="cost"&&(g.maxCostUsd=parseFloat(r)),a==="warn"&&(g.warnAtPercent=parseInt(r));}}let c=O({text:"Initializing orchestrator...",isSilent:t.quiet||t.json}).start(),y=new a(i);try{await y.initialize();}catch(s){c.fail("Failed to initialize orchestrator"),t.json?console.log(JSON.stringify({error:s instanceof Error?s.message:String(s)})):console.log(e.red(`
5
5
  Error: ${s instanceof Error?s.message:s}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {c,g,h}from'./chunk-J32OPJEX.js';import'./chunk-XHJ27CER.js';import o from'chalk';async function y(r){let n=c();if(r.json){console.log(JSON.stringify(n,null,2));return}if(n.length===0){console.log(o.yellow('No trusted peers. Run "paradigm symphony serve" to accept connections.'));return}console.log(o.cyan(`
2
+ import {c,g,h}from'./chunk-J32OPJEX.js';import'./chunk-5TAVYPOV.js';import o from'chalk';async function y(r){let n=c();if(r.json){console.log(JSON.stringify(n,null,2));return}if(n.length===0){console.log(o.yellow('No trusted peers. Run "paradigm symphony serve" to accept connections.'));return}console.log(o.cyan(`
3
3
  Trusted Peers (${n.length})
4
4
  `)),console.log(o.gray(` ${"PEER ID".padEnd(20)} ${"ADDRESS".padEnd(22)} ${"STATUS".padEnd(10)} ${"AGENTS".padEnd(8)} LAST SEEN`)),console.log(o.gray(` ${"\u2500".repeat(20)} ${"\u2500".repeat(22)} ${"\u2500".repeat(10)} ${"\u2500".repeat(8)} ${"\u2500".repeat(20)}`));for(let e of n){let t=e.revoked?o.red("revoked"):o.green("trusted"),g=(e.agents||[]).length.toString(),i=e.lastSeen?p(e.lastSeen):o.gray("never");if(console.log(` ${o.white(e.id.padEnd(20))} ${e.address.padEnd(22)} ${t.padEnd(10)} ${g.padEnd(8)} ${i}`),e.agents&&e.agents.length>0)for(let l of e.agents){let d=l.status==="awake"?o.green("awake"):o.yellow("asleep");console.log(o.gray(` \u2514 ${l.id} [${d}]`));}}console.log();}async function m(r){if(g(r))console.log(o.green(`\u2713 Revoked peer ${o.bold(r)}`)),console.log(o.gray(" Peer will be disconnected and cannot reconnect until re-paired."));else {console.log(o.red(`Peer "${r}" not found.`));let e=c();if(e.length>0){console.log(o.gray(`
5
5
  Available peers:`));for(let t of e)console.log(o.gray(` ${t.id} (${t.address})`));}}}async function $(r){let n=c();if(n.length===0){console.log(o.yellow("No peers to forget."));return}if(!r.force){console.log(o.yellow(`This will remove all ${n.length} trusted peer(s). Use --force to confirm.`));return}let e=h();console.log(o.green(`\u2713 Forgot ${e} peer${e!==1?"s":""}`)),console.log(o.gray(" All peer trust records deleted. Re-pairing required for remote connections."));}function p(r){let n=Date.now()-new Date(r).getTime(),e=Math.floor(n/1e3);return e<60?"just now":e<3600?`${Math.floor(e/60)}m ago`:e<86400?`${Math.floor(e/3600)}h ago`:`${Math.floor(e/86400)}d ago`}export{y as symphonyPeersCommand,$ as symphonyPeersForgetCommand,m as symphonyPeersRevokeCommand};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import'./chunk-XHJ27CER.js';import*as d from'fs';import*as h from'path';import n from'chalk';import*as w from'js-yaml';function j(o){return h.join(o,".paradigm","personas")}function b(o){let i=j(o);return d.existsSync(i)?d.readdirSync(i).filter(s=>s.endsWith(".persona")).sort().map(s=>{try{let e=d.readFileSync(h.join(i,s),"utf8");return w.load(e)}catch{return null}}).filter(s=>s!==null&&!!s.id):[]}function m(o,i){let s=h.join(j(o),`${i}.persona`);if(!d.existsSync(s))return null;try{return w.load(d.readFileSync(s,"utf8"))}catch{return null}}function R(o){let i=h.join(j(o),"index.yaml");if(!d.existsSync(i))return null;try{return w.load(d.readFileSync(i,"utf8"))}catch{return null}}async function k(o){let i=process.cwd(),s=b(i);if(s.length===0){console.log(n.yellow(`
2
+ import'./chunk-5TAVYPOV.js';import*as d from'fs';import*as h from'path';import n from'chalk';import*as w from'js-yaml';function j(o){return h.join(o,".paradigm","personas")}function b(o){let i=j(o);return d.existsSync(i)?d.readdirSync(i).filter(s=>s.endsWith(".persona")).sort().map(s=>{try{let e=d.readFileSync(h.join(i,s),"utf8");return w.load(e)}catch{return null}}).filter(s=>s!==null&&!!s.id):[]}function m(o,i){let s=h.join(j(o),`${i}.persona`);if(!d.existsSync(s))return null;try{return w.load(d.readFileSync(s,"utf8"))}catch{return null}}function R(o){let i=h.join(j(o),"index.yaml");if(!d.existsSync(i))return null;try{return w.load(d.readFileSync(i,"utf8"))}catch{return null}}async function k(o){let i=process.cwd(),s=b(i);if(s.length===0){console.log(n.yellow(`
3
3
  No personas found. Create one with paradigm_persona_create.
4
4
  `));return}if(o.tag&&(s=s.filter(e=>e.tags?.includes(o.tag))),o.trigger&&(s=s.filter(e=>e.trigger.type===o.trigger)),o.gate&&(s=s.filter(e=>e.journey.some(l=>l.gates.includes(o.gate)))),o.json){console.log(JSON.stringify(s.map(e=>({id:e.id,name:e.name,trigger:e.trigger.type,steps:e.journey.length,tags:e.tags||[],gates:[...new Set(e.journey.flatMap(l=>l.gates))]})),null,2));return}console.log(n.blue(`
5
5
  Personas (${s.length})
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import'./chunk-XHJ27CER.js';import i from'chalk';import*as o from'fs';import*as p from'path';import*as d from'js-yaml';var S={"add-feature":{gates:{specify:"manual",plan:"manual",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Standard feature addition with manual spec/plan review"},"bug-fix":{gates:{specify:"auto",plan:"auto",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Quick bug fix with automated gates except validation"},"security-change":{gates:{specify:"manual",plan:"manual",task:"manual",implement:"manual",validate:"manual"},description:"Security-sensitive change with all-manual gates"},refactor:{gates:{specify:"auto",plan:"manual",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Code refactoring with manual plan review"}},c=["specify","plan","task","implement","validate"],g=".paradigm/pipeline";function y(n){return n.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function u(n,t){let e=y(t),a=p.join(n,g,`${e}.yaml`);return o.existsSync(a)?d.load(o.readFileSync(a,"utf8")):null}function m(n,t){let e=y(t.feature),a=p.join(n,g);o.existsSync(a)||o.mkdirSync(a,{recursive:true});let s=p.join(a,`${e}.yaml`);return o.writeFileSync(s,d.dump(t,{lineWidth:120}),"utf8"),s}function P(n){let t=p.join(n,g);return o.existsSync(t)?o.readdirSync(t).filter(e=>e.endsWith(".yaml")&&!e.startsWith("completed")).map(e=>{try{return d.load(o.readFileSync(p.join(t,e),"utf8"))}catch{return null}}).filter(Boolean):[]}function x(n,t,e){let a={specify:{status:"pending"},plan:{status:"pending"},task:{status:"pending"},implement:{status:"pending"},validate:{status:"pending"}};return a.specify.status="in-progress",{version:"1.0",feature:y(n),created:new Date().toISOString(),current_stage:"specify",gate_config:t,template:e,stages:a}}function h(n){let t=c.indexOf(n);return t<c.length-1?c[t+1]:null}function v(n,t){let e=y(t.feature),a=p.join(n,g,"completed");o.existsSync(a)||o.mkdirSync(a,{recursive:true});let s=p.join(a,`${e}.yaml`);o.writeFileSync(s,d.dump(t,{lineWidth:120}),"utf8");let r=p.join(n,g,`${e}.yaml`);o.existsSync(r)&&o.unlinkSync(r);}async function j(n,t){let e=process.cwd(),a=t.template||"add-feature",s;if(t.gates){let l=t.gates.split(",");l.length!==5&&(console.error(i.red("--gates requires 5 comma-separated modes: specify,plan,task,implement,validate")),process.exit(1)),s={specify:l[0],plan:l[1],task:l[2],implement:l[3],validate:l[4]};}else {let l=S[a];l||(console.error(i.red(`Unknown template: ${a}. Available: ${Object.keys(S).join(", ")}`)),process.exit(1)),s=l.gates;}let r=x(n,s,a),f=m(e,r);console.log(i.green(`Pipeline created: ${r.feature}`)),console.log(i.gray(`Template: ${a}`)),console.log(i.gray(`Gates: ${c.map(l=>`${l}=${s[l]}`).join(", ")}`)),console.log(i.gray(`File: ${f}`)),console.log(i.cyan(`
2
+ import'./chunk-5TAVYPOV.js';import i from'chalk';import*as o from'fs';import*as p from'path';import*as d from'js-yaml';var S={"add-feature":{gates:{specify:"manual",plan:"manual",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Standard feature addition with manual spec/plan review"},"bug-fix":{gates:{specify:"auto",plan:"auto",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Quick bug fix with automated gates except validation"},"security-change":{gates:{specify:"manual",plan:"manual",task:"manual",implement:"manual",validate:"manual"},description:"Security-sensitive change with all-manual gates"},refactor:{gates:{specify:"auto",plan:"manual",task:"auto",implement:"sentinel",validate:"sentinel"},description:"Code refactoring with manual plan review"}},c=["specify","plan","task","implement","validate"],g=".paradigm/pipeline";function y(n){return n.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function u(n,t){let e=y(t),a=p.join(n,g,`${e}.yaml`);return o.existsSync(a)?d.load(o.readFileSync(a,"utf8")):null}function m(n,t){let e=y(t.feature),a=p.join(n,g);o.existsSync(a)||o.mkdirSync(a,{recursive:true});let s=p.join(a,`${e}.yaml`);return o.writeFileSync(s,d.dump(t,{lineWidth:120}),"utf8"),s}function P(n){let t=p.join(n,g);return o.existsSync(t)?o.readdirSync(t).filter(e=>e.endsWith(".yaml")&&!e.startsWith("completed")).map(e=>{try{return d.load(o.readFileSync(p.join(t,e),"utf8"))}catch{return null}}).filter(Boolean):[]}function x(n,t,e){let a={specify:{status:"pending"},plan:{status:"pending"},task:{status:"pending"},implement:{status:"pending"},validate:{status:"pending"}};return a.specify.status="in-progress",{version:"1.0",feature:y(n),created:new Date().toISOString(),current_stage:"specify",gate_config:t,template:e,stages:a}}function h(n){let t=c.indexOf(n);return t<c.length-1?c[t+1]:null}function v(n,t){let e=y(t.feature),a=p.join(n,g,"completed");o.existsSync(a)||o.mkdirSync(a,{recursive:true});let s=p.join(a,`${e}.yaml`);o.writeFileSync(s,d.dump(t,{lineWidth:120}),"utf8");let r=p.join(n,g,`${e}.yaml`);o.existsSync(r)&&o.unlinkSync(r);}async function j(n,t){let e=process.cwd(),a=t.template||"add-feature",s;if(t.gates){let l=t.gates.split(",");l.length!==5&&(console.error(i.red("--gates requires 5 comma-separated modes: specify,plan,task,implement,validate")),process.exit(1)),s={specify:l[0],plan:l[1],task:l[2],implement:l[3],validate:l[4]};}else {let l=S[a];l||(console.error(i.red(`Unknown template: ${a}. Available: ${Object.keys(S).join(", ")}`)),process.exit(1)),s=l.gates;}let r=x(n,s,a),f=m(e,r);console.log(i.green(`Pipeline created: ${r.feature}`)),console.log(i.gray(`Template: ${a}`)),console.log(i.gray(`Gates: ${c.map(l=>`${l}=${s[l]}`).join(", ")}`)),console.log(i.gray(`File: ${f}`)),console.log(i.cyan(`
3
3
  Current stage: specify (in-progress)`));}async function E(n){let t=process.cwd();if(n){let e=u(t,n);e||(console.error(i.red(`Pipeline not found: ${n}`)),process.exit(1)),$(e);}else {let e=P(t);if(e.length===0){console.log(i.gray("No active pipelines"));return}for(let a of e)$(a),console.log();}}function $(n){console.log(i.bold(`Pipeline: ${n.feature}`)),console.log(i.gray(`Created: ${n.created}`)),n.template&&console.log(i.gray(`Template: ${n.template}`)),console.log();for(let t of c){let e=n.stages[t],a=n.gate_config[t],s=n.current_stage===t,r=e.status==="approved"?"+":e.status==="in-progress"?">":e.status==="blocked"?"x":".",f=e.status==="approved"?i.green:e.status==="in-progress"?i.cyan:e.status==="blocked"?i.red:i.gray;console.log(f(` ${r} ${t.padEnd(12)} [${a}] ${e.status}${s?" <- current":""}`)),e.artifact&&console.log(i.gray(` Artifact: ${e.artifact}`)),e.symbols_touched?.length&&console.log(i.gray(` Symbols: ${e.symbols_touched.join(", ")}`));}}async function M(n){let t=process.cwd(),e=u(t,n);e||(console.error(i.red(`Pipeline not found: ${n}`)),process.exit(1));let a=e.current_stage,s=e.gate_config[a],r=h(a);e.stages[a].status="approved",e.stages[a].approved_at=new Date().toISOString(),s==="auto"&&(e.stages[a].auto_passed_at=new Date().toISOString()),r?(e.current_stage=r,e.stages[r].status="in-progress",m(t,e),console.log(i.green(`Stage '${a}' approved. Advanced to '${r}'.`))):(m(t,e),v(t,e),console.log(i.green(`Pipeline '${e.feature}' completed and archived.`)));}async function D(n,t){let e=process.cwd(),a=u(e,n);a||(console.error(i.red(`Pipeline not found: ${n}`)),process.exit(1));let s=t.stage;c.includes(s)||(console.error(i.red(`Invalid stage: ${t.stage}`)),process.exit(1));let r=t.gate;["auto","manual","sentinel"].includes(r)||(console.error(i.red(`Invalid gate mode: ${t.gate}. Use: auto, manual, sentinel`)),process.exit(1));let f=a.gate_config[s];a.gate_config[s]=r,m(e,a),console.log(i.green(`Gate for '${s}' changed: ${f} -> ${r}`)),t.reason&&console.log(i.gray(`Reason: ${t.reason}`));}async function A(n){let t=process.cwd(),e=u(t,n);e||(console.error(i.red(`Pipeline not found: ${n}`)),process.exit(1)),v(t,e),console.log(i.yellow(`Pipeline '${e.feature}' aborted and archived.`));}async function T(){let n=process.cwd(),t=P(n);if(t.length===0){console.log(i.gray("No active pipelines."));return}console.log(i.bold(`Active Pipelines (${t.length}):
4
4
  `));for(let e of t){let a=c.filter(s=>e.stages[s].status==="approved").length;console.log(` ${i.cyan(e.feature)} -- stage ${a}/${c.length} (${e.current_stage})`);}}export{A as pipelineAbortCommand,M as pipelineAdvanceCommand,D as pipelineConfigureCommand,T as pipelineListCommand,j as pipelineStartCommand,E as pipelineStatusCommand};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a,b as b$1,c}from'./chunk-XMAV5AG6.js';import {a as a$1,b as b$2}from'./chunk-Y6KXTQBG.js';import'./chunk-XHJ27CER.js';import U,{Router}from'express';import*as ut from'http';import*as v from'path';import*as S from'fs';import {fileURLToPath}from'url';import A from'chalk';import {WebSocketServer,WebSocket}from'ws';import X from'simple-git';import*as W from'js-yaml';import*as H from'os';function dt(r){let n=["#58a6ff","#3fb950","#f85149","#d29922","#bc8cff","#f778ba","#79c0ff","#56d364"],o=0;for(let s=0;s<r.length;s++)o=(o<<5)-o+r.charCodeAt(s)|0;return n[Math.abs(o)%n.length]}var gt=0,E=class{agents=new Map;staleTimeout=120*1e3;join(n){let o=new Date().toISOString(),s={agentId:n,color:dt(n),connectedAt:o,lastActivity:o};return this.agents.set(n,s),s}touch(n){let o=this.agents.get(n);o&&(o.lastActivity=new Date().toISOString());}leave(n){this.agents.delete(n);}getAll(){return Array.from(this.agents.values())}pruneStale(){let n=Date.now(),o=[];for(let[s,t]of this.agents)n-new Date(t.lastActivity).getTime()>this.staleTimeout&&(this.agents.delete(s),o.push(s));return o}},M=class{state={section:"overview",selectedSymbol:null,theme:"dark",lastInteraction:Date.now()};highlights=[];annotations=[];muted=false;updateSection(n){this.state.section=n,this.state.lastInteraction=Date.now();}updateSelectedSymbol(n){this.state.selectedSymbol=n,this.state.lastInteraction=Date.now();}updateTheme(n){this.state.theme=n;}setMuted(n){this.muted=n;}isMuted(){return this.muted}isUserActive(n=5e3){return Date.now()-this.state.lastInteraction<n}getState(){return {...this.state,muted:this.muted}}addHighlight(n){this.highlights.push(n),n.duration>0&&setTimeout(()=>{this.highlights=this.highlights.filter(o=>o!==n);},n.duration);}addAnnotation(n){let o={...n,id:`ann-${++gt}`,createdAt:Date.now()};return this.annotations.push(o),o.duration>0&&setTimeout(()=>{this.annotations=this.annotations.filter(s=>s!==o);},o.duration),o}clearHighlights(){this.highlights=[];}clearAnnotations(){this.annotations=[];}clearAll(){this.highlights=[],this.annotations=[];}getHighlights(){return [...this.highlights]}getAnnotations(){return [...this.annotations]}};function Q(r){let n=new Set,o=new E,s=new M;function t(a){let c=JSON.stringify(a);for(let l of n)l.readyState===WebSocket.OPEN&&l.send(c);}return new WebSocketServer({server:r,path:"/ws"}).on("connection",a=>{n.add(a),a.on("message",c=>{try{let l=JSON.parse(c.toString());l.type==="user:navigate"?s.updateSection(l.section):l.type==="user:select"?s.updateSelectedSymbol(l.symbol??null):l.type==="user:theme"?s.updateTheme(l.theme):l.type==="user:mute"?(s.setMuted(l.muted),t({type:"agent:mute_changed",muted:l.muted})):l.type==="ping"&&a.send(JSON.stringify({type:"pong",timestamp:new Date().toISOString()}));}catch{}}),a.on("close",()=>{n.delete(a);}),a.on("error",()=>{n.delete(a);});}),setInterval(()=>{let a=o.pruneStale();for(let c of a)t({type:"agent:leave",agentId:c});},3e4),{broadcast:t,agentPresence:o,userState:s,clientCount:()=>n.size}}function V(r){let n=Router();return n.post("/",(o,s)=>{let{command:t,agentId:e,payload:a}=o.body;if(!t||!e){s.status(400).json({error:"Missing command or agentId"});return}switch(r.agentPresence.getAll().find(l=>l.agentId===e)||(r.agentPresence.join(e),r.broadcast({type:"agent:join",agent:r.agentPresence.getAll().find(l=>l.agentId===e)})),r.agentPresence.touch(e),t){case "navigate":{let{section:l,symbol:i,loreId:u}=a,m=r.userState.isUserActive();if(r.userState.isMuted()){s.json({navigated:false,reason:"Agent actions are muted by user"});return}r.broadcast({type:"agent:navigate",agentId:e,section:l,symbol:i,loreId:u,userActive:m}),l&&r.userState.updateSection(l),i&&r.userState.updateSelectedSymbol(i),s.json({navigated:true,section:l,symbol:i,userActive:m});return}case "highlight":{let{symbols:l,color:i,duration:u,pulse:m,label:d}=a;if(r.userState.isMuted()){s.json({highlighted:false,reason:"Agent actions are muted by user"});return}let f=l||[];r.userState.addHighlight({symbols:f,color:i||r.agentPresence.getAll().find(P=>P.agentId===e)?.color||"#58a6ff",duration:u||5e3,pulse:m??true,label:d,createdAt:Date.now()}),r.broadcast({type:"agent:highlight",agentId:e,symbols:f,color:i||"#58a6ff",duration:u||5e3,pulse:m??true,label:d}),s.json({highlighted:true,count:f.length});return}case "annotate":{let{type:l,message:i,symbol:u,severity:m,duration:d}=a;if(r.userState.isMuted()){s.json({annotated:false,reason:"Agent actions are muted by user"});return}let f=r.userState.addAnnotation({type:l||"toast",message:i||"",symbol:u,severity:m||"info",duration:d||6e3});r.broadcast({type:"agent:annotate",agentId:e,annotation:f}),s.json({annotated:true,id:f.id});return}case "observe":{let l=r.userState.getState(),i=r.agentPresence.getAll(),u=r.clientCount()>0;s.json({connected:u,users:r.clientCount(),agents:i,state:{section:l.section,selectedSymbol:l.selectedSymbol,theme:l.theme,muted:l.muted},highlights:r.userState.getHighlights(),annotations:r.userState.getAnnotations()});return}case "clear":{let{target:l}=a,i=l||"all";(i==="highlights"||i==="all")&&r.userState.clearHighlights(),(i==="annotations"||i==="all")&&r.userState.clearAnnotations(),r.broadcast({type:"agent:clear",agentId:e,target:i}),s.json({cleared:true,target:i});return}default:s.status(400).json({error:`Unknown command: ${t}`});return}}),n}function yt(r){try{return JSON.parse(S.readFileSync(r,"utf-8"))}catch{return null}}function O(r){try{return W.load(S.readFileSync(r,"utf-8"))}catch{return null}}function bt(r){let n=v.join(r,".paradigm","scan-index.json"),o=yt(n);if(!o?.symbols)return {total:0,byType:{}};let s={};for(let t of o.symbols){let e=t.category||"unknown";s[e]=(s[e]||0)+1;}return {total:o.symbols.length,byType:s}}function St(r){let n=v.join(r,".paradigm","lore","entries");if(!S.existsSync(n))return {total:0,thisWeek:0,lastEntry:null,calibrationScore:null,assessed:0};let o=S.readdirSync(n).filter(d=>d.endsWith(".yaml")||d.endsWith(".yml")),t=Date.now()-10080*60*1e3,e=null,a=0,c=0,l=0,i=0,u=0;for(let d of o)try{let p=O(v.join(n,d));if(!p)continue;let f=p.timestamp;if(f){let P=new Date(f).getTime();(!e||P>new Date(e).getTime())&&(e=f),P>=t&&a++;}p.assessment&&(c++,typeof p.confidence=="number"&&typeof p.assessment_delta=="number"&&(l+=p.confidence,i+=Math.abs(p.assessment_delta),u++));}catch{}let m=u>0?Math.max(0,1-i/u):null;return {total:o.length,thisWeek:a,lastEntry:e,calibrationScore:m,assessed:c}}function vt(r){let n=v.join(r,".paradigm","tasks");if(!S.existsSync(n))return {total:0,inProgress:0,completed:0};let o=S.readdirSync(n).filter(e=>e.endsWith(".yaml")||e.endsWith(".yml")),s=0,t=0;for(let e of o)try{let a=O(v.join(n,e));if(!a)continue;let c=a.status;c==="in-progress"||c==="in_progress"?s++:(c==="completed"||c==="done")&&t++;}catch{}return {total:o.length,inProgress:s,completed:t}}function Rt(r){let n=["src","lib","packages"],o=0,s=0;for(let t of n){let e=v.join(r,t);S.existsSync(e)&&tt(e,{},a=>{o+=a.withPurpose,s+=a.total;});}return S.existsSync(v.join(r,".purpose"))&&(o++,s++),s===0?1:o/s}function tt(r,n,o){let s={withPurpose:0,total:0};try{let t=S.readdirSync(r,{withFileTypes:!0});t.some(a=>a.isFile()&&/\.(ts|tsx|js|jsx|rs|py|go|swift)$/.test(a.name))&&(s.total++,t.some(a=>a.isFile()&&a.name===".purpose")&&s.withPurpose++);for(let a of t)a.isDirectory()&&!a.name.startsWith(".")&&a.name!=="node_modules"&&a.name!=="dist"&&tt(v.join(r,a.name),s,c=>{s.withPurpose+=c.withPurpose,s.total+=c.total;});}catch{}o(s);}function jt(r){let n=v.join(r,"portal.yaml");if(!S.existsSync(n))return 1;let o=O(n);return o?.routes?Object.keys(o.routes).length>0?1:.5:1}function wt(r){let n=v.join(r,".paradigm","aspect-graph.db");return S.existsSync(n),1}function At(r){let n=v.join(r,".paradigm","config.yaml"),o=O(n);return {name:o?.project||v.basename(r),discipline:o?.discipline||"general"}}async function Pt(r,n){try{return (await X(r).log({maxCount:n})).all.map(t=>({timestamp:t.date,type:"commit",summary:t.message.split(`
2
+ import {a,b as b$1,c}from'./chunk-XMAV5AG6.js';import {a as a$1,b as b$2}from'./chunk-Y6KXTQBG.js';import'./chunk-5TAVYPOV.js';import U,{Router}from'express';import*as ut from'http';import*as v from'path';import*as S from'fs';import {fileURLToPath}from'url';import A from'chalk';import {WebSocketServer,WebSocket}from'ws';import X from'simple-git';import*as W from'js-yaml';import*as H from'os';function dt(r){let n=["#58a6ff","#3fb950","#f85149","#d29922","#bc8cff","#f778ba","#79c0ff","#56d364"],o=0;for(let s=0;s<r.length;s++)o=(o<<5)-o+r.charCodeAt(s)|0;return n[Math.abs(o)%n.length]}var gt=0,E=class{agents=new Map;staleTimeout=120*1e3;join(n){let o=new Date().toISOString(),s={agentId:n,color:dt(n),connectedAt:o,lastActivity:o};return this.agents.set(n,s),s}touch(n){let o=this.agents.get(n);o&&(o.lastActivity=new Date().toISOString());}leave(n){this.agents.delete(n);}getAll(){return Array.from(this.agents.values())}pruneStale(){let n=Date.now(),o=[];for(let[s,t]of this.agents)n-new Date(t.lastActivity).getTime()>this.staleTimeout&&(this.agents.delete(s),o.push(s));return o}},M=class{state={section:"overview",selectedSymbol:null,theme:"dark",lastInteraction:Date.now()};highlights=[];annotations=[];muted=false;updateSection(n){this.state.section=n,this.state.lastInteraction=Date.now();}updateSelectedSymbol(n){this.state.selectedSymbol=n,this.state.lastInteraction=Date.now();}updateTheme(n){this.state.theme=n;}setMuted(n){this.muted=n;}isMuted(){return this.muted}isUserActive(n=5e3){return Date.now()-this.state.lastInteraction<n}getState(){return {...this.state,muted:this.muted}}addHighlight(n){this.highlights.push(n),n.duration>0&&setTimeout(()=>{this.highlights=this.highlights.filter(o=>o!==n);},n.duration);}addAnnotation(n){let o={...n,id:`ann-${++gt}`,createdAt:Date.now()};return this.annotations.push(o),o.duration>0&&setTimeout(()=>{this.annotations=this.annotations.filter(s=>s!==o);},o.duration),o}clearHighlights(){this.highlights=[];}clearAnnotations(){this.annotations=[];}clearAll(){this.highlights=[],this.annotations=[];}getHighlights(){return [...this.highlights]}getAnnotations(){return [...this.annotations]}};function Q(r){let n=new Set,o=new E,s=new M;function t(a){let c=JSON.stringify(a);for(let l of n)l.readyState===WebSocket.OPEN&&l.send(c);}return new WebSocketServer({server:r,path:"/ws"}).on("connection",a=>{n.add(a),a.on("message",c=>{try{let l=JSON.parse(c.toString());l.type==="user:navigate"?s.updateSection(l.section):l.type==="user:select"?s.updateSelectedSymbol(l.symbol??null):l.type==="user:theme"?s.updateTheme(l.theme):l.type==="user:mute"?(s.setMuted(l.muted),t({type:"agent:mute_changed",muted:l.muted})):l.type==="ping"&&a.send(JSON.stringify({type:"pong",timestamp:new Date().toISOString()}));}catch{}}),a.on("close",()=>{n.delete(a);}),a.on("error",()=>{n.delete(a);});}),setInterval(()=>{let a=o.pruneStale();for(let c of a)t({type:"agent:leave",agentId:c});},3e4),{broadcast:t,agentPresence:o,userState:s,clientCount:()=>n.size}}function V(r){let n=Router();return n.post("/",(o,s)=>{let{command:t,agentId:e,payload:a}=o.body;if(!t||!e){s.status(400).json({error:"Missing command or agentId"});return}switch(r.agentPresence.getAll().find(l=>l.agentId===e)||(r.agentPresence.join(e),r.broadcast({type:"agent:join",agent:r.agentPresence.getAll().find(l=>l.agentId===e)})),r.agentPresence.touch(e),t){case "navigate":{let{section:l,symbol:i,loreId:u}=a,m=r.userState.isUserActive();if(r.userState.isMuted()){s.json({navigated:false,reason:"Agent actions are muted by user"});return}r.broadcast({type:"agent:navigate",agentId:e,section:l,symbol:i,loreId:u,userActive:m}),l&&r.userState.updateSection(l),i&&r.userState.updateSelectedSymbol(i),s.json({navigated:true,section:l,symbol:i,userActive:m});return}case "highlight":{let{symbols:l,color:i,duration:u,pulse:m,label:d}=a;if(r.userState.isMuted()){s.json({highlighted:false,reason:"Agent actions are muted by user"});return}let f=l||[];r.userState.addHighlight({symbols:f,color:i||r.agentPresence.getAll().find(P=>P.agentId===e)?.color||"#58a6ff",duration:u||5e3,pulse:m??true,label:d,createdAt:Date.now()}),r.broadcast({type:"agent:highlight",agentId:e,symbols:f,color:i||"#58a6ff",duration:u||5e3,pulse:m??true,label:d}),s.json({highlighted:true,count:f.length});return}case "annotate":{let{type:l,message:i,symbol:u,severity:m,duration:d}=a;if(r.userState.isMuted()){s.json({annotated:false,reason:"Agent actions are muted by user"});return}let f=r.userState.addAnnotation({type:l||"toast",message:i||"",symbol:u,severity:m||"info",duration:d||6e3});r.broadcast({type:"agent:annotate",agentId:e,annotation:f}),s.json({annotated:true,id:f.id});return}case "observe":{let l=r.userState.getState(),i=r.agentPresence.getAll(),u=r.clientCount()>0;s.json({connected:u,users:r.clientCount(),agents:i,state:{section:l.section,selectedSymbol:l.selectedSymbol,theme:l.theme,muted:l.muted},highlights:r.userState.getHighlights(),annotations:r.userState.getAnnotations()});return}case "clear":{let{target:l}=a,i=l||"all";(i==="highlights"||i==="all")&&r.userState.clearHighlights(),(i==="annotations"||i==="all")&&r.userState.clearAnnotations(),r.broadcast({type:"agent:clear",agentId:e,target:i}),s.json({cleared:true,target:i});return}default:s.status(400).json({error:`Unknown command: ${t}`});return}}),n}function yt(r){try{return JSON.parse(S.readFileSync(r,"utf-8"))}catch{return null}}function O(r){try{return W.load(S.readFileSync(r,"utf-8"))}catch{return null}}function bt(r){let n=v.join(r,".paradigm","scan-index.json"),o=yt(n);if(!o?.symbols)return {total:0,byType:{}};let s={};for(let t of o.symbols){let e=t.category||"unknown";s[e]=(s[e]||0)+1;}return {total:o.symbols.length,byType:s}}function St(r){let n=v.join(r,".paradigm","lore","entries");if(!S.existsSync(n))return {total:0,thisWeek:0,lastEntry:null,calibrationScore:null,assessed:0};let o=S.readdirSync(n).filter(d=>d.endsWith(".yaml")||d.endsWith(".yml")),t=Date.now()-10080*60*1e3,e=null,a=0,c=0,l=0,i=0,u=0;for(let d of o)try{let p=O(v.join(n,d));if(!p)continue;let f=p.timestamp;if(f){let P=new Date(f).getTime();(!e||P>new Date(e).getTime())&&(e=f),P>=t&&a++;}p.assessment&&(c++,typeof p.confidence=="number"&&typeof p.assessment_delta=="number"&&(l+=p.confidence,i+=Math.abs(p.assessment_delta),u++));}catch{}let m=u>0?Math.max(0,1-i/u):null;return {total:o.length,thisWeek:a,lastEntry:e,calibrationScore:m,assessed:c}}function vt(r){let n=v.join(r,".paradigm","tasks");if(!S.existsSync(n))return {total:0,inProgress:0,completed:0};let o=S.readdirSync(n).filter(e=>e.endsWith(".yaml")||e.endsWith(".yml")),s=0,t=0;for(let e of o)try{let a=O(v.join(n,e));if(!a)continue;let c=a.status;c==="in-progress"||c==="in_progress"?s++:(c==="completed"||c==="done")&&t++;}catch{}return {total:o.length,inProgress:s,completed:t}}function Rt(r){let n=["src","lib","packages"],o=0,s=0;for(let t of n){let e=v.join(r,t);S.existsSync(e)&&tt(e,{},a=>{o+=a.withPurpose,s+=a.total;});}return S.existsSync(v.join(r,".purpose"))&&(o++,s++),s===0?1:o/s}function tt(r,n,o){let s={withPurpose:0,total:0};try{let t=S.readdirSync(r,{withFileTypes:!0});t.some(a=>a.isFile()&&/\.(ts|tsx|js|jsx|rs|py|go|swift)$/.test(a.name))&&(s.total++,t.some(a=>a.isFile()&&a.name===".purpose")&&s.withPurpose++);for(let a of t)a.isDirectory()&&!a.name.startsWith(".")&&a.name!=="node_modules"&&a.name!=="dist"&&tt(v.join(r,a.name),s,c=>{s.withPurpose+=c.withPurpose,s.total+=c.total;});}catch{}o(s);}function jt(r){let n=v.join(r,"portal.yaml");if(!S.existsSync(n))return 1;let o=O(n);return o?.routes?Object.keys(o.routes).length>0?1:.5:1}function wt(r){let n=v.join(r,".paradigm","aspect-graph.db");return S.existsSync(n),1}function At(r){let n=v.join(r,".paradigm","config.yaml"),o=O(n);return {name:o?.project||v.basename(r),discipline:o?.discipline||"general"}}async function Pt(r,n){try{return (await X(r).log({maxCount:n})).all.map(t=>({timestamp:t.date,type:"commit",summary:t.message.split(`
3
3
  `)[0],symbol:kt(t.message),link:t.hash.substring(0,7)}))}catch{return []}}function kt(r){let n=r.match(/[#$^!~][\w-]+/);return n?n[0]:void 0}function xt(r,n){let o=v.join(r,".paradigm","lore","entries");if(!S.existsSync(o))return [];let s=S.readdirSync(o).filter(e=>e.endsWith(".yaml")||e.endsWith(".yml")),t=[];for(let e of s)try{let a=O(v.join(o,e));if(!a)continue;t.push({timestamp:a.timestamp||"",type:"lore",summary:a.title||e,symbol:Array.isArray(a.symbols_touched)?a.symbols_touched[0]:void 0,link:a.id});}catch{}return t.sort((e,a)=>new Date(a.timestamp).getTime()-new Date(e.timestamp).getTime()).slice(0,n)}function et(r){return async(n,o)=>{try{let s=At(r),t=bt(r),e=St(r),a=vt(r),c=Rt(r),l=jt(r),i=wt(r),u="unknown";try{u=(await X(r).branch()).current;}catch{}let[m,d]=await Promise.all([Pt(r,20),Promise.resolve(xt(r,20))]),p=[...m,...d].sort((x,g)=>new Date(g.timestamp).getTime()-new Date(x.timestamp).getTime()).slice(0,20),f=e.lastEntry?Math.floor((Date.now()-new Date(e.lastEntry).getTime())/(1e3*60*60*24)):0,P={project:{name:s.name,branch:u,discipline:s.discipline},symbols:t,lore:{total:e.total,thisWeek:e.thisWeek,lastEntry:e.lastEntry},calibration:{score:e.calibrationScore,assessed:e.assessed},tasks:a,health:{purposeCoverage:c,aspectAnchors:i,gateCompliance:l,calibration:e.calibrationScore??1,loreFreshnessDays:f},recentActivity:p};o.json(P);}catch(s){o.status(500).json({error:"Failed to aggregate overview",detail:String(s)});}}}var qt=/[#$^!~][\w-]+/g;function It(r){let n=r.match(qt);return n?[...new Set(n)]:[]}function nt(r){let n=Router(),o=X(r);return n.get("/status",async(s,t)=>{try{let[e,a]=await Promise.all([o.status(),o.branch()]);t.json({branch:a.current,ahead:e.ahead,behind:e.behind,staged:e.staged,unstaged:e.modified.filter(c=>!e.staged.includes(c)),untracked:e.not_added});}catch(e){t.status(500).json({error:"Failed to get git status",detail:String(e)});}}),n.get("/branches",async(s,t)=>{try{let e=await o.branch(),a=Object.values(e.branches).map(c=>({name:c.name,current:c.current,commit:c.commit,label:c.label}));t.json({current:e.current,branches:a});}catch(e){t.status(500).json({error:"Failed to get branches",detail:String(e)});}}),n.get("/log",async(s,t)=>{try{let e=Math.min(parseInt(s.query.limit)||20,100),a=parseInt(s.query.offset)||0,c=await o.log({maxCount:e,"--skip":a}),l=c.all.map(i=>({hash:i.hash,shortHash:i.hash.substring(0,7),message:i.message,author:i.author_name,date:i.date,symbols:It(i.message)}));t.json({commits:l,total:c.total});}catch(e){t.status(500).json({error:"Failed to get git log",detail:String(e)});}}),n.get("/diff",async(s,t)=>{try{let e=s.query.path,a=s.query.staged==="true",c=[];a&&c.push("--cached"),e&&c.push("--",e);let l=await o.diff(c);t.json({diff:l});}catch(e){t.status(500).json({error:"Failed to get diff",detail:String(e)});}}),n.post("/stage",async(s,t)=>{try{let{paths:e}=s.body;if(!e?.length){t.status(400).json({error:"paths is required"});return}await o.add(e),t.json({staged:e});}catch(e){t.status(500).json({error:"Failed to stage files",detail:String(e)});}}),n.post("/unstage",async(s,t)=>{try{let{paths:e}=s.body;if(!e?.length){t.status(400).json({error:"paths is required"});return}await o.reset(["HEAD","--",...e]),t.json({unstaged:e});}catch(e){t.status(500).json({error:"Failed to unstage files",detail:String(e)});}}),n.post("/commit",async(s,t)=>{try{let{message:e}=s.body;if(!e?.trim()){t.status(400).json({error:"message is required"});return}let a=await o.commit(e);t.json({hash:a.commit,summary:a.summary});}catch(e){t.status(500).json({error:"Failed to commit",detail:String(e)});}}),n.post("/push",async(s,t)=>{try{let e=await o.push();t.json({pushed:!0,branch:e.branch,remoteMessages:e.remoteMessages});}catch(e){t.status(500).json({error:"Failed to push",detail:String(e)});}}),n}function N(r){if(!S.existsSync(r))return [];try{let o=S.readFileSync(r,"utf-8").split(`
4
4
  `).filter(t=>t.trim()),s=[];for(let t of o)try{s.push(JSON.parse(t));}catch{}return s}catch{return []}}function $t(r,n){let o=v.dirname(r);S.existsSync(o)||S.mkdirSync(o,{recursive:true});let s=n.map(t=>JSON.stringify(t)).join(`
5
5
  `)+`
@@ -21,5 +21,5 @@ import {a,b as b$1,c}from'./chunk-XMAV5AG6.js';import {a as a$1,b as b$2}from'./
21
21
  </div>
22
22
  </body>
23
23
  </html>
24
- `);}),n}async function Pe(r){let n=Gt(r),o=mt(r);b.component("platform-server").info("Starting Paradigm Platform",{port:r.port}),b.component("platform-server").info("Project directory",{path:r.projectDir}),b.component("platform-server").info("Sections",{enabled:Array.from(o).join(", ")});let s=ut.createServer(n),t=Q(s);if(n.use("/api/platform/agent-command",V(t)),n.use("/api/ambient",rt(r.projectDir,t)),n.use("/api/team",ot(r.projectDir)),o.has("sentinel"))try{let{createSentinelBridge:e}=await import('./sentinel-bridge-EZGFRVFH.js'),a=await e(r.projectDir,t.broadcast);a&&(n.use("/api/sentinel",a),b.component("platform-server").success("Sentinel routes mounted"));}catch{b.component("platform-server").warn("Sentinel not available");}if(o.has("symphony"))try{let{createSymphonyRouter:e}=await import('./symphony-VTHVTE57.js');n.use("/api/symphony",e(r.projectDir,t.broadcast)),b.component("platform-server").success("Symphony routes mounted");}catch{b.component("platform-server").warn("Symphony routes failed to mount");}if(o.has("docs"))try{let{createDocsRouter:e}=await import('./docs-6WOQILZS.js');n.use("/api/docs",e(r.projectDir)),b.component("platform-server").success("Docs routes mounted");}catch{b.component("platform-server").warn("Docs routes failed to mount");}if(o.has("university"))try{let{createUniversityRouter:e}=await import('./university-UMT7PAKE.js');n.use("/api/university",e(r.projectDir)),b.component("platform-server").success("University routes mounted");}catch{b.component("platform-server").warn("University routes failed to mount");}return new Promise((e,a)=>{s.listen(r.port,()=>{b.component("platform-server").success("Platform running",{url:`http://localhost:${r.port}`}),b.component("platform-ws").success("WebSocket ready",{url:`ws://localhost:${r.port}/ws`}),console.log(""),console.log(A.gray(" Sections:"));for(let c of o)console.log(A.gray(` ${A.cyan("\u25CF")} ${c}`));console.log(""),r.open&&import('open').then(c=>{c.default(`http://localhost:${r.port}`),b.component("platform-server").info("Opened browser");}).catch(()=>{b.component("platform-server").warn("Could not open browser automatically");}),e();}),s.on("error",c=>{c.code==="EADDRINUSE"?b.component("platform-server").error("Port already in use",{port:r.port}):b.component("platform-server").error("Server error",{error:c.message}),a(c);});})}
24
+ `);}),n}async function Pe(r){let n=Gt(r),o=mt(r);b.component("platform-server").info("Starting Paradigm Platform",{port:r.port}),b.component("platform-server").info("Project directory",{path:r.projectDir}),b.component("platform-server").info("Sections",{enabled:Array.from(o).join(", ")});let s=ut.createServer(n),t=Q(s);if(n.use("/api/platform/agent-command",V(t)),n.use("/api/ambient",rt(r.projectDir,t)),n.use("/api/team",ot(r.projectDir)),o.has("sentinel"))try{let{createSentinelBridge:e}=await import('./sentinel-bridge-VR357PKL.js'),a=await e(r.projectDir,t.broadcast);a&&(n.use("/api/sentinel",a),b.component("platform-server").success("Sentinel routes mounted"));}catch{b.component("platform-server").warn("Sentinel not available");}if(o.has("symphony"))try{let{createSymphonyRouter:e}=await import('./symphony-G6IENE4K.js');n.use("/api/symphony",e(r.projectDir,t.broadcast)),b.component("platform-server").success("Symphony routes mounted");}catch{b.component("platform-server").warn("Symphony routes failed to mount");}if(o.has("docs"))try{let{createDocsRouter:e}=await import('./docs-EDQ2STFK.js');n.use("/api/docs",e(r.projectDir)),b.component("platform-server").success("Docs routes mounted");}catch{b.component("platform-server").warn("Docs routes failed to mount");}if(o.has("university"))try{let{createUniversityRouter:e}=await import('./university-FJ7OCOA3.js');n.use("/api/university",e(r.projectDir)),b.component("platform-server").success("University routes mounted");}catch{b.component("platform-server").warn("University routes failed to mount");}return new Promise((e,a)=>{s.listen(r.port,()=>{b.component("platform-server").success("Platform running",{url:`http://localhost:${r.port}`}),b.component("platform-ws").success("WebSocket ready",{url:`ws://localhost:${r.port}/ws`}),console.log(""),console.log(A.gray(" Sections:"));for(let c of o)console.log(A.gray(` ${A.cyan("\u25CF")} ${c}`));console.log(""),r.open&&import('open').then(c=>{c.default(`http://localhost:${r.port}`),b.component("platform-server").info("Opened browser");}).catch(()=>{b.component("platform-server").warn("Could not open browser automatically");}),e();}),s.on("error",c=>{c.code==="EADDRINUSE"?b.component("platform-server").error("Port already in use",{port:r.port}):b.component("platform-server").error("Server error",{error:c.message}),a(c);});})}
25
25
  export{Gt as createPlatformApp,Pe as startPlatformServer};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export{a as getPluginUpdateNotice,c as runPluginUpdateCheck,b as schedulePluginUpdateCheck}from'./chunk-4UJ4NIEQ.js';import'./chunk-XHJ27CER.js';
2
+ export{a as getPluginUpdateNotice,c as runPluginUpdateCheck,b as schedulePluginUpdateCheck}from'./chunk-4UJ4NIEQ.js';import'./chunk-5TAVYPOV.js';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {d,e}from'./chunk-SHD27BQX.js';import'./chunk-XHJ27CER.js';import n from'chalk';async function c(l){let s=process.cwd(),e$1=await d(s);if(l.json)console.log(JSON.stringify({status:e$1.status,declaredButUnusedCount:e$1.declaredButUnused.length,usedButUndeclaredCount:e$1.usedButUndeclared.length,properlyDeclaredCount:e$1.properlyDeclared.length,declaredButUnused:e$1.declaredButUnused,usedButUndeclared:e$1.usedButUndeclared,properlyDeclared:e$1.properlyDeclared}));else {let o=e(e$1);e$1.status==="compliant"?console.log(n.green(`
2
+ import {d,e}from'./chunk-SHD27BQX.js';import'./chunk-5TAVYPOV.js';import n from'chalk';async function c(l){let s=process.cwd(),e$1=await d(s);if(l.json)console.log(JSON.stringify({status:e$1.status,declaredButUnusedCount:e$1.declaredButUnused.length,usedButUndeclaredCount:e$1.usedButUndeclared.length,properlyDeclaredCount:e$1.properlyDeclared.length,declaredButUnused:e$1.declaredButUnused,usedButUndeclared:e$1.usedButUndeclared,properlyDeclared:e$1.properlyDeclared}));else {let o=e(e$1);e$1.status==="compliant"?console.log(n.green(`
3
3
  ${o}
4
4
  `)):e$1.status==="warnings"?console.log(n.yellow(`
5
5
  ${o}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export{d as checkPortalCompliance,b as extractDeclaredGates,c as findGateReferences,e as formatComplianceReport,f as getComplianceSummary,a as loadPortalConfig}from'./chunk-SHD27BQX.js';import'./chunk-XHJ27CER.js';
2
+ export{d as checkPortalCompliance,b as extractDeclaredGates,c as findGateReferences,e as formatComplianceReport,f as getComplianceSummary,a as loadPortalConfig}from'./chunk-SHD27BQX.js';import'./chunk-5TAVYPOV.js';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a as a$1,c}from'./chunk-77WX6HGV.js';import {a,b}from'./chunk-4TXOVRWD.js';import'./chunk-6QKCUEEY.js';import'./chunk-WR6D3SC6.js';import {m}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {e as e$1}from'./chunk-JQKKVAAN.js';import'./chunk-XHJ27CER.js';import*as n from'fs';import*as e from'path';import s from'chalk';import I from'ora';async function T(i,o){let a$2=i?e.resolve(i):process.cwd(),m$1=e.basename(a$2),g=I(),f=e.join(a$2,".paradigm"),F=n.existsSync(f)&&n.statSync(f).isFile(),p;o.output?p=e.resolve(o.output):F?p=e.join(a$2,".paradigm-scan-index.json"):(p=e.join(a$2,".paradigm","scan-index.json"),n.existsSync(e.dirname(p))||n.mkdirSync(e.dirname(p),{recursive:true})),o.quiet||console.log(s.blue(`
2
+ import {a as a$1,c}from'./chunk-LBQBWIEX.js';import {a,b}from'./chunk-4TXOVRWD.js';import'./chunk-VCKKJDLP.js';import'./chunk-WR6D3SC6.js';import {m}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {e as e$1}from'./chunk-JQKKVAAN.js';import'./chunk-5TAVYPOV.js';import*as n from'fs';import*as e from'path';import s from'chalk';import I from'ora';async function T(i,o){let a$2=i?e.resolve(i):process.cwd(),m$1=e.basename(a$2),g=I(),f=e.join(a$2,".paradigm"),F=n.existsSync(f)&&n.statSync(f).isFile(),p;o.output?p=e.resolve(o.output):F?p=e.join(a$2,".paradigm-scan-index.json"):(p=e.join(a$2,".paradigm","scan-index.json"),n.existsSync(e.dirname(p))||n.mkdirSync(e.dirname(p),{recursive:true})),o.quiet||console.log(s.blue(`
3
3
  \u{1F52D} Generating Paradigm Scan Index
4
4
  `));let y,k=[e.join(a$2,".paradigm"),e.join(a$2,".paradigm","config.yaml")];for(let c of k)if(n.existsSync(c)&&n.statSync(c).isFile())try{let t=n.readFileSync(c,"utf8");y=e$1(t).scan;break}catch{}g.start("Aggregating symbols from purpose and gate files...");let r;try{r=await m(a$2);}catch(c){g.fail(s.red("Failed to aggregate symbols")),console.error(s.gray(c.message)),process.exit(1);}if(g.succeed(`Found ${r.symbols.length} symbols`),!o.quiet){let c={components:r.symbols.filter(t=>t.type==="component").length,flows:r.symbols.filter(t=>t.type==="flow").length,gates:r.symbols.filter(t=>t.type==="gate").length,signals:r.symbols.filter(t=>t.type==="signal").length,aspects:r.symbols.filter(t=>t.type==="aspect").length};console.log(s.gray(" Breakdown:"));for(let[t,u]of Object.entries(c))u>0&&console.log(s.gray(` ${t}: ${u}`));console.log();}g.start("Generating scan index...");let l=a({symbols:r.symbols,purposeFiles:r.purposeFiles,portalFiles:r.portalFiles},{projectName:m$1,visualTagMappings:y?.visualTagMappings,screenDefinitions:y?.screens});try{n.writeFileSync(p,b(l),"utf8"),g.succeed(s.green("Scan index generated"));}catch(c){g.fail(s.red("Failed to write scan index")),console.error(s.gray(c.message)),process.exit(1);}await a$1(a$2,r,{quiet:o.quiet});let d=await c(a$2,r.purposeFiles,{quiet:o.quiet});if(d&&Object.keys(d.flows).length>0){let c=e.join(a$2,".paradigm","flow-index.json");if(n.writeFileSync(c,JSON.stringify(d,null,2),"utf8"),!o.quiet){let t=Object.keys(d.symbolToFlows).length;g.succeed(s.green(`Flow index generated (${Object.keys(d.flows).length} flows, ${t} symbol mappings)`));}}return o.quiet||(console.log(s.gray(`
5
5
  Output: ${p}`)),console.log(s.gray(` Components: ${Object.keys(l.components).length}`)),console.log(s.gray(` Features: ${Object.keys(l.features).length}`)),console.log(s.gray(` Flows: ${Object.keys(l.flows).length}`)),console.log(s.gray(` State: ${Object.keys(l.state).length}`)),console.log(s.gray(` Gates: ${Object.keys(l.gates).length}`)),console.log(s.gray(` Signals: ${Object.keys(l.signals).length}`)),console.log(s.gray(` Aspects: ${Object.keys(l.aspects).length}`)),console.log(),console.log(s.blue('\u2728 Scan index ready for "paradigm scan" queries')),console.log(s.gray(` Attach an image and say "paradigm scan" to map UI to code
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export{b as ROSTER_SUGGESTIONS,a as detectProjectType}from'./chunk-GE3GQALR.js';import'./chunk-XHJ27CER.js';
2
+ export{b as ROSTER_SUGGESTIONS,a as detectProjectType}from'./chunk-GE3GQALR.js';import'./chunk-5TAVYPOV.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import {h,d,e,f as f$1,a,b,c as c$1}from'./chunk-WR6D3SC6.js';import'./chunk-XHJ27CER.js';import*as t from'fs';import*as c from'path';import*as w from'os';import {execSync}from'child_process';import C from'ora';var f=c.join(w.homedir(),".paradigm-cli"),x=["packages/paradigm/dist","packages/paradigm/lore-ui/dist","packages/paradigm-mcp/dist","packages/premise/core/dist","packages/portal/core/dist","packages/purpose/core/dist","packages/sentinel/dist"];function D(){let r=process.cwd();for(let o=0;o<5;o++){if(t.existsSync(c.join(r,"packages","paradigm","package.json"))&&t.existsSync(c.join(r,"packages","paradigm-mcp","package.json")))return r;let s=c.dirname(r);if(s===r)break;r=s;}return null}function $(r,o){let s=0,i=[];if(!t.existsSync(r))return i.push(`Source not found: ${r}`),{files:s,errors:i};t.mkdirSync(o,{recursive:true});let n=t.readdirSync(r,{withFileTypes:true});for(let l of n){let d=c.join(r,l.name),e=c.join(o,l.name);try{if(l.isDirectory()){let p=$(d,e);s+=p.files,i.push(...p.errors);}else t.copyFileSync(d,e),s++;}catch(p){i.push(`Failed to copy ${d}: ${p instanceof Error?p.message:String(p)}`);}}return {files:s,errors:i}}async function E(r){let o=C(),s=D();if(!s){r.json?h({error:"Not in paradigm source repo"}):(d("Not in the paradigm source repository."),e(`Run this command from the a-paradigm directory.
2
+ import {h,d,e,f as f$1,a,b,c as c$1}from'./chunk-WR6D3SC6.js';import'./chunk-5TAVYPOV.js';import*as t from'fs';import*as c from'path';import*as w from'os';import {execSync}from'child_process';import C from'ora';var f=c.join(w.homedir(),".paradigm-cli"),x=["packages/paradigm/dist","packages/paradigm/lore-ui/dist","packages/paradigm-mcp/dist","packages/premise/core/dist","packages/portal/core/dist","packages/purpose/core/dist","packages/sentinel/dist"];function D(){let r=process.cwd();for(let o=0;o<5;o++){if(t.existsSync(c.join(r,"packages","paradigm","package.json"))&&t.existsSync(c.join(r,"packages","paradigm-mcp","package.json")))return r;let s=c.dirname(r);if(s===r)break;r=s;}return null}function $(r,o){let s=0,i=[];if(!t.existsSync(r))return i.push(`Source not found: ${r}`),{files:s,errors:i};t.mkdirSync(o,{recursive:true});let n=t.readdirSync(r,{withFileTypes:true});for(let l of n){let d=c.join(r,l.name),e=c.join(o,l.name);try{if(l.isDirectory()){let p=$(d,e);s+=p.files,i.push(...p.errors);}else t.copyFileSync(d,e),s++;}catch(p){i.push(`Failed to copy ${d}: ${p instanceof Error?p.message:String(p)}`);}}return {files:s,errors:i}}async function E(r){let o=C(),s=D();if(!s){r.json?h({error:"Not in paradigm source repo"}):(d("Not in the paradigm source repository."),e(`Run this command from the a-paradigm directory.
3
3
  `));return}if(!t.existsSync(f)){if(!r.force){r.json?h({error:"Production directory not found",path:f}):(d(`Production directory not found: ${f}`),e("Paradigm CLI may not be globally installed."),e(`Install with: curl -fsSL https://a-company.org/install | bash
4
4
  `));return}t.mkdirSync(f,{recursive:true});}if(r.json||(f$1("\u{1F4E6} Promoting local build to production"),a(""),e(` Source: ${s}`),e(` Target: ${f}
5
5
  `)),!r.skipBuild){o.start("Building packages...");try{execSync("npm run build",{cwd:s,stdio:"pipe",timeout:12e4}),o.succeed("Build complete");}catch(e$1){o.fail("Build failed"),r.json?h({error:"Build failed",details:e$1 instanceof Error?e$1.message:String(e$1)}):(d(`${e$1 instanceof Error?e$1.message:e$1}`),e(`Fix build errors and try again, or use --skip-build.
6
- `));return}}o.start("Copying dist/ to production...");let i=0,n=[],l=[];for(let e of x){let p=c.join(s,e),b=c.join(f,e);if(!t.existsSync(p))continue;let{files:h,errors:y}=$(p,b);i+=h,n.push(...y),y.length===0&&h>0&&l.push(e);}n.length>0?o.warn(`Copied with ${n.length} error(s)`):o.succeed(`Copied ${i} files`),o.start("Switching MCP configs to PROD...");try{let{mcpUseProdCommand:e}=await import('./switch-HBGIFNF6.js');await e({json:!0}),o.succeed("MCP configs switched to PROD");}catch{o.info("MCP config switch skipped (no configs found)");}let d$1="unknown";try{d$1=execSync("paradigm --version",{encoding:"utf-8",timeout:5e3}).trim();}catch{}if(r.json)h({success:n.length===0,source:s,target:f,packages:l,totalFiles:i,errors:n,version:d$1});else {if(a(""),n.length===0)b(`Promotion complete!
6
+ `));return}}o.start("Copying dist/ to production...");let i=0,n=[],l=[];for(let e of x){let p=c.join(s,e),b=c.join(f,e);if(!t.existsSync(p))continue;let{files:h,errors:y}=$(p,b);i+=h,n.push(...y),y.length===0&&h>0&&l.push(e);}n.length>0?o.warn(`Copied with ${n.length} error(s)`):o.succeed(`Copied ${i} files`),o.start("Switching MCP configs to PROD...");try{let{mcpUseProdCommand:e}=await import('./switch-CTW4PDGI.js');await e({json:!0}),o.succeed("MCP configs switched to PROD");}catch{o.info("MCP config switch skipped (no configs found)");}let d$1="unknown";try{d$1=execSync("paradigm --version",{encoding:"utf-8",timeout:5e3}).trim();}catch{}if(r.json)h({success:n.length===0,source:s,target:f,packages:l,totalFiles:i,errors:n,version:d$1});else {if(a(""),n.length===0)b(`Promotion complete!
7
7
  `);else {c$1(`Promotion completed with ${n.length} error(s)
8
8
  `);for(let e of n.slice(0,5))d(` ${e}`);a("");}e(` Packages: ${l.length}`),e(` Files: ${i}`),e(` Version: ${d$1}`),a("");}}export{E as promoteCommand};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {c,e as e$1,b as b$1,d}from'./chunk-RN35IVA2.js';import'./chunk-XHJ27CER.js';import*as f from'path';import e from'chalk';async function b(t,r){let s=t?f.resolve(t):process.cwd();if(r.set){try{await c(r.set,s),r.json?console.log(JSON.stringify({success:!0,provider:r.set})):(console.log(e.green(`
2
+ import {c,e as e$1,b as b$1,d}from'./chunk-BV5PRPLB.js';import'./chunk-5TAVYPOV.js';import*as f from'path';import e from'chalk';async function b(t,r){let s=t?f.resolve(t):process.cwd();if(r.set){try{await c(r.set,s),r.json?console.log(JSON.stringify({success:!0,provider:r.set})):(console.log(e.green(`
3
3
  \u2713 Provider set to: ${r.set}
4
4
  `)),r.set==="auto"?console.log(e.gray(`Will auto-detect best available provider.
5
5
  `)):console.log(e.gray(`Will use ${r.set} if available, otherwise fall back.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {c,h}from'./chunk-D34YFK4M.js';import'./chunk-XHJ27CER.js';import o from'chalk';import*as $ from'readline';import {execSync}from'child_process';import*as w from'os';function S(){try{return execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim().toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").slice(0,20)||"unknown"}catch{try{return w.userInfo().username}catch{return "unknown"}}}function z(s,r){return new Promise(e=>s.question(r,e))}async function x(s){let r=process.cwd(),e=c(r,s);if(e||(console.error(o.red(`
2
+ import {c,h}from'./chunk-D34YFK4M.js';import'./chunk-5TAVYPOV.js';import o from'chalk';import*as $ from'readline';import {execSync}from'child_process';import*as w from'os';function S(){try{return execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim().toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").slice(0,20)||"unknown"}catch{try{return w.userInfo().username}catch{return "unknown"}}}function z(s,r){return new Promise(e=>s.question(r,e))}async function x(s){let r=process.cwd(),e=c(r,s);if(e||(console.error(o.red(`
3
3
  Quiz "${s}" not found
4
4
  `)),process.exit(1)),e.questions.length===0){console.log(o.yellow(`
5
5
  Quiz "${s}" has no questions.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {b,c}from'./chunk-7YTAA6XA.js';import'./chunk-XHJ27CER.js';import d from'chalk';async function f(e){let s=process.cwd(),n;e.confidence!=null&&(n=parseFloat(e.confidence),(isNaN(n)||n<0||n>1)&&(console.error(d.red(`
2
+ import {b,c}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import d from'chalk';async function f(e){let s=process.cwd(),n;e.confidence!=null&&(n=parseFloat(e.confidence),(isNaN(n)||n<0||n>1)&&(console.error(d.red(`
3
3
  Error: --confidence must be a number between 0.0 and 1.0
4
4
  `)),process.exit(1)));let i={id:"",type:e.type||"human-note",timestamp:new Date().toISOString(),duration_minutes:e.duration?parseInt(e.duration,10):void 0,author:e.author||b(),title:e.title||"Untitled",summary:e.summary||"",symbols_touched:e.symbols?e.symbols.split(",").map(r=>r.trim()):[],files_modified:e.filesModified?e.filesModified.split(",").map(r=>r.trim()):void 0,files_created:e.filesCreated?e.filesCreated.split(",").map(r=>r.trim()):void 0,commit:e.commit||void 0,learnings:e.learnings?e.learnings.split(",").map(r=>r.trim()):void 0,tags:e.tags?e.tags.split(",").map(r=>r.trim()):void 0,meta:e.meta?JSON.parse(e.meta):void 0,body:e.body||void 0,linked_lore:e.linkLore?e.linkLore.split(",").map(r=>r.trim()):void 0,linked_commits:e.linkCommits?e.linkCommits.split(",").map(r=>r.trim()):void 0,confidence:n};await c(s,i),console.log(d.green(`
5
5
  Lore entry recorded: ${i.id}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {c as c$1}from'./chunk-Z72SDTBJ.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as c from'fs';import*as u from'path';import*as v from'os';import e from'chalk';import*as k from'js-yaml';var S=process.env.NEVR_REGISTRY_URL||"https://nevr-api.onrender.com",x=u.join(v.homedir(),".paradigm","agents"),A=".paradigm/agents";async function O(g,p){let r=a.command("agent-search").start("Searching nevr.land registry",{query:g}),s=parseInt(p.limit||"10",10);try{let{RegistryClient:a}=await import('./dist-YUXXIXB3.js'),d=await new a({baseUrl:S}).search(g,{page:1}),o=d.agents.slice(0,s);if(!o||o.length===0){console.log(e.dim(`
2
+ import {c as c$1}from'./chunk-Z72SDTBJ.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as c from'fs';import*as u from'path';import*as v from'os';import e from'chalk';import*as k from'js-yaml';var S=process.env.NEVR_REGISTRY_URL||"https://nevr-api.onrender.com",x=u.join(v.homedir(),".paradigm","agents"),A=".paradigm/agents";async function O(g,p){let r=a.command("agent-search").start("Searching nevr.land registry",{query:g}),s=parseInt(p.limit||"10",10);try{let{RegistryClient:a}=await import('./dist-QBTQW4ZW.js'),d=await new a({baseUrl:S}).search(g,{page:1}),o=d.agents.slice(0,s);if(!o||o.length===0){console.log(e.dim(`
3
3
  No agents found.
4
4
  `)),r.success("No results");return}console.log(e.bold(`
5
5
  ${o.length} agent(s) found`)+e.dim(` (of ${d.total})
@@ -8,7 +8,7 @@ import {c as c$1}from'./chunk-Z72SDTBJ.js';import {a}from'./chunk-LKAT7IAK.js';i
8
8
  Search failed:`),a instanceof Error?a.message:a),console.log(""),r.error("Search failed");}}async function D(g,p){let r=a.command("agent-install").start("Installing agent from registry",{source:g}),s=g,a$1,f=s.lastIndexOf("@");f>0&&s[f-1]!=="/"&&(a$1=s.substring(f+1),s=s.substring(0,f));let d=s.indexOf("/");if(d===-1){console.error(e.red(`
9
9
  Invalid agent name. Use @scope/name format.
10
10
  `)),r.error("Invalid agent name format");return}let o=s.substring(0,d).replace(/^@/,""),n=s.substring(d+1);console.log(e.dim(`
11
- Installing ${o}/${n}${a$1?"@"+a$1:""}...`));try{let{RegistryClient:i}=await import('./dist-YUXXIXB3.js'),h=new i({baseUrl:S}),t=await h.getAgent(o,n);if(!t){console.error(e.red(`
11
+ Installing ${o}/${n}${a$1?"@"+a$1:""}...`));try{let{RegistryClient:i}=await import('./dist-QBTQW4ZW.js'),h=new i({baseUrl:S}),t=await h.getAgent(o,n);if(!t){console.error(e.red(`
12
12
  Agent @${o}/${n} not found.
13
13
  `)),r.error("Agent not found");return}let m=p.global?x:u.join(process.cwd(),A);c.existsSync(m)||c.mkdirSync(m,{recursive:!0});let b=!1;try{let y=await h.downloadPackage(o,n,a$1||"latest"),R=u.join(m,`${n}.nevr.tar.gz`);c.writeFileSync(R,y.buffer),b=!0,a.component("#agent-registry").info("Package downloaded",{agent:`${o}/${n}`,hash:y.hash.slice(0,12),size:y.buffer.length});}catch{a.component("#agent-registry").info("Package not available, creating metadata-only profile",{agent:`${o}/${n}`});}let $={id:n,nickname:t.nickname||t.displayName||n,role:t.description||"",description:t.description||"",version:a$1||t.latestVersion||"0.1.0",scope:`@${o}`,registry:S,distribution:t.distribution,installedAt:new Date().toISOString(),personality:{style:"deliberate",risk:"balanced",verbosity:"concise"},expertise:[],transferable:[],contexts:{},created:new Date().toISOString(),updated:new Date().toISOString()};t.brandColor&&($.brandColor=t.brandColor),t.tags?.length&&($.tags=t.tags);let w=u.join(m,`${n}.agent`);c.writeFileSync(w,k.dump($,{lineWidth:120,noRefs:!0,sortKeys:!1}),"utf-8");try{await c$1(process.cwd(),n,{adopted:new Date().toISOString(),source:"marketplace",defaultsAccepted:!0,version:a$1||t.latestVersion||"0.1.0"});}catch{a.component("#agent-registry").info("Adoption record skipped (no .paradigm dir)",{agent:n});}b?console.log(e.green(`
14
14
  \u2713 Installed @${o}/${n}`)):(console.log(e.green(`
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export{ka as getReindexToolsList,la as handleReindexTool,ma as rebuildStaticFiles}from'./chunk-FILLU77P.js';import'./chunk-M4UMM6DC.js';import'./chunk-ODVKPZZ4.js';import'./chunk-UPFCBVXY.js';import'./chunk-EK4ZRIFJ.js';import'./chunk-4SCKMGTB.js';import'./chunk-5TAVYPOV.js';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {f as f$1,d}from'./chunk-JIXHEBGK.js';import'./chunk-XHJ27CER.js';import*as g from'path';import o from'chalk';import f from'ora';async function h(i){let a=process.cwd(),p=g.resolve(a,i);console.log(o.blue(`
2
+ import {f as f$1,d}from'./chunk-JIXHEBGK.js';import'./chunk-5TAVYPOV.js';import*as g from'path';import o from'chalk';import f from'ora';async function h(i){let a=process.cwd(),p=g.resolve(a,i);console.log(o.blue(`
3
3
  \u{1F4D6} Remembering Purpose...
4
4
  `));let s=f("Aggregating purpose files...").start();try{let r=await f$1(p),e=d(r);if(s.succeed(`Found ${r.length} purpose file(s)`),console.log(o.white(`
5
5
  `+"\u2550".repeat(50))),e.description&&(console.log(o.white(`
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {d,h}from'./chunk-7YTAA6XA.js';import'./chunk-XHJ27CER.js';import r from'chalk';async function w(e){let c=process.cwd(),t=e.add,s=e.remove;!t&&!s&&(console.error(r.red(`
2
+ import {d,h}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import r from'chalk';async function w(e){let c=process.cwd(),t=e.add,s=e.remove;!t&&!s&&(console.error(r.red(`
3
3
  Must specify --add <tag> or --remove <tag>
4
4
  `)),process.exit(1));let n={};e.type&&(n.type=e.type),e.symbol&&(n.symbol=e.symbol),e.author&&(n.author=e.author),e.from&&(n.dateFrom=e.from),e.to&&(n.dateTo=e.to),e.tags&&(n.tags=e.tags.split(",").map(o=>o.trim()));let g=await d(c,n);if(g.length===0){console.log(r.yellow(`
5
5
  No matching entries found
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {n,m,o as o$1,t,r as r$1}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as a from'fs';import*as r from'path';import o from'chalk';import {execSync}from'child_process';import*as F from'js-yaml';var W=/[@#$%^!?&~][a-zA-Z][a-zA-Z0-9_-]*/g,_=[/\.(get|post|put|patch|delete)\s*\(\s*['"`]([^'"`]+)['"`]/gi,/export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)/gi];async function G(n$1={}){let i=process.cwd(),b=a$1.command("review").start("Running review pipeline",{cwd:i}),u=[],m$1=[];try{if(n$1.pr)u=execSync(`gh pr diff ${n$1.pr} --name-only`,{cwd:i,encoding:"utf8",timeout:15e3}).trim().split(`
2
+ import {n,m,o as o$1,t,r as r$1}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as a from'fs';import*as r from'path';import o from'chalk';import {execSync}from'child_process';import*as F from'js-yaml';var W=/[@#$%^!?&~][a-zA-Z][a-zA-Z0-9_-]*/g,_=[/\.(get|post|put|patch|delete)\s*\(\s*['"`]([^'"`]+)['"`]/gi,/export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)/gi];async function G(n$1={}){let i=process.cwd(),b=a$1.command("review").start("Running review pipeline",{cwd:i}),u=[],m$1=[];try{if(n$1.pr)u=execSync(`gh pr diff ${n$1.pr} --name-only`,{cwd:i,encoding:"utf8",timeout:15e3}).trim().split(`
3
3
  `).filter(Boolean);else {let e=execSync("git diff --cached --name-only",{cwd:i,encoding:"utf8",timeout:5e3}).trim(),t=execSync("git diff --name-only",{cwd:i,encoding:"utf8",timeout:5e3}).trim();u=[...new Set([...e.split(`
4
4
  `).filter(Boolean),...t.split(`
5
5
  `).filter(Boolean)])];}}catch(e){let t=e.message;n$1.json||a$1.command("review").error(`Failed to get changed files: ${t}`),b.error("Failed to get changed files"),n$1.ci&&process.exit(1);return}if(u.length===0){n$1.json?console.log(JSON.stringify({findings:[],summary:{total:0,blocking:0,improvements:0,notes:0}})):console.log(o.green(`
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {e}from'./chunk-7YTAA6XA.js';import'./chunk-XHJ27CER.js';import r from'chalk';async function d(s,e$1){let o=process.cwd(),t=parseInt(e$1.completeness||"3",10),a=parseInt(e$1.quality||"3",10);await e(o,s,{reviewer:e$1.reviewer||"unknown",completeness:t,quality:a,notes:e$1.notes,reviewed_at:new Date().toISOString()})?console.log(r.green(`
2
+ import {e}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import r from'chalk';async function d(s,e$1){let o=process.cwd(),t=parseInt(e$1.completeness||"3",10),a=parseInt(e$1.quality||"3",10);await e(o,s,{reviewer:e$1.reviewer||"unknown",completeness:t,quality:a,notes:e$1.notes,reviewed_at:new Date().toISOString()})?console.log(r.green(`
3
3
  \u2713 Review added to ${s}
4
4
  `)):(console.error(r.red(`
5
5
  Entry not found: ${s}