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,20 +1,15 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailPage.tsx:module_header:module_header"]
2
+ // CIL[DOC-MACRO purpose="Module-level imports and component entry point for the runtime data detail page."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide React imports, route and UI component dependencies, and declare the DataDetailPage module."]
4
+ // CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/hooks/useEntityRecord.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="rendered DataDetailPage component and imported dependencies" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Imports React hooks, router hooks, the useEntityRecord hook, and child UI components; contains no runtime logic." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="developers, maintainers"]
10
+
1
11
 
2
12
 
3
- // CIL[BEGIN chunk_id="DataDetailPage_module_header_1783929048" type="module_header" identity="imports" parent="none"]
4
- // CIL[DOC-MACRO purpose="Import dependencies for entity detail page component"]
5
- // CIL[DOC-RESPONSIBILITY responsibility="Manage imports for hooks and components"]
6
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
7
- // CIL[DOC-CONTRACT inputs="none" outputs="imports" errors="none" side_effects="none"]
8
- // CIL[DOC-MICRO logic_summary="Imports React hooks, routing, entity hooks, and UI components" notable_decisions="[]"]
9
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
- // CIL[DOC-STABILITY stability="stable"]
11
- // CIL[DOC-AUDIENCE audience="developer"]
12
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, .framework/src/pages/admin/RolesPage.tsx, \."]
13
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
18
13
  import { useState, useEffect } from 'react'
19
14
  import { useParams, useSearchParams } from 'react-router-dom'
20
15
  import { useEntityRecord } from '../../hooks/useEntityRecord'
@@ -23,73 +18,30 @@ import { SchemaDetailForm } from './SchemaDetailForm'
23
18
  import { Button } from '../ui/button'
24
19
  import { Card, CardContent } from '../ui/card'
25
20
  import { Skeleton } from '../ui/skeleton'
26
- // CIL[END chunk_id="DataDetailPage_module_header_1783929048"]
27
- // CIL[BEGIN chunk_id="DataDetailPage_datadetailpage_1783929048" type="function" identity="DataDetailPage" parent="none"]
28
- // CIL[DOC-MACRO purpose="Render main detail page with header and form"]
29
- // CIL[DOC-RESPONSIBILITY responsibility="Display complete entity detail interface"]
30
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/migrations/015_simplify_apps_table.sql\"]"]
31
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX detail page" errors="none" side_effects="none"]
32
- // CIL[DOC-MICRO logic_summary="Render header and form with all edit/create functionality" notable_decisions="[]"]
33
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
34
- // CIL[DOC-STABILITY stability="stable"]
35
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/table-primitives.tsx, .framework/migrations/015_simplify_apps_table.sql."]
36
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
37
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
38
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
21
+
22
+ // CIL[DOC-VECTOR type="context" content="purpose='Module-level imports and component entry point for the runtime data detail page.'; No verified external callers; imports: .framework/src/hooks/useEntityRecord.ts,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx"]
23
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
24
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
25
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
39
26
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
40
27
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
41
- export function DataDetailPage() {
42
- // CIL[BEGIN chunk_id="DataDetailPage_params_1783929048" type="variable_declaration" identity="params" parent="DataDetailPage_datadetailpage_1783929048"]
43
- // CIL[DOC-MACRO purpose="Extract URL parameters for entity, id, and search params"]
44
- // CIL[DOC-RESPONSIBILITY responsibility="Handle params"]
45
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
46
- // CIL[DOC-CONTRACT inputs="none" outputs="entity,id,typeSlug,searchParams" errors="none" side_effects="none"]
47
- // CIL[DOC-MICRO logic_summary="Extract entity, id, typeSlug from params and manage search params" notable_decisions="[]"]
48
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
28
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataDetailPage.tsx:module_header:module_header"]
29
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataDetailPage.tsx:datadetailpage:function"]
30
+ // CIL[DOC-MACRO purpose="Render a detail/edit page for a runtime entity record using its design schema and the useEntityRecord hook."]
31
+ // CIL[DOC-RESPONSIBILITY responsibility="Fetch and display a record, handle create/edit/delete flows, field changes, and cancel/save/delete actions, and render the detail form."]
32
+ // CIL[DOC-CONTEXT module="runtime" layer="presentation" related_files=".framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/DataDetailPage.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/hooks/useEntityRecord.ts"]
33
+ // CIL[DOC-CONTRACT inputs="URL params (entity, id, typeSlug), search params (edit)" outputs="JSX for loading, error, or detail form" errors="Failed to load record or schema; save/delete errors bubble via useEntityRecord" side_effects="Updates search params; navigates on create/cancel/delete; calls useEntityRecord save/delete; uses browser confirm dialog"]
34
+ // CIL[DOC-MICRO logic_summary="Uses useParams and useSearchParams, derives recordId and isCreating/isEditing, builds a config for useEntityRecord, initializes formData from schema sections, and handles field change, edit, save, delete, and cancel actions." notable_decisions="[]"]
35
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
49
36
  // CIL[DOC-STABILITY stability="stable"]
50
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
51
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
52
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
53
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
54
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
55
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
37
+ export function DataDetailPage() {
56
38
  const { entity, id, typeSlug } = useParams<{ entity: string; id: string; typeSlug?: string }>()
57
39
  const [searchParams, setSearchParams] = useSearchParams()
58
- // CIL[END chunk_id="DataDetailPage_params_1783929048"]
59
40
 
60
- // CIL[BEGIN chunk_id="DataDetailPage_stateflags_1783929048" type="variable_declaration" identity="stateFlags" parent="DataDetailPage_datadetailpage_1783929048"]
61
- // CIL[DOC-MACRO purpose="Determine create/edit mode from URL parameters"]
62
- // CIL[DOC-RESPONSIBILITY responsibility="Handle stateFlags"]
63
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
64
- // CIL[DOC-CONTRACT inputs="none" outputs="isCreating,isEditing" errors="none" side_effects="none"]
65
- // CIL[DOC-MICRO logic_summary="Set create mode from missing id, edit mode from search param" notable_decisions="[]"]
66
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
67
- // CIL[DOC-STABILITY stability="stable"]
68
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/RolesPage.tsx, \."]
69
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
70
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
71
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
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
41
  const recordId = id === 'new' ? undefined : id
75
42
  const isCreating = !recordId
76
43
  const isEditing = searchParams.get('edit') === 'true' || isCreating
77
- // CIL[END chunk_id="DataDetailPage_stateflags_1783929048"]
78
44
 
79
- // CIL[BEGIN chunk_id="DataDetailPage_config_1783929048" type="variable_declaration" identity="config" parent="DataDetailPage_datadetailpage_1783929048"]
80
- // CIL[DOC-MACRO purpose="Create configuration object for entity record operations"]
81
- // CIL[DOC-RESPONSIBILITY responsibility="Handle config"]
82
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
83
- // CIL[DOC-CONTRACT inputs="none" outputs="config:object" errors="none" side_effects="none"]
84
- // CIL[DOC-MICRO logic_summary="Configure entity details, API actions, and display settings" notable_decisions="[]"]
85
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
86
- // CIL[DOC-STABILITY stability="stable"]
87
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, \."]
88
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
89
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
90
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
91
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
92
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
93
45
  const defaultTypeSlugs: Record<string, string> = {
94
46
  accounts: 'account',
95
47
  people: 'person',
@@ -114,22 +66,7 @@ export function DataDetailPage() {
114
66
  updateAction: 'update'
115
67
  }
116
68
  }
117
- // CIL[END chunk_id="DataDetailPage_config_1783929048"]
118
69
 
119
- // CIL[BEGIN chunk_id="DataDetailPage_entityrecord_1783929048" type="variable_declaration" identity="entityRecord" parent="DataDetailPage_datadetailpage_1783929048"]
120
- // CIL[DOC-MACRO purpose="Fetch entity record and management functions"]
121
- // CIL[DOC-RESPONSIBILITY responsibility="Handle entityRecord"]
122
- // CIL[DOC-CONTEXT module="entityRecord" layer="unknown" related_files="[]"]
123
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
124
- // CIL[DOC-MICRO logic_summary="Implements entityRecord" notable_decisions="[]"]
125
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
126
- // CIL[DOC-STABILITY stability="stable"]
127
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
128
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
129
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
130
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
131
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
132
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
133
70
  const {
134
71
  record,
135
72
  fieldPermissions,
@@ -141,78 +78,18 @@ export function DataDetailPage() {
141
78
  saving,
142
79
  deleting
143
80
  } = useEntityRecord(entity!, recordId, config)
144
- // CIL[END chunk_id="DataDetailPage_entityrecord_1783929048"]
145
81
 
146
- // CIL[BEGIN chunk_id="DataDetailPage_schema_1783929048" type="variable_declaration" identity="schema" parent="DataDetailPage_datadetailpage_1783929048"]
147
- // CIL[DOC-MACRO purpose="Extract schema and view from record data"]
148
- // CIL[DOC-RESPONSIBILITY responsibility="Handle schema"]
149
- // CIL[DOC-CONTEXT module="schema" layer="unknown" related_files="[]"]
150
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
151
- // CIL[DOC-MICRO logic_summary="Implements schema" notable_decisions="[]"]
152
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
153
- // CIL[DOC-STABILITY stability="stable"]
154
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
155
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
156
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
157
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
158
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
159
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
160
82
  const schema = record?.design_schema || null
161
83
  const view = schema?.views?.default_detail || null
162
- // CIL[END chunk_id="DataDetailPage_schema_1783929048"]
163
84
 
164
- // CIL[BEGIN chunk_id="DataDetailPage_title_1783929048" type="variable_declaration" identity="title" parent="DataDetailPage_datadetailpage_1783929048"]
165
- // CIL[DOC-MACRO purpose="Generate display title for entity record"]
166
- // CIL[DOC-RESPONSIBILITY responsibility="Handle title"]
167
- // CIL[DOC-CONTEXT module="title" layer="unknown" related_files="[]"]
168
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
169
- // CIL[DOC-MICRO logic_summary="Implements title" notable_decisions="[]"]
170
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
171
- // CIL[DOC-STABILITY stability="stable"]
172
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
173
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
174
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
175
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
176
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
177
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
178
85
  const displayField = schema?.display_field || config.displayField
179
86
  const FALLBACK_FIELDS = ['full_name', 'display_name', 'name', 'title', 'slug', 'email']
180
87
  const recordTitle = record?.[displayField]
181
88
  ?? FALLBACK_FIELDS.map(f => record?.[f]).find(v => v != null)
182
89
  ?? 'Untitled'
183
- // CIL[END chunk_id="DataDetailPage_title_1783929048"]
184
90
 
185
- // CIL[BEGIN chunk_id="DataDetailPage_formdata_1783929048" type="variable_declaration" identity="formData" parent="DataDetailPage_datadetailpage_1783929048"]
186
- // CIL[DOC-MACRO purpose="Manage form state for entity editing"]
187
- // CIL[DOC-RESPONSIBILITY responsibility="Handle formData"]
188
- // CIL[DOC-CONTEXT module="formData" layer="unknown" related_files="[]"]
189
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
190
- // CIL[DOC-MICRO logic_summary="Implements formData" notable_decisions="[]"]
191
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
192
- // CIL[DOC-STABILITY stability="stable"]
193
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
194
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
195
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
196
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
197
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
198
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
199
91
  const [formData, setFormData] = useState<Record<string, any>>({})
200
- // CIL[END chunk_id="DataDetailPage_formdata_1783929048"]
201
92
 
202
- // CIL[BEGIN chunk_id="DataDetailPage_useeffect_1783929048" type="function" identity="useEffect" parent="DataDetailPage_datadetailpage_1783929048"]
203
- // CIL[DOC-MACRO purpose="Initialize form data when record loads or in create mode"]
204
- // CIL[DOC-RESPONSIBILITY responsibility="Handle useEffect"]
205
- // CIL[DOC-CONTEXT module="useEffect" layer="unknown" related_files="[]"]
206
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
207
- // CIL[DOC-MICRO logic_summary="Implements useEffect" notable_decisions="[]"]
208
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
209
- // CIL[DOC-STABILITY stability="stable"]
210
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
211
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
212
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
213
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
214
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
215
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
216
93
  useEffect(() => {
217
94
  if (record && view) {
218
95
  const initialData: Record<string, any> = {}
@@ -232,60 +109,15 @@ export function DataDetailPage() {
232
109
  setFormData({})
233
110
  }
234
111
  }, [record, isCreating, view, schema])
235
- // CIL[END chunk_id="DataDetailPage_useeffect_1783929048"]
236
112
 
237
- // CIL[BEGIN chunk_id="DataDetailPage_handlefieldchange_1783929048" type="function" identity="handleFieldChange" parent="DataDetailPage_datadetailpage_1783929048"]
238
- // CIL[DOC-MACRO purpose="Update form field value when user edits"]
239
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleFieldChange"]
240
- // CIL[DOC-CONTEXT module="handleFieldChange" layer="unknown" related_files="[]"]
241
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
242
- // CIL[DOC-MICRO logic_summary="Implements handleFieldChange" notable_decisions="[]"]
243
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
244
- // CIL[DOC-STABILITY stability="stable"]
245
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
246
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
247
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
248
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
249
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
250
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
251
113
  const handleFieldChange = (key: string, value: any) => {
252
114
  setFormData((prev) => ({ ...prev, [key]: value }))
253
115
  }
254
- // CIL[END chunk_id="DataDetailPage_handlefieldchange_1783929048"]
255
116
 
256
- // CIL[BEGIN chunk_id="DataDetailPage_handleedit_1783929048" type="function" identity="handleEdit" parent="DataDetailPage_datadetailpage_1783929048"]
257
- // CIL[DOC-MACRO purpose="Enable edit mode for the entity record"]
258
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleEdit"]
259
- // CIL[DOC-CONTEXT module="handleEdit" layer="unknown" related_files="[]"]
260
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
261
- // CIL[DOC-MICRO logic_summary="Implements handleEdit" notable_decisions="[]"]
262
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
263
- // CIL[DOC-STABILITY stability="stable"]
264
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
265
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
266
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
267
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
268
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
269
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
270
117
  const handleEdit = () => {
271
118
  setSearchParams({ edit: 'true' })
272
119
  }
273
- // CIL[END chunk_id="DataDetailPage_handleedit_1783929048"]
274
120
 
275
- // CIL[BEGIN chunk_id="DataDetailPage_handlecancel_1783929048" type="function" identity="handleCancel" parent="DataDetailPage_datadetailpage_1783929048"]
276
- // CIL[DOC-MACRO purpose="Handle cancel action with navigation or reset"]
277
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleCancel"]
278
- // CIL[DOC-CONTEXT module="handleCancel" layer="unknown" related_files="[]"]
279
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
280
- // CIL[DOC-MICRO logic_summary="Implements handleCancel" notable_decisions="[]"]
281
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
282
- // CIL[DOC-STABILITY stability="stable"]
283
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
284
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
285
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
286
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
287
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
288
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
289
121
  const handleCancel = () => {
290
122
  if (isCreating) {
291
123
  window.location.href = `/spine-framework/admin/runtime/${entity}`
@@ -308,22 +140,7 @@ export function DataDetailPage() {
308
140
  }
309
141
  }
310
142
  }
311
- // CIL[END chunk_id="DataDetailPage_handlecancel_1783929048"]
312
143
 
313
- // CIL[BEGIN chunk_id="DataDetailPage_handlesave_1783929048" type="function" identity="handleSave" parent="DataDetailPage_datadetailpage_1783929048"]
314
- // CIL[DOC-MACRO purpose="Save entity record and handle navigation after save"]
315
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleSave"]
316
- // CIL[DOC-CONTEXT module="handleSave" layer="unknown" related_files="[]"]
317
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
318
- // CIL[DOC-MICRO logic_summary="Implements handleSave" notable_decisions="[]"]
319
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
320
- // CIL[DOC-STABILITY stability="stable"]
321
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
322
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
323
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
324
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
325
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
326
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
327
144
  const handleSave = async () => {
328
145
  await save(formData)
329
146
  if (!isCreating) {
@@ -332,44 +149,14 @@ export function DataDetailPage() {
332
149
  window.location.href = `/spine-framework/admin/runtime/${entity}`
333
150
  }
334
151
  }
335
- // CIL[END chunk_id="DataDetailPage_handlesave_1783929048"]
336
152
 
337
- // CIL[BEGIN chunk_id="DataDetailPage_handledelete_1783929048" type="function" identity="handleDelete" parent="DataDetailPage_datadetailpage_1783929048"]
338
- // CIL[DOC-MACRO purpose="handleDelete"]
339
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleDelete"]
340
- // CIL[DOC-CONTEXT module="handleDelete" layer="unknown" related_files="[]"]
341
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
342
- // CIL[DOC-MICRO logic_summary="Implements handleDelete" notable_decisions="[]"]
343
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
344
- // CIL[DOC-STABILITY stability="stable"]
345
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
346
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
347
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
348
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
349
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
350
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
351
153
  const handleDelete = async () => {
352
154
  if (confirm(`Are you sure you want to delete this ${config?.entity?.slice(0, -1) || 'record'}?`)) {
353
155
  await deleteRecord()
354
156
  window.location.href = `/spine-framework/admin/runtime/${entity}`
355
157
  }
356
158
  }
357
- // CIL[END chunk_id="DataDetailPage_handledelete_1783929048"]
358
159
 
359
- // CIL[BEGIN chunk_id="DataDetailPage_loadingstate_1783929048" type="render_block" identity="loadingState" parent="DataDetailPage_datadetailpage_1783929048"]
360
- // CIL[DOC-MACRO purpose="Render loading skeleton for record fetching"]
361
- // CIL[DOC-RESPONSIBILITY responsibility="Handle loadingState"]
362
- // CIL[DOC-CONTEXT module="loadingState" layer="unknown" related_files="[]"]
363
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
364
- // CIL[DOC-MICRO logic_summary="Implements loadingState" notable_decisions="[]"]
365
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
366
- // CIL[DOC-STABILITY stability="stable"]
367
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
368
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
369
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
370
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
371
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
372
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
373
160
  if (loading) {
374
161
  return (
375
162
  <Card>
@@ -381,22 +168,7 @@ export function DataDetailPage() {
381
168
  </Card>
382
169
  )
383
170
  }
384
- // CIL[END chunk_id="DataDetailPage_loadingstate_1783929048"]
385
171
 
386
- // CIL[BEGIN chunk_id="DataDetailPage_errorstate_1783929048" type="render_block" identity="errorState" parent="DataDetailPage_datadetailpage_1783929048"]
387
- // CIL[DOC-MACRO purpose="Render error state for record loading failures"]
388
- // CIL[DOC-RESPONSIBILITY responsibility="Handle errorState"]
389
- // CIL[DOC-CONTEXT module="errorState" layer="unknown" related_files="[]"]
390
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
391
- // CIL[DOC-MICRO logic_summary="Implements errorState" notable_decisions="[]"]
392
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
393
- // CIL[DOC-STABILITY stability="stable"]
394
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
395
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
396
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
397
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
398
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
399
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
400
172
  if (error || !schema || !view) {
401
173
  return (
402
174
  <Card>
@@ -407,22 +179,7 @@ export function DataDetailPage() {
407
179
  </Card>
408
180
  )
409
181
  }
410
- // CIL[END chunk_id="DataDetailPage_errorstate_1783929048"]
411
182
 
412
- // CIL[BEGIN chunk_id="DataDetailPage_mainrender_1783929048" type="render_block" identity="mainRender" parent="DataDetailPage_datadetailpage_1783929048"]
413
- // CIL[DOC-MACRO purpose="Render main detail page with header and form"]
414
- // CIL[DOC-RESPONSIBILITY responsibility="Handle mainRender"]
415
- // CIL[DOC-CONTEXT module="mainRender" layer="unknown" related_files="[]"]
416
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
417
- // CIL[DOC-MICRO logic_summary="Implements mainRender" notable_decisions="[]"]
418
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
419
- // CIL[DOC-STABILITY stability="stable"]
420
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
421
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
422
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
423
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
424
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
425
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
426
183
  return (
427
184
  <div className="space-y-6">
428
185
  <DataDetailHeader
@@ -451,6 +208,11 @@ export function DataDetailPage() {
451
208
  />
452
209
  </div>
453
210
  )
454
- // CIL[END chunk_id="DataDetailPage_mainrender_1783929048"]
455
211
  }
456
- // CIL[END chunk_id="DataDetailPage_datadetailpage_1783929048"]
212
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a detail/edit page for a runtime entity record using its design schema and the useEntityRecord hook.'; No verified external callers; imports: .framework/src/hooks/useEntityRecord.ts,.framework/src/components/runtime/DataDetailHeader.tsx,.framework/src/components/runtime/SchemaDetailForm.tsx"]
213
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
214
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
215
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
216
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
217
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
218
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataDetailPage.tsx:datadetailpage:function"]
@@ -1,26 +1,37 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataFilters.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
2
+ // CIL[DOC-MACRO purpose="Provides a filter UI component for entity data"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Render filter controls for search, enum, and boolean fields"]
4
+ // CIL[DOC-CONTEXT module="runtime" layer="components" related_files=".framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/types/types.ts"]
5
+ // CIL[DOC-CONTRACT inputs="filter configuration and current values" outputs="controlled filter values" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Header for DataFilters component module" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="developers"]
10
+
1
11
 
2
12
 
3
- // CIL[BEGIN chunk_id="DataFilters_module_header_1783929048" type="module_header" identity="imports_and_types" parent="none"]
4
- // CIL[DOC-MACRO purpose="Import dependencies and define filter component types"]
5
- // CIL[DOC-RESPONSIBILITY responsibility="Manage imports and interface for data filters"]
6
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
7
- // CIL[DOC-CONTRACT inputs="none" outputs="types" errors="none" side_effects="none"]
8
- // CIL[DOC-MICRO logic_summary="Imports EntityFilter type, UI components for filters" notable_decisions="[]"]
9
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
10
- // CIL[DOC-STABILITY stability="stable"]
11
- // CIL[DOC-AUDIENCE audience="developer"]
12
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
13
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
14
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
15
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
16
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
17
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
18
13
  import { EntityFilter } from '../../types/types'
19
14
  import { Card, CardContent } from '../ui/card'
20
15
  import { Input } from '../ui/input'
21
16
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select'
22
17
  import { Button } from '../ui/button'
23
18
  import { Label } from '../ui/label'
19
+ // CIL[DOC-VECTOR type="context" content="purpose='Provides a filter UI component for entity data'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
20
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
21
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
22
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
23
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
24
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
25
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataFilters.tsx:module_header:module_header"]
26
+
27
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataFilters.tsx:datafiltersprops:interface" type="interface" identity="datafiltersprops" parent="~/.framework/src/components/runtime/DataFilters.tsx:module_header:module_header"]
28
+ // CIL[DOC-MACRO purpose="Defines the props interface for DataFilters"]
29
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare the expected props for filter rendering and state management"]
30
+ // CIL[DOC-CONTEXT module="runtime" layer="components" related_files=".framework/src/components/runtime/DataFilters.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/types/types.ts"]
31
+ // CIL[DOC-CONTRACT inputs="filters, values, onChange, onClear" outputs="TypeScript interface" errors="none" side_effects="none"]
32
+ // CIL[DOC-MICRO logic_summary="Props interface for DataFilters component" notable_decisions="[]"]
33
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
34
+ // CIL[DOC-STABILITY stability="stable"]
24
35
 
25
36
  interface DataFiltersProps {
26
37
  filters: EntityFilter[]
@@ -28,72 +39,31 @@ interface DataFiltersProps {
28
39
  onChange: (values: Record<string, any>) => void
29
40
  onClear: () => void
30
41
  }
31
- // CIL[END chunk_id="DataFilters_module_header_1783929048"]
32
- // CIL[BEGIN chunk_id="DataFilters_datafilters_1783929048" type="function" identity="DataFilters" parent="none"]
33
- // CIL[DOC-MACRO purpose="Render filter UI with search, enum, and boolean inputs"]
34
- // CIL[DOC-RESPONSIBILITY responsibility="Display all filter controls and clear button"]
35
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
36
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX filter card" errors="none" side_effects="calls handleFilterChange,onClear"]
37
- // CIL[DOC-MICRO logic_summary="Map filter types to UI components, show clear button when active" notable_decisions="[]"]
38
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
39
- // CIL[DOC-STABILITY stability="stable"]
40
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
41
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
42
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
43
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
42
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the props interface for DataFilters'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
43
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
44
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
45
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
44
46
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
45
47
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
46
- export function DataFilters({ filters, values, onChange, onClear }: DataFiltersProps) {
47
- // CIL[BEGIN chunk_id="DataFilters_handlefilterchange_1783929048" type="function" identity="handleFilterChange" parent="DataFilters_datafilters_1783929048"]
48
- // CIL[DOC-MACRO purpose="Update filter value and call onChange callback"]
49
- // CIL[DOC-RESPONSIBILITY responsibility="Handle handleFilterChange"]
50
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
51
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="calls onChange"]
52
- // CIL[DOC-MICRO logic_summary="Merge new filter value with existing values and notify parent" notable_decisions="[]"]
53
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
48
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataFilters.tsx:datafiltersprops:interface"]
49
+
50
+
51
+ // CIL[BEGIN stable_id="~/.framework/src/components/runtime/DataFilters.tsx:datafilters:function" type="function" identity="datafilters" parent="~/.framework/src/components/runtime/DataFilters.tsx:module_header:module_header"]
52
+ // CIL[DOC-MACRO purpose="Renders entity filter controls"]
53
+ // CIL[DOC-RESPONSIBILITY responsibility="Render search, enum, and boolean filters and propagate changes"]
54
+ // CIL[DOC-CONTEXT module="runtime" layer="components" related_files=".framework/src/components/runtime/DataFilters.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/types/types.ts"]
55
+ // CIL[DOC-CONTRACT inputs="filters, values, onChange, onClear" outputs="JSX filter UI" errors="none" side_effects="onChange callbacks"]
56
+ // CIL[DOC-MICRO logic_summary="Renders filter inputs and a clear button" notable_decisions="[]"]
57
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
54
58
  // CIL[DOC-STABILITY stability="stable"]
55
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 2. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
56
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 2. Total affected: 2."]
57
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
58
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
59
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
60
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
59
+
60
+ export function DataFilters({ filters, values, onChange, onClear }: DataFiltersProps) {
61
61
  const handleFilterChange = (key: string, value: any) => {
62
62
  onChange({ ...values, [key]: value })
63
63
  }
64
- // CIL[END chunk_id="DataFilters_handlefilterchange_1783929048"]
65
64
 
66
- // CIL[BEGIN chunk_id="DataFilters_hasactivefilters_1783929048" type="function" identity="hasActiveFilters" parent="DataFilters_datafilters_1783929048"]
67
- // CIL[DOC-MACRO purpose="Check if any filters have active values"]
68
- // CIL[DOC-RESPONSIBILITY responsibility="Handle hasActiveFilters"]
69
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\".framework/migrations/015_simplify_apps_table.sql\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/migrations/025_retype_threads_messages.sql\",\"\\\"]"]
70
- // CIL[DOC-CONTRACT inputs="none" outputs="boolean" errors="none" side_effects="none"]
71
- // CIL[DOC-MICRO logic_summary="Check if any filter values are set (not empty/undefined/all)" notable_decisions="[]"]
72
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
73
- // CIL[DOC-STABILITY stability="stable"]
74
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/migrations/015_simplify_apps_table.sql, .framework/src/pages/admin/RolesPage.tsx, .framework/migrations/025_retype_threads_messages.sql, \."]
75
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
76
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
77
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
78
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
79
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
80
65
  const hasActiveFilters = Object.values(values).some(v => v !== undefined && v !== '' && v !== 'all')
81
- // CIL[END chunk_id="DataFilters_hasactivefilters_1783929048"]
82
66
 
83
- // CIL[BEGIN chunk_id="DataFilters_mainrender_1783929048" type="render_block" identity="mainRender" parent="DataFilters_datafilters_1783929048"]
84
- // CIL[DOC-MACRO purpose="Render filter UI with search, enum, and boolean inputs"]
85
- // CIL[DOC-RESPONSIBILITY responsibility="Handle mainRender"]
86
- // CIL[DOC-CONTEXT module="runtime" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\"\\\"]"]
87
- // CIL[DOC-CONTRACT inputs="none" outputs="JSX filter card" errors="none" side_effects="calls handleFilterChange,onClear"]
88
- // CIL[DOC-MICRO logic_summary="Map filter types to UI components, show clear button when active" notable_decisions="[]"]
89
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
90
- // CIL[DOC-STABILITY stability="stable"]
91
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, \."]
92
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
93
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
94
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
95
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
96
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
97
67
  return (
98
68
  <Card>
99
69
  <CardContent className="p-4">
@@ -163,6 +133,11 @@ export function DataFilters({ filters, values, onChange, onClear }: DataFiltersP
163
133
  </CardContent>
164
134
  </Card>
165
135
  )
166
- // CIL[END chunk_id="DataFilters_mainrender_1783929048"]
167
136
  }
168
- // CIL[END chunk_id="DataFilters_datafilters_1783929048"]
137
+ // CIL[DOC-VECTOR type="context" content="purpose='Renders entity filter controls'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx"]
138
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
139
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
140
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
141
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
142
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
143
+ // CIL[END stable_id="~/.framework/src/components/runtime/DataFilters.tsx:datafilters:function"]