@a-company/paradigm 5.34.0 → 5.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accept-orchestration-MIRBLRUJ.js → accept-orchestration-36AP7HTX.js} +1 -1
- package/dist/{add-P76GEMGF.js → add-FGKNJS3F.js} +1 -1
- package/dist/agent-E7LDKJ4O.js +33 -0
- package/dist/{agent-loader-5255KNM7.js → agent-loader-2HXKVL6J.js} +1 -1
- package/dist/{agent-loader-A5FMBAFJ.js → agent-loader-XS6LIMUG.js} +1 -1
- package/dist/{agent-state-KSQ3S7OB.js → agent-state-L7LCPRC3.js} +1 -1
- package/dist/{agents-suggest-HYTFMQD3.js → agents-suggest-Y5D6AALG.js} +1 -1
- package/dist/{aggregate-W66DM3GA.js → aggregate-OZJRRAQR.js} +1 -1
- package/dist/ambient-4NSPAQDJ.js +35 -0
- package/dist/{assess-UFPYEJKP.js → assess-AMPVSWK7.js} +1 -1
- package/dist/{auto-RHJXOZFL.js → auto-A7VUHCUC.js} +1 -1
- package/dist/{beacon-5QVYV5DF.js → beacon-YBLUUTYY.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-FQ4YVOE4.js} +1 -1
- package/dist/{check-THVGY4R5.js → check-46QL3KMQ.js} +1 -1
- package/dist/{chunk-AGSUX2GJ.js → chunk-3OMJI5TT.js} +2 -2
- package/dist/chunk-3QMRDN65.js +29 -0
- package/dist/{chunk-QNZEG7IT.js → chunk-3XGNXXCT.js} +1 -1
- package/dist/{chunk-VG7FN2TU.js → chunk-4W5TBL3O.js} +1 -1
- package/dist/{chunk-UDUHSHO4.js → chunk-5YHR77AL.js} +1 -1
- package/dist/chunk-6PP2RPIZ.js +3 -0
- package/dist/{chunk-VCKKJDLP.js → chunk-6QKCUEEY.js} +1 -1
- package/dist/{chunk-JBDMCRPP.js → chunk-77WX6HGV.js} +1 -1
- package/dist/{chunk-A7KFOJ2F.js → chunk-7PB7AXQE.js} +1 -1
- package/dist/chunk-7SGNNVE5.js +3 -0
- package/dist/{chunk-WS2N27RX.js → chunk-7YTAA6XA.js} +1 -1
- package/dist/chunk-BCOPNVPY.js +11 -0
- package/dist/chunk-BRHQJLTG.js +2 -0
- package/dist/{chunk-W5IWDW4Y.js → chunk-DG3VCY43.js} +1 -1
- package/dist/{chunk-HMQ5BHP2.js → chunk-DOCDDDTD.js} +10 -10
- package/dist/chunk-DSYEGRQ2.js +3 -0
- package/dist/chunk-EMMMBAID.js +2 -0
- package/dist/chunk-F5BSUC2L.js +3 -0
- package/dist/chunk-GE3GQALR.js +2 -0
- package/dist/chunk-IW5K3RNR.js +8 -0
- package/dist/chunk-JIF7OSGH.js +8 -0
- package/dist/{chunk-HPAHK4AJ.js → chunk-JUOOVKK6.js} +1 -1
- package/dist/chunk-NFQLONFY.js +3 -0
- package/dist/chunk-OVDYPOHR.js +2 -0
- package/dist/{chunk-33LKBMVK.js → chunk-RLJ5K3J5.js} +1 -1
- package/dist/{chunk-HXGYVS2N.js → chunk-RN35IVA2.js} +1 -1
- package/dist/{chunk-ODVKPZZ4.js → chunk-W6WVJLHO.js} +1 -1
- package/dist/chunk-X54WXWCX.js +111 -0
- package/dist/chunk-XHJ27CER.js +2 -0
- package/dist/{chunk-32RBX5YV.js → chunk-XNB4TZTD.js} +1 -1
- package/dist/chunk-YG5G5GEQ.js +456 -0
- package/dist/chunk-Z72SDTBJ.js +3 -0
- package/dist/{claude-4LR3LJQZ.js → claude-OX54QSLC.js} +1 -1
- package/dist/{claude-cli-UP6HGH7C.js → claude-cli-FHLJQVJC.js} +1 -1
- package/dist/{claude-code-RLJ4GX77.js → claude-code-GVGU3A3B.js} +1 -1
- package/dist/{claude-code-teams-R37HJY3Y.js → claude-code-teams-ZRHPTGPP.js} +1 -1
- package/dist/{compliance-Q676YALK.js → compliance-PHSPVYK2.js} +3 -3
- package/dist/{compliance-health-JNP3P35P.js → compliance-health-HCZTJDN7.js} +1 -1
- package/dist/{conductor-Y5IXELTL.js → conductor-LYBMM66Z.js} +1 -1
- package/dist/{config-schema-GUQY2QN7.js → config-schema-URJW6UZH.js} +1 -1
- package/dist/{constellation-CG7C4WFE.js → constellation-PX3ZKMWQ.js} +1 -1
- package/dist/{context-audit-XRPT3OU2.js → context-audit-APFKELFT.js} +2 -2
- package/dist/{cost-IDNVMAEV.js → cost-B5SAHPOJ.js} +1 -1
- package/dist/{cost-PK4KIF7R.js → cost-MMWUDGZC.js} +1 -1
- package/dist/{cursor-cli-QKF7Z6M2.js → cursor-cli-Q2HLQ5TE.js} +1 -1
- package/dist/{cursorrules-U5O4G5T4.js → cursorrules-3BW6K6D5.js} +1 -1
- package/dist/{decision-loader-2XPZE4EZ.js → decision-loader-4KMQVAXZ.js} +1 -1
- package/dist/{delete-P5VULXR4.js → delete-7PQZUERZ.js} +1 -1
- package/dist/{diff-QHQWLM3L.js → diff-F2HUO2H3.js} +1 -1
- package/dist/{discipline-H7LDI6NT.js → discipline-ARFFIXQL.js} +1 -1
- package/dist/{dist-W3XCATBJ.js → dist-5IUWRFG6.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-KGRCLBJP-R5CCPPXN.js} +1 -1
- package/dist/{dist-3ZCH25SG.js → dist-MRZDZ5SX.js} +1 -1
- package/dist/{dist-VGFSP3XM.js → dist-OKM6BXTH.js} +1 -1
- package/dist/{dist-VXCZWVVJ.js → dist-VWC6FA46.js} +1 -1
- package/dist/dist-YUXXIXB3.js +3 -0
- package/dist/{docs-EDQ2STFK.js → docs-6WOQILZS.js} +1 -1
- package/dist/{docs-5BX2YWYK.js → docs-BI2DO7B2.js} +2 -2
- package/dist/doctor-JLTCBMS4.js +2 -0
- package/dist/{drift-ILZE5BFJ.js → drift-6QPDKKUO.js} +1 -1
- package/dist/{echo-UPTQUEDU.js → echo-3JJDKCNF.js} +1 -1
- package/dist/{edit-GUU3HBVW.js → edit-PLCGL5OV.js} +1 -1
- package/dist/{enforcement-BEGPQIUN.js → enforcement-5MHSQAXE.js} +1 -1
- package/dist/{enforcement-46XWPNSA.js → enforcement-IWABOHMY.js} +1 -1
- package/dist/{event-Y3VXC2RV.js → event-5J3GBWKT.js} +1 -1
- package/dist/{explain-files-3GPZUETV.js → explain-files-LPHTJL4N.js} +1 -1
- package/dist/{export-CV5KCTPS.js → export-NXUFTFPW.js} +1 -1
- package/dist/{flow-POQP27WA.js → flow-IT2IVXXT.js} +1 -1
- package/dist/{gap-narrator-NTXLUI7I.js → gap-narrator-DVXPWNFN.js} +1 -1
- package/dist/{global-C44FW4G2.js → global-J2VTYKCC.js} +1 -1
- package/dist/{graduate-3BBSC27A.js → graduate-N2HF4JT6.js} +1 -1
- package/dist/graph-VLMP6DW2.js +2 -0
- package/dist/{graph-server-COZR5C3Z.js → graph-server-TBHHBFOM.js} +1 -1
- package/dist/{habits-GICVMTJL.js → habits-JTMWGVPH.js} +3 -3
- package/dist/{history-UW454SDP.js → history-FHS7EC3Z.js} +1 -1
- package/dist/{hooks-BNWRGACA.js → hooks-BL6CXRVK.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/init-ZS7RAR7L.js +2 -0
- package/dist/{integrity-UYDOOJDP.js → integrity-UBMZCB77.js} +1 -1
- package/dist/{integrity-checker-DHGMZQDG.js → integrity-checker-VSR3ITBL.js} +1 -1
- package/dist/journal-loader-EELDB4P2.js +2 -0
- package/dist/{lint-IGKE6UPS.js → lint-KQQ2RMSJ.js} +1 -1
- package/dist/{list-5IUGP3ZB.js → list-37UCWCOQ.js} +1 -1
- package/dist/{list-YKIQNKGB.js → list-6WY4CFUR.js} +1 -1
- package/dist/lore-loader-CP5RUJ4A.js +2 -0
- package/dist/{lore-loader-XY5MZRR2.js → lore-loader-PBUDKXAJ.js} +1 -1
- package/dist/{lore-server-FC2GMDLT.js → lore-server-A3KKZLSY.js} +1 -1
- package/dist/{manual-RXSPSFLL.js → manual-HKI6OXB4.js} +1 -1
- package/dist/mcp.js +17 -449
- package/dist/{migrate-YQG2FG3J.js → migrate-W3KCXLDS.js} +2 -2
- package/dist/{migrate-assessments-GEI5WMI2.js → migrate-assessments-D2TOBJ5V.js} +1 -1
- package/dist/{model-discovery-HMB3YI4L.js → model-discovery-TWX4A4YD.js} +1 -1
- package/dist/{nomination-engine-W6QTQX2P.js → nomination-engine-A24774W4.js} +1 -1
- package/dist/{notebook-PE3JSYZI.js → notebook-LXJ2LHUA.js} +1 -1
- package/dist/notebook-loader-CF52PNZC.js +2 -0
- package/dist/{orchestrate-7CJWHLBA.js → orchestrate-WFCNV2II.js} +1 -1
- package/dist/{peers-P2KXU7ZK.js → peers-7TPZTKH7.js} +1 -1
- package/dist/{persona-STQWZH5P.js → persona-UGTCFEGT.js} +1 -1
- package/dist/{pipeline-MZUITRVN.js → pipeline-7PZ6ILWX.js} +1 -1
- package/dist/{platform-server-G6MJIAJS.js → platform-server-YIBX4YDJ.js} +2 -2
- package/dist/{plugin-update-checker-M7PW434O.js → plugin-update-checker-2EM4K45U.js} +1 -1
- package/dist/{portal-check-Z3OCQEQR.js → portal-check-YSDJRZUR.js} +1 -1
- package/dist/{portal-compliance-4MG5F2GI.js → portal-compliance-OBPK2IR5.js} +1 -1
- package/dist/{probe-5L5BQDGE.js → probe-WKXR3IN4.js} +1 -1
- package/dist/{project-type-AGO6VUKF.js → project-type-MRBJAKC7.js} +1 -1
- package/dist/{promote-NJQDZBZA.js → promote-VHBA56KW.js} +2 -2
- package/dist/{providers-TBPOE4DI.js → providers-RX7SBLHZ.js} +1 -1
- package/dist/{quiz-FE5UGAY2.js → quiz-3SQNPRJ3.js} +1 -1
- package/dist/{record-YXPB34MY.js → record-7QJPZZP7.js} +1 -1
- package/dist/registry-LR5QACRK.js +20 -0
- package/dist/reindex-F7EV3Z34.js +2 -0
- package/dist/{remember-MJRNTXYS.js → remember-SFGBTTEE.js} +1 -1
- package/dist/{retag-N5XF3KXP.js → retag-GFXUYP7S.js} +1 -1
- package/dist/{review-6UAH6V3R.js → review-6KKZWV3A.js} +1 -1
- package/dist/{review-77QI6VOC.js → review-GEBSYOZB.js} +1 -1
- package/dist/{ripple-ZGDITCGB.js → ripple-4F5ZCXS4.js} +1 -1
- package/dist/{roster-TA2GFDR7.js → roster-RI3UC2YI.js} +1 -1
- package/dist/scaffold-WA4L2K7J.js +18 -0
- package/dist/{scopes-commands-3V5G6NYV.js → scopes-commands-5FFIUDRC.js} +1 -1
- package/dist/{sentinel-HYAZ3CO5.js → sentinel-37ZEEWT7.js} +2 -2
- package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-EZGFRVFH.js} +1 -1
- package/dist/{serve-L52ZUTU6.js → serve-2BXDL35A.js} +2 -2
- package/dist/{serve-ZJ3EXVA5.js → serve-2LSTQFFQ.js} +2 -2
- package/dist/{serve-OY6XYL7F.js → serve-5JME5QEM.js} +2 -2
- package/dist/{server-4YNUIK4W.js → server-AIXFROYL.js} +1 -1
- package/dist/{server-2MNROHF6.js → server-XLHIYDTZ.js} +1 -1
- package/dist/session-tracker-VSFRNFRL.js +2 -0
- package/dist/{session-work-log-SLAPEP3M.js → session-work-log-6GKGUQ5C.js} +1 -1
- package/dist/{session-work-log-5UJTJJ22.js → session-work-log-UYMIWWOX.js} +1 -1
- package/dist/{setup-KPIMRZ4Q.js → setup-F2N4LUR7.js} +1 -1
- package/dist/{setup-3F5IK7MO.js → setup-ZM4JFV5D.js} +2 -2
- package/dist/{shift-IKTWYSEQ.js → shift-DDYVQJ75.js} +5 -5
- package/dist/{show-PJ5LFLIL.js → show-CZLVYLM5.js} +1 -1
- package/dist/{show-BOAVWZPZ.js → show-RFOIR2GQ.js} +1 -1
- package/dist/{snapshot-L2G56RPL.js → snapshot-6N564OUJ.js} +1 -1
- package/dist/{spawn-7TCAMD6H.js → spawn-HYARN3RL.js} +1 -1
- package/dist/{status-A37ECYNJ.js → status-CUG3PKGC.js} +1 -1
- package/dist/{status-77M3SDIF.js → status-WBJ6D7BD.js} +1 -1
- package/dist/{summary-ZJLQ6KHB.js → summary-2AM4QVPW.js} +1 -1
- package/dist/{sweep-HU74OPVW.js → sweep-WHDT7ENV.js} +1 -1
- package/dist/{switch-CTW4PDGI.js → switch-HBGIFNF6.js} +1 -1
- package/dist/{symphony-IS5TYPXY.js → symphony-CWKKMFAS.js} +25 -25
- package/dist/symphony-VTHVTE57.js +2 -0
- package/dist/symphony-loader-RYFZOQJS.js +2 -0
- package/dist/{symphony-peers-X5NGWXFP.js → symphony-peers-ISJPKX7W.js} +1 -1
- package/dist/{symphony-peers-U4KHMKGI.js → symphony-peers-LWBUQ3T4.js} +1 -1
- package/dist/symphony-relay-L3BY6RGM.js +3 -0
- package/dist/sync-WIFD7UCL.js +2 -0
- package/dist/{sync-llms-HL5PPW3M.js → sync-llms-MZ3RQWFX.js} +1 -1
- package/dist/{task-loader-NZFDTUQ5.js → task-loader-EU7JLTR3.js} +1 -1
- package/dist/team-C3PWO7XL.js +2 -0
- package/dist/{test-BQJMS4Y2.js → test-6MUL4EXS.js} +1 -1
- package/dist/{thread-HFXK65D4.js → thread-K6UHDIUW.js} +1 -1
- package/dist/{timeline-K3ZFKJ3R.js → timeline-S26CQWHT.js} +1 -1
- package/dist/tools-4WKLLDFU.js +2 -0
- package/dist/{triage-FCWOZASE.js → triage-YF6WYZY4.js} +1 -1
- package/dist/{tutorial-UC6YQMNN.js → tutorial-UEBX7Z2G.js} +1 -1
- package/dist/{university-FJ7OCOA3.js → university-UMT7PAKE.js} +1 -1
- package/dist/university-content/courses/para-201.json +5 -5
- package/dist/university-content/courses/para-301.json +10 -10
- package/dist/university-content/courses/para-401.json +3 -3
- package/dist/university-content/courses/para-501.json +5 -5
- package/dist/university-content/courses/para-601.json +1 -1
- package/dist/university-content/plsat/v2.0.json +7 -7
- package/dist/university-content/plsat/v3.0.json +9 -9
- package/dist/university-content/reference.json +4 -4
- package/dist/university-ui/assets/{index-DmiLQehB.js → index-CecQrfSn.js} +2 -2
- package/dist/university-ui/assets/{index-DmiLQehB.js.map → index-CecQrfSn.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/{upgrade-B4IOLZYK.js → upgrade-USW7YJEX.js} +1 -1
- package/dist/{validate-LSCDOLBO.js → validate-2PZTNYSS.js} +1 -1
- package/dist/{validate-VZXTJHGO.js → validate-KW3YFGTV.js} +1 -1
- package/dist/{validate-C6SMKGYD.js → validate-VZGBVTPM.js} +1 -1
- package/dist/{watch-LRM5XD46.js → watch-HL3ZOALL.js} +1 -1
- package/dist/{watch-PZCCUP6K.js → watch-KQU3S7KE.js} +1 -1
- package/dist/{wisdom-XZ3QKPNP.js → wisdom-UU7HOE3M.js} +1 -1
- package/dist/{work-log-loader-DL5GZ2BQ.js → work-log-loader-J27XSFCE.js} +1 -1
- package/dist/workspace-CE6LNXVI.js +2 -0
- package/package.json +5 -1
- package/templates/paradigm/specs/context-tracking.md +4 -4
- package/dist/agent-UUTYOFTH.js +0 -33
- package/dist/ambient-2JZTNXUL.js +0 -35
- package/dist/chunk-2Q7RGCJH.js +0 -3
- package/dist/chunk-5TAVYPOV.js +0 -2
- package/dist/chunk-73R63P7K.js +0 -2
- package/dist/chunk-C7ZCCKJT.js +0 -3
- package/dist/chunk-CUOEZAVL.js +0 -8
- package/dist/chunk-EAZ3EMOZ.js +0 -29
- package/dist/chunk-LKFBDUCV.js +0 -11
- package/dist/chunk-QGZRM6ZB.js +0 -2
- package/dist/chunk-S7K7UPXL.js +0 -3
- package/dist/chunk-TXBSTT64.js +0 -111
- package/dist/chunk-TZZNHUAR.js +0 -2
- package/dist/chunk-UHQLYIRI.js +0 -3
- package/dist/chunk-VZLGBGU3.js +0 -8
- package/dist/doctor-R4UGMR5N.js +0 -2
- package/dist/graph-CNDE5TAT.js +0 -2
- package/dist/init-24MAQJFM.js +0 -2
- package/dist/journal-loader-GLH7XFTK.js +0 -2
- package/dist/lore-loader-RVQI5GXL.js +0 -2
- package/dist/notebook-loader-CENTDDUJ.js +0 -2
- package/dist/reindex-2MRCAIZG.js +0 -2
- package/dist/session-tracker-WSTRV7UP.js +0 -2
- package/dist/symphony-43N4R6C2.js +0 -2
- package/dist/symphony-loader-XJT43FOS.js +0 -2
- package/dist/symphony-relay-CIMRXQHI.js +0 -3
- package/dist/sync-QRDSFETO.js +0 -2
- package/dist/team-WIJVWLII.js +0 -2
- package/dist/workspace-2ODL5WLY.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import o from'chalk';async function a(s,n){let t=s||process.cwd(),e=parseInt(n.port||"3840",10),i=n.open!==false;console.log(o.cyan(`
|
|
3
3
|
Starting Lore Timeline...
|
|
4
|
-
`));try{let{startLoreServer:r}=await import('./lore-server-
|
|
4
|
+
`));try{let{startLoreServer:r}=await import('./lore-server-A3KKZLSY.js');console.log(o.gray(`Project: ${t}`)),console.log(o.gray(`Port: ${e}`)),console.log(),await r({port:e,projectDir:t,open:i}),console.log(o.green(`
|
|
5
5
|
Lore Timeline is running at http://localhost:${e}`)),console.log(o.gray(`
|
|
6
6
|
Press Ctrl+C to stop
|
|
7
7
|
`)),await new Promise(()=>{});}catch(r){r.code==="EADDRINUSE"?(console.error(o.red(`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import o from'chalk';async function i(e){let n=process.cwd(),t=parseInt(e.port||"3850",10),s=e.open!==false,a=e.sections?e.sections.split(",").map(r=>r.trim()):void 0;console.log(o.cyan(`
|
|
3
3
|
Starting Paradigm Platform...
|
|
4
|
-
`));try{let{startPlatformServer:r}=await import('./platform-server-
|
|
4
|
+
`));try{let{startPlatformServer:r}=await import('./platform-server-YIBX4YDJ.js');await r({port:t,projectDir:n,open:s,sections:a}),console.log(o.green(` Platform running at ${o.bold(`http://localhost:${t}`)}`)),console.log(o.gray(` Press Ctrl+C to stop
|
|
5
5
|
`)),await new Promise(()=>{});}catch(r){r.code==="EADDRINUSE"?(console.error(o.red(`
|
|
6
6
|
Error: Port ${t} is already in use.`)),console.log(o.gray(` Try: paradigm serve --port ${t+1}
|
|
7
7
|
`))):console.error(o.red(`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import o from'chalk';import*as n from'path';import {fileURLToPath}from'url';var p=fileURLToPath(import.meta.url),i=n.dirname(p);async function g(d,t){let r=parseInt(t.port||"3839",10),s=t.open!==false;console.log(o.cyan(`
|
|
3
3
|
Opening the campus gates...
|
|
4
|
-
`));try{let{startServer:e}=await import('./server-
|
|
4
|
+
`));try{let{startServer:e}=await import('./server-XLHIYDTZ.js'),a=n.resolve(i,"university-content"),c=n.resolve(i,"university-ui");console.log(o.gray(`Port: ${r}`)),console.log(),await e({port:r,open:s,contentDir:a,uiDistPath:c,projectDir:process.cwd()}),console.log(o.green(`
|
|
5
5
|
Paradigm University is running at http://localhost:${r}`)),console.log(o.gray(`
|
|
6
6
|
Press Ctrl+C to stop
|
|
7
7
|
`)),await new Promise(()=>{});}catch(e){e.code==="ERR_MODULE_NOT_FOUND"||e.code==="MODULE_NOT_FOUND"?(console.error(o.red(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a,g as g$1,h,i}from'./chunk-NKYNHSA5.js';export{h as PARADIGM_SCHEMA,i as SYMPHONY_SCHEMA,a as SentinelStorage,g as loadServerConfig}from'./chunk-NKYNHSA5.js';import'./chunk-
|
|
2
|
+
import {a,g as g$1,h,i}from'./chunk-NKYNHSA5.js';export{h as PARADIGM_SCHEMA,i as SYMPHONY_SCHEMA,a as SentinelStorage,g as loadServerConfig}from'./chunk-NKYNHSA5.js';import'./chunk-XHJ27CER.js';import L,{Router}from'express';import*as D from'http';import*as p from'path';import*as g from'fs';import {fileURLToPath}from'url';import y from'chalk';import {WebSocketServer,WebSocket}from'ws';import z from'simple-git';import {v4}from'uuid';var K=process.env.SENTINEL_LOG_LEVEL||process.env.LOG_LEVEL||"info",M={debug:0,info:1,warn:2,error:3};function w(n){return M[n]>=M[K]}function S(n){if(!n)return "";let o=Object.entries(n).map(([s,t])=>`${s}=${typeof t=="string"?t:JSON.stringify(t)}`).join(" ");return y.gray(` ${o}`)}var f={component(n){let o=y.magenta(`#${n}`);return {debug:(s,t)=>{w("debug")&&console.log(`${y.gray("\u25CB")} ${o} ${s}${S(t)}`);},info:(s,t)=>{w("info")&&console.log(`${y.blue("\u2139")} ${o} ${s}${S(t)}`);},warn:(s,t)=>{w("warn")&&console.log(`${y.yellow("\u26A0")} ${o} ${s}${S(t)}`);},error:(s,t)=>{w("error")&&console.error(`${y.red("\u2716")} ${o} ${s}${S(t)}`);}}},flow(n){let o=y.yellow(`$${n}`);return {debug:(s,t)=>{w("debug")&&console.log(`${y.gray("\u25CB")} ${o} ${s}${S(t)}`);},info:(s,t)=>{w("info")&&console.log(`${y.blue("\u2139")} ${o} ${s}${S(t)}`);},warn:(s,t)=>{w("warn")&&console.log(`${y.yellow("\u26A0")} ${o} ${s}${S(t)}`);},error:(s,t)=>{w("error")&&console.error(`${y.red("\u2716")} ${o} ${s}${S(t)}`);}}}},N=new Set(["$lib","$env","$app","$service-worker","$virtual","$schema","$ref","$id","$type"]);async function Q(n){let o=p.join(n,".paradigm","config.yaml");if(!g.existsSync(o)){let s=p.join(n,"package.json");if(g.existsSync(s))try{return {name:JSON.parse(g.readFileSync(s,"utf-8")).name}}catch{}return {}}try{let s=g.readFileSync(o,"utf-8"),t={},e=s.match(/^name:\s*(.+)$/m);e&&(t.name=e[1].trim().replace(/^["']|["']$/g,""));let r=s.match(/^discipline:\s*(.+)$/m);r&&(t.discipline=r[1].trim());let a=s.match(/^version:\s*(.+)$/m);return a&&(t.version=a[1].trim()),t}catch(s){return f.component("config-loader").error("Failed to load Paradigm config",{error:String(s)}),{}}}async function X(n){try{let{aggregateFromDirectory:o}=await import('./dist-KGRCLBJP-R5CCPPXN.js');f.flow("load-symbols").info("Using premise-core aggregator",{path:n});let s=await o(n),t={};for(let e of s.symbols)t[e.type]=(t[e.type]||0)+1;if(f.flow("load-symbols").info("Aggregation complete",{total:s.symbols.length,...t,purposeFiles:s.purposeFiles.length,portalFiles:s.portalFiles.length}),s.errors.length>0)for(let e of s.errors)f.component("aggregator").warn("Aggregation error",{source:e.source,file:e.filePath,message:e.message});for(let e of s.purposeFiles)f.component("purpose-loader").info("Loaded .purpose file",{file:p.relative(n,e)});for(let e of s.portalFiles)f.component("gate-loader").info("Loaded portal.yaml",{file:p.relative(n,e)});return s.symbols}catch(o){return f.component("premise-core").warn("premise-core not available, using fallback scanner",{error:o instanceof Error?o.message:String(o)}),null}}async function F(n){f.flow("load-symbols").info("Loading symbols",{projectDir:n});let o=p.join(n,".paradigm","index.json");if(g.existsSync(o))try{f.component("index-loader").info("Found cached index",{path:o});let t=g.readFileSync(o,"utf-8"),e=JSON.parse(t),r=Array.isArray(e.entries)?e.entries:Array.isArray(e)?e:null;if(r)return f.flow("load-symbols").info("Loaded from cached index",{count:r.length}),r}catch(t){f.component("index-loader").error("Failed to load cached index",{error:String(t)});}return await X(n)||(f.flow("load-symbols").info("Using fallback scanner"),Z(n))}async function Z(n){let o=[],s=new Set,t=["src","lib","packages","apps","."];for(let r of t){let a=p.join(n,r);g.existsSync(a)&&await _(a,o,s,n);}let e=p.join(n,"portal.yaml");if(g.existsSync(e)){f.component("gate-loader").debug("Found portal.yaml",{path:"portal.yaml"});try{let r=g.readFileSync(e,"utf-8").match(/^gates:\s*\n((?: .+\n)*)/m);if(r){let a=r[1].matchAll(/^ ([a-z][a-z0-9-]*):/gm);for(let i of a){let c=i[1],l=`gate-${c}`;s.has(l)||(s.add(l),o.push({id:l,symbol:`^${c}`,type:"gate",source:"portal",filePath:"portal.yaml",data:{},references:[],referencedBy:[]}),f.component("gate-loader").debug("Extracted gate",{symbol:`^${c}`}));}}}catch(r){f.component("gate-loader").error("Failed to parse portal.yaml",{error:String(r)});}}return f.flow("load-symbols").info("Fallback scan complete",{count:o.length}),o}async function _(n,o,s,t){let e=["node_modules",".git","dist","build",".paradigm","coverage",".next",".svelte-kit"],r;try{r=g.readdirSync(n,{withFileTypes:!0});}catch{return}for(let a of r){let i=p.join(n,a.name);if(a.isDirectory())e.includes(a.name)||await _(i,o,s,t);else if(a.name===".purpose"){let c=p.relative(t,i);f.component("purpose-loader").debug("Scanning .purpose file",{path:c});try{let l=g.readFileSync(i,"utf-8"),d=ee(l,i,t);for(let u of d)s.has(u.id)||(s.add(u.id),o.push(u),f.component("purpose-loader").debug("Extracted symbol",{symbol:u.symbol,type:u.type,file:c}));}catch(l){f.component("purpose-loader").error("Failed to parse .purpose file",{path:c,error:String(l)});}}}}function ee(n,o,s){let t=[],e=p.relative(s,o),r=n.matchAll(/(?:^|\s)#([a-z][a-z0-9-]*)/gm);for(let d of r){let u=d[1];t.push({id:`component-${u}`,symbol:`#${u}`,type:"component",source:"purpose",filePath:e,data:{},description:te(n,`#${u}`),references:re(n),referencedBy:[],tags:se(n)});}let a=n.matchAll(/\$([a-z][a-z0-9-]*)/gm);for(let d of a){let u=d[1],m=`$${u}`;if(N.has(m)){f.component("purpose-loader").debug("Skipping blocklisted symbol",{symbol:m});continue}t.find(j=>j.symbol===m)||t.push({id:`flow-${u}`,symbol:m,type:"flow",source:"purpose",filePath:e,data:{},references:[],referencedBy:[]});}let i=n.matchAll(/!([a-z][a-z0-9-]*)/gm);for(let d of i){let u=d[1];t.find(m=>m.symbol===`!${u}`)||t.push({id:`signal-${u}`,symbol:`!${u}`,type:"signal",source:"purpose",filePath:e,data:{},references:[],referencedBy:[]});}let c=n.matchAll(/\^([a-z][a-z0-9-]*)/gm);for(let d of c){let u=d[1];t.find(m=>m.symbol===`^${u}`)||t.push({id:`gate-${u}`,symbol:`^${u}`,type:"gate",source:"purpose",filePath:e,data:{},references:[],referencedBy:[]});}let l=n.matchAll(/~([a-z][a-z0-9-]*)/gm);for(let d of l){let u=d[1];t.find(m=>m.symbol===`~${u}`)||t.push({id:`aspect-${u}`,symbol:`~${u}`,type:"aspect",source:"purpose",filePath:e,data:{},references:[],referencedBy:[]});}return t}function te(n,o){let s=new RegExp(`${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*[-:]?\\s*(.+)`,"m"),t=n.match(s);if(t&&t[1])return t[1].trim()}function re(n){let o=new Set,s=n.matchAll(/[@#$!^~]([a-z][a-z0-9-]*)/g);for(let t of s){let e=t[0];N.has(e)||o.add(e);}return Array.from(o)}function se(n){let o=n.match(/tags:\s*\[([^\]]+)\]/);return o?o[1].split(",").map(s=>s.trim().replace(/^["']|["']$/g,"")):[]}async function oe(n){return (await F(n)).length}async function ne(n,o,s){let t=(await F(n)).find(r=>r.id===o);if(!t)return {success:false,error:"Symbol not found"};let e=p.join(n,t.filePath);if(!g.existsSync(e))return {success:false,error:"Source file not found"};try{let r=g.readFileSync(e,"utf-8"),a=!1;if(s.description!==void 0){let i=t.symbol.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c=new RegExp(`(${i})\\s*[-:]?\\s*(.*)`,"m");if(r.match(c)){let l=s.description?`${t.symbol}: ${s.description}`:t.symbol;r=r.replace(c,l),a=!0;}}if(s.tags!==void 0){let i=s.tags.length>0?`tags: [${s.tags.map(l=>`"${l}"`).join(", ")}]`:"",c=/^tags:\s*\[[^\]]*\]\s*$/m;if(c.test(r))i?r=r.replace(c,i):r=r.replace(c,""),a=!0;else if(i){let l=t.symbol.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),d=new RegExp(`(${l}[^\\n]*\\n)`,"m");r.match(d)&&(r=r.replace(d,`$1${i}
|
|
3
3
|
`),a=!0);}}if(a){r=r.replace(/\n{3,}/g,`
|
|
4
4
|
|
|
5
5
|
`),g.writeFileSync(e,r,"utf-8"),f.component("symbol-updater").info("Updated symbol",{symbol:t.symbol,file:t.filePath});let i=p.join(n,".paradigm","index.json");if(g.existsSync(i))try{let c=g.readFileSync(i,"utf-8"),l=JSON.parse(c),d=Array.isArray(l.entries)?l.entries:l,u=d.findIndex(m=>m.id===o);u>=0&&(s.description!==void 0&&(d[u].description=s.description),s.tags!==void 0&&(d[u].tags=s.tags),Array.isArray(l.entries)?(l.entries=d,g.writeFileSync(i,JSON.stringify(l,null,2),"utf-8")):g.writeFileSync(i,JSON.stringify(d,null,2),"utf-8"));}catch{}return {success:!0}}return {success:!0}}catch(r){return f.component("symbol-updater").error("Failed to update symbol",{error:String(r)}),{success:false,error:"Failed to write file"}}}var ae=process.env.SENTINEL_LOG_LEVEL||process.env.LOG_LEVEL||"info",k=n=>{let o={debug:0,info:1,warn:2,error:3};return o[n]>=o[ae]},q={gate(n){let o=y.cyan(`^${n}`);return {info:(s,t)=>{if(k("info")){let e=t?y.gray(` ${Object.entries(t).map(([r,a])=>`${r}=${a}`).join(" ")}`):"";console.log(`${y.blue("\u2139")} ${o} ${s}${e}`);}},error:(s,t)=>{if(k("error")){let e=t?y.gray(` ${Object.entries(t).map(([r,a])=>`${r}=${a}`).join(" ")}`):"";console.error(`${y.red("\u2716")} ${o} ${s}${e}`);}}}}};function ie(n){let o=Router();return o.get("/",async(s,t)=>{try{let e=await F(n);q.gate("api-symbols").info("Symbols loaded",{count:e.length}),t.json({symbols:e});}catch(e){q.gate("api-symbols").error("Failed to load symbols",{error:String(e)}),t.status(500).json({error:"Failed to load symbols"});}}),o.put("/:id",async(s,t)=>{try{let{id:e}=s.params,r=s.body;if(q.gate("api-symbols").info("Update requested",{id:e,updates:JSON.stringify(r)}),r.tags&&!Array.isArray(r.tags)){t.status(400).json({error:"Tags must be an array"});return}let a=await ne(n,e,r);if(a.success){let i=(await F(n)).find(c=>c.id===e);q.gate("api-symbols").info("Symbol updated",{id:e}),t.json({success:!0,symbol:i});}else q.gate("api-symbols").error("Update failed",{id:e,error:a.error}),t.status(400).json({success:!1,error:a.error});}catch(e){q.gate("api-symbols").error("Failed to update symbol",{error:String(e)}),t.status(500).json({error:"Failed to update symbol"});}}),o}function le(n){let o=Router();return o.get("/",async(s,t)=>{try{let e=await Q(n),r=await oe(n);t.json({projectName:e.name||null,discipline:e.discipline||null,symbolCount:r,projectDir:n});}catch(e){console.error("Failed to load project info:",e),t.status(500).json({error:"Failed to load project info"});}}),o}function J(n){let o=new Set;for(let s of n){if(s.endsWith(".purpose")){let r=p.dirname(s),a=p.basename(r);r.includes("features/")||r.includes("routes/")||r.includes("api/")?o.add(`@${a}`):r.includes("components/")||r.includes("lib/")||r.includes("utils/")?o.add(`#${a}`):r.includes("middleware/")||r.includes("auth/")||r.includes("guards/")?o.add(`^${a}`):(r.includes("flows/")||r.includes("workflows/"))&&o.add(`$${a}`);}s.includes("portal.yaml")&&o.add("^portal");let t=s.match(/features\/([^/]+)/);t&&o.add(`@${t[1]}`);let e=s.match(/components\/([^/]+)/);e&&o.add(`#${e[1]}`);}return Array.from(o)}async function ce(n,o={}){let s=z(n);if(!await s.checkIsRepo())return [];try{let t={maxCount:o.limit||100};o.since&&(t["--since"]=o.since);let e=await s.log(t),r=[];for(let a of e.all){let i=[],c=[];try{i=(await s.diffSummary([`${a.hash}^`,a.hash])).files.map(l=>l.file),c=J(i);}catch{}r.push({hash:a.hash,shortHash:a.hash.slice(0,7),date:a.date,author:a.author_name,message:a.message.split(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import h,{Router}from'express';import*as u from'path';import*as a from'fs';import {fileURLToPath}from'url';import d from'chalk';function N(n){let r=Router();return r.get("/",(o,s)=>{let e=u.join(n,"courses");if(!a.existsSync(e))return s.json({courses:[]});let i=a.readdirSync(e).filter(t=>t.endsWith(".json")).map(t=>{let l=JSON.parse(a.readFileSync(u.join(e,t),"utf-8"));return {id:l.id,title:l.title,description:l.description,lessonCount:l.lessons?.length||0,lessons:(l.lessons||[]).map(c=>({id:c.id,title:c.title}))}});return i.sort((t,l)=>t.id.localeCompare(l.id)),s.json({courses:i})}),r.get("/:id",(o,s)=>{let e=u.join(n,"courses",`${o.params.id}.json`);if(!a.existsSync(e))return s.status(404).json({error:`Course '${o.params.id}' not found`});let i=JSON.parse(a.readFileSync(e,"utf-8"));return s.json(i)}),r.get("/:id/lessons/:lessonId",(o,s)=>{let e=u.join(n,"courses",`${o.params.id}.json`);if(!a.existsSync(e))return s.status(404).json({error:`Course '${o.params.id}' not found`});let i=(JSON.parse(a.readFileSync(e,"utf-8")).lessons||[]).find(t=>t.id===o.params.lessonId);return i?s.json(i):s.status(404).json({error:`Lesson '${o.params.lessonId}' not found`})}),r}function v(n){return n[Math.floor(Math.random()*n.length)]}function F(n){for(let r=n.length-1;r>0;r--){let o=Math.floor(Math.random()*(r+1));[n[r],n[o]]=[n[o],n[r]];}return n}function L(n){let r={},o=[];for(let s of n.items)if(s.type==="standalone"||s.type==="variant-group"){let e=v(s.variants);o.push([{id:e.id,course:s.course,scenario:e.scenario,question:e.question,choices:e.choices,correct:e.correct,explanation:e.explanation}]);}else {r[s.slot]=s.passage;let e=s.questions.map(i=>{let t=v(i.variants);return {id:t.id,course:s.course,scenario:t.scenario,question:t.question,choices:t.choices,correct:t.correct,explanation:t.explanation,passageId:s.slot}});o.push(e);}return F(o),{questions:o.flat(),passages:r}}function J(n){let r=0;for(let o of n.items)o.type==="standalone"||o.type==="variant-group"?r+=1:r+=o.questions.length;return r}function k(n,r){let o=Router();return o.get("/",(s,e)=>{let i=u.join(n,"plsat");if(!a.existsSync(i))return e.json({versions:[]});let t=a.readdirSync(i).filter(l=>l.endsWith(".json")).map(l=>{let c=JSON.parse(a.readFileSync(u.join(i,l),"utf-8")),p=c.items?J(c):c.questions?.length||0;return {version:c.version,frameworkVersion:c.frameworkVersion,questionCount:p,timeLimit:c.timeLimit,passThreshold:c.passThreshold}});return t.sort((l,c)=>c.version.localeCompare(l.version)),e.json({versions:t})}),o.get("/:version",(s,e)=>{try{let i=u.join(n,"plsat",`v${s.params.version}.json`);if(!a.existsSync(i))return e.status(404).json({error:`PLSAT version '${s.params.version}' not found`});let t=JSON.parse(a.readFileSync(i,"utf-8"));if(t.items){let{questions:c,passages:p}=L(t);return e.json({version:t.version,frameworkVersion:t.frameworkVersion,timeLimit:t.timeLimit,passThreshold:t.passThreshold,title:t.title,description:t.description,questions:c,...Object.keys(p).length>0?{passages:p}:{}})}let l=[...t.questions].sort(()=>Math.random()-.5);return e.json({...t,questions:l})}catch(i){let t=i instanceof Error?i.message:"Internal error";return e.status(500).json({error:`Failed to load PLSAT exam: ${t}`})}}),o.post("/diploma",(s,e)=>{if(!r)return e.status(400).json({error:"No project directory configured"});let i=u.join(r,".paradigm","university","diplomas");if(!a.existsSync(i))return e.json({saved:false,reason:"university directory not found"});try{let{student:t,version:l,score:c,total:p,percentage:O,passed:x}=s.body;if(!t||!l||c==null||p==null)return e.status(400).json({error:"Missing required fields: student, version, score, total"});let w=new Date().toISOString().slice(0,10),$=String(t).toLowerCase().replace(/[^a-z0-9-]/g,"-").slice(0,20),j=`D-${w}-${$}-plsat-v${l}`,P={id:j,type:"plsat",student:$,earnedAt:new Date().toISOString(),source:`plsat:v${l}`,score:c,total:p,percentage:O??(p>0?Math.round(c/p*1e4)/100:0),passed:x??!1,details:{plsatVersion:l}},b=u.join(i,`${j}.yaml`),q=Object.entries(P).map(([g,f])=>{if(typeof f=="object"&&f!==null){let A=Object.entries(f).map(([C,I])=>` ${C}: ${JSON.stringify(I)}`).join(`
|
|
3
3
|
`);return `${g}:
|
|
4
4
|
${A}`}return `${g}: ${JSON.stringify(f)}`});return a.writeFileSync(b,q.join(`
|
|
5
5
|
`)+`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {n}from'./chunk-
|
|
2
|
+
import {n}from'./chunk-3OMJI5TT.js';export{a as appendSessionWorkEntry,i as clearActivityMetrics,c as clearSessionWorkLog,l as countNotebookReferences,e as getAgentEntries,f as getAgentVerdicts,d as getContributingAgents,k as getNotebookReferences,h as getSessionActivitySummary,b as readSessionWorkLog,g as recordActivityMetric,j as recordNotebookReference}from'./chunk-3OMJI5TT.js';import'./chunk-XHJ27CER.js';n();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export{a as appendSessionWorkEntry,i as clearActivityMetrics,c as clearSessionWorkLog,l as countNotebookReferences,e as getAgentEntries,f as getAgentVerdicts,d as getContributingAgents,k as getNotebookReferences,h as getSessionActivitySummary,b as readSessionWorkLog,g as recordActivityMetric,j as recordNotebookReference}from'./chunk-
|
|
2
|
+
export{a as appendSessionWorkEntry,i as clearActivityMetrics,c as clearSessionWorkLog,l as countNotebookReferences,e as getAgentEntries,f as getAgentVerdicts,d as getContributingAgents,k as getNotebookReferences,h as getSessionActivitySummary,b as readSessionWorkLog,g as recordActivityMetric,j as recordNotebookReference}from'./chunk-XNB4TZTD.js';import'./chunk-XHJ27CER.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export{a as detectAllClients,b as generateMCPConfig,d as getProjectName,g as getServersFromConfig,h as mcpListCommand,i as mcpRemoveCommand,e as mcpSetupCommand,f as mcpStatusCommand,c as writeConfig}from'./chunk-22ISTMKI.js';import'./chunk-LKAT7IAK.js';import'./chunk-
|
|
2
|
+
export{a as detectAllClients,b as generateMCPConfig,d as getProjectName,g as getServersFromConfig,h as mcpListCommand,i as mcpRemoveCommand,e as mcpSetupCommand,f as mcpStatusCommand,c as writeConfig}from'./chunk-22ISTMKI.js';import'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b,c as c$2}from'./chunk-W7C6FFMO.js';import'./chunk-4TXOVRWD.js';import {g}from'./chunk-T6IDXUUA.js';import {c as c$1}from'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {d as d$1,b as b$1,a}from'./chunk-JQKKVAAN.js';import'./chunk-
|
|
2
|
+
import {b,c as c$2}from'./chunk-W7C6FFMO.js';import'./chunk-4TXOVRWD.js';import {g}from'./chunk-T6IDXUUA.js';import {c as c$1}from'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {d as d$1,b as b$1,a}from'./chunk-JQKKVAAN.js';import'./chunk-XHJ27CER.js';import*as n from'fs';import*as c from'path';import*as D from'readline';import e from'chalk';function x(){return D.createInterface({input:process.stdin,output:process.stdout})}async function d(s,r){return new Promise(t=>{s.question(r,o=>{t(o.trim());});})}async function p(s,r,t){console.log(`
|
|
3
3
|
${e.cyan(r)}`),t.forEach((i,u)=>{console.log(e.gray(` ${u+1}) `)+i.name);});let o=await d(s,e.white(`Enter number (1-${t.length}): `)),a=parseInt(o,10)-1;return a>=0&&a<t.length?t[a].value:t[0].value}async function k(s,r,t){return console.log(`
|
|
4
4
|
${e.cyan(r)}`),t.forEach((i,u)=>{console.log(e.gray(` ${u+1}) `)+i.name);}),(await d(s,e.white("Enter numbers separated by commas (e.g., 1,2,3): "))).split(",").map(i=>parseInt(i.trim(),10)-1).filter(i=>i>=0&&i<t.length).map(i=>t[i].value)}function A(s){let r={};for(let t of ["src","app","lib","packages"])if(n.existsSync(c.join(s,t))){r.sourceDir=t;break}if(r.sourceDir){let t=c.join(s,r.sourceDir);try{let o=n.readdirSync(t,{withFileTypes:!0});r.directories=o.filter(a=>a.isDirectory()).map(a=>a.name).filter(a=>!a.startsWith(".")&&!a.startsWith("_"));}catch{}}return r}function I(s,r){let t={version:"1.0","agent-guidelines":{overview:`${r} uses Paradigm for structured AI context management.`,"how-to-use":["Check .purpose files in directories before making changes","Run `paradigm status` to see all symbols in the project","Run `paradigm visualize` to explore the Dreamscape","Reference symbols using @ # $ % ~ ^ ! ? prefixes"],"update-rules":["When adding a feature, create/update the nearest .purpose file","When adding authorization, update portal.yaml","When exploring ideas, add to .premise with ? prefix","Run `paradigm cursorrules` after updating .paradigm"]},"symbol-system":a,states:{},"purpose-required":[],conventions:b$1};if(t.states||(t.states={}),s.hasAuth&&s.hasAuth!=="none"&&(t.states.user={authenticated:{type:"boolean",default:false,description:"User is logged in"},role:{type:"enum",values:["guest","user","admin"],description:"User access level"}},s.hasAuth==="session"&&(t.states.user.sessionExpiry={type:"string",description:"Session expiration time"})),s.hasSubscription&&s.hasSubscription!=="none"&&(t.states.user||(t.states.user={}),s.hasSubscription==="tiers"?t.states.user.subscription={type:"enum",values:["free","trial","pro","enterprise"],description:"Subscription tier"}:t.states.user.isPremium={type:"boolean",default:false,description:"Has premium access"}),s.hasGates==="yes"&&t["agent-guidelines"]["how-to-use"].push("Check portal.yaml for authorization rules before modifying access control"),s.directories&&s.directories.length>0&&s.sourceDir&&(t["purpose-required"]=s.directories.map(o=>({pattern:`${s.sourceDir}/${o}/*`,depth:1}))),s.customStates){let o=s.customStates.split(",").map(a=>a.trim()).filter(Boolean);for(let a of o){let i=a.split(".");if(i.length>=2){let u=i[0],g=i.slice(1).join(".");t.states[u]||(t.states[u]={}),t.states[u][g]={type:"boolean",description:`Custom state: ${a}`};}}}return t}async function j(s){let r=x(),t={};console.log(e.blue(`
|
|
5
5
|
\u{1F305} Paradigm Setup Wizard
|
|
@@ -23,7 +23,7 @@ ${e.cyan(r)}`),t.forEach((i,u)=>{console.log(e.gray(` ${u+1}) `)+i.name);}),(aw
|
|
|
23
23
|
`));return}let i;r.yes?(i={sourceDir:A(t).sourceDir||"src",directories:["features","components"],hasAuth:"session",hasSubscription:"none",hasGates:"yes",cursorMode:"create"},console.log(e.blue(`
|
|
24
24
|
\u{1F305} Using default configuration...
|
|
25
25
|
`))):i=await j(t);let u=I(i,o);n.writeFileSync(a,d$1(u),"utf8"),console.log(e.green(`
|
|
26
|
-
\u2705 Created .paradigm configuration`));let g$1=c.join(t,".premise");n.existsSync(g$1)||(n.writeFileSync(g$1,g(o),"utf8"),console.log(e.green("\u2705 Created .premise file")));let f=c.join(t,".purpose");n.existsSync(f)||(n.writeFileSync(f,c$1(),"utf8"),console.log(e.green("\u2705 Created .purpose file")));let h=c.join(t,"portal.yaml");if(i.hasGates==="yes"&&!n.existsSync(h)){let{getDefaultGateConfig:l}=await import('./dist-
|
|
26
|
+
\u2705 Created .paradigm configuration`));let g$1=c.join(t,".premise");n.existsSync(g$1)||(n.writeFileSync(g$1,g(o),"utf8"),console.log(e.green("\u2705 Created .premise file")));let f=c.join(t,".purpose");n.existsSync(f)||(n.writeFileSync(f,c$1(),"utf8"),console.log(e.green("\u2705 Created .purpose file")));let h=c.join(t,"portal.yaml");if(i.hasGates==="yes"&&!n.existsSync(h)){let{getDefaultGateConfig:l}=await import('./dist-VWC6FA46.js');n.writeFileSync(h,l(),"utf8"),console.log(e.green("\u2705 Created portal.yaml"));}let m=i.cursorMode||"skip";if(m!=="skip"){let l=b(t,u,m,o);l.success&&l.path&&console.log(e.green(`\u2705 ${l.message}`));}console.log(e.gray(`
|
|
27
27
|
\u2500`.repeat(55))),console.log(e.blue(`
|
|
28
28
|
\u{1F389} Paradigm setup complete!
|
|
29
29
|
`)),console.log(e.white("Files created:")),console.log(e.gray(" \u2022 .paradigm ")+e.white("AI guidelines, symbols, states")),console.log(e.gray(" \u2022 .premise ")+e.white("Project overview & ideas")),console.log(e.gray(" \u2022 .purpose ")+e.white("Root context & features")),i.hasGates==="yes"&&console.log(e.gray(" \u2022 portal.yaml ")+e.white("Authorization topology")),m!=="skip"&&console.log(e.gray(" \u2022 .cursorrules ")+e.white("Cursor AI integration")),console.log(e.white(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a as a$4,
|
|
2
|
+
import {a as a$4,d as d$3,b as b$2,e as e$1,f}from'./chunk-Z72SDTBJ.js';import {b}from'./chunk-JUOOVKK6.js';import'./chunk-7PB7AXQE.js';import'./chunk-TYWB5IQJ.js';import'./chunk-5YHR77AL.js';import'./chunk-RN35IVA2.js';import {d as d$2}from'./chunk-AO7ZSRME.js';import'./chunk-FYDRENK7.js';import'./chunk-Y4XFVDZC.js';import {a as a$6}from'./chunk-SXO7NC6A.js';import {d as d$1}from'./chunk-DG3VCY43.js';import {a as a$3,b as b$1}from'./chunk-GE3GQALR.js';import {a as a$7}from'./chunk-BCOPNVPY.js';import'./chunk-EKZDFEJW.js';import {a as a$1}from'./chunk-RLJ5K3J5.js';import {b as b$3}from'./chunk-77WX6HGV.js';import'./chunk-4TXOVRWD.js';import'./chunk-6QKCUEEY.js';import'./chunk-WR6D3SC6.js';import {a as a$2}from'./chunk-UIKLE3WD.js';import {a as a$5}from'./chunk-3XGNXXCT.js';import'./chunk-SHD27BQX.js';import'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import'./chunk-DOCDDDTD.js';import'./chunk-JQKKVAAN.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as s from'fs';import*as ne from'os';import*as d from'path';import e from'chalk';import ke from'ora';import*as h from'js-yaml';import*as v from'fs/promises';var ae=[{path:".paradigm/config.yaml",defaultContent:['version: "2.0"','project: ""','description: ""','initialized: ""'].join(`
|
|
3
3
|
`)+`
|
|
4
4
|
`},{path:".paradigm/agents.yaml",defaultContent:['version: "1.0"',"agents: []"].join(`
|
|
5
5
|
`)+`
|
|
@@ -48,13 +48,13 @@ Generated by paradigm shift.
|
|
|
48
48
|
|
|
49
49
|
Generated by paradigm shift.
|
|
50
50
|
`},{path:".cursor/rules/",defaultContent:"",isDir:true},{path:".claude/hooks/",defaultContent:"",isDir:true}];async function Y(o){let n=[],l=[];for(let r of ae){let f=d.join(o,r.path);if(r.isDir)await Q(f)?l.push(r.path):(await v.mkdir(f,{recursive:true}),n.push(r.path));else if(await Q(f))l.push(r.path);else {let i=d.dirname(f);await v.mkdir(i,{recursive:true}),await v.writeFile(f,r.defaultContent,"utf-8"),n.push(r.path);}}return {created:n,existed:l}}async function Q(o){try{return await v.access(o),!0}catch{return false}}var ie=4,se=50,ce=['description: ""',"components: []","description: ''"],le={"claude-code":["opus","sonnet","haiku"],cursor:["sonnet","sonnet","haiku"],fallback:["sonnet","sonnet","sonnet"]};async function Z(o){let n=await Promise.allSettled([de(o),me(o),fe(o),pe(o),ue(o),ge(o),he(o),ye(o),we()]),l=[];for(let i of n)i.status==="fulfilled"&&i.value&&l.push(i.value);l.sort((i,j)=>i.priority-j.priority);let r=l.filter(i=>i.type==="action"),f=l.filter(i=>i.type==="info");return [...r.slice(0,ie),...f]}function ee(o){if(o.length===0)return "";let n=o.filter(p=>p.type==="action"),l=o.filter(p=>p.type==="info"),r=[];r.push(""),r.push(e.bold(" Recommendations")),r.push(e.gray(" "+"\u2500".repeat(49)));for(let p=0;p<n.length;p++){let i=n[p],j=e.white(` ${p+1}. `),w=e.white(i.message);i.command?(r.push(j+w),r.push(" "+e.cyan(i.command))):r.push(j+w);}if(l.length>0){r.push("");for(let p of l)r.push(e.dim(" "+p.message));}let f=n.length;if(f>0){r.push("");let p=f===1?"item needs":"items need";r.push(e.dim(` ${f} ${p} attention.`));}return r.push(""),r.join(`
|
|
51
|
-
`)}async function de(o){let n=d.join(o,".purpose");try{let l=await v.readFile(n,"utf-8");if(l.trim().length<se)return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"};if(ce.some(f=>l.includes(f)))return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"}}catch{return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"}}return null}async function me(o){let n=["src","packages","apps"];for(let r of n){let f=d.join(o,r);if(!s.existsSync(f))continue;if(await te(f))return null}return n.some(r=>s.existsSync(d.join(o,r)))?{id:"no-sub-purpose",priority:2,message:"Add `.purpose` files to feature directories",command:void 0,type:"action"}:null}async function fe(o){let n=d.join(o,"portal.yaml");try{let l=await v.readFile(n,"utf-8"),r=l.includes("gates:")&&!l.match(/gates:\s*(\[\]|\{\})\s*$/m)&&!l.match(/gates:\s*(\[\]|\{\})\s*\n/),f=l.includes("routes:")&&!l.match(/routes:\s*(\[\]|\{\})\s*$/m)&&!l.match(/routes:\s*(\[\]|\{\})\s*\n/);if(!r&&!f)return {id:"empty-portal",priority:3,message:"Define auth gates in `portal.yaml` if your project has auth",command:void 0,type:"action"}}catch{return {id:"empty-portal",priority:3,message:"Define auth gates in `portal.yaml` if your project has auth",command:void 0,type:"action"}}return null}async function pe(o){let n=d.join(o,".paradigm","agents.yaml");try{let l=await v.readFile(n,"utf-8");if(l.includes("agents: []")||l.trim().length<40)return {id:"agents-unconfigured",priority:4,message:"Review agent roles",command:"paradigm agent list",type:"action"}}catch{return null}return null}async function ue(o){let n=d.join(o,".paradigm",".pending-scope-reviews");return s.existsSync(n)?{id:"pending-scope-reviews",priority:2,message:"Review agent scopes",command:"paradigm agent review",type:"action"}:null}async function ge(o){let n=d.join(o,".paradigm","config.yaml");try{let l=await v.readFile(n,"utf-8");if(!l.includes("model-resolution"))return null;let r=l.match(/tier-1:\s*(\S+)/),f=l.match(/tier-2:\s*(\S+)/),p=l.match(/tier-3:\s*(\S+)/);if(!r||!f||!p)return null;let i=[r[1].replace(/['"]/g,""),f[1].replace(/['"]/g,""),p[1].replace(/['"]/g,"")];if(Object.values(le).some(w=>w[0]===i[0]&&w[1]===i[1]&&w[2]===i[2]))return {id:"model-tiers-default",priority:5,message:"Fine-tune model tiers",command:"paradigm team models",type:"action"}}catch{return null}return null}async function he(o){let n=d.join(o,".paradigm","lore","entries");try{if((await v.readdir(n)).filter(f=>!f.startsWith(".")).length===0)return {id:"no-lore",priority:8,message:"Lore records automatically as you work",command:void 0,type:"info"}}catch{return {id:"no-lore",priority:8,message:"Lore records automatically as you work",command:void 0,type:"info"}}return null}async function ye(o){let n=d.join(o,".paradigm","notebooks");try{if((await v.readdir(n)).filter(f=>!f.startsWith(".")).length===0)return {id:"no-notebooks",priority:8,message:"Agent notebooks build over time",command:void 0,type:"info"}}catch{return {id:"no-notebooks",priority:8,message:"Agent notebooks build over time",command:void 0,type:"info"}}return null}async function we(){return {id:"verify-not-run",priority:6,message:"Verify setup health",command:"paradigm doctor --verify",type:"action"}}async function te(o,n=0){if(n>4)return false;try{let l=await v.readdir(o,{withFileTypes:!0});for(let r of l)if(!(r.isDirectory()&&["node_modules","dist",".git",".next",".paradigm","build","out","target",".turbo"].includes(r.name))&&(r.name===".purpose"&&!r.isDirectory()||r.isDirectory()&&await te(d.join(o,r.name),n+1)))return !0}catch{a.operation("shift-recommendations").debug("Could not read directory",{dir:o});}return false}var oe=new Set(["architect","builder","reviewer","security","advocate","tester","compliance","documentor"]),M={architect:{nickname:"Apex",role:"System design, specifications"},builder:{nickname:"Kit",role:"Implementation, tests"},reviewer:{nickname:"Judge",role:"Code quality, compliance"},security:{nickname:"Aegis",role:"Auth flows, vulnerability scanning"},advocate:{nickname:"Jinx",role:"Stress testing, edge cases"},tester:{nickname:"Probe",role:"Unit and integration tests"},compliance:{nickname:"Rune",role:"Symbol compliance enforcement"},documentor:{nickname:"Scribe",role:".purpose, portal.yaml maintenance"}};function Se(o){let n=[],l=d.join(ne.homedir(),".paradigm","agents");for(let[r,f]of Object.entries(o.agents)){let p,i=r,j=d.join(l,`${r}.agent`);if(s.existsSync(j))try{let x=s.readFileSync(j,"utf8"),C=h.load(x);C?.nickname&&(p=C.nickname),C?.role&&(i=C.role);}catch{}!p&&M[r]&&(p=M[r].nickname,i=M[r].role);let w=f.source==="core"||f.source==="ecosystem"?f.source:oe.has(r)?"core":"ecosystem";n.push({id:r,nickname:p,role:i,source:w});}return n}async function _e(o={}){let n=process.cwd(),l=d.basename(n),r=d.join(n,".paradigm"),f=s.existsSync(r)&&s.statSync(r).isDirectory();console.log(e.blue(`
|
|
51
|
+
`)}async function de(o){let n=d.join(o,".purpose");try{let l=await v.readFile(n,"utf-8");if(l.trim().length<se)return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"};if(ce.some(f=>l.includes(f)))return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"}}catch{return {id:"empty-purpose",priority:1,message:"Edit `.purpose` to define your project's features",command:void 0,type:"action"}}return null}async function me(o){let n=["src","packages","apps"];for(let r of n){let f=d.join(o,r);if(!s.existsSync(f))continue;if(await te(f))return null}return n.some(r=>s.existsSync(d.join(o,r)))?{id:"no-sub-purpose",priority:2,message:"Add `.purpose` files to feature directories",command:void 0,type:"action"}:null}async function fe(o){let n=d.join(o,"portal.yaml");try{let l=await v.readFile(n,"utf-8"),r=l.includes("gates:")&&!l.match(/gates:\s*(\[\]|\{\})\s*$/m)&&!l.match(/gates:\s*(\[\]|\{\})\s*\n/),f=l.includes("routes:")&&!l.match(/routes:\s*(\[\]|\{\})\s*$/m)&&!l.match(/routes:\s*(\[\]|\{\})\s*\n/);if(!r&&!f)return {id:"empty-portal",priority:3,message:"Define auth gates in `portal.yaml` if your project has auth",command:void 0,type:"action"}}catch{return {id:"empty-portal",priority:3,message:"Define auth gates in `portal.yaml` if your project has auth",command:void 0,type:"action"}}return null}async function pe(o){let n=d.join(o,".paradigm","agents.yaml");try{let l=await v.readFile(n,"utf-8");if(l.includes("agents: []")||l.trim().length<40)return {id:"agents-unconfigured",priority:4,message:"Review agent roles",command:"paradigm agent list",type:"action"}}catch{return null}return null}async function ue(o){let n=d.join(o,".paradigm",".pending-scope-reviews");return s.existsSync(n)?{id:"pending-scope-reviews",priority:2,message:"Review agent scopes",command:"paradigm agent review",type:"action"}:null}async function ge(o){let n=d.join(o,".paradigm","config.yaml");try{let l=await v.readFile(n,"utf-8");if(!l.includes("model-resolution"))return null;let r=l.match(/tier-1:\s*(\S+)/),f=l.match(/tier-2:\s*(\S+)/),p=l.match(/tier-3:\s*(\S+)/);if(!r||!f||!p)return null;let i=[r[1].replace(/['"]/g,""),f[1].replace(/['"]/g,""),p[1].replace(/['"]/g,"")];if(Object.values(le).some(w=>w[0]===i[0]&&w[1]===i[1]&&w[2]===i[2]))return {id:"model-tiers-default",priority:5,message:"Fine-tune model tiers",command:"paradigm team models",type:"action"}}catch{return null}return null}async function he(o){let n=d.join(o,".paradigm","lore","entries");try{if((await v.readdir(n)).filter(f=>!f.startsWith(".")).length===0)return {id:"no-lore",priority:8,message:"Lore records automatically as you work",command:void 0,type:"info"}}catch{return {id:"no-lore",priority:8,message:"Lore records automatically as you work",command:void 0,type:"info"}}return null}async function ye(o){let n=d.join(o,".paradigm","notebooks");try{if((await v.readdir(n)).filter(f=>!f.startsWith(".")).length===0)return {id:"no-notebooks",priority:8,message:"Agent notebooks build over time",command:void 0,type:"info"}}catch{return {id:"no-notebooks",priority:8,message:"Agent notebooks build over time",command:void 0,type:"info"}}return null}async function we(){return {id:"verify-not-run",priority:6,message:"Verify setup health",command:"paradigm doctor --verify",type:"action"}}async function te(o,n=0){if(n>4)return false;try{let l=await v.readdir(o,{withFileTypes:!0});for(let r of l)if(!(r.isDirectory()&&["node_modules","dist",".git",".next",".paradigm","build","out","target",".turbo"].includes(r.name))&&(r.name===".purpose"&&!r.isDirectory()||r.isDirectory()&&await te(d.join(o,r.name),n+1)))return !0}catch{a.operation("shift-recommendations").debug("Could not read directory",{dir:o});}return false}var oe=new Set(["architect","builder","reviewer","security","advocate","tester","compliance","documentor"]),M={architect:{nickname:"Apex",role:"System design, specifications"},builder:{nickname:"Kit",role:"Implementation, tests"},reviewer:{nickname:"Judge",role:"Code quality, compliance"},security:{nickname:"Aegis",role:"Auth flows, vulnerability scanning"},advocate:{nickname:"Jinx",role:"Stress testing, edge cases"},tester:{nickname:"Probe",role:"Unit and integration tests"},compliance:{nickname:"Rune",role:"Symbol compliance enforcement"},documentor:{nickname:"Scribe",role:".purpose, portal.yaml maintenance"}};function Se(o){let n=[],l=d.join(ne.homedir(),".paradigm","agents");for(let[r,f]of Object.entries(o.agents)){let p,i=r,j=d.join(l,`${r}.agent`);if(s.existsSync(j))try{let x=s.readFileSync(j,"utf8"),C=h.load(x);C?.nickname&&(p=C.nickname),C?.role&&(i=C.role);}catch{}!p&&M[r]&&(p=M[r].nickname,i=M[r].role);let w=f.source==="core"||f.source==="ecosystem"?f.source:oe.has(r)?"core":"ecosystem";n.push({id:r,nickname:p,role:i,source:w});}return n}async function _e(o={}){let n=process.cwd(),l=d.basename(n),r=d.join(n,".paradigm"),f$1=s.existsSync(r)&&s.statSync(r).isDirectory();console.log(e.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(e.blue("\u2502")+e.white.bold(" paradigm shift ")+e.blue("\u2502")),console.log(e.blue("\u2502")+e.gray(" Full project setup in one command ")+e.blue("\u2502")),console.log(e.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
|
-
`)),console.log(e.white(` \u{1F4C1} Project: ${e.cyan(l)}`)),console.log(e.white(` \u{1F4CD} Status: ${f?e.green("Paradigm detected"):e.yellow("New project")}`)),console.log("");let p=a.command("shift").start("Running paradigm shift",{project:l}),i=ke();if(!f||o.force){i.start("Step 1/6: Initializing Paradigm...");try{await a$1({force:o.force,quick:!0,name:l,stack:o.stack}),i.succeed(e.green("Paradigm initialized"));}catch(t){i.fail(e.red(`Init failed: ${t.message}`)),p.error("Shift failed at init",{error:t.message});return}}else {i.succeed(e.gray("Step 1/6: Already initialized (use --force to reinit)"));let t=d.join(r,"config.yaml");if(s.existsSync(t))try{let a=s.readFileSync(t,"utf8"),c=h.load(a);if(!c.discipline||c.discipline==="auto"){let m=a$2(n);if(m!=="backend"){let u=a.replace(/^discipline:\s*auto\b.*$/m,`discipline: ${m}`);u!==a&&(s.writeFileSync(t,u,"utf8"),console.log(e.green(` \u2713 Detected discipline: ${e.cyan(m)} (updated config.yaml)`)));}else if(!c.discipline){let u=a.replace(/^(project:\s*.+)$/m,`$1
|
|
54
|
-
discipline: ${m}`);u!==a&&(s.writeFileSync(t,u,"utf8"),console.log(e.green(` \u2713 Added discipline: ${e.cyan(m)} to config.yaml`)));}}}catch(a$1){a.operation("shift").debug("Discipline detection failed",{error:a$1.message});}}if(f){i.start("Step 1b/6: Checking for migrations...");try{let{migrateCommand:t}=await import('./migrate-
|
|
53
|
+
`)),console.log(e.white(` \u{1F4C1} Project: ${e.cyan(l)}`)),console.log(e.white(` \u{1F4CD} Status: ${f$1?e.green("Paradigm detected"):e.yellow("New project")}`)),console.log("");let p=a.command("shift").start("Running paradigm shift",{project:l}),i=ke();if(!f$1||o.force){i.start("Step 1/6: Initializing Paradigm...");try{await a$1({force:o.force,quick:!0,name:l,stack:o.stack}),i.succeed(e.green("Paradigm initialized"));}catch(t){i.fail(e.red(`Init failed: ${t.message}`)),p.error("Shift failed at init",{error:t.message});return}}else {i.succeed(e.gray("Step 1/6: Already initialized (use --force to reinit)"));let t=d.join(r,"config.yaml");if(s.existsSync(t))try{let a=s.readFileSync(t,"utf8"),c=h.load(a);if(!c.discipline||c.discipline==="auto"){let m=a$2(n);if(m!=="backend"){let u=a.replace(/^discipline:\s*auto\b.*$/m,`discipline: ${m}`);u!==a&&(s.writeFileSync(t,u,"utf8"),console.log(e.green(` \u2713 Detected discipline: ${e.cyan(m)} (updated config.yaml)`)));}else if(!c.discipline){let u=a.replace(/^(project:\s*.+)$/m,`$1
|
|
54
|
+
discipline: ${m}`);u!==a&&(s.writeFileSync(t,u,"utf8"),console.log(e.green(` \u2713 Added discipline: ${e.cyan(m)} to config.yaml`)));}}}catch(a$1){a.operation("shift").debug("Discipline detection failed",{error:a$1.message});}}if(f$1){i.start("Step 1b/6: Checking for migrations...");try{let{migrateCommand:t}=await import('./migrate-W3KCXLDS.js');await t({apply:!0,quiet:!0,noSync:!0}),i.succeed(e.green("Migrations applied"));}catch(t){i.warn(e.yellow(`Migration warning: ${t.message}`));}}{let t=d.join(r,"config.yaml");if(o.workspace&&s.existsSync(t)){let a$1=o.workspacePath?d.resolve(n,o.workspacePath):d.join(d.dirname(n),".paradigm-workspace");if(s.existsSync(a$1))try{let c=h.load(s.readFileSync(a$1,"utf8")),m=d.basename(n),u=d.dirname(a$1),g="./"+d.relative(u,n);if(c.members.some(b=>d.resolve(u,b.path)===n))console.log(e.green(` \u2713 Already a member of workspace: ${e.cyan(c.name)}`));else {let b=d$1(m,n);c.members.push({name:m,path:g,...b&&{role:b}}),s.writeFileSync(a$1,h.dump(c,{indent:2,lineWidth:120,noRefs:!0,sortKeys:!1,quotingType:'"'}),"utf8"),console.log(e.green(` \u2713 Joined workspace: ${e.cyan(c.name)} (added as member)`));}}catch(c){console.log(e.yellow(` \u26A0 Failed to join workspace: ${c.message}`));}else try{let c=d.basename(n),m=d.dirname(a$1),u="./"+d.relative(m,n),g=d$1(c,n),y={version:"1.0",name:o.workspace,members:[{name:c,path:u,...g&&{role:g}}]};s.mkdirSync(d.dirname(a$1),{recursive:!0}),s.writeFileSync(a$1,h.dump(y,{indent:2,lineWidth:120,noRefs:!0,sortKeys:!1,quotingType:'"'}),"utf8"),console.log(e.green(` \u2713 Created workspace: ${e.cyan(o.workspace)} at ${e.gray(d.relative(n,a$1))}`));}catch(c){console.log(e.yellow(` \u26A0 Failed to create workspace: ${c.message}`));}try{let c=s.readFileSync(t,"utf8"),m=h.load(c),u=d.relative(n,a$1);if(m.workspace!==u){if(m.workspace){let g=c.replace(/^workspace:\s*.*$/m,`workspace: "${u}"`);s.writeFileSync(t,g,"utf8");}else {let g=c.trimEnd()+`
|
|
55
55
|
workspace: "${u}"
|
|
56
56
|
`;s.writeFileSync(t,g,"utf8");}console.log(e.green(" \u2713 Linked workspace in config.yaml"));}}catch(c){a.operation("shift").debug("Workspace config link failed",{error:c.message});}}else if(s.existsSync(t))try{let a=s.readFileSync(t,"utf8");if(!h.load(a).workspace){let m=d.dirname(n);for(let u=0;u<3;u++){let g=d.join(m,".paradigm-workspace");if(s.existsSync(g)){let b=d.relative(n,g),re=a.trimEnd()+`
|
|
57
57
|
workspace: "${b}"
|
|
58
58
|
`;s.writeFileSync(t,re,"utf8"),console.log(e.green(` \u2713 Found workspace: ${e.cyan(b)} (added to config.yaml)`));break}let y=d.dirname(m);if(y===m)break;m=y;}}}catch(a$1){a.operation("shift").debug("Workspace auto-detect failed",{error:a$1.message});}}if(!d$2(n)||o.force){console.log(e.cyan(" Step 2/6: Initializing team configuration..."));try{await b(n,{force:o.force,json:!1,configureModels:o.configureModels||!1,noConfigureModels:!o.configureModels}),console.log(e.green(` \u2713 Team configuration initialized
|
|
59
59
|
`));}catch(t){console.log(e.yellow(` \u26A0 Team init warning: ${t.message}
|
|
60
|
-
`));}}else i.succeed(e.gray("Step 2/6: Team already configured (use --force to reinit)"));let w=d.join(n,".paradigm","roster.yaml");if(!s.existsSync(w)||o.force)try{let t=a$3(n),a=b$1[t]||b$1.generic,c={version:"1.0",project:l,type:t,active:a.sort()};s.writeFileSync(w,h.dump(c,{lineWidth:-1,noRefs:!0}),"utf8"),console.log(e.green(` \u2713 Agent roster set: ${e.cyan(a.length)} agents for ${e.cyan(t)}`));}catch(t){a.operation("shift").debug("Roster setup failed",{error:t.message});}else try{let a=h.load(s.readFileSync(w,"utf8"))?.active?.length??0;console.log(e.gray(` \u2713 Agent roster exists (${a} agents active)`));}catch{console.log(e.gray(" \u2713 Agent roster exists"));}{let t=d.join(n,".paradigm","adoptions.yaml"),a$1=s.existsSync(t);try{let c
|
|
60
|
+
`));}}else i.succeed(e.gray("Step 2/6: Team already configured (use --force to reinit)"));let w=d.join(n,".paradigm","roster.yaml");if(!s.existsSync(w)||o.force)try{let t=a$3(n),a=b$1[t]||b$1.generic,c={version:"1.0",project:l,type:t,active:a.sort()};s.writeFileSync(w,h.dump(c,{lineWidth:-1,noRefs:!0}),"utf8"),console.log(e.green(` \u2713 Agent roster set: ${e.cyan(a.length)} agents for ${e.cyan(t)}`));}catch(t){a.operation("shift").debug("Roster setup failed",{error:t.message});}else try{let a=h.load(s.readFileSync(w,"utf8"))?.active?.length??0;console.log(e.gray(` \u2713 Agent roster exists (${a} agents active)`));}catch{console.log(e.gray(" \u2713 Agent roster exists"));}{let t=d.join(n,".paradigm","adoptions.yaml"),a$1=s.existsSync(t);try{let c=a$3(n),m=a$1?await a$4(n):null,u=m&&Object.keys(m.agents).length>0;if(!u&&s.existsSync(w))m=await d$3(n),await b$2(n,m),a.operation("shift").debug("Migrated roster to adoptions",{count:Object.keys(m.agents).length});else if(!u){m=e$1(c);let g=s.existsSync(w)?h.load(s.readFileSync(w,"utf8")):{active:[]},y=new Date().toISOString();for(let b of g.active||[])m.agents[b]={adopted:y,source:oe.has(b)?"core":"ecosystem",defaultsAccepted:!0};Object.keys(m.agents).length>0&&await b$2(n,m);}if(m&&Object.keys(m.agents).length>0){let g=Se(m),y=f(g,c);console.log(y),console.log(e.green(` \u2713 ${Object.keys(m.agents).length} agents adopted`));}}catch(c){a.operation("shift").debug("Adoption ceremony failed",{error:c.message});}}{let t=d.join(r,"config.yaml");if(s.existsSync(t))try{let a=s.readFileSync(t,"utf8"),c=h.load(a);if(!c["model-resolution"]||o.force){let{ModelDiscovery:m}=await import('./model-discovery-TWX4A4YD.js'),g=new m(n).detectEnvironment(),y;g==="claude-code"?y={"tier-1":"opus","tier-2":"sonnet","tier-3":"haiku"}:g==="cursor"?y={"tier-1":"sonnet","tier-2":"sonnet","tier-3":"haiku"}:y={"tier-1":"sonnet","tier-2":"sonnet","tier-3":"sonnet"},c["model-resolution"]=y,s.writeFileSync(t,h.dump(c,{lineWidth:-1,noRefs:!0}),"utf8"),console.log(e.green(` \u2713 Model tiers configured for ${e.cyan(g)}: tier-1=${y["tier-1"]}, tier-2=${y["tier-2"]}, tier-3=${y["tier-3"]}`));}}catch(a$1){a.operation("shift").debug("Model tier config failed",{error:a$1.message});}}try{let{ensureEnforcementDefaults:t}=await import('./enforcement-5MHSQAXE.js');t(n)&&console.log(e.green(` \u2713 Enforcement config initialized (${e.cyan("balanced")} preset)`));}catch(t){a.operation("shift").debug("Enforcement config setup failed",{error:t.message});}{i.start("Ensuring core files...");try{let{created:t,existed:a}=await Y(n);i.succeed(e.green(`Core files ensured: ${e.cyan(String(t.length))} created, ${e.cyan(String(a.length))} already existed`));}catch(t){i.warn(e.yellow(`Guaranteed files warning: ${t.message}`));}}if(o.quick)i.succeed(e.gray("Step 3/6: Skipped scan (--quick mode)"));else {i.start("Step 3/6: Scanning and indexing symbols...");try{await b$3(n,{quiet:!0}),i.succeed(e.green("Symbols indexed"));}catch(t){i.warn(e.yellow(`Scan warning: ${t.message}`));}}{let t=d.join(r,"config.yaml");if(s.existsSync(t))try{if(h.load(s.readFileSync(t,"utf8")).workspace){i.start("Step 3b/6: Reindexing workspace members...");try{let{workspaceReindexCommand:c}=await import('./workspace-CE6LNXVI.js');await c({quiet:!0}),i.succeed(e.green("Workspace members reindexed"));}catch(c){i.warn(e.yellow(`Workspace reindex: ${c.message}`));}}}catch(a$1){a.operation("shift").debug("Workspace config read failed",{error:a$1.message});}}let x=d.join(n,"portal.yaml");s.existsSync(x)||s.writeFileSync(x,h.dump({version:"1.0.0",gates:{},routes:{}},{lineWidth:-1,noRefs:true}),"utf8");let C=d.join(n,".paradigm","lore");s.existsSync(C)||s.mkdirSync(C,{recursive:true});let I=d.join(n,".paradigm","university");for(let t of ["content/notes","content/policies","content/quizzes","content/paths","diplomas"]){let a=d.join(I,t);s.existsSync(a)||s.mkdirSync(a,{recursive:true});}let N=d.join(I,"config.yaml");if(!s.existsSync(N)){let t="Project";try{let c=d.join(n,".paradigm","config.yaml");if(s.existsSync(c)){let m=h.load(s.readFileSync(c,"utf8"));m.project&&typeof m.project=="string"&&(t=m.project);}}catch{}let a={branding:{name:`${t} University`,tagline:`Learn the ${t} codebase`,institution:t},theme:{primary:"#6366f1",secondary:"#8b5cf6",accent:"#f59e0b",background:"#0f172a",surface:"#1e293b",text:"#f8fafc",textMuted:"#94a3b8",success:"#22c55e",error:"#ef4444",font:"Inter, system-ui, sans-serif"},content:{categories:[],defaultDifficulty:"beginner",requireApproval:false},diplomas:{includeGlobalPLSAT:true}};s.writeFileSync(N,h.dump(a,{lineWidth:-1,noRefs:true}),"utf8");}i.start("Step 4/6: Syncing IDE configurations...");try{let t=o.ide?[o.ide]:["claude","cursor","copilot","windsurf","agents"],a=[];for(let c of t)try{await a$5(c,{quiet:!0,force:!0}),a.push(c);}catch{}a.length>0?i.succeed(e.green(`IDE configs synced: ${a.join(", ")}`)):i.warn(e.yellow("No IDE configs to sync"));}catch(t){i.warn(e.yellow(`Sync warning: ${t.message}`));}i.start("Step 5/6: Installing hooks...");try{await a$6({force:o.force}),i.succeed(e.green("Hooks installed (git + Claude Code + Cursor)"));}catch(t){i.warn(e.yellow(`Hooks warning: ${t.message}`));}if(o.verify){i.start("Step 6/6: Running health checks...");try{await a$7({quiet:!0})?i.succeed(e.green("All health checks passed")):i.warn(e.yellow("Some health checks need attention"));}catch(t){i.warn(e.yellow(`Doctor warning: ${t.message}`));}}else i.succeed(e.gray("Step 6/6: Skipped verify (use --verify to check health)"));console.log(""),console.log(e.blue("\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(e.blue("\u2502")+e.white.bold(" \u2728 Paradigm shift complete! ")+e.blue("\u2502")),console.log(e.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")),console.log(""),console.log(e.white(" Created/Updated:")),console.log(e.gray(" \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"));let O=[{path:".paradigm/config.yaml",desc:"Project configuration"},{path:".paradigm/navigator.yaml",desc:"Symbol navigation map"},{path:".paradigm/agents.yaml",desc:"Team agent configuration"},{path:".paradigm/adoptions.yaml",desc:"Agent adoption records"},{path:".purpose",desc:"Root feature definitions"},{path:".paradigm/lore/",desc:"Project lore timeline",isDir:true},{path:"portal.yaml",desc:"Authorization gates"},{path:".paradigm/roster.yaml",desc:"Agent roster for this project"},{path:"CLAUDE.md",desc:"Claude Code AI instructions"},{path:"AGENTS.md",desc:"Universal AI agent instructions"},{path:".cursor/rules/",desc:"Cursor AI instructions",isDir:true},{path:".claude/hooks/",desc:"Claude Code enforcement hooks",isDir:true,optional:true},{path:".cursor/hooks/",desc:"Cursor enforcement hooks",isDir:true,optional:true}],G=d.join(r,"config.yaml");if(s.existsSync(G))try{let t=h.load(s.readFileSync(G,"utf8"));if(typeof t.workspace=="string"){let a=d.resolve(n,t.workspace),c=d.relative(n,a);O.push({path:c,desc:"Multi-project workspace",optional:!0});}}catch(t){a.operation("shift").debug("Summary config read failed",{error:t.message});}for(let t of O){let a=d.join(n,t.path);s.existsSync(a)?console.log(e.green(" \u2713 ")+e.white(t.path.padEnd(28))+e.gray(t.desc)):t.optional||console.log(e.yellow(" \u25CB ")+e.gray(t.path.padEnd(28))+e.gray(`(${t.desc})`));}try{let t=await Z(n),a=ee(t);a&&console.log(a);}catch(t){a.operation("shift").debug("Recommendations engine failed",{error:t.message}),console.log(""),console.log(e.white(" Next steps:")),console.log(e.gray(" "+"\u2500".repeat(49))),console.log(e.white(" 1. ")+e.gray("Edit ")+e.cyan(".purpose")+e.gray(" to define your features")),console.log(e.white(" 2. ")+e.gray("Run ")+e.cyan("paradigm shift --verify")+e.gray(" to check health")),console.log("");}p.success("Paradigm shift complete",{project:l});}export{_e as shiftCommand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {g}from'./chunk-
|
|
2
|
+
import {g}from'./chunk-7YTAA6XA.js';import'./chunk-XHJ27CER.js';import e from'chalk';async function h(s,r){let c=process.cwd(),o=await g(c,s);if(o||(console.error(e.red(`
|
|
3
3
|
Entry not found: ${s}
|
|
4
4
|
`)),process.exit(1)),r.json){console.log(JSON.stringify(o,null,2));return}let g$1={...{"agent-session":e.hex("#818cf8"),"human-note":e.hex("#34d399"),decision:e.hex("#fbbf24"),review:e.hex("#c084fc"),incident:e.hex("#f87171"),milestone:e.hex("#60a5fa")},retro:e.hex("#fb923c"),insight:e.hex("#a78bfa")},i=o.type||"agent-session",a=g$1[i]||e.white;if(console.log(),console.log(e.white.bold(` ${o.title}`)),console.log(e.gray(` ${o.id} \xB7 ${a(i)} \xB7 ${o.timestamp}`)),console.log(),console.log(` \u{1F464} ${e.white(o.author)}`),o.agent&&console.log(` \u{1F916} ${e.gray(o.agent.model)}${o.agent.provider?e.gray(` (${o.agent.provider})`):""}`),o.duration_minutes&&console.log(` \u23F1 ${o.duration_minutes} minutes`),console.log(),console.log(e.gray(" Summary:")),console.log(` ${o.summary}`),console.log(),o.body){console.log(e.gray(" Body:"));for(let l of o.body.split(`
|
|
5
5
|
`))console.log(` ${l}`);console.log();}if(o.linked_lore&&o.linked_lore.length>0){console.log(e.gray(" Linked lore:"));for(let l of o.linked_lore)console.log(` ${e.cyan(l)}`);console.log();}if(o.linked_tasks&&o.linked_tasks.length>0){console.log(e.gray(" Linked tasks:"));for(let l of o.linked_tasks)console.log(` ${e.yellow(l)}`);console.log();}if(o.linked_commits&&o.linked_commits.length>0){console.log(e.gray(" Linked commits:"));for(let l of o.linked_commits)console.log(` ${e.gray(l)}`);console.log();}if(o.symbols_touched?.length>0&&(console.log(e.gray(" Symbols touched:")),console.log(` ${o.symbols_touched.map(l=>e.cyan(l)).join(" ")}`),console.log()),o.symbols_created&&o.symbols_created.length>0&&(console.log(e.gray(" Symbols created:")),console.log(` ${o.symbols_created.map(l=>e.green(l)).join(" ")}`),console.log()),o.files_created&&o.files_created.length>0){console.log(e.gray(` Files created (${o.files_created.length}):`));for(let l of o.files_created.slice(0,10))console.log(` ${e.green("+")} ${l}`);o.files_created.length>10&&console.log(e.gray(` ... and ${o.files_created.length-10} more`)),console.log();}if(o.files_modified&&o.files_modified.length>0){console.log(e.gray(` Files modified (${o.files_modified.length}):`));for(let l of o.files_modified.slice(0,10))console.log(` ${e.yellow("~")} ${l}`);o.files_modified.length>10&&console.log(e.gray(` ... and ${o.files_modified.length-10} more`)),console.log();}if((o.lines_added||o.lines_removed)&&(console.log(` ${e.green(`+${o.lines_added||0}`)} ${e.red(`-${o.lines_removed||0}`)} lines`),console.log()),o.decisions&&o.decisions.length>0){console.log(e.gray(" Decisions:"));for(let l of o.decisions)console.log(` ${e.yellow("\u25BA")} ${e.white(l.decision)}`),console.log(` ${e.gray(l.rationale)}`);console.log();}if(o.errors_encountered&&o.errors_encountered.length>0){console.log(e.gray(" Errors encountered:"));for(let l of o.errors_encountered)console.log(` ${e.red("\u2717")} ${l.description}`),console.log(` ${e.green("\u2192")} ${l.resolution}${l.time_to_fix?e.gray(` (${l.time_to_fix})`):""}`);console.log();}if(o.learnings&&o.learnings.length>0){console.log(e.gray(" Learnings:"));for(let l of o.learnings)console.log(` ${e.blue("\u2022")} ${l}`);console.log();}if(o.verification){let l=o.verification.status==="pass"?e.green("\u2713 pass"):o.verification.status==="fail"?e.red("\u2717 fail"):o.verification.status==="partial"?e.yellow("\u26A0 partial"):e.gray("\xB7 untested");if(console.log(` Verification: ${l}`),o.verification.details)for(let[n,f]of Object.entries(o.verification.details)){let d=f==="pass"?e.green("\u2713"):e.red("\u2717");console.log(` ${d} ${n}`);}console.log();}if(o.review){let l=n=>e.yellow("\u2605".repeat(n)+"\u2606".repeat(5-n));console.log(e.gray(" Review:")),console.log(` Reviewer: ${o.review.reviewer}`),console.log(` Completeness: ${l(o.review.completeness)}`),console.log(` Quality: ${l(o.review.quality)}`),o.review.notes&&console.log(` Notes: ${o.review.notes}`),console.log();}if(o.commit&&console.log(` Commit: ${e.gray(o.commit)}`),o.git_context){let l=o.git_context;console.log(e.gray(" Git context:")),console.log(` ${e.gray(l.ref.slice(0,8))} on ${e.cyan(l.branch)}${l.dirty?e.yellow(" (dirty)"):""}`),console.log();}if(o.meta&&Object.keys(o.meta).length>0){console.log(e.gray(" Metadata:"));for(let[l,n]of Object.entries(o.meta))console.log(` ${e.white(l)}: ${e.gray(String(n))}`);console.log();}o.tags&&o.tags.length>0&&console.log(` Tags: ${o.tags.map(l=>e.gray(`[${l}]`)).join(" ")}`),console.log();}export{h as loreShowCommand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b,c,d}from'./chunk-D34YFK4M.js';import'./chunk-
|
|
2
|
+
import {b,c,d}from'./chunk-D34YFK4M.js';import'./chunk-XHJ27CER.js';import o from'chalk';async function p(s,i){let c$1=process.cwd(),e=b(c$1,s);if(e){if(i.json){console.log(JSON.stringify({...e.frontmatter,body:e.body},null,2));return}console.log(o.blue(`
|
|
3
3
|
${e.frontmatter.title}`)),console.log(o.gray(` ${e.frontmatter.type} \xB7 ${e.frontmatter.difficulty} \xB7 ${e.frontmatter.author}`)),e.frontmatter.tags.length>0&&console.log(o.gray(` Tags: ${e.frontmatter.tags.join(", ")}`)),e.frontmatter.symbols.length>0&&console.log(o.gray(` Symbols: ${e.frontmatter.symbols.join(", ")}`)),console.log(),console.log(e.body),console.log();return}let t=c(c$1,s);if(t){if(i.json){console.log(JSON.stringify(t,null,2));return}console.log(o.blue(`
|
|
4
4
|
${t.title}`)),console.log(o.gray(` quiz \xB7 ${t.difficulty} \xB7 ${t.questions.length} questions \xB7 pass: ${t.passThreshold*100}%`)),t.description&&console.log(o.gray(` ${t.description}`)),console.log();for(let n of t.questions){console.log(` ${o.cyan(n.id)}: ${n.question}`);for(let[l,g]of Object.entries(n.choices)){let y=l===n.correct?o.green("*"):" ";console.log(` ${y} ${l}: ${g}`);}n.explanation&&console.log(o.gray(` \u2192 ${n.explanation}`)),console.log();}return}let r=d(c$1,s);if(r){if(i.json){console.log(JSON.stringify(r,null,2));return}console.log(o.blue(`
|
|
5
5
|
${r.title}`)),console.log(o.gray(` learning path \xB7 ${r.steps.length} steps \xB7 ${r.ordered?"ordered":"unordered"}`)),r.description&&console.log(o.gray(` ${r.description}`)),console.log();for(let n=0;n<r.steps.length;n++){let l=r.steps[n],g=l.required?o.red("required"):o.gray("optional");console.log(` ${n+1}. ${o.cyan(l.content)} (${g})`),l.note&&console.log(o.gray(` ${l.note}`));}console.log();return}console.error(o.red(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {c,k,f as f$1}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import'./chunk-
|
|
2
|
+
import {c,k,f as f$1}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import'./chunk-XHJ27CER.js';import*as n from'fs';import*as f from'path';import o from'chalk';import y from'ora';async function w(t,r){let m=process.cwd(),i=f.join(m,".premise");console.log(o.blue(`
|
|
3
3
|
\u{1F4F8} Creating Snapshot...
|
|
4
4
|
`));let e=y("Loading .premise file...").start();try{n.existsSync(i)||(e.fail(".premise file not found"),console.log(o.yellow(`
|
|
5
5
|
Run "paradigm init" first to create a .premise file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b as b$1}from'./chunk-
|
|
2
|
+
import {b as b$1}from'./chunk-5YHR77AL.js';import {d}from'./chunk-RN35IVA2.js';import {e}from'./chunk-AO7ZSRME.js';import'./chunk-FYDRENK7.js';import {d as d$1}from'./chunk-EKZDFEJW.js';import'./chunk-XHJ27CER.js';import*as b from'path';import r from'chalk';import x from'ora';async function J(t,m,o){let f=m?b.resolve(m):process.cwd();if(!o.task){o.json?console.log(JSON.stringify({error:'Task is required. Use --task "..."'})):(console.log(r.red(`
|
|
3
3
|
Task is required. Use --task "..."`)),console.log(r.gray(`Example: paradigm team spawn architect --task "Design the payment API"
|
|
4
4
|
`)));return}let a=e(f);if(!a){o.json?console.log(JSON.stringify({error:"Team not configured"})):console.log(r.yellow("\nTeam not configured. Run `paradigm team init` first.\n"));return}if(!a.agents[t]){o.json?console.log(JSON.stringify({error:`Unknown agent: ${t}`,available:Object.keys(a.agents)})):(console.log(r.red(`
|
|
5
5
|
Unknown agent: ${t}`)),console.log(r.gray(`Available agents: ${Object.keys(a.agents).join(", ")}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a,e}from'./chunk-D34YFK4M.js';import'./chunk-
|
|
2
|
+
import {a,e}from'./chunk-D34YFK4M.js';import'./chunk-XHJ27CER.js';import t from'chalk';async function p(d){let a$1=process.cwd(),s=a(a$1);if(!s||s.totalContent===0){console.log(t.yellow(`
|
|
3
3
|
No university content found.`)),console.log(t.gray(` Create content with: paradigm university add note --title "My Note"
|
|
4
4
|
`));return}let n=e(a$1),r={},l={},c={};for(let o of s.entries){r[o.type]=(r[o.type]||0)+1,o.difficulty&&(c[o.difficulty]=(c[o.difficulty]||0)+1);for(let e of o.tags)l[e]=(l[e]||0)+1;}if(d.json){console.log(JSON.stringify({totalContent:s.totalContent,typeCounts:r,difficultyCounts:c,tagCounts:l,diplomaCount:n.length},null,2));return}console.log(t.blue(`
|
|
5
5
|
University Status
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {m,o as o$1,B}from'./chunk-T6IDXUUA.js';import {e}from'./chunk-JIXHEBGK.js';import {e as e$1}from'./chunk-QT2LKB3P.js';import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-
|
|
2
|
+
import {m,o as o$1,B}from'./chunk-T6IDXUUA.js';import {e}from'./chunk-JIXHEBGK.js';import {e as e$1}from'./chunk-QT2LKB3P.js';import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as l from'fs';import*as a from'path';import o from'chalk';import G from'ora';async function D(){let t=process.cwd();console.log(o.blue(`
|
|
3
3
|
\u{1F4CA} Paradigm Status
|
|
4
4
|
`)),console.log(o.gray("\u2500".repeat(40)));let i=a$1.command("status").start("Getting project status"),r=G("Scanning project...").start(),p=l.existsSync(a.join(t,".premise")),m$1=l.existsSync(a.join(t,".purpose")),f=l.existsSync(a.join(t,"portal.yaml"));r.stop(),console.log(o.white(`
|
|
5
5
|
Configuration Files`)),console.log(o.gray("\u2500".repeat(40))),console.log(` .premise: ${p?o.green("\u2713 Found"):o.yellow("\u25CB Not found")}`),console.log(` .purpose: ${m$1?o.green("\u2713 Found"):o.yellow("\u25CB Not found")}`),console.log(` portal.yaml: ${f?o.green("\u2713 Found"):o.yellow("\u25CB Not found")}`),r.start("Counting files...");let u=await e(t),y=await e$1(t);if(r.stop(),console.log(o.white(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {m}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {c as c$1,a}from'./chunk-
|
|
2
|
+
import {m}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {c as c$1,a}from'./chunk-DOCDDDTD.js';import'./chunk-JQKKVAAN.js';import'./chunk-XHJ27CER.js';import*as n from'fs';import*as c from'path';import o from'chalk';import S from'ora';async function F(){let p=process.cwd(),x=c.basename(p),l=S();console.log(o.blue(`
|
|
3
3
|
\u{1F4CA} Paradigm Summary
|
|
4
4
|
`));let r=c.join(p,".paradigm");(!n.existsSync(r)||!n.statSync(r).isDirectory())&&(console.log(o.red("\u274C No .paradigm/ directory found.")),console.log(o.gray(" Run `paradigm init` first.\n")),process.exit(1)),l.start("Aggregating symbols...");let m$1;try{m$1=await m(p),l.succeed(`Found ${m$1.symbols.length} symbols`);}catch(e){l.fail(o.red("Failed to aggregate symbols")),console.error(o.gray(e.message)),process.exit(1);}let u={components:{count:0,examples:[]},flows:{count:0,examples:[]},gates:{count:0,examples:[]},signals:{count:0,examples:[]},aspects:{count:0,examples:[]}};for(let e of m$1.symbols){let t=e.type,i=t==="component"?"components":t==="flow"?"flows":t==="gate"?"gates":t==="signal"?"signals":t==="aspect"?"aspects":null;i&&u[i]&&(u[i].count++,u[i].examples.length<3&&u[i].examples.push(e.symbol));}let a$1=[];n.existsSync(c.join(r,"config.yaml"))?a$1.push({check:"Config",status:"ok"}):a$1.push({check:"Config",status:"missing"});let k=["logger.md","scan.md","symbols.md"].every(e=>n.existsSync(c.join(r,"specs",e)));a$1.push({check:"Specs",status:k?"ok":"warn"});let j=n.existsSync(c.join(r,"docs"));a$1.push({check:"Docs",status:j?"ok":"warn"});let g=c$1(p);if(g.detected){let e=a(g.detected);e&&n.existsSync(c.join(p,e.outputPath))?a$1.push({check:`IDE (${g.detected})`,status:"ok"}):a$1.push({check:`IDE (${g.detected})`,status:"warn"});}let w=n.existsSync(c.join(r,"scan-index.json"))||n.existsSync(c.join(p,".paradigm-scan-index.json"));a$1.push({check:"Scan index",status:w?"ok":"missing"});let s=[];s.push(`# Project: ${x}`),s.push(""),s.push(`**Generated:** ${new Date().toISOString()}`),s.push("**Paradigm Version:** 0.2.0"),s.push(""),s.push("## Symbol Counts"),s.push(""),s.push("| Type | Count | Examples |"),s.push("|------|-------|----------|");for(let[e,t]of Object.entries(u))if(t.count>0){let i=t.examples.join(", ");s.push(`| ${e} | ${t.count} | ${i} |`);}s.push(""),s.push("## Source Files"),s.push(""),s.push(`- Purpose files: ${m$1.purposeFiles.length}`),s.push(`- Gate files: ${m$1.portalFiles.length}`),s.push(""),s.push("## Health Status"),s.push("");for(let e of a$1){let t=e.status==="ok"?"\u2713":e.status==="warn"?"\u26A0":"\u25CB";s.push(`- ${t} ${e.check}`);}s.push(""),s.push("---"),s.push("*Generated by `paradigm summary`*");let h=c.join(r,"project.md");l.start("Writing project.md...");try{n.writeFileSync(h,s.join(`
|
|
5
5
|
`),"utf8"),l.succeed(o.green("project.md generated"));}catch(e){l.fail(o.red("Failed to write project.md")),console.error(o.gray(e.message)),process.exit(1);}console.log(o.gray(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {b as b$1,c}from'./chunk-
|
|
2
|
+
import {b as b$1,c}from'./chunk-7YTAA6XA.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as l from'fs';import*as y from'path';import b from'chalk';import M from'ora';import*as $ from'js-yaml';import {glob}from'glob';var _=new Set(["node_modules","dist",".git",".next","build","coverage","__pycache__","target"]),L=new Set([".ts",".tsx",".js",".jsx",".py",".rs",".go",".java",".rb",".ex",".exs"]),P=14,O=90;function j(){return new Date().toISOString().slice(0,10)}function R(c){return !c.dry&&!c.skipFix}function W(c){let o=[];function u(e){let s;try{s=l.readdirSync(e,{withFileTypes:!0});}catch{return}for(let f of s){if(_.has(f.name))continue;let i=y.join(e,f.name);f.isDirectory()?u(i):f.name===".purpose"&&o.push(i);}}return u(c),o}function H(c){let o=new Set;function u(e){let s;try{s=l.readdirSync(e,{withFileTypes:!0});}catch{return}let f=false;for(let i of s){if(_.has(i.name))continue;let h=y.join(e,i.name);i.isDirectory()?u(h):L.has(y.extname(i.name))&&(f=true);}f&&o.add(e);}return u(c),[...o]}function z(c){let o=y.join(c,".paradigm","scan-index.json");if(!l.existsSync(o))return null;try{return JSON.parse(l.readFileSync(o,"utf8"))}catch{return null}}function B(c){let o=y.join(c,".paradigm","flow-index.json");if(!l.existsSync(o))return null;try{return JSON.parse(l.readFileSync(o,"utf8"))}catch{return null}}function I(c){let o=new Map,u=["components","features","flows","state","gates","signals","aspects"];for(let e of u){let s=c[e];if(!(!s||typeof s!="object"))for(let f of Object.values(s))f.symbol&&o.set(f.symbol,f);}return o}function G(c,o,u){let e=0;for(let s of o)if(s!==u)try{l.readFileSync(s,"utf8").includes(c)&&e++;}catch{}return e}function q(c,o,u,e){let s=[];if(!o)return s.push({check:"orphaned-symbols",category:"orphaned",status:"ok",message:"Skipped \u2014 no scan-index.json"}),s;let f=I(o),i=0,h=0;for(let[a,t]of f)if(G(a,u,t.path)===0){if(i++,R(e)){let n=t.path.endsWith(".purpose")?t.path:y.join(t.path,".purpose");if(l.existsSync(n))try{let r=l.readFileSync(n,"utf8");if(!r.includes("# orphan-detected:")||!r.includes(a)){r+=`
|
|
3
3
|
# orphan-detected: ${j()} \u2014 ${a} has 0 cross-references
|
|
4
4
|
`,l.writeFileSync(n,r,"utf8"),h++,s.push({check:"orphaned-symbols",category:"orphaned",status:"fixed",symbol:a,file:n,message:`${a} \u2014 0 cross-references, marked orphan`,fixAction:"Added orphan-detected comment"});continue}}catch{}}s.push({check:"orphaned-symbols",category:"orphaned",status:"entropy",symbol:a,file:t.path,message:`${a} \u2014 0 cross-references from other .purpose files`});}return i===0&&s.push({check:"orphaned-symbols",category:"orphaned",status:"ok",message:`All ${f.size} symbols have cross-references`}),s}function Y(c,o,u){let e=[],s=0;for(let f of o){let i=y.dirname(f),h;try{h=l.statSync(f).mtime.getTime();}catch{continue}let a=0,t="";try{let n=l.readdirSync(i,{withFileTypes:!0});for(let r of n){if(!r.isFile()||!L.has(y.extname(r.name)))continue;let g=l.statSync(y.join(i,r.name));g.mtime.getTime()>a&&(a=g.mtime.getTime(),t=r.name);}}catch{continue}if(a===0)continue;let d=(a-h)/(1e3*60*60*24);if(d>P){s++;let n=y.relative(c,f),r=Math.floor(d);if(R(u))try{let g=l.readFileSync(f,"utf8");if(!g.includes("# stale-since:")){g+=`
|
|
5
5
|
# stale-since: ${j()} \u2014 code in ${t} is ${r} days newer
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a,g}from'./chunk-22ISTMKI.js';import'./chunk-LKAT7IAK.js';import'./chunk-
|
|
2
|
+
import {a,g}from'./chunk-22ISTMKI.js';import'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as m from'fs';import*as p from'path';import n from'chalk';import y from'ora';function C(){let o=process.cwd();for(let t=0;t<5;t++){if(m.existsSync(p.join(o,"packages","paradigm-mcp","dist","index.js")))return o;let i=p.dirname(o);if(i===o)break;o=i;}return null}function S(o,t){return o.toLowerCase().includes("paradigm")||t==="paradigm-mcp"||t.includes("paradigm-mcp")}function w(o,t,i){if(!m.existsSync(o.configPath))return {success:false,message:"Config file not found",changed:false};let r;try{let g=m.readFileSync(o.configPath,"utf-8");r=JSON.parse(g);}catch{return {success:false,message:"Could not parse config",changed:false}}let a=false;if(o.id==="continue"){let g=r?.experimental?.modelContextProtocolServers||[];for(let s of g){let e=s?.transport;if(!e)continue;(e.command==="paradigm-mcp"||e.command==="node"&&String(e.args?.[0]||"").includes("paradigm-mcp"))&&(t==="dev"?(e.command="node",e.args=[i,"."]):(e.command="paradigm-mcp",e.args=["."]),a=true);}}else {let g=r?.mcpServers||{};for(let[s,e]of Object.entries(g))S(s,e?.command||"")&&(t==="dev"?(e.command="node",e.args=[i,...e.args?.filter(c=>c!=="paradigm-mcp")||["."]],e.args.some(c=>c==="."||c.startsWith("/"))||e.args.push("."),e.args=[...new Set(e.args)]):(e.command="paradigm-mcp",e.args=["."]),a=true);}return a&&m.writeFileSync(o.configPath,JSON.stringify(r,null,2)+`
|
|
3
3
|
`),{success:true,message:a?`Switched to ${t} mode`:"No paradigm server found",changed:a}}async function k(o){let t=y(),i=C();if(!i){o.json?console.log(JSON.stringify({error:"Not in paradigm source repo or packages/paradigm-mcp/dist/index.js not found"})):(console.log(n.red(`
|
|
4
4
|
Not in paradigm source repo.`)),console.log(n.gray("Run from the a-paradigm directory, or ensure packages/paradigm-mcp/dist/index.js exists.")),console.log(n.gray("You may need to run `npm run build` first.\n")));return}let r=p.join(i,"packages","paradigm-mcp","dist","index.js");if(!m.existsSync(r)){o.json?console.log(JSON.stringify({error:"MCP dist not built",path:r})):(console.log(n.red(`
|
|
5
5
|
MCP dist not built.`)),console.log(n.gray(`Expected: ${r}`)),console.log(n.gray("Run `npm run build` first.\n")));return}o.json||(console.log(n.blue(`
|