@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,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
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()+`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
2
|
+
export{a as ModelDiscovery}from'./chunk-Y4XFVDZC.js';import'./chunk-XHJ27CER.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {v}from'./chunk-
|
|
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();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-
|
|
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(`
|
|
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(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a,b}from'./chunk-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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);});})}
|
|
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-
|
|
2
|
+
export{a as getPluginUpdateNotice,c as runPluginUpdateCheck,b as schedulePluginUpdateCheck}from'./chunk-4UJ4NIEQ.js';import'./chunk-XHJ27CER.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {d,e}from'./chunk-SHD27BQX.js';import'./chunk-
|
|
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(`
|
|
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-
|
|
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';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a as a$1,c}from'./chunk-
|
|
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(`
|
|
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-
|
|
2
|
+
export{b as ROSTER_SUGGESTIONS,a as detectProjectType}from'./chunk-GE3GQALR.js';import'./chunk-XHJ27CER.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-
|
|
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.
|
|
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-
|
|
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!
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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}
|
|
@@ -0,0 +1,20 @@
|
|
|
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(`
|
|
3
|
+
No agents found.
|
|
4
|
+
`)),r.success("No results");return}console.log(e.bold(`
|
|
5
|
+
${o.length} agent(s) found`)+e.dim(` (of ${d.total})
|
|
6
|
+
`));for(let n of o){let i=n.scope.startsWith("@")?n.scope:`@${n.scope}`,h=e.cyan(`${i}/${n.name}`),t=e.dim("v"+(n.latestVersion||"0.1.0")),m=n.downloads>0?e.dim(` | ${n.downloads} downloads`):"",b=n.calibrationScore!=null?e.dim(` | calibration: ${(n.calibrationScore*100).toFixed(0)}%`):"";console.log(` ${h} ${t}${m}${b}`),n.description&&console.log(` ${n.description}`),n.tags?.length&&console.log(` ${e.dim("tags:")} ${n.tags.join(", ")}`),console.log();}console.log(e.dim(` Install: paradigm agent install @scope/name
|
|
7
|
+
`)),r.success(`Found ${o.length} agents`);}catch(a){console.error(e.red(`
|
|
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
|
+
Invalid agent name. Use @scope/name format.
|
|
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(`
|
|
12
|
+
Agent @${o}/${n} not found.
|
|
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
|
+
\u2713 Installed @${o}/${n}`)):(console.log(e.green(`
|
|
15
|
+
\u2713 Installed @${o}/${n} (metadata only)`)),console.log(e.dim(" Package not yet available for download."))),console.log(e.dim(` Location: ${w}`)),console.log(e.dim(` Run: paradigm agent show ${n}
|
|
16
|
+
`)),r.success(`Installed ${o}/${n}`);}catch(i){console.error(e.red(`
|
|
17
|
+
Install failed:`),i instanceof Error?i.message:i),console.log(""),r.error("Install failed");}}async function F(g){let p=a.command("agent-publish").start("Agent publish info",{});console.log(e.bold(`
|
|
18
|
+
Publishing agents to nevr.land
|
|
19
|
+
`)),console.log(" Use the nevr CLI to publish:"),console.log(e.cyan(" npm install -g @a-company/nevr")),console.log(e.cyan(" nevr auth login")),console.log(e.cyan(" nevr publish")),console.log(""),console.log(e.dim(` Full paradigm publish integration coming soon.
|
|
20
|
+
`)),p.success("Showed publish instructions");}export{D as agentInstallCommand,F as agentPublishCommand,O as agentSearchCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export{ka as getReindexToolsList,la as handleReindexTool,ma as rebuildStaticFiles}from'./chunk-X54WXWCX.js';import'./chunk-M4UMM6DC.js';import'./chunk-W6WVJLHO.js';import'./chunk-NFQLONFY.js';import'./chunk-F5BSUC2L.js';import'./chunk-3OMJI5TT.js';import'./chunk-XHJ27CER.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {f as f$1,d}from'./chunk-JIXHEBGK.js';import'./chunk-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
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-
|
|
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(`
|
|
3
3
|
\u2713 Review added to ${s}
|
|
4
4
|
`)):(console.error(r.red(`
|
|
5
5
|
Entry not found: ${s}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {D as D$1,m,o,r,p,x,y}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-
|
|
2
|
+
import {D as D$1,m,o,r,p,x,y}from'./chunk-T6IDXUUA.js';import'./chunk-JIXHEBGK.js';import'./chunk-QT2LKB3P.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as u from'path';import e from'chalk';import F from'ora';function I(s,t){let r$1=r(t,"flow"),a=[];for(let p of r$1){let l=p.data,i=l?.sequence||l?.gates||p.references,g=i.indexOf(s);g!==-1&&a.push({flow:p.symbol,position:g+1,total:i.length});}return a}function O(s){let t=u.dirname(s),r=`${t}/**/*.test.{ts,tsx}`,a=`npm test -- --testPathPattern="${t}"`;return {testPath:r,testCommand:a}}function C(s){return {components:s.filter(t=>t.type==="component").map(t=>t.symbol),gates:s.filter(t=>t.type==="gate").map(t=>t.symbol),signals:s.filter(t=>t.type==="signal").map(t=>t.symbol),flows:s.filter(t=>t.type==="flow").map(t=>t.symbol),aspects:s.filter(t=>t.type==="aspect").map(t=>t.symbol)}}function B(s,t){let r=p(t,s);if(!r)return null;let a=x(t,s),p$1=y(t,s),l=C(a),i=C(p$1),g=I(s,t),{testPath:m,testCommand:y$1}=O(r.filePath);return {symbol:r.symbol,type:r.type,path:r.filePath,description:r.description,requires:r.references,requiredBy:r.referencedBy,downstream:{components:l.components,signals:l.signals,aspects:l.aspects},upstream:{gates:i.gates,flows:i.flows},partOfFlows:g,testPath:m,testCommand:y$1}}async function D(s,t,r$1={}){let a$1=process.cwd(),p=t?u.resolve(a$1,t):a$1,l=D$1(s);l||(console.log(e.red(`
|
|
3
3
|
\u274C Invalid symbol format: ${s}`)),console.log(e.gray(" Symbols must start with @, #, ^, !, $, %, ~, or ?")),console.log(e.gray(` Example: paradigm ripple @checkout
|
|
4
4
|
`)),process.exit(1)),!r$1.quiet&&!r$1.json&&console.log(e.blue(`
|
|
5
5
|
\u{1F30A} Ripple Analysis for ${e.cyan(s)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a as a$1,f,c,e,g as g$1,b as b$1,d}from'./chunk-WR6D3SC6.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-
|
|
2
|
+
import {a as a$1,f,c,e,g as g$1,b as b$1,d}from'./chunk-WR6D3SC6.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import*as g from'fs';import*as m from'path';import*as b from'os';import r from'chalk';import*as $ from'js-yaml';var x=m.join(b.homedir(),".paradigm","agents"),O=".agent";function C(){return m.join(process.cwd(),".paradigm","roster.yaml")}function k(){let n=C();if(!g.existsSync(n))return null;try{return $.load(g.readFileSync(n,"utf-8"))}catch{return null}}function F(n){let s=C(),c=m.dirname(s);g.existsSync(c)||g.mkdirSync(c,{recursive:true}),g.writeFileSync(s,$.dump(n,{lineWidth:-1,noRefs:true,sortKeys:false}),"utf-8");}function E(){if(!g.existsSync(x))return [];try{return g.readdirSync(x).filter(n=>n.endsWith(O)).map(n=>n.replace(O,"")).sort()}catch{return []}}function P(n){let s=m.join(x,`${n}${O}`);if(!g.existsSync(s))return null;try{let c=$.load(g.readFileSync(s,"utf-8"));return {id:c.id||n,nickname:c.nickname,role:c.role||"Unknown"}}catch{return null}}async function U(n={}){let s=process.cwd(),c$1=a.command("agent-roster-show").start("Showing project roster",{cwd:s}),o=E().length,i=k();if(!i){n.json?a$1(JSON.stringify({roster:null,message:"No roster configured",totalAgents:o})):(f("Agent Roster"),a$1(""),c(`No roster configured \u2014 all ${o} agents are active.`),e(` Run ${r.cyan("paradigm agent roster init")} to create one.`),a$1("")),c$1.success("No roster found");return}let t=i.active||[];if(n.json){let h=t.map(y=>P(y)||{id:y,role:"Unknown"});a$1(JSON.stringify({count:t.length,total:o,project:i.project,type:i.type,agents:h},null,2)),c$1.success(`${t.length} of ${o} agents active`);return}f("Agent Roster"),a$1("");let a$2="ID".padEnd(16),l="Nickname".padEnd(12);a$1(` ${r.dim(a$2)} ${r.dim(l)} ${r.dim("Role")}`),a$1(` ${r.dim("-".repeat(16))} ${r.dim("-".repeat(12))} ${r.dim("-".repeat(30))}`);for(let h of t.sort()){let y=P(h),f=y?.nickname||r.dim("\u2014"),S=y?.role||r.dim("Unknown");a$1(` ${r.white.bold(h.padEnd(16))} ${f.toString().padEnd(12)} ${r.gray(S)}`);}a$1(""),a$1(` ${r.cyan(String(t.length))} of ${r.cyan(String(o))} agents active on this project`),i.type&&g$1("Project type",i.type),a$1(""),c$1.success(`${t.length} of ${o} agents active`);}async function G(n={}){let s=process.cwd(),c$1=a.command("agent-roster-init").start("Initializing project roster",{cwd:s}),u=C();if(g.existsSync(u)&&!n.force){let S=k()?.active?.length??0;n.json?a$1(JSON.stringify({error:"Roster already exists",count:S})):(c(`Roster already exists with ${S} agents.`),e(` Use ${r.cyan("--force")} to reinitialize, or ${r.cyan("paradigm agent roster add/remove")} to modify.`)),c$1.error("Roster already exists");return}let{detectProjectType:o,ROSTER_SUGGESTIONS:i}=await import('./project-type-MRBJAKC7.js'),t=o(s),a$2=i[t]||i.generic,l=m.basename(s),d=m.join(s,".paradigm","config.yaml");if(g.existsSync(d))try{let f=$.load(g.readFileSync(d,"utf-8"));f?.project&&typeof f.project=="string"&&(l=f.project);}catch{}let h={version:"1.0",project:l,type:t,active:a$2.sort()};F(h);let y=E();n.json?a$1(JSON.stringify({created:true,project:l,type:t,active:a$2.sort(),count:a$2.length,total:y.length},null,2)):(f("Agent Roster Initialized"),a$1(""),g$1("Project",l),g$1("Detected type",t),g$1("Active agents",`${a$2.length} of ${y.length}`),a$1(""),a$1(` ${r.cyan(a$2.sort().join(", "))}`),a$1(""),b$1(`Roster written to ${r.dim(".paradigm/roster.yaml")}`),e(` Modify with ${r.cyan("paradigm agent roster add/remove <agent-id>")}`),a$1("")),c$1.success(`Created roster: ${a$2.length} agents for ${t}`);}async function _(n,s={}){let c=process.cwd(),u=a.command("agent-roster-add").start(`Adding agents: ${n.join(", ")}`,{cwd:c}),o=k();if(!o){s.json?a$1(JSON.stringify({error:"No roster found. Run `paradigm agent roster init` first."})):(d("No roster found."),e(` Run ${r.cyan("paradigm agent roster init")} first.`)),u.error("No roster found");return}let i=E(),t=[],a$2=[],l=[];for(let d of n){if(!i.includes(d)){t.push(d);continue}if(o.active.includes(d)){a$2.push(d);continue}o.active.push(d),l.push(d);}l.length>0&&(o.active.sort(),F(o)),s.json?a$1(JSON.stringify({added:l,alreadyActive:a$2,invalid:t,total:o.active.length},null,2)):(l.length>0&&b$1(`Added: ${r.cyan(l.join(", "))}`),a$2.length>0&&e(` Already active: ${a$2.join(", ")}`),t.length>0&&(d(`Unknown agent(s): ${t.join(", ")}`),e(` Available: ${i.join(", ")}`)),l.length>0&&a$1(` Roster now has ${r.cyan(String(o.active.length))} active agents.`)),u.success(`Added ${l.length}, skipped ${a$2.length}, invalid ${t.length}`);}async function z(n,s={}){let c$1=process.cwd(),u=a.command("agent-roster-remove").start(`Removing agents: ${n.join(", ")}`,{cwd:c$1}),o=k();if(!o){s.json?a$1(JSON.stringify({error:"No roster found. Run `paradigm agent roster init` first."})):(d("No roster found."),e(` Run ${r.cyan("paradigm agent roster init")} first.`)),u.error("No roster found");return}let i=[],t=[];for(let a of n){let l=o.active.indexOf(a);if(l<0){i.push(a);continue}o.active.splice(l,1),t.push(a);}t.length>0&&F(o),s.json?a$1(JSON.stringify({removed:t,notFound:i,total:o.active.length},null,2)):(t.length>0&&b$1(`Removed: ${r.cyan(t.join(", "))}`),i.length>0&&c(`Not in roster: ${i.join(", ")}`),t.length>0&&a$1(` Roster now has ${r.cyan(String(o.active.length))} active agents.`)),u.success(`Removed ${t.length}, not found ${i.length}`);}export{_ as rosterAddCommand,G as rosterInitCommand,z as rosterRemoveCommand,U as rosterShowCommand};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-XHJ27CER.js';import*as i from'fs';import*as r from'path';import o from'chalk';var m=["specs","implementation-guides","prompts","decisions"];function f(e){let s=new Date().toISOString().slice(0,10);return `# .index.yaml
|
|
3
|
+
# AI navigation index \u2014 read this before reading any file in this directory
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: TODO: Describe what .paradigm/${e}/ contains
|
|
6
|
+
updated: ${s}
|
|
7
|
+
|
|
8
|
+
documents:
|
|
9
|
+
# - id: example-doc
|
|
10
|
+
# file: example.md
|
|
11
|
+
# title: Example Document
|
|
12
|
+
# summary: One-line description for quick scanning
|
|
13
|
+
# tags: []
|
|
14
|
+
|
|
15
|
+
dependencies: []
|
|
16
|
+
|
|
17
|
+
subdirs: []
|
|
18
|
+
`}async function p(e={}){let s=e.rootDir||process.cwd(),c=r.join(s,".paradigm");if(!i.existsSync(c)){console.log(o.red("No .paradigm/ directory found in current directory."));return}let t=0,a=0;for(let n of m){let d=r.join(c,n);if(!i.existsSync(d)||!i.statSync(d).isDirectory())continue;let l=r.join(d,".index.yaml");if(i.existsSync(l)){e.quiet||console.log(o.dim(` skip .paradigm/${n}/.index.yaml \u2014 already exists`)),a++;continue}if(e.dryRun){console.log(o.cyan(` would create .paradigm/${n}/.index.yaml`)),t++;continue}i.writeFileSync(l,f(n),"utf8"),e.quiet||console.log(o.green(` created .paradigm/${n}/.index.yaml`)),t++;}if(!e.quiet){let n=e.dryRun?"Would create":"Created";console.log(""),console.log(`${n} ${o.bold(String(t))} .index.yaml stub${t===1?"":"s"}${a>0?`, skipped ${a} (already exist)`:""}.`),t>0&&!e.dryRun&&console.log(o.dim("Edit each stub to describe the directory contents."));}}export{p as docsScaffoldCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {a as a$2}from'./chunk-
|
|
2
|
+
import {a as a$2}from'./chunk-Z72SDTBJ.js';import {h,f,a as a$1,e,d,b,g as g$1,c}from'./chunk-WR6D3SC6.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-XHJ27CER.js';import g from'chalk';import*as v from'fs/promises';import*as $ from'path';import*as S from'js-yaml';var F=".paradigm/adoptions.yaml",E=".paradigm/.pending-scope-reviews";function k(e,o){let s=e?.permissions??[],r=o.permissions??[],n=new Map;for(let p of s)n.set(p.id,p);let t=new Map;for(let p of r)t.set(p.id,p);let i=[],d=[],a=[],f=[];for(let p of r){let j=n.get(p.id);j?j.description!==p.description?(i.push({scope:p,status:"expanded"}),f.push(p)):(i.push({scope:p,status:"kept"}),f.push(p)):(i.push({scope:p,status:"new"}),d.push(p));}for(let p of s)t.has(p.id)||(i.push({scope:p,status:"removed"}),a.push(p));let m=d.length>0;return {agentId:"",previousVersion:e?.version??"0.0.0",newVersion:o.version,added:d,removed:a,kept:f,entries:i,requiresApproval:m}}function D(e,o,s,r){let n=[];s&&r?n.push(` Updating ${g.white.bold(o)} ${g.dim(s)} ${g.dim("\u2192")} ${g.dim(r)}...`):n.push(` Scopes for ${g.white.bold(o)}:`),n.push(""),n.push(` ${g.dim("Scope changes:")}`),n.push(` ${g.dim("\u2500".repeat(49))}`);for(let i of e.entries){let d=i.scope.id,a=i.scope.description;switch(i.status){case "kept":n.push(` ${g.dim("[kept]")} ${d.padEnd(24)} ${g.dim(a)}`);break;case "expanded":n.push(` ${g.yellow("[expanded]")} ${d.padEnd(24)} ${g.yellow(a)}`);break;case "new":n.push(` ${g.green("+")} ${g.green("[new]")} ${g.green(d.padEnd(24))} ${g.green(a)}`);break;case "removed":n.push(` ${g.red("-")} ${g.red("[removed]")} ${g.red(d.padEnd(24))} ${g.red(a)}`);break}}n.push("");let t=[];return e.added.length>0&&t.push(g.green(`${e.added.length} new`)),e.removed.length>0&&t.push(g.red(`${e.removed.length} removed`)),e.kept.length>0&&t.push(g.dim(`${e.kept.length} unchanged`)),t.length>0&&n.push(` ${t.join(", ")}`),n.join(`
|
|
3
3
|
`)}async function O(e){let o=$.join(e,F);try{let s=await v.readFile(o,"utf-8");return S.load(s)??null}catch{return null}}async function V(e,o){let s=$.join(e,F),r=$.dirname(s);await v.mkdir(r,{recursive:true}),await v.writeFile(s,S.dump(o,{lineWidth:120,noRefs:true,sortKeys:false}),"utf-8");}async function q(e,o,s){a.component("#scopes-approval").info("Approving scopes",{agentId:o});let n=await O(e);n||(n={version:"1.0","adopted-at":"","project-type":"",agents:{}});let t=n.agents??{},i=new Date().toISOString().split("T")[0],d={...s,approved:i};t[o]||(t[o]={}),t[o]["scopes-approved"]=i,t[o].scopes=d,n.agents=t,await V(e,n),await C(e,o),a.component("#scopes-approval").info("Scopes approved",{agentId:o,date:i});}async function T(e,o){a.component("#scopes-denial").info("Denying scopes",{agentId:o});let s=await O(e);s||(s={version:"1.0","adopted-at":"","project-type":"",agents:{}});let r=s.agents??{};r[o]||(r[o]={}),r[o]["scopes-denied"]=new Date().toISOString().split("T")[0],s.agents=r,await V(e,s),await C(e,o),a.component("#scopes-denial").info("Scopes denied",{agentId:o});}async function R(e){let o=$.join(e,E);try{let s=await v.readFile(o,"utf-8"),r=S.load(s);if(!r?.reviews)return {};let n={};for(let[t,i]of Object.entries(r.reviews))n[t]={old:i.old??void 0,new:i.new};return n}catch{return {}}}async function C(e,o){let s=$.join(e,E);try{let r=await v.readFile(s,"utf-8"),n=S.load(r);if(!n?.reviews)return;delete n.reviews[o],Object.keys(n.reviews).length===0?await v.unlink(s):await v.writeFile(s,S.dump(n,{lineWidth:120,noRefs:!0,sortKeys:!1}),"utf-8");}catch{}}async function U(e$1,o={}){let s=process.cwd(),r=a.command("agent-review").start("Reviewing agent scopes",{cwd:s,id:e$1}),n=await R(s),t=Object.keys(n);if(t.length===0){o.json?h({pending:0,agents:[]}):(f("Agent Scope Reviews"),a$1(""),e(" No pending scope reviews."),a$1("")),r.success("No pending reviews");return}if(!e$1){if(o.json){let a=t.map(f=>{let m=n[f],p=k(m.old,m.new);return {id:f,added:p.added.length,removed:p.removed.length,kept:p.kept.length,requiresApproval:p.requiresApproval}});h({pending:t.length,agents:a});}else {f("Pending Scope Reviews"),a$1(""),a$1(` ${g.cyan(String(t.length))} agent(s) with pending scope changes:`),a$1("");for(let a of t){let f=n[a],m=k(f.old,f.new),p=m.added.length>0?g.green(`+${m.added.length} new`):"",j=m.removed.length>0?g.red(`-${m.removed.length} removed`):"",M=[p,j].filter(Boolean).join(", ");a$1(` ${g.white.bold(a.padEnd(20))} ${M||g.dim("description changes only")}`);}a$1(""),e(` Review individually: ${g.cyan("paradigm agent review <id>")}`),e(` Quick approve: ${g.cyan("paradigm agent approve <id>")}`),a$1("");}r.success(`${t.length} pending reviews listed`);return}let i=n[e$1];if(!i){o.json?h({error:`No pending review for agent "${e$1}"`}):(d(`No pending scope review for agent "${e$1}".`),t.length>0&&e(` Pending reviews exist for: ${t.join(", ")}`)),r.error(`No pending review for ${e$1}`);return}let d$1=k(i.old,i.new);d$1.agentId=e$1,o.json?h({agentId:e$1,diff:{previousVersion:d$1.previousVersion,newVersion:d$1.newVersion,added:d$1.added,removed:d$1.removed,kept:d$1.kept,requiresApproval:d$1.requiresApproval}}):(f("Scope Review"),a$1(""),a$1(D(d$1,e$1,d$1.previousVersion,d$1.newVersion)),a$1(""),d$1.requiresApproval?(e(` To approve: ${g.cyan(`paradigm agent approve ${e$1}`)}`),e(` To deny: ${g.cyan(`paradigm agent deny ${e$1}`)}`)):(e(" No new scopes \u2014 description changes only. Auto-approvable."),e(` Approve: ${g.cyan(`paradigm agent approve ${e$1}`)}`)),a$1("")),r.success(`Showed review for ${e$1}`);}async function H(e$1,o={}){let s=process.cwd(),r=a.command("agent-approve").start("Approving agent scopes",{cwd:s,id:e$1}),n=await R(s),t=n[e$1];if(!t){if(o.json)h({error:`No pending review for agent "${e$1}"`});else {d(`No pending scope review for agent "${e$1}".`);let i=Object.keys(n);i.length>0?e(` Pending reviews exist for: ${i.join(", ")}`):e(" No pending reviews.");}r.error(`No pending review for ${e$1}`);return}await q(s,e$1,t.new),o.json?h({agentId:e$1,approved:true,scopeVersion:t.new.version,permissions:t.new.permissions.length}):(b(`Scopes approved for ${g.white.bold(e$1)}`),g$1("Scope version",t.new.version),g$1("Permissions",String(t.new.permissions.length)),a$1("")),r.success(`Approved scopes for ${e$1}`);}async function J(e$1,o={}){let s=process.cwd(),r=a.command("agent-deny").start("Denying agent scopes",{cwd:s,id:e$1}),n=await R(s);if(!n[e$1]){if(o.json)h({error:`No pending review for agent "${e$1}"`});else {d(`No pending scope review for agent "${e$1}".`);let i=Object.keys(n);i.length>0?e(` Pending reviews exist for: ${i.join(", ")}`):e(" No pending reviews.");}r.error(`No pending review for ${e$1}`);return}await T(s,e$1),o.json?h({agentId:e$1,denied:true,message:"Agent will continue using previously approved scopes."}):(c(`Scopes denied for ${g.white.bold(e$1)}`),e(" Agent will continue using previously approved scopes."),a$1("")),r.success(`Denied scopes for ${e$1}`);}async function X(e$1,o={}){let s=process.cwd(),r=a.command("agent-scopes").start("Showing agent scopes",{cwd:s,id:e$1}),n=await a$2(s);if(!n||!n.agents[e$1]){o.json?h({error:`Agent "${e$1}" not found in adoptions`}):(d(`Agent "${e$1}" not found in adoption records.`),e(` Run ${g.cyan("paradigm shift")} to initialize adoptions.`)),r.error(`Agent ${e$1} not in adoptions`);return}let t=n.agents[e$1],a$3=(await W(s))?.agents?.[e$1]?.scopes;if(o.json){h({agentId:e$1,source:t.source,scopesApproved:t.scopesApproved||null,scopes:a$3||null}),r.success(`Showed scopes for ${e$1}`);return}if(f(`Scopes: ${e$1}`),a$1(""),g$1("Source",t.source),g$1("Adopted",t.adopted),!a$3||!a$3.permissions||a$3.permissions.length===0){a$1(""),e(" No scopes declared. Agent is using default permissions."),a$1(""),r.success(`No scopes for ${e$1}`);return}g$1("Scope version",a$3.version),a$3.approved&&g$1("Approved",a$3.approved),a$1(""),a$1(` ${g.bold("Permissions:")}`);for(let f of a$3.permissions){let p=a$3.dangerous?.includes(f.id)?g.yellow(f.id.padEnd(24)):g.white(f.id.padEnd(24));a$1(` ${p} ${g.gray(f.description)}`);}if(a$3.dangerous&&a$3.dangerous.length>0){a$1(""),a$1(` ${g.yellow("Dangerous scopes")} (require runtime confirmation):`);for(let f of a$3.dangerous)a$1(` ${g.yellow(f)}`);}a$1(""),r.success(`Showed scopes for ${e$1}`);}async function W(e){let o=await import('fs/promises'),s=await import('path'),r=await import('js-yaml'),n=s.join(e,".paradigm","adoptions.yaml");try{let t=await o.readFile(n,"utf-8");return r.load(t)??null}catch{return null}}export{H as agentApproveCommand,J as agentDenyCommand,U as agentReviewCommand,X as agentScopesCommand};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import o from'chalk';async function g(i,l){let t=i||process.cwd(),r=parseInt(l.port||"3838",10),a=l.open!==false;console.log(o.cyan(`
|
|
3
3
|
Starting Sentinel...
|
|
4
|
-
`));try{let{startServer:n}=await import('./server-
|
|
4
|
+
`));try{let{startServer:n}=await import('./server-AIXFROYL.js');console.log(o.gray(`Project: ${t}`)),console.log(o.gray(`Port: ${r}`)),console.log(),await n({port:r,projectDir:t,open:a}),console.log(o.green(`
|
|
5
5
|
Sentinel is running at http://localhost:${r}`)),console.log(o.gray(`
|
|
6
6
|
Press Ctrl+C to stop
|
|
7
7
|
`)),await new Promise(()=>{});}catch(n){let e=n.code,s=n.message||"";e==="ERR_MODULE_NOT_FOUND"||e==="MODULE_NOT_FOUND"?(console.error(o.red(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import'./chunk-
|
|
2
|
+
import'./chunk-XHJ27CER.js';import {Router}from'express';import c from'chalk';var m={component(s){let o=c.magenta(`#${s}`);return {info:r=>console.log(`${c.blue("i")} ${o} ${r}`),success:r=>console.log(`${c.green("+")} ${o} ${r}`),warn:r=>console.log(`${c.yellow("!")} ${o} ${r}`),error:r=>console.error(`${c.red("x")} ${o} ${r}`)}}};async function O(s,o){try{let w=function(t,u){let b={type:"sentinel:log",entry:t};u&&!u.known&&(b.validation=u),o(b),(t.symbolType==="signal"||t.symbolType==="gate"||t.symbolType==="flow")&&o({type:"sentinel:flow_event",flowId:t.symbolType==="flow"?t.symbol:void 0,nodeSymbol:t.symbol,event:t.symbolType,timestamp:t.timestamp,service:t.service});},y=function(t){o({type:"sentinel:event",event:t});};var r=w,B=y;let g=await import('./server-AIXFROYL.js'),{SentinelStorage:R,loadServerConfig:f,loadSymbolIndex:p,PARADIGM_SCHEMA:S,SYMPHONY_SCHEMA:v,createLogsRouter:$,createServicesRouter:h,createStateRouter:k,createMetricsRouter:A,createTracesRouter:C,createSchemasRouter:I,createEventsRouter:M,createSymbolsRouter:T,createInfoRouter:x,createCommitsRouter:P,createIncidentsRouter:L,createPatternsRouter:E,createAuthMiddleware:H,createRateLimiter:_}=g,n=new R;await n.ensureReady(),n.registerSchema(S),n.registerSchema(v),m.component("sentinel-bridge").info("Registered builtin schemas");let l=f(s),d=[];try{d=await p(s);}catch{m.component("sentinel-bridge").warn("Could not load symbol index");}let e=Router(),i=H(l.auth),a=_(l.rateLimit);return e.use("/logs",a,i("write"),$({storage:n,serverConfig:l,onLogReceived:w,symbolIndex:d})),e.use("/services",a,i("write"),h({storage:n})),e.use("/state",a,i("write"),k({storage:n})),e.use("/metrics",a,i("write"),A({storage:n,serverConfig:l})),e.use("/traces",a,i("write"),C({storage:n})),e.use("/schemas",a,i("write"),I({storage:n})),e.use("/events",a,i("write"),M({storage:n,serverConfig:l,onEventReceived:y})),e.use("/symbols",T(s)),e.use("/info",x(s)),e.use("/commits",P(s)),e.use("/incidents",L(s)),e.use("/patterns",E(s)),e}catch{return m.component("sentinel-bridge").warn("Sentinel package not available \u2014 skipping"),null}}export{O as createSentinelBridge};
|