spine-framework 0.3.145 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +5051 -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
@@ -9,42 +9,40 @@
9
9
 
10
10
 
11
11
 
12
- // CIL[BEGIN chunk_id="ItemCard_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
13
- // CIL[DOC-MACRO purpose="Import React and item display dependencies"]
14
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for item card components"]
15
- // CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
16
- // CIL[DOC-CONTRACT inputs="none" outputs="React, Item types, UI components, icons, utils" errors="none" side_effects="none"]
17
- // CIL[DOC-MICRO logic_summary="Imports React, item types, badge, button, icons, and utility functions" notable_decisions="[]"]
18
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
12
+
13
+
14
+
15
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
16
+ // CIL[DOC-MACRO purpose="Import dependencies and set up module for the ItemCard and ItemGrid UI components"]
17
+ // CIL[DOC-RESPONSIBILITY responsibility="Declare module-level imports for React, types, UI primitives, and utilities used by ItemCard and ItemGrid"]
18
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
19
+ // CIL[DOC-CONTRACT inputs="none" outputs="imported symbols available to component chunks" errors="none" side_effects="none"]
20
+ // CIL[DOC-MICRO logic_summary="Imports React, Item/ItemType, Badge, Button, lucide-react icons, and date/text helpers" notable_decisions="[]"]
21
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
19
22
  // CIL[DOC-STABILITY stability="stable"]
20
- // CIL[DOC-AUDIENCE audience="developer"]
21
- // 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/RolesPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
22
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
23
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
24
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
25
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
26
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
23
+ // CIL[DOC-AUDIENCE audience="frontend maintainers"]
27
24
  import React from 'react'
28
25
  import { Item, ItemType } from '../../types/types'
29
26
  import { Badge } from './badge'
30
27
  import { Button } from './button'
31
28
  import { Box, FileText, Calendar, User, MoreVertical } from 'lucide-react';
32
29
  import { formatDateTime, truncateText } from '../../lib/utils'
33
- // CIL[END chunk_id="ItemCard_moduleheader_1783907801"]
34
- // CIL[BEGIN chunk_id="ItemCard_itemcardprops_1783907801" type="interface" identity="ItemCardProps" parent="none"]
35
- // CIL[DOC-MACRO purpose="Define props for item card component"]
36
- // CIL[DOC-RESPONSIBILITY responsibility="Specify all props needed for ItemCard component configuration"]
37
- // CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
38
- // CIL[DOC-CONTRACT inputs="none" outputs="ItemCardProps interface" errors="none" side_effects="none"]
39
- // CIL[DOC-MICRO logic_summary="Props for item data, action callbacks, and display options" notable_decisions="[]"]
40
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
41
- // CIL[DOC-STABILITY stability="stable"]
42
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
43
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
44
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
45
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
30
+ // CIL[DOC-VECTOR type="context" content="purpose='Import dependencies and set up module for the ItemCard and ItemGrid UI components'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
31
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
32
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
33
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
46
34
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
47
35
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
36
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
37
+
38
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCardProps:interface" type="interface" identity="ItemCardProps" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
39
+ // CIL[DOC-MACRO purpose="Define the accepted props for the ItemCard component"]
40
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the property contract and rendering options for a single item card"]
41
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
42
+ // CIL[DOC-CONTRACT inputs="item, optional callbacks, and display flags" outputs="ItemCardProps TypeScript interface" errors="none" side_effects="none"]
43
+ // CIL[DOC-MICRO logic_summary="Props extend Item with an optional item_type string or object plus optional onEdit/onDelete/onView callbacks and layout flags" notable_decisions="[]"]
44
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
45
+ // CIL[DOC-STABILITY stability="stable"]
48
46
  interface ItemCardProps {
49
47
  item: Item & { item_type?: ItemType | string }
50
48
  onEdit?: (item: Item) => void
@@ -53,21 +51,22 @@ interface ItemCardProps {
53
51
  showActions?: boolean
54
52
  compact?: boolean
55
53
  }
56
- // CIL[END chunk_id="ItemCard_itemcardprops_1783907801"]
57
- // CIL[BEGIN chunk_id="ItemCard_itemcard_1783907801" type="function" identity="ItemCard" parent="none"]
58
- // CIL[DOC-MACRO purpose="Render item card with optional actions in full or compact mode"]
59
- // CIL[DOC-RESPONSIBILITY responsibility="Display item data with type badge, metadata, and action buttons"]
60
- // CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
61
- // CIL[DOC-CONTRACT inputs="none" outputs="Item card component" errors="none" side_effects="Calls action callbacks"]
62
- // CIL[DOC-MICRO logic_summary="Renders different layouts based on compact prop, extracts data from item" notable_decisions="[]"]
63
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
64
- // CIL[DOC-STABILITY stability="stable"]
65
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
66
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
67
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
68
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
54
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the accepted props for the ItemCard component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
55
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
56
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
57
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
69
58
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
70
59
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
60
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCardProps:interface"]
61
+
62
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCard:component" type="component" identity="ItemCard" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
63
+ // CIL[DOC-MACRO purpose="Render a single item as a card, with an optional compact layout and action buttons"]
64
+ // CIL[DOC-RESPONSIBILITY responsibility="Display item title, type badge, description, metadata, and action controls"]
65
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
66
+ // CIL[DOC-CONTRACT inputs="ItemCardProps" outputs="React JSX for the item card" errors="none" side_effects="triggers onView/onEdit callbacks when user clicks a button"]
67
+ // CIL[DOC-MICRO logic_summary="Derives primary text, secondary description, type label and badge color, then renders either a compact or full card layout" notable_decisions="[]"]
68
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
69
+ // CIL[DOC-STABILITY stability="stable"]
71
70
  export function ItemCard({
72
71
  item,
73
72
  onEdit,
@@ -238,21 +237,22 @@ export function ItemCard({
238
237
  </div>
239
238
  )
240
239
  }
241
- // CIL[END chunk_id="ItemCard_itemcard_1783907801"]
242
- // CIL[BEGIN chunk_id="ItemCard_itemgridprops_1783907801" type="interface" identity="ItemGridProps" parent="none"]
243
- // CIL[DOC-MACRO purpose="Define props for item grid container"]
244
- // CIL[DOC-RESPONSIBILITY responsibility="Specify all props needed for ItemGrid component configuration"]
245
- // CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\".framework/src/components/layout/Sidebar.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
246
- // CIL[DOC-CONTRACT inputs="none" outputs="ItemGridProps interface" errors="none" side_effects="none"]
247
- // CIL[DOC-MICRO logic_summary="Props for items array, loading state, actions, and display options" notable_decisions="[]"]
248
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
249
- // CIL[DOC-STABILITY stability="stable"]
250
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/components/layout/Sidebar.tsx, .framework/functions/_shared/principal.ts, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
251
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
252
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
253
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
240
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a single item as a card, with an optional compact layout and action buttons'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
241
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
242
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
243
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
254
244
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
255
245
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
246
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemCard:component"]
247
+
248
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGridProps:interface" type="interface" identity="ItemGridProps" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
249
+ // CIL[DOC-MACRO purpose="Define the accepted props for the ItemGrid component"]
250
+ // CIL[DOC-RESPONSIBILITY responsibility="Type the property contract for rendering a list of items as a grid"]
251
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
252
+ // CIL[DOC-CONTRACT inputs="item array, optional callbacks, loading flag, and empty message" outputs="ItemGridProps TypeScript interface" errors="none" side_effects="none"]
253
+ // CIL[DOC-MICRO logic_summary="Props describe a list of items with callbacks, loading/empty UI controls, and a compact flag" notable_decisions="[]"]
254
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
255
+ // CIL[DOC-STABILITY stability="stable"]
256
256
  interface ItemGridProps {
257
257
  items: (Item & { item_type: ItemType })[]
258
258
  loading?: boolean
@@ -262,21 +262,22 @@ interface ItemGridProps {
262
262
  compact?: boolean
263
263
  emptyMessage?: string
264
264
  }
265
- // CIL[END chunk_id="ItemCard_itemgridprops_1783907801"]
266
- // CIL[BEGIN chunk_id="ItemCard_itemgrid_1783907801" type="function" identity="ItemGrid" parent="none"]
267
- // CIL[DOC-MACRO purpose="Render responsive grid of item cards with loading and empty states"]
268
- // CIL[DOC-RESPONSIBILITY responsibility="Display items in grid layout with loading spinner and empty message"]
269
- // CIL[DOC-CONTEXT module="ItemCard" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
270
- // CIL[DOC-CONTRACT inputs="none" outputs="Grid container or loading/empty states" errors="none" side_effects="Delegates to ItemCard actions"]
271
- // CIL[DOC-MICRO logic_summary="Maps items to ItemCard components, handles loading and empty states" notable_decisions="[]"]
272
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
273
- // CIL[DOC-STABILITY stability="stable"]
274
- // 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/pages/admin/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/components/ui/dialog.tsx, \."]
275
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
276
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
277
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
265
+ // CIL[DOC-VECTOR type="context" content="purpose='Define the accepted props for the ItemGrid component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
266
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
267
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
268
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
278
269
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
279
270
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
271
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGridProps:interface"]
272
+
273
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGrid:component" type="component" identity="ItemGrid" parent="~/.framework/src/components/ui/ItemCard.tsx:module_header:module_header"]
274
+ // CIL[DOC-MACRO purpose="Render a responsive grid of ItemCard components with loading and empty states"]
275
+ // CIL[DOC-RESPONSIBILITY responsibility="Map an array of items to ItemCard instances and display loading or empty placeholders"]
276
+ // CIL[DOC-CONTEXT module="components/ui" layer="presentation" related_files=".framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
277
+ // CIL[DOC-CONTRACT inputs="ItemGridProps" outputs="React JSX grid, loader, or empty message" errors="none" side_effects="none"]
278
+ // CIL[DOC-MICRO logic_summary="Shows a spinner while loading, an empty message when items are absent, or a responsive grid of ItemCard components" notable_decisions="[]"]
279
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
280
+ // CIL[DOC-STABILITY stability="stable"]
280
281
  export function ItemGrid({
281
282
  items,
282
283
  loading = false,
@@ -321,4 +322,10 @@ export function ItemGrid({
321
322
  </div>
322
323
  )
323
324
  }
324
- // CIL[END chunk_id="ItemCard_itemgrid_1783907801"]
325
+ // CIL[DOC-VECTOR type="context" content="purpose='Render a responsive grid of ItemCard components with loading and empty states'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx"]
326
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
327
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
328
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
329
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
330
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
331
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemCard.tsx:ItemGrid:component"]
@@ -1,3 +1,13 @@
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
2
+ // CIL[DOC-MACRO purpose="Module imports and exports for the item list view UI components"]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provides the component library entry point, declaring dependencies and exporting ItemListView, ItemListPage, and their prop interfaces"]
4
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="module imports and named exports" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Imports React, type definitions, DataTable, ItemCard, Badge, Button, icons, and date formatting utilities" notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
+ // CIL[DOC-STABILITY stability="stable"]
9
+ // CIL[DOC-AUDIENCE audience="ui developers"]
10
+
1
11
 
2
12
 
3
13
 
@@ -9,21 +19,6 @@
9
19
 
10
20
 
11
21
 
12
- // CIL[BEGIN chunk_id="ItemListView_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
13
- // CIL[DOC-MACRO purpose="Import React and item list dependencies"]
14
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for item list view components"]
15
- // CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
16
- // CIL[DOC-CONTRACT inputs="none" outputs="React, useState, item types, UI components" errors="none" side_effects="none"]
17
- // CIL[DOC-MICRO logic_summary="Imports React hooks, item types, DataTable, ItemCard, UI components" notable_decisions="[]"]
18
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
19
- // CIL[DOC-STABILITY stability="stable"]
20
- // CIL[DOC-AUDIENCE audience="developer"]
21
- // 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/RolesPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
22
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
23
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
24
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
25
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
26
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
27
22
  import React, { useState } from 'react'
28
23
  import { Item, ItemType } from '../../types/types'
29
24
  import { DataTable } from './DataTable'
@@ -32,21 +27,22 @@ import { Badge } from './badge'
32
27
  import { Button } from './button'
33
28
  import { Squares2X2Icon, List, Plus } from 'lucide-react';
34
29
  import { formatDateTime } from '../../lib/utils'
35
- // CIL[END chunk_id="ItemListView_moduleheader_1783907801"]
36
- // CIL[BEGIN chunk_id="ItemListView_itemlistviewprops_1783907801" type="interface" identity="ItemListViewProps" parent="none"]
37
- // CIL[DOC-MACRO purpose="Define props for item list view component"]
38
- // CIL[DOC-RESPONSIBILITY responsibility="Specify all props needed for ItemListView component configuration"]
39
- // CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"\\\"]"]
40
- // CIL[DOC-CONTRACT inputs="none" outputs="ItemListViewProps interface" errors="none" side_effects="none"]
41
- // CIL[DOC-MICRO logic_summary="Props for items array, loading state, actions, and display options" notable_decisions="[]"]
42
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
43
- // CIL[DOC-STABILITY stability="stable"]
44
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, \."]
45
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
46
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
47
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
30
+
31
+ // CIL[DOC-VECTOR type="context" content="purpose='Module imports and exports for the item list view UI components'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
32
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
33
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
34
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
48
35
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
49
36
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
37
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
38
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListViewProps:interface" type="interface" identity="ItemListViewProps" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
39
+ // CIL[DOC-MACRO purpose="Props contract for the ItemListView component"]
40
+ // CIL[DOC-RESPONSIBILITY responsibility="Defines the shape of input properties accepted by ItemListView including items, callbacks, and display options"]
41
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
42
+ // CIL[DOC-CONTRACT inputs="none" outputs="ItemListViewProps TypeScript interface" errors="none" side_effects="none"]
43
+ // CIL[DOC-MICRO logic_summary="Type-only interface describing props for item list view rendering" notable_decisions="[]"]
44
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
45
+ // CIL[DOC-STABILITY stability="stable"]
50
46
  interface ItemListViewProps {
51
47
  items: (Item & { item_type: ItemType })[]
52
48
  loading?: boolean
@@ -60,21 +56,22 @@ interface ItemListViewProps {
60
56
  showCreateButton?: boolean
61
57
  createButtonText?: string
62
58
  }
63
- // CIL[END chunk_id="ItemListView_itemlistviewprops_1783907801"]
64
- // CIL[BEGIN chunk_id="ItemListView_itemlistview_1783907801" type="function" identity="ItemListView" parent="none"]
65
- // CIL[DOC-MACRO purpose="Render switchable grid/table item view with mode toggle"]
66
- // CIL[DOC-RESPONSIBILITY responsibility="Handle view mode switching and item display rendering"]
67
- // CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/cortex/functions/custom_cil-embeddings.ts\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\"\\\"]"]
68
- // CIL[DOC-CONTRACT inputs="none" outputs="View mode toggle + ItemGrid or DataTable" errors="none" side_effects="Calls action callbacks"]
69
- // CIL[DOC-MICRO logic_summary="Manages view mode state, builds table columns, renders appropriate view" notable_decisions="[]"]
70
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
71
- // CIL[DOC-STABILITY stability="stable"]
72
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/functions/custom_cil-embeddings.ts, .framework/src/pages/admin/TypeDetailPage.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, \."]
73
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
74
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
75
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
59
+ // CIL[DOC-VECTOR type="context" content="purpose='Props contract for the ItemListView component'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
60
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
61
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
62
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
76
63
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
77
64
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
65
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListViewProps:interface"]
66
+
67
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListView:component" type="component" identity="ItemListView" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
68
+ // CIL[DOC-MACRO purpose="Render an interactive item list with grid/table toggle and actions"]
69
+ // CIL[DOC-RESPONSIBILITY responsibility="Displays items in a grid or data table, computes unique item type filters, formats dates, and wires edit/view/create handlers"]
70
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
71
+ // CIL[DOC-CONTRACT inputs="ItemListViewProps: items, loading, onEdit, onDelete, onView, onCreate, searchable, filterable, emptyMessage, showCreateButton, createButtonText" outputs="JSX element with header, view toggle, create button, and conditional grid/table content" errors="none" side_effects="setViewMode updates local React state"]
72
+ // CIL[DOC-MICRO logic_summary="Builds a type map from item_type values for filtering, derives a primary text/textarea display field with a name fallback, renders view mode buttons, and chooses ItemGrid or DataTable" notable_decisions="[]"]
73
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
74
+ // CIL[DOC-STABILITY stability="stable"]
78
75
  export function ItemListView({
79
76
  items,
80
77
  loading = false,
@@ -247,21 +244,22 @@ export function ItemListView({
247
244
  </div>
248
245
  )
249
246
  }
250
- // CIL[END chunk_id="ItemListView_itemlistview_1783907801"]
251
- // CIL[BEGIN chunk_id="ItemListView_itemlistpageprops_1783907801" type="interface" identity="ItemListPageProps" parent="none"]
252
- // CIL[DOC-MACRO purpose="Define props for item list page component"]
253
- // CIL[DOC-RESPONSIBILITY responsibility="Specify all props needed for ItemListPage component configuration"]
254
- // CIL[DOC-CONTEXT module="ItemListView" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
255
- // CIL[DOC-CONTRACT inputs="none" outputs="ItemListPageProps interface" errors="none" side_effects="none"]
256
- // CIL[DOC-MICRO logic_summary="Extends ItemListViewProps with page-level title and description" notable_decisions="[]"]
257
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
258
- // CIL[DOC-STABILITY stability="stable"]
259
- // 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/TypeDetailPage.tsx, custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
260
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
261
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
262
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
247
+ // CIL[DOC-VECTOR type="context" content="purpose='Render an interactive item list with grid/table toggle and actions'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
248
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
249
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
250
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
263
251
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
264
252
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
253
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListView:component"]
254
+
255
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPageProps:interface" type="interface" identity="ItemListPageProps" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
256
+ // CIL[DOC-MACRO purpose="Props contract for the ItemListPage page-level wrapper"]
257
+ // CIL[DOC-RESPONSIBILITY responsibility="Defines page wrapper props that extend ItemListViewProps with a title and description"]
258
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
259
+ // CIL[DOC-CONTRACT inputs="none" outputs="ItemListPageProps TypeScript interface" errors="none" side_effects="none"]
260
+ // CIL[DOC-MICRO logic_summary="Type-only interface extending ItemListViewProps with title and description fields" notable_decisions="[]"]
261
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
262
+ // CIL[DOC-STABILITY stability="stable"]
265
263
  interface ItemListPageProps {
266
264
  items: (Item & { item_type: ItemType })[]
267
265
  loading?: boolean
@@ -277,21 +275,22 @@ interface ItemListPageProps {
277
275
  title?: string
278
276
  description?: string
279
277
  }
280
- // CIL[END chunk_id="ItemListView_itemlistpageprops_1783907801"]
281
- // CIL[BEGIN chunk_id="ItemListView_itemlistpage_1783907801" type="function" identity="ItemListPage" parent="none"]
282
- // CIL[DOC-MACRO purpose="Render full item list page with header and switchable view"]
283
- // CIL[DOC-RESPONSIBILITY responsibility="Provide page-level wrapper with title and ItemListView"]
284
- // CIL[DOC-CONTEXT module="ItemListView" 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/pages/admin/RolesPage.tsx\",\"\\\"]"]
285
- // CIL[DOC-CONTRACT inputs="none" outputs="Page with header + ItemListView" errors="none" side_effects="none"]
286
- // CIL[DOC-MICRO logic_summary="Renders page header with title/description, wraps ItemListView component" notable_decisions="[]"]
287
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
288
- // CIL[DOC-STABILITY stability="stable"]
289
- // 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/pages/admin/RolesPage.tsx, \."]
290
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
291
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
292
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
278
+ // CIL[DOC-VECTOR type="context" content="purpose='Props contract for the ItemListPage page-level wrapper'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
279
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
280
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
281
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
293
282
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
294
283
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
284
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPageProps:interface"]
285
+
286
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPage:component" type="component" identity="ItemListPage" parent="~/.framework/src/components/ui/ItemListView.tsx:module_header:module_header"]
287
+ // CIL[DOC-MACRO purpose="Page-level wrapper that renders a titled item list page"]
288
+ // CIL[DOC-RESPONSIBILITY responsibility="Provides a page header with title and description and delegates the list rendering to ItemListView"]
289
+ // CIL[DOC-CONTEXT module=".framework/src/components/ui" layer="ui" related_files=".framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx,.framework/src/components/ui/ItemListView.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/lib/utils.ts,.framework/src/types/types.ts"]
290
+ // CIL[DOC-CONTRACT inputs="ItemListPageProps: all ItemListViewProps plus title and description" outputs="JSX page layout containing a header and an ItemListView" errors="none" side_effects="none"]
291
+ // CIL[DOC-MICRO logic_summary="Renders a page header and passes all props through to ItemListView" notable_decisions="[]"]
292
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
293
+ // CIL[DOC-STABILITY stability="stable"]
295
294
  export function ItemListPage({
296
295
  items,
297
296
  loading = false,
@@ -332,4 +331,10 @@ export function ItemListPage({
332
331
  </div>
333
332
  )
334
333
  }
335
- // CIL[END chunk_id="ItemListView_itemlistpage_1783907801"]
334
+ // CIL[DOC-VECTOR type="context" content="purpose='Page-level wrapper that renders a titled item list page'; No verified external callers; imports: .framework/src/types/types.ts,.framework/src/components/ui/DataTable.tsx,.framework/src/components/ui/ItemCard.tsx"]
335
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
336
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
337
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
338
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
339
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
340
+ // CIL[END stable_id="~/.framework/src/components/ui/ItemListView.tsx:ItemListPage:component"]
@@ -1,62 +1,51 @@
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
- // CIL[BEGIN chunk_id="LoadingSpinner_moduleheader_1783907801" type="module_header" identity="imports" parent="none"]
9
- // CIL[DOC-MACRO purpose="Import React and spinner dependencies"]
10
- // CIL[DOC-RESPONSIBILITY responsibility="Provide all external dependencies for loading spinner component"]
11
- // CIL[DOC-CONTEXT module="LoadingSpinner" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
12
- // CIL[DOC-CONTRACT inputs="none" outputs="React, Loader2 icon, cn utility" errors="none" side_effects="none"]
13
- // CIL[DOC-MICRO logic_summary="Imports React, lucide-react Loader2 icon, and utility function" notable_decisions="[]"]
14
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header" type="module_header" identity="module_header" parent=""]
2
+ // CIL[DOC-MACRO purpose="Import React, the Loader2 icon, and the cn utility to support the LoadingSpinner UI component."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Provide module-level imports for the LoadingSpinner component and its props interface."]
4
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/lib/utils.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Imports the React, Loader2, and cn dependencies required by the LoadingSpinner component." notable_decisions="[]"]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
15
8
  // CIL[DOC-STABILITY stability="stable"]
16
- // CIL[DOC-AUDIENCE audience="developer"]
17
- // 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/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
18
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
19
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
20
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
21
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
22
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+ // CIL[DOC-AUDIENCE audience="internal"]
23
10
  import React from 'react'
24
11
  import { Loader2 } from 'lucide-react'
25
12
  import { cn } from '../../lib/utils'
26
- // CIL[END chunk_id="LoadingSpinner_moduleheader_1783907801"]
27
- // CIL[BEGIN chunk_id="LoadingSpinner_loadingspinnerprops_1783907801" type="interface" identity="LoadingSpinnerProps" parent="none"]
28
- // CIL[DOC-MACRO purpose="Define props for loading spinner component"]
29
- // CIL[DOC-RESPONSIBILITY responsibility="Specify all props needed for LoadingSpinner component configuration"]
30
- // CIL[DOC-CONTEXT module="LoadingSpinner" layer="frontend-component" related_files="[\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
31
- // CIL[DOC-CONTRACT inputs="none" outputs="LoadingSpinnerProps interface" errors="none" side_effects="none"]
32
- // CIL[DOC-MICRO logic_summary="Props for optional className and size (sm/md/lg)" 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: .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
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."]
13
+ // CIL[DOC-VECTOR type="context" content="purpose='Import React, the Loader2 icon, and the cn utility to support the LoadingSpinner UI component.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
14
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
15
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
16
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
39
17
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
40
18
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
19
+ // CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
20
+
21
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:LoadingSpinnerProps:interface" type="interface" identity="LoadingSpinnerProps" parent="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
22
+ // CIL[DOC-MACRO purpose="Declare the typed props accepted by the LoadingSpinner component."]
23
+ // CIL[DOC-RESPONSIBILITY responsibility="Define the className and size prop types for LoadingSpinner."]
24
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/LoadingSpinner.tsx,.framework/src/lib/utils.ts"]
25
+ // CIL[DOC-CONTRACT inputs="none" outputs="LoadingSpinnerProps interface definition" errors="none" side_effects="none"]
26
+ // CIL[DOC-MICRO logic_summary="Declares an interface with an optional className string and an optional size union of sm, md, or lg." notable_decisions="[]"]
27
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
28
+ // CIL[DOC-STABILITY stability="stable"]
41
29
  interface LoadingSpinnerProps {
42
30
  className?: string
43
31
  size?: 'sm' | 'md' | 'lg'
44
32
  }
45
- // CIL[END chunk_id="LoadingSpinner_loadingspinnerprops_1783907801"]
46
- // CIL[BEGIN chunk_id="LoadingSpinner_loadingspinner_1783907801" type="function" identity="LoadingSpinner" parent="none"]
47
- // CIL[DOC-MACRO purpose="Render animated loading spinner with configurable size"]
48
- // CIL[DOC-RESPONSIBILITY responsibility="Display spinning loader icon with size and styling options"]
49
- // CIL[DOC-CONTEXT module="LoadingSpinner" layer="frontend-component" related_files="[\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/pages/admin/RolesPage.tsx\",\".framework/src/components/ui/dialog.tsx\",\"\\\"]"]
50
- // CIL[DOC-CONTRACT inputs="none" outputs="Animated Loader2 component" errors="none" side_effects="none"]
51
- // CIL[DOC-MICRO logic_summary="Maps size prop to Tailwind classes, applies animation and custom classes" notable_decisions="[]"]
52
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
53
- // CIL[DOC-STABILITY stability="stable"]
54
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-component. Direct callers: 1. Direct calls: 0. Related files: custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/src/pages/admin/RolesPage.tsx, .framework/src/components/ui/dialog.tsx, \."]
55
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 1. Total affected: 1."]
56
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
57
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
33
+ // CIL[DOC-VECTOR type="context" content="purpose='Declare the typed props accepted by the LoadingSpinner component.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
34
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
35
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
36
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
58
37
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
59
38
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
39
+ // CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:LoadingSpinnerProps:interface"]
40
+
41
+ // CIL[BEGIN stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:loadingspinner:function" type="function" identity="loadingspinner" parent="~/.framework/src/components/ui/LoadingSpinner.tsx:module_header:module_header"]
42
+ // CIL[DOC-MACRO purpose="Render an animated loading spinner using the Loader2 icon with configurable size and className."]
43
+ // CIL[DOC-RESPONSIBILITY responsibility="Return a spinning Loader2 icon sized according to the size prop and combined with the className prop."]
44
+ // CIL[DOC-CONTEXT module="components/ui" layer="ui" related_files=".framework/src/components/ui/LoadingSpinner.tsx,.framework/src/lib/utils.ts"]
45
+ // CIL[DOC-CONTRACT inputs="LoadingSpinnerProps { className?: string, size?: 'sm' | 'md' | 'lg' }" outputs="React element: animated Loader2 icon" errors="none" side_effects="none"]
46
+ // CIL[DOC-MICRO logic_summary="Selects Tailwind size classes based on the size prop, then renders a Loader2 icon with animate-spin and merged class names." notable_decisions="[]"]
47
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
48
+ // CIL[DOC-STABILITY stability="stable"]
60
49
  export function LoadingSpinner({ className, size = 'md' }: LoadingSpinnerProps) {
61
50
  const sizeClasses = {
62
51
  sm: 'h-4 w-4',
@@ -74,4 +63,10 @@ export function LoadingSpinner({ className, size = 'md' }: LoadingSpinnerProps)
74
63
  />
75
64
  )
76
65
  }
77
- // CIL[END chunk_id="LoadingSpinner_loadingspinner_1783907801"]
66
+ // CIL[DOC-VECTOR type="context" content="purpose='Render an animated loading spinner using the Loader2 icon with configurable size and className.'; No verified external callers; imports: .framework/src/lib/utils.ts"]
67
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
68
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
69
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
70
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
71
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
72
+ // CIL[END stable_id="~/.framework/src/components/ui/LoadingSpinner.tsx:loadingspinner:function"]