@a-company/paradigm 5.38.0 → 6.0.4

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 (355) hide show
  1. package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-TIXUQQGR.js} +1 -1
  2. package/dist/add-UOR4INIV.js +8 -0
  3. package/dist/agent-MB3H5EZA.js +33 -0
  4. package/dist/{agent-loader-RIVI6QPP.js → agent-loader-VGBPL3TH.js} +1 -1
  5. package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-W3RQJVW7.js} +1 -1
  6. package/dist/{agents-suggest-HYTFMQD3.js → agents-suggest-IKY6VD2R.js} +1 -1
  7. package/dist/{ambient-WTLYUAQM.js → ambient-AI42BOM5.js} +12 -12
  8. package/dist/{ambient-76YMUA5Q.js → ambient-FNNFB4AP.js} +1 -1
  9. package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
  10. package/dist/authority-FA3HLEOA.js +2 -0
  11. package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
  12. package/dist/chunk-23T6UG73.js +605 -0
  13. package/dist/{chunk-4L7665QV.js → chunk-2AU5L333.js} +1 -1
  14. package/dist/{chunk-BOYQAMGC.js → chunk-4N56FRNE.js} +1 -1
  15. package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
  16. package/dist/{chunk-MQIG6SMF.js → chunk-6QXBXZF6.js} +1 -1
  17. package/dist/{chunk-ORDKEGII.js → chunk-AMLD7IYC.js} +1 -1
  18. package/dist/{chunk-3DZK54RU.js → chunk-DBEWOKD6.js} +32 -7
  19. package/dist/{chunk-AGFPVSX5.js → chunk-F6E3HW45.js} +1 -1
  20. package/dist/{chunk-X3U3IGYT.js → chunk-GD4F2HC6.js} +2 -2
  21. package/dist/chunk-GRZQIKST.js +2 -0
  22. package/dist/{chunk-HOBHJPTL.js → chunk-IOVHF4SR.js} +1 -1
  23. package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
  24. package/dist/{chunk-74SGKSRQ.js → chunk-KAFQA7HV.js} +2 -2
  25. package/dist/{chunk-NEJ4ZLCY.js → chunk-LAYBUKMB.js} +1 -1
  26. package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
  27. package/dist/chunk-Q527BPUF.js +2 -0
  28. package/dist/{chunk-AO7ZSRME.js → chunk-TQOT2LBO.js} +2 -2
  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-WXF5VFB4.js +111 -0
  33. package/dist/chunk-XQLO5URP.js +11 -0
  34. package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
  35. package/dist/chunk-Z5QW6USC.js +2 -0
  36. package/dist/{compliance-D7GD6ZYC.js → compliance-J3VOV445.js} +1 -1
  37. package/dist/config-schema-FLHRVZMI.js +2 -0
  38. package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
  39. package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
  40. package/dist/decision-loader-HELL2AMX.js +2 -0
  41. package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
  42. package/dist/{diff-YGHBIJY5.js → diff-75MABOSL.js} +1 -1
  43. package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
  44. package/dist/{docs-USDAF26F.js → docs-TSAAS4W3.js} +1 -1
  45. package/dist/doctor-L5XZENCF.js +2 -0
  46. package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
  47. package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
  48. package/dist/{hooks-TFMMMB2H.js → hooks-KUEE5KMM.js} +1 -1
  49. package/dist/index.js +6 -6
  50. package/dist/init-M44SO65G.js +2 -0
  51. package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
  52. package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
  53. package/dist/list-CFHINXIS.js +12 -0
  54. package/dist/lore-loader-D2ISOASW.js +2 -0
  55. package/dist/lore-loader-PXFKMKAN.js +2 -0
  56. package/dist/mcp.js +4 -4
  57. package/dist/metrics-UESGUHTA.js +2 -0
  58. package/dist/{migrate-Z5UQN57G.js → migrate-ZPNYDNM4.js} +1 -1
  59. package/dist/migrate-assessments-YSITX7KM.js +4 -0
  60. package/dist/migrate-decisions-NPLQOEEH.js +6 -0
  61. package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
  62. package/dist/migration-notices-BHLEYC4T.js +4 -0
  63. package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-NCLTGMAK.js} +1 -1
  64. package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
  65. package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-K4KBTBYK.js} +1 -1
  66. package/dist/{platform-server-DNAMH4YI.js → platform-server-ANOALDPL.js} +1 -1
  67. package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
  68. package/dist/portal-compliance-JONQ4SOP.js +2 -0
  69. package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
  70. package/dist/{providers-AWA7WLLM.js → providers-TBPOE4DI.js} +1 -1
  71. package/dist/quiz-WYIZJG5K.js +10 -0
  72. package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
  73. package/dist/registry-OUTA3DXW.js +20 -0
  74. package/dist/reindex-IZCD2JGD.js +2 -0
  75. package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
  76. package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
  77. package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
  78. package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
  79. package/dist/{serve-U47GULB6.js → serve-3FMUWW5K.js} +1 -1
  80. package/dist/serve-OQYUO7CR.js +12 -0
  81. package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
  82. package/dist/server-FGUL2FWQ.js +7 -0
  83. package/dist/session-tracker-HHNY6J4I.js +2 -0
  84. package/dist/{session-work-log-ZP45TREI.js → session-work-log-MEJ33TYD.js} +1 -1
  85. package/dist/{session-work-log-PAKXOFGL.js → session-work-log-ZVVJGO7X.js} +1 -1
  86. package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
  87. package/dist/shift-WGMZGWOC.js +60 -0
  88. package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
  89. package/dist/show-WVHAL4VU.js +7 -0
  90. package/dist/{spawn-M5BAV252.js → spawn-KKDDR6UR.js} +1 -1
  91. package/dist/status-S7Z5FVIE.js +6 -0
  92. package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
  93. package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
  94. package/dist/sync-55U6QPIA.js +2 -0
  95. package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
  96. package/dist/{team-PDK64JXI.js → team-2LGZQRP4.js} +1 -1
  97. package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
  98. package/dist/tools-4RRFTU5H.js +2 -0
  99. package/dist/university-content/notes/N-para-001-build-something.md +126 -0
  100. package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
  101. package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
  102. package/dist/university-content/notes/N-para-101-component-types.md +99 -0
  103. package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
  104. package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
  105. package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
  106. package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
  107. package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
  108. package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
  109. package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
  110. package/dist/university-content/notes/N-para-101-welcome.md +51 -0
  111. package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
  112. package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
  113. package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
  114. package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
  115. package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
  116. package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
  117. package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
  118. package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
  119. package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
  120. package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
  121. package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
  122. package/dist/university-content/notes/N-para-301-context-management.md +53 -0
  123. package/dist/university-content/notes/N-para-301-decisions.md +99 -0
  124. package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
  125. package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
  126. package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
  127. package/dist/university-content/notes/N-para-301-history-system.md +42 -0
  128. package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
  129. package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
  130. package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
  131. package/dist/university-content/notes/N-para-301-protocols.md +113 -0
  132. package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
  133. package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
  134. package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
  135. package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
  136. package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
  137. package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
  138. package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
  139. package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
  140. package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
  141. package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
  142. package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
  143. package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
  144. package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
  145. package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
  146. package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
  147. package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
  148. package/dist/university-content/notes/N-para-451-agent-routing.md +117 -0
  149. package/dist/university-content/notes/N-para-451-archetypes-vs-instances.md +82 -0
  150. package/dist/university-content/notes/N-para-451-identity-layers.md +76 -0
  151. package/dist/university-content/notes/N-para-451-orchestration-modes.md +85 -0
  152. package/dist/university-content/notes/N-para-451-paradigm-shift.md +95 -0
  153. package/dist/university-content/notes/N-para-451-partners-primitive.md +107 -0
  154. package/dist/university-content/notes/N-para-451-roster-management.md +132 -0
  155. package/dist/university-content/notes/N-para-451-roster-reference.md +106 -0
  156. package/dist/university-content/notes/N-para-451-the-team-pattern.md +87 -0
  157. package/dist/university-content/notes/N-para-451-tiers.md +81 -0
  158. package/dist/university-content/notes/N-para-451-welcome.md +55 -0
  159. package/dist/university-content/notes/N-para-451-what-is-an-agent.md +73 -0
  160. package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
  161. package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
  162. package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
  163. package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
  164. package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
  165. package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
  166. package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
  167. package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
  168. package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
  169. package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
  170. package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
  171. package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
  172. package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
  173. package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
  174. package/dist/university-content/notes/N-para-501-task-management.md +100 -0
  175. package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
  176. package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
  177. package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
  178. package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
  179. package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
  180. package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
  181. package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
  182. package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
  183. package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
  184. package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
  185. package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
  186. package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
  187. package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
  188. package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
  189. package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
  190. package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
  191. package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
  192. package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
  193. package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
  194. package/dist/university-content/paths/LP-para-001.yaml +29 -0
  195. package/dist/university-content/paths/LP-para-101.yaml +59 -0
  196. package/dist/university-content/paths/LP-para-201.yaml +69 -0
  197. package/dist/university-content/paths/LP-para-301.yaml +84 -0
  198. package/dist/university-content/paths/LP-para-401.yaml +74 -0
  199. package/dist/university-content/paths/LP-para-451.yaml +69 -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-451-foundations.yaml +154 -0
  253. package/dist/university-content/quizzes/Q-para-451-when-to-invoke.yaml +182 -0
  254. package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
  255. package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
  256. package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
  257. package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
  258. package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
  259. package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
  260. package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
  261. package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
  262. package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
  263. package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
  264. package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
  265. package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
  266. package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
  267. package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
  268. package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
  269. package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
  270. package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
  271. package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
  272. package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
  273. package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
  274. package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
  275. package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
  276. package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
  277. package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
  278. package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
  279. package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
  280. package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
  281. package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
  282. package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
  283. package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
  284. package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
  285. package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
  286. package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
  287. package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
  288. package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
  289. package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
  290. package/dist/university-content/reference.json +2 -2
  291. package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
  292. package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
  293. package/dist/university-ui/index.html +1 -1
  294. package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
  295. package/dist/validate-XUQZTF3H.js +9 -0
  296. package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
  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 +2 -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/dist/add-P76GEMGF.js +0 -8
  313. package/dist/agent-X6I2YWOB.js +0 -33
  314. package/dist/chunk-JQKKVAAN.js +0 -2
  315. package/dist/chunk-NQ47TA6C.js +0 -111
  316. package/dist/chunk-ODVKPZZ4.js +0 -2
  317. package/dist/chunk-Q2J542ST.js +0 -2
  318. package/dist/chunk-RBLK34IA.js +0 -11
  319. package/dist/chunk-RN4VE6P3.js +0 -521
  320. package/dist/chunk-WS2N27RX.js +0 -3
  321. package/dist/config-schema-GUQY2QN7.js +0 -2
  322. package/dist/decision-loader-2XPZE4EZ.js +0 -2
  323. package/dist/doctor-WMVULMQD.js +0 -2
  324. package/dist/list-5IUGP3ZB.js +0 -7
  325. package/dist/lore-loader-RVQI5GXL.js +0 -2
  326. package/dist/lore-loader-XY5MZRR2.js +0 -2
  327. package/dist/migrate-assessments-GEI5WMI2.js +0 -4
  328. package/dist/portal-compliance-6YR27IQU.js +0 -2
  329. package/dist/quiz-FE5UGAY2.js +0 -10
  330. package/dist/registry-KOOKFUWD.js +0 -20
  331. package/dist/reindex-I6LPAKCC.js +0 -2
  332. package/dist/serve-OY6XYL7F.js +0 -12
  333. package/dist/server-2MNROHF6.js +0 -7
  334. package/dist/session-tracker-MWJAJA6Z.js +0 -2
  335. package/dist/shift-PC6C7NUX.js +0 -60
  336. package/dist/show-BOAVWZPZ.js +0 -7
  337. package/dist/status-A37ECYNJ.js +0 -6
  338. package/dist/sync-DLUBV5HQ.js +0 -2
  339. package/dist/tools-5ITPEPSV.js +0 -2
  340. package/dist/university-content/courses/.purpose +0 -492
  341. package/dist/university-content/courses/para-001.json +0 -166
  342. package/dist/university-content/courses/para-101.json +0 -615
  343. package/dist/university-content/courses/para-201.json +0 -794
  344. package/dist/university-content/courses/para-301.json +0 -830
  345. package/dist/university-content/courses/para-401.json +0 -868
  346. package/dist/university-content/courses/para-501.json +0 -1166
  347. package/dist/university-content/courses/para-601.json +0 -719
  348. package/dist/university-content/courses/para-701.json +0 -807
  349. package/dist/university-content/plsat/.purpose +0 -162
  350. package/dist/university-content/plsat/v2.0.json +0 -760
  351. package/dist/university-content/plsat/v3.0.json +0 -3453
  352. package/dist/validate-C6SMKGYD.js +0 -9
  353. package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
  354. /package/dist/{chunk-BV5PRPLB.js → chunk-HXGYVS2N.js} +0 -0
  355. /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import {c,a as a$1}from'./chunk-YNDPSWOE.js';import {e as e$1}from'./chunk-VIG5LSGZ.js';import {a}from'./chunk-LKAT7IAK.js';import*as e from'fs';import*as r from'path';import*as w from'js-yaml';import l from'chalk';async function rs(P={}){let p=P.rootDir||process.cwd(),s=[],S=P.quiet,L=P.context;S||(console.log(l.blue(`
3
+ \u{1FA7A} Paradigm Doctor
4
+ `)),console.log(L?l.gray(`Running context audit checks...
5
+ `):l.gray(`Checking Paradigm setup...
6
+ `)));let N=a.command("doctor").start("Running health checks");if(!L){let E=function(t){let a=[];try{let n=e.readdirSync(t,{withFileTypes:!0});for(let i of n){if(i.name==="node_modules"||i.name==="dist"||i.name===".git")continue;let d=r.join(t,i.name);i.isDirectory()?a.push(...E(d)):i.name===".purpose"&&a.push(d);}}catch{}return a};let o=r.join(p,".paradigm");if(e.existsSync(o))if(e.statSync(o).isFile())s.push({name:".paradigm",status:"warn",message:"Legacy file format (should be directory)",fix:"paradigm upgrade --all"});else {s.push({name:".paradigm/",status:"ok",message:"Directory exists"});let a=r.join(o,"config.yaml");if(e.existsSync(a))try{let u=e.readFileSync(a,"utf8");e$1(u),s.push({name:".paradigm/config.yaml",status:"ok",message:"Valid YAML"});}catch(u){s.push({name:".paradigm/config.yaml",status:"error",message:`Invalid YAML: ${u.message}`,fix:"Check YAML syntax"});}else s.push({name:".paradigm/config.yaml",status:"missing",message:"Config file not found",fix:"paradigm init --force"});let n=["logger.md","probe.md","symbols.md"],i=r.join(o,"specs");if(e.existsSync(i))for(let u of n){let x=r.join(i,u);e.existsSync(x)?s.push({name:`.paradigm/specs/${u}`,status:"ok",message:"Present"}):s.push({name:`.paradigm/specs/${u}`,status:"missing",message:"Spec file not found",fix:"paradigm upgrade --all"});}else s.push({name:".paradigm/specs/",status:"missing",message:"Specs directory not found",fix:"paradigm upgrade --all"});let d=r.join(o,"docs");e.existsSync(d)?s.push({name:".paradigm/docs/",status:"ok",message:"Directory exists"}):s.push({name:".paradigm/docs/",status:"missing",message:"Docs directory not found",fix:"paradigm upgrade --all"});let h=r.join(o,"prompts");e.existsSync(h)?s.push({name:".paradigm/prompts/",status:"ok",message:"Directory exists"}):s.push({name:".paradigm/prompts/",status:"missing",message:"Prompts directory not found",fix:"paradigm upgrade --all"});let g=["specs","implementation-guides","prompts","decisions"],f=[];for(let u of g){let x=r.join(o,u);if(e.existsSync(x)&&e.statSync(x).isDirectory()){let k=r.join(x,".index.yaml");e.existsSync(k)||f.push(`.paradigm/${u}/`);}}f.length>0?s.push({name:"Docs-class indexes",status:"warn",message:`${f.length} director${f.length===1?"y":"ies"} missing .index.yaml: ${f.join(", ")}`,fix:"paradigm docs scaffold"}):s.push({name:"Docs-class indexes",status:"ok",message:"All docs-class directories have .index.yaml"});let y=r.join(o,"scan-index.json"),F=r.join(p,".paradigm-scan-index.json");if(e.existsSync(y)){let u=e.statSync(y),x=Date.now()-u.mtime.getTime(),k=Math.floor(x/(1e3*60*60));k>24?s.push({name:".paradigm/scan-index.json",status:"warn",message:`Stale (${k} hours old)`,fix:"paradigm index"}):s.push({name:".paradigm/scan-index.json",status:"ok",message:k>0?`${k} hours old`:"Fresh"});}else e.existsSync(F)?s.push({name:"scan-index",status:"warn",message:"Using legacy location",fix:"paradigm index"}):s.push({name:".paradigm/scan-index.json",status:"missing",message:"Not generated",fix:"paradigm index"});}else s.push({name:".paradigm/",status:"missing",message:"Not initialized",fix:"paradigm init"});let m=c(p);if(m.detected){let t=a$1(m.detected);if(t){let a=r.join(p,t.outputPath);e.existsSync(a)?s.push({name:t.outputPath,status:"ok",message:`Present (${m.detected})`}):s.push({name:t.outputPath,status:"missing",message:`Not generated for ${m.detected}`,fix:"paradigm sync"});}}let c$1=r.join(p,".premise");e.existsSync(c$1)?s.push({name:".premise",status:"ok",message:"Present"}):s.push({name:".premise",status:"missing",message:"Not found (optional)"});let v=r.join(p,".purpose");e.existsSync(v)?s.push({name:".purpose",status:"ok",message:"Present"}):s.push({name:".purpose",status:"warn",message:"Root .purpose not found",fix:"paradigm init"});let D=r.join(p,".paradigm","config.yaml");if(e.existsSync(D))try{let t=e.readFileSync(D,"utf8"),n=w.load(t)?.["purpose-required"];if(n&&Array.isArray(n)){let i=[];for(let d of n){if(!d.pattern)continue;let{glob:h}=await import('glob'),g=await h(d.pattern,{cwd:p,nodir:!1});for(let f of g){let y=r.join(p,f);try{e.statSync(y).isDirectory()&&!e.existsSync(r.join(y,".purpose"))&&i.push(f);}catch{}}}i.length>0?s.push({name:"Purpose-required",status:"warn",message:`${i.length} director${i.length===1?"y":"ies"} missing .purpose: ${i.join(", ")}`,fix:"Create .purpose files with paradigm_purpose_init + paradigm_purpose_add_component"}):s.push({name:"Purpose-required",status:"ok",message:"All required directories have .purpose files"});}}catch{}let q=/\[NEEDS CLARIFICATION:\s*[^\]]+\]/gi,R=0,Y=E(p);for(let t of Y)try{let n=e.readFileSync(t,"utf8").match(q);n&&(R+=n.length);}catch{}R>0?s.push({name:"Clarification markers",status:"warn",message:`${R} [NEEDS CLARIFICATION] marker${R>1?"s":""} found in .purpose files`,fix:"Resolve open clarification markers before shipping"}):Y.length>0&&s.push({name:"Clarification markers",status:"ok",message:"No unresolved markers"});let I=r.join(p,"portal.yaml");if(e.existsSync(I))try{let t=e.readFileSync(I,"utf8"),a=w.load(t);if(a?.version&&a?.gates){let n=Object.keys(a.gates||{}).length,i=Object.keys(a.routes||{}).length;s.push({name:"portal.yaml",status:"ok",message:`Valid (${n} gates, ${i} routes)`});}else s.push({name:"portal.yaml",status:"warn",message:"Missing version or gates section",fix:'Add version: "1.0" and gates: {} to portal.yaml'});}catch(t){s.push({name:"portal.yaml",status:"error",message:`Invalid YAML: ${t.message}`,fix:"Check YAML syntax in portal.yaml"});}if(e.existsSync(I))try{let{checkPortalCompliance:t,getComplianceSummary:a}=await import('./portal-compliance-JONQ4SOP.js'),n=await t(p),i=a(n);s.push({name:"Portal compliance",status:i.status,message:i.message,fix:i.status!=="ok"?"paradigm portal check":void 0});}catch{}{let t=r.join(p,".paradigm","scan-index.json"),a=r.join(p,".paradigm","roster.yaml");try{if(e.existsSync(t)){let n=e.readFileSync(t,"utf8"),i=JSON.parse(n),d=Object.keys(i.components??{}).length,h=Object.keys(i.aspects??{}).length;if(d>0){let g=!1;if(e.existsSync(a))try{let y=w.load(e.readFileSync(a,"utf8"));g=Array.isArray(y?.active)&&y.active.includes("compliance");}catch{}let f=`${d}:${h} components:aspects`;g?s.push({name:"Aspect coverage",status:"ok",message:`${f} (claimant: rune)`}):h===0?s.push({name:"Aspect coverage",status:"info",message:`${f} ${l.dim("(no aspects defined)")}`}):s.push({name:"Aspect coverage",status:"info",message:`${f} ${l.dim("(no claimant active)")}`});}}}catch{}}let U=r.join(p,".paradigm","flows.yaml");if(e.existsSync(U))try{let t=e.readFileSync(U,"utf8"),a=w.load(t);if(a?.version&&a?.flows){let n=Object.keys(a.flows||{}).length,i=Object.entries(a.flows||{}).filter(([,d])=>!d?.steps||(d.steps?.length??0)===0);i.length>0?s.push({name:".paradigm/flows.yaml",status:"warn",message:`${n} flows defined, ${i.length} have no steps`,fix:"Add steps to empty flow definitions"}):s.push({name:".paradigm/flows.yaml",status:"ok",message:`Valid (${n} flows)`});}else s.push({name:".paradigm/flows.yaml",status:"warn",message:"Missing version or flows section",fix:'Ensure flows.yaml has version: "1.0" and flows: {}'});}catch(t){s.push({name:".paradigm/flows.yaml",status:"error",message:`Invalid YAML: ${t.message}`,fix:"Check YAML syntax in flows.yaml"});}let H=r.join(p,".paradigm","lore");if(e.existsSync(H))try{let t=e.readdirSync(H).filter(a=>a.endsWith(".yaml"));t.length===0?s.push({name:"Lore entries",status:"warn",message:"Lore directory exists but no entries found",fix:"Record a lore entry: paradigm lore record"}):s.push({name:"Lore entries",status:"ok",message:`${t.length} lore file${t.length>1?"s":""}`});}catch{s.push({name:"Lore entries",status:"warn",message:"Could not read lore directory"});}let G=r.join(p,".paradigm","university");if(e.existsSync(G))try{let t=r.join(G,"content"),a=0,n=0;if(e.existsSync(t))for(let i of ["notes","policies","quizzes","paths"]){let d=r.join(t,i);e.existsSync(d)&&(a+=e.readdirSync(d).filter(h=>h.endsWith(".md")||h.endsWith(".yaml")).length);}if(a===0)s.push({name:"University content",status:"warn",message:"University directory exists but no content found",fix:'Add content: paradigm university add note --title "Getting Started"'});else {let i=r.join(t,"quizzes");if(e.existsSync(i))for(let h of e.readdirSync(i).filter(g=>g.endsWith(".yaml")))try{let g=w.load(e.readFileSync(r.join(i,h),"utf8"));if(g?.questions)for(let f of g.questions)f.choices&&f.correct&&!(f.correct in f.choices)&&n++;}catch{}let d=r.join(t,"paths");if(e.existsSync(d))for(let h of e.readdirSync(d).filter(g=>g.endsWith(".yaml")))try{let g=w.load(e.readFileSync(r.join(d,h),"utf8"));if(g?.steps){for(let f of g.steps)if(f.content&&!f.content.startsWith("plsat:")){let y=!1;for(let F of ["notes","policies","quizzes","paths"]){let u=r.join(t,F);if(e.existsSync(u)&&e.readdirSync(u).some(k=>k.startsWith(f.content))){y=!0;break}}y||n++;}}}catch{}n>0?s.push({name:"University content",status:"warn",message:`${a} items, ${n} issue${n>1?"s":""}`,fix:"Run: paradigm university validate --deep"}):s.push({name:"University content",status:"ok",message:`${a} content item${a>1?"s":""}`});}}catch{s.push({name:"University content",status:"warn",message:"Could not read university directory"});}let _=r.join(p,".claude","hooks.json"),ss=r.join(p,"plugins","paradigm","hooks.json");if(e.existsSync(_)){let t=e.statSync(_),a=Date.now()-t.mtime.getTime(),n=Math.floor(a/(1e3*60*60*24));n>30?s.push({name:"Claude Code hooks",status:"warn",message:`Hooks are ${n} days old \u2014 may be outdated`,fix:"paradigm hooks install"}):s.push({name:"Claude Code hooks",status:"ok",message:n>0?`${n} days old`:"Fresh"});}else e.existsSync(ss)?s.push({name:"Claude Code hooks",status:"ok",message:"Using plugin hooks"}):s.push({name:"Claude Code hooks",status:"missing",message:"No hooks installed",fix:"paradigm hooks install"});let V=r.join(p,".paradigm","habits.yaml");if(e.existsSync(V))try{let t=e.readFileSync(V,"utf8"),a=w.load(t);if(a?.version&&Array.isArray(a?.habits)){let n=a.habits.filter(i=>i.enabled!==!1).length;s.push({name:"Habits config",status:"ok",message:`Valid (${n}/${a.habits.length} enabled)`});}else s.push({name:"Habits config",status:"warn",message:"Missing version or habits array",fix:"Regenerate habits.yaml with paradigm habits init"});}catch(t){s.push({name:"Habits config",status:"error",message:`Invalid YAML: ${t.message}`,fix:"Check YAML syntax in habits.yaml"});}let J=r.join(p,"AGENTS.md");if(e.existsSync(J)){let t=e.statSync(J),a=Date.now()-t.mtime.getTime(),n=Math.floor(a/(1e3*60*60*24));n>60?s.push({name:"AGENTS.md",status:"warn",message:`${n} days since last update \u2014 may be stale`,fix:"paradigm sync"}):s.push({name:"AGENTS.md",status:"ok",message:n>0?`Updated ${n} days ago`:"Fresh"});}}let O=0,T=0,$=0;for(let o of s){let m,c;switch(o.status){case "ok":m="\u2713",c=l.green;break;case "warn":m="\u26A0",c=l.yellow,T++;break;case "error":m="\u2717",c=l.red,O++;break;case "missing":m="\u25CB",c=l.gray,$++;break;case "info":m="\u2802",c=l.gray;break}if(!S){let v=o.name.padEnd(30);console.log(` ${c(m)} ${v} ${c(o.message)}`),o.fix&&console.log(l.gray(` \u2514\u2500 Fix: ${o.fix}`));}}let{runContextAudit:Z}=await import('./context-audit-JVCA6GSV.js'),M=await Z(p,{quiet:S}),W=0,z=0,b=0;!S&&M.length>0&&(console.log(""),console.log(l.blue(" Context Audit")),console.log(l.gray(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")));for(let o of M){let m,c;switch(o.status){case "ok":m="\u2713",c=l.green;break;case "warn":m="\u26A0",c=l.yellow,z++;break;case "error":m="\u2717",c=l.red,W++;break;case "advisory":m="\u2139",c=l.cyan,b++;break}if(!S){let v=o.check.padEnd(30);if(console.log(` ${c(m)} ${v} ${c(o.message)}`),o.details&&o.details.length>0){let D=o.details.slice(0,5);for(let q of D)console.log(l.gray(` \u2502 ${q}`));o.details.length>5&&console.log(l.gray(` \u2502 ... and ${o.details.length-5} more`));}o.fix&&console.log(l.gray(` \u2514\u2500 Fix: ${o.fix}`));}}let C=O+W,j=T+z,A=C+j+$===0;if(!S)if(console.log(""),A)console.log(l.green(`\u2728 All checks passed!
7
+ `));else {let o=[];C>0&&o.push(l.red(`${C} error${C>1?"s":""}`)),j>0&&o.push(l.yellow(`${j} warning${j>1?"s":""}`)),$>0&&o.push(l.gray(`${$} missing`)),b>0&&o.push(l.cyan(`${b} advisor${b>1?"ies":"y"}`)),console.log(`${o.join(", ")} found.
8
+ `),console.log(l.gray("Run the suggested commands to fix issues.")),console.log(l.gray(`Troubleshooting guide: .paradigm/docs/troubleshooting.md
9
+ `));}if(!S&&P.explain&&!A)try{let{narrateAllGaps:o}=await import('./gap-narrator-NTXLUI7I.js'),m=[];for(let c of s)c.status!=="ok"&&(c.name===".purpose"||c.name.startsWith("Purpose-required")?m.push({type:"missing-purpose",target:c.name,severity:"improvement"}):c.name===".paradigm/scan-index.json"&&c.status==="warn"?m.push({type:"index-stale",target:c.name,severity:"improvement"}):c.name==="Portal compliance"?m.push({type:"portal-mismatch",target:c.name,severity:c.status==="error"?"blocking":"improvement"}):c.name==="Clarification markers"&&m.push({type:"missing-description",target:c.name,severity:"improvement"}));if(m.length>0){let c=o(m);console.log(l.blue(`
10
+ Gap Narrations (--explain)
11
+ `)),console.log(l.gray(c.narrative)),console.log("");}}catch{}A?N.success("All health checks passed",{total:s.length+M.length}):N.error("Health checks found issues",{errors:C,warnings:j,missing:$,advisories:b});try{let{captureSnapshot:o}=await import('./metrics-UESGUHTA.js');o(p);}catch{}return A}export{rs as a};
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import {e}from'./chunk-JQKKVAAN.js';import*as r from'fs';import*as c from'path';import*as ce from'os';import*as N from'js-yaml';function se(e,s){let n=[];return n.push(`# ${e} - Paradigm Context`),n.push(""),n.push(`Generated for ${s} by Paradigm.`),n.push(""),n.join(`
2
+ import {e}from'./chunk-VIG5LSGZ.js';import*as r from'fs';import*as c from'path';import*as ce from'os';import*as N from'js-yaml';function se(e,s){let n=[];return n.push(`# ${e} - Paradigm Context`),n.push(""),n.push(`Generated for ${s} by Paradigm.`),n.push(""),n.join(`
3
3
  `)}function P(e){let s=[];if(e["agent-guidelines"]?.overview&&(s.push("## Overview"),s.push(""),s.push(e["agent-guidelines"].overview),s.push("")),e["agent-guidelines"]?.["how-to-use"]?.length){s.push("## How to Use Paradigm"),s.push("");for(let n of e["agent-guidelines"]["how-to-use"])s.push(`- ${n}`);s.push("");}return s.join(`
4
4
  `)}function C(e){let s=[];s.push("## Symbol System"),s.push(""),s.push("Use these prefixes to reference project elements:"),s.push(""),s.push("| Symbol | Name | Description |"),s.push("|--------|------|-------------|");let n=e["symbol-system"];if(n)for(let[a,t]of Object.entries(n))s.push(`| \`${a}\` | ${t.name} | ${t.description} |`);return s.push(""),s.push("See `.paradigm/specs/symbols.md` for complete reference."),s.push(""),s.join(`
5
5
  `)}function w(e){let s=[];if(!e.logging?.enforce)return "";if(s.push("## Paradigm Logging"),s.push(""),s.push("**IMPORTANT:** Use the Paradigm logger instead of raw console.log/print."),s.push(""),s.push("```"),s.push("// Use this pattern:"),s.push("log.component('#login-handler').info('Starting login', { email });"),s.push("log.component('#database').debug('Query executed', { duration });"),s.push("log.gate('^authenticated').warn('Access denied', { userId });"),s.push("log.signal('!login-success').info('User authenticated');"),s.push("```"),s.push(""),e.logging["symbol-mapping"]){s.push("### Symbol Mapping by Directory"),s.push(""),s.push("| Directory | Symbol | Logger Method |"),s.push("|-----------|--------|---------------|");for(let[n,a]of Object.entries(e.logging["symbol-mapping"])){let t=ge(a);s.push(`| \`${n}\` | \`${a}\` | \`log.${t}()\` |`);}s.push("");}return s.push("See `.paradigm/specs/logger.md` for full specification."),s.push(""),s.join(`
6
- `)}function ge(e){return {"#":"component","^":"gate","!":"signal",$:"flow","~":"aspect","@":"component","%":"component","&":"component"}[e]||"raw"}function ne(e){if(!e.scan?.enabled)return "";let s=[];return s.push("## Paradigm Scan"),s.push(""),s.push('When the user says "**paradigm scan**" with an image:'),s.push(""),s.push("1. Analyze the image for UI elements"),s.push("2. Cross-reference with `.paradigm/scan-index.json`"),s.push("3. Return structured mapping of visual elements to code"),s.push(""),s.push("| Mode | Use Case |"),s.push("|------|----------|"),s.push("| `paradigm scan` | Map any image to code |"),s.push("| `paradigm scan ui` | Screenshot of running app |"),s.push("| `paradigm scan design` | Mockup - gap analysis |"),s.push("| `paradigm scan error` | Error screenshot |"),s.push(""),s.push("See `.paradigm/specs/scan.md` for full protocol."),s.push(""),s.join(`
6
+ `)}function ge(e){return {"#":"component","^":"gate","!":"signal",$:"flow","~":"aspect","@":"component","%":"component","&":"component"}[e]||"raw"}function ne(e){if(!e.probe?.enabled)return "";let s=[];return s.push("## Paradigm Probe"),s.push(""),s.push('When the user says "**paradigm probe**" with an image:'),s.push(""),s.push("1. Analyze the image for UI elements"),s.push("2. Cross-reference with `.paradigm/probe-index.json`"),s.push("3. Return structured mapping of visual elements to code"),s.push(""),s.push("| Mode | Use Case |"),s.push("|------|----------|"),s.push("| `paradigm probe` | Map any image to code |"),s.push("| `paradigm probe ui` | Screenshot of running app |"),s.push("| `paradigm probe design` | Mockup - gap analysis |"),s.push("| `paradigm probe error` | Error screenshot |"),s.push(""),s.push("See `.paradigm/specs/probe.md` for full protocol."),s.push(""),s.join(`
7
7
  `)}function b(e){if(!e.conventions?.length)return "";let s=[];s.push("## Conventions"),s.push("");for(let n of e.conventions)s.push(`- ${n}`);return s.push(""),s.join(`
8
8
  `)}function S(e){if(!e["agent-guidelines"]?.["update-rules"]?.length)return "";let s=[];s.push("## When to Update Paradigm Files"),s.push("");for(let n of e["agent-guidelines"]["update-rules"])s.push(`- ${n}`);return s.push(""),s.join(`
9
9
  `)}function x(){let e=[];return e.push("## Paradigm Commands"),e.push(""),e.push("| Command | Description |"),e.push("|---------|-------------|"),e.push("| `paradigm init` | Initialize Paradigm in a project |"),e.push("| `paradigm sync` | Regenerate IDE instruction files |"),e.push("| `paradigm index` | Generate scan index |"),e.push("| `paradigm doctor` | Health check |"),e.push("| `paradigm status` | Show project status |"),e.push("| `paradigm watch` | Auto-sync on changes |"),e.push(""),e.push("See `.paradigm/docs/commands.md` for full reference."),e.push(""),e.join(`
@@ -16,7 +16,7 @@ import {e}from'./chunk-JQKKVAAN.js';import*as r from'fs';import*as c from'path';
16
16
  `)}function E(){let e=[];return e.push("## Habits Compliance"),e.push(""),e.push("Paradigm tracks behavioral habits \u2014 repeatable practices that improve code quality."),e.push(""),e.push("### When to Check Habits"),e.push(""),e.push("| Trigger | When | Tool |"),e.push("|---------|------|------|"),e.push('| `preflight` | Before starting implementation | `paradigm_habits_check({ trigger: "preflight" })` |'),e.push('| `postflight` | After completing implementation | `paradigm_habits_check({ trigger: "postflight" })` |'),e.push('| `on-stop` | Before ending a session | `paradigm_habits_check({ trigger: "on-stop" })` |'),e.push(""),e.push("### Key Habit Categories"),e.push(""),e.push("| Category | Examples |"),e.push("|----------|----------|"),e.push("| Discovery | Call `paradigm_ripple` before modifying symbols |"),e.push("| Security | Declare gates for new routes in portal.yaml |"),e.push("| Documentation | Update .purpose files for modified components |"),e.push("| Quality | Record lore for sessions modifying 3+ files |"),e.push(""),e.push("Use `paradigm_practice_context` before modifying symbols to get habit-aware warnings."),e.push(""),e.join(`
17
17
  `)}function D(){let e=[];return e.push("## Lore Recording"),e.push(""),e.push("Lore captures the project timeline \u2014 sessions, decisions, milestones, and incidents."),e.push(""),e.push("### When to Record Lore"),e.push(""),e.push("| Type | When | Example |"),e.push("|------|------|---------|"),e.push('| `agent-session` | After modifying 3+ files | "Added JWT auth to /api/projects" |'),e.push('| `decision` | After making architectural choices | "Chose Redis over Memcached for caching" |'),e.push('| `milestone` | After completing a significant feature | "v2.0 migration complete" |'),e.push('| `incident` | After resolving a production issue | "Fixed OOM in payment worker" |'),e.push(""),e.push("### Recording"),e.push(""),e.push("```"),e.push("paradigm_lore_record({"),e.push(' type: "agent-session",'),e.push(' title: "Short description of work done",'),e.push(' summary: "Detailed summary of changes...",'),e.push(' symbols_touched: ["#component", "^gate"]'),e.push("})"),e.push("```"),e.push(""),e.push("Use `paradigm_lore_timeline` at session start for project history orientation."),e.push(""),e.join(`
18
18
  `)}function U(){let e=[];return e.push("## llms.txt"),e.push(""),e.push("This project provides an `llms.txt` file at the repository root \u2014 a plain-text summary"),e.push("of the project optimized for LLM consumption. It includes symbols, key files, flows,"),e.push("gates, and conventions."),e.push(""),e.push("Regenerate with: `paradigm sync-llms`"),e.push(""),e.join(`
19
- `)}function pe(){let e=[];return e.push("---"),e.push(""),e.push("## Reference Files"),e.push(""),e.push("- `.paradigm/specs/symbols.md` - Symbol system reference"),e.push("- `.paradigm/specs/logger.md` - Logging specification"),e.push("- `.paradigm/specs/scan.md` - Scan protocol"),e.push("- `.paradigm/docs/commands.md` - CLI reference"),e.push("- `.paradigm/docs/patterns.md` - Coding patterns"),e.push("- `.paradigm/docs/troubleshooting.md` - Common issues"),e.push("- `.paradigm/prompts/` - Pre-written task prompts"),e.push(""),e.push("*Generated by Paradigm. Run `paradigm sync` to regenerate.*"),e.join(`
19
+ `)}function pe(){let e=[];return e.push("---"),e.push(""),e.push("## Reference Files"),e.push(""),e.push("- `.paradigm/specs/symbols.md` - Symbol system reference"),e.push("- `.paradigm/specs/logger.md` - Logging specification"),e.push("- `.paradigm/specs/probe.md` - Probe protocol"),e.push("- `.paradigm/docs/commands.md` - CLI reference"),e.push("- `.paradigm/docs/patterns.md` - Coding patterns"),e.push("- `.paradigm/docs/troubleshooting.md` - Common issues"),e.push("- `.paradigm/prompts/` - Pre-written task prompts"),e.push(""),e.push("*Generated by Paradigm. Run `paradigm sync` to regenerate.*"),e.join(`
20
20
  `)}function g(e,s={}){let n=["---",`description: ${e}`];return s.globs&&n.push(`globs: ${s.globs}`),s.alwaysApply!==void 0&&n.push(`alwaysApply: ${s.alwaysApply}`),n.push("---",""),n.join(`
21
21
  `)}var G=class{name="cursor";displayName="Cursor";outputPath=".cursor/rules";multiFile=true;detect(s){return !!(r.existsSync(c.join(s,".cursor"))||r.existsSync(c.join(s,".cursorrules"))||r.existsSync(c.join(s,".vscode")))}generate(s){return this.generateFiles(s).map(a=>`# ${a.path}
22
22
 
@@ -578,7 +578,7 @@ For detailed specifications, reference these files:
578
578
 
579
579
  - \`.paradigm/specs/symbols.md\` - Complete symbol reference
580
580
  - \`.paradigm/specs/logger.md\` - Logging specification
581
- - \`.paradigm/specs/scan.md\` - Visual discovery protocol
581
+ - \`.paradigm/specs/probe.md\` - Visual discovery protocol
582
582
  - \`.paradigm/docs/\` - Documentation and troubleshooting
583
583
  - \`.paradigm/prompts/\` - Pre-written task prompts
584
584
 
@@ -740,4 +740,4 @@ ${v()}
740
740
  `)}},W=new Q;var Y=class{name="claude";displayName="Claude";outputPath="CLAUDE.md";detect(s){return !!r.existsSync(c.join(s,"CLAUDE.md"))}generate(s){let{config:n,projectName:a}=s,t=[];t.push(`# ${a} - Claude Context`),t.push(""),t.push("> **Paradigm v2.0** | For Claude Code, Claude API, and Claude-native interfaces"),t.push(">"),t.push("> **Author:** Matt Canoy ([@ascend42](https://github.com/ascend42)) | **Repo:** [github.com/ascend42/a-paradigm](https://github.com/ascend42/a-paradigm) | **npm:** [@a-company/paradigm](https://www.npmjs.com/package/@a-company/paradigm) | **Plugin:** `paradigm` via Claude Code marketplace"),t.push(""),t.push("## Project Overview"),t.push(""),n["agent-guidelines"]?.overview&&t.push(n["agent-guidelines"].overview),t.push(""),t.push("## Quick Orientation"),t.push(""),t.push("```"),t.push(".paradigm/config.yaml \u2192 Project configuration"),t.push(".paradigm/specs/ \u2192 Detailed specifications"),t.push(".paradigm/docs/ \u2192 Commands, patterns, troubleshooting"),t.push(".cursorrules \u2192 IDE instructions (if using Cursor)"),t.push("portal.yaml \u2192 Security/auth definitions"),t.push(".paradigm/lore/ \u2192 Project timeline and history"),t.push("```"),t.push(""),t.push("## Symbol System"),t.push(""),t.push("Use these prefixes in documentation and commits:"),t.push(""),t.push("| Symbol | Meaning | Example |"),t.push("|--------|---------|---------|");let i=n["symbol-system"];if(i)for(let[p,u]of Object.entries(i)){let d=u.examples?.[0]||`${p}example`;t.push(`| \`${p}\` | ${u.name} | \`${d}\` |`);}t.push("");let o=b(n);if(o&&t.push(o),t.push(v()),t.push("## Agent Onboarding"),t.push(""),t.push("**First session:** Call `paradigm_status` \u2192 read `.paradigm/config.yaml` \u2192 check `portal.yaml`"),t.push(""),t.push("**Before each task:** `paradigm_ripple` for impact, `paradigm_gates_for_route` for new endpoints"),t.push(""),t.push("**Resuming:** Call `paradigm_session_recover`"),t.push(""),t.push("## Before Implementing"),t.push(""),t.push("0. Call `paradigm_protocol_search` \u2014 if a protocol matches, follow it"),t.push('1. Complex task (3+ files)? \u2192 `paradigm_orchestrate_inline` mode="plan"'),t.push("2. Affects symbols? \u2192 `paradigm_ripple`"),t.push("3. Adds endpoints? \u2192 `paradigm_gates_for_route`"),t.push(""),t.push("## Automatic Enforcement (Hooks)"),t.push(""),t.push("The stop hook **BLOCKS** if source files were modified without .purpose updates."),t.push(""),t.push("| Hook | Behavior |"),t.push("|------|----------|"),t.push("| **Stop** | Blocks on: missing .purpose, missing portal.yaml gates, aspect drift, stale purposes |"),t.push("| **Pre-commit** | Auto-rebuilds index \u2014 never blocks |"),t.push("| **Post-write** | Advisory reminder for .purpose coverage |"),t.push(""),t.push("**If blocked:** Update .purpose files \u2192 update portal.yaml if needed \u2192 `paradigm_reindex` \u2192 finish"),t.push(""),t.push("## Maintaining Paradigm Files"),t.push(""),t.push("**You MUST update Paradigm files when making code changes:**"),t.push(""),t.push("- Add feature \u2192 create `.purpose` in directory"),t.push("- Add protected route \u2192 update `portal.yaml` with gates"),t.push("- Add signal/event \u2192 add to `.purpose`"),t.push("- Add multi-step flow \u2192 document as `$flow`"),t.push("- Rename/delete symbol \u2192 update all references"),t.push("- Record lore via `paradigm_lore_record` for sessions modifying 3+ files"),t.push("- Use Paradigm logger (`log.component()`, `log.gate()`, etc.) \u2014 never raw console.log"),t.push(""),t.push("**Auth requires portal.yaml** if your code has JWT, role checks, ownership checks, or protected endpoints."),t.push(""),t.push("## On-Demand Guidance"),t.push(""),t.push("Detailed guidance is available via MCP resources \u2014 load only what you need:"),t.push(""),t.push("| Topic | Resource |"),t.push("|-------|----------|"),t.push("| Logging rules & directory mapping | `paradigm://guidance/logging` |"),t.push("| Portal protocol & gate patterns | `paradigm://guidance/portal` |"),t.push("| MCP workflow & token budgets | `paradigm://guidance/mcp-workflow` |"),t.push("| Flow-first development | `paradigm://guidance/flows` |"),t.push("| Multi-agent orchestration | `paradigm://guidance/orchestration` |"),t.push("| Workspaces (multi-project) | `paradigm://guidance/workspaces` |"),t.push("| University (knowledge base) | `paradigm://guidance/university` |"),t.push("| Confidence calibration | `paradigm://guidance/calibration` |"),t.push("| Session checkpoints | `paradigm://guidance/checkpoints` |"),t.push("| Navigation & task recipes | `paradigm://guidance/navigation` |"),t.push("| Component types & hierarchy | `paradigm://guidance/component-types` |"),t.push("| Troubleshooting | `paradigm://guidance/troubleshooting` |"),t.push(""),s.agents?.length){let p=s.agents.flatMap(u=>(u.context?.contributions||[]).filter(d=>d.priority==="high"&&d.content).map(d=>({agent:u.id,section:d.section,content:d.content})));if(p.length>0){t.push("## Agent Contributions"),t.push("");for(let u of p)t.push(`### ${u.section} (${u.agent})`),t.push(""),t.push(u.content),t.push("");}}if(n["purpose-required"]?.length){t.push("## Directory Structure"),t.push(""),t.push("`.purpose` files exist in:");for(let p of n["purpose-required"])t.push(`- \`${p.pattern}\``);t.push("");}return t.push("---"),t.push(""),t.push("*See `.paradigm/specs/` for specifications. Run `paradigm sync` to regenerate.*"),t.filter(p=>p!==void 0).join(`
741
741
  `)}generateMcpConfig(s){return {mcpServers:{paradigm:{command:"paradigm-mcp",args:["."],cwd:s}}}}generateNestedContexts(s,n){let a=[],t=me(s);for(let i of t){let o=c.dirname(i),p=c.relative(s,o);if(p===""||p===".")continue;let u=r.readFileSync(i,"utf8"),d=this.generateDirectoryContext(p,u,n);a.push({path:c.join(p,"CLAUDE.md"),content:d});}return a}generateDirectoryContext(s,n,a){let t=[],i=c.basename(s);return t.push(`# ${i} - Directory Context`),t.push(""),t.push(`> Part of ${a.projectName} | See root CLAUDE.md for project overview`),t.push(""),t.push("## Purpose"),t.push(""),t.push("```yaml"),t.push(n.trim()),t.push("```"),t.push(""),t.push("## Quick Reference"),t.push(""),t.push(`- **Path**: \`${s}\``),t.push("- **Config**: See `.paradigm/config.yaml`"),t.push("- **Patterns**: See `.paradigm/docs/patterns.md`"),t.push(""),t.push("## Symbols"),t.push(""),t.push("`#` component | `$` flow | `^` gate | `!` signal | `~` aspect"),t.push(""),t.push("---"),t.push(""),t.push("*Auto-generated by `paradigm sync claude`. Edit .purpose file to update.*"),t.join(`
742
742
  `)}};function me(e){let s=[];function n(a){let t=r.readdirSync(a,{withFileTypes:true});for(let i of t){let o=c.join(a,i.name);if(i.isDirectory()){if(i.name.startsWith(".")||i.name==="node_modules")continue;n(o);}else i.name===".purpose"&&s.push(o);}}return n(e),s}var J=new Y;var K=class{name="agents";displayName="AGENTS.md";outputPath="AGENTS.md";multiFile=false;detect(s){return r.existsSync(c.join(s,"AGENTS.md"))}generate(s){let{config:n,projectName:a}=s,t=[];t.push(`# ${a} - AI Agent Instructions`),t.push(""),t.push("> Generated by [Paradigm](https://github.com/anthropics/paradigm) v2.0 | Universal AI agent instruction file"),t.push(""),t.push(P(n)),t.push(C(n));let i=b(n);i&&t.push(i);let o=w(n);o&&t.push(o),t.push(ie()),t.push(ae()),t.push(re()),t.push(v()),t.push(oe()),t.push($()),t.push(E()),t.push(D()),t.push(U());let p=S(n);return p&&t.push(p),t.push(x()),t.push("---"),t.push(""),t.push("*Generated by Paradigm. Run `paradigm sync agents` to regenerate.*"),t.filter(u=>u!==void 0&&u!=="").join(`
743
- `)}},X=new K;var Z=new Map([["cursor",O],["copilot",L],["windsurf",W],["claude",J],["agents",X]]);function ee(e){return Z.get(e.toLowerCase())}function he(){return Array.from(Z.keys())}function Ee(e){return O.detect(e)?{detected:"cursor",confidence:"high",reason:"Found .cursor directory or .cursorrules file"}:W.detect(e)?{detected:"windsurf",confidence:"high",reason:"Found .windsurf directory or .windsurfrules file"}:L.detect(e)?{detected:"copilot",confidence:"medium",reason:"Found .github/copilot-instructions.md file"}:r.existsSync(c.join(e,".vscode"))?{detected:"cursor",confidence:"low",reason:"Found .vscode directory, defaulting to Cursor format"}:{detected:null,confidence:"low",reason:"No IDE markers found"}}function De(e$1){let s=c.join(e$1,".paradigm"),n=c.join(e$1,".paradigm"),a,t,i;if(r.existsSync(s)&&r.statSync(s).isDirectory())a=c.join(s,"config.yaml"),t=c.join(s,"specs"),i=c.join(s,"docs");else if(r.existsSync(n)&&r.statSync(n).isFile())a=n,t="",i="";else return null;if(!r.existsSync(a))return null;let o;try{let f=r.readFileSync(a,"utf8");o=e(f);}catch{return null}let p={};if(t&&r.existsSync(t)){let f=["logger.md","scan.md","symbols.md"];for(let h of f){let y=c.join(t,h);if(r.existsSync(y)){let _=h.replace(".md","");p[_]=r.readFileSync(y,"utf8");}}}let u={};if(i&&r.existsSync(i)){let f=["commands.md","patterns.md","troubleshooting.md"];for(let h of f){let y=c.join(i,h);if(r.existsSync(y)){let _=h.replace(".md","");u[_]=r.readFileSync(y,"utf8");}}}let d,l=c.join(e$1,".paradigm","agents");if(r.existsSync(l))try{let f=r.readdirSync(l).filter(y=>y.endsWith(".agent")),h=[];for(let y of f)try{let _=r.readFileSync(c.join(l,y),"utf8"),F=N.load(_);F?.id&&h.push({id:F.id,role:F.role,context:F.context});}catch{}h.length>0&&(d=h);}catch{}let m,I=N.load(r.readFileSync(a,"utf8")).workspace;if(typeof I=="string"){let f=c.resolve(e$1,I);if(r.existsSync(f))try{let h=N.load(r.readFileSync(f,"utf8")),y=c.dirname(f),_=h.members?.find(F=>c.resolve(y,F.path)===e$1)?.name||c.basename(e$1);m={name:h.name,currentMember:_,members:h.members||[]};}catch{}}return {config:o,specs:p,docs:u,projectName:c.basename(e$1),workspace:m,agents:d}}function fe(e,s,n,a=false){let t=ee(s);if(!t)return {success:false,ide:s,outputPath:"",message:`Unknown IDE: ${s}. Available: ${he().join(", ")}`};let i=c.join(e,t.outputPath);try{if(t.multiFile&&t.generateFiles)return ye(e,t,n,a);!a&&r.existsSync(i);let o=c.dirname(i);r.existsSync(o)||r.mkdirSync(o,{recursive:!0});let p=t.generate(n);return r.writeFileSync(i,p,"utf8"),{success:!0,ide:s,outputPath:i,message:`Generated ${t.outputPath}`}}catch(o){return {success:false,ide:s,outputPath:i,message:`Failed to write ${t.outputPath}: ${o.message}`}}}function ye(e,s,n,a){let t=c.join(e,s.outputPath);r.existsSync(t)||r.mkdirSync(t,{recursive:true});let i=s.generateFiles(n,e),o=[];for(let l of i){let m;l.path.startsWith("../")?m=c.join(t,l.path):m=c.join(t,l.path);let j=c.dirname(m);r.existsSync(j)||r.mkdirSync(j,{recursive:true}),!a&&r.existsSync(m),r.writeFileSync(m,l.content,"utf8"),o.push(l.path);}if(s.name==="cursor"){let l=c.join(e,".cursorrules");if(r.existsSync(l)){let m=c.join(e,".cursorrules.bak");r.existsSync(m)||r.renameSync(l,m);}}let p=o.filter(l=>!l.startsWith("../")),u=o.filter(l=>l.startsWith("../")),d=`Generated ${p.length} files in ${s.outputPath}/`;return u.length>0&&(d+=` + ${u.length} additional file(s)`),{success:true,ide:s.name,outputPath:t,message:d}}function Ue(e,s,n=false){let a=[];for(let[t]of Z)a.push(fe(e,t,s,n));return a}function Oe(e,s){let n=ee(s);if(!n||!n.generateMcpConfig)return {success:false,path:"",message:`IDE ${s} does not support MCP configuration`};let a=n.generateMcpConfig(e),t;switch(s){case "cursor":t=c.join(e,".cursor","mcp.json");break;case "claude":t=c.join(e,".mcp.json");break;default:return {success:false,path:"",message:`Unknown MCP config path for ${s}`}}try{let i=c.dirname(t);r.existsSync(i)||r.mkdirSync(i,{recursive:!0});let o={};if(r.existsSync(t)){let u=r.readFileSync(t,"utf8");o=JSON.parse(u);}let p={...o,mcpServers:{...o.mcpServers||{},...a.mcpServers}};if(s==="claude"){let u=o.permissions||{},d=u.allow||[],l="Bash(paradigm *)";d.includes(l)||(p.permissions={...u,allow:[...d,l]});}return r.writeFileSync(t,JSON.stringify(p,null,2)),{success:!0,path:t,message:`MCP configuration written to ${c.relative(e,t)}`}}catch(i){return {success:false,path:t,message:`Failed to write MCP config: ${i.message}`}}}function Le(e,s,n){let a=ee(s);if(!a||!a.generateNestedContexts)return {success:false,count:0,message:`IDE ${s} does not support nested contexts`};try{let t=a.generateNestedContexts(e,n);for(let i of t){let o=c.join(e,i.path),p=c.dirname(o);r.existsSync(p)||r.mkdirSync(p,{recursive:!0}),r.writeFileSync(o,i.content,"utf8");}return {success:!0,count:t.length,message:`Generated ${t.length} nested context files`}}catch(t){return {success:false,count:0,message:`Failed to write nested contexts: ${t.message}`}}}export{ee as a,he as b,Ee as c,De as d,fe as e,Ue as f,Oe as g,Le as h};
743
+ `)}},X=new K;var Z=new Map([["cursor",O],["copilot",L],["windsurf",W],["claude",J],["agents",X]]);function ee(e){return Z.get(e.toLowerCase())}function he(){return Array.from(Z.keys())}function Ee(e){return O.detect(e)?{detected:"cursor",confidence:"high",reason:"Found .cursor directory or .cursorrules file"}:W.detect(e)?{detected:"windsurf",confidence:"high",reason:"Found .windsurf directory or .windsurfrules file"}:L.detect(e)?{detected:"copilot",confidence:"medium",reason:"Found .github/copilot-instructions.md file"}:r.existsSync(c.join(e,".vscode"))?{detected:"cursor",confidence:"low",reason:"Found .vscode directory, defaulting to Cursor format"}:{detected:null,confidence:"low",reason:"No IDE markers found"}}function De(e$1){let s=c.join(e$1,".paradigm"),n=c.join(e$1,".paradigm"),a,t,i;if(r.existsSync(s)&&r.statSync(s).isDirectory())a=c.join(s,"config.yaml"),t=c.join(s,"specs"),i=c.join(s,"docs");else if(r.existsSync(n)&&r.statSync(n).isFile())a=n,t="",i="";else return null;if(!r.existsSync(a))return null;let o;try{let f=r.readFileSync(a,"utf8");o=e(f);}catch{return null}let p={};if(t&&r.existsSync(t)){let f=["logger.md","probe.md","symbols.md"];for(let h of f){let y=c.join(t,h);if(r.existsSync(y)){let _=h.replace(".md","");p[_]=r.readFileSync(y,"utf8");}}}let u={};if(i&&r.existsSync(i)){let f=["commands.md","patterns.md","troubleshooting.md"];for(let h of f){let y=c.join(i,h);if(r.existsSync(y)){let _=h.replace(".md","");u[_]=r.readFileSync(y,"utf8");}}}let d,l=c.join(e$1,".paradigm","agents");if(r.existsSync(l))try{let f=r.readdirSync(l).filter(y=>y.endsWith(".agent")),h=[];for(let y of f)try{let _=r.readFileSync(c.join(l,y),"utf8"),F=N.load(_);F?.id&&h.push({id:F.id,role:F.role,context:F.context});}catch{}h.length>0&&(d=h);}catch{}let m,I=N.load(r.readFileSync(a,"utf8")).workspace;if(typeof I=="string"){let f=c.resolve(e$1,I);if(r.existsSync(f))try{let h=N.load(r.readFileSync(f,"utf8")),y=c.dirname(f),_=h.members?.find(F=>c.resolve(y,F.path)===e$1)?.name||c.basename(e$1);m={name:h.name,currentMember:_,members:h.members||[]};}catch{}}return {config:o,specs:p,docs:u,projectName:c.basename(e$1),workspace:m,agents:d}}function fe(e,s,n,a=false){let t=ee(s);if(!t)return {success:false,ide:s,outputPath:"",message:`Unknown IDE: ${s}. Available: ${he().join(", ")}`};let i=c.join(e,t.outputPath);try{if(t.multiFile&&t.generateFiles)return ye(e,t,n,a);!a&&r.existsSync(i);let o=c.dirname(i);r.existsSync(o)||r.mkdirSync(o,{recursive:!0});let p=t.generate(n);return r.writeFileSync(i,p,"utf8"),{success:!0,ide:s,outputPath:i,message:`Generated ${t.outputPath}`}}catch(o){return {success:false,ide:s,outputPath:i,message:`Failed to write ${t.outputPath}: ${o.message}`}}}function ye(e,s,n,a){let t=c.join(e,s.outputPath);r.existsSync(t)||r.mkdirSync(t,{recursive:true});let i=s.generateFiles(n,e),o=[];for(let l of i){let m;l.path.startsWith("../")?m=c.join(t,l.path):m=c.join(t,l.path);let j=c.dirname(m);r.existsSync(j)||r.mkdirSync(j,{recursive:true}),!a&&r.existsSync(m),r.writeFileSync(m,l.content,"utf8"),o.push(l.path);}if(s.name==="cursor"){let l=c.join(e,".cursorrules");if(r.existsSync(l)){let m=c.join(e,".cursorrules.bak");r.existsSync(m)||r.renameSync(l,m);}}let p=o.filter(l=>!l.startsWith("../")),u=o.filter(l=>l.startsWith("../")),d=`Generated ${p.length} files in ${s.outputPath}/`;return u.length>0&&(d+=` + ${u.length} additional file(s)`),{success:true,ide:s.name,outputPath:t,message:d}}function Ue(e,s,n=false){let a=[];for(let[t]of Z)a.push(fe(e,t,s,n));return a}function Oe(e,s){let n=ee(s);if(!n||!n.generateMcpConfig)return {success:false,path:"",message:`IDE ${s} does not support MCP configuration`};let a=n.generateMcpConfig(e),t;switch(s){case "cursor":t=c.join(e,".cursor","mcp.json");break;case "claude":t=c.join(e,".mcp.json");break;default:return {success:false,path:"",message:`Unknown MCP config path for ${s}`}}try{let i=c.dirname(t);r.existsSync(i)||r.mkdirSync(i,{recursive:!0});let o={};if(r.existsSync(t)){let u=r.readFileSync(t,"utf8");o=JSON.parse(u);}let p={...o,mcpServers:{...o.mcpServers||{},...a.mcpServers}};if(s==="claude"){let u=o.permissions||{},d=u.allow||[],l="Bash(paradigm *)";d.includes(l)||(p.permissions={...u,allow:[...d,l]});}return r.writeFileSync(t,JSON.stringify(p,null,2)),{success:!0,path:t,message:`MCP configuration written to ${c.relative(e,t)}`}}catch(i){return {success:false,path:t,message:`Failed to write MCP config: ${i.message}`}}}function Le(e,s,n){let a=ee(s);if(!a||!a.generateNestedContexts)return {success:false,count:0,message:`IDE ${s} does not support nested contexts`};try{let t=a.generateNestedContexts(e,n);for(let i of t){let o=c.join(e,i.path),p=c.dirname(o);r.existsSync(p)||r.mkdirSync(p,{recursive:!0}),r.writeFileSync(o,i.content,"utf8");}return {success:!0,count:t.length,message:`Generated ${t.length} nested context files`}}catch(t){return {success:false,count:0,message:`Failed to write nested contexts: ${t.message}`}}}export{ee as a,he as b,Ee as c,De as d,fe as e,Ue as f,Oe as g,Le as h};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import*as r from'fs';import*as s from'path';import*as m from'js-yaml';var d=".paradigm/university",R="pack.yaml";function l(e){let a=s.join(e,R);if(!r.existsSync(a))return null;try{let c=r.readFileSync(a,"utf8");return m.load(c)??null}catch{return null}}function g(e){let a=[],c=s.join(e,"node_modules","@a-company","university"),n=l(c);n&&n.id&&n.tenant_kind&&a.push({id:n.id,name:n.name,tenantKind:n.tenant_kind,packRoot:c,disciplines:n.disciplines,entryCount:k(c)});let t=s.join(e,d);if(r.existsSync(t)){let i=l(t),o=i?.id??s.basename(e),h=i?.tenant_kind??"project";a.push({id:o,name:i?.name,tenantKind:h,packRoot:t,disciplines:i?.disciplines,entryCount:k(t)});try{let y=r.readdirSync(t,{withFileTypes:!0});for(let f of y){if(!f.isDirectory()||f.name.startsWith("."))continue;let u=s.join(t,f.name),p=l(u);!p||!p.id||a.push({id:p.id,name:p.name,tenantKind:p.tenant_kind??"project",packRoot:u,disciplines:p.disciplines,entryCount:k(u)});}}catch{}}return a}function k(e){for(let a of ["content","src/content"]){let c=s.join(e,a);if(!r.existsSync(c))continue;let n=0;for(let t of ["notes","policies","quizzes","paths"]){let i=s.join(c,t);if(r.existsSync(i))try{n+=r.readdirSync(i).filter(o=>o.endsWith(".md")||o.endsWith(".yaml")).length;}catch{}}if(n>0)return n}return 0}function j(e,a){let c=g(e),n;if(a.pack){let t=c.find(i=>i.id===a.pack);if(t)n={packId:t.id,packRoot:t.packRoot,tenantKind:t.tenantKind,hasManifest:true};else {let i=s.join(e,d);n={packId:a.pack,packRoot:i,hasManifest:false};}}else if(a.project){let t=c.find(o=>o.tenantKind==="project"&&!o.disciplines),i=s.join(e,d);t?n={packId:t.id,packRoot:t.packRoot,tenantKind:t.tenantKind,hasManifest:true}:n={packId:s.basename(e),packRoot:i,hasManifest:false};}else {let t=c.find(i=>i.tenantKind==="project");if(t)n={packId:t.id,packRoot:t.packRoot,tenantKind:t.tenantKind,hasManifest:true};else {let i=c.find(o=>o.tenantKind==="first-party");if(i)n={packId:i.id,packRoot:i.packRoot,tenantKind:i.tenantKind,hasManifest:true};else {let o=s.join(e,d);n={packId:s.basename(e),packRoot:o,hasManifest:false};}}}if(a.discipline){let t=s.join(n.packRoot,a.discipline),i=l(t);i&&i.id?(n.subPackRoot=t,n.subPackId=i.id):r.existsSync(t)&&(n.subPackRoot=t,n.subPackId=`${n.packId}-${a.discipline}`);}return n}function b(e){return !!(e.pack||e.project||e.discipline)}export{g as a,j as b,b as c};
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import {a,e,d}from'./chunk-QO7YPQXC.js';import'./chunk-5TAVYPOV.js';import*as u from'fs';import*as m from'path';import {execSync}from'child_process';import n from'chalk';import*as w from'js-yaml';function $(s){return s.match(/(?:^|\s)((?:\/|\.\/|[a-zA-Z0-9_-]+\/)[^\s,;:'"]+\.[a-zA-Z]{1,10})\b/)?.[1]}async function R(s,a$1){try{let r=a(s),d$1=[];try{d$1=execSync("git diff --name-only HEAD",{cwd:s,encoding:"utf8",timeout:5e3}).trim().split(`
3
3
  `).filter(Boolean);}catch{}let l;try{l=execSync("git status --porcelain",{cwd:s,encoding:"utf8",timeout:5e3}).trim()==="";}catch{}let c=m.join(s,"portal.yaml"),f=!1;if(u.existsSync(c))try{let t=u.readFileSync(c,"utf8"),e=w.load(t);f=e?.routes!=null&&Object.keys(e.routes).length>0;}catch{}let i=e({toolsCalled:[],filesModified:d$1,symbolsTouched:[],loreRecorded:!1,hasPortalRoutes:f,taskAddsRoutes:!1,gitClean:l}),o=d(r,a$1,i),g=0;if(o.evaluations.length>0)try{let t=m.join(s,".paradigm","sentinel");if(u.existsSync(t)){let{SentinelStorage:e}=await import('./dist-VGFSP3XM.js'),p=new e(t);for(let b of o.evaluations)p.recordPracticeEvent({habitId:b.habit.id,habitCategory:b.habit.category,result:b.result,engineer:"agent",sessionId:`cli-${Date.now().toString(36)}`,symbolsTouched:[],filesModified:d$1,notes:b.reason}),g++;}}catch{}let h=m.join(s,".paradigm",".habits-blocking");try{if(a$1==="on-stop"&&o.blocksCompletion){let t=o.evaluations.filter(e=>e.result==="skipped"&&e.habit.severity==="block").map(e=>`${e.habit.name}: ${e.reason}`);u.writeFileSync(h,t.join(`
4
- `),"utf8");}else a$1==="on-stop"&&u.existsSync(h)&&u.unlinkSync(h);}catch{}return {trigger:a$1,evaluation:{total:o.summary.total,followed:o.summary.followed,skipped:o.summary.skipped,partial:o.summary.partial,blockingViolations:o.summary.blockingViolations,blocksCompletion:o.blocksCompletion},habits:o.evaluations.map(t=>({id:t.habit.id,name:t.habit.name,category:t.habit.category,severity:t.habit.severity,result:t.result,reason:t.reason,evidence:t.evidence})),recorded:g}}catch{return null}}async function P(s,a){let r=m.join(s,".paradigm","aspect-graph.db");if(!u.existsSync(r))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:d}=await import('./drift-ILZE5BFJ.js'),l="",c=console.log;console.log=f=>{l=f;};try{await d({json:!0,autoHeal:a});}finally{console.log=c;}return l?JSON.parse(l):null}catch{return null}}async function B(s){if(!u.existsSync(m.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:a}=await import('./portal-compliance-6YR27IQU.js'),r=await a(s);return {status:r.status,declaredButUnusedCount:r.declaredButUnused.length,usedButUndeclaredCount:r.usedButUndeclared.length,properlyDeclaredCount:r.properlyDeclared.length,declaredButUnused:r.declaredButUnused,usedButUndeclared:r.usedButUndeclared,properlyDeclared:r.properlyDeclared,portalError:r.portalError,...r.nearMatches&&r.nearMatches.length>0?{suggestions:r.nearMatches.map(d=>({gate:d.gate,didYouMean:d.didYouMean,distance:d.distance}))}:{}}}catch{return null}}async function j(s){try{let{runPostflightLearning:a}=await import('./ambient-WTLYUAQM.js');return await a(s)}catch{return null}}async function A(s){let a=process.cwd(),r=s.trigger||"on-stop",d=s.autoHeal!==false,l=[],c=[],f=await R(a,r),i=await P(a,d),o=await B(a);if(f?.evaluation.blocksCompletion){let t=f.habits.filter(e=>e.result==="skipped"&&e.severity==="block");for(let e of t){let p=`Blocking habit not satisfied: ${e.name} \u2014 ${e.reason}`;l.push(p),c.push({message:p,source:"habits",file:$(e.reason),severity:"blocking"});}}if(i&&i.driftedCount>0){let t=`${i.driftedCount} aspect anchor(s) have drifted (content genuinely changed). Run paradigm_aspect_check to review.`;l.push(t);for(let e of i.details.filter(p=>p.status==="drifted"))c.push({message:`Aspect ~${e.aspectId} drifted at lines ${e.startLine}-${e.endLine}`,source:"drift",file:e.path,severity:"advisory"});c.filter(e=>e.source==="drift").length===0&&c.push({message:t,source:"drift",severity:"advisory"});}if(o&&o.portalError?.kind==="unparseable"){let e=`portal.yaml unparseable: ${o.portalError.errorClass} \u2014 run 'paradigm doctor' for details`;l.push(e),c.push({message:e,source:"portal",file:"portal.yaml",severity:"blocking"});}else if(o&&o.usedButUndeclaredCount>0){let t=o.usedButUndeclared.filter(e=>e!=="__portal_unparseable__");if(t.length>0){let e=`${t.length} gate(s) used in code but not declared in portal.yaml: ${t.join(", ")}`;l.push(e);for(let p of t)c.push({message:`Gate ^${p} used in code but not declared in portal.yaml`,source:"portal",file:"portal.yaml",severity:"blocking"});}}let g=null;s.learn&&(g=await j(a));let h={habits:f,drift:i,portal:o,violations:l,structuredViolations:c,postflight:s.learn?g:void 0};if(s.json)console.log(JSON.stringify(h));else {if(console.log(n.magenta(`
4
+ `),"utf8");}else a$1==="on-stop"&&u.existsSync(h)&&u.unlinkSync(h);}catch{}return {trigger:a$1,evaluation:{total:o.summary.total,followed:o.summary.followed,skipped:o.summary.skipped,partial:o.summary.partial,blockingViolations:o.summary.blockingViolations,blocksCompletion:o.blocksCompletion},habits:o.evaluations.map(t=>({id:t.habit.id,name:t.habit.name,category:t.habit.category,severity:t.habit.severity,result:t.result,reason:t.reason,evidence:t.evidence})),recorded:g}}catch{return null}}async function P(s,a){let r=m.join(s,".paradigm","aspect-graph.db");if(!u.existsSync(r))return {driftedCount:0,healedCount:0,cleanCount:0,missingCount:0,details:[]};try{let{driftCheckCommand:d}=await import('./drift-ILZE5BFJ.js'),l="",c=console.log;console.log=f=>{l=f;};try{await d({json:!0,autoHeal:a});}finally{console.log=c;}return l?JSON.parse(l):null}catch{return null}}async function B(s){if(!u.existsSync(m.join(s,"portal.yaml")))return null;try{let{checkPortalCompliance:a}=await import('./portal-compliance-JONQ4SOP.js'),r=await a(s);return {status:r.status,declaredButUnusedCount:r.declaredButUnused.length,usedButUndeclaredCount:r.usedButUndeclared.length,properlyDeclaredCount:r.properlyDeclared.length,declaredButUnused:r.declaredButUnused,usedButUndeclared:r.usedButUndeclared,properlyDeclared:r.properlyDeclared,portalError:r.portalError,...r.nearMatches&&r.nearMatches.length>0?{suggestions:r.nearMatches.map(d=>({gate:d.gate,didYouMean:d.didYouMean,distance:d.distance}))}:{}}}catch{return null}}async function j(s){try{let{runPostflightLearning:a}=await import('./ambient-AI42BOM5.js');return await a(s)}catch{return null}}async function A(s){let a=process.cwd(),r=s.trigger||"on-stop",d=s.autoHeal!==false,l=[],c=[],f=await R(a,r),i=await P(a,d),o=await B(a);if(f?.evaluation.blocksCompletion){let t=f.habits.filter(e=>e.result==="skipped"&&e.severity==="block");for(let e of t){let p=`Blocking habit not satisfied: ${e.name} \u2014 ${e.reason}`;l.push(p),c.push({message:p,source:"habits",file:$(e.reason),severity:"blocking"});}}if(i&&i.driftedCount>0){let t=`${i.driftedCount} aspect anchor(s) have drifted (content genuinely changed). Run paradigm_aspect_check to review.`;l.push(t);for(let e of i.details.filter(p=>p.status==="drifted"))c.push({message:`Aspect ~${e.aspectId} drifted at lines ${e.startLine}-${e.endLine}`,source:"drift",file:e.path,severity:"advisory"});c.filter(e=>e.source==="drift").length===0&&c.push({message:t,source:"drift",severity:"advisory"});}if(o&&o.portalError?.kind==="unparseable"){let e=`portal.yaml unparseable: ${o.portalError.errorClass} \u2014 run 'paradigm doctor' for details`;l.push(e),c.push({message:e,source:"portal",file:"portal.yaml",severity:"blocking"});}else if(o&&o.usedButUndeclaredCount>0){let t=o.usedButUndeclared.filter(e=>e!=="__portal_unparseable__");if(t.length>0){let e=`${t.length} gate(s) used in code but not declared in portal.yaml: ${t.join(", ")}`;l.push(e);for(let p of t)c.push({message:`Gate ^${p} used in code but not declared in portal.yaml`,source:"portal",file:"portal.yaml",severity:"blocking"});}}let g=null;s.learn&&(g=await j(a));let h={habits:f,drift:i,portal:o,violations:l,structuredViolations:c,postflight:s.learn?g:void 0};if(s.json)console.log(JSON.stringify(h));else {if(console.log(n.magenta(`
5
5
  Paradigm Compliance Check
6
6
  `)),f){let{evaluation:t}=f,e=t.blocksCompletion?n.red:n.green;console.log(n.white(" Habits:")),console.log(` ${e(`${t.followed} followed, ${t.skipped} skipped, ${t.partial} partial`)}`),t.blockingViolations>0&&console.log(n.red(` ${t.blockingViolations} blocking violation(s)`)),console.log();}if(i&&(console.log(n.white(" Drift:")),i.healedCount>0&&console.log(n.green(` Auto-healed: ${i.healedCount} shifted anchor(s)`)),i.cleanCount>0&&console.log(n.green(` Clean: ${i.cleanCount} anchor(s)`)),i.driftedCount>0&&console.log(n.red(` Drifted: ${i.driftedCount} anchor(s)`)),i.missingCount>0&&console.log(n.yellow(` Missing: ${i.missingCount} anchor file(s)`)),console.log()),o){console.log(n.white(" Portal:"));let t=o.status==="compliant"?n.green:o.status==="warnings"?n.yellow:n.red;console.log(` Status: ${t(o.status)}`),o.usedButUndeclaredCount>0&&console.log(n.red(` ${o.usedButUndeclaredCount} undeclared gate(s)`)),console.log();}if(g){if(console.log(n.white(" Postflight Learning:")),g.journalsWritten>0){console.log(n.green(` Journals written: ${g.journalsWritten}`));for(let[t,e]of Object.entries(g.journalsByAgent))e>0&&console.log(n.gray(` ${t}: ${e} entries`));}else console.log(n.gray(" No verdicts to learn from"));g.promoted>0&&console.log(n.green(` Promoted to notebooks: ${g.promoted}`)),console.log();}if(l.length>0){console.log(n.red(` ${l.length} violation(s):`));for(let t of l)console.log(n.red(` - ${t}`));}else console.log(n.green(" All checks passed."));console.log();}l.length>0&&(process.exitCode=1);}export{A as complianceCheckCommand};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import'./chunk-5TAVYPOV.js';import {z}from'zod';import*as r from'js-yaml';var p=z.enum(["web","backend","fullstack","api","cli","ml","mobile","game","embedded","devops","data","library","monorepo","custom"]),g=z.enum(["auto","claude","claude-code","cursor-cli","claude-cli","manual"]),i=z.object({name:z.string(),description:z.string(),examples:z.array(z.string()).optional()}).passthrough(),u=z.object({file:z.string().optional(),"core-tags":z.array(z.string()).optional(),"allow-suggestions":z.boolean().optional()}).passthrough(),m=z.object({overview:z.string().optional(),"how-to-use":z.array(z.string()).optional(),"update-rules":z.array(z.string()).optional()}).passthrough(),d=z.object({enforce:z.boolean().optional(),"default-level":z.enum(["debug","info","warn","error"]).optional(),"symbol-mapping":z.record(z.string(),z.string()).optional()}).passthrough(),b=z.object({pattern:z.string(),depth:z.number().optional()}),h=z.object({toolCacheTtlMs:z.number().optional()}).passthrough(),f=z.object({model:z.string().optional(),"context-window":z.number().optional()}).passthrough(),y=z.object({enabled:z.boolean().optional(),"index-file":z.string().optional(),"docs-path":z.string().optional()}).passthrough(),j=z.object({enabled:z.boolean().optional(),"auto-include":z.boolean().optional()}).passthrough(),w=z.object({remote_consent:z.enum(["pending","granted","declined"]).optional(),local_snapshots_enabled:z.boolean().optional()}).passthrough(),v=z.object({version:z.string(),project:z.string(),discipline:p.optional(),"agent-provider":g.optional(),"agent-guidelines":m.optional(),"symbol-system":z.record(z.string(),i).optional(),"tag-bank":u.optional(),component_types:z.record(z.string(),z.string()).optional(),logging:d.optional(),"purpose-required":z.array(b).optional(),conventions:z.array(z.string()).optional(),workspace:z.string().optional(),limits:h.optional(),"ai-agent":f.optional(),context:y.optional(),probe:j.optional(),metrics:w.optional(),states:z.record(z.string(),z.unknown()).optional(),"custom-symbols":z.record(z.string(),i).optional()}).passthrough(),k=new Set(["version","project","discipline","agent-provider","agent-guidelines","symbol-system","tag-bank","component_types","logging","purpose-required","conventions","workspace","limits","ai-agent","context","probe","metrics","states","custom-symbols","docs","features","enforcement","model-resolution"]);function x(l){let s=[],e=[],t;try{t=r.load(l);}catch(n){return {valid:false,warnings:[],errors:[`YAML parse error: ${n.message}`]}}if(!t||typeof t!="object")return {valid:false,warnings:[],errors:["Config must be a YAML object"]};for(let n of Object.keys(t))k.has(n)||s.push(`Unrecognized config key: "${n}"`);let a=v.safeParse(t);if(!a.success)for(let n of a.error.issues){let c=n.path.join(".");e.push(`${c}: ${n.message}`);}return {valid:e.length===0,warnings:s,errors:e}}export{v as paradigmConfigSchema,x as validateConfig};
@@ -2,5 +2,5 @@
2
2
  import {a}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as h from'fs';import*as f from'path';import*as v from'js-yaml';var w=["CLAUDE.md",".cursorrules","AGENTS.md"];function k(i){let e=[];for(let r of w){let t=f.join(i,r);if(h.existsSync(t)){let l=h.readFileSync(t,"utf8");e.push({name:r,content:l,lines:l.split(`
3
3
  `)});}}return e}function C(i,e){let r=new Set,t=new Set(["node_modules","dist",".git",".paradigm","coverage","build","__pycache__","target",".next",".nuxt"]);function l(n){let u;try{u=h.readdirSync(n,{withFileTypes:!0});}catch{return}let a=false;for(let o of u){if(t.has(o.name))continue;let s=f.join(n,o.name);if(o.isDirectory())l(s);else if(o.isFile()){let c=f.extname(o.name);e.includes(c)&&(a=true);}}a&&r.add(n);}return l(i),r}function S(i,e){let r=i;for(;;){if(h.existsSync(f.join(r,".purpose")))return true;if(r===e)break;let t=f.dirname(r);if(t===r)break;r=t;}return false}async function $(i){let e=[],r=k(i);if(r.length===0)return e.push({check:"stale-references",status:"advisory",message:"No instruction files found (CLAUDE.md, .cursorrules, AGENTS.md)"}),e;let t=/(?:^|\s|`|"|')([.a-zA-Z0-9_-]+(?:\/[.a-zA-Z0-9_*{}-]+)+\/?)/gm,l=/(?:^|\s|`|"|')([a-zA-Z0-9_-]+\.(?:ts|js|py|rs|go|yaml|yml|json|md|toml))\b/gm,n=[],u=new Set;for(let a of r){let o=[],s;for(t.lastIndex=0;(s=t.exec(a.content))!==null;)o.push(s[1]);for(l.lastIndex=0;(s=l.exec(a.content))!==null;)o.push(s[1]);for(let c of o){let d=c.replace(/\/+$/,"").replace(/`/g,"");if(d.startsWith("http")||d.startsWith("//")||d.includes("*")||d.includes("{")||d.startsWith("paradigm://")||d.startsWith("node_modules/")||u.has(d))continue;u.add(d);let p=/\.(ts|js|py|rs|go|yaml|yml|json|md|toml)(?:\/|$)/.test(d),g=/^(\.|src\/|packages\/|lib\/|app\/|docs\/)/.test(d);if(!p&&!g)continue;let y=f.join(i,d);h.existsSync(y)||n.push(`${a.name}: ${d}`);}}return n.length>0?e.push({check:"stale-references",status:"error",message:`${n.length} dead path reference${n.length>1?"s":""} in instruction files`,details:n,fix:"Update or remove dead paths from instruction files"}):e.push({check:"stale-references",status:"ok",message:"All referenced paths exist"}),e}async function A(i){let e=[],r=k(i),t=f.join(i,".paradigm","config.yaml");if(h.existsSync(t)){let o=h.readFileSync(t,"utf8");r.push({name:"config.yaml",content:o,lines:o.split(`
4
4
  `)});}if(r.length===0)return e.push({check:"convention-contradictions",status:"ok",message:"No instruction files to check"}),e;let l=[],n=[],u=[[/\bcamelCase\b/i,"camelCase"],[/\bkebab[- ]?case\b/i,"kebab-case"],[/\bsnake[_ ]?case\b/i,"snake_case"],[/\bPascalCase\b/i,"PascalCase"]];for(let o of r)for(let s=0;s<o.lines.length;s++){let c=o.lines[s];for(let[d,p]of u)if(d.test(c)){let g=c.match(/\b(file|variable|function|class|component|symbol|directory|folder|module|import)\s*nam/i),y=g?g[1].toLowerCase():"general";l.push({scope:y,directive:p,source:o.name,line:s+1});}}let a=new Map;for(let o of l){let s=a.get(o.scope)||[];s.push(o),a.set(o.scope,s);}for(let[o,s]of a){let c=new Set(s.map(p=>p.directive)),d=[["camelCase","kebab-case"],["camelCase","snake_case"],["kebab-case","snake_case"]];for(let[p,g]of d)if(c.has(p)&&c.has(g)){let y=s.find(b=>b.directive===p),m=s.find(b=>b.directive===g);n.push(`${o} naming: ${p} (${y.source}:${y.line}) vs ${g} (${m.source}:${m.line})`);}}return n.length>0?e.push({check:"convention-contradictions",status:"warn",message:`${n.length} potential convention contradiction${n.length>1?"s":""}`,details:n,fix:"Reconcile conflicting naming/style conventions in instruction files"}):e.push({check:"convention-contradictions",status:"ok",message:"No contradictions detected"}),e}var R=new Set(["typescript","tsup","vitest","eslint","prettier","rimraf","tsx","ts-node","nodemon","concurrently","husky","lint-staged","unbuild","turbo","lerna","changesets"]),P=["@types/","@typescript-eslint/","@eslint/"];async function j(i){let e=[],r=f.join(i,"package.json");if(!h.existsSync(r))return e.push({check:"undocumented-stack",status:"ok",message:"No package.json found (not a JS/TS project or monorepo root)"}),e;let t;try{t=JSON.parse(h.readFileSync(r,"utf8"));}catch{return e.push({check:"undocumented-stack",status:"advisory",message:"Could not parse package.json"}),e}let l=new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.devDependencies||{})]),n=[];for(let s of l)R.has(s)||P.some(c=>s.startsWith(c))||n.push(s);if(n.length===0)return e.push({check:"undocumented-stack",status:"ok",message:"No major dependencies to document"}),e;let a=k(i).map(s=>s.content).join(`
5
- `).toLowerCase(),o=[];for(let s of n){let c=s.toLowerCase(),d=s.includes("/")?s.split("/").pop():s;!a.includes(c)&&!a.includes(d.toLowerCase())&&o.push(s);}return o.length>0?e.push({check:"undocumented-stack",status:"advisory",message:`${o.length} dependenc${o.length>1?"ies":"y"} not mentioned in instruction files`,details:o.slice(0,20),fix:"Consider documenting major dependencies in CLAUDE.md for AI context"}):e.push({check:"undocumented-stack",status:"ok",message:"All major dependencies are documented"}),e}async function E(i){let e=[],t=C(i,[".ts",".js",".py",".rs",".go",".tsx",".jsx"]);if(t.size===0)return e.push({check:"purpose-coverage",status:"ok",message:"No source directories found"}),e;let l=0,n=[];for(let o of t)if(S(o,i))l++;else {let s=f.relative(i,o);n.push(s);}let u=t.size,a=Math.round(l/u*100);return a<80?e.push({check:"purpose-coverage",status:"warn",message:`${a}% purpose coverage (${l}/${u} source directories) \u2014 below 80% threshold`,details:n.slice(0,15),fix:"Create .purpose files in uncovered source directories"}):e.push({check:"purpose-coverage",status:"ok",message:`${a}% purpose coverage (${l}/${u} source directories)`}),e}async function N(i){let e=[],r=f.join(i,".paradigm","scan-index.json");if(!h.existsSync(r))return e.push({check:"orphaned-symbols",status:"advisory",message:"No scan-index.json found \u2014 run paradigm scan first"}),e;let t;try{t=JSON.parse(h.readFileSync(r,"utf8"));}catch{return e.push({check:"orphaned-symbols",status:"advisory",message:"Could not parse scan-index.json"}),e}let l=["components","gates","signals","flows","aspects"],n=new Map,u=new Set;for(let s of l){let c=t[s];if(!(!c||typeof c!="object")){for(let[d,p]of Object.entries(c))if(p.symbol&&n.set(p.symbol,d),p.related&&Array.isArray(p.related))for(let g of p.related)u.add(g);}}let a=new Set;for(let s of l){let c=t[s];if(!(!c||typeof c!="object"))for(let[,d]of Object.entries(c))d.symbol&&d.related&&Array.isArray(d.related)&&d.related.length>0&&a.add(d.symbol);}let o=[];for(let[s]of n)!u.has(s)&&!a.has(s)&&o.push(s);return o.length>0?e.push({check:"orphaned-symbols",status:"advisory",message:`${o.length} isolated symbol${o.length>1?"s":""} (no connections to other symbols)`,details:o.slice(0,20),fix:"Wire isolated symbols into features or remove them from .purpose files"}):e.push({check:"orphaned-symbols",status:"ok",message:"All symbols are connected"}),e}async function F(i){let e=[],r=f.join(i,"portal.yaml");if(!h.existsSync(r))return e.push({check:"stale-portal",status:"ok",message:"No portal.yaml found (no routes to check)"}),e;let t;try{t=v.load(h.readFileSync(r,"utf8"));}catch{return e.push({check:"stale-portal",status:"error",message:"Could not parse portal.yaml"}),e}if(!t?.routes||typeof t.routes!="object")return e.push({check:"stale-portal",status:"ok",message:"No routes defined in portal.yaml"}),e;let l=Object.keys(t.routes),n=[],u=[".ts",".js",".py",".rs",".go"],a=[];function o(c){let d=new Set(["node_modules","dist",".git",".paradigm","coverage","build","target"]);try{let p=h.readdirSync(c,{withFileTypes:!0});for(let g of p){if(d.has(g.name))continue;let y=f.join(c,g.name);if(g.isDirectory())o(y);else if(g.isFile()){let m=f.extname(g.name);u.includes(m)&&a.push(y);}}}catch{}}o(i);let s=a.map(c=>({full:c,name:f.basename(c,f.extname(c)).toLowerCase(),relPath:f.relative(i,c).toLowerCase()}));for(let c of l){let p=c.replace(/^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)\s+/i,"").split("/").filter(m=>m&&!m.startsWith(":")&&m!=="api");if(p.length===0)continue;let g=p[0].toLowerCase();s.some(m=>m.name.includes(g)||m.relPath.includes(g))||n.push(c);}return n.length>0?e.push({check:"stale-portal",status:"error",message:`${n.length} portal route${n.length>1?"s":""} with no matching implementation file`,details:n,fix:"Implement missing route handlers or remove stale routes from portal.yaml"}):e.push({check:"stale-portal",status:"ok",message:`All ${l.length} portal routes have matching implementation files`}),e}var _=[{pattern:/\btry to\b/i,label:"try to"},{pattern:/\bmaybe\b/i,label:"maybe"},{pattern:/\bif possible\b/i,label:"if possible"},{pattern:/\bconsider\b(?!-handoff)/i,label:"consider"},{pattern:/\bmight want to\b/i,label:"might want to"},{pattern:/\byou could\b/i,label:"you could"},{pattern:/\boptionally\b/i,label:"optionally"}];async function T(i){let e=[],r=k(i);if(r.length===0)return e.push({check:"instruction-vagueness",status:"ok",message:"No instruction files to check"}),e;let t=[];for(let l of r)for(let n=0;n<l.lines.length;n++){let u=l.lines[n];if(!u.trimStart().startsWith("```")&&!u.trim().startsWith("|---")){for(let{pattern:a,label:o}of _)if(a.test(u)){let s=u.trim(),c=s.length>80?s.slice(0,77)+"...":s;t.push(`${l.name}:${n+1} \u2014 "${o}" \u2014 ${c}`);}}}return t.length>0?e.push({check:"instruction-vagueness",status:"advisory",message:`${t.length} vague phrase${t.length>1?"s":""} in instruction files`,details:t.slice(0,20),fix:"Replace vague language with clear, actionable directives"}):e.push({check:"instruction-vagueness",status:"ok",message:"No vague language detected"}),e}async function I(i){let e=[],r=f.join(i,".paradigm","config.yaml");if(!h.existsSync(r))return e.push({check:"config-schema-validation",status:"advisory",message:"No .paradigm/config.yaml found"}),e;try{let t=h.readFileSync(r,"utf8"),{validateConfig:l}=await import('./config-schema-GUQY2QN7.js'),n=l(t),u=[];for(let a of n.errors)u.push(`Error: ${a}`);for(let a of n.warnings)u.push(`Warning: ${a}`);n.errors.length>0?e.push({check:"config-schema-validation",status:"error",message:`${n.errors.length} schema error${n.errors.length>1?"s":""} in config.yaml`,details:u,fix:"Fix invalid fields in .paradigm/config.yaml"}):n.warnings.length>0?e.push({check:"config-schema-validation",status:"warn",message:`${n.warnings.length} unrecognized key${n.warnings.length>1?"s":""} in config.yaml`,details:u,fix:"Check for typos in .paradigm/config.yaml field names"}):e.push({check:"config-schema-validation",status:"ok",message:"config.yaml schema is valid"});}catch(t){e.push({check:"config-schema-validation",status:"error",message:`Could not validate config.yaml: ${t.message}`});}return e}async function L(i){let e=[],r=[];function t(a){let o=new Set(["node_modules","dist",".git",".paradigm","coverage","build"]);try{let s=h.readdirSync(a,{withFileTypes:!0});for(let c of s){if(o.has(c.name))continue;let d=f.join(a,c.name);c.isDirectory()?t(d):c.name===".purpose"&&r.push(d);}}catch{}}if(t(i),r.length===0)return e.push({check:"purpose-file-health",status:"ok",message:"No .purpose files to check"}),e;let l=[],n=0,u="";for(let a of r)try{let s=h.readFileSync(a,"utf8").split(`
5
+ `).toLowerCase(),o=[];for(let s of n){let c=s.toLowerCase(),d=s.includes("/")?s.split("/").pop():s;!a.includes(c)&&!a.includes(d.toLowerCase())&&o.push(s);}return o.length>0?e.push({check:"undocumented-stack",status:"advisory",message:`${o.length} dependenc${o.length>1?"ies":"y"} not mentioned in instruction files`,details:o.slice(0,20),fix:"Consider documenting major dependencies in CLAUDE.md for AI context"}):e.push({check:"undocumented-stack",status:"ok",message:"All major dependencies are documented"}),e}async function E(i){let e=[],t=C(i,[".ts",".js",".py",".rs",".go",".tsx",".jsx"]);if(t.size===0)return e.push({check:"purpose-coverage",status:"ok",message:"No source directories found"}),e;let l=0,n=[];for(let o of t)if(S(o,i))l++;else {let s=f.relative(i,o);n.push(s);}let u=t.size,a=Math.round(l/u*100);return a<80?e.push({check:"purpose-coverage",status:"warn",message:`${a}% purpose coverage (${l}/${u} source directories) \u2014 below 80% threshold`,details:n.slice(0,15),fix:"Create .purpose files in uncovered source directories"}):e.push({check:"purpose-coverage",status:"ok",message:`${a}% purpose coverage (${l}/${u} source directories)`}),e}async function N(i){let e=[],r=f.join(i,".paradigm","scan-index.json");if(!h.existsSync(r))return e.push({check:"orphaned-symbols",status:"advisory",message:"No scan-index.json found \u2014 run paradigm scan first"}),e;let t;try{t=JSON.parse(h.readFileSync(r,"utf8"));}catch{return e.push({check:"orphaned-symbols",status:"advisory",message:"Could not parse scan-index.json"}),e}let l=["components","gates","signals","flows","aspects"],n=new Map,u=new Set;for(let s of l){let c=t[s];if(!(!c||typeof c!="object")){for(let[d,p]of Object.entries(c))if(p.symbol&&n.set(p.symbol,d),p.related&&Array.isArray(p.related))for(let g of p.related)u.add(g);}}let a=new Set;for(let s of l){let c=t[s];if(!(!c||typeof c!="object"))for(let[,d]of Object.entries(c))d.symbol&&d.related&&Array.isArray(d.related)&&d.related.length>0&&a.add(d.symbol);}let o=[];for(let[s]of n)!u.has(s)&&!a.has(s)&&o.push(s);return o.length>0?e.push({check:"orphaned-symbols",status:"advisory",message:`${o.length} isolated symbol${o.length>1?"s":""} (no connections to other symbols)`,details:o.slice(0,20),fix:"Wire isolated symbols into features or remove them from .purpose files"}):e.push({check:"orphaned-symbols",status:"ok",message:"All symbols are connected"}),e}async function F(i){let e=[],r=f.join(i,"portal.yaml");if(!h.existsSync(r))return e.push({check:"stale-portal",status:"ok",message:"No portal.yaml found (no routes to check)"}),e;let t;try{t=v.load(h.readFileSync(r,"utf8"));}catch{return e.push({check:"stale-portal",status:"error",message:"Could not parse portal.yaml"}),e}if(!t?.routes||typeof t.routes!="object")return e.push({check:"stale-portal",status:"ok",message:"No routes defined in portal.yaml"}),e;let l=Object.keys(t.routes),n=[],u=[".ts",".js",".py",".rs",".go"],a=[];function o(c){let d=new Set(["node_modules","dist",".git",".paradigm","coverage","build","target"]);try{let p=h.readdirSync(c,{withFileTypes:!0});for(let g of p){if(d.has(g.name))continue;let y=f.join(c,g.name);if(g.isDirectory())o(y);else if(g.isFile()){let m=f.extname(g.name);u.includes(m)&&a.push(y);}}}catch{}}o(i);let s=a.map(c=>({full:c,name:f.basename(c,f.extname(c)).toLowerCase(),relPath:f.relative(i,c).toLowerCase()}));for(let c of l){let p=c.replace(/^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)\s+/i,"").split("/").filter(m=>m&&!m.startsWith(":")&&m!=="api");if(p.length===0)continue;let g=p[0].toLowerCase();s.some(m=>m.name.includes(g)||m.relPath.includes(g))||n.push(c);}return n.length>0?e.push({check:"stale-portal",status:"error",message:`${n.length} portal route${n.length>1?"s":""} with no matching implementation file`,details:n,fix:"Implement missing route handlers or remove stale routes from portal.yaml"}):e.push({check:"stale-portal",status:"ok",message:`All ${l.length} portal routes have matching implementation files`}),e}var _=[{pattern:/\btry to\b/i,label:"try to"},{pattern:/\bmaybe\b/i,label:"maybe"},{pattern:/\bif possible\b/i,label:"if possible"},{pattern:/\bconsider\b(?!-handoff)/i,label:"consider"},{pattern:/\bmight want to\b/i,label:"might want to"},{pattern:/\byou could\b/i,label:"you could"},{pattern:/\boptionally\b/i,label:"optionally"}];async function T(i){let e=[],r=k(i);if(r.length===0)return e.push({check:"instruction-vagueness",status:"ok",message:"No instruction files to check"}),e;let t=[];for(let l of r)for(let n=0;n<l.lines.length;n++){let u=l.lines[n];if(!u.trimStart().startsWith("```")&&!u.trim().startsWith("|---")){for(let{pattern:a,label:o}of _)if(a.test(u)){let s=u.trim(),c=s.length>80?s.slice(0,77)+"...":s;t.push(`${l.name}:${n+1} \u2014 "${o}" \u2014 ${c}`);}}}return t.length>0?e.push({check:"instruction-vagueness",status:"advisory",message:`${t.length} vague phrase${t.length>1?"s":""} in instruction files`,details:t.slice(0,20),fix:"Replace vague language with clear, actionable directives"}):e.push({check:"instruction-vagueness",status:"ok",message:"No vague language detected"}),e}async function I(i){let e=[],r=f.join(i,".paradigm","config.yaml");if(!h.existsSync(r))return e.push({check:"config-schema-validation",status:"advisory",message:"No .paradigm/config.yaml found"}),e;try{let t=h.readFileSync(r,"utf8"),{validateConfig:l}=await import('./config-schema-FLHRVZMI.js'),n=l(t),u=[];for(let a of n.errors)u.push(`Error: ${a}`);for(let a of n.warnings)u.push(`Warning: ${a}`);n.errors.length>0?e.push({check:"config-schema-validation",status:"error",message:`${n.errors.length} schema error${n.errors.length>1?"s":""} in config.yaml`,details:u,fix:"Fix invalid fields in .paradigm/config.yaml"}):n.warnings.length>0?e.push({check:"config-schema-validation",status:"warn",message:`${n.warnings.length} unrecognized key${n.warnings.length>1?"s":""} in config.yaml`,details:u,fix:"Check for typos in .paradigm/config.yaml field names"}):e.push({check:"config-schema-validation",status:"ok",message:"config.yaml schema is valid"});}catch(t){e.push({check:"config-schema-validation",status:"error",message:`Could not validate config.yaml: ${t.message}`});}return e}async function L(i){let e=[],r=[];function t(a){let o=new Set(["node_modules","dist",".git",".paradigm","coverage","build"]);try{let s=h.readdirSync(a,{withFileTypes:!0});for(let c of s){if(o.has(c.name))continue;let d=f.join(a,c.name);c.isDirectory()?t(d):c.name===".purpose"&&r.push(d);}}catch{}}if(t(i),r.length===0)return e.push({check:"purpose-file-health",status:"ok",message:"No .purpose files to check"}),e;let l=[],n=0,u="";for(let a of r)try{let s=h.readFileSync(a,"utf8").split(`
6
6
  `).length;if(s>n&&(n=s,u=f.relative(i,a)),s>500){let c=s>1e3?"!!":"!";l.push(`${c} ${f.relative(i,a)} (${s} lines)`);}}catch{continue}return l.length>0?e.push({check:"purpose-file-health",status:"warn",message:`${l.length} oversized .purpose file${l.length>1?"s":""} (largest: ${u} at ${n} lines)`,details:l,fix:"Split large .purpose files by component type or subdirectory"}):e.push({check:"purpose-file-health",status:"ok",message:`${r.length} .purpose files, all under 500 lines`}),e}async function W(i,e){let r=a.command("doctor:context-audit").start("Running context audit checks"),t=[];t.push(...await $(i)),t.push(...await A(i)),t.push(...await j(i)),t.push(...await E(i)),t.push(...await N(i)),t.push(...await F(i)),t.push(...await T(i)),t.push(...await I(i)),t.push(...await L(i));let l=t.filter(a=>a.status==="error").length,n=t.filter(a=>a.status==="warn").length,u=t.filter(a=>a.status==="advisory").length;return l>0?r.error("Context audit found issues",{errors:l,warnings:n,advisories:u}):r.success("Context audit complete",{warnings:n,advisories:u}),t}export{W as runContextAudit};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {d,a,c as c$1,b}from'./chunk-W7C6FFMO.js';import'./chunk-4TXOVRWD.js';import {c,d as d$1,e as e$1}from'./chunk-JQKKVAAN.js';import'./chunk-5TAVYPOV.js';import*as s from'fs';import*as o from'path';import e from'chalk';import j from'ora';async function D(d$2,a$1){let r=d$2?o.resolve(d$2):process.cwd(),t=o.basename(r),u=o.join(r,".paradigm"),i=j();if(!d(r))if(a$1.init){i.start("Creating .paradigm config...");let n=c(t);s.writeFileSync(u,d$1(n),"utf8"),i.succeed(e.green(".paradigm config created"));}else console.log(e.red(`
2
+ import {d,a,c as c$1,b}from'./chunk-W7C6FFMO.js';import'./chunk-4TXOVRWD.js';import {c,d as d$1,e as e$1}from'./chunk-VIG5LSGZ.js';import'./chunk-5TAVYPOV.js';import*as s from'fs';import*as o from'path';import e from'chalk';import j from'ora';async function D(d$2,a$1){let r=d$2?o.resolve(d$2):process.cwd(),t=o.basename(r),u=o.join(r,".paradigm"),i=j();if(!d(r))if(a$1.init){i.start("Creating .paradigm config...");let n=c(t);s.writeFileSync(u,d$1(n),"utf8"),i.succeed(e.green(".paradigm config created"));}else console.log(e.red(`
3
3
  \u274C No .paradigm file found.`)),console.log(e.gray(`
4
4
  Run with --init to create a default .paradigm config:`)),console.log(e.cyan(` paradigm cursorrules --init
5
5
  `)),process.exit(1);let c$2;try{let n=s.readFileSync(u,"utf8");c$2=e$1(n);}catch(n){let b=n;console.log(e.red(`
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export{g as findDecisionsForSymbol,h as getDecisionSummary,f as loadDecision,e as loadDecisions,a as recordDecision,c as supersedeDecision,b as updateDecision,d as writeCompanionLoreEntry}from'./chunk-Q527BPUF.js';import'./chunk-EK4ZRIFJ.js';import'./chunk-5TAVYPOV.js';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {g,i as i$1}from'./chunk-WS2N27RX.js';import'./chunk-5TAVYPOV.js';import e from'chalk';async function i(n,r){let l=process.cwd(),o=await g(l,n);if(!o){console.error(e.red(`
2
+ import {g,i as i$1}from'./chunk-VNIX5KBT.js';import'./chunk-5TAVYPOV.js';import e from'chalk';async function i(n,r){let l=process.cwd(),o=await g(l,n);if(!o){console.error(e.red(`
3
3
  Entry not found: ${n}
4
4
  `)),process.exitCode=1;return}if(r.dryRun){console.log(e.cyan(`
5
5
  [dry-run] Would delete lore entry:`)),console.log(e.white(` ${o.id} - ${o.title}`)),console.log(e.gray(` Type: ${o.type} | Author: ${o.author} | ${o.timestamp}`)),console.log(e.gray(` Symbols: ${(o.symbols_touched||[]).join(", ")}`)),console.log(e.cyan(`
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {b}from'./chunk-HOBHJPTL.js';import'./chunk-TYWB5IQJ.js';import'./chunk-ORDKEGII.js';import'./chunk-BV5PRPLB.js';import'./chunk-AO7ZSRME.js';import'./chunk-FYDRENK7.js';import'./chunk-EKZDFEJW.js';import'./chunk-4VKSEOXZ.js';import'./chunk-LWAIVOSF.js';import'./chunk-JIXHEBGK.js';import'./chunk-ZJQY5PPP.js';import'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import o from'chalk';async function D(l,f,t){let d=f?a.resolve(f):process.cwd();if(!l){t.json?console.log(JSON.stringify({error:"Orchestration ID required"})):(console.log(o.red(`
2
+ import {b}from'./chunk-IOVHF4SR.js';import'./chunk-TYWB5IQJ.js';import'./chunk-AMLD7IYC.js';import'./chunk-FYDRENK7.js';import'./chunk-HXGYVS2N.js';import'./chunk-TQOT2LBO.js';import'./chunk-EKZDFEJW.js';import'./chunk-LPBCQM5Y.js';import'./chunk-LWAIVOSF.js';import'./chunk-JIXHEBGK.js';import'./chunk-ZJQY5PPP.js';import'./chunk-5TAVYPOV.js';import*as i from'fs';import*as a from'path';import o from'chalk';async function D(l,f,t){let d=f?a.resolve(f):process.cwd();if(!l){t.json?console.log(JSON.stringify({error:"Orchestration ID required"})):(console.log(o.red(`
3
3
  Orchestration ID required.`)),console.log(o.gray(`Usage: paradigm team diff <orchestration-id>
4
4
  `)));return}let e=new b(d).getOrchestration(l);if(!e){t.json?console.log(JSON.stringify({error:"Orchestration not found",id:l})):console.log(o.red(`
5
5
  Orchestration not found: ${l}