spine-framework 0.3.125 → 0.3.126

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 (319) hide show
  1. package/.framework/cli/commands/agents.ts +35 -37
  2. package/.framework/cli/commands/auth.ts +35 -34
  3. package/.framework/cli/commands/create-app.ts +104 -40
  4. package/.framework/cli/commands/dev.ts +104 -69
  5. package/.framework/cli/commands/doctor.ts +169 -97
  6. package/.framework/cli/commands/generate.ts +82 -160
  7. package/.framework/cli/commands/init.ts +72 -34
  8. package/.framework/cli/commands/install-app.ts +260 -125
  9. package/.framework/cli/commands/items.ts +33 -44
  10. package/.framework/cli/commands/migrate.ts +122 -40
  11. package/.framework/cli/commands/migrations.ts +33 -40
  12. package/.framework/cli/commands/pipelines.ts +31 -39
  13. package/.framework/cli/commands/status.ts +47 -23
  14. package/.framework/cli/commands/system.ts +47 -37
  15. package/.framework/cli/commands/test.ts +112 -68
  16. package/.framework/cli/commands/validate-app.ts +215 -121
  17. package/.framework/cli/context.ts +112 -130
  18. package/.framework/cli/env-loader.ts +47 -18
  19. package/.framework/cli/index.ts +81 -42
  20. package/.framework/docs/runtime-types.md +1024 -0
  21. package/.framework/functions/_shared/agent-runner.ts +1296 -961
  22. package/.framework/functions/_shared/app-manifest.ts +82 -68
  23. package/.framework/functions/_shared/audit.ts +135 -83
  24. package/.framework/functions/_shared/{cil-state.ts → cil.ts} +147 -54
  25. package/.framework/functions/_shared/db.ts +80 -126
  26. package/.framework/functions/_shared/hash-api-key.ts +63 -0
  27. package/.framework/functions/_shared/index.ts +222 -347
  28. package/.framework/functions/_shared/kb.ts +319 -0
  29. package/.framework/functions/_shared/llm.ts +92 -0
  30. package/.framework/functions/_shared/logging.ts +288 -0
  31. package/.framework/functions/_shared/middleware.ts +329 -365
  32. package/.framework/functions/_shared/outcomes.ts +36 -0
  33. package/.framework/functions/_shared/permissions.ts +359 -643
  34. package/.framework/functions/_shared/pipeline-runner.ts +243 -316
  35. package/.framework/functions/_shared/principal.ts +376 -468
  36. package/.framework/functions/_shared/resolve-credentials.ts +102 -0
  37. package/.framework/functions/_shared/resolve-ids.ts +162 -14
  38. package/.framework/functions/_shared/retry-deliveries.ts +104 -0
  39. package/.framework/functions/_shared/schema-utils.ts +611 -373
  40. package/.framework/functions/_shared/testing.ts +207 -137
  41. package/.framework/functions/_shared/tracing.ts +276 -0
  42. package/.framework/functions/_shared/trigger-engine.ts +159 -211
  43. package/.framework/functions/_shared/webhook-registration.ts +95 -81
  44. package/.framework/functions/_shared/webhook-registry.ts +153 -75
  45. package/.framework/functions/account-nodes.ts +31 -53
  46. package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
  47. package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
  48. package/.framework/functions/adapters/openai-outbound.ts +40 -0
  49. package/.framework/functions/admin-data.ts +687 -533
  50. package/.framework/functions/admin-funnel.ts +31 -20
  51. package/.framework/functions/admin-install-funnel.ts +47 -28
  52. package/.framework/functions/admin-signals.ts +47 -29
  53. package/.framework/functions/ai-agents.ts +122 -147
  54. package/.framework/functions/ai-interactions.ts +180 -90
  55. package/.framework/functions/api-keys.ts +250 -192
  56. package/.framework/functions/apps.ts +203 -197
  57. package/.framework/functions/auth.ts +98 -91
  58. package/.framework/functions/cil-agent-ingest.ts +773 -0
  59. package/.framework/functions/cil-agent.ts +592 -0
  60. package/.framework/functions/cil-callmap.ts +1227 -0
  61. package/.framework/functions/cil-config.ts +583 -0
  62. package/.framework/functions/cil-context.ts +445 -0
  63. package/.framework/functions/cil-doc.ts +1752 -0
  64. package/.framework/functions/cil-embeddings.ts +1202 -0
  65. package/.framework/functions/cil-graph.ts +585 -0
  66. package/.framework/functions/cil-ingest.ts +2416 -0
  67. package/.framework/functions/cil-pipeline.ts +318 -0
  68. package/.framework/functions/cil-project.ts +499 -0
  69. package/.framework/functions/cil-validate.ts +469 -0
  70. package/.framework/functions/debug-auth.ts +73 -53
  71. package/.framework/functions/deliveries.ts +117 -0
  72. package/.framework/functions/embeddings.ts +528 -516
  73. package/.framework/functions/eval-harness.ts +158 -106
  74. package/.framework/functions/integration-outbound.ts +311 -0
  75. package/.framework/functions/integration-routes.ts +240 -466
  76. package/.framework/functions/integrations.ts +132 -140
  77. package/.framework/functions/invites.ts +401 -201
  78. package/.framework/functions/item-progress.ts +113 -53
  79. package/.framework/functions/kb.ts +28 -0
  80. package/.framework/functions/logs.ts +239 -222
  81. package/.framework/functions/observability.ts +308 -259
  82. package/.framework/functions/pipeline-executions.ts +179 -235
  83. package/.framework/functions/pipelines.ts +163 -205
  84. package/.framework/functions/prompt-configs.ts +109 -156
  85. package/.framework/functions/roles.ts +97 -147
  86. package/.framework/functions/system-cron.ts +132 -218
  87. package/.framework/functions/system.ts +112 -52
  88. package/.framework/functions/tests.ts +32 -28
  89. package/.framework/functions/timers.ts +162 -210
  90. package/.framework/functions/triggers.ts +282 -346
  91. package/.framework/functions/types.ts +283 -400
  92. package/.framework/migrations/001_core_schema.sql +630 -0
  93. package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
  94. package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
  95. package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
  96. package/.framework/migrations/005_core_observability.sql +598 -0
  97. package/.framework/migrations/006_security_hardening_rls.sql +97 -0
  98. package/.framework/migrations/007_kb_article_list.sql +237 -0
  99. package/.framework/migrations/008_items_target.sql +8 -0
  100. package/.framework/migrations/009_roles_slug_unique.sql +11 -0
  101. package/.framework/public/spine.config.json +91 -0
  102. package/.framework/scripts/app-install-cli.ts +112 -98
  103. package/.framework/src/App.tsx +67 -20
  104. package/.framework/src/apps/admin/index.tsx +97 -27
  105. package/.framework/src/components/AppWrapper.tsx +50 -11
  106. package/.framework/src/components/CustomAppLoader.tsx +131 -22
  107. package/.framework/src/components/admin/AdminListPage.tsx +75 -8
  108. package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
  109. package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
  110. package/.framework/src/components/admin/PageInstructions.tsx +49 -0
  111. package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
  112. package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
  113. package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
  114. package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
  115. package/.framework/src/components/app-sidebar.tsx +50 -3
  116. package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
  117. package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
  118. package/.framework/src/components/kb/KBArticleList.tsx +557 -0
  119. package/.framework/src/components/layout/AppShell.tsx +54 -16
  120. package/.framework/src/components/layout/Header.tsx +50 -38
  121. package/.framework/src/components/layout/Layout.tsx +48 -32
  122. package/.framework/src/components/layout/Sidebar.tsx +167 -16
  123. package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
  124. package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
  125. package/.framework/src/components/runtime/DataFilters.tsx +78 -1
  126. package/.framework/src/components/runtime/DataHeader.tsx +32 -29
  127. package/.framework/src/components/runtime/DataListPage.tsx +161 -2
  128. package/.framework/src/components/runtime/DataStats.tsx +48 -1
  129. package/.framework/src/components/runtime/DataTable.tsx +153 -1
  130. package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
  131. package/.framework/src/components/runtime/index.ts +16 -9
  132. package/.framework/src/components/search-form.tsx +33 -1
  133. package/.framework/src/components/shared/AgentView.tsx +48 -51
  134. package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
  135. package/.framework/src/components/shared/InviteManager.tsx +113 -52
  136. package/.framework/src/components/shared/MemberList.tsx +182 -0
  137. package/.framework/src/components/shared/SchemaFields.tsx +96 -78
  138. package/.framework/src/components/ui/DataTable.tsx +86 -56
  139. package/.framework/src/components/ui/Form.tsx +188 -109
  140. package/.framework/src/components/ui/ItemCard.tsx +86 -58
  141. package/.framework/src/components/ui/ItemListView.tsx +88 -61
  142. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
  143. package/.framework/src/components/ui/Modal.tsx +81 -4
  144. package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
  145. package/.framework/src/components/ui/accordion.tsx +97 -5
  146. package/.framework/src/components/ui/alert-dialog.tsx +225 -13
  147. package/.framework/src/components/ui/alert.tsx +113 -6
  148. package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
  149. package/.framework/src/components/ui/avatar.tsx +129 -7
  150. package/.framework/src/components/ui/badge.tsx +65 -3
  151. package/.framework/src/components/ui/breadcrumb.tsx +145 -8
  152. package/.framework/src/components/ui/button-group.tsx +81 -4
  153. package/.framework/src/components/ui/button.tsx +49 -2
  154. package/.framework/src/components/ui/calendar.tsx +65 -3
  155. package/.framework/src/components/ui/card.tsx +145 -8
  156. package/.framework/src/components/ui/carousel.tsx +129 -7
  157. package/.framework/src/components/ui/chart.tsx +161 -10
  158. package/.framework/src/components/ui/checkbox.tsx +49 -2
  159. package/.framework/src/components/ui/collapsible.tsx +81 -5
  160. package/.framework/src/components/ui/combobox.tsx +305 -20
  161. package/.framework/src/components/ui/command.tsx +177 -11
  162. package/.framework/src/components/ui/context-menu.tsx +273 -17
  163. package/.framework/src/components/ui/dialog.tsx +209 -27
  164. package/.framework/src/components/ui/direction.tsx +64 -4
  165. package/.framework/src/components/ui/drawer.tsx +193 -12
  166. package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
  167. package/.framework/src/components/ui/empty.tsx +145 -9
  168. package/.framework/src/components/ui/field.tsx +209 -14
  169. package/.framework/src/components/ui/hover-card.tsx +81 -4
  170. package/.framework/src/components/ui/input-group.tsx +162 -10
  171. package/.framework/src/components/ui/input-otp.tsx +98 -5
  172. package/.framework/src/components/ui/input.tsx +49 -2
  173. package/.framework/src/components/ui/item.tsx +225 -13
  174. package/.framework/src/components/ui/kbd.tsx +65 -3
  175. package/.framework/src/components/ui/label.tsx +49 -2
  176. package/.framework/src/components/ui/menubar.tsx +289 -17
  177. package/.framework/src/components/ui/native-select.tsx +97 -5
  178. package/.framework/src/components/ui/navigation-menu.tsx +177 -10
  179. package/.framework/src/components/ui/pagination.tsx +161 -9
  180. package/.framework/src/components/ui/popover.tsx +145 -8
  181. package/.framework/src/components/ui/progress.tsx +49 -2
  182. package/.framework/src/components/ui/radio-group.tsx +65 -3
  183. package/.framework/src/components/ui/resizable.tsx +82 -4
  184. package/.framework/src/components/ui/scroll-area.tsx +65 -3
  185. package/.framework/src/components/ui/select.tsx +193 -11
  186. package/.framework/src/components/ui/separator.tsx +49 -2
  187. package/.framework/src/components/ui/sheet.tsx +193 -11
  188. package/.framework/src/components/ui/sidebar.tsx +481 -38
  189. package/.framework/src/components/ui/skeleton.tsx +49 -2
  190. package/.framework/src/components/ui/slider.tsx +49 -2
  191. package/.framework/src/components/ui/sonner.tsx +49 -2
  192. package/.framework/src/components/ui/spinner.tsx +49 -2
  193. package/.framework/src/components/ui/switch.tsx +49 -2
  194. package/.framework/src/components/ui/table-primitives.tsx +160 -33
  195. package/.framework/src/components/ui/table.tsx +161 -9
  196. package/.framework/src/components/ui/tabs.tsx +113 -6
  197. package/.framework/src/components/ui/textarea.tsx +49 -2
  198. package/.framework/src/components/ui/toggle-group.tsx +81 -4
  199. package/.framework/src/components/ui/toggle.tsx +65 -3
  200. package/.framework/src/components/ui/tooltip.tsx +97 -5
  201. package/.framework/src/contexts/AppContext.tsx +129 -45
  202. package/.framework/src/contexts/AuthContext.tsx +173 -145
  203. package/.framework/src/hooks/use-mobile.ts +48 -2
  204. package/.framework/src/hooks/useApi.ts +208 -159
  205. package/.framework/src/hooks/useAppPath.ts +32 -23
  206. package/.framework/src/hooks/useApps.ts +51 -20
  207. package/.framework/src/hooks/useEntityList.ts +32 -78
  208. package/.framework/src/hooks/useEntityRecord.ts +35 -96
  209. package/.framework/src/hooks/useForm.ts +32 -92
  210. package/.framework/src/hooks/useListSchema.ts +49 -78
  211. package/.framework/src/hooks/useSchemaRecord.ts +114 -105
  212. package/.framework/src/lib/api.ts +192 -115
  213. package/.framework/src/lib/supabase.ts +98 -64
  214. package/.framework/src/lib/utils.ts +287 -151
  215. package/.framework/src/main.tsx +49 -3
  216. package/.framework/src/pages/DashboardPage.tsx +52 -29
  217. package/.framework/src/pages/NotFoundPage.tsx +32 -10
  218. package/.framework/src/pages/SetupPage.tsx +32 -12
  219. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
  220. package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
  221. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
  222. package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
  223. package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
  224. package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
  225. package/.framework/src/pages/admin/AppsPage.tsx +49 -2
  226. package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
  227. package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
  228. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
  229. package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
  230. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
  231. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
  232. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
  233. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
  234. package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
  235. package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
  236. package/.framework/src/pages/admin/LogsPage.tsx +422 -75
  237. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
  238. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
  239. package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
  240. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
  241. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
  242. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
  243. package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
  244. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
  245. package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
  246. package/.framework/src/pages/admin/RolesPage.tsx +171 -18
  247. package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
  248. package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
  249. package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
  250. package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
  251. package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
  252. package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
  253. package/.framework/src/pages/admin/TimersPage.tsx +48 -20
  254. package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
  255. package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
  256. package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
  257. package/.framework/src/pages/admin/TypesPage.tsx +48 -20
  258. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
  259. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
  260. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
  261. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
  262. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
  263. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
  264. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
  265. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
  266. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
  267. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  268. package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
  269. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
  270. package/.framework/src/pages/auth/LoginPage.tsx +50 -23
  271. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
  272. package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
  273. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
  274. package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
  275. package/.framework/src/types/auth.ts +128 -71
  276. package/.framework/src/types/types.ts +373 -157
  277. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
  278. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
  279. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
  280. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
  281. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
  282. package/docs/README.md +9 -130
  283. package/netlify.toml +3 -3
  284. package/package.json +13 -25
  285. package/scripts/kb-ingest-docs.ts +203 -0
  286. package/spine.config.json +65 -4
  287. package/.framework/migrations/001_schema.sql +0 -425
  288. package/.framework/migrations/002_rls_and_functions.sql +0 -763
  289. package/.framework/migrations/004_enhancements.sql +0 -43
  290. package/.framework/migrations/005_auth_user_trigger.sql +0 -105
  291. package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
  292. package/.framework/migrations/016_invites.sql +0 -27
  293. package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
  294. package/.framework/migrations/018_apps_required_roles.sql +0 -17
  295. package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
  296. package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
  297. package/.framework/migrations/021_app_domains.sql +0 -112
  298. package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
  299. package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
  300. package/.framework/migrations/024_messages_account_id.sql +0 -9
  301. package/.framework/migrations/025_retype_threads_messages.sql +0 -240
  302. package/.framework/migrations/026_fix_rls_policies.sql +0 -47
  303. package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
  304. package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
  305. package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
  306. package/.framework/migrations/030_messages_updated_by.sql +0 -6
  307. package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
  308. package/docs/APPS.md +0 -232
  309. package/docs/ARCHITECTURE.md +0 -246
  310. package/docs/INSTALL.md +0 -155
  311. package/docs/design-schema-spec.md +0 -1837
  312. package/docs/dev-guides/01-create-an-app.md +0 -183
  313. package/docs/dev-guides/02-create-a-function.md +0 -178
  314. package/docs/dev-guides/03-create-a-component.md +0 -178
  315. package/docs/dev-guides/04-webhook-handlers.md +0 -129
  316. package/docs/dev-guides/05-testing.md +0 -168
  317. package/docs/dev-guides/README.md +0 -40
  318. package/docs/npm-packages-plan.md +0 -288
  319. package/docs/spine-core--api-reference.md +0 -822
@@ -1,41 +1,31 @@
1
- /// <reference types="node" />
2
- /**
3
- * @module cli/commands/dev
4
- * @audience installer
5
- * @layer cli
6
- * @stability stable
7
- *
8
- * `spine dev` command — unified development server for Spine.
9
- * Handles assembly, integrity verification, and Vite dev server startup.
10
- *
11
- * **Commands:**
12
- * | Subcommand | Description |
13
- * |-------------------|-------------------------------------------------------|
14
- * | `dev` | Start dev server with assembly and integrity check |
15
- * | `dev --no-verify` | Skip integrity verification (faster) |
16
- * | `dev --port 3002` | Use custom port (default: 3001) |
17
- * | `dev --watch` | Watch v2-custom for changes and auto-reassemble |
18
- * | `dev --no-watch` | Disable file watching (manual rebuild only) |
19
- *
20
- * **What happens:**
21
- * 1. Runs `assemble:v2` to merge v2-core + v2-custom
22
- * 2. Runs `verify` to check core integrity (unless --no-verify)
23
- * 3. Starts Vite dev server on port 3001 (or --port)
24
- * 4. Watches v2-custom/ for changes (--watch by default)
25
- * 5. Fast incremental reassembly on custom code changes
26
- *
27
- * **Usage:**
28
- * ```bash
29
- * spine dev
30
- * spine dev --port 3002
31
- * spine dev --no-verify
32
- * ```
33
- *
34
- * @seeAlso scripts/assemble-v2.sh (assembly script)
35
- * @seeAlso scripts/verify-integrity.sh (verification script)
36
- * @seeAlso vite.config.ts (Vite configuration)
37
- */
38
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+ // CIL[BEGIN chunk_id="dev_module_header_1784071456" type="module_header" identity="module_header" parent="none"]
15
+ // CIL[DOC-MACRO purpose="Import dependencies for dev server CLI"]
16
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide imports and constants for dev commands"]
17
+ // CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
18
+ // CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
19
+ // CIL[DOC-MICRO logic_summary="Imports Command type, child_process, path, and fs modules" notable_decisions="[]"]
20
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
21
+ // CIL[DOC-STABILITY stability="stable"]
22
+ // CIL[DOC-AUDIENCE audience="developer"]
23
+ // CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, \."]
24
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
25
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
26
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
27
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
28
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
39
29
  import type { Command } from 'commander'
40
30
  import { spawn, execSync } from 'child_process'
41
31
  import { resolve, dirname } from 'path'
@@ -45,9 +35,21 @@ import { watch, existsSync, statSync, readdirSync } from 'fs'
45
35
  const __filename = fileURLToPath(import.meta.url)
46
36
  const __dirname = dirname(__filename)
47
37
  const PROJECT_ROOT = resolve(__dirname, '../../../')
48
-
49
- // ─── COMMAND REGISTRATION ──────────────────────────────────────────────────
50
-
38
+ // CIL[END chunk_id="dev_module_header_1784071456"]
39
+ // CIL[BEGIN chunk_id="dev_registerdevcommands_1784071456" type="function" identity="registerDevCommands" parent="none"]
40
+ // CIL[DOC-MACRO purpose="Register dev command with CLI framework"]
41
+ // CIL[DOC-RESPONSIBILITY responsibility="Handle dev server startup and file watching"]
42
+ // CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
43
+ // CIL[DOC-CONTRACT inputs="none" outputs="dev command registration" errors="process exit on failure" side_effects="starts processes, watches files"]
44
+ // CIL[DOC-MICRO logic_summary="Orchestrates assembly, verification, and Vite server startup" notable_decisions="[]"]
45
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
46
+ // CIL[DOC-STABILITY stability="stable"]
47
+ // CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
48
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
49
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
50
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
51
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
52
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
51
53
  export function registerDevCommands(program: Command) {
52
54
  program
53
55
  .command('dev')
@@ -61,7 +63,7 @@ export function registerDevCommands(program: Command) {
61
63
  console.log('\n🚀 Starting Spine dev server...\n')
62
64
 
63
65
  try {
64
- // Step 1: Assembly
66
+
65
67
  console.log('📦 Step 1: Assembling v2-core + v2-custom...')
66
68
  const assemblyExitCode = await runCommand(
67
69
  'bash',
@@ -75,7 +77,7 @@ export function registerDevCommands(program: Command) {
75
77
  }
76
78
  console.log('✓ Assembly complete\n')
77
79
 
78
- // Step 2: Integrity verification (unless skipped)
80
+
79
81
  if (opts.verify !== false) {
80
82
  console.log('🔒 Step 2: Verifying core integrity...')
81
83
  const verifyExitCode = await runCommand(
@@ -93,7 +95,7 @@ export function registerDevCommands(program: Command) {
93
95
  console.log('⏭️ Step 2: Skipping integrity verification (--no-verify)\n')
94
96
  }
95
97
 
96
- // Step 3: Start Vite
98
+
97
99
  console.log(`🌐 Step 3: Starting Vite dev server on port ${opts.port}...`)
98
100
  console.log(' (Press Ctrl+C to stop)\n')
99
101
 
@@ -111,7 +113,7 @@ export function registerDevCommands(program: Command) {
111
113
  }
112
114
  )
113
115
 
114
- // Step 4: Watch v2-custom for changes (unless disabled)
116
+
115
117
  let watcher: ReturnType<typeof watch> | null = null
116
118
  if (opts.watch !== false) {
117
119
  const watchDelay = parseInt(opts.watchDelay) || 500
@@ -124,14 +126,14 @@ export function registerDevCommands(program: Command) {
124
126
  let reassemblyTimeout: NodeJS.Timeout | null = null
125
127
 
126
128
  watcher = watch(customDir, { recursive: true }, (eventType, filename) => {
127
- // Ignore node_modules, .git, and temp files
129
+
128
130
  if (!filename || filename.includes('node_modules') || filename.startsWith('.')) {
129
131
  return
130
132
  }
131
133
 
132
134
  console.log(`\n📝 Change detected in v2-custom/${filename}`)
133
135
 
134
- // Debounce reassembly
136
+
135
137
  if (reassemblyTimeout) {
136
138
  clearTimeout(reassemblyTimeout)
137
139
  }
@@ -162,7 +164,7 @@ export function registerDevCommands(program: Command) {
162
164
  process.exit(code || 0)
163
165
  })
164
166
 
165
- // Handle Ctrl+C gracefully
167
+
166
168
  process.on('SIGINT', () => {
167
169
  console.log('\n\n🛑 Shutting down dev server...')
168
170
  if (watcher) {
@@ -187,9 +189,21 @@ export function registerDevCommands(program: Command) {
187
189
  }
188
190
  })
189
191
  }
190
-
191
- // ─── HELPER ────────────────────────────────────────────────────────────────
192
-
192
+ // CIL[END chunk_id="dev_registerdevcommands_1784071456"]
193
+ // CIL[BEGIN chunk_id="dev_runcommand_1784071456" type="function" identity="runCommand" parent="none"]
194
+ // CIL[DOC-MACRO purpose="Execute shell command with promise wrapper"]
195
+ // CIL[DOC-RESPONSIBILITY responsibility="Run external processes and return exit code"]
196
+ // CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
197
+ // CIL[DOC-CONTRACT inputs="none" outputs="Promise<number>" errors="process spawn errors" side_effects="spawns child process"]
198
+ // CIL[DOC-MICRO logic_summary="Wraps spawn in Promise for async command execution" notable_decisions="[]"]
199
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
200
+ // CIL[DOC-STABILITY stability="stable"]
201
+ // CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
202
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
203
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
204
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
205
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
206
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
193
207
  function runCommand(command: string, args: string[], cwd: string): Promise<number> {
194
208
  return new Promise((resolve, reject) => {
195
209
  const proc = spawn(command, args, {
@@ -207,17 +221,27 @@ function runCommand(command: string, args: string[], cwd: string): Promise<numbe
207
221
  })
208
222
  })
209
223
  }
210
-
211
- /**
212
- * Fast incremental reassembly of v2-custom files only.
213
- * Uses rsync if available, falls back to selective copy.
214
- */
224
+ // CIL[END chunk_id="dev_runcommand_1784071456"]
225
+ // CIL[BEGIN chunk_id="dev_fastreassemble_1784071456" type="function" identity="fastReassemble" parent="none"]
226
+ // CIL[DOC-MACRO purpose="Fast reassembly of custom code during dev"]
227
+ // CIL[DOC-RESPONSIBILITY responsibility="Sync custom source and functions to assembled dirs"]
228
+ // CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
229
+ // CIL[DOC-CONTRACT inputs="none" outputs="void" errors="file system errors" side_effects="copies files, creates directories"]
230
+ // CIL[DOC-MICRO logic_summary="Uses rsync or manual copy to sync v2-custom changes" notable_decisions="[]"]
231
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="external_symbols_unknown"]
232
+ // CIL[DOC-STABILITY stability="stable"]
233
+ // CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/schema-utils.ts, \."]
234
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
235
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
236
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
237
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
238
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
215
239
  async function fastReassemble(projectRoot: string): Promise<void> {
216
240
  const customDir = resolve(projectRoot, 'v2-custom')
217
241
  const srcDest = resolve(projectRoot, 'src/v2-assembled')
218
242
  const funcsDest = resolve(projectRoot, 'functions')
219
243
 
220
- // Check if rsync is available
244
+
221
245
  let hasRsync = false
222
246
  try {
223
247
  execSync('which rsync', { stdio: 'pipe' })
@@ -226,24 +250,24 @@ async function fastReassemble(projectRoot: string): Promise<void> {
226
250
  hasRsync = false
227
251
  }
228
252
 
229
- // Reassemble custom frontend files
253
+
230
254
  const customSrcDir = resolve(customDir, 'src')
231
255
  if (existsSync(customSrcDir)) {
232
256
  const destDir = srcDest
233
257
 
234
258
  if (hasRsync) {
235
- // Use rsync for efficient incremental sync
259
+
236
260
  execSync(
237
261
  `rsync -av --delete "${customSrcDir}/" "${destDir}/"`,
238
262
  { stdio: 'pipe', cwd: projectRoot }
239
263
  )
240
264
  } else {
241
- // Fallback: copy files that have changed
265
+
242
266
  copyChangedFiles(customSrcDir, destDir)
243
267
  }
244
268
  }
245
269
 
246
- // Reassemble custom function files
270
+
247
271
  const customFuncsDir = resolve(customDir, 'functions')
248
272
  if (existsSync(customFuncsDir)) {
249
273
  if (hasRsync) {
@@ -256,7 +280,7 @@ async function fastReassemble(projectRoot: string): Promise<void> {
256
280
  }
257
281
  }
258
282
 
259
- // Reassemble spine.config.json to public directory
283
+
260
284
  const spineConfigSrc = resolve(projectRoot, 'spine.config.json')
261
285
  const publicDest = resolve(srcDest, 'public')
262
286
  if (existsSync(spineConfigSrc)) {
@@ -275,11 +299,21 @@ async function fastReassemble(projectRoot: string): Promise<void> {
275
299
  }
276
300
  }
277
301
  }
278
-
279
- /**
280
- * Copy only files that have changed (mtime comparison).
281
- * Fallback when rsync is not available.
282
- */
302
+ // CIL[END chunk_id="dev_fastreassemble_1784071456"]
303
+ // CIL[BEGIN chunk_id="dev_copychangedfiles_1784071456" type="function" identity="copyChangedFiles" parent="none"]
304
+ // CIL[DOC-MACRO purpose="Recursively copy changed files during reassembly"]
305
+ // CIL[DOC-RESPONSIBILITY responsibility="Copy only modified files to avoid unnecessary work"]
306
+ // CIL[DOC-CONTEXT module="dev-cli" layer="cli" related_files="[]"]
307
+ // CIL[DOC-CONTRACT inputs="none" outputs="void" errors="file system errors" side_effects="copies files, creates directories"]
308
+ // CIL[DOC-MICRO logic_summary="Compares file mtimes and copies only newer files" notable_decisions="[]"]
309
+ // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
310
+ // CIL[DOC-STABILITY stability="stable"]
311
+ // CIL[DOC-VECTOR type="context" content="Layer: cli. Direct callers: 0. Direct calls: 0. Related files: none."]
312
+ // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
313
+ // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
314
+ // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
315
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
316
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
283
317
  function copyChangedFiles(src: string, dest: string): void {
284
318
  const files = readdirSync(src, { withFileTypes: true })
285
319
 
@@ -289,14 +323,14 @@ function copyChangedFiles(src: string, dest: string): void {
289
323
 
290
324
  if (entry.isDirectory()) {
291
325
  if (!existsSync(destPath)) {
292
- // Create directory
326
+
293
327
  const { mkdirSync } = require('fs')
294
328
  mkdirSync(destPath, { recursive: true })
295
329
  }
296
- // Recurse
330
+
297
331
  copyChangedFiles(srcPath, destPath)
298
332
  } else {
299
- // Check if file needs copying
333
+
300
334
  const srcStat = statSync(srcPath)
301
335
  let needsCopy = true
302
336
 
@@ -312,3 +346,4 @@ function copyChangedFiles(src: string, dest: string): void {
312
346
  }
313
347
  }
314
348
  }
349
+ // CIL[END chunk_id="dev_copychangedfiles_1784071456"]