@a-company/paradigm 5.10.0 → 5.21.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-IUAWQZUN.js +18 -0
- package/dist/add-P76GEMGF.js +8 -0
- package/dist/agent-UUTYOFTH.js +33 -0
- package/dist/agent-loader-EPXURMO7.js +2 -0
- package/dist/agent-loader-PYGPX6D2.js +2 -0
- package/dist/agent-state-KSQ3S7OB.js +2 -0
- package/dist/agents-suggest-HYTFMQD3.js +10 -0
- package/dist/aggregate-W66DM3GA.js +10 -0
- package/dist/ambient-HYZR42NX.js +35 -0
- package/dist/assess-UFPYEJKP.js +9 -0
- package/dist/auto-RHJXOZFL.js +14 -0
- package/dist/beacon-5QVYV5DF.js +13 -0
- package/dist/calibration-OLJYB5HN.js +7 -0
- package/dist/check-THVGY4R5.js +14 -0
- package/dist/chunk-22ISTMKI.js +31 -0
- package/dist/chunk-2QO33NYK.js +3 -0
- package/dist/chunk-33LKBMVK.js +134 -0
- package/dist/chunk-4QADCWPU.js +7 -0
- package/dist/chunk-4TXOVRWD.js +3 -0
- package/dist/chunk-4UJ4NIEQ.js +4 -0
- package/dist/chunk-4ZGGWZ32.js +3 -0
- package/dist/chunk-5TAVYPOV.js +2 -0
- package/dist/chunk-6EX37L4Q.js +8 -0
- package/dist/chunk-AD5TAD2A.js +5 -0
- package/dist/chunk-AGVAHVUA.js +2 -0
- package/dist/chunk-AO7ZSRME.js +13 -0
- package/dist/chunk-BFD3GFRK.js +2 -0
- package/dist/chunk-D34YFK4M.js +6 -0
- package/dist/chunk-DVZWCXB6.js +2 -0
- package/dist/chunk-EKZDFEJW.js +2 -0
- package/dist/chunk-ET5XJTSX.js +2 -0
- package/dist/chunk-FYDRENK7.js +3 -0
- package/dist/chunk-HMQ5BHP2.js +743 -0
- package/dist/chunk-HXKWL3VK.js +29 -0
- package/dist/chunk-IZSBGW6E.js +2 -0
- package/dist/chunk-J32OPJEX.js +2 -0
- package/dist/chunk-JBDMCRPP.js +7 -0
- package/dist/chunk-JIXHEBGK.js +7 -0
- package/dist/chunk-JNSJVCTU.js +2 -0
- package/dist/chunk-JQKKVAAN.js +2 -0
- package/dist/chunk-KLBH26PA.js +429 -0
- package/dist/chunk-L6K5HNDL.js +24 -0
- package/dist/chunk-LKAT7IAK.js +2 -0
- package/dist/chunk-M4UMM6DC.js +5 -0
- package/dist/chunk-NKYNHSA5.js +424 -0
- package/dist/chunk-NW6OKHE6.js +5 -0
- package/dist/chunk-NXRVR37G.js +60 -0
- package/dist/chunk-ODVKPZZ4.js +2 -0
- package/dist/chunk-PUBB7LIT.js +5 -0
- package/dist/chunk-Q2J542ST.js +2 -0
- package/dist/chunk-QGZRM6ZB.js +2 -0
- package/dist/chunk-QNZEG7IT.js +13 -0
- package/dist/chunk-QT2LKB3P.js +7 -0
- package/dist/chunk-RVRARWSY.js +9 -0
- package/dist/chunk-T6IDXUUA.js +2 -0
- package/dist/chunk-TYWB5IQJ.js +3 -0
- package/dist/chunk-UIKLE3WD.js +2 -0
- package/dist/chunk-V7K6CQVX.js +111 -0
- package/dist/chunk-VCKKJDLP.js +8 -0
- package/dist/chunk-VG7FN2TU.js +4 -0
- package/dist/chunk-W5IWDW4Y.js +16 -0
- package/dist/chunk-W7C6FFMO.js +8 -0
- package/dist/chunk-WESTEMIM.js +10 -0
- package/dist/chunk-WR6D3SC6.js +5 -0
- package/dist/chunk-WS2N27RX.js +3 -0
- package/dist/chunk-XMAV5AG6.js +2 -0
- package/dist/chunk-XROULIQN.js +2 -0
- package/dist/chunk-XUFYOXOU.js +3 -0
- package/dist/chunk-Y4XFVDZC.js +3 -0
- package/dist/chunk-Y6KXTQBG.js +2 -0
- package/dist/{chunk-GTR2TBIJ.js → chunk-Z2UZUCY6.js} +237 -1047
- package/dist/chunk-Z34K6GY2.js +8 -0
- package/dist/claude-4LR3LJQZ.js +13 -0
- package/dist/claude-cli-UP6HGH7C.js +6 -0
- package/dist/claude-code-RLJ4GX77.js +11 -0
- package/dist/claude-code-teams-R37HJY3Y.js +29 -0
- package/dist/commands-LMUD5L6R.js +455 -0
- package/dist/compliance-GZ7UAOG3.js +6 -0
- package/dist/conductor-Y5IXELTL.js +4 -0
- package/dist/config-schema-HR7LDEQ6.js +2 -0
- package/dist/constellation-CG7C4WFE.js +13 -0
- package/dist/context-audit-RSSRX6XC.js +6 -0
- package/dist/cost-IDNVMAEV.js +10 -0
- package/dist/cost-PK4KIF7R.js +2 -0
- package/dist/cursor-cli-QKF7Z6M2.js +4 -0
- package/dist/cursorrules-U5O4G5T4.js +14 -0
- package/dist/decision-loader-2XPZE4EZ.js +2 -0
- package/dist/delete-P5VULXR4.js +14 -0
- package/dist/diff-RTFUKJHF.js +9 -0
- package/dist/discipline-H7LDI6NT.js +2 -0
- package/dist/dist-3ZCH25SG.js +2 -0
- package/dist/dist-KGRCLBJP-2QAPFYNF.js +39 -0
- package/dist/dist-R3RWD35F.js +2 -0
- package/dist/dist-VGFSP3XM.js +2 -0
- package/dist/dist-VXCZWVVJ.js +2 -0
- package/dist/dist-W3XCATBJ.js +2 -0
- package/dist/docs-EDQ2STFK.js +2 -0
- package/dist/docs-RXPN6CK7.js +12 -0
- package/dist/doctor-2T2QL6VM.js +2 -0
- package/dist/drift-ILZE5BFJ.js +13 -0
- package/dist/echo-UPTQUEDU.js +46 -0
- package/dist/edit-GUU3HBVW.js +9 -0
- package/dist/event-Y3VXC2RV.js +3 -0
- package/dist/explain-files-3GPZUETV.js +4 -0
- package/dist/export-CV5KCTPS.js +2 -0
- package/dist/flow-S3RQ4YPY.js +11 -0
- package/dist/global-C44FW4G2.js +13 -0
- package/dist/graduate-3BBSC27A.js +5 -0
- package/dist/graph-CNDE5TAT.js +2 -0
- package/dist/graph-server-COZR5C3Z.js +14 -0
- package/dist/habits-4J2KRYUL.js +42 -0
- package/dist/history-UW454SDP.js +12 -0
- package/dist/hooks-XH52VGOU.js +2 -0
- package/dist/index.js +15 -1039
- package/dist/init-24MAQJFM.js +2 -0
- package/dist/integrity-UYDOOJDP.js +7 -0
- package/dist/integrity-checker-DHGMZQDG.js +2 -0
- package/dist/journal-loader-GLH7XFTK.js +2 -0
- package/dist/lint-IGKE6UPS.js +26 -0
- package/dist/list-5IUGP3ZB.js +7 -0
- package/dist/list-YKIQNKGB.js +6 -0
- package/dist/lore-loader-RVQI5GXL.js +2 -0
- package/dist/lore-loader-XY5MZRR2.js +2 -0
- package/dist/lore-server-FC2GMDLT.js +14 -0
- package/dist/manual-RXSPSFLL.js +20 -0
- package/dist/mcp.js +93 -20484
- package/dist/migrate-X5OMAFAQ.js +59 -0
- package/dist/migrate-assessments-GEI5WMI2.js +4 -0
- package/dist/model-discovery-HMB3YI4L.js +2 -0
- package/dist/nomination-engine-XF7TWPAP.js +2 -0
- package/dist/notebook-PE3JSYZI.js +11 -0
- package/dist/notebook-loader-CENTDDUJ.js +2 -0
- package/dist/orchestrate-35HBQ3O3.js +8 -0
- package/dist/peers-P2KXU7ZK.js +5 -0
- package/dist/persona-STQWZH5P.js +29 -0
- package/dist/pipeline-MZUITRVN.js +4 -0
- package/dist/platform-server-2KXHGHFV.js +25 -0
- package/dist/plugin-update-checker-M7PW434O.js +2 -0
- package/dist/portal-check-3JVNLOEP.js +8 -0
- package/dist/portal-compliance-2UG4VKWH.js +2 -0
- package/dist/probe-5L5BQDGE.js +6 -0
- package/dist/project-type-SURTOIG7.js +2 -0
- package/dist/promote-NJQDZBZA.js +8 -0
- package/dist/providers-4PXMWA7V.js +8 -0
- package/dist/quiz-FE5UGAY2.js +10 -0
- package/dist/record-YXPB34MY.js +6 -0
- package/dist/reindex-PGDQSM42.js +2 -0
- package/dist/remember-MJRNTXYS.js +14 -0
- package/dist/retag-N5XF3KXP.js +6 -0
- package/dist/review-6UAH6V3R.js +11 -0
- package/dist/review-77QI6VOC.js +6 -0
- package/dist/ripple-ZGDITCGB.js +10 -0
- package/dist/roster-FLRZ5J42.js +2 -0
- package/dist/sentinel-HYAZ3CO5.js +19 -0
- package/dist/sentinel-bridge-VR357PKL.js +2 -0
- package/dist/sentinel-mcp.js +38 -3808
- package/dist/sentinel.js +1 -34
- package/dist/serve-JE6UF5P2.js +8 -0
- package/dist/serve-L52ZUTU6.js +10 -0
- package/dist/serve-OY6XYL7F.js +12 -0
- package/dist/server-2MNROHF6.js +7 -0
- package/dist/server-4YNUIK4W.js +8 -0
- package/dist/session-tracker-SKOMBDOW.js +2 -0
- package/dist/session-work-log-3MNUDEZ6.js +2 -0
- package/dist/session-work-log-J2H5OZBR.js +2 -0
- package/dist/setup-3F5IK7MO.js +31 -0
- package/dist/setup-KPIMRZ4Q.js +2 -0
- package/dist/shift-6GCNH666.js +11 -0
- package/dist/show-BOAVWZPZ.js +7 -0
- package/dist/show-PJ5LFLIL.js +5 -0
- package/dist/snapshot-L2G56RPL.js +8 -0
- package/dist/spawn-UH5RENSE.js +12 -0
- package/dist/status-77M3SDIF.js +8 -0
- package/dist/status-A37ECYNJ.js +6 -0
- package/dist/summary-ZJLQ6KHB.js +7 -0
- package/dist/sweep-HU74OPVW.js +17 -0
- package/dist/switch-CTW4PDGI.js +17 -0
- package/dist/symphony-3QMBGCZY.js +2 -0
- package/dist/symphony-QI63XL62.js +53 -0
- package/dist/symphony-loader-XACVV2E3.js +2 -0
- package/dist/symphony-peers-U4KHMKGI.js +2 -0
- package/dist/symphony-peers-X5NGWXFP.js +2 -0
- package/dist/symphony-relay-5GY5JIPT.js +3 -0
- package/dist/sync-QRDSFETO.js +2 -0
- package/dist/sync-llms-HL5PPW3M.js +15 -0
- package/dist/task-loader-NZFDTUQ5.js +2 -0
- package/dist/team-WGERKGNP.js +2 -0
- package/dist/test-BQJMS4Y2.js +111 -0
- package/dist/thread-HFXK65D4.js +41 -0
- package/dist/timeline-K3ZFKJ3R.js +6 -0
- package/dist/triage-FCWOZASE.js +18 -0
- package/dist/tutorial-UC6YQMNN.js +305 -0
- package/dist/university-content/courses/.purpose +74 -5
- package/dist/university-content/courses/para-701.json +807 -0
- package/dist/university-content/plsat/.purpose +3 -2
- package/dist/university-ui/assets/{index-BjewBB6s.js → index-CGFJczb1.js} +2 -2
- package/dist/university-ui/assets/{index-BjewBB6s.js.map → index-CGFJczb1.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/upgrade-B4IOLZYK.js +53 -0
- package/dist/validate-C6SMKGYD.js +9 -0
- package/dist/validate-LSCDOLBO.js +13 -0
- package/dist/validate-VZXTJHGO.js +6 -0
- package/dist/watch-LRM5XD46.js +8 -0
- package/dist/watch-PZCCUP6K.js +9 -0
- package/dist/wisdom-XZ3QKPNP.js +7 -0
- package/dist/work-log-loader-DL5GZ2BQ.js +2 -0
- package/dist/workspace-2ODL5WLY.js +2 -0
- package/package.json +1 -1
- package/platform-ui/dist/assets/AmbientSection-DqQ2mfCO.js +1 -0
- package/platform-ui/dist/assets/{CanvasSection-DwPTRdIN.js → CanvasSection-DLW0s-Bu.js} +1 -1
- package/platform-ui/dist/assets/{DocsSection-BJc_ws4I.js → DocsSection-BQ9Hi51g.js} +1 -1
- package/platform-ui/dist/assets/{GitSection-DhqBo1xc.js → GitSection-QQeUX6o3.js} +1 -1
- package/platform-ui/dist/assets/{GraphSection-D9fhVnZ0.js → GraphSection-0c9C-w7K.js} +2 -2
- package/platform-ui/dist/assets/{GraphSection-BlgXTl53.css → GraphSection-Bbs2a8sC.css} +1 -1
- package/platform-ui/dist/assets/LoreSection--t56kCj2.js +1 -0
- package/platform-ui/dist/assets/LoreSection-qnmm3o4y.css +1 -0
- package/platform-ui/dist/assets/SentinelSection-C4OoME9U.js +1 -0
- package/platform-ui/dist/assets/{SymphonySection-BRoBaUSS.js → SymphonySection-B-rvsLxq.js} +1 -1
- package/platform-ui/dist/assets/TeamSection-CBFmNEEo.js +1 -0
- package/platform-ui/dist/assets/index-Bxp0TVaf.css +1 -0
- package/platform-ui/dist/assets/index-DPpOdAtC.js +57 -0
- package/platform-ui/dist/index.html +2 -2
- package/dist/accept-orchestration-UQLM7PTQ.js +0 -189
- package/dist/add-FZRKEGH4.js +0 -81
- package/dist/agent-WERIO2XV.js +0 -523
- package/dist/agent-loader-TFIANSF4.js +0 -44
- package/dist/agent-state-S5DAWPTF.js +0 -24
- package/dist/agents-suggest-DNSYJ6IA.js +0 -83
- package/dist/aggregate-H57K7PNV.js +0 -88
- package/dist/assess-4WVXZLZQ.js +0 -68
- package/dist/auto-QFS5NHQU.js +0 -504
- package/dist/beacon-KXZXYQHX.js +0 -251
- package/dist/calibration-V46G7JTY.js +0 -135
- package/dist/check-OWAIWV23.js +0 -175
- package/dist/chunk-2IO7JAG2.js +0 -148
- package/dist/chunk-2T6BTYBN.js +0 -712
- package/dist/chunk-36TKPM5Z.js +0 -400
- package/dist/chunk-45MUDW6E.js +0 -804
- package/dist/chunk-4BLYIB7J.js +0 -5701
- package/dist/chunk-4L3UTYQX.js +0 -677
- package/dist/chunk-4NCFWYGG.js +0 -110
- package/dist/chunk-54LTTQBH.js +0 -138
- package/dist/chunk-5EWAQHFY.js +0 -269
- package/dist/chunk-5JGJACDU.js +0 -37
- package/dist/chunk-5OUOLN6M.js +0 -659
- package/dist/chunk-5VKJBNJL.js +0 -444
- package/dist/chunk-6N3JTACN.js +0 -2260
- package/dist/chunk-6QC3YGB6.js +0 -114
- package/dist/chunk-7N7GSU6K.js +0 -34
- package/dist/chunk-ABVQGRF7.js +0 -268
- package/dist/chunk-CL7JSK52.js +0 -129
- package/dist/chunk-CSD7IHSN.js +0 -152
- package/dist/chunk-EDOAWN7J.js +0 -717
- package/dist/chunk-EKGMAM62.js +0 -525
- package/dist/chunk-EZ3GOCYC.js +0 -132
- package/dist/chunk-F3BCHPYT.js +0 -143
- package/dist/chunk-FKJUBQU3.js +0 -3081
- package/dist/chunk-GT5QGC2H.js +0 -253
- package/dist/chunk-GZDFVP2N.js +0 -540
- package/dist/chunk-IRKUEJVW.js +0 -405
- package/dist/chunk-J2JEQRT3.js +0 -164
- package/dist/chunk-JASGXLK3.js +0 -679
- package/dist/chunk-KVDYJLTC.js +0 -121
- package/dist/chunk-L27I3CPZ.js +0 -357
- package/dist/chunk-LHLIAYQ3.js +0 -185
- package/dist/chunk-MCMOGQMU.js +0 -145
- package/dist/chunk-NQKQG45G.js +0 -688
- package/dist/chunk-PBHIFAL4.js +0 -259
- package/dist/chunk-PDX44BCA.js +0 -11
- package/dist/chunk-PMXRGPRQ.js +0 -305
- package/dist/chunk-RAB5IKPR.js +0 -487
- package/dist/chunk-RJE5G7WO.js +0 -590
- package/dist/chunk-RTHA3XRE.js +0 -880
- package/dist/chunk-S2HO5MLR.js +0 -621
- package/dist/chunk-S3ORKP3V.js +0 -716
- package/dist/chunk-TAIJOFOE.js +0 -124
- package/dist/chunk-TXESEO7Y.js +0 -245
- package/dist/chunk-UPLDI7CN.js +0 -1334
- package/dist/chunk-VL67H5IC.js +0 -506
- package/dist/chunk-VPPK3SY4.js +0 -1136
- package/dist/chunk-YMDLDELF.js +0 -314
- package/dist/chunk-YO6DVTL7.js +0 -99
- package/dist/chunk-YRZ5RPEB.js +0 -1561
- package/dist/chunk-ZDHLG5VP.js +0 -5676
- package/dist/chunk-ZGUAAVMA.js +0 -756
- package/dist/chunk-ZSYVKSY6.js +0 -2602
- package/dist/claude-FRRWJSTJ.js +0 -362
- package/dist/claude-cli-XJLK2X4L.js +0 -276
- package/dist/claude-code-HTBA4XRB.js +0 -126
- package/dist/claude-code-teams-T4SP24MD.js +0 -199
- package/dist/commands-5N4ILTPH.js +0 -5859
- package/dist/conductor-CQVGTEQN.js +0 -161
- package/dist/config-schema-EA4XALGG.js +0 -154
- package/dist/constellation-A26CCGQS.js +0 -225
- package/dist/context-audit-RLO3ETRP.js +0 -682
- package/dist/cost-BGM32XJU.js +0 -93
- package/dist/cost-VI46A4XL.js +0 -174
- package/dist/cursor-cli-JVEZGHWQ.js +0 -269
- package/dist/cursorrules-HLIKJJZT.js +0 -84
- package/dist/decision-loader-WWCLIQPJ.js +0 -20
- package/dist/delete-KBRPQLPC.js +0 -56
- package/dist/diff-D4X53HAC.js +0 -126
- package/dist/discipline-FA4OZXIS.js +0 -24
- package/dist/dist-34NA5RS5.js +0 -74
- package/dist/dist-5QE2BB2B-5S3T6Y3T.js +0 -6919
- package/dist/dist-77JDTVAY.js +0 -62
- package/dist/dist-OGTSAZ55.js +0 -1358
- package/dist/dist-QK4SQAK7.js +0 -64
- package/dist/dist-TA6LSC2Q.js +0 -20
- package/dist/docs-PBZB7LYP.js +0 -89
- package/dist/docs-QIYKO3BR.js +0 -155
- package/dist/doctor-ULBOHEIC.js +0 -11
- package/dist/drift-R5NRKFHI.js +0 -251
- package/dist/echo-O2LY7CC2.js +0 -248
- package/dist/edit-R2HNLMOG.js +0 -63
- package/dist/event-25OJKDCE.js +0 -31
- package/dist/export-IWVL7XLF.js +0 -38
- package/dist/flow-CRRVV3O3.js +0 -185
- package/dist/global-3NG5JXUB.js +0 -136
- package/dist/graduate-USAWGBJM.js +0 -160
- package/dist/graph-VHUMAAS6.js +0 -12
- package/dist/graph-server-YL22VBBN.js +0 -116
- package/dist/habits-OL5NGPXO.js +0 -1405
- package/dist/history-WOWC573W.js +0 -277
- package/dist/hooks-HFWSCGPV.js +0 -12
- package/dist/integrity-IHO4FZTS.js +0 -194
- package/dist/integrity-checker-PSKJA5SB.js +0 -12
- package/dist/journal-loader-5EYSBFFY.js +0 -18
- package/dist/lint-K6CJGGPH.js +0 -456
- package/dist/list-4YK7QKFF.js +0 -57
- package/dist/list-ENR7Q4CR.js +0 -56
- package/dist/lore-loader-7NO6N6FT.js +0 -26
- package/dist/lore-server-UNJY5KC3.js +0 -118
- package/dist/manual-G6FISID5.js +0 -204
- package/dist/migrate-LS45DNEV.js +0 -889
- package/dist/migrate-assessments-RGH4O6IX.js +0 -97
- package/dist/model-discovery-D2H3VBGC.js +0 -8
- package/dist/nomination-engine-RV5CNO5B.js +0 -42
- package/dist/notebook-YWIYGEHV.js +0 -155
- package/dist/orchestrate-JLILBBJE.js +0 -324
- package/dist/peers-DEOUIZM6.js +0 -82
- package/dist/persona-UHAHIVST.js +0 -390
- package/dist/pipeline-L4HCSBGN.js +0 -263
- package/dist/platform-server-H5YO3DQD.js +0 -1475
- package/dist/plugin-update-checker-KRRSGXMV.js +0 -12
- package/dist/portal-check-NPYGII2D.js +0 -42
- package/dist/portal-compliance-J7DGAPFX.js +0 -18
- package/dist/probe-MHL5HQZ2.js +0 -167
- package/dist/promote-F6ZYZZAL.js +0 -182
- package/dist/providers-GK7PB2OL.js +0 -104
- package/dist/quiz-M66SC7F7.js +0 -99
- package/dist/record-RA4WR2BO.js +0 -49
- package/dist/reindex-5LTD53ZC.js +0 -16
- package/dist/remember-HBWJ655S.js +0 -77
- package/dist/retag-3OLCVDEQ.js +0 -62
- package/dist/review-27ATYTD2.js +0 -33
- package/dist/review-57QMURZV.js +0 -334
- package/dist/ripple-JPBXP5I3.js +0 -215
- package/dist/sentinel-4XIG4STA.js +0 -63
- package/dist/sentinel-bridge-MDUXTQRL.js +0 -109
- package/dist/serve-CAH3PHE7.js +0 -33
- package/dist/serve-INL7SNBK.js +0 -36
- package/dist/serve-KBSE36PL.js +0 -49
- package/dist/server-54SKYFFY.js +0 -1647
- package/dist/server-XUOIO7E6.js +0 -338
- package/dist/session-tracker-C4BMD5WG.js +0 -13
- package/dist/session-work-log-MZ47OAPB.js +0 -20
- package/dist/setup-EDS27WUR.js +0 -25
- package/dist/setup-KO5AFC4K.js +0 -296
- package/dist/shift-D2JOHHBF.js +0 -668
- package/dist/show-5PV5KFJE.js +0 -176
- package/dist/show-NQKYX6WQ.js +0 -82
- package/dist/snapshot-BK4RBPCG.js +0 -62
- package/dist/spawn-RCHNXDHE.js +0 -196
- package/dist/status-WGIAQODY.js +0 -71
- package/dist/summary-NIRABMF5.js +0 -140
- package/dist/sweep-QMHNSIY5.js +0 -934
- package/dist/switch-6EJPZDIA.js +0 -232
- package/dist/symphony-4OCY36AI.js +0 -791
- package/dist/symphony-B75X2MME.js +0 -326
- package/dist/symphony-loader-UZGON56V.js +0 -90
- package/dist/symphony-peers-2ZQYLRNI.js +0 -34
- package/dist/symphony-peers-OL7F6M5S.js +0 -121
- package/dist/symphony-relay-UJYUXN65.js +0 -710
- package/dist/sync-VEHUH4OA.js +0 -11
- package/dist/sync-llms-YHCFIE6X.js +0 -166
- package/dist/task-loader-LDYWQSLM.js +0 -20
- package/dist/team-O5MIIFMA.js +0 -34
- package/dist/test-566CP5KC.js +0 -1017
- package/dist/thread-N754I4D5.js +0 -274
- package/dist/timeline-M3CICQFE.js +0 -112
- package/dist/triage-HHYGT3HY.js +0 -671
- package/dist/tutorial-KD22SUNO.js +0 -666
- package/dist/upgrade-H5PF32BW.js +0 -551
- package/dist/validate-CNKEKO6A.js +0 -134
- package/dist/validate-MB5ULIHS.js +0 -39
- package/dist/validate-QH3LADM6.js +0 -64
- package/dist/watch-2TKP5PVL.js +0 -199
- package/dist/watch-ZF4ML6CD.js +0 -111
- package/dist/wisdom-AATMGNFA.js +0 -319
- package/dist/work-log-loader-5L45XNYZ.js +0 -14
- package/dist/workspace-6E6OSRNU.js +0 -21
- package/platform-ui/dist/assets/AmbientSection-WtHfNedO.js +0 -1
- package/platform-ui/dist/assets/LoreSection-C3EixkjW.css +0 -1
- package/platform-ui/dist/assets/LoreSection-CwDDHrz9.js +0 -1
- package/platform-ui/dist/assets/SentinelSection-Cl7e5oZ6.js +0 -1
- package/platform-ui/dist/assets/TeamSection-CqSIMrKz.js +0 -1
- package/platform-ui/dist/assets/index-CfpZFjea.css +0 -1
- package/platform-ui/dist/assets/index-F0KL9xrN.js +0 -57
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {a as a$1}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as a from'fs';import*as h from'path';import o from'chalk';var E=`# Echoes - Error to Symbol Mapping
|
|
3
|
+
# When errors occur, they echo back to their source symbol.
|
|
4
|
+
# Run \`paradigm echo ERROR_CODE\` to look up context.
|
|
5
|
+
|
|
6
|
+
version: "1.0"
|
|
7
|
+
|
|
8
|
+
errors:
|
|
9
|
+
# Example error mapping
|
|
10
|
+
AUTH_REQUIRED:
|
|
11
|
+
symbol: "^authenticated"
|
|
12
|
+
location: "src/middleware/auth.ts"
|
|
13
|
+
ripple:
|
|
14
|
+
- "@checkout"
|
|
15
|
+
- "@profile"
|
|
16
|
+
- "@settings"
|
|
17
|
+
resolution: "Ensure user token is passed in request headers"
|
|
18
|
+
|
|
19
|
+
# Add your error mappings below
|
|
20
|
+
# ERROR_CODE:
|
|
21
|
+
# symbol: "^portal-name" # or signal: "!signal-name"
|
|
22
|
+
# location: "path/to/file.ts"
|
|
23
|
+
# ripple:
|
|
24
|
+
# - "@feature1"
|
|
25
|
+
# - "@feature2"
|
|
26
|
+
# resolution: "How to fix this error"
|
|
27
|
+
`;function b(t){let g={version:"1.0",errors:{}},p=t.split(`
|
|
28
|
+
`),c=null,n={},r=false;for(let l of p){if(l.trim().startsWith("#")||l.trim()==="")continue;let i=l.match(/^version:\s*"?([^"]+)"?/);if(i){g.version=i[1];continue}if(l.match(/^errors:\s*$/))continue;let e=l.match(/^ ([A-Z_][A-Z0-9_]*):\s*$/);if(e){c&&Object.keys(n).length>0&&(g.errors[c]=n),c=e[1],n={},r=false;continue}if(c){let s=l.match(/^\s{4}symbol:\s*"?([^"]+)"?/);if(s){n.symbol=s[1],r=false;continue}let f=l.match(/^\s{4}signal:\s*"?([^"]+)"?/);if(f){n.signal=f[1],r=false;continue}let u=l.match(/^\s{4}location:\s*"?([^"]+)"?/);if(u){n.location=u[1],r=false;continue}let y=l.match(/^\s{4}resolution:\s*"?([^"]+)"?/);if(y){n.resolution=y[1],r=false;continue}if(l.match(/^\s{4}ripple:\s*$/)){n.ripple=[],r=true;continue}if(r){let d=l.match(/^\s{6}-\s*"?([^"]+)"?/);if(d){n.ripple||(n.ripple=[]),n.ripple.push(d[1]);continue}}}}return c&&Object.keys(n).length>0&&(g.errors[c]=n),g}async function $(t,g,p={}){let c=process.cwd(),n=g?h.resolve(c,g):c,r=h.join(n,".paradigm","echoes.yaml");if(a$1.command("echo").debug("Looking up error code",{errorCode:t}),!a.existsSync(r)){if(p.json){console.log(JSON.stringify({found:false,error:"No echoes.yaml found"},null,2));return}a$1.command("echo").warn("No echoes.yaml found"),console.log(o.yellow(`
|
|
29
|
+
\u{1F4E2} No echoes.yaml found.
|
|
30
|
+
`)),console.log(o.gray(" Run `paradigm echo --init` to create one.\n"));return}let l=a.readFileSync(r,"utf8"),i=b(l);a$1.component("echoes-parser").debug("Echoes file parsed",{count:Object.keys(i.errors).length});let e=i.errors[t.toUpperCase()];if(!e){if(a$1.command("echo").warn("Error code not found",{errorCode:t}),p.json){console.log(JSON.stringify({found:false,errorCode:t.toUpperCase(),available:Object.keys(i.errors)},null,2));return}console.log(o.yellow(`
|
|
31
|
+
\u{1F4E2} No echo found for: ${t}
|
|
32
|
+
`));let s=Object.keys(i.errors);if(s.length>0){console.log(o.gray(" Available error codes:"));for(let f of s.slice(0,10)){let u=i.errors[f],y=u.symbol||u.signal||"";console.log(o.gray(` ${f} \u2192 ${y}`));}s.length>10&&console.log(o.gray(` ... and ${s.length-10} more`));}console.log("");return}if(a$1.command("echo").success("Error code found",{errorCode:t,hasSymbol:!!e.symbol,hasResolution:!!e.resolution}),p.json){console.log(JSON.stringify({found:true,errorCode:t.toUpperCase(),...e},null,2));return}console.log(o.blue(`
|
|
33
|
+
\u{1F4E2} Echo: ${o.cyan(t)}
|
|
34
|
+
`)),console.log(o.gray("\u2500".repeat(50))),e.symbol&&console.log(` Symbol: ${o.red(e.symbol)}`),e.signal&&console.log(` Signal: ${o.yellow(e.signal)}`),e.location&&console.log(` Location: ${o.gray(e.location)}`),e.ripple&&e.ripple.length>0&&console.log(` Ripple: ${e.ripple.map(s=>s.startsWith("@")?o.blue(s):s.startsWith("#")?o.green(s):s.startsWith("^")?o.red(s):o.gray(s)).join(", ")}`),console.log(""),e.resolution&&(console.log(o.white("Resolution:")),console.log(o.gray("\u2500".repeat(50))),console.log(o.green(` ${e.resolution}`)),console.log("")),console.log(o.gray("Tip: Run `paradigm ripple "+(e.symbol||e.signal||"")+"` for full impact analysis.\n"));}async function w(t,g={}){let p=process.cwd(),c=t?h.resolve(p,t):p,n=h.join(c,".paradigm"),r=h.join(n,"echoes.yaml");if(a.existsSync(n)||a.mkdirSync(n,{recursive:true}),a.existsSync(r)&&!g.quiet){console.log(o.yellow(`
|
|
35
|
+
\u26A0\uFE0F echoes.yaml already exists.
|
|
36
|
+
`)),console.log(o.gray(` Path: ${r}
|
|
37
|
+
`));return}a.writeFileSync(r,E,"utf8"),g.quiet||(console.log(o.green(`
|
|
38
|
+
\u2713 Created .paradigm/echoes.yaml
|
|
39
|
+
`)),console.log(o.gray(" Edit this file to add error-to-symbol mappings.")),console.log(o.gray(" Then use `paradigm echo ERROR_CODE` to look them up.\n")));}async function S(t,g={}){let p=process.cwd(),c=t?h.resolve(p,t):p,n=h.join(c,".paradigm","echoes.yaml");if(!a.existsSync(n)){console.log(o.yellow(`
|
|
40
|
+
\u{1F4E2} No echoes.yaml found.
|
|
41
|
+
`)),console.log(o.gray(" Run `paradigm echo --init` to create one.\n"));return}let r=a.readFileSync(n,"utf8"),l=b(r);console.log(o.blue(`
|
|
42
|
+
\u{1F4E2} All Echoes
|
|
43
|
+
`)),console.log(o.gray("\u2500".repeat(50)));let i=Object.keys(l.errors);if(i.length===0){console.log(o.gray(` No error mappings defined yet.
|
|
44
|
+
`));return}for(let e of i){let s=l.errors[e],f=s.symbol||s.signal||"",u=s.location?o.gray(` @ ${s.location}`):"";console.log(` ${o.cyan(e.padEnd(20))} \u2192 ${f}${u}`);}console.log(o.gray(`
|
|
45
|
+
Total: ${i.length} error mappings
|
|
46
|
+
`));}export{$ as echoCommand,w as echoInitCommand,S as echoListCommand};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {g,h}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import s from'chalk';async function u(n,e){let a=process.cwd();if(!await g(a,n)){console.error(s.red(`
|
|
3
|
+
Entry not found: ${n}
|
|
4
|
+
`)),process.exitCode=1;return}let t={};if(e.title&&(t.title=e.title),e.summary&&(t.summary=e.summary),e.type){let r=["agent-session","human-note","decision","review","incident","milestone"];if(!r.includes(e.type)){console.error(s.red(`Invalid type: ${e.type}. Valid: ${r.join(", ")}`)),process.exitCode=1;return}t.type=e.type;}if(e.symbols&&(t.symbols_touched=e.symbols.split(",").map(r=>r.trim())),e.tags&&(t.tags=e.tags.split(",").map(r=>r.trim())),e.learnings&&(t.learnings=e.learnings.split(",").map(r=>r.trim())),Object.keys(t).length===0){console.log(s.yellow(`
|
|
5
|
+
No changes specified. Use --title, --summary, --type, --symbols, --tags, or --learnings.
|
|
6
|
+
`));return}if(await h(a,n,t)){console.log(s.green(`
|
|
7
|
+
Updated lore entry: ${n}`));for(let[r,i]of Object.entries(t)){let c=Array.isArray(i)?i.join(", "):String(i);console.log(s.gray(` ${r}: ${c}`));}console.log();}else console.error(s.red(`
|
|
8
|
+
Failed to update: ${n}
|
|
9
|
+
`)),process.exitCode=1;}export{u as loreEditCommand};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-5TAVYPOV.js';import*as e from'fs';import*as r from'path';async function o(t){let s=process.cwd(),n=r.join(s,".paradigm","events"),a=r.join(n,"stream.jsonl"),c=Date.now(),i=Math.floor(Math.random()*9999).toString().padStart(4,"0"),m={id:`ev-${c}-${i}`,type:t.type,source:t.source,timestamp:new Date().toISOString(),...t.path?{path:t.path}:{},...t.symbols?.length?{symbols:t.symbols}:{},...t.context?{context:t.context}:{},...t.severity?{severity:t.severity}:{}};try{e.mkdirSync(n,{recursive:!0}),e.appendFileSync(a,JSON.stringify(m)+`
|
|
3
|
+
`,"utf8");}catch{}}export{o as eventEmitCommand};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-5TAVYPOV.js';import*as i from'fs';import*as n from'path';import t from'chalk';async function y(){let s=process.cwd(),c=[{title:"Required (you create and maintain these):",color:t.yellow,entries:[{path:".paradigm/config.yaml",description:"Project configuration \u2014 discipline, conventions, AI settings"},{path:"portal.yaml",description:"Security gates and route protection"},{path:".purpose",description:"Component/flow/gate declarations (one per directory)"}]},{title:"Optional (you can create these):",color:t.cyan,entries:[{path:".paradigm/agents.yaml",description:"Custom agent definitions for this project"},{path:".paradigm/roster.yaml",description:"Which agents are active on this project"},{path:".paradigm/habits.yaml",description:"Behavioral compliance rules"}]},{title:"Auto-generated (do not edit manually):",color:t.magenta,entries:[{path:".paradigm/scan-index.json",description:"Symbol index \u2014 rebuilt by paradigm scan / pre-commit hook"},{path:".paradigm/flow-index.json",description:"Flow index \u2014 rebuilt by paradigm scan"},{path:".paradigm/navigator.yaml",description:"Navigation index \u2014 rebuilt automatically"},{path:".paradigm/team-state.yaml",description:"Orchestration state \u2014 managed by Maestro"},{path:".paradigm/history/",description:"Implementation history \u2014 recorded by hooks",isDirectory:true},{path:".paradigm/events/",description:"Event stream \u2014 written by hooks and tools",isDirectory:true},{path:".paradigm/lore/",description:"Session history \u2014 recorded via paradigm_lore_record",isDirectory:true},{path:".paradigm/notebooks/",description:"Agent knowledge \u2014 managed via paradigm_notebook_add",isDirectory:true}]},{title:"IDE Integration:",color:t.blue,entries:[{path:".cursorrules",description:"Cursor IDE instructions (auto-generated)"},{path:".cursor/rules/",description:"Cursor rule files (auto-generated)",isDirectory:true},{path:".cursor/hooks/",description:"Cursor hook scripts (auto-generated)",isDirectory:true},{path:"CLAUDE.md",description:"Claude Code context file"},{path:"AGENTS.md",description:"Agent definitions for Claude Code"},{path:"plugins/paradigm/",description:"Claude Code plugin (skills, hooks, agents)",isDirectory:true}]}];console.log(t.bold(`
|
|
3
|
+
Paradigm Project Files
|
|
4
|
+
`));for(let o of c){console.log(` ${o.color(o.title)}`);let p=Math.max(...o.entries.map(e=>e.path.length));for(let e of o.entries){let r=n.join(s,e.path),a=e.isDirectory?i.existsSync(r)&&i.statSync(r).isDirectory():i.existsSync(r),d=a?t.green("\u2713"):t.gray("\u2013"),l=" ".repeat(p-e.path.length+2),g=a?t.white(e.path):t.gray(e.path),h=t.gray(e.description);console.log(` ${d} ${g}${l}${h}`);}console.log("");}}export{y as explainFilesCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {a}from'./chunk-FYDRENK7.js';import'./chunk-5TAVYPOV.js';import*as f from'path';import u from'chalk';async function l(n,t){let i=n?f.resolve(n):process.cwd(),e,r;t.from&&(e=new Date(t.from)),t.to&&(r=new Date(t.to));let m=new a(i),a$1=t.format||"json",o;a$1==="csv"?o=m.exportToCsv({from:e,to:r}):o=m.exportToJson({from:e,to:r}),t.output?((await import('fs')).writeFileSync(t.output,o),console.log(u.green(`\u2713 Exported to ${t.output}`))):console.log(o);}export{l as teamExportCommand};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-NW6OKHE6.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as g from'fs';import*as u from'path';import l from'chalk';import*as m from'js-yaml';import {execSync}from'child_process';function y(e){return Object.entries(e.flows).map(([s,t])=>({id:s,...t}))}function w(e){let s=u.join(e,".paradigm","flows.yaml");if(!g.existsSync(s))return null;try{let t=g.readFileSync(s,"utf-8");return m.load(t)}catch{return null}}function b(e){let s=[];try{let t=execSync(`find "${e}" -name ".purpose" -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null || true`,{encoding:"utf-8"});for(let i of t.split(`
|
|
3
|
+
`).filter(Boolean))try{let n=g.readFileSync(i,"utf-8").match(/flows:\s*\n([\s\S]*?)(?=\n[a-z_]+:|$)/);if(n){let r=m.load(`flows:
|
|
4
|
+
${n[1]}`);if(r&&typeof r=="object"&&"flows"in r){let c=r.flows;for(let[a,d]of Object.entries(c))s.push({id:a,...d,definedIn:u.relative(e,i)});}}}catch{}}catch{}return s}function F(e){let s=[],t=w(e);if(t){let o=y(t);for(let n of o)n.definedIn=".paradigm/flows.yaml",s.push(n);}let i=b(e);for(let o of i)s.some(n=>n.id===o.id)||s.push(o);return s}function $(e){let s=[];s.push("```mermaid"),s.push("flowchart TD"),s.push(` START([${p(e.trigger)}])`);let t="START";for(let i=0;i<e.steps.length;i++){let o=e.steps[i],n=`S${i}`,r=p(o.symbol);switch(o.type){case "gate":{let c=o;if(s.push(` ${n}{${r}}`),s.push(` ${t} --> ${n}`),c.failResponse||o.errorSignal){let a=`DENY${i}`,d=c.failResponse||o.errorSignal||"Denied";s.push(` ${a}[/${p(d)}/]`),s.push(` ${n} -->|deny| ${a}`);}break}case "action":s.push(` ${n}[${r}]`),s.push(` ${t} -->|${o.optional?"optional":"allow"}| ${n}`);break;case "signal":s.push(` ${n}([${r}])`),s.push(` ${t} --> ${n}`);break}t=n;}e.successSignal&&(s.push(` SUCCESS([${p(e.successSignal)}])`),s.push(` ${t} --> SUCCESS`)),s.push(""),s.push(" classDef gate fill:#f9d71c,stroke:#333,color:#000"),s.push(" classDef action fill:#4a90d9,stroke:#333,color:#fff"),s.push(" classDef signal fill:#50c878,stroke:#333,color:#fff");for(let i=0;i<e.steps.length;i++){let o=e.steps[i];s.push(` class S${i} ${o.type}`);}return s.push("```"),s.join(`
|
|
5
|
+
`)}function p(e){return e.replace(/"/g,'\\"').replace(/[[\]{}()]/g,"")}async function L(e,s){let t=process.cwd();w(t)||(console.log(l.red(`
|
|
6
|
+
\u274C No flows.yaml found`)),console.log(l.gray(`Create .paradigm/flows.yaml to define flows.
|
|
7
|
+
`)),process.exit(1));let o=F(t),n=e.startsWith("$")?e:`$${e}`,r=o.find(a=>a.id===n||a.id===e);if(!r){console.log(l.red(`
|
|
8
|
+
\u274C Flow not found: ${e}`)),console.log(l.gray(`
|
|
9
|
+
Available flows:`));for(let a of o)console.log(l.gray(` ${a.id} \u2014 ${a.name}`));console.log(""),process.exit(1);}a.command("flow-diagram").info("Generating Mermaid diagram",{flowId:r.id});let c=$(r);if(s.output){let a=u.resolve(t,s.output);g.writeFileSync(a,c,"utf-8"),console.log(l.green(`
|
|
10
|
+
\u2713 Diagram written to ${u.relative(t,a)}
|
|
11
|
+
`));}else console.log(""),console.log(l.blue(`Flow: ${r.name} (${r.id})`)),console.log(l.gray(`Trigger: ${r.trigger}`)),console.log(""),console.log(c),console.log("");}export{L as flowDiagramCommand};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {a}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as o from'fs';import*as c from'path';import l from'chalk';import b from'ora';function D(t){let a=t.match(/^(\d+)(d|h|m)$/);if(!a)return null;let[,e,s]=a,n=parseInt(e,10);switch(s){case "d":return n*24*60*60*1e3;case "h":return n*60*60*1e3;case "m":return n*60*1e3;default:return null}}function m(t,a){let e=[];if(!o.existsSync(t))return e;let s=o.readdirSync(t,{withFileTypes:true});for(let n of s){let f=c.join(t,n.name);if(n.isDirectory())e.push(...m(f,a));else if(n.isFile())try{let u=o.statSync(f),r=Date.now()-u.mtimeMs;if(r>a){let d=Math.floor(r/864e5);e.push({path:f,age:`${d}d`});}}catch{}}return e}async function v(t){let a$1=process.env.HOME||process.env.USERPROFILE||"~",e=c.join(a$1,".paradigm"),s=b();if(!o.existsSync(e)){console.log(l.yellow(`
|
|
3
|
+
No ~/.paradigm/ directory found.
|
|
4
|
+
`));return}let n=t.olderThan||"90d",f=D(n);f||(console.log(l.red(`
|
|
5
|
+
Invalid duration: ${n}`)),console.log(l.gray(`Use format: 90d, 30d, 7d, 24h, etc.
|
|
6
|
+
`)),process.exit(1)),console.log(l.blue(`
|
|
7
|
+
Global Brain Rotation
|
|
8
|
+
`)),console.log(l.gray(` Scanning ~/.paradigm/ for files older than ${n}...
|
|
9
|
+
`)),s.start("Scanning...");let u=["wisdom","lore","history","cache"],r=[];for(let i of u){let g=c.join(e,i),y=m(g,f);r.push(...y);}if(s.stop(),r.length===0){console.log(l.green(` No files older than ${n} found.
|
|
10
|
+
`));return}console.log(l.gray(` Found ${r.length} files older than ${n}:
|
|
11
|
+
`));for(let i of r.slice(0,20)){let g=c.relative(e,i.path);console.log(l.gray(` ${i.age} old - ${g}`));}if(r.length>20&&console.log(l.gray(` ... and ${r.length-20} more`)),t.dryRun){console.log(l.yellow(`
|
|
12
|
+
Dry run - no files deleted.
|
|
13
|
+
`)),a.command("global-clean").info("Dry run completed",{count:r.length,olderThan:n});return}s.start(`Deleting ${r.length} files...`);let d=0;for(let i of r)try{o.unlinkSync(i.path),d++;}catch{}s.succeed(`Deleted ${d} files older than ${n}`);for(let i of u){let g=c.join(e,i);p(g);}console.log(""),a.command("global-clean").success("Global brain rotation completed",{deleted:d,olderThan:n});}function p(t){if(!o.existsSync(t))return;let a=o.readdirSync(t);for(let e of a){let s=c.join(t,e);o.statSync(s).isDirectory()&&p(s);}if(o.readdirSync(t).length===0)try{o.rmdirSync(t);}catch{}}export{v as globalCleanCommand};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-5TAVYPOV.js';import*as d from'fs';import*as u from'path';import o from'chalk';import*as p from'js-yaml';function h(e){let r=u.join(e,".paradigm","graduation.yaml");if(!d.existsSync(r))return {states:{}};try{let a=d.readFileSync(r,"utf8");return p.load(a)||{states:{}}}catch{return {states:{}}}}var g={"explore-before-implement":"Explore Before Implementing","ripple-before-modify":"Ripple Before Modifying","check-fragility":"Check Fragility","wisdom-before-implement":"Check Team Wisdom","verify-before-done":"Verify Before Done","postflight-compliance":"Postflight Compliance","test-new-components":"Test New Components","purpose-coverage":"Purpose File Coverage","record-lore-for-significant":"Record Lore for Significant Changes","confidence-on-decisions":"Confidence on Decisions","gates-for-routes":"Gates for Routes","university-content-valid":"University Content Valid","university-onboarded":"University Onboarding"};({hook:o.green,habit:o.yellow,mcp:o.red});async function v(e){let r=process.cwd(),n=h(r).states||{};if(e.json){console.log(JSON.stringify({states:n},null,2));return}console.log(o.blue(`
|
|
3
|
+
\u26A1 Automation Tier Status
|
|
4
|
+
`)),console.log(o.gray("\u2500".repeat(60)));let t={hook:[],habit:[],mcp:[]},m=new Set([...Object.keys(g),...Object.keys(n)]);for(let s of m){let i=n[s]||{},l=i.tier||"habit";t[l]||(t[l]=[]),t[l].push({id:s,state:i});}let c=t.hook.length,f=t.habit.length,w=t.mcp.length,k=c+f+w;if(console.log(` ${o.green(`${c} hook`)} ${o.yellow(`${f} habit`)} ${o.red(`${w} mcp`)} (${k} total)
|
|
5
|
+
`),t.hook.length>0){console.log(o.green.bold(" \u26A1 Hooks (zero context cost)"));for(let{id:s,state:i}of t.hook){let l=g[s]||s,y=i.graduatedAt?` \u2014 graduated ${i.graduatedAt.split("T")[0]}`:"";console.log(` ${o.green("\u25CF")} ${l} ${o.gray(`(${s})${y}`)}`);}console.log();}if(t.habit.length>0){console.log(o.yellow.bold(" \u{1F4AD} Habits (agent-reminded)"));for(let{id:s,state:i}of t.habit){let l=g[s]||s,y=i.neverGraduate?o.gray(" \u{1F512} never-graduate"):"",b=i.cooldownUntil&&new Date(i.cooldownUntil)>new Date?o.gray(` \u23F3 cooldown until ${i.cooldownUntil.split("T")[0]}`):"";console.log(` ${o.yellow("\u25CF")} ${l} ${o.gray(`(${s})`)}${y}${b}`);}console.log();}if(t.mcp.length>0){console.log(o.red.bold(" \u{1F527} MCP Tools (manual, high token cost)"));for(let{id:s,state:i}of t.mcp){let l=g[s]||s;console.log(` ${o.red("\u25CF")} ${l} ${o.gray(`(${s})`)}`);}console.log();}if(c>0){let s=c*150;console.log(o.gray(` Estimated savings: ~${s} tokens/session from ${c} graduated habit(s)`));}console.log();}function $(e,r){let a=u.join(e,".paradigm","graduation.yaml"),n=u.dirname(a);d.existsSync(n)||d.mkdirSync(n,{recursive:true});let t=p.dump(r,{lineWidth:120,noRefs:true,sortKeys:true});d.writeFileSync(a,t,"utf8");}async function G(e){let r=process.cwd(),a=h(r);a.states||(a.states={});let n=a.states[e]||{};if(n.tier==="hook"){console.log(o.yellow(`${e} is already graduated to hook tier.`));return}if(n.neverGraduate){console.log(o.red(`${e} is marked as never-graduate (requires agent cognition).`));return}a.states[e]={...n,tier:"hook",graduatedAt:new Date().toISOString(),complianceAtGraduation:100,failureCount:0},$(r,a);let t=g[e]||e;console.log(o.green(`${o.bold("\u26A1")} Graduated "${t}" to hook tier.`)),console.log(o.gray(" MCP evaluation will skip this habit. Stop hook enforces compliance."));}async function D(e,r){let a=process.cwd(),n=h(a);n.states||(n.states={});let t=n.states[e]||{};if(t.tier!=="hook"){console.log(o.yellow(`${e} is not at hook tier (currently: ${t.tier||"habit"}).`));return}let m=r.cooldown?parseInt(r.cooldown):14,c=new Date;c.setDate(c.getDate()+m),n.states[e]={...t,tier:"habit",demotedAt:new Date().toISOString(),cooldownUntil:c.toISOString()},$(a,n);let f=g[e]||e;console.log(o.yellow(`${o.bold("\u{1F4AD}")} Demoted "${f}" back to habit tier.`)),console.log(o.gray(` Cooldown: ${m} days (until ${c.toISOString().split("T")[0]}).`)),console.log(o.gray(" MCP evaluation will resume checking this habit."));}export{D as graduateDemoteCommand,G as graduatePromoteCommand,v as graduateStatusCommand};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {a,b}from'./chunk-Y6KXTQBG.js';import'./chunk-5TAVYPOV.js';import l from'express';import*as c from'path';import*as h from'fs';import {fileURLToPath}from'url';import a$1 from'chalk';var f=fileURLToPath(import.meta.url),d=c.dirname(f),p={component(s){let t=a$1.magenta(`#${s}`);return {info:(o,e)=>{let r=e?a$1.gray(` ${Object.entries(e).map(([n,i])=>`${n}=${i}`).join(" ")}`):"";console.log(`${a$1.blue("i")} ${t} ${o}${r}`);},success:(o,e)=>{let r=e?a$1.gray(` ${Object.entries(e).map(([n,i])=>`${n}=${i}`).join(" ")}`):"";console.log(`${a$1.green("+")} ${t} ${o}${r}`);},warn:(o,e)=>{let r=e?a$1.gray(` ${Object.entries(e).map(([n,i])=>`${n}=${i}`).join(" ")}`):"";console.log(`${a$1.yellow("!")} ${t} ${o}${r}`);},error:(o,e)=>{let r=e?a$1.gray(` ${Object.entries(e).map(([n,i])=>`${n}=${i}`).join(" ")}`):"";console.error(`${a$1.red("x")} ${t} ${o}${r}`);}}}};function y(s){let t=l();t.use(l.json()),t.use((e,r,n)=>{if(r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),r.header("Access-Control-Allow-Headers","Content-Type"),e.method==="OPTIONS"){r.sendStatus(204);return}n();}),t.use("/api/symbols",a(s.projectDir)),t.use("/api/graphs",b(s.projectDir)),t.get("/api/health",(e,r)=>{r.json({status:"ok",timestamp:new Date().toISOString()});});let o=c.join(d,"..","graph-ui","dist");return h.existsSync(o)||(o=c.join(d,"..","..","graph-ui","dist")),h.existsSync(o)?(t.use(l.static(o)),t.get("{*path}",(e,r)=>{e.path.startsWith("/api")||r.sendFile(c.join(o,"index.html"));})):t.get("/",(e,r)=>{r.send(`
|
|
3
|
+
<html>
|
|
4
|
+
<head><title>Paradigm Graph</title></head>
|
|
5
|
+
<body style="background:#0a0a0f;color:#e2e8f0;font-family:system-ui;display:flex;align-items:center;justify-content:center;height:100vh;margin:0">
|
|
6
|
+
<div style="text-align:center">
|
|
7
|
+
<h1>Paradigm Graph</h1>
|
|
8
|
+
<p style="color:#94a3b8">UI not built yet. Run <code style="background:#1e293b;padding:4px 8px;border-radius:4px">cd graph-ui && npx vite build</code></p>
|
|
9
|
+
<p style="color:#94a3b8">API available at <a href="/api/symbols" style="color:#7dd3fc">/api/symbols</a></p>
|
|
10
|
+
</div>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
13
|
+
`);}),t}async function x(s){let t=y(s);return p.component("graph-server").info("Starting server",{port:s.port}),p.component("graph-server").info("Project directory",{path:s.projectDir}),new Promise((o,e)=>{t.listen(s.port,()=>{p.component("graph-server").success("Server running",{url:`http://localhost:${s.port}`}),s.open&&import('open').then(n=>{n.default(`http://localhost:${s.port}`),p.component("graph-server").info("Opened browser");}).catch(()=>{p.component("graph-server").warn("Could not open browser automatically");}),o();}).on("error",n=>{n.code==="EADDRINUSE"?p.component("graph-server").error("Port already in use",{port:s.port}):p.component("graph-server").error("Server error",{error:n.message}),e(n);});})}
|
|
14
|
+
export{y as createGraphApp,x as startGraphServer};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {a,b,c,e,d}from'./chunk-ET5XJTSX.js';import'./chunk-5TAVYPOV.js';import*as g from'fs';import*as u from'path';import {execSync}from'child_process';import o from'chalk';import*as C from'js-yaml';var $=".paradigm/habits.yaml",G=new Set(["explore-before-implement","ripple-before-modify","check-fragility","wisdom-before-implement","verify-before-done","postflight-compliance","test-new-components","purpose-coverage","record-lore-for-significant","gates-for-routes"]),x=["discovery","verification","testing","documentation","collaboration","security"],E=["preflight","postflight","on-stop","on-commit"],I=["advisory","warn","block"],P=["tool-called","file-exists","file-modified","lore-recorded","symbols-registered","gates-declared","tests-exist","git-clean"];function T(e,t){let r=u.join(e,$),i=F(r,t);if(i)return {source:"project",...i};let n=process.env.HOME||process.env.USERPROFILE||"~",l=u.join(n,".paradigm","habits.yaml"),c=F(l,t);return c?{source:"global",...c}:G.has(t)?{source:"seed",filePath:"",index:-1}:null}function F(e,t){if(!g.existsSync(e))return null;try{let r=g.readFileSync(e,"utf8"),i=C.load(r);if(!i?.habits)return null;let n=i.habits.findIndex(l=>l.id===t);return n===-1?null:{filePath:e,index:n}}catch{return null}}function D(e){let t=g.readFileSync(e,"utf8"),r=C.load(t);return r.habits||(r.habits=[]),r.overrides||(r.overrides={}),r}function w(e,t){g.writeFileSync(e,C.dump(t,{lineWidth:80,noRefs:true}),"utf8");}function L(e){let t=u.join(e,$);if(!g.existsSync(t)){let r=u.dirname(t);g.existsSync(r)||g.mkdirSync(r,{recursive:true}),w(t,{version:"1.0",habits:[],overrides:{}});}return t}async function J(e){let t=process.cwd(),r;try{r=a(t);}catch(s){console.log(o.red("Failed to load habits:"),s.message);return}if(e.trigger&&(r=r.filter(s=>s.trigger===e.trigger)),e.category&&(r=r.filter(s=>s.category===e.category)),e.json){console.log(JSON.stringify(r,null,2));return}let i=r.filter(s=>s.enabled),n=r.filter(s=>!s.enabled);console.log(o.magenta(`
|
|
3
|
+
Habits (${i.length} active, ${n.length} disabled)
|
|
4
|
+
`));let l=["preflight","postflight","on-stop","on-commit"];for(let s of l){let y=r.filter(d=>d.trigger===s);if(y.length!==0){console.log(o.cyan(` ${s}:`));for(let d of y){let a=d.enabled?o.green("ON"):o.gray("OFF"),m=d.severity==="block"?o.red(d.severity):d.severity==="warn"?o.yellow(d.severity):o.gray(d.severity);console.log(` ${a} ${o.white(d.id)} [${m}] - ${d.name}`),console.log(o.gray(` ${d.description}`));}console.log();}}let c=u.join(t,$);g.existsSync(c)?console.log(o.gray(` Config: ${$}`)):console.log(o.gray(" Config: using seed habits only (run 'paradigm habits init' to customize)")),console.log();}async function W(e){let t=process.cwd(),r;try{r=a(t);}catch(c){console.log(o.red("Failed to load habits:"),c.message);return}let i=b(r),n=null;try{let{SentinelStorage:c}=await import('./dist-VGFSP3XM.js'),s=u.join(t,".paradigm","sentinel");if(g.existsSync(s)){let y=new c(s),d=e.period||"30d",a=parseInt(d.replace("d",""),10)||30,m=d==="all"?void 0:new Date(Date.now()-a*24*60*60*1e3).toISOString(),v=y.getComplianceRate({dateFrom:m}),f=y.getPracticeEvents({dateFrom:m,limit:500}),b=new Map;for(let h of f){let p=h.habitCategory,S=b.get(p)||{followed:0,skipped:0,partial:0};S[h.result]++,b.set(p,S);}let j=Array.from(b.entries()).map(([h,p])=>{let S=p.followed+p.skipped+p.partial,O=S>0?Math.round((p.followed+p.partial*.5)/S*100):100;return {category:h,rate:O,total:S}}).sort((h,p)=>h.rate-p.rate);n={total:v.total,followed:v.followed,skipped:v.skipped,partial:v.partial,rate:v.rate,byCategory:j};}}catch{}if(e.json){console.log(JSON.stringify({habits:{total:r.length,enabled:i.length},practice:n},null,2));return}console.log(o.magenta(`
|
|
5
|
+
Habits Practice Profile
|
|
6
|
+
`)),console.log(o.white(` Total habits: ${r.length} (${i.length} active)`));let l=new Map;for(let c of i)l.set(c.trigger,(l.get(c.trigger)||0)+1);for(let[c,s]of l)console.log(o.gray(` ${c}: ${s} habit(s)`));if(console.log(),n&&n.total>0){let c=n.rate>=80?o.green:n.rate>=60?o.yellow:o.red;if(console.log(o.white(` Compliance Rate: ${c(`${n.rate}%`)}`)),console.log(o.gray(` Followed: ${n.followed} | Skipped: ${n.skipped} | Partial: ${n.partial}`)),console.log(o.gray(` Total events: ${n.total}
|
|
7
|
+
`)),n.byCategory.length>0){console.log(o.white(" By Category:"));for(let s of n.byCategory){let y=s.rate>=80?o.green:s.rate>=60?o.yellow:o.red,d="\u2588".repeat(Math.round(s.rate/5))+"\u2591".repeat(20-Math.round(s.rate/5));console.log(` ${s.category.padEnd(15)} ${y(d)} ${y(`${s.rate}%`)} (${s.total})`);}}}else console.log(o.gray(" No practice events recorded yet.")),console.log(o.gray(` Call paradigm_habits_check via MCP to start recording.
|
|
8
|
+
`));console.log();}async function Y(e){let t=process.cwd(),r=u.join(t,$);if(g.existsSync(r)&&!e.force){console.log(o.yellow(`${$} already exists. Use --force to overwrite.`));return}let i=u.dirname(r);g.existsSync(i)||g.mkdirSync(i,{recursive:true});let l=`# Paradigm Habits Configuration
|
|
9
|
+
# See: paradigm habits list (for all seed habits)
|
|
10
|
+
#
|
|
11
|
+
# Seed habits are built-in and active by default.
|
|
12
|
+
# Use 'overrides' to tune severity or disable specific habits.
|
|
13
|
+
# Add custom habits in the 'habits' section.
|
|
14
|
+
|
|
15
|
+
${C.dump({version:"1.0",habits:[],overrides:{"verify-before-done":{severity:"warn"}}},{lineWidth:80,noRefs:true})}
|
|
16
|
+
# Example custom habit:
|
|
17
|
+
# habits:
|
|
18
|
+
# - id: my-custom-check
|
|
19
|
+
# name: "Custom Check"
|
|
20
|
+
# description: "Describe what this habit enforces"
|
|
21
|
+
# category: verification
|
|
22
|
+
# trigger: postflight
|
|
23
|
+
# severity: advisory
|
|
24
|
+
# check:
|
|
25
|
+
# type: tool-called
|
|
26
|
+
# params:
|
|
27
|
+
# tools: [paradigm_pm_postflight]
|
|
28
|
+
# enabled: true
|
|
29
|
+
#
|
|
30
|
+
# Override seed habits:
|
|
31
|
+
# overrides:
|
|
32
|
+
# verify-before-done:
|
|
33
|
+
# severity: block # Upgrade to blocking
|
|
34
|
+
# check-fragility:
|
|
35
|
+
# enabled: false # Disable this habit
|
|
36
|
+
`;g.writeFileSync(r,l,"utf8"),c(t),console.log(o.green(`Created ${$}`)),console.log(o.gray(" 10 seed habits are active by default.")),console.log(o.gray(" Use overrides section to tune severity or disable habits.")),console.log(o.gray(" Run `paradigm habits list` to see all habits.\n"));}async function q(e){let t=process.cwd(),r=u.join(t,$);if(!g.existsSync(r)){console.log(o.yellow(`No ${$} found. Run 'paradigm habits init' first.`));return}if(!x.includes(e.category)){console.log(o.red(`Invalid category: ${e.category}. Valid: ${x.join(", ")}`));return}if(!E.includes(e.trigger)){console.log(o.red(`Invalid trigger: ${e.trigger}. Valid: ${E.join(", ")}`));return}if(e.severity&&!I.includes(e.severity)){console.log(o.red(`Invalid severity: ${e.severity}. Valid: ${I.join(", ")}`));return}let i=e.checkType||"tool-called";if(!P.includes(i)){console.log(o.red(`Invalid check-type: ${i}. Valid: ${P.join(", ")}`));return}let n;try{let a=g.readFileSync(r,"utf8");n=C.load(a),n.habits||(n.habits=[]);}catch(a){console.log(o.red("Failed to parse habits.yaml:"),a.message);return}if(new Set([...n.habits.map(a=>a.id),...a(t).map(a=>a.id)]).has(e.id)){console.log(o.yellow(`Habit "${e.id}" already exists.`));return}let c$1=e.tools?e.tools.split(",").map(a=>a.trim()):[],s=e.patterns?e.patterns.split(",").map(a=>a.trim()):[],y={};i==="tool-called"&&c$1.length>0&&(y.tools=c$1),(i==="file-exists"||i==="file-modified"||i==="tests-exist")&&s.length>0&&(y.patterns=s);let d={id:e.id,name:e.name,description:e.description,category:e.category,trigger:e.trigger,severity:e.severity||"advisory",check:{type:i,params:y},enabled:true};n.habits.push(d),w(r,n),c(t),console.log(o.green(`Added habit: ${e.id}`)),console.log(o.gray(` Name: ${e.name}`)),console.log(o.gray(` Category: ${e.category} | Trigger: ${e.trigger} | Severity: ${e.severity||"advisory"}`)),console.log(o.gray(` Check: ${i}`)),c$1.length>0&&console.log(o.gray(` Tools: ${c$1.join(", ")}`)),s.length>0&&console.log(o.gray(` Patterns: ${s.join(", ")}`)),console.log();}async function z(e,t){let r=process.cwd();if(t.category&&!x.includes(t.category)){console.log(o.red(`Invalid category: ${t.category}. Valid: ${x.join(", ")}`));return}if(t.trigger&&!E.includes(t.trigger)){console.log(o.red(`Invalid trigger: ${t.trigger}. Valid: ${E.join(", ")}`));return}if(t.severity&&!I.includes(t.severity)){console.log(o.red(`Invalid severity: ${t.severity}. Valid: ${I.join(", ")}`));return}if(t.checkType&&!P.includes(t.checkType)){console.log(o.red(`Invalid check-type: ${t.checkType}. Valid: ${P.join(", ")}`));return}let i=T(r,e);if(!i){console.log(o.red(`Habit not found: ${e}`));return}if(i.source==="seed"){if(["name","description","category","trigger","checkType","patterns","tools"].some(m=>t[m]!==void 0)){console.log(o.yellow(`"${e}" is a seed habit. Only --severity and --enabled can be changed.`)),console.log(o.gray(" Other fields require creating a custom habit with the same functionality."));return}if(!t.severity&&t.enabled===void 0){console.log(o.yellow("No changes specified. Use --severity or --enabled for seed habits."));return}let d=L(r),a=D(d);a.overrides||(a.overrides={}),a.overrides[e]||(a.overrides[e]={}),t.severity&&(a.overrides[e].severity=t.severity),t.enabled!==void 0&&(a.overrides[e].enabled=t.enabled==="true"),w(d,a),c(r),console.log(o.green(`Updated seed habit override: ${e}`)),t.severity&&console.log(o.gray(` Severity: ${t.severity}`)),t.enabled!==void 0&&console.log(o.gray(` Enabled: ${t.enabled}`)),console.log();return}let n=D(i.filePath),l=n.habits[i.index];t.name&&(l.name=t.name),t.description&&(l.description=t.description),t.category&&(l.category=t.category),t.trigger&&(l.trigger=t.trigger),t.severity&&(l.severity=t.severity),t.enabled!==void 0&&(l.enabled=t.enabled==="true"),t.checkType&&(l.check.type=t.checkType),t.tools&&(l.check.params.tools=t.tools.split(",").map(s=>s.trim())),t.patterns&&(l.check.params.patterns=t.patterns.split(",").map(s=>s.trim())),n.habits[i.index]=l,w(i.filePath,n),c(r);let c$1=i.source==="global"?"(global)":"(project)";console.log(o.green(`Updated habit: ${e} ${o.gray(c$1)}`)),console.log();}async function Q(e,t){let r=process.cwd(),i=T(r,e);if(!i){console.log(o.red(`Habit not found: ${e}`));return}if(i.source==="seed"){console.log(o.yellow(`"${e}" is a seed habit and cannot be removed.`)),console.log(o.gray(` Use: paradigm habits edit ${e} --enabled false`));return}let n=D(i.filePath),l=n.habits[i.index];if(!t.yes){console.log(o.yellow(`
|
|
37
|
+
Will remove habit: ${l.name} (${e})`)),console.log(o.gray(` Source: ${i.source} (${i.filePath})`)),console.log(o.gray(` Use --yes to confirm.
|
|
38
|
+
`));return}n.habits.splice(i.index,1),w(i.filePath,n),c(r),console.log(o.green(`Removed habit: ${e}`)),console.log();}async function X(e,t){let r=process.cwd(),i=t==="enable",n=T(r,e);if(!n){console.log(o.red(`Habit not found: ${e}`));return}if(n.source==="seed"){let c$1=L(r),s=D(c$1);s.overrides||(s.overrides={}),s.overrides[e]||(s.overrides[e]={}),s.overrides[e].enabled=i,w(c$1,s),c(r),console.log(o.green(`${i?"Enabled":"Disabled"} seed habit: ${e}`)),console.log();return}let l=D(n.filePath);l.habits[n.index].enabled=i,w(n.filePath,l),c(r),console.log(o.green(`${i?"Enabled":"Disabled"} habit: ${e}`)),console.log();}async function Z(e$1){let t=process.cwd(),r=e$1.trigger,i;try{i=a(t);}catch(f){console.log(o.red("Failed to load habits:"),f.message),process.exitCode=1;return}let n=e$1.files?e$1.files.split(",").map(f=>f.trim()).filter(Boolean):N(t),l=e$1.symbols?e$1.symbols.split(",").map(f=>f.trim()).filter(Boolean):[],c;try{c=execSync("git status --porcelain",{cwd:t,encoding:"utf8",timeout:5e3}).trim()==="";}catch{}let s=u.join(t,"portal.yaml"),y=false;if(g.existsSync(s))try{let f=g.readFileSync(s,"utf8"),b=C.load(f);y=b?.routes!=null&&Object.keys(b.routes).length>0;}catch{}let d$1=e({toolsCalled:[],filesModified:n,symbolsTouched:l,loreRecorded:false,hasPortalRoutes:y,taskAddsRoutes:false,gitClean:c}),a$1=d(i,r,d$1),m=0;if(e$1.record&&a$1.evaluations.length>0)try{let f=u.join(t,".paradigm","sentinel");if(g.existsSync(f)){let{SentinelStorage:b}=await import('./dist-VGFSP3XM.js'),j=new b(f);for(let h of a$1.evaluations)j.recordPracticeEvent({habitId:h.habit.id,habitCategory:h.habit.category,result:h.result,engineer:"agent",sessionId:`cli-${Date.now().toString(36)}`,symbolsTouched:l,filesModified:n,notes:h.reason}),m++;}}catch{}let v=u.join(t,".paradigm",".habits-blocking");try{if(r==="on-stop"&&a$1.blocksCompletion){let f=a$1.evaluations.filter(b=>b.result==="skipped"&&b.habit.severity==="block").map(b=>`${b.habit.name}: ${b.reason}`);g.writeFileSync(v,f.join(`
|
|
39
|
+
`),"utf8");}else r==="on-stop"&&g.existsSync(v)&&g.unlinkSync(v);}catch{}e$1.json?console.log(JSON.stringify({trigger:r,evaluation:{total:a$1.summary.total,followed:a$1.summary.followed,skipped:a$1.summary.skipped,partial:a$1.summary.partial,blockingViolations:a$1.summary.blockingViolations,blocksCompletion:a$1.blocksCompletion},habits:a$1.evaluations.map(f=>({id:f.habit.id,name:f.habit.name,category:f.habit.category,severity:f.habit.severity,result:f.result,reason:f.reason,evidence:f.evidence})),recorded:m},null,2)):U(a$1,m),a$1.blocksCompletion&&(process.exitCode=1);}function N(e){try{return execSync("git diff --name-only HEAD",{cwd:e,encoding:"utf8",timeout:5e3}).trim().split(`
|
|
40
|
+
`).filter(Boolean)}catch{return []}}function U(e,t){let{summary:r}=e;console.log(o.magenta(`
|
|
41
|
+
Habits Check (${e.trigger})
|
|
42
|
+
`));for(let i of e.evaluations){let n=i.result==="followed"?o.green("PASS"):i.result==="skipped"?i.habit.severity==="block"?o.red("BLOCK"):o.yellow("SKIP"):o.gray("PART"),l=i.habit.severity==="block"?o.red(i.habit.severity):i.habit.severity==="warn"?o.yellow(i.habit.severity):o.gray(i.habit.severity);console.log(` ${n} ${o.white(i.habit.id)} [${l}]`),console.log(o.gray(` ${i.reason}`));}console.log(),console.log(o.white(` Summary: ${r.followed} followed, ${r.skipped} skipped, ${r.partial} partial`)),r.blockingViolations>0&&console.log(o.red(` ${r.blockingViolations} blocking violation(s) \u2014 exit code 1`)),t>0&&console.log(o.gray(` Recorded ${t} practice event(s) to Sentinel`)),console.log();}export{q as habitsAddCommand,Z as habitsCheckCommand,z as habitsEditCommand,Y as habitsInitCommand,J as habitsListCommand,Q as habitsRemoveCommand,W as habitsStatusCommand,X as habitsToggleCommand};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import'./chunk-5TAVYPOV.js';import*as s from'fs';import*as y from'path';import t from'chalk';import*as u from'js-yaml';var f=".paradigm/history";async function v(o,r={}){let n=process.cwd(),c=y.join(n,f);if(!s.existsSync(c)){console.log(t.yellow("No history directory found.")),console.log(t.gray("Run `paradigm history init` to create .paradigm/history/"));return}let e=x(y.join(c,"index.yaml")),i=w(y.join(c,"log.jsonl"));if(r.json){if(o){let l=e?.by_symbol?.[o],g=i.filter(a=>a.symbols.includes(o));console.log(JSON.stringify({symbol:o,summary:l,entries:g},null,2));}else console.log(JSON.stringify({index:e,entries:i.slice(-(r.limit||20))},null,2));return}if(console.log(t.magenta(`
|
|
3
|
+
History
|
|
4
|
+
`)),o){let l=e?.by_symbol?.[o],g=i.filter(a=>a.symbols.includes(o)).slice(-(r.limit||10));if(console.log(t.cyan(` Symbol: ${o}
|
|
5
|
+
`)),l){let a=l.fragility==="critical"||l.fragility==="high"?t.red:l.fragility==="medium"?t.yellow:t.green;console.log(t.white(" Summary:")),console.log(t.gray(` Total changes: ${l.total_changes}`)),console.log(t.gray(` Last modified: ${l.last_modified}`)),console.log(t.gray(` Stability: ${(l.stability_score*100).toFixed(0)}%`)),console.log(a(` Fragility: ${l.fragility}`)),console.log();}g.length>0&&(console.log(t.white(" Recent changes:")),g.forEach(a=>{let p=a.type==="rollback"?t.red:a.type==="validate"?a.result==="pass"?t.green:t.red:t.blue;console.log(p(` [${a.type}] ${a.description||a.id}`)+t.gray(` - ${a.author.id} @ ${a.ts.split("T")[0]}`));}));return}let m=Object.keys(e?.by_symbol||{});console.log(t.white(` Tracked symbols: ${m.length}`)),console.log(t.white(` Total entries: ${i.length}`)),console.log();let h=e?.fragile_symbols||[];h.length>0&&(console.log(t.red(" Fragile symbols:")),h.slice(0,5).forEach(l=>{console.log(t.gray(` [${l.fragility}] ${l.symbol}`));}),console.log());let b=i.slice(-10);b.length>0&&(console.log(t.white(" Recent entries:")),b.reverse().forEach(l=>{let g=l.type==="rollback"?t.red:l.type==="validate"?l.result==="pass"?t.green:t.red:t.blue;console.log(g(` [${l.type}] ${l.symbols.join(", ")}`)+t.gray(` - ${l.ts.split("T")[0]}`));}));}async function H(o={}){let r=process.cwd(),n=y.join(r,f);if(s.existsSync(n)&&!o.force){console.log(t.yellow("History directory already exists.")),console.log(t.gray("Use --force to reinitialize"));return}s.mkdirSync(n,{recursive:true}),s.writeFileSync(y.join(n,"log.jsonl"),"");let c={version:"1.0",generated:new Date().toISOString(),by_symbol:{},co_changes:[],fragile_symbols:[]};s.writeFileSync(y.join(n,"index.yaml"),u.dump(c,{lineWidth:-1}));let e={version:"1.0",total_validations:0,pass_rate:0,by_symbol:{}};s.writeFileSync(y.join(n,"validation.yaml"),u.dump(e,{lineWidth:-1})),console.log(t.green("History directory initialized!")),console.log(t.gray(` ${n}/`)),console.log(t.gray(" log.jsonl")),console.log(t.gray(" index.yaml")),console.log(t.gray(" validation.yaml"));}async function E(o={}){let r=process.cwd(),n=y.join(r,f,"index.yaml");if(!s.existsSync(n)){console.log(t.yellow("No history index found.")),console.log(t.gray("Run `paradigm history reindex` to generate"));return}let e=x(n)?.fragile_symbols||[];if(o.json){console.log(JSON.stringify({fragile:e},null,2));return}if(console.log(t.magenta(`
|
|
6
|
+
Fragile Symbols
|
|
7
|
+
`)),e.length===0){console.log(t.green(" No fragile symbols detected!"));return}e.forEach(i=>{let m=i.fragility==="critical"?t.red:t.yellow;console.log(m(` [${i.fragility}] ${i.symbol}`)),console.log(t.gray(` ${i.reason}`));}),console.log(),console.log(t.gray(" Recommendation: Add extra test coverage before modifying these symbols"));}async function F(){let o=process.cwd(),r=y.join(o,f),n=y.join(r,"log.jsonl");if(!s.existsSync(n)){console.log(t.yellow("No history log found."));return}let c=w(n),e=_(c),i=y.join(r,"index.yaml");s.writeFileSync(i,u.dump(e,{lineWidth:-1})),console.log(t.green("History index regenerated!")),console.log(t.gray(` Symbols: ${Object.keys(e.by_symbol).length}`)),console.log(t.gray(` Entries: ${c.length}`)),console.log(t.gray(` Fragile: ${e.fragile_symbols.length}`));}async function O(o){let r=process.cwd(),n=y.join(r,f,"log.jsonl");s.mkdirSync(y.join(r,f),{recursive:true});let c=1;s.existsSync(n)&&(c=s.readFileSync(n,"utf8").split(`
|
|
8
|
+
`).filter(m=>m.trim()).length+1);let e={id:`h${String(c).padStart(4,"0")}`,ts:new Date().toISOString(),type:o.type,symbols:o.symbols.split(",").map(i=>i.trim()),author:{type:"human",id:process.env.USER||"unknown"},description:o.description,intent:o.intent,commit:o.commit,reason:o.reason};s.appendFileSync(n,JSON.stringify(e)+`
|
|
9
|
+
`),console.log(t.green(`Entry ${e.id} recorded!`));}async function k(o){let r=process.cwd(),n=y.join(r,f,"log.jsonl");s.mkdirSync(y.join(r,f),{recursive:true});let c=1;s.existsSync(n)&&(c=s.readFileSync(n,"utf8").split(`
|
|
10
|
+
`).filter(m=>m.trim()).length+1);let e={id:`h${String(c).padStart(4,"0")}`,ts:new Date().toISOString(),type:"validate",symbols:[],author:{type:"agent",id:"cli"},ref:o.ref,result:o.result,tests:o.passed!==void 0?{passed:o.passed,failed:o.failed||0}:void 0};s.appendFileSync(n,JSON.stringify(e)+`
|
|
11
|
+
`),console.log(t.green(`Validation ${e.id} recorded: ${o.result}`));}function x(o){if(!s.existsSync(o))return null;try{let r=s.readFileSync(o,"utf8");return u.load(r)}catch{return null}}function w(o){return s.existsSync(o)?s.readFileSync(o,"utf8").split(`
|
|
12
|
+
`).filter(n=>n.trim()).map(n=>{try{return JSON.parse(n)}catch{return null}}).filter(Boolean):[]}function _(o){let r={},n={};for(let e of o)for(let i of e.symbols)n[i]||(n[i]=[]),n[i].push(e);for(let[e,i]of Object.entries(n)){let m=i.sort((d,j)=>new Date(j.ts).getTime()-new Date(d.ts).getTime()),h=i.filter(d=>d.type==="rollback").length,b=i.filter(d=>d.type==="validate"&&d.result==="fail").length,l=i.length,g=Math.max(0,1-(h*.2+b*.1)/Math.max(1,l/10)),a="low";g<.5?a="critical":g<.7?a="high":g<.85&&(a="medium");let p=new Set,S=new Set;for(let d of i)d.author.type==="human"?p.add(d.author.id):S.add(d.author.id);r[e]={symbol:e,total_changes:l,last_modified:m[0]?.ts||new Date().toISOString(),stability_score:g,fragility:a,recent:m.slice(0,5),contributors:{human:Array.from(p),agent:Array.from(S)}};}let c=Object.values(r).filter(e=>e.fragility==="high"||e.fragility==="critical").map(e=>({symbol:e.symbol,fragility:e.fragility,reason:`Stability score: ${(e.stability_score*100).toFixed(0)}%`}));return {version:"1.0",generated:new Date().toISOString(),by_symbol:r,co_changes:[],fragile_symbols:c}}export{E as historyFragileCommand,H as historyInitCommand,O as historyRecordCommand,F as historyReindexCommand,v as historyShowCommand,k as historyValidateCommand};
|