katalyst-plugin-bard 0.1.1a1__tar.gz

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 (400) hide show
  1. katalyst_plugin_bard-0.1.1a1/.gitignore +123 -0
  2. katalyst_plugin_bard-0.1.1a1/CHANGELOG.md +138 -0
  3. katalyst_plugin_bard-0.1.1a1/Dockerfile +48 -0
  4. katalyst_plugin_bard-0.1.1a1/PKG-INFO +84 -0
  5. katalyst_plugin_bard-0.1.1a1/README.md +70 -0
  6. katalyst_plugin_bard-0.1.1a1/app.yaml +18 -0
  7. katalyst_plugin_bard-0.1.1a1/apps/desktop/package.json +22 -0
  8. katalyst_plugin_bard-0.1.1a1/apps/desktop/src/main.ts +275 -0
  9. katalyst_plugin_bard-0.1.1a1/design-reference/system-wing/README.md +175 -0
  10. katalyst_plugin_bard-0.1.1a1/hatch_build.py +119 -0
  11. katalyst_plugin_bard-0.1.1a1/justfile +105 -0
  12. katalyst_plugin_bard-0.1.1a1/layer/README.md +5 -0
  13. katalyst_plugin_bard-0.1.1a1/package-lock.json +17088 -0
  14. katalyst_plugin_bard-0.1.1a1/package.json +22 -0
  15. katalyst_plugin_bard-0.1.1a1/pyproject.toml +123 -0
  16. katalyst_plugin_bard-0.1.1a1/schemas/bard.manifest.schema.json +178 -0
  17. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/__init__.py +5 -0
  18. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/build.py +224 -0
  19. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/cli.py +234 -0
  20. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/contrib/build.mjs +65 -0
  21. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/contrib/shared.json +10 -0
  22. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/contributions.py +176 -0
  23. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/plugin.py +44 -0
  24. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/py.typed +0 -0
  25. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/serve.py +626 -0
  26. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/desktop/main.cjs +8369 -0
  27. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/desktop/package.json +6 -0
  28. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/server/index.cjs +43202 -0
  29. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/server/index.cjs.map +7 -0
  30. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/Chat-CU3UoVyk.js +42 -0
  31. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/Chat-CpKl2eGN.css +1 -0
  32. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/DataTable-D45zW-iy.js +1 -0
  33. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/GraphCanvas-LOIKzHVV.js +331 -0
  34. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/KindsView-DYW_khzh.js +1 -0
  35. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/NodeDetail-DUwFKFxk.js +1 -0
  36. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/NodesView-R6LjlOlL.js +1 -0
  37. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/SchemaGraphPanel-CxW6ysWN.js +1 -0
  38. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/SettingsView-E-EGyvjS.js +130 -0
  39. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/TooltipIconButton-DxN4d6_s.js +1 -0
  40. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/TreeNav-BnDYMAw4.js +9373 -0
  41. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/WingsView-DvKWpWka.js +1 -0
  42. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  43. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/client-BVWFISPM.js +25 -0
  44. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/empty-Ct-3knBG.js +2 -0
  45. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  46. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  47. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  48. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  49. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  50. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-Bn5I7isx.js +1 -0
  51. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-C2oMlmGY.css +1 -0
  52. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-CbYvlL0N.js +9 -0
  53. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-DZ8IcxKl.js +9 -0
  54. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-DuLQ-QSA.js +2 -0
  55. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/index-Iz84zNIC.js +1 -0
  56. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/jsx-runtime-l_A6JZ6M.js +9 -0
  57. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/nunito-sans-cyrillic-ext-wght-normal-7w74d1lj.woff2 +0 -0
  58. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/nunito-sans-cyrillic-wght-normal-B9hoeQUC.woff2 +0 -0
  59. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/nunito-sans-latin-ext-wght-normal-DMEAsnHD.woff2 +0 -0
  60. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/nunito-sans-latin-wght-normal-BWQ3gi2K.woff2 +0 -0
  61. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/nunito-sans-vietnamese-wght-normal-BhFYcaJr.woff2 +0 -0
  62. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/shared-katalyst-bard-host-hVOU1c3P.js +1 -0
  63. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/shared-react-CBKIYMuS.js +1 -0
  64. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/shared-react-dom-EXphnHyn.js +1 -0
  65. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/shared-react-dom-client-BZbsmXA9.js +1 -0
  66. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/shared-react-jsx-runtime--VkjFgMQ.js +1 -0
  67. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2 +0 -0
  68. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2 +0 -0
  69. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2 +0 -0
  70. katalyst_plugin_bard-0.1.1a1/src/katalyst_plugin_bard/web_dist/web/index.html +33 -0
  71. katalyst_plugin_bard-0.1.1a1/tests/conftest.py +22 -0
  72. katalyst_plugin_bard-0.1.1a1/tests/test_build.py +259 -0
  73. katalyst_plugin_bard-0.1.1a1/tests/test_cli.py +52 -0
  74. katalyst_plugin_bard-0.1.1a1/tests/test_config_fields_fixture.py +22 -0
  75. katalyst_plugin_bard-0.1.1a1/tests/test_contributions.py +176 -0
  76. katalyst_plugin_bard-0.1.1a1/tests/test_desktop.py +297 -0
  77. katalyst_plugin_bard-0.1.1a1/tests/test_manifest_schema.py +215 -0
  78. katalyst_plugin_bard-0.1.1a1/tests/test_proxy.py +53 -0
  79. katalyst_plugin_bard-0.1.1a1/tests/test_sdist.py +67 -0
  80. katalyst_plugin_bard-0.1.1a1/tests/test_serve.py +493 -0
  81. katalyst_plugin_bard-0.1.1a1/tests/test_web_dist.py +48 -0
  82. katalyst_plugin_bard-0.1.1a1/web/alias.ts +19 -0
  83. katalyst_plugin_bard-0.1.1a1/web/fixtures/any-bundler/README.md +8 -0
  84. katalyst_plugin_bard-0.1.1a1/web/fixtures/any-bundler/src/count.js +5 -0
  85. katalyst_plugin_bard-0.1.1a1/web/fixtures/any-bundler/src/index.js +16 -0
  86. katalyst_plugin_bard-0.1.1a1/web/index.html +12 -0
  87. katalyst_plugin_bard-0.1.1a1/web/package.json +79 -0
  88. katalyst_plugin_bard-0.1.1a1/web/server/adapters/api-token.test.ts +51 -0
  89. katalyst_plugin_bard-0.1.1a1/web/server/adapters/api-token.ts +69 -0
  90. katalyst_plugin_bard-0.1.1a1/web/server/adapters/http-gateways.test.ts +272 -0
  91. katalyst_plugin_bard-0.1.1a1/web/server/adapters/http-gateways.ts +316 -0
  92. katalyst_plugin_bard-0.1.1a1/web/server/adapters/in-memory-gateways.ts +147 -0
  93. katalyst_plugin_bard-0.1.1a1/web/server/api-handler.test.ts +552 -0
  94. katalyst_plugin_bard-0.1.1a1/web/server/api-handler.ts +455 -0
  95. katalyst_plugin_bard-0.1.1a1/web/server/app.ts +95 -0
  96. katalyst_plugin_bard-0.1.1a1/web/server/brand.test.ts +38 -0
  97. katalyst_plugin_bard-0.1.1a1/web/server/brand.ts +58 -0
  98. katalyst_plugin_bard-0.1.1a1/web/server/config.test.ts +72 -0
  99. katalyst_plugin_bard-0.1.1a1/web/server/config.ts +57 -0
  100. katalyst_plugin_bard-0.1.1a1/web/server/contributions.test.ts +216 -0
  101. katalyst_plugin_bard-0.1.1a1/web/server/contributions.ts +220 -0
  102. katalyst_plugin_bard-0.1.1a1/web/server/domain/contributions.ts +39 -0
  103. katalyst_plugin_bard-0.1.1a1/web/server/domain/ports.ts +126 -0
  104. katalyst_plugin_bard-0.1.1a1/web/server/domain/types.ts +178 -0
  105. katalyst_plugin_bard-0.1.1a1/web/server/flags.test.ts +101 -0
  106. katalyst_plugin_bard-0.1.1a1/web/server/flags.ts +112 -0
  107. katalyst_plugin_bard-0.1.1a1/web/server/index.ts +82 -0
  108. katalyst_plugin_bard-0.1.1a1/web/server/routes/api.test.ts +214 -0
  109. katalyst_plugin_bard-0.1.1a1/web/server/routes/api.ts +70 -0
  110. katalyst_plugin_bard-0.1.1a1/web/server/settings-capability.test.ts +57 -0
  111. katalyst_plugin_bard-0.1.1a1/web/server/settings-capability.ts +87 -0
  112. katalyst_plugin_bard-0.1.1a1/web/src/App.refresh.test.tsx +158 -0
  113. katalyst_plugin_bard-0.1.1a1/web/src/App.sidebar.test.tsx +96 -0
  114. katalyst_plugin_bard-0.1.1a1/web/src/App.tsx +661 -0
  115. katalyst_plugin_bard-0.1.1a1/web/src/api/brand.test.ts +34 -0
  116. katalyst_plugin_bard-0.1.1a1/web/src/api/brand.ts +34 -0
  117. katalyst_plugin_bard-0.1.1a1/web/src/api/client.ts +64 -0
  118. katalyst_plugin_bard-0.1.1a1/web/src/api/home.test.ts +40 -0
  119. katalyst_plugin_bard-0.1.1a1/web/src/api/home.ts +39 -0
  120. katalyst_plugin_bard-0.1.1a1/web/src/api/settings-capability.ts +38 -0
  121. katalyst_plugin_bard-0.1.1a1/web/src/api/types.ts +14 -0
  122. katalyst_plugin_bard-0.1.1a1/web/src/chat/Chat.test.tsx +227 -0
  123. katalyst_plugin_bard-0.1.1a1/web/src/chat/Chat.tsx +56 -0
  124. katalyst_plugin_bard-0.1.1a1/web/src/chat/ChatPanel.test.tsx +32 -0
  125. katalyst_plugin_bard-0.1.1a1/web/src/chat/ChatPanel.tsx +57 -0
  126. katalyst_plugin_bard-0.1.1a1/web/src/chat/MarkdownText.tsx +116 -0
  127. katalyst_plugin_bard-0.1.1a1/web/src/chat/Thread.tsx +255 -0
  128. katalyst_plugin_bard-0.1.1a1/web/src/chat/TooltipIconButton.tsx +39 -0
  129. katalyst_plugin_bard-0.1.1a1/web/src/chat/echo.test.ts +42 -0
  130. katalyst_plugin_bard-0.1.1a1/web/src/chat/echo.ts +51 -0
  131. katalyst_plugin_bard-0.1.1a1/web/src/chat/lazy.tsx +20 -0
  132. katalyst_plugin_bard-0.1.1a1/web/src/chat/runtime.ts +49 -0
  133. katalyst_plugin_bard-0.1.1a1/web/src/chat/types.ts +62 -0
  134. katalyst_plugin_bard-0.1.1a1/web/src/components/ContributionBoundary.tsx +55 -0
  135. katalyst_plugin_bard-0.1.1a1/web/src/components/DataTable.test.tsx +133 -0
  136. katalyst_plugin_bard-0.1.1a1/web/src/components/DataTable.tsx +186 -0
  137. katalyst_plugin_bard-0.1.1a1/web/src/components/Icon.test.tsx +44 -0
  138. katalyst_plugin_bard-0.1.1a1/web/src/components/Icon.tsx +31 -0
  139. katalyst_plugin_bard-0.1.1a1/web/src/components/Status.tsx +18 -0
  140. katalyst_plugin_bard-0.1.1a1/web/src/components/resolve-icon.ts +23 -0
  141. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/alert.tsx +75 -0
  142. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/badge-variants.ts +33 -0
  143. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/badge.tsx +26 -0
  144. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/breadcrumb.tsx +126 -0
  145. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/button-variants.ts +42 -0
  146. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/button.tsx +30 -0
  147. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/card.tsx +102 -0
  148. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/dialog.tsx +168 -0
  149. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/dropdown-menu.tsx +266 -0
  150. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/empty.tsx +103 -0
  151. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/input.tsx +18 -0
  152. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/label.tsx +23 -0
  153. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/select.tsx +189 -0
  154. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/separator.tsx +27 -0
  155. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/sheet.test.tsx +55 -0
  156. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/sheet.tsx +147 -0
  157. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/sidebar.tsx +700 -0
  158. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/skeleton.tsx +13 -0
  159. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/switch.tsx +23 -0
  160. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/table.tsx +113 -0
  161. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/toggle-group.tsx +92 -0
  162. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/toggle-variants.ts +27 -0
  163. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/toggle.tsx +23 -0
  164. katalyst_plugin_bard-0.1.1a1/web/src/components/ui/tooltip.tsx +54 -0
  165. katalyst_plugin_bard-0.1.1a1/web/src/config/ApiAccess.tsx +197 -0
  166. katalyst_plugin_bard-0.1.1a1/web/src/config/BackendOrder.tsx +70 -0
  167. katalyst_plugin_bard-0.1.1a1/web/src/config/ConfigFieldsProvider.tsx +18 -0
  168. katalyst_plugin_bard-0.1.1a1/web/src/config/GeneralSettings.tsx +160 -0
  169. katalyst_plugin_bard-0.1.1a1/web/src/config/PluginSettings.tsx +266 -0
  170. katalyst_plugin_bard-0.1.1a1/web/src/config/PluginsPanel.tsx +278 -0
  171. katalyst_plugin_bard-0.1.1a1/web/src/config/ProfileDetails.tsx +210 -0
  172. katalyst_plugin_bard-0.1.1a1/web/src/config/ProfileList.tsx +163 -0
  173. katalyst_plugin_bard-0.1.1a1/web/src/config/ProfilePlugins.tsx +168 -0
  174. katalyst_plugin_bard-0.1.1a1/web/src/config/ProfileSchemas.tsx +126 -0
  175. katalyst_plugin_bard-0.1.1a1/web/src/config/ProfileTemplates.tsx +132 -0
  176. katalyst_plugin_bard-0.1.1a1/web/src/config/ResourceList.tsx +284 -0
  177. katalyst_plugin_bard-0.1.1a1/web/src/config/SettingsView.tsx +307 -0
  178. katalyst_plugin_bard-0.1.1a1/web/src/config/SetupChoose.tsx +234 -0
  179. katalyst_plugin_bard-0.1.1a1/web/src/config/SetupSchemas.tsx +307 -0
  180. katalyst_plugin_bard-0.1.1a1/web/src/config/SetupSteps.tsx +428 -0
  181. katalyst_plugin_bard-0.1.1a1/web/src/config/SetupView.tsx +223 -0
  182. katalyst_plugin_bard-0.1.1a1/web/src/config/SourcedProfile.tsx +219 -0
  183. katalyst_plugin_bard-0.1.1a1/web/src/config/StageFromSource.tsx +68 -0
  184. katalyst_plugin_bard-0.1.1a1/web/src/config/backend-fields.tsx +424 -0
  185. katalyst_plugin_bard-0.1.1a1/web/src/config/backend-rules.tsx +194 -0
  186. katalyst_plugin_bard-0.1.1a1/web/src/config/bundle-source-view.tsx +257 -0
  187. katalyst_plugin_bard-0.1.1a1/web/src/config/bundle-source.test.ts +58 -0
  188. katalyst_plugin_bard-0.1.1a1/web/src/config/bundle-source.ts +222 -0
  189. katalyst_plugin_bard-0.1.1a1/web/src/config/client.ts +506 -0
  190. katalyst_plugin_bard-0.1.1a1/web/src/config/context.tsx +50 -0
  191. katalyst_plugin_bard-0.1.1a1/web/src/config/edit.test.ts +271 -0
  192. katalyst_plugin_bard-0.1.1a1/web/src/config/edit.ts +534 -0
  193. katalyst_plugin_bard-0.1.1a1/web/src/config/fields.ts +91 -0
  194. katalyst_plugin_bard-0.1.1a1/web/src/config/fixtures/config-fields.json +659 -0
  195. katalyst_plugin_bard-0.1.1a1/web/src/config/fixtures/server.ts +17 -0
  196. katalyst_plugin_bard-0.1.1a1/web/src/config/model.ts +260 -0
  197. katalyst_plugin_bard-0.1.1a1/web/src/config/pickers.tsx +399 -0
  198. katalyst_plugin_bard-0.1.1a1/web/src/config/profile-format.ts +53 -0
  199. katalyst_plugin_bard-0.1.1a1/web/src/config/profile-lists.ts +120 -0
  200. katalyst_plugin_bard-0.1.1a1/web/src/config/row-keys.ts +26 -0
  201. katalyst_plugin_bard-0.1.1a1/web/src/config/rules.test.ts +36 -0
  202. katalyst_plugin_bard-0.1.1a1/web/src/config/rules.ts +63 -0
  203. katalyst_plugin_bard-0.1.1a1/web/src/config/settings-full.test.tsx +413 -0
  204. katalyst_plugin_bard-0.1.1a1/web/src/config/settings.test.tsx +833 -0
  205. katalyst_plugin_bard-0.1.1a1/web/src/config/settingsViewContribution.tsx +12 -0
  206. katalyst_plugin_bard-0.1.1a1/web/src/config/setup-flow.ts +79 -0
  207. katalyst_plugin_bard-0.1.1a1/web/src/config/sourced.test.tsx +157 -0
  208. katalyst_plugin_bard-0.1.1a1/web/src/config/validate.ts +111 -0
  209. katalyst_plugin_bard-0.1.1a1/web/src/config/views.test.tsx +929 -0
  210. katalyst_plugin_bard-0.1.1a1/web/src/contributions/any-bundler.test.tsx +86 -0
  211. katalyst_plugin_bard-0.1.1a1/web/src/contributions/hostRange.test.ts +45 -0
  212. katalyst_plugin_bard-0.1.1a1/web/src/contributions/hostRange.ts +110 -0
  213. katalyst_plugin_bard-0.1.1a1/web/src/contributions/loader.test.tsx +179 -0
  214. katalyst_plugin_bard-0.1.1a1/web/src/contributions/loader.ts +204 -0
  215. katalyst_plugin_bard-0.1.1a1/web/src/flags/evaluate.test.ts +116 -0
  216. katalyst_plugin_bard-0.1.1a1/web/src/flags/evaluate.ts +101 -0
  217. katalyst_plugin_bard-0.1.1a1/web/src/flags/provider.ts +64 -0
  218. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphCanvas.tsx +117 -0
  219. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphControls.tsx +198 -0
  220. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphMinimap.test.tsx +42 -0
  221. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphMinimap.tsx +195 -0
  222. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphStyleMenu.test.tsx +62 -0
  223. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphStyleMenu.tsx +259 -0
  224. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphToolbar.tsx +61 -0
  225. katalyst_plugin_bard-0.1.1a1/web/src/graph/GraphTooltip.tsx +30 -0
  226. katalyst_plugin_bard-0.1.1a1/web/src/graph/force-sim-settings.ts +162 -0
  227. katalyst_plugin_bard-0.1.1a1/web/src/graph/force-sim.ts +674 -0
  228. katalyst_plugin_bard-0.1.1a1/web/src/graph/graph-elements.ts +127 -0
  229. katalyst_plugin_bard-0.1.1a1/web/src/graph/graph-styles.test.ts +61 -0
  230. katalyst_plugin_bard-0.1.1a1/web/src/graph/graph-styles.ts +162 -0
  231. katalyst_plugin_bard-0.1.1a1/web/src/graph/index.ts +36 -0
  232. katalyst_plugin_bard-0.1.1a1/web/src/graph/lazy.tsx +28 -0
  233. katalyst_plugin_bard-0.1.1a1/web/src/graph/palette.ts +49 -0
  234. katalyst_plugin_bard-0.1.1a1/web/src/graph/panels.test.tsx +131 -0
  235. katalyst_plugin_bard-0.1.1a1/web/src/graph/panels.tsx +576 -0
  236. katalyst_plugin_bard-0.1.1a1/web/src/graph/sets.ts +7 -0
  237. katalyst_plugin_bard-0.1.1a1/web/src/graph/styles.ts +131 -0
  238. katalyst_plugin_bard-0.1.1a1/web/src/graph/types.ts +49 -0
  239. katalyst_plugin_bard-0.1.1a1/web/src/graph/useCytoscape.ts +164 -0
  240. katalyst_plugin_bard-0.1.1a1/web/src/graph/useGraphElements.ts +55 -0
  241. katalyst_plugin_bard-0.1.1a1/web/src/graph/useGraphFraming.ts +77 -0
  242. katalyst_plugin_bard-0.1.1a1/web/src/graph/useGraphSearch.ts +23 -0
  243. katalyst_plugin_bard-0.1.1a1/web/src/graph/useGraphTooltip.ts +51 -0
  244. katalyst_plugin_bard-0.1.1a1/web/src/graph/useSelectionHighlight.ts +87 -0
  245. katalyst_plugin_bard-0.1.1a1/web/src/hooks/use-mobile.ts +19 -0
  246. katalyst_plugin_bard-0.1.1a1/web/src/host/boundary.test.ts +271 -0
  247. katalyst_plugin_bard-0.1.1a1/web/src/host/context.tsx +123 -0
  248. katalyst_plugin_bard-0.1.1a1/web/src/host/index.test.tsx +488 -0
  249. katalyst_plugin_bard-0.1.1a1/web/src/host/index.ts +559 -0
  250. katalyst_plugin_bard-0.1.1a1/web/src/host/props.ts +53 -0
  251. katalyst_plugin_bard-0.1.1a1/web/src/host/route.test.ts +116 -0
  252. katalyst_plugin_bard-0.1.1a1/web/src/host/route.ts +111 -0
  253. katalyst_plugin_bard-0.1.1a1/web/src/host/slots.integration.test.tsx +216 -0
  254. katalyst_plugin_bard-0.1.1a1/web/src/host/taxonomy-api.test.ts +109 -0
  255. katalyst_plugin_bard-0.1.1a1/web/src/host/taxonomy-api.ts +209 -0
  256. katalyst_plugin_bard-0.1.1a1/web/src/host/useRoute.ts +61 -0
  257. katalyst_plugin_bard-0.1.1a1/web/src/kit/README.md +76 -0
  258. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/AssistantPanel.tsx +184 -0
  259. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/BusyIndicator.tsx +58 -0
  260. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/ConfidenceBars.tsx +44 -0
  261. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/ProposalCard.tsx +131 -0
  262. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/ThreadHistory.tsx +105 -0
  263. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/ai.stories.tsx +207 -0
  264. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/ai.test.tsx +282 -0
  265. katalyst_plugin_bard-0.1.1a1/web/src/kit/ai/index.ts +14 -0
  266. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/AddTile.tsx +58 -0
  267. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/BoardSection.tsx +45 -0
  268. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/BoardTitle.tsx +33 -0
  269. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/CollapsibleStrip.tsx +182 -0
  270. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/ItemCard.tsx +169 -0
  271. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/Lane.tsx +133 -0
  272. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/QuickAddPills.tsx +50 -0
  273. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/Tile.tsx +118 -0
  274. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/board.stories.tsx +342 -0
  275. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/board.test.tsx +364 -0
  276. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/index.ts +15 -0
  277. katalyst_plugin_bard-0.1.1a1/web/src/kit/board/surface.ts +55 -0
  278. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/ChangeRow.tsx +111 -0
  279. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/ChangesetTray.tsx +207 -0
  280. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/changeset.stories.tsx +260 -0
  281. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/changeset.test.tsx +151 -0
  282. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/index.ts +24 -0
  283. katalyst_plugin_bard-0.1.1a1/web/src/kit/changeset/run-status.ts +69 -0
  284. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/ChipToggleGroup.tsx +65 -0
  285. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/ComposePanel.tsx +156 -0
  286. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/FieldHeading.tsx +50 -0
  287. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/GhostCard.tsx +48 -0
  288. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/SuggestionChecklist.tsx +81 -0
  289. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/TemplatePicker.tsx +104 -0
  290. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/ValidatedNameField.tsx +106 -0
  291. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/compose.stories.tsx +297 -0
  292. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/compose.test.tsx +283 -0
  293. katalyst_plugin_bard-0.1.1a1/web/src/kit/compose/index.ts +19 -0
  294. katalyst_plugin_bard-0.1.1a1/web/src/kit/index.ts +18 -0
  295. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/AppFrame.tsx +125 -0
  296. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/AppHeader.tsx +95 -0
  297. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/ModeControl.tsx +75 -0
  298. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/index.ts +7 -0
  299. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/layout.stories.tsx +197 -0
  300. katalyst_plugin_bard-0.1.1a1/web/src/kit/layout/layout.test.tsx +153 -0
  301. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/NavSection.tsx +125 -0
  302. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/TreeNav.tsx +259 -0
  303. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/fixtures.ts +77 -0
  304. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/index.ts +8 -0
  305. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/nav.stories.tsx +80 -0
  306. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/nav.test.tsx +202 -0
  307. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/row.ts +18 -0
  308. katalyst_plugin_bard-0.1.1a1/web/src/kit/nav/tree.ts +61 -0
  309. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/FileList.tsx +59 -0
  310. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/KeyValueEditor.tsx +266 -0
  311. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/NestedList.tsx +129 -0
  312. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/OverlayPanel.tsx +163 -0
  313. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/PanelTabs.tsx +119 -0
  314. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/PropertyGrid.tsx +44 -0
  315. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/RelationGraph.tsx +133 -0
  316. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/RowActions.tsx +61 -0
  317. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/SearchAdd.tsx +205 -0
  318. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/index.ts +22 -0
  319. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/panel.stories.tsx +428 -0
  320. katalyst_plugin_bard-0.1.1a1/web/src/kit/panel/panel.test.tsx +373 -0
  321. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/ChangeSurface.tsx +29 -0
  322. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/IssueBadge.tsx +66 -0
  323. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/Overline.tsx +48 -0
  324. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/Pill.tsx +21 -0
  325. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/StatusPill.tsx +58 -0
  326. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/change-state.ts +41 -0
  327. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/glyphs.ts +36 -0
  328. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/icons.tsx +12 -0
  329. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/index.ts +14 -0
  330. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/primitives.stories.tsx +160 -0
  331. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/primitives.test.tsx +179 -0
  332. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/tags.tsx +35 -0
  333. katalyst_plugin_bard-0.1.1a1/web/src/kit/primitives/variants.ts +75 -0
  334. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/ThemeScope.test.tsx +42 -0
  335. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/ThemeScope.tsx +26 -0
  336. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/esimplicity.css +121 -0
  337. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/index.css +3 -0
  338. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/index.ts +7 -0
  339. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/status.css +73 -0
  340. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/theme.stories.tsx +84 -0
  341. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/theme.ts +19 -0
  342. katalyst_plugin_bard-0.1.1a1/web/src/kit/theme/tokens.ts +21 -0
  343. katalyst_plugin_bard-0.1.1a1/web/src/main.tsx +13 -0
  344. katalyst_plugin_bard-0.1.1a1/web/src/schema/NodeAddress.tsx +72 -0
  345. katalyst_plugin_bard-0.1.1a1/web/src/schema/NodeDetail.test.tsx +189 -0
  346. katalyst_plugin_bard-0.1.1a1/web/src/schema/NodeDetail.tsx +127 -0
  347. katalyst_plugin_bard-0.1.1a1/web/src/schema/fields.test.ts +150 -0
  348. katalyst_plugin_bard-0.1.1a1/web/src/schema/fields.ts +107 -0
  349. katalyst_plugin_bard-0.1.1a1/web/src/schema/identity.test.ts +135 -0
  350. katalyst_plugin_bard-0.1.1a1/web/src/schema/identity.ts +117 -0
  351. katalyst_plugin_bard-0.1.1a1/web/src/schema/node-location.ts +42 -0
  352. katalyst_plugin_bard-0.1.1a1/web/src/schema/registry.test.ts +113 -0
  353. katalyst_plugin_bard-0.1.1a1/web/src/schema/registry.ts +116 -0
  354. katalyst_plugin_bard-0.1.1a1/web/src/schema/renderers.tsx +135 -0
  355. katalyst_plugin_bard-0.1.1a1/web/src/shell/refresh-button.test.tsx +41 -0
  356. katalyst_plugin_bard-0.1.1a1/web/src/shell/refresh-button.tsx +36 -0
  357. katalyst_plugin_bard-0.1.1a1/web/src/shell/sidebar-state.test.ts +40 -0
  358. katalyst_plugin_bard-0.1.1a1/web/src/shell/sidebar-state.ts +27 -0
  359. katalyst_plugin_bard-0.1.1a1/web/src/shell/sidebar.stories.tsx +100 -0
  360. katalyst_plugin_bard-0.1.1a1/web/src/shell/view-nav.test.tsx +81 -0
  361. katalyst_plugin_bard-0.1.1a1/web/src/shell/view-nav.tsx +126 -0
  362. katalyst_plugin_bard-0.1.1a1/web/src/slots/SlotHost.tsx +50 -0
  363. katalyst_plugin_bard-0.1.1a1/web/src/slots/registry.test.ts +163 -0
  364. katalyst_plugin_bard-0.1.1a1/web/src/slots/registry.ts +153 -0
  365. katalyst_plugin_bard-0.1.1a1/web/src/styles.css +290 -0
  366. katalyst_plugin_bard-0.1.1a1/web/src/ui/chat.stories.tsx +57 -0
  367. katalyst_plugin_bard-0.1.1a1/web/src/ui/elements.stories.tsx +325 -0
  368. katalyst_plugin_bard-0.1.1a1/web/src/ui/system-wing.stories.tsx +2403 -0
  369. katalyst_plugin_bard-0.1.1a1/web/src/ui/system-wing.test.tsx +303 -0
  370. katalyst_plugin_bard-0.1.1a1/web/src/useAsync.ts +41 -0
  371. katalyst_plugin_bard-0.1.1a1/web/src/useHostData.ts +193 -0
  372. katalyst_plugin_bard-0.1.1a1/web/src/views/KindsView.test.tsx +136 -0
  373. katalyst_plugin_bard-0.1.1a1/web/src/views/KindsView.tsx +278 -0
  374. katalyst_plugin_bard-0.1.1a1/web/src/views/NodesView.test.tsx +187 -0
  375. katalyst_plugin_bard-0.1.1a1/web/src/views/NodesView.tsx +468 -0
  376. katalyst_plugin_bard-0.1.1a1/web/src/views/SchemaGraphPanel.tsx +253 -0
  377. katalyst_plugin_bard-0.1.1a1/web/src/views/WingsView.test.tsx +273 -0
  378. katalyst_plugin_bard-0.1.1a1/web/src/views/WingsView.tsx +441 -0
  379. katalyst_plugin_bard-0.1.1a1/web/src/views/builtins.ts +67 -0
  380. katalyst_plugin_bard-0.1.1a1/web/src/views/kind-detail.ts +41 -0
  381. katalyst_plugin_bard-0.1.1a1/web/src/views/node-graph.test.ts +145 -0
  382. katalyst_plugin_bard-0.1.1a1/web/src/views/node-graph.ts +176 -0
  383. katalyst_plugin_bard-0.1.1a1/web/src/views/registry.test.ts +137 -0
  384. katalyst_plugin_bard-0.1.1a1/web/src/views/registry.ts +177 -0
  385. katalyst_plugin_bard-0.1.1a1/web/src/views/schema-graph.test.ts +199 -0
  386. katalyst_plugin_bard-0.1.1a1/web/src/views/schema-graph.ts +200 -0
  387. katalyst_plugin_bard-0.1.1a1/web/src/views/wing-graph.test.ts +143 -0
  388. katalyst_plugin_bard-0.1.1a1/web/src/views/wing-graph.ts +213 -0
  389. katalyst_plugin_bard-0.1.1a1/web/tsconfig.json +46 -0
  390. katalyst_plugin_bard-0.1.1a1/web/tsconfig.server.json +23 -0
  391. katalyst_plugin_bard-0.1.1a1/web/vite/shared-modules.test.ts +108 -0
  392. katalyst_plugin_bard-0.1.1a1/web/vite/shared-modules.ts +129 -0
  393. katalyst_plugin_bard-0.1.1a1/web/vite.config.ts +37 -0
  394. katalyst_plugin_bard-0.1.1a1/web/vitest.contribution.config.ts +43 -0
  395. katalyst_plugin_bard-0.1.1a1/web/vitest.setup.ts +41 -0
  396. katalyst_plugin_bard-0.1.1a1/xspec/README.md +27 -0
  397. katalyst_plugin_bard-0.1.1a1/xspec/fixtures/tree-demo/package.json +1 -0
  398. katalyst_plugin_bard-0.1.1a1/xspec/fixtures/tree-demo/src/TreeDemo.tsx +35 -0
  399. katalyst_plugin_bard-0.1.1a1/xspec/package-lock.json +539 -0
  400. katalyst_plugin_bard-0.1.1a1/xspec/package.json +11 -0
@@ -0,0 +1,123 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ # Not a Python build directory: Bard's SPA keeps shared helpers (utils.ts, download.ts) in
19
+ # src/lib, and ignoring it left a fresh clone unable to build or test the SPA.
20
+ !plugins/bard/web/src/lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+
30
+ # PyInstaller
31
+ *.manifest
32
+ *.spec
33
+
34
+ # Installer logs
35
+ pip-log.txt
36
+ pip-delete-this-directory.txt
37
+
38
+ # Unit test / coverage reports
39
+ htmlcov/
40
+ .tox/
41
+ .nox/
42
+ .coverage
43
+ .coverage.*
44
+ .cache
45
+ nosetests.xml
46
+ coverage.xml
47
+ *.cover
48
+ *.py,cover
49
+ .hypothesis/
50
+ .pytest_cache/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Environments
57
+ .env
58
+ .venv
59
+ env/
60
+ venv/
61
+ ENV/
62
+ env.bak/
63
+ venv.bak/
64
+
65
+ # Spyder project settings
66
+ .spyderproject
67
+ .spyproject
68
+
69
+ # Rope project settings
70
+ .ropeproject
71
+
72
+ # mkdocs documentation
73
+ /site
74
+
75
+ # mypy / pyright
76
+ .mypy_cache/
77
+ .dmypy.json
78
+ dmypy.json
79
+ .pyright/
80
+
81
+ # Ruff
82
+ .ruff_cache/
83
+
84
+ # IDE
85
+ .idea/
86
+ .vscode/
87
+ *.swp
88
+ *.swo
89
+ *~
90
+
91
+ # OS
92
+ .DS_Store
93
+ Thumbs.db
94
+
95
+ # Local configuration
96
+ *.local
97
+
98
+ # Browser/Playwright state files
99
+ browser-state-*.json
100
+
101
+ # Agent harness scratch (run exhaust, never the design bundle)
102
+ .opencode/sessions/
103
+ .opencode/analysis/
104
+ .opencode/package-lock.json
105
+
106
+ # Build artifacts
107
+ site/
108
+ stack-tests/cucumber-report/
109
+ stack-tests/test-results/
110
+
111
+ # Generated artifacts (rebuild with `just generate-schemas`)
112
+ taxonomy/src/katalyst_taxonomy/engine/generated/
113
+ .worktrees/
114
+ .plan-74-75-76-77.md
115
+ .HANDOFF-scaffolding-wiring.md
116
+ .HANDOFF-2-cicd-migration.md
117
+ .HANDOFF-action-execution-fixes.md
118
+ .HANDOFF-bdd-coverage.md
119
+ .HANDOFF-*.md
120
+ docs/superpowers/
121
+
122
+ # Node dependencies — installed, never committed
123
+ node_modules/
@@ -0,0 +1,138 @@
1
+ # Changelog
2
+
3
+ All notable changes to Katalyst Bard are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ---
9
+
10
+ ## [Unreleased]
11
+
12
+ ### Added (host contract 0.1.7)
13
+
14
+ - **Refresh** in the shell header re-reads the schema, kinds, taxonomy and backends,
15
+ keeping the view, its route, the sidebar and open forms; disabled and spinning while
16
+ the read is in flight. The stopgap for changes made outside Bard (#269).
17
+ `useHost().refresh()` and `useHost().refreshing` offer the same to contributions
18
+ (optional). Additive: earlier contributions still load.
19
+
20
+ ### Added (host contract 0.1.2)
21
+
22
+ - `useHost().taxonomy.previewCreate(request)` (the create dry run; not a write, no
23
+ re-read) and `unrelate({source, rel_type, target})` (`DELETE /api/taxonomy/relationships`,
24
+ a gated write); `CreateNodeRequest.scaffold_variant`; `CreatedNode.notes`; types
25
+ `CreatePreview`, `PlannedFile`. Both methods are optional on `TaxonomyApi`. Additive:
26
+ `^0.1.0`/`^0.1.1` contributions still load.
27
+
28
+ ### Changed (Settings follow-ups)
29
+
30
+ - **"Saved to …" stays after a save that is not in effect.** A refresh never unmounts the
31
+ view on screen (hidden while the host re-reads or a read fails), and a node read that
32
+ fails while the server's state is still being re-read is not reported as an error.
33
+ - **API access**: no "from the next start" — the API applies a change at once; origins the
34
+ API was started with (`--cors`) are listed apart.
35
+ - **A plugin's config is checked by the API** against the plugin's schema as you type, in
36
+ its panel; Apply waits for it.
37
+
38
+ ### Fixed
39
+
40
+ - **`--api-port N` is honoured or the start fails naming it**; it never fell back to
41
+ another port, though the help said so. A failed API start is an error, not a traceback.
42
+ - **`KATALYST_CONFIG_WRITE=1 kata tax bard serve` gets an API that writes**: a running one
43
+ that does not is restarted with writes, as the desktop app does, and Bard says so.
44
+ - **An `--api-url` API that refuses configuration writes is said to**: by the launcher
45
+ (desktop, or serve with `KATALYST_CONFIG_WRITE=1`) and by Settings, which is read-only
46
+ with the reason — `/api/settings/capability` also asks the API's `/status`
47
+ `config_writes` (`ConfigGateway.configWrites`).
48
+ - Help and errors name `just build` / `just desktop-build` in `plugins/bard` (there is no
49
+ `just bard-build`); a stale CORS note in `settings-capability.ts` is corrected.
50
+ - The sdist no longer lists the removed `docs` directory; the slot-docs test skips when
51
+ the site's docs are absent.
52
+
53
+ ### Added
54
+
55
+ - **Settings covers the whole configuration file.** Backends of every type the API serves
56
+ (`GET /config/fields`), each rendered from its fields, credentials write-only; a
57
+ plugin's `priority` and `config` (typed from its `configSchema`, else YAML); a
58
+ **General** card for `metadata`, `outputFormat` and `workspace`; a sourced profile's
59
+ `profile` and `token_env`; an **API access** card for the CORS allowlist
60
+ (`/api/access/cors`). The draft is checked by the API (`POST /api/config/validate`)
61
+ and its problems are shown in the form; a refused save lists each reason.
62
+
63
+ ### Removed
64
+
65
+ - The hard-coded per-type `FIELDS` map, `BACKEND_TYPES`/`READ_ONLY_TYPES` and the
66
+ per-type backend setting checks in `validate.ts`: the API owns them.
67
+
68
+ ### Changed
69
+
70
+ - **Every request to the taxonomy API carries its token.** The launcher passes
71
+ `KATALYST_API_TOKEN` (from the API's state record, or this environment for `--api-url`);
72
+ the server and desktop shell read the record on each request
73
+ (`server/adapters/api-token.ts`) and fall back to `KATALYST_API_TOKEN`. Plugin routes
74
+ (`/api/ext/*`) carry it too. The write-token reader and `WRITES_DISABLED_UPSTREAM` are
75
+ gone: an API without writes answers its own `403`.
76
+ - **A contribution's views are listed under its package's own sidebar heading**, never in
77
+ Explore (which holds Bard's own Wings, Kinds and Nodes; Settings stays in the footer).
78
+ The heading is the display name the contributing distribution declares once, under the
79
+ new `katalyst_bard.package` entry point (`display_name = "pkg.module:NAME"`, a string);
80
+ every contribution it declares merges under it. A view's `section` (or the manifest's
81
+ new `spec.section`) is a subsection inside it. A contribution whose package declares no
82
+ display name, or a main view with no section, is refused and named (by
83
+ `build-contribution`, the server and the loader) rather than falling into Explore.
84
+ `BARD_CONTRIBUTIONS` entries carry `package`.
85
+
86
+ ### Added
87
+
88
+ - **`kata tax bard serve|desktop --no-contributions`** (or `BARD_NO_CONTRIBUTIONS=1`, which
89
+ the server and desktop shell also read): a plain Bard, with none of the installed
90
+ packages' views. A launcher that loads them sets the variable empty, so a product's
91
+ launcher always loads them.
92
+ - **Sourced profiles in Settings.** A profile read from elsewhere (`source:` in the
93
+ config) is marked read-only in the profile list, and its page shows the source, the
94
+ profile in it, the pin and last fetch, its pinned backends and the clones they read, with
95
+ "Check source" (is it ahead?) and "Sync now" (gated like every write) instead of any
96
+ editing. Setup will not connect a backend into one. Bard's server forwards
97
+ `GET /api/config/sources` and `POST /api/config/sources/sync`.
98
+ - **Runtime-loaded contributions.** A package ships a built contribution and declares it
99
+ under the `katalyst_bard.contributions` entry point; the launcher passes the installed ones
100
+ to the server, which lists them at `GET /api/contributions` and serves their modules (web
101
+ and desktop), and the SPA loads and registers them. A contribution is a plain ES module
102
+ importing React and `@katalyst/bard-host` by name; the page's import map resolves those to
103
+ the host's own instances, so any bundler that leaves them external works
104
+ (`kata tax bard build-contribution` is esbuild set up that way). An incompatible
105
+ `hostRange`, a missing file or a failing module is skipped and named, never fatal. See
106
+ `docs/plugins/bard/contributions.md` at the repository root; `web/vitest.contribution.config.ts` runs a contribution's tests
107
+ against the host.
108
+ - **Sidebar sections**: a view's `section` lists it under its own heading.
109
+ - **Contributions can write nodes and read a plugin's routes** (host contract 0.1.1):
110
+ `useHost().taxonomy` creates, updates and relates nodes through the taxonomy's validated
111
+ routes and calls the routes installed taxonomy plugins add under `/ext/<plugin>/`;
112
+ `useHost().writes` says whether this deployment may write, and why not. Bard's server
113
+ forwards `POST/PATCH /api/taxonomy/nodes…` and `POST /api/taxonomy/relationships` as gated
114
+ writes, and `GET`/`POST /api/ext/*` as reads without the write token.
115
+ - **Release workflow** (`.github/workflows/release-bard.yml`, tags `bard-vX.Y.Z`), so bard
116
+ can be published to PyPI and depended on: katalyst-forge now lists it, making
117
+ `kata tax bard serve` part of a forge install.
118
+ - **Dependency floors match the runtime it needs**: `katalyst-taxonomy>=5,<6`.
119
+
120
+ - **Extracted into its own repository** from `katalyst-taxonomy/plugins/bard`, preserving history. Bard is consumed as an installable plugin via the `katalyst_taxonomy.plugins` and `katalyst_taxonomy.cli` entry points rather than vendored into the taxonomy workspace.
121
+ - **Schema-driven rendering core.** Node kinds are rendered from their own `NodeDefinition` — display labels, field order, types, and constraints all come from the taxonomy's schema registry, so a kind bard has never seen renders correctly. `src/schema/NodeDetail.test.tsx` proves this against a kind fabricated in the test file.
122
+ - **Field renderer registry** resolving `kind.field` → field name → `allowed_values` → `ref_target_kind` → `field_type` → JSON. `allowed_values` and `ref_target_kind` deliberately outrank `field_type`, since a `field_type: "string"` field carrying either is semantically an enum or a link. An unknown `field_type` degrades to JSON rather than crashing.
123
+ - **View registry** where a view declares the wings or kinds it applies to, so one build adapts to any deployment without conditionals in the shell.
124
+ - **Express server** serving the SPA and `/api` from one process on one origin — required by Databricks Apps, which permits only one service to bind the assigned port and does not allow customising CORS on its reverse proxy.
125
+ - **`kata tax bard serve`** — Python launcher that ensures a taxonomy API is reachable, starts the Node server, and verifies it is actually serving before reporting success.
126
+ - **Container and Databricks App support.** `Dockerfile` and `app.yaml`. `loadConfig()` reads `DATABRICKS_APP_PORT` and defaults `HOST` to `0.0.0.0` when present.
127
+ - **Outdated-API detection.** `HttpSchemaGateway` translates a `/schema` 404 into an explicit "this API predates the schema API" message rather than surfacing a bare status code.
128
+ - **CI bundle-self-containment check** that runs the built server from a directory with no `node_modules` anywhere above it, plus a Docker image smoke test asserting `/health` is 200 while `/api/ready` is 503 with no upstream.
129
+
130
+ ### Removed
131
+
132
+ - **`kata tax bard compose`** and `web/src/generated/composed.ts`: build-time composition is
133
+ replaced by runtime loading.
134
+
135
+ ### Notes
136
+
137
+ - The server is bundled by esbuild into a single self-contained `dist/server/index.cjs`. An unbundled emit cannot work: `web_dist/` ships inside the wheel with no `node_modules` above it, and Node resolves bare imports by walking up from the importing file.
138
+ - Bard holds no taxonomy data and has no data access of its own — it speaks HTTP to the taxonomy API and nothing else. Which backend that API uses (filesystem, Databricks, Neo4j, Postgres) is the API's concern.
@@ -0,0 +1,48 @@
1
+ # Bard — schema-driven taxonomy UI.
2
+ #
3
+ # Pure Node: bard reads everything over HTTP from the taxonomy API, so this
4
+ # image needs no Python, no taxonomy checkout, and no `kata` binary. Point it at
5
+ # an API with TAXONOMY_API_URL and it works against whichever backend that API
6
+ # is configured for (filesystem, Databricks, Neo4j, Postgres).
7
+
8
+ FROM node:22-alpine AS build
9
+ WORKDIR /app
10
+ # All workspace manifests must be present before `npm ci`, or npm cannot build
11
+ # the workspace tree. Contribution directories are copied whole rather than
12
+ # glob-selecting their package.json files: Docker's COPY flattens globs, which
13
+ # would put every package.json at the same path.
14
+ COPY package.json package-lock.json ./
15
+ COPY web/package.json ./web/
16
+ COPY wings ./wings/
17
+ COPY plugins-ui ./plugins-ui/
18
+ RUN npm ci
19
+ COPY web/ ./web/
20
+ RUN npm run build
21
+
22
+ FROM node:22-alpine AS runtime
23
+ WORKDIR /app
24
+ ENV NODE_ENV=production
25
+
26
+ # The server is bundled into a single self-contained CJS file, so the runtime
27
+ # stage needs no package.json and no node_modules at all.
28
+ COPY --from=build /app/web/dist ./dist
29
+
30
+ # Run unprivileged. The node image ships a `node` user.
31
+ USER node
32
+
33
+ # 0.0.0.0 is required in any container; binding loopback makes the app
34
+ # unreachable through a reverse proxy.
35
+ ENV HOST=0.0.0.0 \
36
+ PORT=5273 \
37
+ WEB_DIST_DIR=/app/dist/web \
38
+ TAXONOMY_API_URL=http://127.0.0.1:8000
39
+
40
+ EXPOSE 5273
41
+
42
+ # /health deliberately does not check the upstream API: a liveness probe that
43
+ # fails when a dependency is down restarts the container for a problem
44
+ # restarting cannot fix. Use /api/ready for readiness.
45
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
46
+ CMD node -e "fetch('http://127.0.0.1:'+(process.env.PORT||5273)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
47
+
48
+ CMD ["node", "dist/server/index.cjs"]
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.5
2
+ Name: katalyst-plugin-bard
3
+ Version: 0.1.1a1
4
+ Summary: Bard — a schema-driven web UI framework for the Katalyst taxonomy
5
+ Project-URL: Repository, https://github.com/esimplicityinc/katalyst-bard
6
+ Author: eSimplicity
7
+ License: Proprietary
8
+ Keywords: architecture,katalyst,plugin,taxonomy,ui
9
+ Requires-Python: >=3.12
10
+ Requires-Dist: click>=8.1
11
+ Requires-Dist: katalyst-taxonomy-mcp<5,>=4
12
+ Requires-Dist: katalyst-taxonomy<6,>=5
13
+ Description-Content-Type: text/markdown
14
+
15
+ # Bard
16
+
17
+ A schema-driven web and desktop UI for the Katalyst taxonomy: `kata tax bard serve` and
18
+ `kata tax bard desktop`. It renders every kind the connected taxonomy has from the kind's
19
+ own definition, edits your configuration in Settings, and loads the views other installed
20
+ packages contribute.
21
+
22
+ Documentation is on the docs site:
23
+
24
+ - [Bard](../../docs/plugins/bard.md): running it, the API and its token, configuration
25
+ writes, Settings and product sections.
26
+ - [Writing a contribution](../../docs/plugins/bard/contributions.md): adding a view to Bard
27
+ from your own package.
28
+ - [Composition architecture](../../docs/plugins/bard/composition.md): the host contract,
29
+ runtime loading, flags, slots and the desktop shell.
30
+
31
+ ## Install
32
+
33
+ Bard is discovered through the `katalyst_taxonomy.plugins` and `katalyst_taxonomy.cli`
34
+ entry points, so installing it beside `kata` is enough. It needs Node.js 20 or newer.
35
+
36
+ ```bash
37
+ pip install katalyst-plugin-bard
38
+ kata tax bard serve # in the browser
39
+ kata tax bard desktop # in a desktop window, settings editable
40
+ ```
41
+
42
+ ## From a checkout
43
+
44
+ ```bash
45
+ just build # npm install + build + stage assets in src/katalyst_plugin_bard/web_dist/
46
+ just desktop-build # also bundle the desktop shell
47
+ just serve # == kata tax bard serve
48
+ just dev # Express on 5273, Vite on 5173 proxying to it
49
+ just check # everything CI runs (lint, types, pytest, vitest)
50
+ ```
51
+
52
+ ## Without the plugin
53
+
54
+ Bard's server is plain Node and reads everything over HTTP, so it runs without Python, a
55
+ taxonomy checkout or `kata`:
56
+
57
+ ```bash
58
+ just docker
59
+ docker run -p 5273:5273 -e TAXONOMY_API_URL=https://taxonomy.example.com \
60
+ -e KATALYST_API_TOKEN=<its token> katalyst-bard:dev
61
+ ```
62
+
63
+ `app.yaml` is a Databricks Apps manifest. The server reads `DATABRICKS_APP_PORT` and binds
64
+ `0.0.0.0` when it is set; set `TAXONOMY_API_URL` to an API reachable from the workspace and
65
+ `KATALYST_API_TOKEN` to its token.
66
+
67
+ `GET /health` is liveness and does not touch the API; `GET /api/ready` reports whether the
68
+ API is reachable. Bard has no authentication of its own: do not expose it without putting
69
+ authentication in front of it.
70
+
71
+ ## Layout
72
+
73
+ ```
74
+ src/katalyst_plugin_bard/ the plugin: `kata tax bard`, the launcher, contribution discovery
75
+ web_dist/ built SPA, the bundled server (index.cjs) and desktop shell, in the wheel
76
+ web/server/ Express server and the transport-agnostic API handler
77
+ web/src/ React: the schema-driven renderer, views, Settings, host contract
78
+ apps/desktop/ Electron shell over the same API handler
79
+ schemas/ bard.manifest.schema.json, the contribution manifest schema
80
+ xspec/, layer/ the plugin's black-box contract and fixtures
81
+ ```
82
+
83
+ The server ships as one esbuild bundle because `web_dist/` sits in the wheel with no
84
+ `node_modules` above it.
@@ -0,0 +1,70 @@
1
+ # Bard
2
+
3
+ A schema-driven web and desktop UI for the Katalyst taxonomy: `kata tax bard serve` and
4
+ `kata tax bard desktop`. It renders every kind the connected taxonomy has from the kind's
5
+ own definition, edits your configuration in Settings, and loads the views other installed
6
+ packages contribute.
7
+
8
+ Documentation is on the docs site:
9
+
10
+ - [Bard](../../docs/plugins/bard.md): running it, the API and its token, configuration
11
+ writes, Settings and product sections.
12
+ - [Writing a contribution](../../docs/plugins/bard/contributions.md): adding a view to Bard
13
+ from your own package.
14
+ - [Composition architecture](../../docs/plugins/bard/composition.md): the host contract,
15
+ runtime loading, flags, slots and the desktop shell.
16
+
17
+ ## Install
18
+
19
+ Bard is discovered through the `katalyst_taxonomy.plugins` and `katalyst_taxonomy.cli`
20
+ entry points, so installing it beside `kata` is enough. It needs Node.js 20 or newer.
21
+
22
+ ```bash
23
+ pip install katalyst-plugin-bard
24
+ kata tax bard serve # in the browser
25
+ kata tax bard desktop # in a desktop window, settings editable
26
+ ```
27
+
28
+ ## From a checkout
29
+
30
+ ```bash
31
+ just build # npm install + build + stage assets in src/katalyst_plugin_bard/web_dist/
32
+ just desktop-build # also bundle the desktop shell
33
+ just serve # == kata tax bard serve
34
+ just dev # Express on 5273, Vite on 5173 proxying to it
35
+ just check # everything CI runs (lint, types, pytest, vitest)
36
+ ```
37
+
38
+ ## Without the plugin
39
+
40
+ Bard's server is plain Node and reads everything over HTTP, so it runs without Python, a
41
+ taxonomy checkout or `kata`:
42
+
43
+ ```bash
44
+ just docker
45
+ docker run -p 5273:5273 -e TAXONOMY_API_URL=https://taxonomy.example.com \
46
+ -e KATALYST_API_TOKEN=<its token> katalyst-bard:dev
47
+ ```
48
+
49
+ `app.yaml` is a Databricks Apps manifest. The server reads `DATABRICKS_APP_PORT` and binds
50
+ `0.0.0.0` when it is set; set `TAXONOMY_API_URL` to an API reachable from the workspace and
51
+ `KATALYST_API_TOKEN` to its token.
52
+
53
+ `GET /health` is liveness and does not touch the API; `GET /api/ready` reports whether the
54
+ API is reachable. Bard has no authentication of its own: do not expose it without putting
55
+ authentication in front of it.
56
+
57
+ ## Layout
58
+
59
+ ```
60
+ src/katalyst_plugin_bard/ the plugin: `kata tax bard`, the launcher, contribution discovery
61
+ web_dist/ built SPA, the bundled server (index.cjs) and desktop shell, in the wheel
62
+ web/server/ Express server and the transport-agnostic API handler
63
+ web/src/ React: the schema-driven renderer, views, Settings, host contract
64
+ apps/desktop/ Electron shell over the same API handler
65
+ schemas/ bard.manifest.schema.json, the contribution manifest schema
66
+ xspec/, layer/ the plugin's black-box contract and fixtures
67
+ ```
68
+
69
+ The server ships as one esbuild bundle because `web_dist/` sits in the wheel with no
70
+ `node_modules` above it.
@@ -0,0 +1,18 @@
1
+ # Databricks Apps runtime configuration.
2
+ #
3
+ # The platform assigns a port via DATABRICKS_APP_PORT and only one service may
4
+ # bind it. Bard serves the SPA and its API from a single Express process, which
5
+ # also sidesteps the platform's non-customisable CORS headers.
6
+ #
7
+ # loadConfig() reads DATABRICKS_APP_PORT directly and defaults HOST to 0.0.0.0
8
+ # when it is present, so no port wiring is needed here.
9
+ command:
10
+ - node
11
+ - dist/server/index.cjs
12
+ env:
13
+ - name: WEB_DIST_DIR
14
+ value: "./dist/web"
15
+ # Point this at a taxonomy API reachable from the workspace. Bard holds no
16
+ # taxonomy data of its own.
17
+ - name: TAXONOMY_API_URL
18
+ value: "http://127.0.0.1:8000"
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@katalyst/bard-desktop",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "description": "Bard desktop shell — Electron over the same API handler as the web build",
6
+ "main": "dist/main.cjs",
7
+ "scripts": {
8
+ "prebuild": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
9
+ "build": "esbuild src/main.ts --bundle --platform=node --target=node20 --format=cjs --outfile=dist/main.cjs --external:electron --sourcemap",
10
+ "start": "electron .",
11
+ "typecheck": "tsc --noEmit"
12
+ },
13
+ "dependencies": {
14
+ "@katalyst/bard": "*"
15
+ },
16
+ "devDependencies": {
17
+ "@types/node": "^22.10.2",
18
+ "electron": "33.4.11",
19
+ "esbuild": "^0.24.2",
20
+ "typescript": "^5.7.2"
21
+ }
22
+ }