spine-framework 0.1.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 (385) hide show
  1. package/.framework/README.md +129 -0
  2. package/.framework/cli/bin.cjs +14 -0
  3. package/.framework/cli/commands/agents.ts +153 -0
  4. package/.framework/cli/commands/auth.ts +94 -0
  5. package/.framework/cli/commands/create-app.ts +185 -0
  6. package/.framework/cli/commands/dev.ts +295 -0
  7. package/.framework/cli/commands/doctor.ts +442 -0
  8. package/.framework/cli/commands/generate.ts +332 -0
  9. package/.framework/cli/commands/init.ts +272 -0
  10. package/.framework/cli/commands/install-app.ts +391 -0
  11. package/.framework/cli/commands/items.ts +253 -0
  12. package/.framework/cli/commands/migrations.ts +141 -0
  13. package/.framework/cli/commands/pipelines.ts +166 -0
  14. package/.framework/cli/commands/status.ts +197 -0
  15. package/.framework/cli/commands/system.ts +184 -0
  16. package/.framework/cli/commands/test.ts +227 -0
  17. package/.framework/cli/commands/uninstall-app.ts +166 -0
  18. package/.framework/cli/context.ts +268 -0
  19. package/.framework/cli/env-loader.ts +36 -0
  20. package/.framework/cli/index.ts +106 -0
  21. package/.framework/cli/welcome.cjs +45 -0
  22. package/.framework/docs/API.md +384 -0
  23. package/.framework/docs/STABILITY.md +52 -0
  24. package/.framework/docs/admin-routes.md +76 -0
  25. package/.framework/docs/api-docs-progress.md +38 -0
  26. package/.framework/docs/api-governance.md +146 -0
  27. package/.framework/docs/api-testing-results.md +212 -0
  28. package/.framework/docs/apis/admin-configs.md +567 -0
  29. package/.framework/docs/apis/admin-data.md +272 -0
  30. package/.framework/docs/apis/index.md +231 -0
  31. package/.framework/docs/apis/internal.md +295 -0
  32. package/.framework/docs/apis/runtime.md +537 -0
  33. package/.framework/docs/assembly-launch-guide.md +138 -0
  34. package/.framework/docs/audit-results.md +590 -0
  35. package/.framework/docs/authorization-model.md +170 -0
  36. package/.framework/docs/db-api-inventory.md +95 -0
  37. package/.framework/docs/examples/custom-app/README.md +77 -0
  38. package/.framework/docs/examples/custom-function/README.md +27 -0
  39. package/.framework/docs/examples/custom-function/handler.ts +48 -0
  40. package/.framework/docs/examples/custom-webhook/README.md +68 -0
  41. package/.framework/docs/gap-remediation-backlog.md +103 -0
  42. package/.framework/docs/guides/cli-guide.md +224 -0
  43. package/.framework/docs/guides/getting-started.md +103 -0
  44. package/.framework/docs/guides/import-guide.md +193 -0
  45. package/.framework/docs/guides/testing-guide.md +229 -0
  46. package/.framework/docs/permission-examples.md +326 -0
  47. package/.framework/docs/ui-adoption-verification.md +111 -0
  48. package/.framework/docs/ui-api-coverage.md +84 -0
  49. package/.framework/docs/v2-compatibility-audit.md +228 -0
  50. package/.framework/functions/.gitkeep +1 -0
  51. package/.framework/functions/_shared/agent-runner.ts +1097 -0
  52. package/.framework/functions/_shared/app-manifest.ts +184 -0
  53. package/.framework/functions/_shared/audit.ts +150 -0
  54. package/.framework/functions/_shared/db.ts +174 -0
  55. package/.framework/functions/_shared/index.ts +382 -0
  56. package/.framework/functions/_shared/middleware.ts +490 -0
  57. package/.framework/functions/_shared/permissions.ts +1325 -0
  58. package/.framework/functions/_shared/pipeline-runner.ts +731 -0
  59. package/.framework/functions/_shared/principal.ts +760 -0
  60. package/.framework/functions/_shared/schema-utils.ts +967 -0
  61. package/.framework/functions/_shared/testing.ts +258 -0
  62. package/.framework/functions/_shared/trigger-engine.ts +425 -0
  63. package/.framework/functions/_shared/webhook-registration.ts +168 -0
  64. package/.framework/functions/_shared/webhook-registry.ts +129 -0
  65. package/.framework/functions/account-nodes.ts +111 -0
  66. package/.framework/functions/admin-data.ts +606 -0
  67. package/.framework/functions/ai-agents.ts +323 -0
  68. package/.framework/functions/api-keys.ts +376 -0
  69. package/.framework/functions/apps.ts +483 -0
  70. package/.framework/functions/auth.ts +196 -0
  71. package/.framework/functions/debug-auth.ts +107 -0
  72. package/.framework/functions/embeddings.ts +556 -0
  73. package/.framework/functions/integration-routes.ts +523 -0
  74. package/.framework/functions/integrations.ts +319 -0
  75. package/.framework/functions/item-progress.ts +272 -0
  76. package/.framework/functions/logs.ts +438 -0
  77. package/.framework/functions/observability.ts +275 -0
  78. package/.framework/functions/pipeline-executions.ts +494 -0
  79. package/.framework/functions/pipelines.ts +485 -0
  80. package/.framework/functions/prompt-configs.ts +339 -0
  81. package/.framework/functions/roles.ts +387 -0
  82. package/.framework/functions/system-cron.ts +742 -0
  83. package/.framework/functions/system.ts +323 -0
  84. package/.framework/functions/tests.ts +119 -0
  85. package/.framework/functions/timers.ts +357 -0
  86. package/.framework/functions/triggers.ts +563 -0
  87. package/.framework/functions/types.ts +604 -0
  88. package/.framework/migrations/000_foundation.sql +1256 -0
  89. package/.framework/migrations/001_seed.sql +92 -0
  90. package/.framework/migrations/002_seed_constraints.sql +13 -0
  91. package/.framework/migrations/003_auth_user_trigger.sql +59 -0
  92. package/.framework/src/App.tsx +126 -0
  93. package/.framework/src/apps/admin/index.tsx +173 -0
  94. package/.framework/src/components/AppWrapper.tsx +56 -0
  95. package/.framework/src/components/CustomAppLoader.tsx +116 -0
  96. package/.framework/src/components/admin/AdminListPage.tsx +151 -0
  97. package/.framework/src/components/admin/AdminSidebar.tsx +166 -0
  98. package/.framework/src/components/admin/AdminStatsCard.tsx +62 -0
  99. package/.framework/src/components/admin/SortableTableHeader.tsx +42 -0
  100. package/.framework/src/components/app-shell/GenericAppShell.tsx +181 -0
  101. package/.framework/src/components/app-shell/GenericDetailPage.tsx +200 -0
  102. package/.framework/src/components/app-shell/GenericListPage.tsx +116 -0
  103. package/.framework/src/components/app-sidebar.tsx +228 -0
  104. package/.framework/src/components/auth/ProtectedRoute.tsx +88 -0
  105. package/.framework/src/components/layout/AppShell.tsx +91 -0
  106. package/.framework/src/components/layout/Header.tsx +88 -0
  107. package/.framework/src/components/layout/Layout.tsx +95 -0
  108. package/.framework/src/components/layout/Sidebar.tsx +329 -0
  109. package/.framework/src/components/runtime/DataDetailHeader.tsx +77 -0
  110. package/.framework/src/components/runtime/DataDetailPage.tsx +171 -0
  111. package/.framework/src/components/runtime/DataFilters.tsx +91 -0
  112. package/.framework/src/components/runtime/DataHeader.tsx +68 -0
  113. package/.framework/src/components/runtime/DataListPage.tsx +124 -0
  114. package/.framework/src/components/runtime/DataStats.tsx +70 -0
  115. package/.framework/src/components/runtime/DataTable.tsx +174 -0
  116. package/.framework/src/components/runtime/SchemaDetailForm.tsx +134 -0
  117. package/.framework/src/components/runtime/index.ts +18 -0
  118. package/.framework/src/components/search-form.tsx +29 -0
  119. package/.framework/src/components/shared/AgentView.tsx +213 -0
  120. package/.framework/src/components/shared/FieldRenderer.tsx +478 -0
  121. package/.framework/src/components/shared/SchemaFields.tsx +226 -0
  122. package/.framework/src/components/ui/DataTable.tsx +343 -0
  123. package/.framework/src/components/ui/Form.tsx +281 -0
  124. package/.framework/src/components/ui/ItemCard.tsx +296 -0
  125. package/.framework/src/components/ui/ItemListView.tsx +308 -0
  126. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -0
  127. package/.framework/src/components/ui/Modal.tsx +61 -0
  128. package/.framework/src/components/ui/RichTextEditor.tsx +210 -0
  129. package/.framework/src/components/ui/accordion.tsx +82 -0
  130. package/.framework/src/components/ui/alert-dialog.tsx +197 -0
  131. package/.framework/src/components/ui/alert.tsx +76 -0
  132. package/.framework/src/components/ui/aspect-ratio.tsx +11 -0
  133. package/.framework/src/components/ui/avatar.tsx +110 -0
  134. package/.framework/src/components/ui/badge.tsx +49 -0
  135. package/.framework/src/components/ui/breadcrumb.tsx +122 -0
  136. package/.framework/src/components/ui/button-group.tsx +83 -0
  137. package/.framework/src/components/ui/button.tsx +65 -0
  138. package/.framework/src/components/ui/calendar.tsx +222 -0
  139. package/.framework/src/components/ui/card.tsx +100 -0
  140. package/.framework/src/components/ui/carousel.tsx +240 -0
  141. package/.framework/src/components/ui/chart.tsx +373 -0
  142. package/.framework/src/components/ui/checkbox.tsx +31 -0
  143. package/.framework/src/components/ui/collapsible.tsx +33 -0
  144. package/.framework/src/components/ui/combobox.tsx +299 -0
  145. package/.framework/src/components/ui/command.tsx +193 -0
  146. package/.framework/src/components/ui/context-menu.tsx +261 -0
  147. package/.framework/src/components/ui/dialog.tsx +165 -0
  148. package/.framework/src/components/ui/direction.tsx +22 -0
  149. package/.framework/src/components/ui/drawer.tsx +132 -0
  150. package/.framework/src/components/ui/dropdown-menu.tsx +269 -0
  151. package/.framework/src/components/ui/empty.tsx +104 -0
  152. package/.framework/src/components/ui/field.tsx +238 -0
  153. package/.framework/src/components/ui/hover-card.tsx +42 -0
  154. package/.framework/src/components/ui/input-group.tsx +153 -0
  155. package/.framework/src/components/ui/input-otp.tsx +87 -0
  156. package/.framework/src/components/ui/input.tsx +19 -0
  157. package/.framework/src/components/ui/item.tsx +196 -0
  158. package/.framework/src/components/ui/kbd.tsx +26 -0
  159. package/.framework/src/components/ui/label.tsx +22 -0
  160. package/.framework/src/components/ui/menubar.tsx +277 -0
  161. package/.framework/src/components/ui/native-select.tsx +61 -0
  162. package/.framework/src/components/ui/navigation-menu.tsx +164 -0
  163. package/.framework/src/components/ui/pagination.tsx +129 -0
  164. package/.framework/src/components/ui/popover.tsx +87 -0
  165. package/.framework/src/components/ui/progress.tsx +31 -0
  166. package/.framework/src/components/ui/radio-group.tsx +42 -0
  167. package/.framework/src/components/ui/resizable.tsx +50 -0
  168. package/.framework/src/components/ui/scroll-area.tsx +53 -0
  169. package/.framework/src/components/ui/select.tsx +195 -0
  170. package/.framework/src/components/ui/separator.tsx +26 -0
  171. package/.framework/src/components/ui/sheet.tsx +145 -0
  172. package/.framework/src/components/ui/sidebar.tsx +706 -0
  173. package/.framework/src/components/ui/skeleton.tsx +13 -0
  174. package/.framework/src/components/ui/slider.tsx +59 -0
  175. package/.framework/src/components/ui/sonner.tsx +47 -0
  176. package/.framework/src/components/ui/spinner.tsx +10 -0
  177. package/.framework/src/components/ui/switch.tsx +33 -0
  178. package/.framework/src/components/ui/table-primitives.tsx +141 -0
  179. package/.framework/src/components/ui/table.tsx +114 -0
  180. package/.framework/src/components/ui/tabs.tsx +90 -0
  181. package/.framework/src/components/ui/textarea.tsx +18 -0
  182. package/.framework/src/components/ui/toggle-group.tsx +89 -0
  183. package/.framework/src/components/ui/toggle.tsx +45 -0
  184. package/.framework/src/components/ui/tooltip.tsx +57 -0
  185. package/.framework/src/contexts/AppContext.tsx +133 -0
  186. package/.framework/src/contexts/AuthContext.tsx +371 -0
  187. package/.framework/src/hooks/use-mobile.ts +19 -0
  188. package/.framework/src/hooks/useApi.ts +526 -0
  189. package/.framework/src/hooks/useApps.ts +114 -0
  190. package/.framework/src/hooks/useEntityList.ts +190 -0
  191. package/.framework/src/hooks/useEntityRecord.ts +308 -0
  192. package/.framework/src/hooks/useForm.ts +307 -0
  193. package/.framework/src/hooks/useListSchema.ts +264 -0
  194. package/.framework/src/hooks/useSchemaRecord.ts +223 -0
  195. package/.framework/src/index.css +128 -0
  196. package/.framework/src/lib/api.ts +156 -0
  197. package/.framework/src/lib/supabase.ts +94 -0
  198. package/.framework/src/lib/utils.ts +317 -0
  199. package/.framework/src/main.tsx +27 -0
  200. package/.framework/src/pages/DashboardPage.tsx +181 -0
  201. package/.framework/src/pages/NotFoundPage.tsx +39 -0
  202. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +161 -0
  203. package/.framework/src/pages/admin/AIAgentsPage.tsx +318 -0
  204. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +199 -0
  205. package/.framework/src/pages/admin/APIKeysPage.tsx +303 -0
  206. package/.framework/src/pages/admin/AlertsConfigPage.tsx +523 -0
  207. package/.framework/src/pages/admin/AppDetailPage.tsx +493 -0
  208. package/.framework/src/pages/admin/AppsPage.tsx +355 -0
  209. package/.framework/src/pages/admin/DesignedPage.tsx +491 -0
  210. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +534 -0
  211. package/.framework/src/pages/admin/EmbeddingsPage.tsx +424 -0
  212. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +176 -0
  213. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +109 -0
  214. package/.framework/src/pages/admin/IntegratedDashboard.tsx +402 -0
  215. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +187 -0
  216. package/.framework/src/pages/admin/IntegrationsPage.tsx +301 -0
  217. package/.framework/src/pages/admin/LogsPage.tsx +283 -0
  218. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +85 -0
  219. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +470 -0
  220. package/.framework/src/pages/admin/PipelineDetailPage.tsx +183 -0
  221. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +279 -0
  222. package/.framework/src/pages/admin/PipelinesPage.tsx +390 -0
  223. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +299 -0
  224. package/.framework/src/pages/admin/PromptConfigsPage.tsx +292 -0
  225. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +434 -0
  226. package/.framework/src/pages/admin/RoleDetailPage.tsx +273 -0
  227. package/.framework/src/pages/admin/RolesPage.tsx +292 -0
  228. package/.framework/src/pages/admin/SelectTestPage.tsx +61 -0
  229. package/.framework/src/pages/admin/ShadcnTestPage.tsx +588 -0
  230. package/.framework/src/pages/admin/SimpleDashboard.tsx +387 -0
  231. package/.framework/src/pages/admin/TestRunDetailPage.tsx +172 -0
  232. package/.framework/src/pages/admin/TestingDashboard.tsx +257 -0
  233. package/.framework/src/pages/admin/TimerDetailPage.tsx +151 -0
  234. package/.framework/src/pages/admin/TimersPage.tsx +376 -0
  235. package/.framework/src/pages/admin/TriggerDetailPage.tsx +149 -0
  236. package/.framework/src/pages/admin/TriggersPage.tsx +381 -0
  237. package/.framework/src/pages/admin/TypeDetailPage.tsx +694 -0
  238. package/.framework/src/pages/admin/TypesPage.tsx +295 -0
  239. package/.framework/src/pages/auth/LoginPage.tsx +188 -0
  240. package/.framework/src/pages/auth/RegisterPage.tsx +163 -0
  241. package/.framework/src/pages/spine-framework/APIPage.tsx +17 -0
  242. package/.framework/src/pages/spine-framework/CLIPage.tsx +25 -0
  243. package/.framework/src/types/auth.ts +125 -0
  244. package/.framework/src/types/types.ts +407 -0
  245. package/STRUCTURE.md +150 -0
  246. package/config/components.json +25 -0
  247. package/config/deno.lock +108 -0
  248. package/config/package-lock.json +17183 -0
  249. package/config/postcss.config.cjs +10 -0
  250. package/config/tailwind.config.cjs +78 -0
  251. package/config/tsconfig.build.json +32 -0
  252. package/config/tsconfig.cli.json +18 -0
  253. package/config/tsconfig.json +41 -0
  254. package/config/tsconfig.node.json +17 -0
  255. package/config/tsconfig.node.tsbuildinfo +1 -0
  256. package/config/tsconfig.tsbuildinfo +1 -0
  257. package/config/typedoc.json +16 -0
  258. package/config/vite.config.d.ts +2 -0
  259. package/config/vite.config.ts +72 -0
  260. package/dist/cli/commands/agents.d.ts +39 -0
  261. package/dist/cli/commands/agents.d.ts.map +1 -0
  262. package/dist/cli/commands/auth.d.ts +36 -0
  263. package/dist/cli/commands/auth.d.ts.map +1 -0
  264. package/dist/cli/commands/create-app.d.ts +23 -0
  265. package/dist/cli/commands/create-app.d.ts.map +1 -0
  266. package/dist/cli/commands/dev.d.ts +39 -0
  267. package/dist/cli/commands/dev.d.ts.map +1 -0
  268. package/dist/cli/commands/doctor.d.ts +42 -0
  269. package/dist/cli/commands/doctor.d.ts.map +1 -0
  270. package/dist/cli/commands/generate.d.ts +36 -0
  271. package/dist/cli/commands/generate.d.ts.map +1 -0
  272. package/dist/cli/commands/init.d.ts +30 -0
  273. package/dist/cli/commands/init.d.ts.map +1 -0
  274. package/dist/cli/commands/install-app.d.ts +30 -0
  275. package/dist/cli/commands/install-app.d.ts.map +1 -0
  276. package/dist/cli/commands/items.d.ts +45 -0
  277. package/dist/cli/commands/items.d.ts.map +1 -0
  278. package/dist/cli/commands/migrations.d.ts +41 -0
  279. package/dist/cli/commands/migrations.d.ts.map +1 -0
  280. package/dist/cli/commands/pipelines.d.ts +40 -0
  281. package/dist/cli/commands/pipelines.d.ts.map +1 -0
  282. package/dist/cli/commands/status.d.ts +23 -0
  283. package/dist/cli/commands/status.d.ts.map +1 -0
  284. package/dist/cli/commands/system.d.ts +29 -0
  285. package/dist/cli/commands/system.d.ts.map +1 -0
  286. package/dist/cli/commands/test.d.ts +46 -0
  287. package/dist/cli/commands/test.d.ts.map +1 -0
  288. package/dist/cli/commands/uninstall-app.d.ts +23 -0
  289. package/dist/cli/commands/uninstall-app.d.ts.map +1 -0
  290. package/dist/cli/context.d.ts +88 -0
  291. package/dist/cli/context.d.ts.map +1 -0
  292. package/dist/cli/env-loader.d.ts +14 -0
  293. package/dist/cli/env-loader.d.ts.map +1 -0
  294. package/dist/cli/index.d.ts +41 -0
  295. package/dist/cli/index.d.ts.map +1 -0
  296. package/dist/functions/_shared/agent-runner.d.ts +156 -0
  297. package/dist/functions/_shared/agent-runner.d.ts.map +1 -0
  298. package/dist/functions/_shared/app-manifest.d.ts +68 -0
  299. package/dist/functions/_shared/app-manifest.d.ts.map +1 -0
  300. package/dist/functions/_shared/audit.d.ts +91 -0
  301. package/dist/functions/_shared/audit.d.ts.map +1 -0
  302. package/dist/functions/_shared/db.d.ts +125 -0
  303. package/dist/functions/_shared/db.d.ts.map +1 -0
  304. package/dist/functions/_shared/index.d.ts +298 -0
  305. package/dist/functions/_shared/index.d.ts.map +1 -0
  306. package/dist/functions/_shared/middleware.d.ts +315 -0
  307. package/dist/functions/_shared/middleware.d.ts.map +1 -0
  308. package/dist/functions/_shared/permissions.d.ts +626 -0
  309. package/dist/functions/_shared/permissions.d.ts.map +1 -0
  310. package/dist/functions/_shared/pipeline-runner.d.ts +124 -0
  311. package/dist/functions/_shared/pipeline-runner.d.ts.map +1 -0
  312. package/dist/functions/_shared/principal.d.ts +284 -0
  313. package/dist/functions/_shared/principal.d.ts.map +1 -0
  314. package/dist/functions/_shared/schema-utils.d.ts +181 -0
  315. package/dist/functions/_shared/schema-utils.d.ts.map +1 -0
  316. package/dist/functions/_shared/testing.d.ts +172 -0
  317. package/dist/functions/_shared/testing.d.ts.map +1 -0
  318. package/dist/functions/_shared/trigger-engine.d.ts +140 -0
  319. package/dist/functions/_shared/trigger-engine.d.ts.map +1 -0
  320. package/dist/functions/_shared/webhook-registration.d.ts +81 -0
  321. package/dist/functions/_shared/webhook-registration.d.ts.map +1 -0
  322. package/dist/functions/_shared/webhook-registry.d.ts +57 -0
  323. package/dist/functions/_shared/webhook-registry.d.ts.map +1 -0
  324. package/dist/functions/account-nodes.d.ts +48 -0
  325. package/dist/functions/account-nodes.d.ts.map +1 -0
  326. package/dist/functions/admin-data.d.ts +178 -0
  327. package/dist/functions/admin-data.d.ts.map +1 -0
  328. package/dist/functions/ai-agents.d.ts +125 -0
  329. package/dist/functions/ai-agents.d.ts.map +1 -0
  330. package/dist/functions/api-keys.d.ts +140 -0
  331. package/dist/functions/api-keys.d.ts.map +1 -0
  332. package/dist/functions/apps.d.ts +163 -0
  333. package/dist/functions/apps.d.ts.map +1 -0
  334. package/dist/functions/auth.d.ts +74 -0
  335. package/dist/functions/auth.d.ts.map +1 -0
  336. package/dist/functions/debug-auth.d.ts +33 -0
  337. package/dist/functions/debug-auth.d.ts.map +1 -0
  338. package/dist/functions/embeddings.d.ts +205 -0
  339. package/dist/functions/embeddings.d.ts.map +1 -0
  340. package/dist/functions/integration-routes.d.ts +45 -0
  341. package/dist/functions/integration-routes.d.ts.map +1 -0
  342. package/dist/functions/integrations.d.ts +124 -0
  343. package/dist/functions/integrations.d.ts.map +1 -0
  344. package/dist/functions/item-progress.d.ts +41 -0
  345. package/dist/functions/item-progress.d.ts.map +1 -0
  346. package/dist/functions/logs.d.ts +162 -0
  347. package/dist/functions/logs.d.ts.map +1 -0
  348. package/dist/functions/observability.d.ts +123 -0
  349. package/dist/functions/observability.d.ts.map +1 -0
  350. package/dist/functions/pipeline-executions.d.ts +190 -0
  351. package/dist/functions/pipeline-executions.d.ts.map +1 -0
  352. package/dist/functions/pipelines.d.ts +171 -0
  353. package/dist/functions/pipelines.d.ts.map +1 -0
  354. package/dist/functions/prompt-configs.d.ts +125 -0
  355. package/dist/functions/prompt-configs.d.ts.map +1 -0
  356. package/dist/functions/roles.d.ts +118 -0
  357. package/dist/functions/roles.d.ts.map +1 -0
  358. package/dist/functions/system-cron.d.ts +65 -0
  359. package/dist/functions/system-cron.d.ts.map +1 -0
  360. package/dist/functions/system.d.ts +29 -0
  361. package/dist/functions/system.d.ts.map +1 -0
  362. package/dist/functions/tests.d.ts +28 -0
  363. package/dist/functions/tests.d.ts.map +1 -0
  364. package/dist/functions/timers.d.ts +139 -0
  365. package/dist/functions/timers.d.ts.map +1 -0
  366. package/dist/functions/triggers.d.ts +203 -0
  367. package/dist/functions/triggers.d.ts.map +1 -0
  368. package/dist/functions/types.d.ts +151 -0
  369. package/dist/functions/types.d.ts.map +1 -0
  370. package/dist/src/types/types.d.ts +364 -0
  371. package/dist/src/types/types.d.ts.map +1 -0
  372. package/package.json +192 -0
  373. package/scripts/app-install-cli.ts +286 -0
  374. package/scripts/assemble-frontend.sh +79 -0
  375. package/scripts/assemble-functions.sh +62 -0
  376. package/scripts/assemble.sh +35 -0
  377. package/scripts/boundary-check.sh +106 -0
  378. package/scripts/build-manifest.sh +80 -0
  379. package/scripts/check-core-integrity.sh +82 -0
  380. package/scripts/ingest-chunks.cjs +202 -0
  381. package/scripts/kb-chunk-parser.cjs +312 -0
  382. package/scripts/kb-chunk-parser.ts +330 -0
  383. package/scripts/load-test-app-install.ts +484 -0
  384. package/scripts/netlify-dev-wrapper.sh +22 -0
  385. package/scripts/verify-integrity.sh +69 -0
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @module src/components/runtime/SchemaDetailForm
3
+ * @audience installer
4
+ * @layer frontend-component
5
+ * @stability stable
6
+ *
7
+ * Renders a `DetailView`'s sections as a schema-driven form. Each
8
+ * `DetailViewSection` becomes a white card containing a `SchemaFields`
9
+ * grid. Field definitions come from `DesignSchema.fields`; display widget
10
+ * overrides come from the view's per-field `ViewFieldConfig.display_type`.
11
+ *
12
+ * **Field source resolution:**
13
+ * - Field schema (`data_type`, `required`, `validation`, etc.) →
14
+ * `schema.fields[fieldName]`
15
+ * - Display widget override → `view.sections[n].fields[fieldName].display_type`
16
+ * - `system` fields read from `record[fieldName]`; custom fields read
17
+ * from `record.data[fieldName]` (split handled upstream by `DataDetailPage`)
18
+ *
19
+ * **Read vs edit rendering:** passes `readonly={!isEditing}` to `SchemaFields`
20
+ * so all field components switch between display and input mode.
21
+ *
22
+ * @seeAlso src/components/shared/SchemaFields.tsx
23
+ * @seeAlso src/types/types.ts (DesignSchema, DetailView)
24
+ * @seeAlso src/components/runtime/DataDetailPage.tsx (parent, owns form state)
25
+ */
26
+
27
+ import { DesignSchema, DetailView, DetailViewSection, FieldDefinition } from '../../types/types'
28
+ import { SchemaFields } from '../shared/SchemaFields'
29
+
30
+ /**
31
+ * Props for `SchemaDetailForm`.
32
+ *
33
+ * @prop schema - Full `DesignSchema` for field definitions and permissions
34
+ * @prop view - The `default_detail` `DetailView` from the schema
35
+ * @prop record - Raw fetched record (used in read-only mode)
36
+ * @prop isEditing - If true, renders input fields; false = read-only display
37
+ * @prop isCreating - If true, skips reading from `record` (no record yet)
38
+ * @prop permissions - Per-field `{ read, write }` map from `useEntityRecord`
39
+ * @prop formData - Controlled values for all fields (owned by `DataDetailPage`)
40
+ * @prop onFieldChange - Callback to update a single field value
41
+ */
42
+ interface SchemaDetailFormProps {
43
+ schema: DesignSchema
44
+ view: DetailView
45
+ record: any
46
+ isEditing: boolean
47
+ isCreating: boolean
48
+ permissions: Record<string, { read: boolean; write: boolean }>
49
+ formData: Record<string, any>
50
+ onFieldChange: (key: string, value: any) => void
51
+ }
52
+
53
+ /**
54
+ * Renders a schema-defined `DetailView` as a sectioned form.
55
+ *
56
+ * @param props - `SchemaDetailFormProps`
57
+ * @returns One card per `DetailViewSection`, or an empty-state message
58
+ * @sideEffects none (pure rendering)
59
+ */
60
+ export function SchemaDetailForm({
61
+ schema,
62
+ view,
63
+ record,
64
+ isEditing,
65
+ isCreating,
66
+ permissions,
67
+ formData,
68
+ onFieldChange
69
+ }: SchemaDetailFormProps) {
70
+
71
+ const renderSection = (section: DetailViewSection, sectionIndex: number) => {
72
+ const fieldNames = Array.isArray(section.fields) ? section.fields : Object.keys(section.fields || {})
73
+ const sectionFields = fieldNames.map((fieldName: string) => {
74
+ const fieldDef = schema.fields[fieldName]
75
+ if (!fieldDef) return null
76
+
77
+ return {
78
+ name: fieldName,
79
+ label: fieldDef.label,
80
+ data_type: fieldDef.data_type,
81
+ required: fieldDef.required,
82
+ validation: fieldDef.validation,
83
+ options: fieldDef.options,
84
+ permissions: fieldDef.permissions,
85
+ system: fieldDef.system
86
+ } as FieldDefinition
87
+ }).filter((field): field is NonNullable<typeof field> => field !== null)
88
+
89
+ // Build display_type map from view config — keeps field definitions clean
90
+ const displayTypes: Record<string, string> = {}
91
+ if (!Array.isArray(section.fields)) {
92
+ Object.entries(section.fields || {}).forEach(([fieldName, viewConfig]: [string, any]) => {
93
+ if (viewConfig.display_type) {
94
+ displayTypes[fieldName] = viewConfig.display_type
95
+ }
96
+ })
97
+ }
98
+
99
+ if (sectionFields.length === 0) return null
100
+
101
+ return (
102
+ <div key={sectionIndex} className="bg-white shadow rounded-lg p-6">
103
+ <h3 className="text-lg font-medium text-slate-900 mb-4">
104
+ {section.title}
105
+ </h3>
106
+
107
+ <SchemaFields
108
+ fields={sectionFields}
109
+ data={isCreating || isEditing ? formData : (record || {})}
110
+ readonly={!isEditing}
111
+ twoColumn={false}
112
+ onChange={onFieldChange}
113
+ displayTypes={displayTypes}
114
+ />
115
+ </div>
116
+ )
117
+ }
118
+
119
+ if (!view.sections || view.sections.length === 0) {
120
+ return (
121
+ <div className="bg-white shadow rounded-lg p-6">
122
+ <div className="text-center py-8">
123
+ <p className="text-slate-500">No fields configured for this view</p>
124
+ </div>
125
+ </div>
126
+ )
127
+ }
128
+
129
+ return (
130
+ <div className="space-y-6">
131
+ {view.sections.map((section, index) => renderSection(section, index))}
132
+ </div>
133
+ )
134
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @module src/components/runtime
3
+ * @audience installer
4
+ * @layer frontend-component
5
+ * @stability stable
6
+ *
7
+ * Barrel export for all schema-driven runtime page components.
8
+ * Import from this module to get type-safe access to all runtime UI primitives.
9
+ */
10
+
11
+ export { DataListPage } from './DataListPage'
12
+ export { DataDetailPage } from './DataDetailPage'
13
+ export { DataHeader } from './DataHeader'
14
+ export { DataStats } from './DataStats'
15
+ export { DataFilters } from './DataFilters'
16
+ export { DataTable } from './DataTable'
17
+ export { DataDetailHeader } from './DataDetailHeader'
18
+ export { SchemaDetailForm } from './SchemaDetailForm'
@@ -0,0 +1,29 @@
1
+ "use client"
2
+
3
+ import { Label } from "./ui/label"
4
+ import {
5
+ SidebarGroup,
6
+ SidebarGroupContent,
7
+ SidebarInput,
8
+ } from "./ui/sidebar"
9
+ import { SearchIcon } from "lucide-react"
10
+
11
+ export function SearchForm({ ...props }: React.ComponentProps<"form">) {
12
+ return (
13
+ <form {...props}>
14
+ <SidebarGroup className="py-0">
15
+ <SidebarGroupContent className="relative">
16
+ <Label htmlFor="search" className="sr-only">
17
+ Search
18
+ </Label>
19
+ <SidebarInput
20
+ id="search"
21
+ placeholder="Search the docs..."
22
+ className="pl-8"
23
+ />
24
+ <SearchIcon className="pointer-events-none absolute top-1/2 left-2 size-4 -translate-y-1/2 opacity-50 select-none" />
25
+ </SidebarGroupContent>
26
+ </SidebarGroup>
27
+ </form>
28
+ )
29
+ }
@@ -0,0 +1,213 @@
1
+ /**
2
+ * @component AgentView
3
+ * @audience installer
4
+ * @layer component
5
+ * @stability stable
6
+ *
7
+ * Agent View toggle component for exposing raw API data and code examples.
8
+ * Provides agents (and developers) with:
9
+ * - Raw JSON of current record/page data
10
+ * - Copy-pasteable API calls (curl/fetch)
11
+ * - Equivalent CLI commands
12
+ *
13
+ * **Usage:**
14
+ * ```tsx
15
+ * <AgentView
16
+ * data={recordData}
17
+ * endpoint="/.netlify/functions/items"
18
+ * method="GET"
19
+ * query={{ id: recordId }}
20
+ * />
21
+ * ```
22
+ *
23
+ * **Features:**
24
+ * - Collapsible panel (closed by default)
25
+ * - Copy to clipboard buttons
26
+ * - Syntax highlighting for JSON
27
+ * - Responsive layout
28
+ *
29
+ * @seeAlso hooks/useApi.ts (API call logging)
30
+ * @seeAlso pages/admin/* (admin pages using this component)
31
+ */
32
+
33
+ import React, { useState, useEffect } from 'react'
34
+ import { Code, Terminal, Copy, Check, ChevronDown, ChevronUp } from 'lucide-react'
35
+
36
+ interface AgentViewProps {
37
+ /** The raw data object to display */
38
+ data: any
39
+ /** API endpoint path */
40
+ endpoint: string
41
+ /** HTTP method */
42
+ method?: 'GET' | 'POST' | 'PATCH' | 'DELETE'
43
+ /** Query parameters used */
44
+ query?: Record<string, any>
45
+ /** Request body (for POST/PATCH) */
46
+ body?: any
47
+ /** Optional title override */
48
+ title?: string
49
+ }
50
+
51
+ export function AgentView({
52
+ data,
53
+ endpoint,
54
+ method = 'GET',
55
+ query,
56
+ body,
57
+ title = 'Agent View'
58
+ }: AgentViewProps) {
59
+ const [isOpen, setIsOpen] = useState(false)
60
+ const [copied, setCopied] = useState<string | null>(null)
61
+
62
+ // Build API URL
63
+ const baseUrl = window.location.origin
64
+ const fullUrl = `${baseUrl}${endpoint}${query ? '?' + new URLSearchParams(query).toString() : ''}`
65
+
66
+ // Generate curl command
67
+ const curlCmd = `curl -X ${method} \\
68
+ ${method !== 'GET' ? `-H "Content-Type: application/json" \\
69
+ ` : ''}${baseUrl}${endpoint}${query ? '?' + new URLSearchParams(query).toString() : ''}${method !== 'GET' && body ? ` \\
70
+ -d '${JSON.stringify(body, null, 2)}'` : ''}`
71
+
72
+ // Generate fetch code
73
+ const fetchCode = `fetch('${baseUrl}${endpoint}${query ? '?' + new URLSearchParams(query).toString() : ''}', {
74
+ method: '${method}',${method !== 'GET' ? `
75
+ headers: { 'Content-Type': 'application/json' },` : ''}${method !== 'GET' && body ? `
76
+ body: JSON.stringify(${JSON.stringify(body, null, 2).replace(/\n/g, '\n ')})` : ''}
77
+ })
78
+ .then(r => r.json())
79
+ .then(data => console.log(data))`
80
+
81
+ // Generate CLI command
82
+ const cliCmd = `spine ${endpoint.replace('/.netlify/functions/', '').replace(/\//g, ' ')} ${query?.id || query?.slug || ''}${method === 'POST' && body ? ` --data '${JSON.stringify(body)}'` : ''}${method === 'PATCH' && body ? ` --update '${JSON.stringify(body)}'` : ''}${method === 'DELETE' ? ' --delete' : ''}`
83
+
84
+ const handleCopy = (text: string, key: string) => {
85
+ navigator.clipboard.writeText(text)
86
+ setCopied(key)
87
+ setTimeout(() => setCopied(null), 2000)
88
+ }
89
+
90
+ return (
91
+ <div className="mt-6 border border-gray-200 rounded-lg bg-gray-50">
92
+ {/* Header */}
93
+ <button
94
+ onClick={() => setIsOpen(!isOpen)}
95
+ className="w-full flex items-center justify-between px-4 py-3 text-left hover:bg-gray-100 transition-colors"
96
+ >
97
+ <div className="flex items-center gap-2">
98
+ <Terminal className="w-4 h-4 text-gray-600" />
99
+ <span className="font-medium text-gray-700">{title}</span>
100
+ <span className="text-xs text-gray-500">(for agents & developers)</span>
101
+ </div>
102
+ {isOpen ? (
103
+ <ChevronUp className="w-4 h-4 text-gray-500" />
104
+ ) : (
105
+ <ChevronDown className="w-4 h-4 text-gray-500" />
106
+ )}
107
+ </button>
108
+
109
+ {/* Content */}
110
+ {isOpen && (
111
+ <div className="border-t border-gray-200">
112
+ {/* API Info */}
113
+ <div className="px-4 py-3 bg-blue-50 border-b border-blue-100">
114
+ <div className="flex items-center gap-2 text-sm text-blue-800">
115
+ <span className="font-mono font-bold">{method}</span>
116
+ <span className="font-mono">{endpoint}</span>
117
+ {query && (
118
+ <span className="text-blue-600">
119
+ with query: {JSON.stringify(query)}
120
+ </span>
121
+ )}
122
+ </div>
123
+ </div>
124
+
125
+ <div className="p-4 space-y-4">
126
+ {/* Raw JSON */}
127
+ <div>
128
+ <div className="flex items-center justify-between mb-2">
129
+ <div className="flex items-center gap-2 text-sm font-medium text-gray-700">
130
+ <Code className="w-4 h-4" />
131
+ Response JSON
132
+ </div>
133
+ <button
134
+ onClick={() => handleCopy(JSON.stringify(data, null, 2), 'json')}
135
+ className="flex items-center gap-1 text-xs text-gray-500 hover:text-gray-700"
136
+ >
137
+ {copied === 'json' ? (
138
+ <Check className="w-3 h-3" />
139
+ ) : (
140
+ <Copy className="w-3 h-3" />
141
+ )}
142
+ {copied === 'json' ? 'Copied!' : 'Copy'}
143
+ </button>
144
+ </div>
145
+ <pre className="bg-gray-900 text-gray-100 p-3 rounded text-xs overflow-auto max-h-64 font-mono">
146
+ {JSON.stringify(data, null, 2)}
147
+ </pre>
148
+ </div>
149
+
150
+ {/* Code Examples */}
151
+ <div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
152
+ {/* cURL */}
153
+ <div>
154
+ <div className="flex items-center justify-between mb-2">
155
+ <div className="text-sm font-medium text-gray-700">cURL</div>
156
+ <button
157
+ onClick={() => handleCopy(curlCmd, 'curl')}
158
+ className="flex items-center gap-1 text-xs text-gray-500 hover:text-gray-700"
159
+ >
160
+ {copied === 'curl' ? <Check className="w-3 h-3" /> : <Copy className="w-3 h-3" />}
161
+ {copied === 'curl' ? 'Copied!' : 'Copy'}
162
+ </button>
163
+ </div>
164
+ <pre className="bg-gray-800 text-gray-100 p-3 rounded text-xs overflow-auto max-h-32 font-mono">
165
+ {curlCmd}
166
+ </pre>
167
+ </div>
168
+
169
+ {/* Fetch */}
170
+ <div>
171
+ <div className="flex items-center justify-between mb-2">
172
+ <div className="text-sm font-medium text-gray-700">JavaScript Fetch</div>
173
+ <button
174
+ onClick={() => handleCopy(fetchCode, 'fetch')}
175
+ className="flex items-center gap-1 text-xs text-gray-500 hover:text-gray-700"
176
+ >
177
+ {copied === 'fetch' ? <Check className="w-3 h-3" /> : <Copy className="w-3 h-3" />}
178
+ {copied === 'fetch' ? 'Copied!' : 'Copy'}
179
+ </button>
180
+ </div>
181
+ <pre className="bg-gray-800 text-gray-100 p-3 rounded text-xs overflow-auto max-h-32 font-mono">
182
+ {fetchCode}
183
+ </pre>
184
+ </div>
185
+ </div>
186
+
187
+ {/* CLI Command */}
188
+ <div>
189
+ <div className="flex items-center justify-between mb-2">
190
+ <div className="flex items-center gap-2 text-sm font-medium text-gray-700">
191
+ <Terminal className="w-4 h-4" />
192
+ Spine CLI
193
+ </div>
194
+ <button
195
+ onClick={() => handleCopy(cliCmd, 'cli')}
196
+ className="flex items-center gap-1 text-xs text-gray-500 hover:text-gray-700"
197
+ >
198
+ {copied === 'cli' ? <Check className="w-3 h-3" /> : <Copy className="w-3 h-3" />}
199
+ {copied === 'cli' ? 'Copied!' : 'Copy'}
200
+ </button>
201
+ </div>
202
+ <pre className="bg-green-900 text-green-100 p-3 rounded text-xs overflow-auto font-mono">
203
+ {cliCmd}
204
+ </pre>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ )}
209
+ </div>
210
+ )
211
+ }
212
+
213
+ export default AgentView