@a-company/paradigm 5.37.11 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/dist/{accept-orchestration-SBZVK3H4.js → accept-orchestration-QQISPINV.js} +1 -1
  2. package/dist/add-UOR4INIV.js +8 -0
  3. package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
  4. package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
  5. package/dist/{aggregate-W66DM3GA.js → aggregate-A5S5MTCC.js} +1 -1
  6. package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
  7. package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
  8. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  9. package/dist/{beacon-5QVYV5DF.js → beacon-QVUD3MGP.js} +1 -1
  10. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  11. package/dist/{chunk-SI6SV76D.js → chunk-3DZK54RU.js} +72 -19
  12. package/dist/{chunk-CHVQNRRT.js → chunk-4PSD5R7N.js} +2 -2
  13. package/dist/chunk-6SKSV5B2.js +24 -0
  14. package/dist/{chunk-KFNHCQ4R.js → chunk-FEYOQMZ5.js} +1 -1
  15. package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
  16. package/dist/chunk-GRZQIKST.js +2 -0
  17. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  18. package/dist/chunk-LPBCQM5Y.js +6 -0
  19. package/dist/{chunk-T6IDXUUA.js → chunk-LWAIVOSF.js} +1 -1
  20. package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
  21. package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
  22. package/dist/chunk-PHEX6LU4.js +111 -0
  23. package/dist/chunk-Q527BPUF.js +2 -0
  24. package/dist/chunk-R5ECMBIV.js +11 -0
  25. package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
  26. package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
  27. package/dist/{chunk-SUU6M4JH.js → chunk-TOYQ2QCB.js} +1 -1
  28. package/dist/chunk-TZDYIPVU.js +521 -0
  29. package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
  30. package/dist/chunk-VIG5LSGZ.js +2 -0
  31. package/dist/chunk-VNIX5KBT.js +3 -0
  32. package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
  33. package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
  34. package/dist/{chunk-LBQBWIEX.js → chunk-Y4P4SGZV.js} +1 -1
  35. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  36. package/dist/chunk-Z5QW6USC.js +2 -0
  37. package/dist/chunk-ZJQY5PPP.js +7 -0
  38. package/dist/{commands-LMUD5L6R.js → commands-ANRJNG2W.js} +1 -1
  39. package/dist/compliance-BNFWQPKM.js +6 -0
  40. package/dist/config-schema-FLHRVZMI.js +2 -0
  41. package/dist/{constellation-CG7C4WFE.js → constellation-NWLXYATA.js} +1 -1
  42. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  43. package/dist/{cost-IDNVMAEV.js → cost-24UZSS2P.js} +1 -1
  44. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  45. package/dist/decision-loader-HELL2AMX.js +2 -0
  46. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  47. package/dist/{diff-JVEYCXUC.js → diff-MF55KQZH.js} +1 -1
  48. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  49. package/dist/dist-JZZJLVMR.js +2 -0
  50. package/dist/{dist-3ZCH25SG.js → dist-OG6MM4VY.js} +1 -1
  51. package/dist/dist-SE67SOXB.js +2 -0
  52. package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
  53. package/dist/doctor-IG5XM4C4.js +2 -0
  54. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  55. package/dist/{flow-POQP27WA.js → flow-BGXOVE2V.js} +1 -1
  56. package/dist/{hooks-IG2GOAHP.js → hooks-TFMMMB2H.js} +1 -1
  57. package/dist/index.js +6 -6
  58. package/dist/init-M44SO65G.js +2 -0
  59. package/dist/init-V4KSEKPK.js +2 -0
  60. package/dist/{integrity-UYDOOJDP.js → integrity-ROO3G43N.js} +1 -1
  61. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  62. package/dist/list-CFHINXIS.js +12 -0
  63. package/dist/lore-loader-D2ISOASW.js +2 -0
  64. package/dist/lore-loader-PXFKMKAN.js +2 -0
  65. package/dist/mcp.js +19 -11
  66. package/dist/metrics-UESGUHTA.js +2 -0
  67. package/dist/{migrate-IBDE7VK4.js → migrate-Z5UQN57G.js} +1 -1
  68. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  69. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  70. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  71. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
  72. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  73. package/dist/{orchestrate-RCAMBOIB.js → orchestrate-RID7HHHH.js} +1 -1
  74. package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
  75. package/dist/portal-check-DV2VSJ5E.js +8 -0
  76. package/dist/{portal-compliance-4MG5F2GI.js → portal-compliance-JONQ4SOP.js} +1 -1
  77. package/dist/{probe-B22G2JKF.js → probe-5HAXULAD.js} +1 -1
  78. package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
  79. package/dist/quiz-WYIZJG5K.js +10 -0
  80. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  81. package/dist/reindex-FWPD2VGM.js +2 -0
  82. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  83. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  84. package/dist/{review-6UAH6V3R.js → review-VMSX2PKI.js} +1 -1
  85. package/dist/{ripple-ZGDITCGB.js → ripple-FNZI47SH.js} +1 -1
  86. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  87. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  88. package/dist/sentinel.js +1 -1
  89. package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
  90. package/dist/serve-OQYUO7CR.js +12 -0
  91. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  92. package/dist/server-FGUL2FWQ.js +7 -0
  93. package/dist/session-tracker-KGORN6B5.js +2 -0
  94. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
  95. package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
  96. package/dist/{setup-3F5IK7MO.js → setup-ZSEC72BS.js} +2 -2
  97. package/dist/{shift-FDADESC4.js → shift-TVNY2CQF.js} +6 -6
  98. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  99. package/dist/show-WVHAL4VU.js +7 -0
  100. package/dist/{snapshot-L2G56RPL.js → snapshot-3IYB67D4.js} +1 -1
  101. package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
  102. package/dist/{status-77M3SDIF.js → status-DB3KNLW3.js} +1 -1
  103. package/dist/status-S7Z5FVIE.js +6 -0
  104. package/dist/{summary-LXLHFRN7.js → summary-WLI3NF4G.js} +2 -2
  105. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  106. package/dist/sync-55U6QPIA.js +2 -0
  107. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  108. package/dist/team-MGT66HZQ.js +2 -0
  109. package/dist/{test-BQJMS4Y2.js → test-WLEPZQFC.js} +1 -1
  110. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  111. package/dist/tools-QJHAVYI6.js +2 -0
  112. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  113. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  114. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  115. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  116. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  117. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  118. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  119. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  120. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  121. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  122. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  123. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  124. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  125. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  126. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  127. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  128. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  129. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  130. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  131. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  132. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  133. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  134. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  135. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  136. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  137. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  138. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  139. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  140. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  141. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  142. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  143. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  144. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  145. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  146. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  147. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  148. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  149. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  150. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  151. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  152. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  153. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  154. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  155. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  156. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  157. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  158. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  159. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  160. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  161. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  162. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  163. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  164. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  165. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  166. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  167. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  168. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  169. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  170. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  171. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  172. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  173. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  174. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  175. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  176. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  177. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  178. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  179. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  180. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  181. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  182. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  183. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  184. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  185. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  186. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  187. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  188. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  189. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  190. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  191. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  192. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  193. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  194. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  195. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  196. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  197. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  198. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  199. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  200. package/dist/university-content/paths/LP-para-501.yaml +89 -0
  201. package/dist/university-content/paths/LP-para-601.yaml +59 -0
  202. package/dist/university-content/paths/LP-para-701.yaml +64 -0
  203. package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
  204. package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
  205. package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
  206. package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
  207. package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
  208. package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
  209. package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
  210. package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
  211. package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
  212. package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
  213. package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
  214. package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
  215. package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
  216. package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
  217. package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
  218. package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
  219. package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
  220. package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
  221. package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
  222. package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
  223. package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
  224. package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
  225. package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
  226. package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
  227. package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
  228. package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
  229. package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
  230. package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
  231. package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
  232. package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
  233. package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
  234. package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
  235. package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
  236. package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
  237. package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
  238. package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
  239. package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
  240. package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
  241. package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
  242. package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
  243. package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
  244. package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
  245. package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
  246. package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
  247. package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
  248. package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
  249. package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
  250. package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
  251. package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
  252. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  253. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  254. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  256. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  257. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  258. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  259. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  260. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  262. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  263. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  264. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  265. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  266. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  267. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  268. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  269. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  270. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  271. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  272. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  273. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  274. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  275. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  276. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  277. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  278. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  279. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  280. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  281. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  282. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  283. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  284. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  285. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  286. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  287. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  288. package/dist/university-content/reference.json +2 -2
  289. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  290. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  291. package/dist/university-ui/index.html +1 -1
  292. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  293. package/dist/{validate-VZXTJHGO.js → validate-BB6LRWIY.js} +1 -1
  294. package/dist/validate-XUQZTF3H.js +9 -0
  295. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  296. package/dist/workspace-VMSPYIBV.js +2 -0
  297. package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
  298. package/lore-ui/dist/index.html +1 -1
  299. package/package.json +3 -2
  300. package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
  301. package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
  302. package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
  303. package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
  304. package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
  305. package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
  306. package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
  307. package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
  308. package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
  309. package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
  310. package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
  311. package/platform-ui/dist/index.html +1 -1
  312. package/templates/paradigm/specs/symbols.md +4 -2
  313. package/dist/add-P76GEMGF.js +0 -8
  314. package/dist/chunk-3TR6LLXP.js +0 -111
  315. package/dist/chunk-G7XFK2GI.js +0 -11
  316. package/dist/chunk-J6KWGCHN.js +0 -24
  317. package/dist/chunk-JQKKVAAN.js +0 -2
  318. package/dist/chunk-ODVKPZZ4.js +0 -2
  319. package/dist/chunk-Q2J542ST.js +0 -2
  320. package/dist/chunk-QT2LKB3P.js +0 -7
  321. package/dist/chunk-SHD27BQX.js +0 -6
  322. package/dist/chunk-WS2N27RX.js +0 -3
  323. package/dist/chunk-YT52WLBF.js +0 -521
  324. package/dist/compliance-WJINB5DM.js +0 -6
  325. package/dist/config-schema-GUQY2QN7.js +0 -2
  326. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  327. package/dist/dist-R3RWD35F.js +0 -2
  328. package/dist/dist-VXCZWVVJ.js +0 -2
  329. package/dist/doctor-QJ47XAUP.js +0 -2
  330. package/dist/init-HIBRSVUB.js +0 -2
  331. package/dist/list-5IUGP3ZB.js +0 -7
  332. package/dist/lore-loader-RVQI5GXL.js +0 -2
  333. package/dist/lore-loader-XY5MZRR2.js +0 -2
  334. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  335. package/dist/portal-check-Z3OCQEQR.js +0 -8
  336. package/dist/quiz-FE5UGAY2.js +0 -10
  337. package/dist/reindex-FO5VMZVQ.js +0 -2
  338. package/dist/serve-OY6XYL7F.js +0 -12
  339. package/dist/server-2MNROHF6.js +0 -7
  340. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  341. package/dist/show-BOAVWZPZ.js +0 -7
  342. package/dist/status-A37ECYNJ.js +0 -6
  343. package/dist/sync-DLUBV5HQ.js +0 -2
  344. package/dist/team-NSP6PMPS.js +0 -2
  345. package/dist/tools-CERDNVCG.js +0 -2
  346. package/dist/university-content/courses/.purpose +0 -492
  347. package/dist/university-content/courses/para-001.json +0 -166
  348. package/dist/university-content/courses/para-101.json +0 -615
  349. package/dist/university-content/courses/para-201.json +0 -794
  350. package/dist/university-content/courses/para-301.json +0 -830
  351. package/dist/university-content/courses/para-401.json +0 -868
  352. package/dist/university-content/courses/para-501.json +0 -1166
  353. package/dist/university-content/courses/para-601.json +0 -719
  354. package/dist/university-content/courses/para-701.json +0 -807
  355. package/dist/university-content/plsat/.purpose +0 -162
  356. package/dist/university-content/plsat/v2.0.json +0 -760
  357. package/dist/university-content/plsat/v3.0.json +0 -3453
  358. package/dist/validate-C6SMKGYD.js +0 -9
  359. package/dist/workspace-MKSQN7B2.js +0 -2
  360. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  361. /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
  362. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env node
2
- import {a as a$3}from'./chunk-TYWB5IQJ.js';import {b,a as a$1}from'./chunk-ORDKEGII.js';import {e}from'./chunk-AO7ZSRME.js';import {a}from'./chunk-FYDRENK7.js';import {b as b$1}from'./chunk-EKZDFEJW.js';import {a as a$2,b as b$2}from'./chunk-SHD27BQX.js';import {o,t,x}from'./chunk-T6IDXUUA.js';import'minimatch';import*as w from'fs';import*as C from'path';import*as F from'js-yaml';import {spawn}from'child_process';var ee=["should","what","how","why","recommend","analyze","compare","evaluate","assess","review","explain","describe","investigate","which","best practice","trade-off","tradeoff","pros and cons","decision"],te=["document","write docs","readme",".purpose","purpose file","jsdoc","tsdoc","comments","docstring","api docs","changelog","architecture doc"],se=["bug","fix","broken","not working","issue","error","crash","fails","failing","wrong","incorrect","doesn't work","doesn't","cant","can't","regression","patch"],re=["rename","refactor","migrate","restructure","move","reorganize","clean up","cleanup","consolidate","extract","inline","simplify","modularize","decouple","split","merge"],ne=["auth","authentication","authorization","permission","admin","delete","purge","password","credential","token","secret","key","encrypt","decrypt","hash","session","oauth","jwt","api key","role","access","gate","portal","sensitive","private","security","vulnerability","xss","sql injection","csrf"],oe=/[@#$%^!?&~][a-zA-Z0-9_-]+/g,Y={analysis:{agents:["architect"],models:{architect:"opus"},costMultiplier:{min:.3,max:.5}},documentation:{agents:["architect"],models:{architect:"sonnet"},costMultiplier:{min:.25,max:.45}},bugfix:{agents:["security","builder"],models:{security:"opus",builder:"haiku"},costMultiplier:{min:.5,max:.8}},refactor:{agents:["architect","builder"],models:{architect:"opus",builder:"haiku"},costMultiplier:{min:.6,max:.85}},feature:{agents:["architect","security","builder","tester"],models:{architect:"opus",security:"opus",builder:"haiku",tester:"haiku"},costMultiplier:{min:.8,max:1.2}}};function ie(f){let s=f.match(oe)||[];return [...new Set(s)]}function $(f,s){let e=f.toLowerCase();return s.filter(t=>e.includes(t.toLowerCase()))}function ae(f,s,e,t){let n=0;e.length>=5?n+=2:e.length>=2&&(n+=1);let o=f.split(/\s+/).length;o>=100?n+=2:o>=50&&(n+=1);let r=new Set(e.map(a=>a[0]));return r.size>=4?n+=2:r.size>=2&&(n+=1),e.some(a=>a.startsWith("^"))&&(n+=1),e.some(a=>a.startsWith("$"))&&(n+=1),s==="feature"&&(n+=1),s==="refactor"&&(n+=1),n>=5?"high":n>=2?"medium":"low"}function le(f,s,e){if($(f,ne).length>0||s.some(n=>n.startsWith("^")))return true;return false}function K(f,s){let e=ie(f),t=$(f,ee),n=$(f,te),o=$(f,se),r=$(f,re),a,i;t.length>0&&o.length===0&&r.length===0?(a="analysis",i=t):n.length>0&&o.length===0?(a="documentation",i=n):o.length>0?(a="bugfix",i=o):r.length>0?(a="refactor",i=r):(a="feature",i=[]);let l=Y[a],g=le(f,e),c=[...l.agents];g&&!c.includes("security")&&(c=["security",...c]);let p=ae(f,a,e),h={...l.costMultiplier};return p==="high"?(h.min*=1.2,h.max*=1.3):p==="low"&&(h.min*=.8,h.max*=.9),g&&!l.agents.includes("security")&&(h.min+=.15,h.max+=.2),{type:a,complexity:p,recommendedAgents:c,securityRequired:g,costMultiplier:h,matchedKeywords:i,symbols:e}}function B(f,s){let e=Y[s.type];return f==="security"&&s.securityRequired?"opus":e.models[f]||"sonnet"}var ce=/[@#$%^!?&~][a-zA-Z][a-zA-Z0-9_-]*/g,ue=[/\.(get|post|put|patch|delete)\s*\(\s*['"`]([^'"`]+)['"`]/gi,/export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)/gi,/export\s+(async\s+)?function\s+(GET|POST|PUT|PATCH|DELETE)/gi,/\.(get|post|put|patch|delete)\s*\(\s*['"`]([^'"`]+)['"`]/gi],de=["endpoint","route","api","handler","get","post","put","patch","delete","rest","crud","controller"];function V(f,s,e$1){let t$1=f.toLowerCase(),n=f.match(ce)||[],o=[...new Set(n)],r=o.map(d=>{let u=t(e$1,d),y=u.length>0?u[0]:null;return {symbol:d,exists:!!y,type:y?.type,description:y?.description}}),a=r.filter(d=>d.exists).map(d=>{let u=x(e$1,d.symbol),y=new Set;for(let b of u){let S=x(e$1,b.symbol);for(let O of S)O.symbol!==d.symbol&&!u.find(v=>v.symbol===O.symbol)&&y.add(O.symbol);}let k=u.length+y.size,m="low";return k>10?m="high":k>3&&(m="medium"),{symbol:d.symbol,directDependents:u.length,indirectDependents:y.size,impact:m}}),i=a$2(s),l={exists:!!i,gateCount:i?b$2(i).length:0,gates:i?b$2(i).map(d=>`^${d}`):[],routeCount:i?.routes?Object.keys(i.routes).length:0},g=de.some(d=>t$1.includes(d)),c=e(s),p=c?a$3(f,c.agents).map(d=>({name:d.name,confidence:d.confidence,reason:d.reason})):[],h=[];return r.some(d=>d.exists)&&h.push("ripple-analysis"),g&&h.push("portal-compliance"),o.some(d=>d.startsWith("^"))&&h.push("gate-validation"),o.some(d=>d.startsWith("!"))&&h.push("signal-registration"),h.push("purpose-coverage"),{affectedSymbols:r,rippleAnalysis:a,portalStatus:l,taskAddsRoutes:g,suggestedAgents:p,requiredChecks:h}}function H(f,s,e,t$1){let n=[],o=a$2(e),r=o?b$2(o):[],a=o?.routes?Object.keys(o.routes):[];for(let p of f){let h=C.isAbsolute(p)?p:C.join(e,p);if(!w.existsSync(h))continue;let d;try{d=w.readFileSync(h,"utf-8");}catch{continue}for(let u of ue){u.lastIndex=0;let y;for(;(y=u.exec(d))!==null;){let k=y[2]||y[0];k&&k.startsWith("/")&&(!a.some(b=>b.replace(/\s+(GET|POST|PUT|PATCH|DELETE)\s*$/,"").trim()===k)&&o?n.push({type:"missing-portal-gate",severity:"warning",message:`Route "${k}" found in ${C.relative(e,h)} but not declared in portal.yaml`,file:C.relative(e,h),suggestion:"Add this route to portal.yaml with appropriate ^gates. Run paradigm_gates_for_route to get suggestions."}):!o&&k.startsWith("/api/")&&n.push({type:"missing-portal-gate",severity:"warning",message:`API route "${k}" found but no portal.yaml exists`,file:C.relative(e,h),suggestion:"Create portal.yaml to declare gates for API routes. Run: paradigm portal init"}));}}}for(let p of s)t(t$1,p).length===0&&n.push({type:"unregistered-symbol",severity:"error",message:`Symbol "${p}" was touched but is not registered in any .purpose file`,suggestion:`Add "${p}" to the nearest .purpose file. Use paradigm_purpose_add_component or paradigm_purpose_add_signal.`});for(let p of s)if(p.startsWith("^")){let h=p.slice(1);r.includes(h)||n.push({type:"missing-portal-gate",severity:"error",message:`Gate "${p}" is referenced but not declared in portal.yaml`,suggestion:`Add ${p} to portal.yaml with description and check expression.`});}f.length>=5&&s.length>=3&&n.push({type:"uncaptured-wisdom",severity:"warning",message:`Large change (${f.length} files, ${s.length} symbols) \u2014 consider recording architectural decisions`,suggestion:"Use paradigm_wisdom_record to capture any decisions or antipatterns discovered during this task."});let i=n.filter(p=>p.severity==="error").length,l=n.filter(p=>p.severity==="warning").length,g=4,c="pass";return i>0?c="violations":l>0&&(c="warnings"),{status:c,violations:n,summary:{totalChecks:g,passed:g-(i>0?1:0)-(l>0?1:0),warnings:l,errors:i},blocksCompletion:i>0}}var pe={architect:"opus",security:"opus",reviewer:"sonnet",builder:"haiku",tester:"haiku"},he=["auth","permission","admin","delete","purge","password","credential","token","secret","key","encrypt","decrypt","hash","session","oauth","jwt","role","access control","vulnerability","injection","xss","csrf"];function me(f,s){let e=f.toLowerCase(),t=he.some(r=>e.includes(r.toLowerCase())),n=f.includes("^"),o=false;return t||n||o}var ye=["rename","refactor","migrate","restructure","move","reorganize"];function be(f){let s=f.toLowerCase();return ye.some(e=>s.includes(e))}var E=class{spawner;auditLogger;rootDir;constructor(s){this.rootDir=s,this.spawner=new b(s),this.auditLogger=new a(s);}async initialize(){await this.spawner.initialize();}async orchestrate(s,e={}){let t=e.mode||"faceted",n=Date.now(),o$1=this.generateOrchestrationId(),r={success:false,mode:t,orchestrationId:o$1,task:s,agentsSpawned:0,totalTokens:{input:0,output:0,total:0},totalCost:0,duration_ms:0,agentResults:[]};try{let a;if(e.pmGovernance?.enabled)try{let{aggregateFromDirectory:l}=await import('./dist-3ZCH25SG.js'),g=await l(this.rootDir),c=o(g);a=V(s,this.rootDir,c);}catch{}if(t==="solo"){let l=await this.runSoloMode(s,e);r.agentsSpawned=1,r.agentResults=[l],r.success=l.success,l.relay&&(r.totalTokens=l.relay.metrics.tokens_used,r.totalCost=b$1(r.totalTokens,e.orchestratorModel||"opus"));}else {let l=await this.runFacetedMode(s,e);r.agentsSpawned=l.results.length,r.agentResults=l.results,r.totalTokens=l.totalTokens,r.totalCost=l.totalCost,r.success=l.success,r.parallelBuilderStats=l.parallelBuilderStats;}if(e.pmGovernance?.enabled&&a)try{let{aggregateFromDirectory:l}=await import('./dist-3ZCH25SG.js'),g=await l(this.rootDir),c=o(g),p=[],h=[];for(let u of r.agentResults)u.relay?.outputs?.artifacts&&p.push(...u.relay.outputs.artifacts.map(y=>y.path));for(let u of a.affectedSymbols)h.push(u.symbol);let d=H(p,h,this.rootDir,c);r.complianceReport={preflight:a,postflight:d},e.pmGovernance.blockOnViolations&&d.blocksCompletion&&(r.success=!1);}catch{r.complianceReport={preflight:a};}r.duration_ms=Date.now()-n;let i=this.auditLogger.startOrchestration(o$1,s,t);return i.completed=new Date().toISOString(),i.status=r.success?"success":"failed",i.totals={duration_ms:r.duration_ms,tokens:r.totalTokens.total,cost_usd:r.totalCost,agents_spawned:r.agentsSpawned,files_created:0,files_modified:0},this.auditLogger.saveOrchestration(i),r.log=i,r}catch(a){return r.error=a instanceof Error?a.message:String(a),r.duration_ms=Date.now()-n,r}}async compare(s,e={}){let t=await this.orchestrate(s,{...e,mode:"solo"}),n=await this.orchestrate(s,{...e,mode:"faceted"}),o=t.totalTokens.total-n.totalTokens.total,r=t.totalCost-n.totalCost,a=t.duration_ms-n.duration_ms,i="tie";return n.success&&!t.success?i="faceted":t.success&&!n.success?i="solo":n.totalCost<t.totalCost*.8?i="faceted":t.totalCost<n.totalCost*.8&&(i="solo"),{solo:t,faceted:n,comparison:{winner:i,tokensSaved:o,costDiff:r,timeDiff:a,soloSucceeded:t.success,facetedSucceeded:n.success}}}async runSoloMode(s,e$1){let n=e(this.rootDir)?.team.default_agent||"architect",o=e$1.orchestratorModel||"opus",r={model:o,workingDirectory:e$1.workingDirectory||this.rootDir,mcpServerPath:e$1.mcpServerPath,budget:e$1.budget,onMessage:e$1.onMessage?i=>e$1.onMessage("solo",i):void 0,onCheckpoint:e$1.onCheckpoint};e$1.onAgentStart&&e$1.onAgentStart("solo",s,o);let a=await this.spawner.spawn(n,s,r);return e$1.onAgentComplete&&e$1.onAgentComplete("solo",a,o),a}async runFacetedMode(s,e$1){let t=e(this.rootDir);if(!t)return {success:false,results:[],totalTokens:{input:0,output:0,total:0},totalCost:0};let n="";if(be(s)){let d=a$1(s);if(d.length>0){let u=[];u.push(`## Auto-Ripple Analysis
3
- `),u.push("The following symbols are affected by this refactoring:"),u.push("");for(let y of d.slice(0,5))u.push(`- **${y}**: Check dependencies before renaming/moving`);u.push(""),u.push("**Recommendation:** Run `paradigm_ripple` for each symbol before making changes."),n=u.join(`
4
- `);}}let o=this.planAgentSequence(s,t.agents),r=this.groupByStage(o),a=[],i={input:0,output:0,total:0},l=0,g=new Map,c=true,p,h=Array.from(r.keys()).sort((d,u)=>d-u);for(let d of h){let u=r.get(d)||[];if(u.length===0)continue;if(e$1.checkpoints?.beforeAgentSpawn&&e$1.onCheckpoint){let m=u.map(S=>S.agent).join(", ");if(!await e$1.onCheckpoint(`Stage ${d}: Spawn ${m}${u.length>1?" (parallel)":""}`)){c=false;break}}let y=u.map(async m=>{let b=e$1.agentBudgets?.[m.agent]?.maxTokens?"haiku":m.model||pe[m.agent]||"sonnet",S="";if(m.dependsOn.length>0){let R=m.dependsOn.map(I=>g.get(I)).filter(Boolean);R.length>0&&(S=R.join(`
5
-
6
- ---
7
-
8
- `));}let O=S;m.agent==="architect"&&n&&(O=n+(S?`
9
-
10
- ---
11
-
12
- `+S:""));let v=O?`${m.subtask}
13
-
14
- ## Context from previous agents:
15
- ${O}`:m.subtask,A={model:b,workingDirectory:e$1.workingDirectory||this.rootDir,mcpServerPath:e$1.mcpServerPath,budget:e$1.agentBudgets?.[m.agent]||e$1.budget,onMessage:e$1.onMessage?R=>e$1.onMessage(m.agent,R):void 0,onCheckpoint:e$1.onCheckpoint};e$1.onAgentStart&&e$1.onAgentStart(m.agent,m.subtask,b);let P=await this.spawner.spawn(m.agent,v,A);return e$1.onAgentComplete&&e$1.onAgentComplete(m.agent,P,b),{step:m,result:P,model:b}}),k=await Promise.all(y);for(let{step:m,result:b,model:S}of k){if(a.push(b),b.relay){i.input+=b.relay.metrics.tokens_used.input,i.output+=b.relay.metrics.tokens_used.output,i.total+=b.relay.metrics.tokens_used.total,l+=b$1(b.relay.metrics.tokens_used,S);let O=b.relay.handoff?.context||`${m.agent} completed: ${b.relay.outputs.decisions.join(", ")||"task done"}`;if(g.set(m.agent,O),m.agent==="architect"&&b.relay){let v=this.extractFilePlanFromRelay(b);if(v&&v.length>0){let A=this.planBuilderStages(v);if(A.hasFilePlan&&A.totalBuilders>1){let P=await this.runParallelBuilders(A,g.get("architect")||"",e$1);a.push(...P.results),i.input+=P.totalTokens.input,i.output+=P.totalTokens.output,i.total+=P.totalTokens.total,l+=P.totalCost,P.success||(c=false),p={usedFilePlan:true,totalSubPhases:A.stages.length,totalParallelBuilders:A.totalBuilders,filesCreated:A.totalFiles};for(let[R,I]of r){let X=I.filter(Q=>Q.agent!=="builder");r.set(R,X);}}}}}!b.success&&m.required&&(c=false);}if(!c||e$1.checkpoints?.afterAgentComplete&&e$1.onCheckpoint&&!await e$1.onCheckpoint(`Stage ${d} completed. Continue to next stage?`))break}return {success:c,results:a,totalTokens:i,totalCost:l,parallelBuilderStats:p}}extractFilePlanFromRelay(s){if(!s.relay)return;let e=s.relay.handoff?.context||"";if(e.includes("filePlan:"))return this.parseFilePlanFromText(e)}parseFilePlanFromText(s){let e=[],t=s.match(/filePlan:\s*\n([\s\S]*?)(?=\n[a-z_]+:|$)/);if(!t)return;let o=t[1].split(`
16
- `),r=null,a=false,i={};for(let l of o){let g=l.trim();if(!(!g||g.startsWith("#"))){if(g.startsWith("- group:")){r&&(i.path&&(r.files.push({path:i.path,description:i.description||""}),i={}),e.push(r)),r={group:g.split(":")[1].trim(),subPhase:0,files:[]},a=false;continue}if(r){if(g.startsWith("subPhase:")){r.subPhase=parseInt(g.split(":")[1].trim(),10)||0;continue}if(g==="files:"){a=true;continue}if(a){if(g.startsWith("- path:")){i.path&&r.files.push({path:i.path,description:i.description||""}),i={path:g.split(":").slice(1).join(":").trim().replace(/^["']|["']$/g,"")};continue}if(g.startsWith("description:")){i.description=g.split(":").slice(1).join(":").trim().replace(/^["']|["']$/g,"");continue}}}}}return i.path&&r&&r.files.push({path:i.path,description:i.description||""}),r&&e.push(r),e.length>0?e:void 0}planAgentSequence(s,e){let t=a$1(s),n=s.toLowerCase(),o=K(s),r=[],a=me(s);if(o.type==="analysis")return e.architect&&r.push({agent:"architect",subtask:`Analyze and recommend: ${s}`,required:true,stage:0,dependsOn:[],model:"opus"}),r;if(o.type==="documentation")return e.architect&&r.push({agent:"architect",subtask:`Document: ${s}`,required:true,stage:0,dependsOn:[],model:"sonnet"}),r;let i=n.includes("design")||n.includes("architect")||n.includes("plan")||n.includes("spec"),l=a||n.includes("auth")||n.includes("security")||n.includes("gate")||t.some(u=>u.startsWith("^"));if(i&&e.architect&&r.push({agent:"architect",subtask:`Design and specify: ${s}`,required:true,stage:0,dependsOn:[],model:"opus"}),l&&e.security&&r.push({agent:"security",subtask:`Review security aspects of: ${s}`,required:a,stage:0,dependsOn:[],model:"opus"}),(n.includes("build")||n.includes("implement")||n.includes("create")||n.includes("add")||n.includes("fix"))&&e.builder){let u=i&&e.architect?["architect"]:[];r.push({agent:"builder",subtask:`Implement: ${s}`,required:true,stage:u.length>0?1:0,dependsOn:u,model:"haiku"});}let c=n.includes("review")||n.includes("check"),p=n.includes("test")||n.includes("verify")||n.includes("validate"),h=r.some(u=>u.agent==="builder"),d=h?2:i?1:0;if(c&&e.reviewer&&r.push({agent:"reviewer",subtask:`Review: ${s}`,required:false,stage:d,dependsOn:h?["builder"]:[],model:"sonnet"}),p&&e.tester&&r.push({agent:"tester",subtask:`Test and validate: ${s}`,required:false,stage:d,dependsOn:h?["builder"]:[],model:"haiku"}),r.length===0){let u=o.recommendedAgents;if(u.includes("architect")&&e.architect&&r.push({agent:"architect",subtask:`Design: ${s}`,required:true,stage:0,dependsOn:[],model:B("architect",o)}),(u.includes("security")||a)&&e.security&&r.push({agent:"security",subtask:`Security review: ${s}`,required:a,stage:0,dependsOn:[],model:"opus"}),u.includes("builder")&&e.builder){let y=r.length>0;r.push({agent:"builder",subtask:`Implement: ${s}`,required:true,stage:y?1:0,dependsOn:r.filter(k=>k.stage===0).map(k=>k.agent),model:B("builder",o)});}if(u.includes("tester")&&e.tester){let y=r.find(k=>k.agent==="builder")?.stage??0;r.push({agent:"tester",subtask:`Test: ${s}`,required:false,stage:y+1,dependsOn:e.builder?["builder"]:[],model:B("tester",o)});}}return r.sort((u,y)=>u.stage-y.stage)}groupByStage(s){let e=new Map;for(let t of s){let n=e.get(t.stage)||[];n.push({agent:t.agent,subtask:t.subtask,required:t.required,dependsOn:t.dependsOn}),e.set(t.stage,n);}return e}generateOrchestrationId(){let s=new Date().toISOString().slice(0,10),e=Math.random().toString(36).substring(2,8);return `orch-${s}-${e}`}planBuilderStages(s){if(!s||s.length===0)return {hasFilePlan:false,stages:[{subPhase:0,builders:[{agent:"builder",group:"all",files:[],availableFiles:[]}]}],totalFiles:0,totalBuilders:1};let e=new Map;for(let i of s){let l=e.get(i.subPhase)||[];l.push(i),e.set(i.subPhase,l);}let t=[],n=[...e.keys()].sort((i,l)=>i-l),o=[],r=0,a=0;for(let i of n){let l=e.get(i),g=[];for(let c=0;c<l.length;c++){let p=l[c];a+=p.files.length,r++,g.push({agent:`builder-${i}-${c}`,group:p.group,files:p.files,availableFiles:[...o]});}t.push({subPhase:i,builders:g});for(let c of l)for(let p of c.files)o.push(p.path);}return {hasFilePlan:true,stages:t,totalFiles:a,totalBuilders:r}}buildParallelBuilderPrompt(s,e,t,n){let o=[];o.push(`You are a BUILDER agent responsible for implementing the **${n}** group.`),o.push(""),o.push("## Your Assignment"),o.push(""),o.push("### Files to Create:");for(let r of s)o.push(`- \`${r.path}\`: ${r.description}`);if(o.push(""),e.length>0){o.push("### Available Files (already created):"),o.push("These files exist and you can import from them:");for(let r of e)o.push(`- \`${r}\``);o.push("");}return t&&(o.push("### Context from Architect:"),o.push(t),o.push("")),o.push("### Instructions:"),o.push("1. Create ONLY the files assigned to you"),o.push("2. You can import from available files (already created)"),o.push("3. Follow existing patterns in the codebase"),o.push("4. Use the Paradigm logger (not console.log)"),o.push("5. End with the standard Agent Relay block"),o.join(`
17
- `)}async runParallelBuilders(s,e,t){let n=[],o={input:0,output:0,total:0},r=0,a=true;for(let i of s.stages){if(t.checkpoints?.beforeAgentSpawn&&t.onCheckpoint){let c=i.builders.map(h=>h.group).join(", ");if(!await t.onCheckpoint(`Builder Sub-phase ${i.subPhase}: ${c}${i.builders.length>1?" (parallel)":""}`)){a=false;break}}let l=i.builders.map(async c=>{let p=this.buildParallelBuilderPrompt(c.files,c.availableFiles,e,c.group),h={model:"haiku",workingDirectory:t.workingDirectory||this.rootDir,mcpServerPath:t.mcpServerPath,budget:t.budget,onMessage:t.onMessage?u=>t.onMessage(c.agent,u):void 0,onCheckpoint:t.onCheckpoint};t.onAgentStart&&t.onAgentStart(c.agent,`Implement ${c.group}`,"haiku");let d=await this.spawner.spawn("builder",p,h);return t.onAgentComplete&&t.onAgentComplete(c.agent,d,"haiku"),{builder:c,result:d}}),g=await Promise.all(l);for(let{result:c}of g)n.push(c),c.relay&&(o.input+=c.relay.metrics.tokens_used.input,o.output+=c.relay.metrics.tokens_used.output,o.total+=c.relay.metrics.tokens_used.total,r+=b$1(c.relay.metrics.tokens_used,"haiku")),c.success||(a=false);if(!a||t.checkpoints?.afterAgentComplete&&t.onCheckpoint&&!await t.onCheckpoint(`Sub-phase ${i.subPhase} complete. Continue to next sub-phase?`))break}return {success:a,results:n,totalTokens:o,totalCost:r}}};var J=class{rootDir;orchestrationsDir;constructor(s){this.rootDir=s,this.orchestrationsDir=C.join(s,".paradigm","orchestrations"),this.ensureOrchestrationDir();}async startBackground(s,e={}){let t=this.generateId(),n=C.join(this.orchestrationsDir,`${t}.output`),o=C.join(this.orchestrationsDir,`${t}.log`),r={id:t,task:s,status:"pending",mode:e.mode||"faceted",created:new Date().toISOString(),outputFile:n,logFile:o,artifacts:[]};return this.saveOrchestration(r),this.spawnOrchestration(t,s,e),r}getOrchestration(s){let e=C.join(this.orchestrationsDir,`${s}.yaml`);if(!w.existsSync(e))return null;try{let t=w.readFileSync(e,"utf-8");return F.load(t)}catch{return null}}listOrchestrations(s={}){let e=w.readdirSync(this.orchestrationsDir).filter(n=>n.endsWith(".yaml")&&!n.includes("output")&&!n.includes("log")).sort().reverse(),t=[];for(let n of e){if(s.limit&&t.length>=s.limit)break;let o=C.join(this.orchestrationsDir,n);try{let r=w.readFileSync(o,"utf-8"),a=F.load(r);if(s.status&&!(Array.isArray(s.status)?s.status:[s.status]).includes(a.status))continue;t.push(a);}catch{}}return t}getRunning(){return this.listOrchestrations({status:"running"})}getOutput(s,e={}){let t=this.getOrchestration(s);if(!t||!w.existsSync(t.outputFile))return "";let n=w.readFileSync(t.outputFile,"utf-8");return e.lines?n.split(`
18
- `).slice(-e.lines).join(`
19
- `):n}async accept(s,e={}){let t=this.getOrchestration(s);if(!t)return false;if(t.status!=="completed")throw new Error(`Cannot accept orchestration in '${t.status}' status`);return t.status="accepted",this.saveOrchestration(t),true}async reject(s,e={}){let t=this.getOrchestration(s);if(!t)return false;if(t.status!=="completed")throw new Error(`Cannot reject orchestration in '${t.status}' status`);if(t.status="rejected",t.error=e.reason,this.saveOrchestration(t),e.cleanup&&t.artifacts.length>0){for(let n of t.artifacts)if(n.action==="created"){let o=C.join(this.rootDir,n.path);w.existsSync(o)&&w.unlinkSync(o);}}return true}async getDiff(s){let e=this.getOrchestration(s);if(!e)return "";if(e.artifacts.length===0)return "No file changes in this orchestration.";let t=[];t.push(`Orchestration: ${s}`),t.push(`Task: ${e.task}`),t.push(`Status: ${e.status}`),t.push(""),t.push("Files:");for(let n of e.artifacts){let o=n.action==="created"?"+":n.action==="modified"?"~":"-";t.push(` ${o} ${n.path}`);}return t.join(`
20
- `)}markComplete(s,e){let t=this.getOrchestration(s);if(t){t.status=e.success?"completed":"failed",t.completed=new Date().toISOString(),t.result=e,t.parallelBuilderStats=e.parallelBuilderStats;for(let n of e.agentResults)if(n.relay?.outputs.artifacts)for(let o of n.relay.outputs.artifacts)t.artifacts.push(o);this.saveOrchestration(t);}}async notify(s,e=["bell"]){let t=this.getOrchestration(s);if(t)for(let n of e)switch(n){case "bell":process.stdout.write("\x07");break;case "desktop":try{process.platform==="darwin"?spawn("osascript",["-e",`display notification "Orchestration ${t.status}: ${t.task.slice(0,50)}" with title "Paradigm"`]):spawn("notify-send",["Paradigm",`Orchestration ${t.status}: ${t.task.slice(0,50)}`]);}catch{}break;case "file":let o=C.join(this.orchestrationsDir,`${s}.status`);w.writeFileSync(o,JSON.stringify({id:s,status:t.status,completed:t.completed,task:t.task}));break;}}ensureOrchestrationDir(){w.existsSync(this.orchestrationsDir)||w.mkdirSync(this.orchestrationsDir,{recursive:true});}generateId(){let s=new Date().toISOString().slice(0,10),e=Date.now().toString(36),t=Math.random().toString(36).substring(2,6);return `orch-${s}-${e}-${t}`}saveOrchestration(s){let e=C.join(this.orchestrationsDir,`${s.id}.yaml`);w.writeFileSync(e,F.dump(s));}spawnOrchestration(s,e,t){let n=this.getOrchestration(s);n&&(n.status="running",n.started=new Date().toISOString(),this.saveOrchestration(n)),(async()=>{try{let o=new E(this.rootDir);await o.initialize();let r=w.createWriteStream(n.outputFile,{flags:"a"}),a=await o.orchestrate(e,{...t,onMessage:(i,l)=>{l.type==="text"&&r.write(`[${i}] ${l.content}
21
- `),t.onMessage?.(i,l);},onAgentStart:(i,l,g)=>{r.write(`
22
- \u25B6 ${i}: ${l}
23
- `),t.onAgentStart?.(i,l,g);},onAgentComplete:(i,l,g)=>{let c=l.success?"\u2713":"\u2717";r.write(`${c} ${i} completed
24
- `),t.onAgentComplete?.(i,l,g);}});r.end(),this.markComplete(s,a),t.notify&&await this.notify(s,t.notifyMethods||["bell"]);}catch(o){let r=this.getOrchestration(s);r&&(r.status="failed",r.error=o instanceof Error?o.message:String(o),r.completed=new Date().toISOString(),this.saveOrchestration(r));}})();}};export{E as a,J as b};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import*as t from'js-yaml';var n={"#":{name:"Component",description:"Any documented code unit",owner:"purpose",examples:["#Button","#api-client","#AuthProvider"]},$:{name:"Flow",description:"Multi-step processes or user journeys",owner:"shared",examples:["$checkout-flow","$auth-flow"]},"^":{name:"Gate",description:"Authorization checkpoints",owner:"portal",examples:["^authenticated","^admin-only","^resource-owner"]},"!":{name:"Signal",description:"Events for side effects",owner:"portal",examples:["!payment-completed","!login-failed","!rate-limited"]},"~":{name:"Aspect",description:"Rules with required code anchors",owner:"purpose",examples:["~audit-required","~rate-limited","~cache-invalidation"]}},i=["Use kebab-case for all symbol IDs (feature-name, not featureName)","Document flows when logic spans 3+ components","Reference related items using symbol prefixes (@ # $ % ~ ^ ! ?)","Add descriptions to all features and gates","Update .purpose files when changing feature behavior","Keep gates minimal - one responsibility per gate","Use signals for side effects, not direct state mutations"];function r(e){return {version:"1.0","agent-guidelines":{overview:`${e} uses Paradigm for structured planning and context management.`,"how-to-use":["Check .purpose files in directories for context before making changes","Run `paradigm status` to see the project symbol index","Run `paradigm visualize` to explore the Dreamscape","Reference symbols using prefixes: @feature #component ^gate",'Attach an image and say "paradigm scan" to map UI to code'],"update-rules":["When adding a feature, create/update the nearest .purpose file","When adding authorization, update portal.yaml","When exploring ideas, add to .premise or use ?symbol prefix","Always update references when renaming symbols"]},"symbol-system":n,states:{user:{authenticated:{type:"boolean",default:false,description:"User is logged in"},role:{type:"enum",values:["guest","user","admin"],description:"User access level"}},app:{loading:{type:"boolean",default:false,description:"App is loading"}}},"purpose-required":[{pattern:"src/features/*",depth:1},{pattern:"src/components/*",depth:1}],conventions:i,scan:{enabled:true,autoInclude:true}}}function o(e){return t.dump(e,{lineWidth:-1,quotingType:'"'})}function a(e){return t.load(e)}export{n as a,i as b,r as c,o as d,a as e};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import {b as b$1}from'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import*as u from'js-yaml';import {execSync}from'child_process';function j(s){let e=s.toLowerCase();return e.includes("claude")||e.includes("anthropic")?"anthropic":e.includes("gpt")||e.includes("openai")||e.includes("o1")||e.includes("o3")?"openai":e.includes("gemini")||e.includes("google")||e.includes("palm")?"google":e.includes("llama")||e.includes("meta")?"meta":e.includes("mistral")||e.includes("mixtral")?"mistral":e.includes("deepseek")?"deepseek":e.includes("cohere")||e.includes("command")?"cohere":"unknown"}function T(s){let e=s,n=e.author;if(e.type||(e.type="agent-session"),typeof n=="string")return s;if(n&&typeof n=="object"&&!Array.isArray(n)){let t=n;t.type==="agent"?(e.author="unknown",e.agent={provider:t.model?j(t.model):j(t.id),model:t.model||t.id}):e.author=t.id||"unknown",delete e.assistedBy;}return e}function E(s){return s.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,20)||"unknown"}function F(){let s=process.env.PARADIGM_AUTHOR;if(s)return E(s);try{let e=execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim();if(e)return E(e)}catch{}try{let e=os.userInfo().username;if(e)return E(e)}catch{}return "unknown"}function L(s){return s.endsWith(".yaml")||s.endsWith(".lore")}function k(s,e,n){let t=a.join(s,_,b,e),r=a.join(t,`${n}.lore`);if(i.existsSync(r))return r;let o=a.join(t,`${n}.yaml`);return i.existsSync(o)?o:null}async function O(s,e){let n=a.join(s,_,b);if(!i.existsSync(n))return [];$(s);let t=[],r=i.readdirSync(n).filter(o=>/^\d{4}-\d{2}-\d{2}$/.test(o)).sort().reverse();for(let o of r){if(e?.dateFrom&&o<e.dateFrom.slice(0,10)||e?.dateTo&&o>e.dateTo.slice(0,10))continue;let f=a.join(n,o),l=i.readdirSync(f).filter(L).sort();for(let c of l)try{let g=i.readFileSync(a.join(f,c),"utf8"),d=u.load(g);t.push(T(d));}catch{}}return e?M(t,e):t}async function P(s,e){let n=e.match(/^L-(\d{4}-\d{2}-\d{2})-/);if(n){let r=n[1],o=k(s,r,e);if(o)try{let f=i.readFileSync(o,"utf8"),l=u.load(f);return T(l)}catch{return null}}return (await O(s)).find(r=>r.id===e)||null}async function z(s){let e=a.join(s,_,R);if(!i.existsSync(e))return null;try{let n=i.readFileSync(e,"utf8");return u.load(n)}catch{return null}}function B(s){try{let e=execSync("git rev-parse HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),n=execSync("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),t=execSync("git status --porcelain",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim();return {ref:e,branch:n,dirty:t.length>0}}catch{return}}async function H(s,e){let n=a.join(s,_),t=e.timestamp.slice(0,10),r=a.join(n,b,t);i.existsSync(r)||i.mkdirSync(r,{recursive:true}),e.author||(e.author=F()),e.git_context||(e.git_context=B(s)),e.id||(e.id=W(s,t,e.author,e.timestamp));let o=a.join(r,`${e.id}.lore`);return i.writeFileSync(o,u.dump(e,{lineWidth:-1,noRefs:true})),await A(s),e.id}async function K(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.review=n,i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function A(s){let e=a.join(s,_),n=a.join(e,b);if(!i.existsSync(n))return;$(s);let t=new Set,r=0,o="",f=i.readdirSync(n).filter(d=>/^\d{4}-\d{2}-\d{2}$/.test(d));for(let d of f){let y=a.join(n,d),h=i.readdirSync(y).filter(L);for(let w of h)try{let m=i.readFileSync(a.join(y,w),"utf8"),S=u.load(m),p=T(S);t.add(p.author),r++,(!o||p.timestamp>o)&&(o=p.timestamp);}catch{}}let l="unknown",c=a.join(s,".paradigm","config.yaml");if(i.existsSync(c))try{let d=u.load(i.readFileSync(c,"utf8"));l=d.project||d.name||"unknown";}catch{}let g={version:"1.0",project:l,entries:r,last_updated:o||new Date().toISOString(),authors:Array.from(t)};i.existsSync(e)||i.mkdirSync(e,{recursive:true}),i.writeFileSync(a.join(e,R),u.dump(g,{lineWidth:-1,noRefs:true}));}function $(s){let e=a.join(s,_,b);if(!i.existsSync(e))return 0;let n=i.readdirSync(e).filter(r=>L(r)&&!r.startsWith(".")),t=0;for(let r of n){let o=a.join(e,r);if(i.statSync(o).isFile())try{let l=i.readFileSync(o,"utf8"),c=u.load(l);if(c.author&&typeof c.author=="object"||typeof c.author=="string"&&c.timestamp)continue;let g=typeof c.date=="string"?c.date.slice(0,10):new Date().toISOString().slice(0,10),d=a.join(e,g);i.existsSync(d)||i.mkdirSync(d,{recursive:!0});let y=F(),h=`${g}T00:00:00.000Z`,w=W(s,g,y,h),m=String(c.type||"agent-session"),S=["agent-session","human-note","decision","review","incident","milestone"].includes(m)?m:"agent-session",p;if(c.test_results&&typeof c.test_results=="object"){let v=c.test_results;p={status:v.total===v.passed?"pass":"partial",details:{tests:v.total===v.passed?"pass":"fail"}};}let C={id:w,type:S,timestamp:h,author:"unknown",agent:{provider:"unknown",model:"unknown"},title:String(c.title||r.replace(/\.(yaml|lore)$/,"")),summary:String(c.summary||""),symbols_touched:Array.isArray(c.symbols_touched)?c.symbols_touched:[],files_modified:Array.isArray(c.files_modified)?c.files_modified:void 0,...p?{verification:p}:{},tags:["migrated",m]};i.writeFileSync(a.join(d,`${w}.lore`),u.dump(C,{lineWidth:-1,noRefs:!0})),i.unlinkSync(o),t++;}catch{}}return t}async function G(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(n.title!==void 0&&(t.title=n.title),n.summary!==void 0&&(t.summary=n.summary),n.type!==void 0&&(t.type=n.type),n.duration_minutes!==void 0&&(t.duration_minutes=n.duration_minutes),n.symbols_touched!==void 0&&(t.symbols_touched=n.symbols_touched),n.symbols_created!==void 0&&(t.symbols_created=n.symbols_created),n.files_created!==void 0&&(t.files_created=n.files_created),n.files_modified!==void 0&&(t.files_modified=n.files_modified),n.lines_added!==void 0&&(t.lines_added=n.lines_added),n.lines_removed!==void 0&&(t.lines_removed=n.lines_removed),n.commit!==void 0&&(t.commit=n.commit),n.decisions!==void 0&&(t.decisions=n.decisions),n.errors_encountered!==void 0&&(t.errors_encountered=n.errors_encountered),n.learnings!==void 0&&(t.learnings=n.learnings),n.verification!==void 0&&(t.verification=n.verification),n.tags!==void 0&&(t.tags=n.tags),n.body!==void 0&&(t.body=n.body),n.linked_lore!==void 0&&(t.linked_lore=n.linked_lore),n.linked_tasks!==void 0&&(t.linked_tasks=n.linked_tasks),n.linked_commits!==void 0&&(t.linked_commits=n.linked_commits),n.confidence!==void 0&&(t.confidence=n.confidence),n.assessment!==void 0&&(t.assessment=n.assessment),n.assessment_delta!==void 0&&(t.assessment_delta=n.assessment_delta),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),await A(s),true):false}function I(s){switch(s){case "correct":return 1;case "partial":return .5;case "incorrect":return 0}}async function V(s,e,n){let t=await P(s,e);if(!t)return false;let r=t.timestamp.slice(0,10),o=k(s,r,e);return o?(t.assessment=n,t.confidence!=null&&(t.assessment_delta=I(n.verdict)-t.confidence),i.writeFileSync(o,u.dump(t,{lineWidth:-1,noRefs:true})),true):false}async function q(s,e){let n=await P(s,e);if(!n)return false;let t=n.timestamp.slice(0,10),r=k(s,t,e);if(!r)return false;i.unlinkSync(r);let o=a.dirname(r);return i.readdirSync(o).filter(L).length===0&&i.rmdirSync(o),await A(s),true}function M(s,e){let n=s;if(e.author&&(n=n.filter(t=>t.author===e.author)),e.hasAgent!==void 0?n=n.filter(t=>e.hasAgent?t.agent!=null:t.agent==null):e.authorType&&(n=n.filter(t=>e.authorType==="agent"?t.agent!=null:t.agent==null)),e.symbol&&(n=n.filter(t=>t.symbols_touched.includes(e.symbol)||t.symbols_created?.includes(e.symbol))),e.dateFrom){let t=new Date(e.dateFrom).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()>=t);}if(e.dateTo){let t=new Date(e.dateTo).getTime();n=n.filter(r=>new Date(r.timestamp).getTime()<=t);}if(e.type&&(n=n.filter(t=>t.type===e.type)),e.tag){let t=e.tag;n=n.filter(r=>r.tags?.some(o=>o===t||o.startsWith(t+":")||t.includes(":")&&o===t));}return e.tags&&e.tags.length>0&&(n=n.filter(t=>e.tags.some(r=>t.tags?.includes(r)))),e.hasBody!==void 0&&(n=n.filter(t=>e.hasBody?t.body!=null&&t.body.length>0:!t.body||t.body.length===0)),e.hasReview!==void 0&&(n=n.filter(t=>e.hasReview?t.review!=null:t.review==null)),e.hasConfidence!==void 0&&(n=n.filter(t=>e.hasConfidence?t.confidence!=null:t.confidence==null)),e.hasAssessment!==void 0&&(n=n.filter(t=>e.hasAssessment?t.assessment!=null:t.assessment==null)),n.sort((t,r)=>new Date(r.timestamp).getTime()-new Date(t.timestamp).getTime()),e.offset&&(n=n.slice(e.offset)),e.limit&&(n=n.slice(0,e.limit)),n}function W(s,e,n,t){let r=E(n),o=new Date(t),f=String(o.getUTCHours()).padStart(2,"0"),l=String(o.getUTCMinutes()).padStart(2,"0"),c=String(o.getUTCSeconds()).padStart(2,"0"),g=`${f}${l}${c}`,d=`L-${e}-${r}-${g}`,y=a.join(s,_,b,e);if(!i.existsSync(y))return `${d}-001`;let h=i.readdirSync(y).filter(m=>m.startsWith(d)&&L(m)).map(m=>{let S=m.match(/-(\d{3})\.(yaml|lore)$/);return S?parseInt(S[1],10):0}),w=h.length>0?Math.max(...h)+1:1;return `${d}-${String(w).padStart(3,"0")}`}var _,b,R,N=b$1(()=>{_=".paradigm/lore",b="entries",R="timeline.yaml";});export{O as a,P as b,z as c,H as d,K as e,A as f,G as g,V as h,q as i,N as j};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import*as r from'fs';import*as c from'path';import*as d from'js-yaml';var u=".paradigm/decisions";function y(){let t=new Date().toISOString().slice(0,10),n=String(Math.floor(Math.random()*999)+1).padStart(3,"0");return `TD-${t}-${n}`}function D(o,t){let n=new Date,a=y(),s={id:a,timestamp:n.toISOString(),...t},e=c.join(o,u);r.mkdirSync(e,{recursive:true});let i=c.join(e,`${a}.yaml`);return r.writeFileSync(i,d.dump(s,{lineWidth:120,noRefs:true}),"utf8"),s}function g(o,t,n){let a=f(o,t);if(!a)return null;let s={...a,...n},e=c.join(o,u),i=c.join(e,`${t}.yaml`);return r.writeFileSync(i,d.dump(s,{lineWidth:120,noRefs:true}),"utf8"),s}function h(o,t,n){if(!f(o,t))return null;let s=D(o,n),e=g(o,t,{status:"superseded",superseded_by:s.id});return e?{old:e,new:s}:null}function p(o,t){let n=c.join(o,u);if(!r.existsSync(n))return [];let a=[],s=r.readdirSync(n).filter(i=>i.endsWith(".yaml"));for(let i of s)try{let m=r.readFileSync(c.join(n,i),"utf8"),l=d.load(m);l&&l.id&&a.push(l);}catch{}let e=a;return t?.status&&(e=e.filter(i=>i.status===t.status)),t?.participant&&(e=e.filter(i=>i.participants.some(m=>m.id===t.participant))),t?.symbol&&(e=e.filter(i=>i.symbols_affected?.includes(t.symbol))),t?.tag&&(e=e.filter(i=>i.tags?.some(m=>m.startsWith(t.tag)))),t?.dateFrom&&(e=e.filter(i=>i.timestamp>=t.dateFrom)),t?.dateTo&&(e=e.filter(i=>i.timestamp<=t.dateTo)),e.sort((i,m)=>m.timestamp.localeCompare(i.timestamp)),t?.limit&&(e=e.slice(0,t.limit)),e}function f(o,t){let n=c.join(o,u),a=c.join(n,`${t}.yaml`);if(!r.existsSync(a))return null;let s=r.readFileSync(a,"utf8");return d.load(s)}function S(o,t){return p(o,{symbol:t,status:"active"})}function T(o){let t=p(o),n={},a=new Set;for(let s of t)n[s.status]=(n[s.status]||0)+1,s.symbols_affected?.forEach(e=>a.add(e));return {total:t.length,active:n.active||0,superseded:n.superseded||0,deprecated:n.deprecated||0,proposed:n.proposed||0,recentDecisions:t.slice(0,10).map(s=>({id:s.id,title:s.title,status:s.status,timestamp:s.timestamp})),symbolsCovered:[...a].sort()}}export{D as a,g as b,h as c,p as d,f as e,S as f,T as g};
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- import*as d from'fs';import*as r from'path';import*as p from'js-yaml';import {glob}from'glob';var w={visualizerPort:42195,watcherPort:42196,autoConnect:true};async function F(e){let t=r.resolve(e),o=r.dirname(t);if(!d.existsSync(t))throw new Error(`Gate config not found: ${t}`);let n=d.readFileSync(t,"utf8"),s=p.load(n);if(!s.version)throw new Error('Gate config missing required "version" field');let i=[],a=s,l=s.gates||a.portals;if(l)for(let[f,c]of Object.entries(l))i.push(u(f,c));if(s.include)for(let f of s.include){let c=r.join(o,f),m=await glob(c.replace(/\\/g,"/"));for(let y of m){let $=await v(y);i.push(...$);}}let h=[];if(s.flows)for(let[f,c]of Object.entries(s.flows))h.push(D(f,c));return {version:s.version,gates:i,flows:h,settings:{dev:{...w,...s.settings?.dev}}}}async function v(e){let t=d.readFileSync(e,"utf8"),o=p.load(t);if(o.id)return [u(o.id,o)];if(o.gates){let n=[];for(let[s,i]of Object.entries(o.gates))n.push(u(s,i));return n}return []}function u(e,t){let o=[];if(t.locks)for(let s of t.locks)o.push(z(s));let n=[];if(t.prizes)for(let s of t.prizes)n.push(k(s));return {id:e,description:t.description,locks:o,prizes:n,position:t.position}}function z(e){let t=e,o=[];if(t.keys){for(let n of t.keys)if(typeof n=="string")o.push({expression:n});else if(n.expression){let s=n;o.push({expression:s.expression,description:s.description});}}return {id:t.id,description:t.description,keys:o,mode:t.mode||"all"}}function k(e){let t=e;return {id:t.id,oneTime:t.oneTime??false,metadata:t.metadata}}function D(e,t){return {id:e,description:t.description,gates:t.gates||[],forkable:t.forkable}}function C(e){let t={version:e.version,gates:{},flows:{},settings:{dev:e.settings.dev}};for(let o of e.gates){let{id:n,...s}=o;t.gates[n]=s;}for(let o of e.flows){let{id:n,...s}=o;t.flows[n]=s;}return p.dump(t,{indent:2,lineWidth:-1,noRefs:true,sortKeys:false})}function S(){return p.dump({version:"1.0.0",gates:{"example-gate":{description:"An example gate to get you started",locks:[{id:"example-lock",description:"Requires user to be authenticated",keys:[{expression:"user.isAuthenticated === true"}]}],prizes:[{id:"example-prize",oneTime:true,metadata:{event:"first_access"}}]}},flows:{"example-flow":{description:"An example user journey",gates:["example-gate"]}},settings:{dev:{visualizerPort:42195,watcherPort:42196,autoConnect:true}}},{indent:2,lineWidth:-1,noRefs:true,sortKeys:false})}async function P(e){let t=r.resolve(e);return await glob("**/portal.yaml",{cwd:t,absolute:true,ignore:["**/node_modules/**","**/dist/**","**/.git/**"]})}function j(e){let t=[];e.version||t.push({type:"error",message:'Missing required "version" field',path:"version"});let o=new Set;for(let n of e.gates)b(n,o,t),o.add(n.id);for(let n of e.flows)G(n,o,t);return {valid:t.filter(n=>n.type==="error").length===0,issues:t}}function b(e,t,o){let n=`gates.${e.id}`;t.has(e.id)&&o.push({type:"error",message:`Duplicate gate ID: "${e.id}"`,path:n}),/^[a-z][a-z0-9-]*$/.test(e.id)||o.push({type:"warning",message:`Gate ID "${e.id}" should use kebab-case (e.g., "my-gate")`,path:n});let s=new Set;for(let a of e.locks)x(a,s,`${n}.locks`,o),s.add(a.id);let i=new Set;for(let a of e.prizes)i.has(a.id)&&o.push({type:"error",message:`Duplicate prize ID "${a.id}" in gate "${e.id}"`,path:`${n}.prizes`}),i.add(a.id),/^[a-z][a-z0-9-]*$/.test(a.id)||o.push({type:"warning",message:`Prize ID "${a.id}" should use kebab-case`,path:`${n}.prizes`});e.locks.length===0&&o.push({type:"warning",message:`Gate "${e.id}" has no locks - any entity can pass through`,path:n});}function x(e,t,o,n){let s=`${o}.${e.id}`;t.has(e.id)&&n.push({type:"error",message:`Duplicate lock ID: "${e.id}"`,path:s}),/^[a-z][a-z0-9-]*$/.test(e.id)||n.push({type:"warning",message:`Lock ID "${e.id}" should use kebab-case`,path:s}),e.keys.length===0&&n.push({type:"error",message:`Lock "${e.id}" has no keys - it can never be opened`,path:s});for(let i of e.keys)(!i.expression||i.expression.trim()==="")&&n.push({type:"error",message:`Key in lock "${e.id}" has empty expression`,path:`${s}.keys`}),i.expression.includes("==")&&!i.expression.includes("===")&&n.push({type:"warning",message:'Key expression uses "==" instead of "===" - consider using strict equality',path:`${s}.keys`});e.mode&&!["all","any"].includes(e.mode)&&n.push({type:"error",message:`Invalid lock mode "${e.mode}" - must be "all" or "any"`,path:s});}function G(e,t,o){let n=`flows.${e.id}`;/^[a-z][a-z0-9-]*$/.test(e.id)||o.push({type:"warning",message:`Flow ID "${e.id}" should use kebab-case`,path:n});for(let i of e.gates)t.has(i)||o.push({type:"error",message:`Flow "${e.id}" references unknown gate "${i}"`,path:`${n}.gates`});e.gates.length===0&&o.push({type:"warning",message:`Flow "${e.id}" has no gates`,path:n});let s=new Set;for(let i of e.gates)s.has(i)&&o.push({type:"warning",message:`Flow "${e.id}" contains duplicate gate "${i}"`,path:`${n}.gates`}),s.add(i);}function A(e){if(e.valid&&e.issues.length===0)return "\u2705 Configuration is valid";let t=[],o=e.issues.filter(s=>s.type==="error"),n=e.issues.filter(s=>s.type==="warning");if(o.length>0){t.push(`
3
- \u274C ${o.length} error(s):`);for(let s of o)t.push(` \u2022 ${s.message}${s.path?` (${s.path})`:""}`);}if(n.length>0){t.push(`
4
- \u26A0\uFE0F ${n.length} warning(s):`);for(let s of n)t.push(` \u2022 ${s.message}${s.path?` (${s.path})`:""}`);}return e.valid?t.push(`
5
- \u2705 Configuration is valid (with warnings)`):t.push(`
6
- \u274C Configuration is invalid`),t.join(`
7
- `)}export{F as a,v as b,C as c,S as d,P as e,j as f,A as g};
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import*as m from'fs';import*as h from'path';import*as R from'js-yaml';import {execFileSync}from'child_process';var G=["node_modules",".git","dist","build","coverage",".paradigm","vendor","__pycache__",".next","target"];function S(e){let t=h.join(e,"portal.yaml");if(!m.existsSync(t))return null;try{let n=m.readFileSync(t,"utf-8");return R.load(n)}catch{return null}}function C(e){let t=new Set;if(e.gates)for(let n of Object.keys(e.gates)){let s=n.startsWith("^")?n.slice(1):n;t.add(s);}if(e.routes)for(let n of Object.values(e.routes)){let s=Array.isArray(n)?n:n.gates||[];for(let o of s){let a=o.startsWith("^")?o.slice(1):o;t.add(a);}}return Array.from(t)}function B(e){let t=new Set;if(e.routes)for(let n of Object.values(e.routes)){let s=Array.isArray(n)?n:n.gates||[];for(let o of s){let a=o.startsWith("^")?o.slice(1):o;t.add(a);}}return t}function E(e,t){let n={encoding:"utf-8",maxBuffer:10485760,stdio:["ignore","pipe","pipe"]};try{let i=["-n","--no-ignore-vcs",...G.flatMap(u=>["--glob",`!${u}/**`]),"--engine","auto",t,e];return execFileSync("rg",i,n)}catch{}let o=["-rn",...G.map(a=>`--exclude-dir=${a}`),"-E",t,"--",e];try{return execFileSync("grep",o,n)}catch(a){return a?.code===1||a?.status===1,""}}var P=["**/.purpose","**/portal.yaml","**/.paradigm/**/*.yaml","**/.paradigm/**/*.yml"];function x(e){let t=[];for(let o of P){h.join(e,o);let i;try{i=execFileSync("find",[e,"-path","*/node_modules","-prune","-o","-path","*/.git","-prune","-o","(","-name",".purpose","-o","-name","portal.yaml",")","-print"],{encoding:"utf-8",maxBuffer:5242880}).split(`
3
- `).filter(Boolean);}catch{i=[];}for(let u of i)try{let p=m.readFileSync(u,"utf-8").split(`
4
- `);for(let l=0;l<p.length;l++){let d=p[l],g=d.matchAll(/\^([a-z][a-z0-9-]+)/g);for(let c of g)t.push({gate:c[1],file:h.relative(e,u),line:l+1,context:d.trim().slice(0,100),matchType:"symbol"});}}catch{}}let s=[{pattern:`checkGate\\s*\\(['"]([^'"]+)['"]`,type:"function"},{pattern:`requireGate\\s*\\(['"]([^'"]+)['"]`,type:"function"},{pattern:`@Gate\\s*\\(['"]?([^'"\\)]+)['"]?\\)`,type:"function"}];for(let{pattern:o,type:a}of s){let i=E(e,o);for(let u of i.split(`
5
- `).filter(Boolean)){let f=u.match(/^(.+?):(\d+):(.*)$/);if(f){let[,p,l,d]=f,g=d.match(new RegExp(o));if(g&&g[1]){let c=g[1].startsWith("^")?g[1].slice(1):g[1];t.push({gate:c,file:h.relative(e,p),line:parseInt(l,10),context:d.trim().slice(0,100),matchType:a});}}}}return t}function $(e){return [...new Set(e.map(t=>t.gate))]}async function w(e){let t=S(e);if(!t){let r=x(e),U=$(r);return U.length===0?{status:"compliant",declaredButUnused:[],routeAttachedUnused:[],orphanUnused:[],usedButUndeclared:[],properlyDeclared:[],suggestions:["No portal.yaml found, and no gate references detected in code."],references:[]}:{status:"violations",declaredButUnused:[],routeAttachedUnused:[],orphanUnused:[],usedButUndeclared:U,properlyDeclared:[],suggestions:["Gate references found in code but no portal.yaml exists.","Create a portal.yaml file to declare these gates:",...U.map(b=>` - ^${b}`),"","Run: paradigm portal init"],references:r}}let n=C(t),s=B(t),o=x(e),a=$(o),i=new Set(n),u=new Set(a),f=n.filter(r=>!u.has(r)),p=f.filter(r=>s.has(r)),l=f.filter(r=>!s.has(r)),d=a.filter(r=>!i.has(r)),g=n.filter(r=>u.has(r)),c=[];if(p.length>0){c.push("Gates documented on routes but no checkGate/requireGate in code:");for(let r of p)c.push(` - ^${r} (documented on routes; if enforced by middleware, this may be intentional)`);c.push("");}if(l.length>0){c.push("Orphan gates (declared but never on a route or in code):");for(let r of l)c.push(` - ^${r} (add to a route or remove from portal.yaml)`);c.push("");}if(d.length>0){c.push("Gates used in code but not declared in portal.yaml:");for(let r of d)c.push(` - ^${r} (add to portal.yaml with proper definition)`);c.push("");}let y="compliant";return d.length>0?y="violations":f.length>0&&(y="warnings"),{status:y,declaredButUnused:f,routeAttachedUnused:p,orphanUnused:l,usedButUndeclared:d,properlyDeclared:g,suggestions:c,references:o}}function _(e){let t=[],n=e.status==="compliant"?"\u2713":e.status==="warnings"?"\u26A0":"\u2717";if(t.push(`Portal Compliance: ${n} ${e.status.toUpperCase()}`),t.push(""),t.push(`Properly Declared: ${e.properlyDeclared.length}`),e.routeAttachedUnused.length>0&&t.push(`Route-Attached, No Code: ${e.routeAttachedUnused.length}`),e.orphanUnused.length>0&&t.push(`Orphan Gates: ${e.orphanUnused.length}`),e.usedButUndeclared.length>0&&t.push(`Used but Undeclared: ${e.usedButUndeclared.length}`),t.push(""),e.properlyDeclared.length>0){t.push("Gates in Use:");for(let s of e.properlyDeclared)t.push(` \u2713 ^${s}`);t.push("");}if(e.routeAttachedUnused.length>0){t.push("Route-Attached (no checkGate/requireGate in code):");for(let s of e.routeAttachedUnused)t.push(` \u26A0 ^${s}`);t.push("");}if(e.orphanUnused.length>0){t.push("Orphan Gates (declared but never on route or in code):");for(let s of e.orphanUnused)t.push(` \u26A0 ^${s}`);t.push("");}if(e.usedButUndeclared.length>0){t.push("Undeclared Gates (used but not in portal.yaml):");for(let s of e.usedButUndeclared){t.push(` \u2717 ^${s}`);let o=e.references.filter(a=>a.gate===s).slice(0,3);for(let a of o)t.push(` at ${a.file}:${a.line}`);}t.push("");}if(e.suggestions.length>0&&e.status!=="compliant"){t.push("Suggestions:");for(let s of e.suggestions)s&&t.push(` ${s}`);}return t.join(`
6
- `)}function k(e){if(e.status==="compliant")return {status:"ok",message:`${e.properlyDeclared.length} gates properly declared`};if(e.status==="warnings"){let t=[];return e.routeAttachedUnused.length>0&&t.push(`${e.routeAttachedUnused.length} route-attached`),e.orphanUnused.length>0&&t.push(`${e.orphanUnused.length} orphan`),{status:"warn",message:t.length>0?t.join(", ")+" gate(s)":`${e.declaredButUnused.length} unused gates`}}return {status:"error",message:`${e.usedButUndeclared.length} gates used but not declared`}}export{S as a,C as b,x as c,w as d,_ as e,k as f};
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- import {a}from'./chunk-5TAVYPOV.js';import {execSync}from'child_process';import*as C from'os';import*as i from'fs';import*as d from'path';import*as f from'js-yaml';function R(s){let e=s.toLowerCase();return e.includes("claude")||e.includes("anthropic")?"anthropic":e.includes("gpt")||e.includes("openai")||e.includes("o1")||e.includes("o3")?"openai":e.includes("gemini")||e.includes("google")||e.includes("palm")?"google":e.includes("llama")||e.includes("meta")?"meta":e.includes("mistral")||e.includes("mixtral")?"mistral":e.includes("deepseek")?"deepseek":e.includes("cohere")||e.includes("command")?"cohere":"unknown"}function x(s){let e=s,t=e.author;if(e.type||(e.type="agent-session"),typeof t=="string")return s;if(t&&typeof t=="object"&&!Array.isArray(t)){let n=t;n.type==="agent"?(e.author="unknown",e.agent={provider:n.model?R(n.model):R(n.id),model:n.model||n.id}):e.author=n.id||"unknown",delete e.assistedBy;}return e}function w(s){return s.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,20)||"unknown"}function P(){let s=process.env.PARADIGM_AUTHOR;if(s)return w(s);try{let e=execSync("git config user.name",{encoding:"utf-8",timeout:3e3}).trim();if(e)return w(e)}catch{}try{let e=C.userInfo().username;if(e)return w(e)}catch{}return "unknown"}function T(s,e){let t=s;if(e.author&&(t=t.filter(n=>n.author===e.author)),e.hasAgent!==void 0?t=t.filter(n=>e.hasAgent?n.agent!=null:n.agent==null):e.authorType&&(t=t.filter(n=>e.authorType==="agent"?n.agent!=null:n.agent==null)),e.symbol&&(t=t.filter(n=>n.symbols_touched?.includes(e.symbol)||n.symbols_created?.includes(e.symbol))),e.dateFrom){let n=new Date(e.dateFrom).getTime();t=t.filter(o=>new Date(o.timestamp).getTime()>=n);}if(e.dateTo){let n=new Date(e.dateTo).getTime();t=t.filter(o=>new Date(o.timestamp).getTime()<=n);}if(e.type&&(t=t.filter(n=>n.type===e.type)),e.tag){let n=e.tag;t=t.filter(o=>o.tags?.some(r=>r===n||r.startsWith(n+":")||n.includes(":")&&r===n));}return e.tags&&e.tags.length>0&&(t=t.filter(n=>e.tags.some(o=>n.tags?.includes(o)))),e.hasBody!==void 0&&(t=t.filter(n=>e.hasBody?n.body!=null&&n.body.length>0:!n.body||n.body.length===0)),e.hasReview!==void 0&&(t=t.filter(n=>e.hasReview?n.review!=null:n.review==null)),e.hasConfidence!==void 0&&(t=t.filter(n=>e.hasConfidence?n.confidence!=null:n.confidence==null)),e.hasAssessment!==void 0&&(t=t.filter(n=>e.hasAssessment?n.assessment!=null:n.assessment==null)),e.minCompleteness!==void 0&&(t=t.filter(n=>n.review!=null&&n.review.completeness>=e.minCompleteness)),t.sort((n,o)=>new Date(o.timestamp).getTime()-new Date(n.timestamp).getTime()),e.offset&&(t=t.slice(e.offset)),e.limit&&(t=t.slice(0,e.limit)),t}var _=".paradigm/lore",b="entries",I="timeline.yaml";function v(s){return s.endsWith(".yaml")||s.endsWith(".lore")}function E(s,e,t){let n=d.join(s,_,b,e),o=d.join(n,`${t}.lore`);if(i.existsSync(o))return o;let r=d.join(n,`${t}.yaml`);return i.existsSync(r)?r:null}function W(s){try{let e=execSync("git rev-parse HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),t=execSync("git rev-parse --abbrev-ref HEAD",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim(),n=execSync("git status --porcelain",{cwd:s,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim();return {ref:e,branch:t,dirty:n.length>0}}catch{return}}function N(s,e){let t={unregistered:[],warnings:[]};if(e.length===0)return t;let n=new Set;try{let c=a("child_process").execSync(`find "${s}" -name ".purpose" -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null || true`,{encoding:"utf-8"});for(let u of c.split(`
3
- `).filter(Boolean))try{let m=i.readFileSync(u,"utf8").matchAll(/^([#$^!~][\w-]+):/gm);for(let l of m)n.add(l[1]);}catch{}}catch{return t}let o=d.join(s,".paradigm","flows.yaml");if(i.existsSync(o))try{let u=i.readFileSync(o,"utf8").matchAll(/([#$^!~][\w-]+)/g);for(let a of u)n.add(a[1]);}catch{}let r=d.join(s,"portal.yaml");if(i.existsSync(r))try{let u=i.readFileSync(r,"utf8").matchAll(/\^([\w-]+)/g);for(let a of u)n.add(`^${a[1]}`);}catch{}for(let c of e)n.has(c)||(t.unregistered.push(c),t.warnings.push(`Symbol "${c}" not found in .purpose files or project index`));return t}async function U(s,e,t){let n;if(t?.validateSymbols){let a=[...e.symbols_touched||[],...e.symbols_created||[]];n=N(s,a);}let o=d.join(s,_),r=e.timestamp.slice(0,10),c=d.join(o,b,r);i.existsSync(c)||i.mkdirSync(c,{recursive:true}),e.author||(e.author=P()),e.git_context||(e.git_context=W(s)),e.id||(e.id=O(s,r,e.author,e.timestamp));let u=d.join(c,`${e.id}.lore`);return i.writeFileSync(u,f.dump(e,{lineWidth:-1,noRefs:true})),await j(s),{validation:n}}async function A(s,e){let t=d.join(s,_,b);if(!i.existsSync(t))return [];M(s);let n=[],o=i.readdirSync(t).filter(r=>/^\d{4}-\d{2}-\d{2}$/.test(r)).sort().reverse();for(let r of o){if(e?.dateFrom&&r<e.dateFrom.slice(0,10)||e?.dateTo&&r>e.dateTo.slice(0,10))continue;let c=d.join(t,r),u=i.readdirSync(c).filter(v).sort();for(let a of u)try{let m=i.readFileSync(d.join(c,a),"utf8"),l=f.load(m);n.push(x(l));}catch{}}return e?T(n,e):n}async function j(s){let e=d.join(s,_),t=d.join(e,b);if(!i.existsSync(t))return;M(s);let n=new Set,o=0,r="",c=i.readdirSync(t).filter(l=>/^\d{4}-\d{2}-\d{2}$/.test(l));for(let l of c){let g=d.join(t,l),h=i.readdirSync(g).filter(v);for(let S of h)try{let y=i.readFileSync(d.join(g,S),"utf8"),L=f.load(y),p=x(L);n.add(p.author),o++,(!r||p.timestamp>r)&&(r=p.timestamp);}catch{}}let u="unknown",a=d.join(s,".paradigm","config.yaml");if(i.existsSync(a))try{let l=f.load(i.readFileSync(a,"utf8"));u=l.project||l.name||"unknown";}catch{}let m={version:"1.0",project:u,entries:o,last_updated:r||new Date().toISOString(),authors:Array.from(n)};i.existsSync(e)||i.mkdirSync(e,{recursive:true}),i.writeFileSync(d.join(e,I),f.dump(m,{lineWidth:-1,noRefs:true}));}async function D(s,e,t){let o=(await A(s)).find(u=>u.id===e);if(!o)return false;let r=o.timestamp.slice(0,10),c=E(s,r,e);return c?(o.review=t,i.writeFileSync(c,f.dump(o,{lineWidth:-1,noRefs:true})),true):false}function H(s){switch(s){case "correct":return 1;case "partial":return .5;case "incorrect":return 0}}async function G(s,e,t){let o=(await A(s)).find(u=>u.id===e);if(!o)return false;let r=o.timestamp.slice(0,10),c=E(s,r,e);return c?(o.assessment=t,o.confidence!=null&&(o.assessment_delta=H(t.verdict)-o.confidence),i.writeFileSync(c,f.dump(o,{lineWidth:-1,noRefs:true})),true):false}async function F(s,e){let t=e.match(/^L-(\d{4}-\d{2}-\d{2})-/);if(t){let o=t[1],r=E(s,o,e);if(r)try{let c=i.readFileSync(r,"utf8"),u=f.load(c);return x(u)}catch{return null}}return (await A(s)).find(o=>o.id===e)||null}async function q(s,e,t){let n=await F(s,e);if(!n)return false;let o=n.timestamp.slice(0,10),r=E(s,o,e);return r?(t.title!==void 0&&(n.title=t.title),t.summary!==void 0&&(n.summary=t.summary),t.type!==void 0&&(n.type=t.type),t.duration_minutes!==void 0&&(n.duration_minutes=t.duration_minutes),t.symbols_touched!==void 0&&(n.symbols_touched=t.symbols_touched),t.symbols_created!==void 0&&(n.symbols_created=t.symbols_created),t.files_created!==void 0&&(n.files_created=t.files_created),t.files_modified!==void 0&&(n.files_modified=t.files_modified),t.lines_added!==void 0&&(n.lines_added=t.lines_added),t.lines_removed!==void 0&&(n.lines_removed=t.lines_removed),t.commit!==void 0&&(n.commit=t.commit),t.decisions!==void 0&&(n.decisions=t.decisions),t.errors_encountered!==void 0&&(n.errors_encountered=t.errors_encountered),t.learnings!==void 0&&(n.learnings=t.learnings),t.verification!==void 0&&(n.verification=t.verification),t.tags!==void 0&&(n.tags=t.tags),t.body!==void 0&&(n.body=t.body),t.linked_lore!==void 0&&(n.linked_lore=t.linked_lore),t.linked_tasks!==void 0&&(n.linked_tasks=t.linked_tasks),t.linked_commits!==void 0&&(n.linked_commits=t.linked_commits),t.confidence!==void 0&&(n.confidence=t.confidence),t.assessment!==void 0&&(n.assessment=t.assessment),t.assessment_delta!==void 0&&(n.assessment_delta=t.assessment_delta),i.writeFileSync(r,f.dump(n,{lineWidth:-1,noRefs:true})),await j(s),true):false}async function K(s,e){let t=await F(s,e);if(!t)return false;let n=t.timestamp.slice(0,10),o=E(s,n,e);if(!o)return false;i.unlinkSync(o);let r=d.dirname(o);return i.readdirSync(r).filter(v).length===0&&i.rmdirSync(r),await j(s),true}function M(s){let e=d.join(s,_,b);if(!i.existsSync(e))return 0;let t=i.readdirSync(e).filter(o=>v(o)&&!o.startsWith(".")),n=0;for(let o of t){let r=d.join(e,o);if(i.statSync(r).isFile())try{let u=i.readFileSync(r,"utf8"),a=f.load(u);if(a.author&&typeof a.author=="object"||typeof a.author=="string"&&a.timestamp)continue;let m=typeof a.date=="string"?a.date.slice(0,10):new Date().toISOString().slice(0,10),l=d.join(e,m);i.existsSync(l)||i.mkdirSync(l,{recursive:!0});let g=P(),h=`${m}T00:00:00.000Z`,S=O(s,m,g,h),y=String(a.type||"agent-session"),L=["agent-session","human-note","decision","review","incident","milestone"].includes(y)?y:"agent-session",p;if(a.test_results&&typeof a.test_results=="object"){let k=a.test_results;p={status:k.total===k.passed?"pass":"partial",details:{tests:k.total===k.passed?"pass":"fail"}};}let z={id:S,type:L,timestamp:h,author:"unknown",agent:{provider:"unknown",model:"unknown"},title:String(a.title||o.replace(/\.(yaml|lore)$/,"")),summary:String(a.summary||""),symbols_touched:Array.isArray(a.symbols_touched)?a.symbols_touched:[],files_modified:Array.isArray(a.files_modified)?a.files_modified:void 0,...p?{verification:p}:{},tags:["migrated",y]};i.writeFileSync(d.join(l,`${S}.lore`),f.dump(z,{lineWidth:-1,noRefs:!0})),i.unlinkSync(r),n++;}catch{}}return n}function O(s,e,t,n){let o=w(t),r=new Date(n),c=String(r.getUTCHours()).padStart(2,"0"),u=String(r.getUTCMinutes()).padStart(2,"0"),a=String(r.getUTCSeconds()).padStart(2,"0"),m=`${c}${u}${a}`,l=`L-${e}-${o}-${m}`,g=d.join(s,_,b,e);if(!i.existsSync(g))return `${l}-001`;let h=i.readdirSync(g).filter(y=>y.startsWith(l)&&v(y)).map(y=>{let L=y.match(/-(\d{3})\.(yaml|lore)$/);return L?parseInt(L[1],10):0}),S=h.length>0?Math.max(...h)+1:1;return `${l}-${String(S).padStart(3,"0")}`}export{x as a,P as b,U as c,A as d,D as e,G as f,F as g,q as h,K as i};