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
@@ -1,18 +1,14 @@
1
-
2
- // CIL[BEGIN chunk_id="types_fielddefinition_1783637731" type="interface" identity="FieldDefinition" parent="none"]
3
- // CIL[DOC-MACRO purpose="Define a single field in a design schema that drives UI rendering and client-side validation"]
4
- // CIL[DOC-RESPONSIBILITY responsibility="Represent field specifications including data type, validation rules, and role-based permissions"]
5
- // CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
6
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
7
- // CIL[DOC-MICRO logic_summary="Represent field specifications including data type, validation rules, and role-based permissions" notable_decisions="[]"]
8
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:FieldDefinition:interface" type="interface" identity="FieldDefinition" parent="~/.framework/src/types/types.ts"]
2
+ // CIL[DOC-MACRO purpose="Defines the shape and validation rules for a single design schema field."]
3
+ // CIL[DOC-RESPONSIBILITY responsibility="Describes data types, labels, constraints, options, and permissions for a field."]
4
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
5
+ // CIL[DOC-CONTRACT inputs="none" outputs="FieldDefinition interface definition" errors="none" side_effects="none"]
6
+ // CIL[DOC-MICRO logic_summary="Exports FieldDefinition with all possible field-level configuration properties." notable_decisions="Options may be strings or labeled objects; permissions are keyed by role."]
7
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
9
8
  // CIL[DOC-STABILITY stability="stable"]
10
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/principal.ts, \."]
11
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
12
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
13
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
14
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
15
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
9
+
10
+
11
+
16
12
 
17
13
 
18
14
 
@@ -60,26 +56,27 @@ export interface FieldDefinition {
60
56
  [role: string]: string[]
61
57
  }
62
58
  }
63
- // CIL[END chunk_id="types_fielddefinition_1783637731"]
64
- // CIL[BEGIN chunk_id="types_viewfieldconfig_1783637731" type="interface" identity="ViewFieldConfig" parent="none"]
65
- // CIL[DOC-MACRO purpose="Define per-field display/behaviour config within a view for UI rendering"]
66
- // CIL[DOC-RESPONSIBILITY responsibility="Represent view-specific field overrides including widget type and interaction flags"]
67
- // CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\".framework/src/components/ui/dialog.tsx\",\"custom/apps/portal/pages/ContentPage.tsx\",\"\\\"]"]
68
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
69
- // CIL[DOC-MICRO logic_summary="Represent view-specific field overrides including widget type and interaction flags" 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-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, .framework/src/components/ui/dialog.tsx, custom/apps/portal/pages/ContentPage.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='Defines the shape and validation rules for a single design schema field.'; No verified external callers; imports: none"]
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/types/types.ts:FieldDefinition:interface"]
78
66
 
79
67
 
80
68
 
81
69
 
82
70
 
71
+
72
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:ViewFieldConfig:interface" type="interface" identity="ViewFieldConfig" parent="~/.framework/src/types/types.ts"]
73
+ // CIL[DOC-MACRO purpose="Defines how a field is displayed and behaves in a list or detail view."]
74
+ // CIL[DOC-RESPONSIBILITY responsibility="Specifies display type, sortability, and searchability for view columns."]
75
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
76
+ // CIL[DOC-CONTRACT inputs="none" outputs="ViewFieldConfig interface definition" errors="none" side_effects="none"]
77
+ // CIL[DOC-MICRO logic_summary="Exports ViewFieldConfig used in list/detail view field maps." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
78
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
79
+ // CIL[DOC-STABILITY stability="stable"]
83
80
  export interface ViewFieldConfig {
84
81
  display_type: 'input' | 'textarea' | 'rich_text' | 'select' | 'multiselect' |
85
82
  'radio' | 'checkbox' | 'switch' | 'date_picker' | 'datetime_picker' |
@@ -89,24 +86,25 @@ export interface ViewFieldConfig {
89
86
  sortable?: boolean
90
87
  searchable?: boolean
91
88
  }
92
- // CIL[END chunk_id="types_viewfieldconfig_1783637731"]
93
- // CIL[BEGIN chunk_id="types_listview_1783637731" type="interface" identity="ListView" parent="none"]
94
- // CIL[DOC-MACRO purpose="Define a list view configuration for rendering data as table, card grid, or Kanban board"]
95
- // CIL[DOC-RESPONSIBILITY responsibility="Represent list display settings including fields, sorting, filters, stats, and grouping"]
96
- // CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\"custom/apps/cortex/pages/operations/OperationsDashboard.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/functions/_shared/principal.ts\",\"\\\"]"]
97
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
98
- // CIL[DOC-MICRO logic_summary="Represent list display settings including fields, sorting, filters, stats, and grouping" notable_decisions="[]"]
99
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
100
- // CIL[DOC-STABILITY stability="stable"]
101
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: custom/apps/cortex/pages/operations/OperationsDashboard.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/functions/_shared/principal.ts, \."]
102
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
103
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
104
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
89
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines how a field is displayed and behaves in a list or detail view.'; No verified external callers; imports: none"]
90
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
91
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
92
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
105
93
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
106
94
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
95
+ // CIL[END stable_id="~/.framework/src/types/types.ts:ViewFieldConfig:interface"]
96
+
107
97
 
108
98
 
109
99
 
100
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:ListView:interface" type="interface" identity="ListView" parent="~/.framework/src/types/types.ts"]
101
+ // CIL[DOC-MACRO purpose="Defines a list view configuration for a type."]
102
+ // CIL[DOC-RESPONSIBILITY responsibility="Describes table/card/board list fields, filters, stats, sorting, and grouping."]
103
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
104
+ // CIL[DOC-CONTRACT inputs="none" outputs="ListView interface definition" errors="none" side_effects="none"]
105
+ // CIL[DOC-MICRO logic_summary="Exports ListView with fields as a record of ViewFieldConfig." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
106
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
107
+ // CIL[DOC-STABILITY stability="stable"]
110
108
  export interface ListView {
111
109
  type: 'list'
112
110
  display: 'table' | 'card' | 'board'
@@ -126,91 +124,95 @@ export interface ListView {
126
124
  }>
127
125
  group_by?: string
128
126
  }
129
- // CIL[END chunk_id="types_listview_1783637731"]
130
- // CIL[BEGIN chunk_id="types_detailviewsection_1783637731" type="interface" identity="DetailViewSection" parent="none"]
131
- // CIL[DOC-MACRO purpose="Define a single section within a DetailView that groups related fields"]
132
- // CIL[DOC-RESPONSIBILITY responsibility="Represent logical groupings of fields with optional titles for detail forms"]
133
- // CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/IntegrationsPage.tsx\",\".framework/functions/_shared/schema-utils.ts\",\".framework/functions/_shared/principal.ts\",\".framework/src/components/ui/table-primitives.tsx\",\".framework/src/pages/admin/TypeDetailPage.tsx\",\"\\\"]"]
134
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
135
- // CIL[DOC-MICRO logic_summary="Represent logical groupings of fields with optional titles for detail forms" notable_decisions="[]"]
136
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
137
- // CIL[DOC-STABILITY stability="stable"]
138
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/IntegrationsPage.tsx, .framework/functions/_shared/schema-utils.ts, .framework/functions/_shared/principal.ts, .framework/src/components/ui/table-primitives.tsx, .framework/src/pages/admin/TypeDetailPage.tsx, \."]
139
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
140
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
141
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
127
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a list view configuration for a type.'; No verified external callers; imports: none"]
128
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
129
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
130
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
142
131
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
143
132
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
133
+ // CIL[END stable_id="~/.framework/src/types/types.ts:ListView:interface"]
144
134
 
145
135
 
146
136
 
137
+
138
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:DetailViewSection:interface" type="interface" identity="DetailViewSection" parent="~/.framework/src/types/types.ts"]
139
+ // CIL[DOC-MACRO purpose="Defines a section within a detail view."]
140
+ // CIL[DOC-RESPONSIBILITY responsibility="Groups fields into titled sections for detail UIs."]
141
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
142
+ // CIL[DOC-CONTRACT inputs="none" outputs="DetailViewSection interface definition" errors="none" side_effects="none"]
143
+ // CIL[DOC-MICRO logic_summary="Exports DetailViewSection as a title and field map." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
144
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
145
+ // CIL[DOC-STABILITY stability="stable"]
147
146
  export interface DetailViewSection {
148
147
  title: string
149
148
  fields: Record<string, ViewFieldConfig>
150
149
 
151
150
  }
152
- // CIL[END chunk_id="types_detailviewsection_1783637731"]
153
- // CIL[BEGIN chunk_id="types_detailview_1783637731" type="interface" identity="DetailView" parent="none"]
154
- // CIL[DOC-MACRO purpose="Define a detail view configuration for rendering sectioned record forms"]
155
- // CIL[DOC-RESPONSIBILITY responsibility="Represent detail form layout with multiple field sections"]
156
- // CIL[DOC-CONTEXT module="src/types/types" layer="frontend-hook" related_files="[\".framework/src/pages/admin/TypeDetailPage.tsx\",\".framework/functions/_shared/principal.ts\",\".framework/functions/_shared/schema-utils.ts\",\"custom/apps/portal/pages/ContentPage.tsx\",\".framework/src/pages/admin/IntegrationsPage.tsx\",\"\\\"]"]
157
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
158
- // CIL[DOC-MICRO logic_summary="Represent detail form layout with multiple field sections" notable_decisions="[]"]
159
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
160
- // CIL[DOC-STABILITY stability="stable"]
161
- // CIL[DOC-VECTOR type="context" content="Layer: frontend-hook. Direct callers: 0. Direct calls: 0. Related files: .framework/src/pages/admin/TypeDetailPage.tsx, .framework/functions/_shared/principal.ts, .framework/functions/_shared/schema-utils.ts, custom/apps/portal/pages/ContentPage.tsx, .framework/src/pages/admin/IntegrationsPage.tsx, \."]
162
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
163
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
164
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
151
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a section within a detail view.'; No verified external callers; imports: none"]
152
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
153
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
154
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
165
155
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
166
156
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
157
+ // CIL[END stable_id="~/.framework/src/types/types.ts:DetailViewSection:interface"]
158
+
167
159
 
168
160
 
169
161
 
162
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:DetailView:interface" type="interface" identity="DetailView" parent="~/.framework/src/types/types.ts"]
163
+ // CIL[DOC-MACRO purpose="Defines a detail view configuration for a type."]
164
+ // CIL[DOC-RESPONSIBILITY responsibility="Aggregates DetailViewSection entries into a single detail page layout."]
165
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
166
+ // CIL[DOC-CONTRACT inputs="none" outputs="DetailView interface definition" errors="none" side_effects="none"]
167
+ // CIL[DOC-MICRO logic_summary="Exports DetailView with type 'detail' and an ordered sections array." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
168
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
169
+ // CIL[DOC-STABILITY stability="stable"]
170
170
  export interface DetailView {
171
171
  type: 'detail'
172
172
  label: string
173
173
  sections: DetailViewSection[]
174
174
  }
175
- // CIL[END chunk_id="types_detailview_1783637731"]
176
- // CIL[BEGIN chunk_id="types_view_1783637731" type="type" identity="View" parent="none"]
177
- // CIL[DOC-MACRO purpose="Define discriminated union of all supported view types for schema-driven UI"]
178
- // CIL[DOC-RESPONSIBILITY responsibility="Represent all possible view configurations (list and detail)"]
179
- // CIL[DOC-CONTEXT module="View" layer="unknown" related_files="[]"]
180
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
181
- // CIL[DOC-MICRO logic_summary="Implements View" notable_decisions="[]"]
182
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
183
- // CIL[DOC-STABILITY stability="stable"]
184
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
185
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
186
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
187
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
175
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a detail view configuration for a type.'; No verified external callers; imports: none"]
176
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
177
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
178
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
188
179
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
189
180
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
181
+ // CIL[END stable_id="~/.framework/src/types/types.ts:DetailView:interface"]
190
182
 
191
183
 
192
184
 
193
- export type View = ListView | DetailView
194
- // CIL[END chunk_id="types_view_1783637731"]
195
- // CIL[BEGIN chunk_id="types_functionalitybindings_1783637731" type="interface" identity="FunctionalityBindings" parent="none"]
196
- // CIL[DOC-MACRO purpose="Define optional automation and integration bindings attached to a DesignSchema"]
197
- // CIL[DOC-RESPONSIBILITY responsibility="Represent trigger conditions and targets for pipelines, AI agents, embeddings, integrations, and constraints"]
198
- // CIL[DOC-CONTEXT module="FunctionalityBindings" layer="unknown" related_files="[]"]
199
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
200
- // CIL[DOC-MICRO logic_summary="Implements FunctionalityBindings" notable_decisions="[]"]
201
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
185
+
186
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:View:type" type="type" identity="View" parent="~/.framework/src/types/types.ts"]
187
+ // CIL[DOC-MACRO purpose="Union of supported view kinds for a design schema."]
188
+ // CIL[DOC-RESPONSIBILITY responsibility="Distinguishes list and detail views for type rendering."]
189
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
190
+ // CIL[DOC-CONTRACT inputs="none" outputs="View type definition" errors="none" side_effects="none"]
191
+ // CIL[DOC-MICRO logic_summary="Exports View as ListView | DetailView." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
192
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
202
193
  // CIL[DOC-STABILITY stability="stable"]
203
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
204
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
205
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
206
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
194
+ export type View = ListView | DetailView
195
+ // CIL[DOC-VECTOR type="context" content="purpose='Union of supported view kinds for a design schema.'; No verified external callers; imports: none"]
196
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
197
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
198
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
207
199
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
208
200
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
201
+ // CIL[END stable_id="~/.framework/src/types/types.ts:View:type"]
202
+
209
203
 
210
204
 
211
205
 
212
206
 
213
207
 
208
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:FunctionalityBindings:interface" type="interface" identity="FunctionalityBindings" parent="~/.framework/src/types/types.ts"]
209
+ // CIL[DOC-MACRO purpose="Defines automation, AI, embedding, integration, and constraint bindings."]
210
+ // CIL[DOC-RESPONSIBILITY responsibility="Declares pipeline, agent, embedding, integration, and constraint arrays."]
211
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
212
+ // CIL[DOC-CONTRACT inputs="none" outputs="FunctionalityBindings interface definition" errors="none" side_effects="none"]
213
+ // CIL[DOC-MICRO logic_summary="Exports FunctionalityBindings for optional schema functionality." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
214
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
215
+ // CIL[DOC-STABILITY stability="stable"]
214
216
  export interface FunctionalityBindings {
215
217
  pipelines?: Array<{
216
218
  pipeline_id: string
@@ -251,26 +253,27 @@ export interface FunctionalityBindings {
251
253
  after?: 'create' | 'update'
252
254
  }>
253
255
  }
254
- // CIL[END chunk_id="types_functionalitybindings_1783637731"]
255
- // CIL[BEGIN chunk_id="types_designschema_1783637731" type="interface" identity="DesignSchema" parent="none"]
256
- // CIL[DOC-MACRO purpose="Define the complete design schema for a types record stored as JSONB in the database"]
257
- // CIL[DOC-RESPONSIBILITY responsibility="Represent the full schema definition including fields, views, permissions, and functionality bindings"]
258
- // CIL[DOC-CONTEXT module="DesignSchema" layer="unknown" related_files="[]"]
259
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
260
- // CIL[DOC-MICRO logic_summary="Implements DesignSchema" notable_decisions="[]"]
261
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
262
- // CIL[DOC-STABILITY stability="stable"]
263
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
264
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
265
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
266
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
256
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines automation, AI, embedding, integration, and constraint bindings.'; No verified external callers; imports: none"]
257
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
258
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
259
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
267
260
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
268
261
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
262
+ // CIL[END stable_id="~/.framework/src/types/types.ts:FunctionalityBindings:interface"]
269
263
 
270
264
 
271
265
 
272
266
 
273
267
 
268
+
269
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:DesignSchema:interface" type="interface" identity="DesignSchema" parent="~/.framework/src/types/types.ts"]
270
+ // CIL[DOC-MACRO purpose="Defines the complete design schema for an item type."]
271
+ // CIL[DOC-RESPONSIBILITY responsibility="Holds record permissions, field definitions, views, and functionality bindings."]
272
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
273
+ // CIL[DOC-CONTRACT inputs="none" outputs="DesignSchema interface definition" errors="none" side_effects="none"]
274
+ // CIL[DOC-MICRO logic_summary="Exports DesignSchema used by item type definitions." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
275
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
276
+ // CIL[DOC-STABILITY stability="stable"]
274
277
  export interface DesignSchema {
275
278
  record_permissions: {
276
279
  [role: string]: string[]
@@ -279,26 +282,27 @@ export interface DesignSchema {
279
282
  views: Record<string, View>
280
283
  functionality?: FunctionalityBindings
281
284
  }
282
- // CIL[END chunk_id="types_designschema_1783637731"]
283
- // CIL[BEGIN chunk_id="types_itemtype_1783637731" type="interface" identity="ItemType" parent="none"]
284
- // CIL[DOC-MACRO purpose="Define a type record from the v2.types table with complete schema and validation configuration"]
285
- // CIL[DOC-RESPONSIBILITY responsibility="Represent a configurable data type with design schema, validation rules, and metadata"]
286
- // CIL[DOC-CONTEXT module="ItemType" layer="unknown" related_files="[]"]
287
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
288
- // CIL[DOC-MICRO logic_summary="Implements ItemType" notable_decisions="[]"]
289
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
290
- // CIL[DOC-STABILITY stability="stable"]
291
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
292
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
293
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
294
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
285
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the complete design schema for an item type.'; No verified external callers; imports: none"]
286
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
287
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
288
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
295
289
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
296
290
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
291
+ // CIL[END stable_id="~/.framework/src/types/types.ts:DesignSchema:interface"]
292
+
297
293
 
298
294
 
299
295
 
300
296
 
301
297
 
298
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:ItemType:interface" type="interface" identity="ItemType" parent="~/.framework/src/types/types.ts"]
299
+ // CIL[DOC-MACRO purpose="Defines the runtime type record including schema and ownership metadata."]
300
+ // CIL[DOC-RESPONSIBILITY responsibility="Declares item type identity, schemas, ownership, and lifecycle fields."]
301
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
302
+ // CIL[DOC-CONTRACT inputs="none" outputs="ItemType interface definition" errors="none" side_effects="none"]
303
+ // CIL[DOC-MICRO logic_summary="Exports ItemType as the core public.types table shape." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
304
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
305
+ // CIL[DOC-STABILITY stability="stable"]
302
306
  export interface ItemType {
303
307
  id: string
304
308
  name: string
@@ -322,24 +326,25 @@ export interface ItemType {
322
326
  created_at: string
323
327
  updated_at: string
324
328
  }
325
- // CIL[END chunk_id="types_itemtype_1783637731"]
326
- // CIL[BEGIN chunk_id="types_item_1783637731" type="interface" identity="Item" parent="none"]
327
- // CIL[DOC-MACRO purpose="Define a data item record from the v2.items table representing an instance of a type"]
328
- // CIL[DOC-RESPONSIBILITY responsibility="Represent a concrete data record with type reference, data payload, and metadata"]
329
- // CIL[DOC-CONTEXT module="Item" layer="unknown" related_files="[]"]
330
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
331
- // CIL[DOC-MICRO logic_summary="Implements Item" notable_decisions="[]"]
332
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
333
- // CIL[DOC-STABILITY stability="stable"]
334
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
335
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
336
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
337
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
329
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines the runtime type record including schema and ownership metadata.'; No verified external callers; imports: none"]
330
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
331
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
332
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
338
333
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
339
334
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
335
+ // CIL[END stable_id="~/.framework/src/types/types.ts:ItemType:interface"]
340
336
 
341
337
 
342
338
 
339
+
340
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:Item:interface" type="interface" identity="Item" parent="~/.framework/src/types/types.ts"]
341
+ // CIL[DOC-MACRO purpose="Defines a runtime item record belonging to an item type."]
342
+ // CIL[DOC-RESPONSIBILITY responsibility="Holds item data, status, ownership, and audit timestamps."]
343
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
344
+ // CIL[DOC-CONTRACT inputs="none" outputs="Item interface definition" errors="none" side_effects="none"]
345
+ // CIL[DOC-MICRO logic_summary="Exports Item used by admin-data and custom app runtimes." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
346
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
347
+ // CIL[DOC-STABILITY stability="stable"]
343
348
  export interface Item {
344
349
  id: string
345
350
  item_type_id: string
@@ -357,48 +362,50 @@ export interface Item {
357
362
  design_schema?: Record<string, any>
358
363
  validation_schema?: Record<string, any>
359
364
  }
360
- // CIL[END chunk_id="types_item_1783637731"]
361
- // CIL[BEGIN chunk_id="types_validationerror_1783637731" type="interface" identity="ValidationError" parent="none"]
362
- // CIL[DOC-MACRO purpose="Define a validation error for form field validation feedback"]
363
- // CIL[DOC-RESPONSIBILITY responsibility="Represent field-specific validation errors with messages"]
364
- // CIL[DOC-CONTEXT module="ValidationError" layer="unknown" related_files="[]"]
365
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
366
- // CIL[DOC-MICRO logic_summary="Implements ValidationError" notable_decisions="[]"]
367
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
368
- // CIL[DOC-STABILITY stability="stable"]
369
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
370
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
371
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
372
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
365
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a runtime item record belonging to an item type.'; No verified external callers; imports: none"]
366
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
367
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
368
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
373
369
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
374
370
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
371
+ // CIL[END stable_id="~/.framework/src/types/types.ts:Item:interface"]
372
+
375
373
 
376
374
 
377
375
 
378
376
 
379
377
 
378
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:ValidationError:interface" type="interface" identity="ValidationError" parent="~/.framework/src/types/types.ts"]
379
+ // CIL[DOC-MACRO purpose="Defines a field validation error."]
380
+ // CIL[DOC-RESPONSIBILITY responsibility="Provides field name and human-readable error message."]
381
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
382
+ // CIL[DOC-CONTRACT inputs="none" outputs="ValidationError interface definition" errors="none" side_effects="none"]
383
+ // CIL[DOC-MICRO logic_summary="Exports ValidationError for form and API validation." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
384
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
385
+ // CIL[DOC-STABILITY stability="stable"]
380
386
  export interface ValidationError {
381
387
  field: string
382
388
  message: string
383
389
  }
384
- // CIL[END chunk_id="types_validationerror_1783637731"]
385
- // CIL[BEGIN chunk_id="types_formstate_1783637731" type="interface" identity="FormState" parent="none"]
386
- // CIL[DOC-MACRO purpose="Define form state management for reactive forms with data, errors, and submission status"]
387
- // CIL[DOC-RESPONSIBILITY responsibility="Represent complete form state including data, validation errors, touched fields, and submission status"]
388
- // CIL[DOC-CONTEXT module="FormState" layer="unknown" related_files="[]"]
389
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
390
- // CIL[DOC-MICRO logic_summary="Implements FormState" notable_decisions="[]"]
391
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
392
- // CIL[DOC-STABILITY stability="stable"]
393
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
394
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
395
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
396
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
390
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a field validation error.'; No verified external callers; imports: none"]
391
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
392
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
393
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
397
394
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
398
395
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
396
+ // CIL[END stable_id="~/.framework/src/types/types.ts:ValidationError:interface"]
399
397
 
400
398
 
401
399
 
400
+
401
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:FormState:interface" type="interface" identity="FormState" parent="~/.framework/src/types/types.ts"]
402
+ // CIL[DOC-MACRO purpose="Defines reactive form state for data entry."]
403
+ // CIL[DOC-RESPONSIBILITY responsibility="Tracks data, errors, touched fields, and submission/valid state."]
404
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
405
+ // CIL[DOC-CONTRACT inputs="none" outputs="FormState interface definition" errors="none" side_effects="none"]
406
+ // CIL[DOC-MICRO logic_summary="Exports FormState for UI form components." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
407
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
408
+ // CIL[DOC-STABILITY stability="stable"]
402
409
  export interface FormState {
403
410
  data: Record<string, any>
404
411
  errors: Record<string, string>
@@ -406,115 +413,120 @@ export interface FormState {
406
413
  isSubmitting: boolean
407
414
  isValid: boolean
408
415
  }
409
- // CIL[END chunk_id="types_formstate_1783637731"]
410
- // CIL[BEGIN chunk_id="types_paginationparams_1783637731" type="interface" identity="PaginationParams" parent="none"]
411
- // CIL[DOC-MACRO purpose="Define pagination parameters for list queries with limit, offset, and page options"]
412
- // CIL[DOC-RESPONSIBILITY responsibility="Represent pagination controls for data list APIs"]
413
- // CIL[DOC-CONTEXT module="PaginationParams" layer="unknown" related_files="[]"]
414
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
415
- // CIL[DOC-MICRO logic_summary="Implements PaginationParams" notable_decisions="[]"]
416
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
417
- // CIL[DOC-STABILITY stability="stable"]
418
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
419
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
420
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
421
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
416
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines reactive form state for data entry.'; No verified external callers; imports: none"]
417
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
418
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
419
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
422
420
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
423
421
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
422
+ // CIL[END stable_id="~/.framework/src/types/types.ts:FormState:interface"]
423
+
424
424
 
425
425
 
426
426
 
427
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:PaginationParams:interface" type="interface" identity="PaginationParams" parent="~/.framework/src/types/types.ts"]
428
+ // CIL[DOC-MACRO purpose="Defines pagination parameters for list queries."]
429
+ // CIL[DOC-RESPONSIBILITY responsibility="Supports limit, offset, and page query options."]
430
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
431
+ // CIL[DOC-CONTRACT inputs="none" outputs="PaginationParams interface definition" errors="none" side_effects="none"]
432
+ // CIL[DOC-MICRO logic_summary="Exports PaginationParams for list request input." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
433
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
434
+ // CIL[DOC-STABILITY stability="stable"]
427
435
  export interface PaginationParams {
428
436
  limit?: number
429
437
  offset?: number
430
438
  page?: number
431
439
  }
432
- // CIL[END chunk_id="types_paginationparams_1783637731"]
433
- // CIL[BEGIN chunk_id="types_sortparams_1783637731" type="interface" identity="SortParams" parent="none"]
434
- // CIL[DOC-MACRO purpose="Define sorting parameters for list queries with field and direction"]
435
- // CIL[DOC-RESPONSIBILITY responsibility="Represent sorting controls for ordered data display"]
436
- // CIL[DOC-CONTEXT module="SortParams" layer="unknown" related_files="[]"]
437
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
438
- // CIL[DOC-MICRO logic_summary="Implements SortParams" notable_decisions="[]"]
439
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
440
- // CIL[DOC-STABILITY stability="stable"]
441
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
442
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
443
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
444
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
440
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines pagination parameters for list queries.'; No verified external callers; imports: none"]
441
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
442
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
443
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
445
444
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
446
445
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
446
+ // CIL[END stable_id="~/.framework/src/types/types.ts:PaginationParams:interface"]
447
447
 
448
448
 
449
449
 
450
+
451
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:SortParams:interface" type="interface" identity="SortParams" parent="~/.framework/src/types/types.ts"]
452
+ // CIL[DOC-MACRO purpose="Defines a single sort criterion."]
453
+ // CIL[DOC-RESPONSIBILITY responsibility="Specifies field name and asc/desc direction."]
454
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
455
+ // CIL[DOC-CONTRACT inputs="none" outputs="SortParams interface definition" errors="none" side_effects="none"]
456
+ // CIL[DOC-MICRO logic_summary="Exports SortParams for list sorting." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
457
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
458
+ // CIL[DOC-STABILITY stability="stable"]
450
459
  export interface SortParams {
451
460
  field: string
452
461
  direction: 'asc' | 'desc'
453
462
  }
454
- // CIL[END chunk_id="types_sortparams_1783637731"]
455
- // CIL[BEGIN chunk_id="types_filterparams_1783637731" type="interface" identity="FilterParams" parent="none"]
456
- // CIL[DOC-MACRO purpose="Define filter parameters for list queries with flexible key-value filtering"]
457
- // CIL[DOC-RESPONSIBILITY responsibility="Represent filter controls for data list APIs"]
458
- // CIL[DOC-CONTEXT module="FilterParams" layer="unknown" related_files="[]"]
459
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
460
- // CIL[DOC-MICRO logic_summary="Implements FilterParams" notable_decisions="[]"]
461
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
462
- // CIL[DOC-STABILITY stability="stable"]
463
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
464
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
465
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
466
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
463
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a single sort criterion.'; No verified external callers; imports: none"]
464
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
465
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
466
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
467
467
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
468
468
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
469
+ // CIL[END stable_id="~/.framework/src/types/types.ts:SortParams:interface"]
470
+
469
471
 
470
472
 
471
473
 
474
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:FilterParams:interface" type="interface" identity="FilterParams" parent="~/.framework/src/types/types.ts"]
475
+ // CIL[DOC-MACRO purpose="Defines an open-ended filter bag for list queries."]
476
+ // CIL[DOC-RESPONSIBILITY responsibility="Allows arbitrary key/value query filters."]
477
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
478
+ // CIL[DOC-CONTRACT inputs="none" outputs="FilterParams interface definition" errors="none" side_effects="none"]
479
+ // CIL[DOC-MICRO logic_summary="Exports FilterParams as Record<string, any>." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
480
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
481
+ // CIL[DOC-STABILITY stability="stable"]
472
482
  export interface FilterParams {
473
483
  [key: string]: any
474
484
  }
475
- // CIL[END chunk_id="types_filterparams_1783637731"]
476
- // CIL[BEGIN chunk_id="types_searchparams_1783637731" type="interface" identity="SearchParams" parent="none"]
477
- // CIL[DOC-MACRO purpose="Define comprehensive search parameters combining pagination, search, sort, and filters"]
478
- // CIL[DOC-RESPONSIBILITY responsibility="Represent complete search controls for data list APIs"]
479
- // CIL[DOC-CONTEXT module="SearchParams" layer="unknown" related_files="[]"]
480
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
481
- // CIL[DOC-MICRO logic_summary="Implements SearchParams" notable_decisions="[]"]
482
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
483
- // CIL[DOC-STABILITY stability="stable"]
484
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
485
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
486
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
487
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
485
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines an open-ended filter bag for list queries.'; No verified external callers; imports: none"]
486
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
487
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
488
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
488
489
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
489
490
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
491
+ // CIL[END stable_id="~/.framework/src/types/types.ts:FilterParams:interface"]
490
492
 
491
493
 
492
494
 
495
+
496
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:SearchParams:interface" type="interface" identity="SearchParams" parent="~/.framework/src/types/types.ts"]
497
+ // CIL[DOC-MACRO purpose="Defines combined search, sort, filter, and pagination input."]
498
+ // CIL[DOC-RESPONSIBILITY responsibility="Extends PaginationParams with search, sort, and filters."]
499
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
500
+ // CIL[DOC-CONTRACT inputs="none" outputs="SearchParams interface definition" errors="none" side_effects="none"]
501
+ // CIL[DOC-MICRO logic_summary="Exports SearchParams for list/search endpoints." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
502
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
503
+ // CIL[DOC-STABILITY stability="stable"]
493
504
  export interface SearchParams extends PaginationParams {
494
505
  search?: string
495
506
  sort?: SortParams
496
507
  filters?: FilterParams
497
508
  }
498
- // CIL[END chunk_id="types_searchparams_1783637731"]
499
- // CIL[BEGIN chunk_id="types_entitycolumn_1783637731" type="interface" identity="EntityColumn" parent="none"]
500
- // CIL[DOC-MACRO purpose="Define column configuration for entity list display with sorting and display options"]
501
- // CIL[DOC-RESPONSIBILITY responsibility="Represent column metadata for data table rendering"]
502
- // CIL[DOC-CONTEXT module="EntityColumn" layer="unknown" related_files="[]"]
503
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
504
- // CIL[DOC-MICRO logic_summary="Implements EntityColumn" notable_decisions="[]"]
505
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
506
- // CIL[DOC-STABILITY stability="stable"]
507
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
508
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
509
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
510
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
509
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines combined search, sort, filter, and pagination input.'; No verified external callers; imports: none"]
510
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
511
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
512
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
511
513
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
512
514
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
515
+ // CIL[END stable_id="~/.framework/src/types/types.ts:SearchParams:interface"]
516
+
513
517
 
514
518
 
515
519
 
516
520
 
517
521
 
522
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:EntityColumn:interface" type="interface" identity="EntityColumn" parent="~/.framework/src/types/types.ts"]
523
+ // CIL[DOC-MACRO purpose="Defines a column in a generic entity list table."]
524
+ // CIL[DOC-RESPONSIBILITY responsibility="Describes key, label, sortability, type, display type, and badge colors."]
525
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
526
+ // CIL[DOC-CONTRACT inputs="none" outputs="EntityColumn interface definition" errors="none" side_effects="none"]
527
+ // CIL[DOC-MICRO logic_summary="Exports EntityColumn for GenericListPage." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
528
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
529
+ // CIL[DOC-STABILITY stability="stable"]
518
530
  export interface EntityColumn {
519
531
  key: string
520
532
  label: string
@@ -524,24 +536,25 @@ export interface EntityColumn {
524
536
  badgeColors?: Record<string, string>
525
537
  maxLength?: number
526
538
  }
527
- // CIL[END chunk_id="types_entitycolumn_1783637731"]
528
- // CIL[BEGIN chunk_id="types_entitystat_1783637731" type="interface" identity="EntityStat" parent="none"]
529
- // CIL[DOC-MACRO purpose="Define stat card configuration for entity list summaries with counts and filters"]
530
- // CIL[DOC-RESPONSIBILITY responsibility="Represent summary statistics display for data lists"]
531
- // CIL[DOC-CONTEXT module="EntityStat" layer="unknown" related_files="[]"]
532
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
533
- // CIL[DOC-MICRO logic_summary="Implements EntityStat" notable_decisions="[]"]
534
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
535
- // CIL[DOC-STABILITY stability="stable"]
536
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
537
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
538
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
539
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
539
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a column in a generic entity list table.'; No verified external callers; imports: none"]
540
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
541
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
542
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
540
543
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
541
544
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
545
+ // CIL[END stable_id="~/.framework/src/types/types.ts:EntityColumn:interface"]
542
546
 
543
547
 
544
548
 
549
+
550
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:EntityStat:interface" type="interface" identity="EntityStat" parent="~/.framework/src/types/types.ts"]
551
+ // CIL[DOC-MACRO purpose="Defines a stat card shown on a generic entity list."]
552
+ // CIL[DOC-RESPONSIBILITY responsibility="Declares count/filter_count stat metadata and optional filter."]
553
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
554
+ // CIL[DOC-CONTRACT inputs="none" outputs="EntityStat interface definition" errors="none" side_effects="none"]
555
+ // CIL[DOC-MICRO logic_summary="Exports EntityStat for GenericListPage." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
556
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
557
+ // CIL[DOC-STABILITY stability="stable"]
545
558
  export interface EntityStat {
546
559
  title: string
547
560
  type: 'count' | 'filter_count'
@@ -549,50 +562,52 @@ export interface EntityStat {
549
562
  color: string
550
563
  filter?: Record<string, any>
551
564
  }
552
- // CIL[END chunk_id="types_entitystat_1783637731"]
553
- // CIL[BEGIN chunk_id="types_entityfilter_1783637731" type="interface" identity="EntityFilter" parent="none"]
554
- // CIL[DOC-MACRO purpose="Define filter configuration for entity lists with search, enum, and boolean filter types"]
555
- // CIL[DOC-RESPONSIBILITY responsibility="Represent filter controls for data list filtering"]
556
- // CIL[DOC-CONTEXT module="EntityFilter" layer="unknown" related_files="[]"]
557
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
558
- // CIL[DOC-MICRO logic_summary="Implements EntityFilter" notable_decisions="[]"]
559
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
560
- // CIL[DOC-STABILITY stability="stable"]
561
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
562
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
563
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
564
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
565
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a stat card shown on a generic entity list.'; No verified external callers; imports: none"]
566
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
567
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
568
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
565
569
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
566
570
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
571
+ // CIL[END stable_id="~/.framework/src/types/types.ts:EntityStat:interface"]
572
+
567
573
 
568
574
 
569
575
 
576
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:EntityFilter:interface" type="interface" identity="EntityFilter" parent="~/.framework/src/types/types.ts"]
577
+ // CIL[DOC-MACRO purpose="Defines a filter control in a generic entity list."]
578
+ // CIL[DOC-RESPONSIBILITY responsibility="Specifies key, label, filter type, and enum options."]
579
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
580
+ // CIL[DOC-CONTRACT inputs="none" outputs="EntityFilter interface definition" errors="none" side_effects="none"]
581
+ // CIL[DOC-MICRO logic_summary="Exports EntityFilter for GenericListPage." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
582
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
583
+ // CIL[DOC-STABILITY stability="stable"]
570
584
  export interface EntityFilter {
571
585
  key: string
572
586
  label: string
573
587
  type: 'search' | 'enum' | 'boolean'
574
588
  options?: string[]
575
589
  }
576
- // CIL[END chunk_id="types_entityfilter_1783637731"]
577
- // CIL[BEGIN chunk_id="types_itemprogress_1783637731" type="interface" identity="ItemProgress" parent="none"]
578
- // CIL[DOC-MACRO purpose="Define progress tracking for items with status, scoring, and detailed progress data"]
579
- // CIL[DOC-RESPONSIBILITY responsibility="Represent user progress through items with completion status and metadata"]
580
- // CIL[DOC-CONTEXT module="ItemProgress" layer="unknown" related_files="[]"]
581
- // CIL[DOC-CONTRACT inputs="none" outputs="none" errors="none" side_effects="none"]
582
- // CIL[DOC-MICRO logic_summary="Implements ItemProgress" notable_decisions="[]"]
583
- // CIL[DOC-CONFIDENCE pass="second" score="0.95" flags="none"]
584
- // CIL[DOC-STABILITY stability="stable"]
585
- // CIL[DOC-VECTOR type="context" content="Layer: unknown. Direct callers: 0. Direct calls: 0. Related files: none."]
586
- // CIL[DOC-VECTOR type="blast_radius" content="Direct callers: 0. Total affected: 0."]
587
- // CIL[DOC-VECTOR type="configuration" content="No configuration dependencies."]
588
- // CIL[DOC-VECTOR type="constraint" content="No test paths identified."]
590
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a filter control in a generic entity list.'; No verified external callers; imports: none"]
591
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
592
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
593
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
589
594
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
590
595
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
596
+ // CIL[END stable_id="~/.framework/src/types/types.ts:EntityFilter:interface"]
591
597
 
592
598
 
593
599
 
594
600
 
595
601
 
602
+
603
+ // CIL[BEGIN stable_id="~/.framework/src/types/types.ts:ItemProgress:interface" type="interface" identity="ItemProgress" parent="~/.framework/src/types/types.ts"]
604
+ // CIL[DOC-MACRO purpose="Defines a progress-tracking record for an item."]
605
+ // CIL[DOC-RESPONSIBILITY responsibility="Holds status, score, attempts, time spent, and related metadata."]
606
+ // CIL[DOC-CONTEXT module=".framework/src/types" layer="types" related_files=".framework/src/types/types.ts"]
607
+ // CIL[DOC-CONTRACT inputs="none" outputs="ItemProgress interface definition" errors="none" side_effects="none"]
608
+ // CIL[DOC-MICRO logic_summary="Exports ItemProgress used by learning and task tracking features." notable_decisions="Fields marked optional with '?'; validation and permissions are nested sub-types."]
609
+ // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
610
+ // CIL[DOC-STABILITY stability="stable"]
596
611
  export interface ItemProgress {
597
612
  id: string
598
613
  type_id: string
@@ -620,4 +635,10 @@ export interface ItemProgress {
620
635
  created_at: string
621
636
  updated_at: string
622
637
  }
623
- // CIL[END chunk_id="types_itemprogress_1783637731"]
638
+ // CIL[DOC-VECTOR type="context" content="purpose='Defines a progress-tracking record for an item.'; No verified external callers; imports: none"]
639
+ // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
640
+ // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
641
+ // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
642
+ // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
643
+ // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
644
+ // CIL[END stable_id="~/.framework/src/types/types.ts:ItemProgress:interface"]