@polderlabs/bizar 10.0.7 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/README.md +0 -2
  2. package/bizar-dash/dist/assets/{ActivityFeed-Da-JCrE6.js → ActivityFeed-JjmOY2AQ.js} +1 -1
  3. package/bizar-dash/dist/assets/{ActivityFeed-Da-JCrE6.js.map → ActivityFeed-JjmOY2AQ.js.map} +1 -1
  4. package/bizar-dash/dist/assets/{ActivityView-nIRsSETb.js → ActivityView-BIIMvGWo.js} +1 -1
  5. package/bizar-dash/dist/assets/{ActivityView-nIRsSETb.js.map → ActivityView-BIIMvGWo.js.map} +1 -1
  6. package/bizar-dash/dist/assets/{AdminView-DP1NMxmG.js → AdminView-DRidJtkq.js} +1 -1
  7. package/bizar-dash/dist/assets/{AdminView-DP1NMxmG.js.map → AdminView-DRidJtkq.js.map} +1 -1
  8. package/bizar-dash/dist/assets/{AgentActivity-lSPkOr-O.js → AgentActivity-79l4SBMC.js} +1 -1
  9. package/bizar-dash/dist/assets/{AgentActivity-lSPkOr-O.js.map → AgentActivity-79l4SBMC.js.map} +1 -1
  10. package/bizar-dash/dist/assets/{AgentsView-BIWGkz7w.js → AgentsView-0vT4uPSc.js} +1 -1
  11. package/bizar-dash/dist/assets/{AgentsView-BIWGkz7w.js.map → AgentsView-0vT4uPSc.js.map} +1 -1
  12. package/bizar-dash/dist/assets/{Alert-DN0UysMg.js → Alert-CG5q_s75.js} +1 -1
  13. package/bizar-dash/dist/assets/{Alert-DN0UysMg.js.map → Alert-CG5q_s75.js.map} +1 -1
  14. package/bizar-dash/dist/assets/ArtifactsView-DM8ZmpR9.js +21 -0
  15. package/bizar-dash/dist/assets/ArtifactsView-DM8ZmpR9.js.map +1 -0
  16. package/bizar-dash/dist/assets/{AuthView-DW5cs7ma.js → AuthView-BveN94MC.js} +1 -1
  17. package/bizar-dash/dist/assets/{AuthView-DW5cs7ma.js.map → AuthView-BveN94MC.js.map} +1 -1
  18. package/bizar-dash/dist/assets/{Avatar-DZPv9pvd.js → Avatar-ulUPIYTd.js} +1 -1
  19. package/bizar-dash/dist/assets/{Avatar-DZPv9pvd.js.map → Avatar-ulUPIYTd.js.map} +1 -1
  20. package/bizar-dash/dist/assets/{BackgroundJobsView-D8O-EyMD.js → BackgroundJobsView-BWErhqFo.js} +1 -1
  21. package/bizar-dash/dist/assets/{BackgroundJobsView-D8O-EyMD.js.map → BackgroundJobsView-BWErhqFo.js.map} +1 -1
  22. package/bizar-dash/dist/assets/{BackupView-uwXkhxOV.js → BackupView-CnBjzG9N.js} +1 -1
  23. package/bizar-dash/dist/assets/{BackupView-uwXkhxOV.js.map → BackupView-CnBjzG9N.js.map} +1 -1
  24. package/bizar-dash/dist/assets/{Card-Tyboihu7.js → Card-B0imhxMk.js} +1 -1
  25. package/bizar-dash/dist/assets/{Card-Tyboihu7.js.map → Card-B0imhxMk.js.map} +1 -1
  26. package/bizar-dash/dist/assets/{ChatView-DRBHzgay.js → ChatView-D6zGytzx.js} +1 -1
  27. package/bizar-dash/dist/assets/{ChatView-DRBHzgay.js.map → ChatView-D6zGytzx.js.map} +1 -1
  28. package/bizar-dash/dist/assets/{Chip-BrXIlR9w.js → Chip-wwZSGwLE.js} +1 -1
  29. package/bizar-dash/dist/assets/{Chip-BrXIlR9w.js.map → Chip-wwZSGwLE.js.map} +1 -1
  30. package/bizar-dash/dist/assets/{ClaudeSessionsView-Ck62jaOr.js → ClaudeSessionsView-DK1sOLhi.js} +1 -1
  31. package/bizar-dash/dist/assets/{ClaudeSessionsView-Ck62jaOr.js.map → ClaudeSessionsView-DK1sOLhi.js.map} +1 -1
  32. package/bizar-dash/dist/assets/{ClipboardView-DfND6xL6.js → ClipboardView-CZ2lYPr0.js} +1 -1
  33. package/bizar-dash/dist/assets/{ClipboardView-DfND6xL6.js.map → ClipboardView-CZ2lYPr0.js.map} +1 -1
  34. package/bizar-dash/dist/assets/{ConfigView-DjJmSrOJ.js → ConfigView-D-zT9eNA.js} +1 -1
  35. package/bizar-dash/dist/assets/{ConfigView-DjJmSrOJ.js.map → ConfigView-D-zT9eNA.js.map} +1 -1
  36. package/bizar-dash/dist/assets/{DiagnosticsView-CKgItf0J.js → DiagnosticsView-BocV68Lb.js} +1 -1
  37. package/bizar-dash/dist/assets/{DiagnosticsView-CKgItf0J.js.map → DiagnosticsView-BocV68Lb.js.map} +1 -1
  38. package/bizar-dash/dist/assets/{DialogsView-DHYF8dE1.js → DialogsView-BVjPI5x7.js} +1 -1
  39. package/bizar-dash/dist/assets/{DialogsView-DHYF8dE1.js.map → DialogsView-BVjPI5x7.js.map} +1 -1
  40. package/bizar-dash/dist/assets/{DoctorView-DDLHrSKk.js → DoctorView-84gJcZwM.js} +1 -1
  41. package/bizar-dash/dist/assets/{DoctorView-DDLHrSKk.js.map → DoctorView-84gJcZwM.js.map} +1 -1
  42. package/bizar-dash/dist/assets/{EmptyState-DZ2ouKwd.js → EmptyState-BjgVOrcO.js} +1 -1
  43. package/bizar-dash/dist/assets/{EmptyState-DZ2ouKwd.js.map → EmptyState-BjgVOrcO.js.map} +1 -1
  44. package/bizar-dash/dist/assets/{EnvVarsView-D1cx83mB.js → EnvVarsView-BJ2TEzF7.js} +1 -1
  45. package/bizar-dash/dist/assets/{EnvVarsView-D1cx83mB.js.map → EnvVarsView-BJ2TEzF7.js.map} +1 -1
  46. package/bizar-dash/dist/assets/{ErrorState-DwwJ2-Jq.js → ErrorState-BE3WBFqF.js} +1 -1
  47. package/bizar-dash/dist/assets/{ErrorState-DwwJ2-Jq.js.map → ErrorState-BE3WBFqF.js.map} +1 -1
  48. package/bizar-dash/dist/assets/{EvalView-C9aYixXW.js → EvalView-BJJ2P-kK.js} +1 -1
  49. package/bizar-dash/dist/assets/{EvalView-C9aYixXW.js.map → EvalView-BJJ2P-kK.js.map} +1 -1
  50. package/bizar-dash/dist/assets/{GoalsView-DZa_mGmh.js → GoalsView-pwROHApi.js} +1 -1
  51. package/bizar-dash/dist/assets/{GoalsView-DZa_mGmh.js.map → GoalsView-pwROHApi.js.map} +1 -1
  52. package/bizar-dash/dist/assets/{Grid-CiRyhAgR.js → Grid-qcvbhx6e.js} +1 -1
  53. package/bizar-dash/dist/assets/{Grid-CiRyhAgR.js.map → Grid-qcvbhx6e.js.map} +1 -1
  54. package/bizar-dash/dist/assets/{HeadroomView-CNc-TI7u.js → HeadroomView-D1UiTYbt.js} +1 -1
  55. package/bizar-dash/dist/assets/{HeadroomView-CNc-TI7u.js.map → HeadroomView-D1UiTYbt.js.map} +1 -1
  56. package/bizar-dash/dist/assets/{HistoryView-Dv7aPxJE.js → HistoryView-C7SSOLJA.js} +1 -1
  57. package/bizar-dash/dist/assets/{HistoryView-Dv7aPxJE.js.map → HistoryView-C7SSOLJA.js.map} +1 -1
  58. package/bizar-dash/dist/assets/{Input-BbFUDQnS.js → Input-Bgzxf_Hu.js} +1 -1
  59. package/bizar-dash/dist/assets/{Input-BbFUDQnS.js.map → Input-Bgzxf_Hu.js.map} +1 -1
  60. package/bizar-dash/dist/assets/{LibrariesView-DBQ83TNa.js → LibrariesView-CbFFksox.js} +1 -1
  61. package/bizar-dash/dist/assets/{LibrariesView-DBQ83TNa.js.map → LibrariesView-CbFFksox.js.map} +1 -1
  62. package/bizar-dash/dist/assets/{LightRAGView-JYpE5u9p.js → LightRAGView-BqDrJbRq.js} +1 -1
  63. package/bizar-dash/dist/assets/{LightRAGView-JYpE5u9p.js.map → LightRAGView-BqDrJbRq.js.map} +1 -1
  64. package/bizar-dash/dist/assets/{ListHeader-BGjm11Z0.js → ListHeader-TjPJrUfY.js} +1 -1
  65. package/bizar-dash/dist/assets/{ListHeader-BGjm11Z0.js.map → ListHeader-TjPJrUfY.js.map} +1 -1
  66. package/bizar-dash/dist/assets/{MemoryView-CnOP2MvM.js → MemoryView-BlTeHLhX.js} +1 -1
  67. package/bizar-dash/dist/assets/{MemoryView-CnOP2MvM.js.map → MemoryView-BlTeHLhX.js.map} +1 -1
  68. package/bizar-dash/dist/assets/{MiscView-BBcpUbZZ.js → MiscView-B8QY82Pm.js} +1 -1
  69. package/bizar-dash/dist/assets/{MiscView-BBcpUbZZ.js.map → MiscView-B8QY82Pm.js.map} +1 -1
  70. package/bizar-dash/dist/assets/{ModsView-CU4cAmIz.js → ModsView-CvW1OWts.js} +1 -1
  71. package/bizar-dash/dist/assets/{ModsView-CU4cAmIz.js.map → ModsView-CvW1OWts.js.map} +1 -1
  72. package/bizar-dash/dist/assets/{NotificationsView-BYffvthq.js → NotificationsView-CsBt5U7x.js} +1 -1
  73. package/bizar-dash/dist/assets/{NotificationsView-BYffvthq.js.map → NotificationsView-CsBt5U7x.js.map} +1 -1
  74. package/bizar-dash/dist/assets/{ObsidianView-D3bI0row.js → ObsidianView-BCTejEj2.js} +1 -1
  75. package/bizar-dash/dist/assets/{ObsidianView-D3bI0row.js.map → ObsidianView-BCTejEj2.js.map} +1 -1
  76. package/bizar-dash/dist/assets/{OverviewView-0tq8f-Y0.js → OverviewView-BsuPxwnB.js} +1 -1
  77. package/bizar-dash/dist/assets/{OverviewView-0tq8f-Y0.js.map → OverviewView-BsuPxwnB.js.map} +1 -1
  78. package/bizar-dash/dist/assets/{ProgressBar-B-h60LKA.js → ProgressBar-DlZTETEn.js} +1 -1
  79. package/bizar-dash/dist/assets/{ProgressBar-B-h60LKA.js.map → ProgressBar-DlZTETEn.js.map} +1 -1
  80. package/bizar-dash/dist/assets/{ProjectsView-DhX5lzHS.js → ProjectsView-Soxtmpet.js} +1 -1
  81. package/bizar-dash/dist/assets/{ProjectsView-DhX5lzHS.js.map → ProjectsView-Soxtmpet.js.map} +1 -1
  82. package/bizar-dash/dist/assets/{ProvidersView-CJMX7jm9.js → ProvidersView-DaCEV9pM.js} +1 -1
  83. package/bizar-dash/dist/assets/{ProvidersView-CJMX7jm9.js.map → ProvidersView-DaCEV9pM.js.map} +1 -1
  84. package/bizar-dash/dist/assets/{SchedulesView-CcwDQ9Nm.js → SchedulesView-DY2ByBj_.js} +1 -1
  85. package/bizar-dash/dist/assets/{SchedulesView-CcwDQ9Nm.js.map → SchedulesView-DY2ByBj_.js.map} +1 -1
  86. package/bizar-dash/dist/assets/{Select-Cw7Qtz2M.js → Select-Dbd88_n8.js} +1 -1
  87. package/bizar-dash/dist/assets/{Select-Cw7Qtz2M.js.map → Select-Dbd88_n8.js.map} +1 -1
  88. package/bizar-dash/dist/assets/{SettingsRow-DgsgbPSI.js → SettingsRow-CLMNd434.js} +1 -1
  89. package/bizar-dash/dist/assets/{SettingsRow-DgsgbPSI.js.map → SettingsRow-CLMNd434.js.map} +1 -1
  90. package/bizar-dash/dist/assets/{SettingsView-DTAFdKyK.js → SettingsView-b24oFq9x.js} +1 -1
  91. package/bizar-dash/dist/assets/{SettingsView-DTAFdKyK.js.map → SettingsView-b24oFq9x.js.map} +1 -1
  92. package/bizar-dash/dist/assets/{Sheet-DH-WNJ3Y.js → Sheet-DnDid58j.js} +1 -1
  93. package/bizar-dash/dist/assets/{Sheet-DH-WNJ3Y.js.map → Sheet-DnDid58j.js.map} +1 -1
  94. package/bizar-dash/dist/assets/{Slider-DXbJuQ7y.js → Slider-BJCvKI1I.js} +1 -1
  95. package/bizar-dash/dist/assets/{Slider-DXbJuQ7y.js.map → Slider-BJCvKI1I.js.map} +1 -1
  96. package/bizar-dash/dist/assets/{Sparkline-CYtAn82j.js → Sparkline-ktqQLdyb.js} +1 -1
  97. package/bizar-dash/dist/assets/{Sparkline-CYtAn82j.js.map → Sparkline-ktqQLdyb.js.map} +1 -1
  98. package/bizar-dash/dist/assets/{Switch-BItGrPqr.js → Switch-CwXfsDii.js} +1 -1
  99. package/bizar-dash/dist/assets/{Switch-BItGrPqr.js.map → Switch-CwXfsDii.js.map} +1 -1
  100. package/bizar-dash/dist/assets/{TasksView-i5tm6CkX.js → TasksView-BHmpzFCf.js} +1 -1
  101. package/bizar-dash/dist/assets/{TasksView-i5tm6CkX.js.map → TasksView-BHmpzFCf.js.map} +1 -1
  102. package/bizar-dash/dist/assets/{Textarea-qYDf3yds.js → Textarea-BzIAwSlp.js} +1 -1
  103. package/bizar-dash/dist/assets/{Textarea-qYDf3yds.js.map → Textarea-BzIAwSlp.js.map} +1 -1
  104. package/bizar-dash/dist/assets/{UpdateView-Xln-ej26.js → UpdateView-CSmX9NN0.js} +1 -1
  105. package/bizar-dash/dist/assets/{UpdateView-Xln-ej26.js.map → UpdateView-CSmX9NN0.js.map} +1 -1
  106. package/bizar-dash/dist/assets/{UsageView-BGuZSUZ6.js → UsageView-COyr_Gfi.js} +1 -1
  107. package/bizar-dash/dist/assets/{UsageView-BGuZSUZ6.js.map → UsageView-COyr_Gfi.js.map} +1 -1
  108. package/bizar-dash/dist/assets/{ViewHeader-BqIPVKuG.js → ViewHeader-BzYZ3m-e.js} +1 -1
  109. package/bizar-dash/dist/assets/{ViewHeader-BqIPVKuG.js.map → ViewHeader-BzYZ3m-e.js.map} +1 -1
  110. package/bizar-dash/dist/assets/{VoiceView-CWUOCQs_.js → VoiceView-D33_xG5t.js} +1 -1
  111. package/bizar-dash/dist/assets/{VoiceView-CWUOCQs_.js.map → VoiceView-D33_xG5t.js.map} +1 -1
  112. package/bizar-dash/dist/assets/{brain-fsBSDl2g.js → brain-CM-Vls8r.js} +1 -1
  113. package/bizar-dash/dist/assets/{brain-fsBSDl2g.js.map → brain-CM-Vls8r.js.map} +1 -1
  114. package/bizar-dash/dist/assets/{calendar-DsHTZoCU.js → calendar-C0lgZk69.js} +1 -1
  115. package/bizar-dash/dist/assets/{calendar-DsHTZoCU.js.map → calendar-C0lgZk69.js.map} +1 -1
  116. package/bizar-dash/dist/assets/{circle-CqSxqqeJ.js → circle-Bx_hQEBC.js} +1 -1
  117. package/bizar-dash/dist/assets/{circle-CqSxqqeJ.js.map → circle-Bx_hQEBC.js.map} +1 -1
  118. package/bizar-dash/dist/assets/{circle-alert-BsLl001l.js → circle-alert-DHvsqpw5.js} +1 -1
  119. package/bizar-dash/dist/assets/{circle-alert-BsLl001l.js.map → circle-alert-DHvsqpw5.js.map} +1 -1
  120. package/bizar-dash/dist/assets/{circle-check-rVKMQmZp.js → circle-check-Bx8wmXR9.js} +1 -1
  121. package/bizar-dash/dist/assets/{circle-check-rVKMQmZp.js.map → circle-check-Bx8wmXR9.js.map} +1 -1
  122. package/bizar-dash/dist/assets/{clock-OuficfgH.js → clock-CejGoecX.js} +1 -1
  123. package/bizar-dash/dist/assets/{clock-OuficfgH.js.map → clock-CejGoecX.js.map} +1 -1
  124. package/bizar-dash/dist/assets/{download-BdHlstUY.js → download-4cEUWue1.js} +1 -1
  125. package/bizar-dash/dist/assets/{download-BdHlstUY.js.map → download-4cEUWue1.js.map} +1 -1
  126. package/bizar-dash/dist/assets/{external-link-DA3_VGm-.js → external-link-0NqUhI4i.js} +1 -1
  127. package/bizar-dash/dist/assets/{external-link-DA3_VGm-.js.map → external-link-0NqUhI4i.js.map} +1 -1
  128. package/bizar-dash/dist/assets/{file-text-B-g8H227.js → file-text-yEMkrSoZ.js} +1 -1
  129. package/bizar-dash/dist/assets/{file-text-B-g8H227.js.map → file-text-yEMkrSoZ.js.map} +1 -1
  130. package/bizar-dash/dist/assets/{filter-D9B8s5CG.js → filter-BXt60zAS.js} +1 -1
  131. package/bizar-dash/dist/assets/{filter-D9B8s5CG.js.map → filter-BXt60zAS.js.map} +1 -1
  132. package/bizar-dash/dist/assets/{git-pull-request-ByH0YuVz.js → git-pull-request-BjG5lNtR.js} +1 -1
  133. package/bizar-dash/dist/assets/{git-pull-request-ByH0YuVz.js.map → git-pull-request-BjG5lNtR.js.map} +1 -1
  134. package/bizar-dash/dist/assets/{main-CdOm1Pj9.js → main-CokHAXWM.js} +2 -2
  135. package/bizar-dash/dist/assets/{main-CdOm1Pj9.js.map → main-CokHAXWM.js.map} +1 -1
  136. package/bizar-dash/dist/assets/{pause-C9hgd8wX.js → pause-CAmulU0F.js} +1 -1
  137. package/bizar-dash/dist/assets/{pause-C9hgd8wX.js.map → pause-CAmulU0F.js.map} +1 -1
  138. package/bizar-dash/dist/assets/{pencil-BanqaMw7.js → pencil-eq5IqBmU.js} +1 -1
  139. package/bizar-dash/dist/assets/{pencil-BanqaMw7.js.map → pencil-eq5IqBmU.js.map} +1 -1
  140. package/bizar-dash/dist/assets/{play-CawUZ02_.js → play-BoLrrcBA.js} +1 -1
  141. package/bizar-dash/dist/assets/{play-CawUZ02_.js.map → play-BoLrrcBA.js.map} +1 -1
  142. package/bizar-dash/dist/assets/{plug-Cmv0-T_e.js → plug-DBrVM9lK.js} +1 -1
  143. package/bizar-dash/dist/assets/{plug-Cmv0-T_e.js.map → plug-DBrVM9lK.js.map} +1 -1
  144. package/bizar-dash/dist/assets/{plus-M6LYiKX8.js → plus-DENm0hqV.js} +1 -1
  145. package/bizar-dash/dist/assets/{plus-M6LYiKX8.js.map → plus-DENm0hqV.js.map} +1 -1
  146. package/bizar-dash/dist/assets/{power-DP5x_SRF.js → power-DLjXF7zE.js} +1 -1
  147. package/bizar-dash/dist/assets/{power-DP5x_SRF.js.map → power-DLjXF7zE.js.map} +1 -1
  148. package/bizar-dash/dist/assets/{power-off-NOJRLAIs.js → power-off-D47cOnG_.js} +1 -1
  149. package/bizar-dash/dist/assets/{power-off-NOJRLAIs.js.map → power-off-D47cOnG_.js.map} +1 -1
  150. package/bizar-dash/dist/assets/{refresh-ccw-CHMprsm5.js → refresh-ccw-DNrXX9gB.js} +1 -1
  151. package/bizar-dash/dist/assets/{refresh-ccw-CHMprsm5.js.map → refresh-ccw-DNrXX9gB.js.map} +1 -1
  152. package/bizar-dash/dist/assets/{refresh-cw-1RBqDKgJ.js → refresh-cw-CoAHDpeS.js} +1 -1
  153. package/bizar-dash/dist/assets/{refresh-cw-1RBqDKgJ.js.map → refresh-cw-CoAHDpeS.js.map} +1 -1
  154. package/bizar-dash/dist/assets/{rotate-ccw-DJRekBbi.js → rotate-ccw-ObX5awaG.js} +1 -1
  155. package/bizar-dash/dist/assets/{rotate-ccw-DJRekBbi.js.map → rotate-ccw-ObX5awaG.js.map} +1 -1
  156. package/bizar-dash/dist/assets/{rotate-cw-DHooc0Tx.js → rotate-cw-xpPJw9LP.js} +1 -1
  157. package/bizar-dash/dist/assets/{rotate-cw-DHooc0Tx.js.map → rotate-cw-xpPJw9LP.js.map} +1 -1
  158. package/bizar-dash/dist/assets/{save-DQKCKyZK.js → save-D1iKiJJl.js} +1 -1
  159. package/bizar-dash/dist/assets/{save-DQKCKyZK.js.map → save-D1iKiJJl.js.map} +1 -1
  160. package/bizar-dash/dist/assets/{send-xgy3RAi7.js → send-BRcAhZUm.js} +1 -1
  161. package/bizar-dash/dist/assets/{send-xgy3RAi7.js.map → send-BRcAhZUm.js.map} +1 -1
  162. package/bizar-dash/dist/assets/{shield-alert-CWV2F5ab.js → shield-alert-C6vEcK-g.js} +1 -1
  163. package/bizar-dash/dist/assets/{shield-alert-CWV2F5ab.js.map → shield-alert-C6vEcK-g.js.map} +1 -1
  164. package/bizar-dash/dist/assets/{trash-2-CL4khSRv.js → trash-2-DZDjEnNh.js} +1 -1
  165. package/bizar-dash/dist/assets/{trash-2-CL4khSRv.js.map → trash-2-DZDjEnNh.js.map} +1 -1
  166. package/bizar-dash/dist/assets/{trending-up-CSJJhWTS.js → trending-up-DMj-AJVf.js} +1 -1
  167. package/bizar-dash/dist/assets/{trending-up-CSJJhWTS.js.map → trending-up-DMj-AJVf.js.map} +1 -1
  168. package/bizar-dash/dist/assets/{triangle-alert-BPLb7uLt.js → triangle-alert-_2xe_tl4.js} +1 -1
  169. package/bizar-dash/dist/assets/{triangle-alert-BPLb7uLt.js.map → triangle-alert-_2xe_tl4.js.map} +1 -1
  170. package/bizar-dash/dist/assets/{upload-Cww6MvFq.js → upload-DdDljAeV.js} +1 -1
  171. package/bizar-dash/dist/assets/{upload-Cww6MvFq.js.map → upload-DdDljAeV.js.map} +1 -1
  172. package/bizar-dash/dist/assets/{zap-DmhVUzRA.js → zap-mHsgh0FP.js} +1 -1
  173. package/bizar-dash/dist/assets/{zap-DmhVUzRA.js.map → zap-mHsgh0FP.js.map} +1 -1
  174. package/bizar-dash/dist/index.html +1 -1
  175. package/bizar-dash/src/server/api.mjs +13 -6
  176. package/bizar-dash/src/server/artifacts-store.mjs +120 -14
  177. package/bizar-dash/src/server/claude-artifacts.mjs +281 -0
  178. package/bizar-dash/src/server/diagnostics-store.mjs +5 -35
  179. package/bizar-dash/src/server/mod-security.mjs +1 -2
  180. package/bizar-dash/src/server/providers-store.mjs +1 -1
  181. package/bizar-dash/src/server/routes/_shared.mjs +0 -17
  182. package/bizar-dash/src/server/routes/artifacts.mjs +42 -6
  183. package/bizar-dash/src/server/routes/audit.mjs +78 -0
  184. package/bizar-dash/src/server/routes/decisions.mjs +78 -0
  185. package/bizar-dash/src/server/routes/model-router.mjs +158 -0
  186. package/bizar-dash/src/server/routes/model-router.test.mjs +104 -0
  187. package/bizar-dash/src/server/routes/sessions.mjs +80 -0
  188. package/bizar-dash/src/server/server.mjs +1 -27
  189. package/bizar-dash/src/server/sprint.test.mjs +163 -0
  190. package/bizar-dash/src/web/v8/views/Artifacts/ArtifactsView.tsx +232 -21
  191. package/bizar-dash/src/web/v8/views/Artifacts/ClaudeArtifactView.tsx +179 -0
  192. package/bizar-dash/tests/cli-bugfixes.test.mjs +1 -1
  193. package/bizar-dash/tests/cli-error-visibility.test.mjs +1 -1
  194. package/bizar-dash/tests/cli-refactor.test.mjs +0 -1
  195. package/bizar-dash/tests/diagnostics-store.test.mjs +0 -1
  196. package/cli/bin.mjs +1 -15
  197. package/cli/cli-commands-validation.test.mjs +1 -1
  198. package/cli/commands/lightrag.mjs +1 -1
  199. package/cli/commands/util.mjs +1 -1
  200. package/cli/copy.mjs +1 -47
  201. package/cli/doctor.mjs +3 -3
  202. package/cli/install.mjs +3 -37
  203. package/cli/service-controller.mjs +0 -192
  204. package/cli/service-env.mjs +2 -9
  205. package/cli/utils.mjs +0 -7
  206. package/package.json +1 -1
  207. package/packages/sdk/dist/agent/cron.d.ts +44 -0
  208. package/packages/sdk/dist/agent/cron.js +79 -0
  209. package/packages/sdk/dist/agent/heartbeat.d.ts +43 -0
  210. package/packages/sdk/dist/agent/heartbeat.js +116 -0
  211. package/packages/sdk/dist/index.d.ts +3 -0
  212. package/packages/sdk/dist/index.js +5 -0
  213. package/packages/sdk/dist/learning/decisions.d.ts +46 -0
  214. package/packages/sdk/dist/learning/decisions.js +132 -0
  215. package/packages/sdk/dist/learning/index.d.ts +8 -0
  216. package/packages/sdk/dist/learning/index.js +8 -0
  217. package/packages/sdk/dist/learning/instincts.d.ts +38 -0
  218. package/packages/sdk/dist/learning/instincts.js +139 -0
  219. package/packages/sdk/dist/mcp/server.js +119 -1
  220. package/packages/sdk/dist/router/agent-model-registry.d.ts +89 -0
  221. package/packages/sdk/dist/router/agent-model-registry.js +144 -0
  222. package/packages/sdk/dist/router/index.d.ts +1 -0
  223. package/packages/sdk/dist/router/index.js +1 -0
  224. package/packages/sdk/package.json +3 -2
  225. package/scripts/audit.mjs +388 -0
  226. package/scripts/audit.test.mjs +149 -0
  227. package/scripts/check-deps.mjs +0 -24
  228. package/scripts/eval-gate.mjs +134 -0
  229. package/scripts/eval-gate.test.mjs +138 -0
  230. package/scripts/feature-state-machine.mjs +178 -0
  231. package/scripts/feature-state-machine.test.mjs +135 -0
  232. package/scripts/spec-dedup.test.mjs +124 -0
  233. package/scripts/sprint.mjs +213 -0
  234. package/scripts/worktree-setup.sh +79 -0
  235. package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js +0 -6
  236. package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js.map +0 -1
@@ -0,0 +1,139 @@
1
+ /**
2
+ * learning/instincts.ts — Instinct log for Bizar self-learning.
3
+ *
4
+ * v10.1.1 — Pillar D: Instinct log backed by `.bizar/learning/instincts.jsonl`.
5
+ *
6
+ * Each entry:
7
+ * {id, trigger, action, confidence: 0-1, evidence: string[],
8
+ * scope: 'project'|'global', project, created_at, updated_at}
9
+ *
10
+ * Atomic append via fs.appendFileSync (Node's async form flushes by default;
11
+ * verified by the smoke test in instincts.test.mjs).
12
+ *
13
+ * Auto-write path: PostToolUse hook on Bash for high-frequency commands
14
+ * (npm install, git push, etc.) via `.claude/hooks/auto-instinct.sh`.
15
+ */
16
+ import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
17
+ import { join } from "node:path";
18
+ import { createHash } from "node:crypto";
19
+ const LEARNING_DIR = ".bizar/learning";
20
+ const INSTINCTS_FILE = "instincts.jsonl";
21
+ function instinctPath(project) {
22
+ const root = project && project !== "." ? project : process.cwd();
23
+ return join(root, LEARNING_DIR, INSTINCTS_FILE);
24
+ }
25
+ function ensureDir(project) {
26
+ const dir = join(instinctPath(project), "..");
27
+ if (!existsSync(dir))
28
+ mkdirSync(dir, { recursive: true });
29
+ }
30
+ function makeId(trigger, action, ts) {
31
+ const h = createHash("sha256");
32
+ h.update(String(ts));
33
+ h.update(trigger);
34
+ h.update(action);
35
+ return h.digest("hex").slice(0, 16);
36
+ }
37
+ /** Record a new instinct. Returns the created entry. */
38
+ export function recordInstinct({ trigger, action, confidence = 0.5, evidence = [], scope = "project", project, }) {
39
+ const ts = Date.now();
40
+ const entry = {
41
+ id: makeId(trigger, action, ts),
42
+ trigger: String(trigger),
43
+ action: String(action),
44
+ confidence: Math.max(0, Math.min(1, Number(confidence))),
45
+ evidence: evidence.map(String),
46
+ scope,
47
+ project: project ?? (scope === "global" ? "" : process.cwd()),
48
+ created_at: new Date(ts).toISOString(),
49
+ updated_at: new Date(ts).toISOString(),
50
+ };
51
+ ensureDir(project);
52
+ appendFileSync(instinctPath(project), JSON.stringify(entry) + "\n", "utf8");
53
+ return entry;
54
+ }
55
+ /** List all instincts, optionally filtered by scope. */
56
+ export function listInstincts(opts = {}) {
57
+ const path = instinctPath(opts.project);
58
+ if (!existsSync(path))
59
+ return [];
60
+ try {
61
+ const raw = readFileSync(path, "utf8");
62
+ const lines = raw.split("\n").filter((l) => l.trim());
63
+ const all = lines
64
+ .map((l) => {
65
+ try {
66
+ return JSON.parse(l);
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ })
72
+ .filter((e) => e !== null);
73
+ if (!opts.scope)
74
+ return all;
75
+ return all.filter((e) => String(e.scope) === opts.scope);
76
+ }
77
+ catch {
78
+ return [];
79
+ }
80
+ }
81
+ /** Promote an instinct's confidence (returns updated entry or null). */
82
+ export function promoteInstinct(id, newConfidence, opts = {}) {
83
+ const path = instinctPath(opts.project);
84
+ if (!existsSync(path))
85
+ return null;
86
+ const raw = readFileSync(path, "utf8");
87
+ const lines = raw.split("\n").filter((l) => l.trim());
88
+ const entries = [];
89
+ let found = false;
90
+ for (const line of lines) {
91
+ try {
92
+ const e = JSON.parse(line);
93
+ if (e && typeof e === "object" && !found && String(e.id) === String(id)) {
94
+ e.confidence = Math.max(0, Math.min(1, Number(newConfidence)));
95
+ e.updated_at = new Date().toISOString();
96
+ found = true;
97
+ }
98
+ if (e && typeof e === "object")
99
+ entries.push(e);
100
+ }
101
+ catch { /* skip malformed lines */ }
102
+ }
103
+ if (!found)
104
+ return null;
105
+ // Re-write the file with updated entry.
106
+ ensureDir(opts.project);
107
+ const { writeFileSync } = require("node:fs");
108
+ writeFileSync(path, entries.map((e) => JSON.stringify(e)).join("\n") + "\n", "utf8");
109
+ return entries.find((e) => String(e.id) === String(id)) ?? null;
110
+ }
111
+ /** Drop an instinct by id (returns true if found and removed). */
112
+ export function dropInstinct(id, opts = {}) {
113
+ const path = instinctPath(opts.project);
114
+ if (!existsSync(path))
115
+ return false;
116
+ const raw = readFileSync(path, "utf8");
117
+ const lines = raw.split("\n").filter((l) => l.trim());
118
+ const kept = [];
119
+ let found = false;
120
+ for (const line of lines) {
121
+ try {
122
+ const e = JSON.parse(line);
123
+ if (e && typeof e === "object" && String(e.id) === String(id)) {
124
+ found = true;
125
+ }
126
+ else if (e && typeof e === "object") {
127
+ kept.push(line);
128
+ }
129
+ }
130
+ catch { /* skip malformed lines */ }
131
+ }
132
+ if (!found)
133
+ return false;
134
+ ensureDir(opts.project);
135
+ const { writeFileSync } = require("node:fs");
136
+ writeFileSync(path, kept.join("\n") + (kept.length ? "\n" : ""), "utf8");
137
+ return true;
138
+ }
139
+ //# sourceMappingURL=instincts.js.map
@@ -42,11 +42,13 @@ import { checkDangerous } from "../dangerous-patterns.js";
42
42
  import { ModelRouter } from "../router/model-router.js";
43
43
  import { QLearningRouter } from "../router/q-learning-router.js";
44
44
  import { runDistillation } from "../router/memory-distillation.js";
45
- import { decideAgentWith } from "../router/index.js";
45
+ import { decideAgentWith, loadModelRegistry, resolveAgentModel, resolveTierModel, } from "../router/index.js";
46
46
  import { bizarAgentRegistry } from "../agent-registry.js";
47
47
  import { initSwarm as initSwarmOnRegistry, DEFAULT_TOPOLOGY, DEFAULT_MAX_AGENTS, } from "../swarm-topology.js";
48
48
  import { getSharedConsensus } from "../consensus/index.js";
49
49
  import { createFederation, } from "../federation/index.js";
50
+ import { startHeartbeat, stopHeartbeat, failHeartbeat, } from "../agent/heartbeat.js";
51
+ import { addCronTask, listCronTasks, removeCronTask, } from "../agent/cron.js";
50
52
  /**
51
53
  * Build a single MCP tool definition with a zod-less validator. This
52
54
  * avoids taking a hard dep on zod at SDK-level; the dashboard or
@@ -491,6 +493,47 @@ const hooksRouteTool = defineTool("hooks_route", "Self-Learning router (F-033):
491
493
  }
492
494
  }, { readOnlyHint: true });
493
495
  // ---------------------------------------------------------------------------
496
+ // Agent → model resolution tool (v10.1.0)
497
+ //
498
+ // Reads `.claude/model-router.json` (the Bizar model registry) and
499
+ // returns the concrete modelId + endpoint URL for an agent name. This
500
+ // is the bridge between the orchestrator's tier decision and the
501
+ // downstream HTTP call — the orchestrator says "flash / mid / expensive",
502
+ // this tool says "use this specific model at this URL".
503
+ //
504
+ // Pair with `hooks_route`: pass `agent=...` and you get the resolved
505
+ // model in one call. Use `list=true` to dump the entire registry for
506
+ // the dashboard / debugging.
507
+ // ---------------------------------------------------------------------------
508
+ const routeAgentTool = defineTool("route_agent", "Resolve an agent name (e.g. 'odin', 'thor', 'tyr') to its concrete modelId + endpoint URL by reading .claude/model-router.json. Pass {list: true} to dump the full registry. Returns JSON: {agent, modelId, tier, endpoint, rationale, fallback?, allAgents?}.", { agent: "string", list: "boolean" }, async ({ agent, list }) => {
509
+ try {
510
+ const reg = loadModelRegistry();
511
+ if (list === true) {
512
+ return ok(JSON.stringify({
513
+ endpoint: reg.endpoint,
514
+ agents: Array.from(reg.agents.values()),
515
+ tiers: Array.from(reg.tiers.values()),
516
+ fallbackChain: reg.fallbackChain,
517
+ gptOnlyFor: reg.gptOnlyFor,
518
+ gptNeverFor: reg.gptNeverFor,
519
+ }, null, 2));
520
+ }
521
+ const name = typeof agent === "string" && agent.trim().length > 0
522
+ ? agent.trim()
523
+ : "odin";
524
+ const resolved = resolveAgentModel(name, reg);
525
+ const tierResolved = resolveTierModel(resolved.tier, reg);
526
+ return ok(JSON.stringify({
527
+ ...resolved,
528
+ fallback: tierResolved.fallback,
529
+ allAgents: Array.from(reg.agents.keys()),
530
+ }, null, 2));
531
+ }
532
+ catch (e) {
533
+ return err(String(e));
534
+ }
535
+ }, { readOnlyHint: true });
536
+ // ---------------------------------------------------------------------------
494
537
  // Consensus tool (F-039) — thin PBFT-style 3-of-5 majority for
495
538
  // review/decision steps. Wraps the shared `getSharedConsensus()`
496
539
  // orchestrator; the MCP surface is intentionally minimal (one tool)
@@ -576,6 +619,76 @@ const federationStatusTool = defineTool("federation_status", "Federation skeleto
576
619
  }
577
620
  }, { readOnlyHint: true });
578
621
  // ---------------------------------------------------------------------------
622
+ // Pillar A — session heartbeat + cron tools
623
+ // ---------------------------------------------------------------------------
624
+ /** In-memory store for active heartbeats started via the MCP tool.
625
+ * Maps sessionId → stop fn. Only used by the MCP surface; the JSONL
626
+ * file is the authoritative persistence. */
627
+ const _activeHeartbeats = new Map();
628
+ const sessionHeartbeatTool = defineTool("session_heartbeat", "Start, stop, or fail a session heartbeat. start returns a sessionId. Stop/fail write a terminal record to .harness/traces/heartbeat.jsonl.", { action: "string", sessionId: "string", intervalMs: "number" }, async ({ action, sessionId, intervalMs }) => {
629
+ try {
630
+ if (action === "start") {
631
+ const { sessionId: id, stop } = startHeartbeat(intervalMs ?? 30_000);
632
+ _activeHeartbeats.set(id, stop);
633
+ return ok(JSON.stringify({ sessionId: id }));
634
+ }
635
+ if (action === "stop") {
636
+ const id = sessionId ?? "";
637
+ const stop = _activeHeartbeats.get(id);
638
+ if (stop) {
639
+ stop();
640
+ _activeHeartbeats.delete(id);
641
+ }
642
+ else {
643
+ stopHeartbeat(id);
644
+ }
645
+ return ok(JSON.stringify({ sessionId: id ?? "", status: "done" }));
646
+ }
647
+ if (action === "fail") {
648
+ const id = sessionId ?? "";
649
+ const stop = _activeHeartbeats.get(id);
650
+ if (stop) {
651
+ stop();
652
+ _activeHeartbeats.delete(id);
653
+ }
654
+ else {
655
+ failHeartbeat(id);
656
+ }
657
+ return ok(JSON.stringify({ sessionId: id ?? "", status: "failed" }));
658
+ }
659
+ return err(`unknown_action: ${action}`);
660
+ }
661
+ catch (e) {
662
+ return err(String(e));
663
+ }
664
+ });
665
+ const cronAddTool = defineTool("cron_add", "Add a cron task. Persists to .bizar/cron.json. recurring=false tasks fire once and are then removed.", { cron: "string", prompt: "string", recurring: "boolean" }, async ({ cron, prompt, recurring }) => {
666
+ try {
667
+ const task = addCronTask({ cron, prompt, recurring: recurring ?? false });
668
+ return ok(JSON.stringify(task, null, 2));
669
+ }
670
+ catch (e) {
671
+ return err(String(e));
672
+ }
673
+ });
674
+ const cronListTool = defineTool("cron_list", "List all cron tasks from .bizar/cron.json.", {}, async () => {
675
+ try {
676
+ return ok(JSON.stringify(listCronTasks(), null, 2));
677
+ }
678
+ catch (e) {
679
+ return err(String(e));
680
+ }
681
+ }, { readOnlyHint: true });
682
+ const cronRemoveTool = defineTool("cron_remove", "Remove a cron task by its id. Returns true if the task existed.", { id: "string" }, async ({ id }) => {
683
+ try {
684
+ const removed = removeCronTask(id);
685
+ return ok(JSON.stringify({ id, removed }));
686
+ }
687
+ catch (e) {
688
+ return err(String(e));
689
+ }
690
+ });
691
+ // ---------------------------------------------------------------------------
579
692
  // Factory — wire all tools into an MCP server
580
693
  // ---------------------------------------------------------------------------
581
694
  export const BIZAR_TOOLS = [
@@ -600,8 +713,13 @@ export const BIZAR_TOOLS = [
600
713
  agentRouteTool,
601
714
  memoryDistillTool,
602
715
  hooksRouteTool,
716
+ routeAgentTool,
603
717
  consensusProposeTool,
604
718
  federationStatusTool,
719
+ sessionHeartbeatTool,
720
+ cronAddTool,
721
+ cronListTool,
722
+ cronRemoveTool,
605
723
  ];
606
724
  /**
607
725
  * Build the Bizar MCP server config. Pass this into Claude Code's
@@ -0,0 +1,89 @@
1
+ /**
2
+ * router/agent-model-registry.ts — resolve agent → concrete model ID.
3
+ *
4
+ * v10.1.0 — Reads `.claude/model-router.json` (the Bizar model registry)
5
+ * and exposes:
6
+ *
7
+ * - resolveAgentModel(agent) → { modelId, tier, endpoint, rationale }
8
+ * - listAgentModels() → Array<{ agent, modelId, tier, ... }>
9
+ * - resolveTierModel(tier) → { modelId, endpoint, fallback[] }
10
+ * - getEndpoint() → endpoint URL (env override honored)
11
+ *
12
+ * The router decides which tier; this registry decides which concrete
13
+ * model ID lives at that tier and which endpoint URL to call. Together
14
+ * they form the dispatch contract the MCP `route_agent` tool surfaces.
15
+ *
16
+ * Why a separate module: the Thompson-bandit model-router.ts doesn't
17
+ * know about model IDs (it only reasons about `flash / mid / expensive`
18
+ * priors). The agent-registry.ts knows about agent types but not about
19
+ * concrete models. This module is the bridge.
20
+ */
21
+ export type BizarTier = "premium" | "high" | "mid-design" | "default" | "mid" | "budget";
22
+ export interface AgentModelEntry {
23
+ agent: string;
24
+ modelId: string;
25
+ tier: BizarTier;
26
+ rationale: string;
27
+ }
28
+ export interface TierModelEntry {
29
+ tier: BizarTier;
30
+ modelIds: string[];
31
+ purpose: string;
32
+ }
33
+ export interface ResolvedAgentModel {
34
+ agent: string;
35
+ modelId: string;
36
+ tier: BizarTier;
37
+ endpoint: string;
38
+ rationale: string;
39
+ }
40
+ export interface ResolvedTierModel {
41
+ tier: BizarTier;
42
+ modelId: string;
43
+ fallback: string[];
44
+ endpoint: string;
45
+ purpose: string;
46
+ }
47
+ export interface ModelRegistry {
48
+ endpoint: string;
49
+ agents: Map<string, AgentModelEntry>;
50
+ tiers: Map<BizarTier, TierModelEntry>;
51
+ fallbackChain: string[];
52
+ gptOnlyFor: string[];
53
+ gptNeverFor: string[];
54
+ }
55
+ export interface RegistrySource {
56
+ /** Path to `model-router.json`. Default: `.claude/model-router.json`. */
57
+ configPath?: string;
58
+ /** Override the endpoint URL (otherwise read from the JSON). */
59
+ endpoint?: string;
60
+ }
61
+ /**
62
+ * Read the registry from disk. Tolerates a missing/corrupt file by
63
+ * returning a minimal registry pointing at the local router default —
64
+ * agents can still operate, just without the per-agent rationale data.
65
+ */
66
+ export declare function loadModelRegistry(src?: RegistrySource): ModelRegistry;
67
+ /**
68
+ * Resolve the concrete model + endpoint for a named agent.
69
+ * Falls back to the default agent entry (or a hard-coded `bizar/MiniMax-M3`
70
+ * if even the default is missing) so a call always returns something
71
+ * usable. Never throws.
72
+ */
73
+ export declare function resolveAgentModel(agent: string, reg: ModelRegistry): ResolvedAgentModel;
74
+ /**
75
+ * Resolve a tier to its primary model ID + the fallback chain. Always
76
+ * returns at least one model ID.
77
+ */
78
+ export declare function resolveTierModel(tier: BizarTier, reg: ModelRegistry): ResolvedTierModel;
79
+ /**
80
+ * Return the full agent → model table. Stable order: insertion order from
81
+ * the JSON (preserves whatever order the operator wrote).
82
+ */
83
+ export declare function listAgentModels(reg: ModelRegistry): AgentModelEntry[];
84
+ /**
85
+ * Convenience: read the endpoint from the registry / env. Useful in
86
+ * scripts that don't want to load the full registry just for a URL.
87
+ */
88
+ export declare function getEndpoint(reg?: ModelRegistry): string;
89
+ //# sourceMappingURL=agent-model-registry.d.ts.map
@@ -0,0 +1,144 @@
1
+ /**
2
+ * router/agent-model-registry.ts — resolve agent → concrete model ID.
3
+ *
4
+ * v10.1.0 — Reads `.claude/model-router.json` (the Bizar model registry)
5
+ * and exposes:
6
+ *
7
+ * - resolveAgentModel(agent) → { modelId, tier, endpoint, rationale }
8
+ * - listAgentModels() → Array<{ agent, modelId, tier, ... }>
9
+ * - resolveTierModel(tier) → { modelId, endpoint, fallback[] }
10
+ * - getEndpoint() → endpoint URL (env override honored)
11
+ *
12
+ * The router decides which tier; this registry decides which concrete
13
+ * model ID lives at that tier and which endpoint URL to call. Together
14
+ * they form the dispatch contract the MCP `route_agent` tool surfaces.
15
+ *
16
+ * Why a separate module: the Thompson-bandit model-router.ts doesn't
17
+ * know about model IDs (it only reasons about `flash / mid / expensive`
18
+ * priors). The agent-registry.ts knows about agent types but not about
19
+ * concrete models. This module is the bridge.
20
+ */
21
+ import { existsSync, readFileSync } from "node:fs";
22
+ import { isAbsolute, resolve } from "node:path";
23
+ const DEFAULT_CONFIG = ".claude/model-router.json";
24
+ const KNOWN_TIERS = [
25
+ "premium",
26
+ "high",
27
+ "mid-design",
28
+ "default",
29
+ "mid",
30
+ "budget",
31
+ ];
32
+ function isKnownTier(t) {
33
+ return typeof t === "string" && KNOWN_TIERS.includes(t);
34
+ }
35
+ /**
36
+ * Read the registry from disk. Tolerates a missing/corrupt file by
37
+ * returning a minimal registry pointing at the local router default —
38
+ * agents can still operate, just without the per-agent rationale data.
39
+ */
40
+ export function loadModelRegistry(src = {}) {
41
+ const fp = src.configPath
42
+ ? isAbsolute(src.configPath) ? src.configPath : resolve(src.configPath)
43
+ : resolve(DEFAULT_CONFIG);
44
+ let raw = {};
45
+ if (existsSync(fp)) {
46
+ try {
47
+ raw = JSON.parse(readFileSync(fp, "utf8"));
48
+ }
49
+ catch {
50
+ raw = {};
51
+ }
52
+ }
53
+ const endpoint = src.endpoint
54
+ ?? process.env.BIZAR_MODEL_ROUTER_URL
55
+ ?? process.env.ANTHROPIC_BASE_URL
56
+ ?? raw.endpoint
57
+ ?? "http://localhost:20128/v1";
58
+ const agents = new Map();
59
+ if (raw.agents && typeof raw.agents === "object") {
60
+ for (const [name, def] of Object.entries(raw.agents)) {
61
+ if (!def || typeof def !== "object")
62
+ continue;
63
+ const modelId = typeof def.model === "string" ? def.model : "bizar/MiniMax-M3";
64
+ const tier = isKnownTier(def.tier) ? def.tier : "default";
65
+ const rationale = typeof def.rationale === "string" ? def.rationale : "";
66
+ agents.set(name, { agent: name, modelId, tier, rationale });
67
+ }
68
+ }
69
+ const tiers = new Map();
70
+ if (raw.tiers && typeof raw.tiers === "object") {
71
+ for (const [name, def] of Object.entries(raw.tiers)) {
72
+ if (!def || typeof def !== "object")
73
+ continue;
74
+ if (!isKnownTier(name))
75
+ continue;
76
+ const ids = Array.isArray(def.models) ? def.models.filter((m) => typeof m === "string") : [];
77
+ const purpose = typeof def.purpose === "string" ? def.purpose : "";
78
+ tiers.set(name, { tier: name, modelIds: ids, purpose });
79
+ }
80
+ }
81
+ const fallbackChain = Array.isArray(raw.policies?.fallback_chain)
82
+ ? raw.policies.fallback_chain.filter((m) => typeof m === "string")
83
+ : [];
84
+ const gptOnlyFor = Array.isArray(raw.policies?.gpt_only_for)
85
+ ? raw.policies.gpt_only_for.filter((s) => typeof s === "string")
86
+ : [];
87
+ const gptNeverFor = Array.isArray(raw.policies?.gpt_never_for)
88
+ ? raw.policies.gpt_never_for.filter((s) => typeof s === "string")
89
+ : [];
90
+ return { endpoint, agents, tiers, fallbackChain, gptOnlyFor, gptNeverFor };
91
+ }
92
+ /**
93
+ * Resolve the concrete model + endpoint for a named agent.
94
+ * Falls back to the default agent entry (or a hard-coded `bizar/MiniMax-M3`
95
+ * if even the default is missing) so a call always returns something
96
+ * usable. Never throws.
97
+ */
98
+ export function resolveAgentModel(agent, reg) {
99
+ const entry = reg.agents.get(agent)
100
+ ?? reg.agents.get("odin")
101
+ ?? { agent: "odin", modelId: "bizar/MiniMax-M3", tier: "default", rationale: "fallback" };
102
+ return {
103
+ agent: entry.agent,
104
+ modelId: entry.modelId,
105
+ tier: entry.tier,
106
+ endpoint: reg.endpoint,
107
+ rationale: entry.rationale,
108
+ };
109
+ }
110
+ /**
111
+ * Resolve a tier to its primary model ID + the fallback chain. Always
112
+ * returns at least one model ID.
113
+ */
114
+ export function resolveTierModel(tier, reg) {
115
+ const entry = reg.tiers.get(tier);
116
+ const primary = entry?.modelIds[0] ?? "bizar/MiniMax-M3";
117
+ const fallback = entry?.modelIds.slice(1) ?? [];
118
+ return {
119
+ tier,
120
+ modelId: primary,
121
+ fallback,
122
+ endpoint: reg.endpoint,
123
+ purpose: entry?.purpose ?? "",
124
+ };
125
+ }
126
+ /**
127
+ * Return the full agent → model table. Stable order: insertion order from
128
+ * the JSON (preserves whatever order the operator wrote).
129
+ */
130
+ export function listAgentModels(reg) {
131
+ return Array.from(reg.agents.values());
132
+ }
133
+ /**
134
+ * Convenience: read the endpoint from the registry / env. Useful in
135
+ * scripts that don't want to load the full registry just for a URL.
136
+ */
137
+ export function getEndpoint(reg) {
138
+ if (reg)
139
+ return reg.endpoint;
140
+ return process.env.BIZAR_MODEL_ROUTER_URL
141
+ ?? process.env.ANTHROPIC_BASE_URL
142
+ ?? "http://localhost:20128/v1";
143
+ }
144
+ //# sourceMappingURL=agent-model-registry.js.map
@@ -97,4 +97,5 @@ export { detectCodemodIntent, CODEMOD_CONFIDENCE_THRESHOLD, } from "./codemod-in
97
97
  export type { CodemodIntent, CodemodIntentHit } from "./codemod-intent.js";
98
98
  export { ModelRouter, type ModelTier, type RouteDecision, } from "./model-router.js";
99
99
  export { QLearningRouter, AGENT_ACTIONS, type AgentName, type AgentRouteDecision, } from "./q-learning-router.js";
100
+ export { loadModelRegistry, resolveAgentModel, resolveTierModel, listAgentModels, getEndpoint, type ModelRegistry, type ResolvedAgentModel, type ResolvedTierModel, type AgentModelEntry, type TierModelEntry, type BizarTier, } from "./agent-model-registry.js";
100
101
  //# sourceMappingURL=index.d.ts.map
@@ -146,4 +146,5 @@ export function tierTag(decision) {
146
146
  export { detectCodemodIntent, CODEMOD_CONFIDENCE_THRESHOLD, } from "./codemod-intent.js";
147
147
  export { ModelRouter, } from "./model-router.js";
148
148
  export { QLearningRouter, AGENT_ACTIONS, } from "./q-learning-router.js";
149
+ export { loadModelRegistry, resolveAgentModel, resolveTierModel, listAgentModels, getEndpoint, } from "./agent-model-registry.js";
149
150
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polderlabs/bizar-sdk",
3
- "version": "10.0.7",
3
+ "version": "10.2.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -11,7 +11,8 @@
11
11
  ".": "./dist/index.js",
12
12
  "./memory": "./dist/memory/index.js",
13
13
  "./mcp": "./dist/mcp/server.js",
14
- "./dangerous-patterns": "./dist/dangerous-patterns.js"
14
+ "./dangerous-patterns": "./dist/dangerous-patterns.js",
15
+ "./learning": "./dist/learning/index.js"
15
16
  },
16
17
  "files": [
17
18
  "dist"