spine-framework 0.3.145 → 0.4.1

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 (451) hide show
  1. package/.env.example +76 -0
  2. package/.framework/.spine-manifest.json +19 -0
  3. package/.framework/cli/commands/agents.ts +61 -33
  4. package/.framework/cli/commands/auth.ts +60 -28
  5. package/.framework/cli/commands/create-app.ts +212 -80
  6. package/.framework/cli/commands/dev.ts +184 -68
  7. package/.framework/cli/commands/doctor.ts +324 -152
  8. package/.framework/cli/commands/generate.ts +119 -68
  9. package/.framework/cli/commands/init.ts +141 -242
  10. package/.framework/cli/commands/install-app.ts +1336 -314
  11. package/.framework/cli/commands/items.ts +31 -29
  12. package/.framework/cli/commands/migrate.ts +299 -156
  13. package/.framework/cli/commands/migrations.ts +62 -30
  14. package/.framework/cli/commands/pipelines.ts +31 -29
  15. package/.framework/cli/commands/status.ts +105 -45
  16. package/.framework/cli/commands/system.ts +47 -42
  17. package/.framework/cli/commands/test.ts +161 -102
  18. package/.framework/cli/commands/upgrade.ts +260 -0
  19. package/.framework/cli/commands/validate-app.ts +517 -161
  20. package/.framework/cli/context.ts +117 -85
  21. package/.framework/cli/env-loader.ts +74 -43
  22. package/.framework/cli/index.ts +70 -46
  23. package/.framework/cli/lib/project-files.ts +404 -0
  24. package/.framework/docs/guides/testing-guide.md +1 -1
  25. package/.framework/docs/runtime-types.md +72 -72
  26. package/.framework/functions/_shared/access.ts +84 -0
  27. package/.framework/functions/_shared/agent-runner.ts +5067 -1026
  28. package/.framework/functions/_shared/app-manifest.ts +214 -94
  29. package/.framework/functions/_shared/ast.ts +214 -0
  30. package/.framework/functions/_shared/audit.ts +91 -55
  31. package/.framework/functions/_shared/cil.ts +368 -127
  32. package/.framework/functions/_shared/db.ts +337 -68
  33. package/.framework/functions/_shared/funnel.ts +228 -0
  34. package/.framework/functions/_shared/geo.ts +105 -0
  35. package/.framework/functions/_shared/hash-api-key.ts +94 -17
  36. package/.framework/functions/_shared/index.ts +22 -224
  37. package/.framework/functions/_shared/kb.ts +832 -58
  38. package/.framework/functions/_shared/llm.ts +118 -18
  39. package/.framework/functions/_shared/logging.ts +317 -19
  40. package/.framework/functions/_shared/middleware.ts +701 -131
  41. package/.framework/functions/_shared/notify.ts +70 -0
  42. package/.framework/functions/_shared/outcomes.ts +34 -19
  43. package/.framework/functions/_shared/permissions.ts +501 -315
  44. package/.framework/functions/_shared/pipeline-runner.ts +704 -155
  45. package/.framework/functions/_shared/principal.ts +436 -263
  46. package/.framework/functions/_shared/rate-limit.ts +233 -0
  47. package/.framework/functions/_shared/resolve-credentials.ts +86 -19
  48. package/.framework/functions/_shared/resolve-ids.ts +203 -139
  49. package/.framework/functions/_shared/retry-deliveries.ts +51 -16
  50. package/.framework/functions/_shared/schema-utils.ts +602 -521
  51. package/.framework/functions/_shared/security.ts +345 -0
  52. package/.framework/functions/_shared/testing.ts +197 -172
  53. package/.framework/functions/_shared/tracing.ts +351 -21
  54. package/.framework/functions/_shared/trigger-engine.ts +425 -136
  55. package/.framework/functions/_shared/webhook-registration.ts +71 -70
  56. package/.framework/functions/_shared/webhook-registry.ts +126 -83
  57. package/.framework/functions/account-nodes.ts +30 -30
  58. package/.framework/functions/adapters/generic-webhook-inbound.ts +49 -16
  59. package/.framework/functions/adapters/generic-webhook-outbound.ts +17 -17
  60. package/.framework/functions/adapters/openai-outbound.ts +15 -16
  61. package/.framework/functions/admin-data.ts +596 -173
  62. package/.framework/functions/admin-funnel.ts +64 -60
  63. package/.framework/functions/admin-install-funnel.ts +84 -66
  64. package/.framework/functions/admin-signals.ts +69 -51
  65. package/.framework/functions/ai-agents.ts +431 -106
  66. package/.framework/functions/ai-interactions.ts +186 -112
  67. package/.framework/functions/api-keys.ts +107 -107
  68. package/.framework/functions/apps.ts +154 -136
  69. package/.framework/functions/auth.ts +83 -65
  70. package/.framework/functions/cil-agent-ingest.ts +189 -232
  71. package/.framework/functions/cil-agent.ts +433 -177
  72. package/.framework/functions/cil-callmap.ts +642 -430
  73. package/.framework/functions/cil-config.ts +139 -135
  74. package/.framework/functions/cil-context.ts +214 -127
  75. package/.framework/functions/cil-doc.ts +587 -458
  76. package/.framework/functions/cil-embeddings.ts +453 -364
  77. package/.framework/functions/cil-graph.ts +427 -142
  78. package/.framework/functions/cil-ingest.ts +1418 -1154
  79. package/.framework/functions/cil-pipeline.ts +276 -21
  80. package/.framework/functions/cil-project.ts +659 -132
  81. package/.framework/functions/cil-validate.ts +198 -164
  82. package/.framework/functions/debug-auth.ts +57 -55
  83. package/.framework/functions/deliveries.ts +80 -21
  84. package/.framework/functions/embeddings.ts +1023 -318
  85. package/.framework/functions/eval-harness.ts +146 -108
  86. package/.framework/functions/integration-outbound.ts +205 -75
  87. package/.framework/functions/integration-routes.ts +128 -23
  88. package/.framework/functions/integrations.ts +125 -100
  89. package/.framework/functions/invites.ts +1095 -460
  90. package/.framework/functions/item-progress.ts +158 -102
  91. package/.framework/functions/kb.ts +34 -10
  92. package/.framework/functions/logs.ts +133 -133
  93. package/.framework/functions/observability.ts +152 -122
  94. package/.framework/functions/pipeline-executions.ts +147 -132
  95. package/.framework/functions/pipelines.ts +134 -119
  96. package/.framework/functions/prompt-configs.ts +96 -80
  97. package/.framework/functions/roles.ts +112 -82
  98. package/.framework/functions/security.ts +450 -0
  99. package/.framework/functions/system-cron.ts +117 -80
  100. package/.framework/functions/system.ts +158 -98
  101. package/.framework/functions/tests.ts +29 -29
  102. package/.framework/functions/timers.ts +94 -95
  103. package/.framework/functions/trigger-scheduler.ts +10 -0
  104. package/.framework/functions/triggers.ts +179 -149
  105. package/.framework/functions/types.ts +137 -125
  106. package/.framework/mcp/index.ts +133 -0
  107. package/.framework/mcp/load-env.ts +60 -0
  108. package/.framework/mcp/shared/app-manifest.ts +275 -0
  109. package/.framework/mcp/shared/db.ts +477 -0
  110. package/.framework/mcp/shared/kb.ts +118 -0
  111. package/.framework/mcp/tools/architect.ts +431 -0
  112. package/.framework/mcp/tools/cil/context.ts +345 -0
  113. package/.framework/mcp/tools/cil/graph.ts +242 -0
  114. package/.framework/mcp/tools/cil/ingest.ts +1217 -0
  115. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +693 -0
  116. package/.framework/mcp/tools/cil/pipeline.ts +767 -0
  117. package/.framework/mcp/tools/cil/project.ts +791 -0
  118. package/.framework/mcp/tools/cil/retrieval.ts +336 -0
  119. package/.framework/mcp/tools/cil/search-core.ts +454 -0
  120. package/.framework/mcp/tools/cil/search.ts +97 -0
  121. package/.framework/mcp/tools/cil/suggest.ts +186 -0
  122. package/.framework/mcp/tools/cil/validate.ts +1369 -0
  123. package/.framework/mcp/tools/kb/delete.ts +139 -0
  124. package/.framework/mcp/tools/kb/index.ts +52 -0
  125. package/.framework/mcp/tools/kb/ingest.ts +84 -0
  126. package/.framework/mcp/tools/kb/list-types.ts +102 -0
  127. package/.framework/mcp/tools/kb/publish.ts +100 -0
  128. package/.framework/mcp/tools/kb/reindex.ts +86 -0
  129. package/.framework/mcp/tools/kb/revoke.ts +85 -0
  130. package/.framework/mcp/tools/kb/search.ts +101 -0
  131. package/.framework/mcp/tools/kb/upsert.ts +125 -0
  132. package/.framework/mcp/tools/observability.ts +510 -0
  133. package/.framework/migrations/001_core_schema.sql +15 -0
  134. package/.framework/migrations/002_core_rls_and_functions.sql +15 -0
  135. package/.framework/migrations/003_core_system_data.sql +16 -1
  136. package/.framework/migrations/004_core_rpc_and_broker.sql +17 -1
  137. package/.framework/migrations/005_core_observability.sql +17 -1
  138. package/.framework/migrations/006_security_hardening_rls.sql +15 -0
  139. package/.framework/migrations/007_kb_article_list.sql +17 -1
  140. package/.framework/migrations/008_items_target.sql +15 -0
  141. package/.framework/migrations/009_roles_slug_unique.sql +15 -0
  142. package/.framework/migrations/010_auth_user_trigger.sql +15 -0
  143. package/.framework/migrations/011_spine_system_account.sql +16 -0
  144. package/.framework/migrations/012_service_role_grants.sql +16 -0
  145. package/.framework/migrations/013_get_account_apps_role_filter.sql +15 -0
  146. package/.framework/migrations/014_apps_required_roles.sql +16 -0
  147. package/.framework/migrations/015_types_kind_slug_unique.sql +15 -0
  148. package/.framework/migrations/016_cil_types.sql +281 -0
  149. package/.framework/migrations/017_cil_stable_ids.sql +37 -0
  150. package/.framework/migrations/018_runtime_tables.sql +129 -0
  151. package/.framework/migrations/019_agent_prompt_columns.sql +56 -0
  152. package/.framework/migrations/020_schema_reconciliation.sql +67 -0
  153. package/.framework/migrations/021_kb_embedding_lifecycle.sql +31 -0
  154. package/.framework/migrations/032_cil_status_migration.sql +73 -0
  155. package/.framework/migrations/033_cil_versioning.sql +73 -0
  156. package/.framework/migrations/034_match_embeddings_knn.sql +115 -0
  157. package/.framework/migrations/035_rate_limits.sql +55 -0
  158. package/.framework/migrations/036_demo_record_flags.sql +72 -0
  159. package/.framework/migrations/037_kb_types_canonical.sql +244 -0
  160. package/.framework/migrations/038_drop_demo_record_flags.sql +38 -0
  161. package/.framework/migrations/042_registration_hierarchy.sql +309 -0
  162. package/.framework/migrations/043_policy_actor_cleanup.sql +39 -0
  163. package/.framework/migrations/044_match_embeddings_filtered_knn.sql +151 -0
  164. package/.framework/migrations/045_security_critical_rls.sql +139 -0
  165. package/.framework/migrations/046_security_missing_rls.sql +79 -0
  166. package/.framework/migrations/047_people_updated_by.sql +27 -0
  167. package/.framework/migrations/048_watcher_last_seen_at.sql +24 -0
  168. package/.framework/migrations/049_security_blocklist.sql +148 -0
  169. package/.framework/migrations/050_notifications.sql +49 -0
  170. package/.framework/migrations/051_message_agent_fields.sql +74 -0
  171. package/.framework/migrations/052_registration_security.sql +421 -0
  172. package/.framework/migrations/053_builtin_action_seeds.sql +66 -0
  173. package/.framework/migrations/054_kb_ingest_lease.sql +157 -0
  174. package/.framework/migrations/055_type_id_drift_reconciliation.sql +33 -0
  175. package/.framework/migrations/056_slug_column_reconciliation.sql +38 -0
  176. package/.framework/migrations/057_pipelines_slug_identity.sql +14 -0
  177. package/.framework/migrations/058_account_data_field_declarations.sql +53 -0
  178. package/.framework/migrations/059_registration_placement_fixes.sql +269 -0
  179. package/.framework/migrations/060_account_person_record_permissions.sql +38 -0
  180. package/.framework/migrations/061_fk_dedup.sql +32 -0
  181. package/.framework/public/spine-logo.svg +10 -3
  182. package/.framework/scripts/app-install-cli.ts +190 -93
  183. package/.framework/scripts/assemble-frontend.sh +127 -44
  184. package/.framework/scripts/assemble-functions.sh +128 -30
  185. package/.framework/scripts/boundary-check.sh +6 -2
  186. package/.framework/scripts/build-manifest.sh +24 -68
  187. package/.framework/scripts/check-core-integrity.sh +15 -76
  188. package/.framework/scripts/checksum-manifest.mts +343 -0
  189. package/.framework/scripts/cil-migrate-markers.ts +403 -0
  190. package/.framework/scripts/fix-cil-markers.mjs +176 -0
  191. package/.framework/scripts/verify-integrity.sh +21 -57
  192. package/.framework/scripts/verify-manifest.mts +305 -0
  193. package/.framework/seeds/types/funnel_signal_use.json +74 -21
  194. package/.framework/seeds/types/spine_instance.json +73 -21
  195. package/.framework/src/App.tsx +118 -72
  196. package/.framework/src/apps/admin/index.tsx +855 -58
  197. package/.framework/src/components/AppWrapper.tsx +43 -45
  198. package/.framework/src/components/CustomAppLoader.tsx +160 -116
  199. package/.framework/src/components/admin/AdminListPage.tsx +46 -44
  200. package/.framework/src/components/admin/AdminSidebar.tsx +57 -47
  201. package/.framework/src/components/admin/AdminStatsCard.tsx +46 -44
  202. package/.framework/src/components/admin/PageInstructions.tsx +98 -2
  203. package/.framework/src/components/admin/SortableTableHeader.tsx +44 -45
  204. package/.framework/src/components/app-shell/GenericAppShell.tsx +64 -65
  205. package/.framework/src/components/app-shell/GenericDetailPage.tsx +44 -47
  206. package/.framework/src/components/app-shell/GenericListPage.tsx +45 -49
  207. package/.framework/src/components/app-sidebar.tsx +42 -45
  208. package/.framework/src/components/auth/ProtectedRoute.tsx +48 -41
  209. package/.framework/src/components/auth/TurnstileWidget.tsx +27 -0
  210. package/.framework/src/components/kb/KBArticleEditor.tsx +231 -22
  211. package/.framework/src/components/kb/KBArticleList.tsx +251 -10
  212. package/.framework/src/components/layout/AppShell.tsx +51 -45
  213. package/.framework/src/components/layout/Header.tsx +42 -43
  214. package/.framework/src/components/layout/Layout.tsx +46 -46
  215. package/.framework/src/components/layout/Sidebar.tsx +196 -96
  216. package/.framework/src/components/runtime/DataDetailHeader.tsx +55 -30
  217. package/.framework/src/components/runtime/DataDetailPage.tsx +31 -269
  218. package/.framework/src/components/runtime/DataFilters.tsx +49 -74
  219. package/.framework/src/components/runtime/DataHeader.tsx +53 -32
  220. package/.framework/src/components/runtime/DataListPage.tsx +51 -155
  221. package/.framework/src/components/runtime/DataStats.tsx +66 -44
  222. package/.framework/src/components/runtime/DataTable.tsx +49 -149
  223. package/.framework/src/components/runtime/SchemaDetailForm.tsx +45 -75
  224. package/.framework/src/components/runtime/index.ts +119 -16
  225. package/.framework/src/components/search-form.tsx +46 -29
  226. package/.framework/src/components/shared/AgentView.tsx +65 -48
  227. package/.framework/src/components/shared/FieldRenderer.tsx +144 -50
  228. package/.framework/src/components/shared/InviteManager.tsx +207 -97
  229. package/.framework/src/components/shared/MemberList.tsx +97 -0
  230. package/.framework/src/components/shared/SchemaFields.tsx +107 -86
  231. package/.framework/src/components/ui/DataTable.tsx +80 -68
  232. package/.framework/src/components/ui/Form.tsx +157 -146
  233. package/.framework/src/components/ui/ItemCard.tsx +74 -67
  234. package/.framework/src/components/ui/ItemListView.tsx +73 -68
  235. package/.framework/src/components/ui/LoadingSpinner.tsx +43 -48
  236. package/.framework/src/components/ui/Modal.tsx +78 -68
  237. package/.framework/src/components/ui/RichTextEditor.tsx +89 -69
  238. package/.framework/src/components/ui/accordion.tsx +85 -86
  239. package/.framework/src/components/ui/alert-dialog.tsx +197 -184
  240. package/.framework/src/components/ui/alert.tsx +105 -94
  241. package/.framework/src/components/ui/aspect-ratio.tsx +57 -43
  242. package/.framework/src/components/ui/avatar.tsx +122 -107
  243. package/.framework/src/components/ui/badge.tsx +60 -55
  244. package/.framework/src/components/ui/breadcrumb.tsx +127 -128
  245. package/.framework/src/components/ui/button-group.tsx +86 -72
  246. package/.framework/src/components/ui/button.tsx +71 -50
  247. package/.framework/src/components/ui/calendar.tsx +72 -57
  248. package/.framework/src/components/ui/card.tsx +136 -129
  249. package/.framework/src/components/ui/carousel.tsx +226 -107
  250. package/.framework/src/components/ui/chart.tsx +252 -147
  251. package/.framework/src/components/ui/checkbox.tsx +43 -44
  252. package/.framework/src/components/ui/collapsible.tsx +86 -71
  253. package/.framework/src/components/ui/combobox.tsx +282 -249
  254. package/.framework/src/components/ui/command.tsx +158 -146
  255. package/.framework/src/components/ui/context-menu.tsx +239 -240
  256. package/.framework/src/components/ui/dialog.tsx +174 -157
  257. package/.framework/src/components/ui/direction.tsx +72 -56
  258. package/.framework/src/components/ui/drawer.tsx +168 -169
  259. package/.framework/src/components/ui/dropdown-menu.tsx +254 -223
  260. package/.framework/src/components/ui/empty.tsx +131 -120
  261. package/.framework/src/components/ui/field.tsx +205 -173
  262. package/.framework/src/components/ui/hover-card.tsx +71 -72
  263. package/.framework/src/components/ui/input-group.tsx +148 -133
  264. package/.framework/src/components/ui/input-otp.tsx +99 -86
  265. package/.framework/src/components/ui/input.tsx +43 -41
  266. package/.framework/src/components/ui/item.tsx +207 -185
  267. package/.framework/src/components/ui/kbd.tsx +57 -56
  268. package/.framework/src/components/ui/label.tsx +45 -41
  269. package/.framework/src/components/ui/menubar.tsx +268 -236
  270. package/.framework/src/components/ui/native-select.tsx +85 -86
  271. package/.framework/src/components/ui/navigation-menu.tsx +166 -156
  272. package/.framework/src/components/ui/pagination.tsx +131 -141
  273. package/.framework/src/components/ui/popover.tsx +125 -128
  274. package/.framework/src/components/ui/progress.tsx +47 -44
  275. package/.framework/src/components/ui/radio-group.tsx +60 -55
  276. package/.framework/src/components/ui/resizable.tsx +85 -72
  277. package/.framework/src/components/ui/scroll-area.tsx +57 -58
  278. package/.framework/src/components/ui/select.tsx +182 -169
  279. package/.framework/src/components/ui/separator.tsx +42 -43
  280. package/.framework/src/components/ui/sheet.tsx +170 -159
  281. package/.framework/src/components/ui/sidebar.tsx +395 -398
  282. package/.framework/src/components/ui/skeleton.tsx +42 -43
  283. package/.framework/src/components/ui/slider.tsx +61 -44
  284. package/.framework/src/components/ui/sonner.tsx +44 -44
  285. package/.framework/src/components/ui/spinner.tsx +47 -42
  286. package/.framework/src/components/ui/switch.tsx +56 -42
  287. package/.framework/src/components/ui/table-primitives.tsx +272 -132
  288. package/.framework/src/components/ui/table.tsx +140 -142
  289. package/.framework/src/components/ui/tabs.tsx +110 -93
  290. package/.framework/src/components/ui/textarea.tsx +43 -44
  291. package/.framework/src/components/ui/toggle-group.tsx +87 -71
  292. package/.framework/src/components/ui/toggle.tsx +56 -56
  293. package/.framework/src/components/ui/tooltip.tsx +99 -85
  294. package/.framework/src/contexts/AppContext.tsx +166 -114
  295. package/.framework/src/contexts/AuthContext.tsx +232 -137
  296. package/.framework/src/hooks/use-mobile.ts +43 -44
  297. package/.framework/src/hooks/useApi.ts +185 -172
  298. package/.framework/src/hooks/useAppPath.ts +31 -29
  299. package/.framework/src/hooks/useApps.ts +77 -42
  300. package/.framework/src/hooks/useEntityList.ts +66 -29
  301. package/.framework/src/hooks/useEntityRecord.ts +76 -32
  302. package/.framework/src/hooks/useForm.ts +62 -30
  303. package/.framework/src/hooks/useListSchema.ts +60 -43
  304. package/.framework/src/hooks/useSchemaRecord.ts +115 -95
  305. package/.framework/src/lib/api.ts +258 -134
  306. package/.framework/src/lib/registration.ts +181 -0
  307. package/.framework/src/lib/supabase.ts +118 -81
  308. package/.framework/src/lib/utils.ts +266 -266
  309. package/.framework/src/main.tsx +43 -44
  310. package/.framework/src/pages/DashboardPage.tsx +44 -43
  311. package/.framework/src/pages/NoAppPage.tsx +50 -0
  312. package/.framework/src/pages/NotFoundPage.tsx +32 -29
  313. package/.framework/src/pages/SetupPage.tsx +34 -33
  314. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +69 -58
  315. package/.framework/src/pages/admin/AIAgentsPage.tsx +43 -40
  316. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +63 -55
  317. package/.framework/src/pages/admin/APIKeysPage.tsx +44 -42
  318. package/.framework/src/pages/admin/AlertsConfigPage.tsx +117 -94
  319. package/.framework/src/pages/admin/AppDetailPage.tsx +48 -42
  320. package/.framework/src/pages/admin/AppsPage.tsx +45 -42
  321. package/.framework/src/pages/admin/DeliveriesPage.tsx +49 -17
  322. package/.framework/src/pages/admin/DesignedPage.tsx +31 -30
  323. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +58 -0
  324. package/.framework/src/pages/admin/EmbeddingsPage.tsx +49 -0
  325. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +31 -29
  326. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +46 -29
  327. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -29
  328. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +68 -55
  329. package/.framework/src/pages/admin/IntegrationsPage.tsx +45 -42
  330. package/.framework/src/pages/admin/InvitesPage.tsx +60 -44
  331. package/.framework/src/pages/admin/LogsPage.tsx +87 -137
  332. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +31 -29
  333. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +150 -89
  334. package/.framework/src/pages/admin/PipelineDetailPage.tsx +77 -104
  335. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +44 -43
  336. package/.framework/src/pages/admin/PipelinesPage.tsx +59 -145
  337. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +53 -42
  338. package/.framework/src/pages/admin/PromptConfigsPage.tsx +47 -117
  339. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +31 -44
  340. package/.framework/src/pages/admin/RoleDetailPage.tsx +49 -92
  341. package/.framework/src/pages/admin/RolesPage.tsx +47 -164
  342. package/.framework/src/pages/admin/SecurityPage.tsx +310 -0
  343. package/.framework/src/pages/admin/SelectTestPage.tsx +30 -32
  344. package/.framework/src/pages/admin/ShadcnTestPage.tsx +37 -44
  345. package/.framework/src/pages/admin/SimpleDashboard.tsx +32 -44
  346. package/.framework/src/pages/admin/TestRunDetailPage.tsx +97 -44
  347. package/.framework/src/pages/admin/TestingDashboard.tsx +126 -71
  348. package/.framework/src/pages/admin/TimerDetailPage.tsx +67 -55
  349. package/.framework/src/pages/admin/TimersPage.tsx +44 -42
  350. package/.framework/src/pages/admin/TriggerDetailPage.tsx +47 -42
  351. package/.framework/src/pages/admin/TriggersPage.tsx +58 -57
  352. package/.framework/src/pages/admin/TypeDetailPage.tsx +91 -55
  353. package/.framework/src/pages/admin/TypesPage.tsx +45 -42
  354. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +258 -128
  355. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +127 -123
  356. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +308 -235
  357. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +159 -110
  358. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +432 -0
  359. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +200 -178
  360. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +286 -239
  361. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +211 -90
  362. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +156 -143
  363. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +379 -0
  364. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +337 -0
  365. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +219 -214
  366. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  367. package/.framework/src/pages/auth/AuthConfirmPage.tsx +135 -65
  368. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +39 -31
  369. package/.framework/src/pages/auth/LoginPage.tsx +38 -32
  370. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -28
  371. package/.framework/src/pages/auth/RegisterPage.tsx +429 -155
  372. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -30
  373. package/.framework/src/pages/spine-framework/CLIPage.tsx +32 -30
  374. package/.framework/src/types/auth.ts +101 -93
  375. package/.framework/src/types/types.ts +283 -262
  376. package/.framework/templates/project.json +87 -0
  377. package/.framework/templates/spine.config.neutral.json +7 -0
  378. package/.framework/tests/api/api-surface.test.ts +381 -0
  379. package/.framework/tests/fixtures/seed.ts +427 -0
  380. package/.framework/tests/fixtures/teardown.ts +228 -0
  381. package/.framework/tests/reporter.ts +351 -0
  382. package/.framework/tests/setup.ts +135 -0
  383. package/.framework/tests/ui/ui-sweep.ts +278 -0
  384. package/.framework/tests/unit/admin-data-logger.test.ts +310 -0
  385. package/.framework/tests/unit/agent-runner.test.ts +2389 -0
  386. package/.framework/tests/unit/ai-interactions.test.ts +81 -0
  387. package/.framework/tests/unit/app-manifest.test.ts +359 -0
  388. package/.framework/tests/unit/assembly-scripts.test.ts +172 -0
  389. package/.framework/tests/unit/cil-determinism.test.ts +85 -0
  390. package/.framework/tests/unit/core-isolation.test.ts +153 -0
  391. package/.framework/tests/unit/funnel-signals.test.ts +135 -0
  392. package/.framework/tests/unit/install-app.test.ts +1759 -0
  393. package/.framework/tests/unit/invites-security.test.ts +572 -0
  394. package/.framework/tests/unit/kb-ingest-lease.test.ts +287 -0
  395. package/.framework/tests/unit/kb-search.test.ts +119 -0
  396. package/.framework/tests/unit/migrate.test.ts +509 -0
  397. package/.framework/tests/unit/notify.test.ts +136 -0
  398. package/.framework/tests/unit/permissions.test.ts +269 -0
  399. package/.framework/tests/unit/pipeline-runner.test.ts +755 -0
  400. package/.framework/tests/unit/principal-cache.test.ts +138 -0
  401. package/.framework/tests/unit/retrieval-golden.test.ts +520 -0
  402. package/.framework/tests/unit/runtime-isolation.test.ts +642 -0
  403. package/.framework/tests/unit/schema-utils.test.ts +225 -0
  404. package/.framework/tests/unit/trigger-engine.test.ts +513 -0
  405. package/.framework/tests/unit/validate-app.test.ts +527 -0
  406. package/README.md +34 -3
  407. package/bin/spine-framework.cjs +1 -0
  408. package/config/tailwind.config.cjs +7 -0
  409. package/config/tsconfig.functions.json +42 -0
  410. package/config/tsconfig.json +37 -9
  411. package/config/vite.config.ts +31 -2
  412. package/netlify.toml +31 -3
  413. package/package.json +46 -29
  414. package/scripts/assemble-frontend.sh +127 -44
  415. package/scripts/assemble-functions.sh +127 -29
  416. package/scripts/boundary-check.sh +6 -2
  417. package/scripts/build-manifest.sh +24 -68
  418. package/scripts/checksum-manifest.mts +345 -0
  419. package/scripts/dev-clean.sh +86 -0
  420. package/scripts/dev-netlify.sh +49 -0
  421. package/scripts/netlify-dev-wrapper.sh +2 -0
  422. package/scripts/verify-install.ts +358 -0
  423. package/scripts/verify-integrity.sh +21 -57
  424. package/scripts/verify-manifest.mts +305 -0
  425. package/templates/project/gitignore +45 -0
  426. package/{config → templates/project}/package-lock.json +22335 -9366
  427. package/vitest.config.ts +46 -0
  428. package/.framework/public/spine.config.json +0 -91
  429. package/config/deno.lock +0 -108
  430. package/config/tsconfig.node.tsbuildinfo +0 -1
  431. package/config/tsconfig.tsbuildinfo +0 -1
  432. package/config/vite.config.d.ts +0 -2
  433. package/custom/.devin/AGENT.md +0 -357
  434. package/custom/.devin/skills/install-app/SKILL.md +0 -39
  435. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +0 -39
  436. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +0 -36
  437. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +0 -46
  438. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +0 -28
  439. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +0 -38
  440. package/custom/.devin/workflows/app-install.yaml +0 -83
  441. package/custom/README.md +0 -79
  442. package/docs/README.md +0 -15
  443. package/scripts/app-install-cli.ts +0 -286
  444. package/scripts/check-core-integrity.sh +0 -82
  445. package/scripts/ingest-chunks.cjs +0 -202
  446. package/scripts/kb-chunk-parser.cjs +0 -312
  447. package/scripts/kb-chunk-parser.ts +0 -330
  448. package/scripts/kb-ingest-docs.ts +0 -203
  449. package/scripts/load-test-app-install.ts +0 -484
  450. package/scripts/test-login.js +0 -33
  451. package/spine.config.json +0 -91
@@ -1,3 +1,15 @@
1
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/cli/commands/dev.ts"]
2
+ // CIL[DOC-MACRO purpose="Provides CLI commands for the development environment, facilitating process spawning and file watching."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Expose dev command utilities for developers to streamline application development workflow."]
4
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
5
+ // CIL[DOC-CONTRACT inputs="[]" outputs="[]" errors="[]" side_effects="[]"]
6
+ // CIL[DOC-MICRO logic_summary="Defines the dev module and its intent, invariant, and related modules." notable_decisions="Commands should only be executed in a valid development environment."]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="internal"]
10
+
11
+
12
+
1
13
 
2
14
 
3
15
 
@@ -11,45 +23,102 @@
11
23
 
12
24
 
13
25
 
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"]
29
26
  import type { Command } from 'commander'
30
27
  import { spawn, execSync } from 'child_process'
31
28
  import { resolve, dirname } from 'path'
32
29
  import { fileURLToPath } from 'url'
33
30
  import { watch, existsSync, statSync, readdirSync } from 'fs'
34
31
 
32
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides CLI commands for the development environment, facilitating process spawning and file watching.'; No verified external callers; imports: none"]
33
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
34
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
35
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
36
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
37
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
38
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:module_header:module_header"]
39
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:__filename:constant" type="constant" identity="__filename" parent="~/.framework/cli/commands/dev.ts"]
40
+ // CIL[DOC-MACRO purpose="Resolves the current module's file URL to a filesystem path."]
41
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a stable __filename reference for the module."]
42
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
43
+ // CIL[DOC-CONTRACT inputs="[]" outputs="string" errors="[]" side_effects="none"]
44
+ // CIL[DOC-MICRO logic_summary="Call fileURLToPath(import.meta.url) and assign to const __filename." notable_decisions=""]
45
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
46
+ // CIL[DOC-STABILITY stability="stable"]
47
+
48
+
35
49
  const __filename = fileURLToPath(import.meta.url)
50
+ // CIL[DOC-VECTOR type="context" content="purpose='Resolves the current module's file URL to a filesystem path.'; No verified external callers; imports: none"]
51
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
52
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
53
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
54
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
55
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
56
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:__filename:constant"]
57
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:__dirname:constant" type="constant" identity="__dirname" parent="~/.framework/cli/commands/dev.ts"]
58
+ // CIL[DOC-MACRO purpose="Provides the directory name of the current module for relative path resolution."]
59
+ // CIL[DOC-RESPONSIBILITY responsibility="Derive the current module's directory from __filename."]
60
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
61
+ // CIL[DOC-CONTRACT inputs="[]" outputs="string" errors="[]" side_effects="none"]
62
+ // CIL[DOC-MICRO logic_summary="Call dirname(__filename) and assign to const __dirname." notable_decisions=""]
63
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
64
+ // CIL[DOC-STABILITY stability="stable"]
65
+
66
+
36
67
  const __dirname = dirname(__filename)
37
- const PROJECT_ROOT = resolve(__dirname, '../../../')
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"]
68
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides the directory name of the current module for relative path resolution.'; No verified external callers; imports: none"]
69
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
70
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
71
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
72
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
73
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
74
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:__dirname:constant"]
75
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:PROJECT_ROOT:constant" type="constant" identity="PROJECT_ROOT" parent="~/.framework/cli/commands/dev.ts"]
76
+ // CIL[DOC-MACRO purpose="Defines the project root directory for relative path resolution."]
77
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide a resolved project root path for file operations."]
78
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
79
+ // CIL[DOC-CONTRACT inputs="[]" outputs="string" errors="[]" side_effects="none"]
80
+ // CIL[DOC-MICRO logic_summary="Resolve __dirname joined with '../../../' to produce PROJECT_ROOT." notable_decisions=""]
81
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
46
82
  // 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."]
83
+ /**
84
+ * PROJECT_ROOT defines the root directory of the project, allowing for relative path resolution. It exists to facilitate file operations within the project structure.
85
+ *
86
+ * @sideEffects none
87
+ * @stability stable
88
+ * @calls resolve
89
+ * @cil-generated
90
+ */
91
+ const PROJECT_ROOT = resolve(__dirname, '../../../')
92
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the project root directory for relative path resolution.'; No verified external callers; imports: none"]
93
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
94
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
95
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
51
96
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
52
97
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
98
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:PROJECT_ROOT:constant"]
99
+
100
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:registerDevCommands:function" type="function" identity="registerDevCommands" parent="~/.framework/cli/commands/dev.ts"]
101
+ // CIL[DOC-MACRO purpose="Registers the 'dev' command for starting the Spine development server with options."]
102
+ // CIL[DOC-RESPONSIBILITY responsibility="Configure and launch the dev server with integrity verification and file watching."]
103
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
104
+ // CIL[DOC-CONTRACT inputs="program: Command" outputs="Promise<void>" errors="Process exits on failure" side_effects="Executes shell commands, spawns a child process, and watches for file changes."]
105
+ // CIL[DOC-MICRO logic_summary="Assemble v2 core and custom files, verify integrity unless skipped, spawn Vite server, and optionally watch v2-custom for changes with debounced reassembly." notable_decisions="Honors --no-verify, --port, --host, --no-watch, and --watch-delay options; ignores changes in node_modules and dotfiles; sets SPINE_DEV=true for the Vite process."]
106
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
107
+ // CIL[DOC-STABILITY stability="stable"]
108
+ /**
109
+ * Registers development commands for starting the Spine development server with various options. It facilitates the assembly and verification of core components before launching the server.
110
+ *
111
+ * @macro Command registration function for a CLI tool.
112
+ * @micro Utilizes external scripts for assembly and integrity verification, followed by spawning a Vite server process.
113
+ * @inputSpec
114
+ * program: Command (required) — The command program to register the dev commands with.
115
+ * @outputSpec Promise<void>
116
+ * @sideEffects Executes shell commands, spawns a child process, and potentially modifies the file system through watching for changes.
117
+ * @stability stable
118
+ * @calls runCommand, spawn, watch, existsSync, resolve
119
+ * @errorHandling none
120
+ * @cil-generated
121
+ */
53
122
  export function registerDevCommands(program: Command) {
54
123
  program
55
124
  .command('dev')
@@ -189,21 +258,37 @@ export function registerDevCommands(program: Command) {
189
258
  }
190
259
  })
191
260
  }
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."]
261
+ // CIL[DOC-VECTOR type="context" content="purpose='Registers the 'dev' command for starting the Spine development server with options.'; No verified external callers; imports: none"]
262
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
263
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
264
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
205
265
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
206
266
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
267
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:registerDevCommands:function"]
268
+
269
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:runCommand:function" type="function" identity="runCommand" parent="~/.framework/cli/commands/dev.ts"]
270
+ // CIL[DOC-MACRO purpose="Executes a shell command in a given working directory and returns its exit code."]
271
+ // CIL[DOC-RESPONSIBILITY responsibility="Run a command as a child process and report its exit code."]
272
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
273
+ // CIL[DOC-CONTRACT inputs="command: string, args: string[], cwd: string" outputs="Promise<number>" errors="Rejects on process error" side_effects="Spawns a child process with inherited stdio."]
274
+ // CIL[DOC-MICRO logic_summary="Spawn the command with inherited stdio and environment, resolve with the exit code, reject on spawn error." notable_decisions=""]
275
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
276
+ // CIL[DOC-STABILITY stability="stable"]
277
+ /**
278
+ * Executes a command in a specified directory and returns the exit code. This function is useful for running shell commands programmatically within the application.
279
+ *
280
+ * @macro Command execution handler that returns the process exit code.
281
+ * @micro Spawns a child process to run the command with inherited stdio and environment variables.
282
+ * @inputSpec
283
+ * command: string (required) — the command to execute.
284
+ * args: string[] (required) — an array of arguments for the command.
285
+ * cwd: string (required) — the current working directory for the command.
286
+ * @outputSpec Promise<number> — resolves with the exit code of the command.
287
+ * @sideEffects none
288
+ * @stability stable
289
+ * @calls spawn
290
+ * @cil-generated
291
+ */
207
292
  function runCommand(command: string, args: string[], cwd: string): Promise<number> {
208
293
  return new Promise((resolve, reject) => {
209
294
  const proc = spawn(command, args, {
@@ -221,21 +306,33 @@ function runCommand(command: string, args: string[], cwd: string): Promise<numbe
221
306
  })
222
307
  })
223
308
  }
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."]
309
+ // CIL[DOC-VECTOR type="context" content="purpose='Executes a shell command in a given working directory and returns its exit code.'; No verified external callers; imports: none"]
310
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
311
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
312
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
237
313
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
238
314
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
315
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:runCommand:function"]
316
+
317
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:fastReassemble:function" type="function" identity="fastReassemble" parent="~/.framework/cli/commands/dev.ts"]
318
+ // CIL[DOC-MACRO purpose="Synchronizes custom source and configuration files into assembled destinations."]
319
+ // CIL[DOC-RESPONSIBILITY responsibility="Copy changed files from v2-custom to src/v2-assembled and functions, and update public spine.config.json."]
320
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
321
+ // CIL[DOC-CONTRACT inputs="projectRoot: string" outputs="Promise<void>" errors="Throws on command or file system failure" side_effects="File I/O: copying, synchronizing, creating directories."]
322
+ // CIL[DOC-MICRO logic_summary="Check for rsync; rsync or manually copy changed custom src and functions; conditionally copy spine.config.json if newer." notable_decisions="Prefers rsync when available; filters to changed files via mtime when rsync is absent; conditionally copies spine.config.json to src/v2-assembled/public."]
323
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
324
+ // CIL[DOC-STABILITY stability="stable"]
325
+ /**
326
+ * The fastReassemble function synchronizes custom source files and configuration from a specified project root to designated destination directories. It ensures that the latest changes are reflected in the assembled output, using rsync if available for efficiency.
327
+ *
328
+ * @inputSpec
329
+ * projectRoot: string (required) — the root directory of the project to reassemble.
330
+ * @outputSpec Promise<void>
331
+ * @sideEffects file I/O operations including copying and synchronizing files, creating directories.
332
+ * @stability stable
333
+ * @calls execSync, existsSync, mkdirSync, statSync, copyFileSync, copyChangedFiles
334
+ * @cil-generated
335
+ */
239
336
  async function fastReassemble(projectRoot: string): Promise<void> {
240
337
  const customDir = resolve(projectRoot, 'v2-custom')
241
338
  const srcDest = resolve(projectRoot, 'src/v2-assembled')
@@ -299,21 +396,34 @@ async function fastReassemble(projectRoot: string): Promise<void> {
299
396
  }
300
397
  }
301
398
  }
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."]
399
+ // CIL[DOC-VECTOR type="context" content="purpose='Synchronizes custom source and configuration files into assembled destinations.'; No verified external callers; imports: none"]
400
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
401
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
402
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
315
403
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
316
404
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
405
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:fastReassemble:function"]
406
+
407
+ // CIL[BEGIN stable_id="~/.framework/cli/commands/dev.ts:copyChangedFiles:function" type="function" identity="copyChangedFiles" parent="~/.framework/cli/commands/dev.ts"]
408
+ // CIL[DOC-MACRO purpose="Copies files from source to destination only when modified."]
409
+ // CIL[DOC-RESPONSIBILITY responsibility="Recursively mirror changed files while creating missing directories."]
410
+ // CIL[DOC-CONTEXT module="dev" layer="app-specific" related_files=".framework/cli/commands/dev.ts"]
411
+ // CIL[DOC-CONTRACT inputs="src: string, dest: string" outputs="void" errors="Throws on file system errors" side_effects="File I/O"]
412
+ // CIL[DOC-MICRO logic_summary="Read source entries; for directories ensure destination and recurse; for files compare mtime and copy if newer." notable_decisions="Uses require('fs') for mkdirSync and copyFileSync inside the function; compares mtime to decide whether to copy."]
413
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
414
+ // CIL[DOC-STABILITY stability="stable"]
415
+ /**
416
+ * Copies files from the source directory to the destination directory only if they have changed. This function ensures that only modified files are copied, optimizing the file transfer process.
417
+ *
418
+ * @inputSpec
419
+ * src: string (required) — the source directory path.
420
+ * dest: string (required) — the destination directory path.
421
+ * @outputSpec void
422
+ * @sideEffects file I/O
423
+ * @stability stable
424
+ * @calls readdirSync, existsSync, mkdirSync, statSync, copyFileSync
425
+ * @cil-generated
426
+ */
317
427
  function copyChangedFiles(src: string, dest: string): void {
318
428
  const files = readdirSync(src, { withFileTypes: true })
319
429
 
@@ -346,4 +456,10 @@ function copyChangedFiles(src: string, dest: string): void {
346
456
  }
347
457
  }
348
458
  }
349
- // CIL[END chunk_id="dev_copychangedfiles_1784071456"]
459
+ // CIL[DOC-VECTOR type="context" content="purpose='Copies files from source to destination only when modified.'; No verified external callers; imports: none"]
460
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
461
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
462
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
463
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
464
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
465
+ // CIL[END stable_id="~/.framework/cli/commands/dev.ts:copyChangedFiles:function"]