spine-framework 0.4.4 → 0.5.0-rc.4

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 (283) hide show
  1. package/.env.example +13 -3
  2. package/.framework/cli/commands/bootstrap.ts +392 -0
  3. package/.framework/cli/commands/dev.ts +91 -218
  4. package/.framework/cli/commands/doctor.ts +132 -26
  5. package/.framework/cli/commands/generate.ts +38 -298
  6. package/.framework/cli/commands/init.ts +20 -1
  7. package/.framework/cli/commands/migrate.ts +36 -30
  8. package/.framework/cli/commands/migrations.ts +16 -56
  9. package/.framework/cli/commands/upgrade.ts +35 -0
  10. package/.framework/cli/commands/validate-schema.ts +147 -0
  11. package/.framework/cli/context.ts +223 -110
  12. package/.framework/cli/index.ts +6 -0
  13. package/.framework/cli/lib/project-files.ts +241 -1
  14. package/.framework/functions/_shared/hash-api-key.ts +183 -79
  15. package/.framework/functions/_shared/logging.ts +562 -224
  16. package/.framework/functions/_shared/middleware.ts +47 -44
  17. package/.framework/functions/admin-data.ts +39 -28
  18. package/.framework/functions/ai-agents.ts +10 -6
  19. package/.framework/functions/api-keys.ts +301 -122
  20. package/.framework/functions/apps.ts +43 -26
  21. package/.framework/functions/cil-ingest.ts +48 -15
  22. package/.framework/functions/debug-auth.ts +14 -8
  23. package/.framework/functions/deliveries.ts +39 -12
  24. package/.framework/functions/embeddings.ts +145 -76
  25. package/.framework/functions/integration-outbound.ts +67 -27
  26. package/.framework/functions/integrations.ts +254 -127
  27. package/.framework/functions/logs.ts +273 -133
  28. package/.framework/functions/observability.ts +277 -147
  29. package/.framework/functions/pipeline-executions.ts +1 -1
  30. package/.framework/functions/pipelines.ts +14 -9
  31. package/.framework/functions/prompt-configs.ts +7 -4
  32. package/.framework/functions/roles.ts +8 -5
  33. package/.framework/functions/security.ts +30 -17
  34. package/.framework/functions/system-cron.ts +240 -127
  35. package/.framework/functions/tests.ts +7 -6
  36. package/.framework/functions/timers.ts +310 -107
  37. package/.framework/functions/triggers.ts +28 -13
  38. package/.framework/functions/types.ts +13 -10
  39. package/.framework/migrations/069_log_stats_window.sql +54 -0
  40. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  41. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  42. package/.framework/migrations/072_slug_autofill.sql +77 -0
  43. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  44. package/.framework/src/apps/admin/index.tsx +1141 -775
  45. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  46. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  47. package/.framework/src/components/admin/AdminSidebar.tsx +88 -79
  48. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  49. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  50. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  51. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  52. package/.framework/src/components/layout/Sidebar.tsx +300 -177
  53. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  54. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  55. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  56. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  57. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  58. package/.framework/src/components/ui/sheet.tsx +24 -26
  59. package/.framework/src/components/ui/textarea.tsx +74 -48
  60. package/.framework/src/hooks/useEntityList.ts +12 -9
  61. package/.framework/src/hooks/useListSchema.ts +108 -58
  62. package/.framework/src/instructions/README.md +57 -0
  63. package/.framework/src/instructions/ai-agents.md +69 -0
  64. package/.framework/src/instructions/alerts.md +80 -0
  65. package/.framework/src/instructions/api-keys.md +87 -0
  66. package/.framework/src/instructions/apps.md +77 -0
  67. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  68. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  69. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  70. package/.framework/src/instructions/concepts/automation.md +186 -0
  71. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  72. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  73. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  74. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  75. package/.framework/src/instructions/concepts/observability.md +116 -0
  76. package/.framework/src/instructions/concepts/permissions.md +150 -0
  77. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  78. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  79. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  80. package/.framework/src/instructions/deliveries.md +59 -0
  81. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  82. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  83. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  84. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  85. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  86. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  87. package/.framework/src/instructions/integrations.md +96 -0
  88. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  89. package/.framework/src/instructions/invites.md +60 -0
  90. package/.framework/src/instructions/kb.md +80 -0
  91. package/.framework/src/instructions/logs.md +77 -0
  92. package/.framework/src/instructions/observability.md +61 -0
  93. package/.framework/src/instructions/operations/deployment.md +115 -0
  94. package/.framework/src/instructions/operations/migrations.md +125 -0
  95. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  96. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  97. package/.framework/src/instructions/operations/upgrade.md +116 -0
  98. package/.framework/src/instructions/pipeline-executions.md +62 -0
  99. package/.framework/src/instructions/pipelines.md +78 -0
  100. package/.framework/src/instructions/prompts.md +95 -0
  101. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  102. package/.framework/src/instructions/reference/api/auth.md +113 -0
  103. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  104. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  105. package/.framework/src/instructions/reference/cli.md +124 -0
  106. package/.framework/src/instructions/reference/database.md +132 -0
  107. package/.framework/src/instructions/reference/design-schema.md +280 -0
  108. package/.framework/src/instructions/reference/env-vars.md +133 -0
  109. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  110. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  111. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  112. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  113. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  114. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  115. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  116. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  117. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  118. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  119. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  120. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  121. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  122. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  123. package/.framework/src/instructions/reference/functions/index.md +103 -0
  124. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  125. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  126. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  127. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  128. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  129. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  130. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  131. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  132. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  133. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  134. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  135. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  136. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  137. package/.framework/src/instructions/reference/functions/security.md +140 -0
  138. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  139. package/.framework/src/instructions/reference/functions/system.md +106 -0
  140. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  141. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  142. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  143. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  144. package/.framework/src/instructions/reference/functions/types.md +146 -0
  145. package/.framework/src/instructions/reference/seeds.md +126 -0
  146. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  147. package/.framework/src/instructions/reference/spine-config.md +114 -0
  148. package/.framework/src/instructions/roles.md +80 -0
  149. package/.framework/src/instructions/runtime-detail.md +70 -0
  150. package/.framework/src/instructions/runtime-list.md +77 -0
  151. package/.framework/src/instructions/security.md +67 -0
  152. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  153. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  154. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  155. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  156. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  157. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  158. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  159. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  160. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  161. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  162. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  163. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  164. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  165. package/.framework/src/instructions/testing.md +59 -0
  166. package/.framework/src/instructions/timers.md +82 -0
  167. package/.framework/src/instructions/triggers.md +69 -0
  168. package/.framework/src/instructions/types.md +93 -0
  169. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  170. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  171. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  172. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  173. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  174. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  175. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  176. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  177. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  178. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  179. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  180. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  181. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  182. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  183. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  184. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  185. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  186. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  187. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  188. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  189. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  190. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  191. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  192. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  193. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  194. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  195. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  196. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  197. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  198. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  199. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  200. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  201. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  202. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  203. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  204. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  205. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  206. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  207. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  208. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  209. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  210. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  211. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  212. package/.framework/templates/agent/AGENTS.md +150 -0
  213. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  214. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  215. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  216. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  217. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  218. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  219. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  220. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  221. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  222. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  223. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  224. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  225. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  226. package/.framework/templates/project.json +4 -1
  227. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  228. package/.framework/tests/unit/agent-files.test.ts +355 -0
  229. package/.framework/tests/unit/agent-runner.test.ts +479 -44
  230. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  231. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  232. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  233. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  234. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  235. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  236. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  237. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  238. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  239. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  240. package/.framework/tests/unit/system-cron.test.ts +240 -0
  241. package/.framework/tests/unit/timers.test.ts +159 -0
  242. package/README.md +125 -166
  243. package/config/tsconfig.cli.json +2 -2
  244. package/package.json +15 -4
  245. package/templates/project/package-lock.json +2 -2
  246. package/.framework/docs/admin-routes.md +0 -76
  247. package/.framework/docs/api-docs-progress.md +0 -38
  248. package/.framework/docs/api-governance.md +0 -146
  249. package/.framework/docs/api-testing-results.md +0 -212
  250. package/.framework/docs/assembly-launch-guide.md +0 -138
  251. package/.framework/docs/audit-results.md +0 -590
  252. package/.framework/docs/db-api-inventory.md +0 -95
  253. package/.framework/docs/gap-remediation-backlog.md +0 -103
  254. package/.framework/docs/ui-adoption-verification.md +0 -111
  255. package/.framework/docs/ui-api-coverage.md +0 -84
  256. package/.framework/docs/v2-compatibility-audit.md +0 -228
  257. package/.framework/mcp/index.ts +0 -133
  258. package/.framework/mcp/load-env.ts +0 -60
  259. package/.framework/mcp/shared/app-manifest.ts +0 -275
  260. package/.framework/mcp/shared/db.ts +0 -477
  261. package/.framework/mcp/shared/kb.ts +0 -118
  262. package/.framework/mcp/tools/architect.ts +0 -431
  263. package/.framework/mcp/tools/cil/context.ts +0 -345
  264. package/.framework/mcp/tools/cil/graph.ts +0 -242
  265. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  266. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  267. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  268. package/.framework/mcp/tools/cil/project.ts +0 -791
  269. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  270. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  271. package/.framework/mcp/tools/cil/search.ts +0 -97
  272. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  273. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  274. package/.framework/mcp/tools/kb/delete.ts +0 -139
  275. package/.framework/mcp/tools/kb/index.ts +0 -52
  276. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  277. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  278. package/.framework/mcp/tools/kb/publish.ts +0 -100
  279. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  280. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  281. package/.framework/mcp/tools/kb/search.ts +0 -101
  282. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  283. package/.framework/mcp/tools/observability.ts +0 -510
@@ -1,4 +1,4 @@
1
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
2
2
  // CIL[DOC-MACRO purpose="module_header module_header"]
3
3
  // CIL[DOC-RESPONSIBILITY responsibility="Implements module_header."]
4
4
  // CIL[DOC-CONTEXT module="admin/cil" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts"]
@@ -20,6 +20,7 @@ import { Input } from '@core/components/ui/input'
20
20
  import { Label } from '@core/components/ui/label'
21
21
  import { Progress } from '@core/components/ui/progress'
22
22
  import {
23
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:module_header:module_header"]
23
24
  CheckCircle2,
24
25
  ChevronRight,
25
26
  ChevronDown,
@@ -46,16 +47,13 @@ import {
46
47
 
47
48
 
48
49
 
49
- import { PageInstructions } from '../../../components/admin/PageInstructions'
50
50
  // CIL[DOC-VECTOR type="context" content="purpose='module_header module_header'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
51
51
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
52
52
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
53
53
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
54
54
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
55
55
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
56
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:module_header:module_header"]
57
56
 
58
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CilFileStatus:type" type="type" identity="CilFileStatus" parent="none"]
59
57
  // CIL[DOC-MACRO purpose="CilFileStatus type"]
60
58
  // CIL[DOC-RESPONSIBILITY responsibility="Implements CilFileStatus."]
61
59
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -63,6 +61,7 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
63
61
  // CIL[DOC-MICRO logic_summary="CilFileStatus type definition." notable_decisions="[]"]
64
62
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
65
63
  // CIL[DOC-STABILITY stability="stable"]
64
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CilFileStatus:type" type="type" identity="CilFileStatus" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
66
65
  type CilFileStatus =
67
66
  | '2-discovered'
68
67
  | '3-selected'
@@ -73,16 +72,15 @@ type CilFileStatus =
73
72
  | '8-enriched'
74
73
  | '9-embedded'
75
74
  | '10-mapped'
75
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CilFileStatus:type"]
76
76
  // CIL[DOC-VECTOR type="context" content="purpose='CilFileStatus type'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
77
77
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
78
78
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
79
79
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
80
80
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
81
81
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
82
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CilFileStatus:type"]
83
82
 
84
83
 
85
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:FileTreeNode:interface" type="interface" identity="FileTreeNode" parent="none"]
86
84
  // CIL[DOC-MACRO purpose="FileTreeNode interface"]
87
85
  // CIL[DOC-RESPONSIBILITY responsibility="Implements FileTreeNode."]
88
86
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -90,6 +88,7 @@ type CilFileStatus =
90
88
  // CIL[DOC-MICRO logic_summary="FileTreeNode interface definition." notable_decisions="[]"]
91
89
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
92
90
  // CIL[DOC-STABILITY stability="stable"]
91
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:FileTreeNode:interface" type="interface" identity="FileTreeNode" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
93
92
  interface FileTreeNode {
94
93
  id?: string | null
95
94
  name: string
@@ -99,18 +98,17 @@ interface FileTreeNode {
99
98
  status?: CilFileStatus
100
99
  children?: FileTreeNode[]
101
100
  }
101
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:FileTreeNode:interface"]
102
102
  // CIL[DOC-VECTOR type="context" content="purpose='FileTreeNode interface'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
103
103
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
104
104
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
105
105
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
106
106
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
107
107
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
108
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:FileTreeNode:interface"]
109
108
 
110
109
 
111
110
 
112
111
 
113
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:Project:interface" type="interface" identity="Project" parent="none"]
114
112
  // CIL[DOC-MACRO purpose="Project interface"]
115
113
  // CIL[DOC-RESPONSIBILITY responsibility="Implements Project."]
116
114
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -118,6 +116,7 @@ interface FileTreeNode {
118
116
  // CIL[DOC-MICRO logic_summary="Project interface definition." notable_decisions="[]"]
119
117
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
120
118
  // CIL[DOC-STABILITY stability="stable"]
119
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:Project:interface" type="interface" identity="Project" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
121
120
  interface Project {
122
121
  id: string
123
122
  title: string
@@ -135,16 +134,15 @@ interface Project {
135
134
  file_statuses?: Record<string, string>
136
135
  }
137
136
  }
137
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:Project:interface"]
138
138
  // CIL[DOC-VECTOR type="context" content="purpose='Project interface'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
139
139
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
140
140
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
141
141
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
142
142
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
143
143
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
144
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:Project:interface"]
145
144
 
146
145
 
147
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:ProjectConfig:interface" type="interface" identity="ProjectConfig" parent="none"]
148
146
  // CIL[DOC-MACRO purpose="ProjectConfig interface"]
149
147
  // CIL[DOC-RESPONSIBILITY responsibility="Implements ProjectConfig."]
150
148
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -152,22 +150,22 @@ interface Project {
152
150
  // CIL[DOC-MICRO logic_summary="ProjectConfig interface definition." notable_decisions="[]"]
153
151
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
154
152
  // CIL[DOC-STABILITY stability="stable"]
153
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:ProjectConfig:interface" type="interface" identity="ProjectConfig" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
155
154
  interface ProjectConfig {
156
155
  repo_path: string
157
156
  globs: string
158
157
  exclude_globs: string
159
158
  force_reprocess: boolean
160
159
  }
160
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:ProjectConfig:interface"]
161
161
  // CIL[DOC-VECTOR type="context" content="purpose='ProjectConfig interface'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
162
162
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
163
163
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
164
164
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
165
165
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
166
166
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
167
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:ProjectConfig:interface"]
168
167
 
169
168
 
170
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineProgress:interface" type="interface" identity="PipelineProgress" parent="none"]
171
169
  // CIL[DOC-MACRO purpose="PipelineProgress interface"]
172
170
  // CIL[DOC-RESPONSIBILITY responsibility="Implements PipelineProgress."]
173
171
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -175,18 +173,19 @@ interface ProjectConfig {
175
173
  // CIL[DOC-MICRO logic_summary="PipelineProgress interface definition." notable_decisions="[]"]
176
174
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
177
175
  // CIL[DOC-STABILITY stability="stable"]
176
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineProgress:interface" type="interface" identity="PipelineProgress" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
178
177
  interface PipelineProgress {
179
178
  total_selected: number
180
179
  by_status: Record<string, number>
181
180
  total_chunks: number
182
181
  }
182
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineProgress:interface"]
183
183
  // CIL[DOC-VECTOR type="context" content="purpose='PipelineProgress interface'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
184
184
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
185
185
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
186
186
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
187
187
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
188
188
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
189
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineProgress:interface"]
190
189
 
191
190
 
192
191
 
@@ -194,7 +193,6 @@ interface PipelineProgress {
194
193
 
195
194
 
196
195
 
197
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:STATUS_COLOR:constant" type="constant" identity="STATUS_COLOR" parent="none"]
198
196
  // CIL[DOC-MACRO purpose="STATUS_COLOR constant"]
199
197
  // CIL[DOC-RESPONSIBILITY responsibility="Implements STATUS_COLOR."]
200
198
  // CIL[DOC-CONTEXT module="admin/cil" layer="constant" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -202,6 +200,7 @@ interface PipelineProgress {
202
200
  // CIL[DOC-MICRO logic_summary="STATUS_COLOR constant definition." notable_decisions="[]"]
203
201
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
204
202
  // CIL[DOC-STABILITY stability="stable"]
203
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:STATUS_COLOR:constant" type="constant" identity="STATUS_COLOR" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
205
204
  const STATUS_COLOR: Record<CilFileStatus, string> = {
206
205
  '2-discovered': 'bg-gray-100 text-gray-600',
207
206
  '3-selected': 'bg-indigo-100 text-indigo-700',
@@ -213,18 +212,17 @@ const STATUS_COLOR: Record<CilFileStatus, string> = {
213
212
  '9-embedded': 'bg-emerald-100 text-emerald-700',
214
213
  '10-mapped': 'bg-amber-100 text-amber-700',
215
214
  }
215
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:STATUS_COLOR:constant"]
216
216
  // CIL[DOC-VECTOR type="context" content="purpose='STATUS_COLOR constant'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
217
217
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
218
218
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
219
219
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
220
220
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
221
221
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
222
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:STATUS_COLOR:constant"]
223
222
 
224
223
 
225
224
 
226
225
 
227
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineStep:interface" type="interface" identity="PipelineStep" parent="none"]
228
226
  // CIL[DOC-MACRO purpose="PipelineStep interface"]
229
227
  // CIL[DOC-RESPONSIBILITY responsibility="Implements PipelineStep."]
230
228
  // CIL[DOC-CONTEXT module="admin/cil" layer="type" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -232,6 +230,7 @@ const STATUS_COLOR: Record<CilFileStatus, string> = {
232
230
  // CIL[DOC-MICRO logic_summary="PipelineStep interface definition." notable_decisions="[]"]
233
231
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
234
232
  // CIL[DOC-STABILITY stability="stable"]
233
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineStep:interface" type="interface" identity="PipelineStep" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
235
234
  interface PipelineStep {
236
235
  number: number
237
236
  key: string
@@ -243,17 +242,16 @@ interface PipelineStep {
243
242
  targetStatus: CilFileStatus
244
243
  sourceStatus?: CilFileStatus
245
244
  }
245
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineStep:interface"]
246
246
  // CIL[DOC-VECTOR type="context" content="purpose='PipelineStep interface'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
247
247
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
248
248
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
249
249
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
250
250
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
251
251
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
252
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PipelineStep:interface"]
253
252
 
254
253
 
255
254
 
256
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PIPELINE_STEPS:constant" type="constant" identity="PIPELINE_STEPS" parent="none"]
257
255
  // CIL[DOC-MACRO purpose="PIPELINE_STEPS constant"]
258
256
  // CIL[DOC-RESPONSIBILITY responsibility="Implements PIPELINE_STEPS."]
259
257
  // CIL[DOC-CONTEXT module="admin/cil" layer="constant" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -261,6 +259,7 @@ interface PipelineStep {
261
259
  // CIL[DOC-MICRO logic_summary="PIPELINE_STEPS constant definition." notable_decisions="[]"]
262
260
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
263
261
  // CIL[DOC-STABILITY stability="stable"]
262
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PIPELINE_STEPS:constant" type="constant" identity="PIPELINE_STEPS" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
264
263
  const PIPELINE_STEPS: PipelineStep[] = [
265
264
  {
266
265
  number: 1,
@@ -364,6 +363,7 @@ const PIPELINE_STEPS: PipelineStep[] = [
364
363
  sourceStatus: '9-embedded',
365
364
  },
366
365
  ]
366
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PIPELINE_STEPS:constant"]
367
367
 
368
368
 
369
369
 
@@ -375,8 +375,6 @@ const PIPELINE_STEPS: PipelineStep[] = [
375
375
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
376
376
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
377
377
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
378
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:PIPELINE_STEPS:constant"]
379
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:collectAllDirPaths:function" type="function" identity="collectAllDirPaths" parent="none"]
380
378
  // CIL[DOC-MACRO purpose="collectAllDirPaths function"]
381
379
  // CIL[DOC-RESPONSIBILITY responsibility="Implements collectAllDirPaths."]
382
380
  // CIL[DOC-CONTEXT module="admin/cil" layer="logic" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -384,6 +382,7 @@ const PIPELINE_STEPS: PipelineStep[] = [
384
382
  // CIL[DOC-MICRO logic_summary="collectAllDirPaths function definition." notable_decisions="[]"]
385
383
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
386
384
  // CIL[DOC-STABILITY stability="stable"]
385
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:collectAllDirPaths:function" type="function" identity="collectAllDirPaths" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
387
386
  function collectAllDirPaths(node: FileTreeNode): string[] {
388
387
  const paths: string[] = node.type === 'directory' ? [node.path] : []
389
388
  if (node.children) {
@@ -392,16 +391,15 @@ function collectAllDirPaths(node: FileTreeNode): string[] {
392
391
 
393
392
  return paths
394
393
  }
394
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:collectAllDirPaths:function"]
395
395
  // CIL[DOC-VECTOR type="context" content="purpose='collectAllDirPaths function'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
396
396
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
397
397
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
398
398
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
399
399
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
400
400
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
401
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:collectAllDirPaths:function"]
402
401
 
403
402
 
404
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countFilesInTree:function" type="function" identity="countFilesInTree" parent="none"]
405
403
  // CIL[DOC-MACRO purpose="countFilesInTree function"]
406
404
  // CIL[DOC-RESPONSIBILITY responsibility="Implements countFilesInTree."]
407
405
  // CIL[DOC-CONTEXT module="admin/cil" layer="logic" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -409,20 +407,20 @@ function collectAllDirPaths(node: FileTreeNode): string[] {
409
407
  // CIL[DOC-MICRO logic_summary="countFilesInTree function definition." notable_decisions="[]"]
410
408
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
411
409
  // CIL[DOC-STABILITY stability="stable"]
410
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countFilesInTree:function" type="function" identity="countFilesInTree" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
412
411
  function countFilesInTree(node: FileTreeNode): number {
413
412
  if (node.type === 'file') return 1
414
413
  return (node.children || []).reduce((acc, c) => acc + countFilesInTree(c), 0)
415
414
  }
415
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countFilesInTree:function"]
416
416
  // CIL[DOC-VECTOR type="context" content="purpose='countFilesInTree function'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
417
417
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
418
418
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
419
419
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
420
420
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
421
421
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
422
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countFilesInTree:function"]
423
422
 
424
423
 
425
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:getFileStatus:function" type="function" identity="getFileStatus" parent="none"]
426
424
  // CIL[DOC-MACRO purpose="getFileStatus function"]
427
425
  // CIL[DOC-RESPONSIBILITY responsibility="Implements getFileStatus."]
428
426
  // CIL[DOC-CONTEXT module="admin/cil" layer="logic" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -430,6 +428,7 @@ function countFilesInTree(node: FileTreeNode): number {
430
428
  // CIL[DOC-MICRO logic_summary="getFileStatus function definition." notable_decisions="[]"]
431
429
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
432
430
  // CIL[DOC-STABILITY stability="stable"]
431
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:getFileStatus:function" type="function" identity="getFileStatus" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
433
432
  function getFileStatus(path: string, fileStatuses: Record<string, string>, selectedPaths: string[]): CilFileStatus {
434
433
  const explicit = fileStatuses[path] as CilFileStatus | undefined
435
434
  if (explicit) return explicit
@@ -437,17 +436,16 @@ function getFileStatus(path: string, fileStatuses: Record<string, string>, selec
437
436
  if (selectedPaths.includes(path)) return '3-selected'
438
437
  return '2-discovered'
439
438
  }
439
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:getFileStatus:function"]
440
440
  // CIL[DOC-VECTOR type="context" content="purpose='getFileStatus function'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
441
441
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
442
442
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
443
443
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
444
444
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
445
445
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
446
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:getFileStatus:function"]
447
446
 
448
447
 
449
448
 
450
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countSelectedLeaves:function" type="function" identity="countSelectedLeaves" parent="none"]
451
449
  // CIL[DOC-MACRO purpose="countSelectedLeaves function"]
452
450
  // CIL[DOC-RESPONSIBILITY responsibility="Implements countSelectedLeaves."]
453
451
  // CIL[DOC-CONTEXT module="admin/cil" layer="logic" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -455,21 +453,21 @@ function getFileStatus(path: string, fileStatuses: Record<string, string>, selec
455
453
  // CIL[DOC-MICRO logic_summary="countSelectedLeaves function definition." notable_decisions="[]"]
456
454
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
457
455
  // CIL[DOC-STABILITY stability="stable"]
456
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countSelectedLeaves:function" type="function" identity="countSelectedLeaves" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
458
457
  function countSelectedLeaves(node: FileTreeNode, selectedPaths: string[]): number {
459
458
  if (node.type === 'file') return selectedPaths.includes(node.path) ? 1 : 0
460
459
  return (node.children || []).reduce((sum, c) => sum + countSelectedLeaves(c, selectedPaths), 0)
461
460
  }
461
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countSelectedLeaves:function"]
462
462
  // CIL[DOC-VECTOR type="context" content="purpose='countSelectedLeaves function'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
463
463
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
464
464
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
465
465
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
466
466
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
467
467
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
468
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countSelectedLeaves:function"]
469
468
 
470
469
 
471
470
 
472
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countLeaves:function" type="function" identity="countLeaves" parent="none"]
473
471
  // CIL[DOC-MACRO purpose="countLeaves function"]
474
472
  // CIL[DOC-RESPONSIBILITY responsibility="Implements countLeaves."]
475
473
  // CIL[DOC-CONTEXT module="admin/cil" layer="logic" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -477,22 +475,22 @@ function countSelectedLeaves(node: FileTreeNode, selectedPaths: string[]): numbe
477
475
  // CIL[DOC-MICRO logic_summary="countLeaves function definition." notable_decisions="[]"]
478
476
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
479
477
  // CIL[DOC-STABILITY stability="stable"]
478
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countLeaves:function" type="function" identity="countLeaves" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
480
479
  function countLeaves(node: FileTreeNode): number {
481
480
  if (node.type === 'file') return 1
482
481
  return (node.children || []).reduce((sum, c) => sum + countLeaves(c), 0)
483
482
  }
483
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countLeaves:function"]
484
484
  // CIL[DOC-VECTOR type="context" content="purpose='countLeaves function'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
485
485
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
486
486
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
487
487
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
488
488
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
489
489
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
490
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:countLeaves:function"]
491
490
 
492
491
 
493
492
 
494
493
 
495
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:TreeNode:component" type="component" identity="TreeNode" parent="none"]
496
494
  // CIL[DOC-MACRO purpose="TreeNode component"]
497
495
  // CIL[DOC-RESPONSIBILITY responsibility="Implements TreeNode."]
498
496
  // CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -500,6 +498,7 @@ function countLeaves(node: FileTreeNode): number {
500
498
  // CIL[DOC-MICRO logic_summary="TreeNode component definition." notable_decisions="[]"]
501
499
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
502
500
  // CIL[DOC-STABILITY stability="stable"]
501
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:TreeNode:component" type="component" identity="TreeNode" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
503
502
  function TreeNode({
504
503
  node,
505
504
  selectedPaths,
@@ -605,18 +604,17 @@ function TreeNode({
605
604
  </div>
606
605
  )
607
606
  }
607
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:TreeNode:component"]
608
608
  // CIL[DOC-VECTOR type="context" content="purpose='TreeNode component'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
609
609
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
610
610
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
611
611
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
612
612
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
613
613
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
614
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:TreeNode:component"]
615
614
 
616
615
 
617
616
 
618
617
 
619
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:StepRow:component" type="component" identity="StepRow" parent="none"]
620
618
  // CIL[DOC-MACRO purpose="StepRow component"]
621
619
  // CIL[DOC-RESPONSIBILITY responsibility="Implements StepRow."]
622
620
  // CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -624,6 +622,7 @@ function TreeNode({
624
622
  // CIL[DOC-MICRO logic_summary="StepRow component definition." notable_decisions="[]"]
625
623
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
626
624
  // CIL[DOC-STABILITY stability="stable"]
625
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:StepRow:component" type="component" identity="StepRow" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
627
626
  function StepRow({
628
627
  step,
629
628
  fileCount,
@@ -738,18 +737,17 @@ function StepRow({
738
737
  </div>
739
738
  )
740
739
  }
740
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:StepRow:component"]
741
741
  // CIL[DOC-VECTOR type="context" content="purpose='StepRow component'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
742
742
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
743
743
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
744
744
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
745
745
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
746
746
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
747
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:StepRow:component"]
748
747
 
749
748
 
750
749
 
751
750
 
752
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CILIngestionPage:component" type="component" identity="CILIngestionPage" parent="none"]
753
751
  // CIL[DOC-MACRO purpose="CILIngestionPage component"]
754
752
  // CIL[DOC-RESPONSIBILITY responsibility="Implements CILIngestionPage."]
755
753
  // CIL[DOC-CONTEXT module="admin/cil" layer="component" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/input.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tooltip.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
@@ -757,6 +755,7 @@ function StepRow({
757
755
  // CIL[DOC-MICRO logic_summary="CILIngestionPage component definition." notable_decisions="[]"]
758
756
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
759
757
  // CIL[DOC-STABILITY stability="stable"]
758
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CILIngestionPage:component" type="component" identity="CILIngestionPage" parent="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx"]
760
759
  export default function CILIngestionPage() {
761
760
  const { id: projectId } = useParams<{ id: string }>()
762
761
  const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
@@ -1181,17 +1180,6 @@ export default function CILIngestionPage() {
1181
1180
  </a>
1182
1181
  </div>
1183
1182
  </div>
1184
-
1185
- <PageInstructions
1186
- description="Run and monitor the CIL ingestion pipeline for a project."
1187
- sections={[
1188
- { title: 'What this page is for', content: 'This page controls the multi-pass ingestion process that discovers files, chunks code, generates embeddings, documents contracts, maps calls, and extracts config.' },
1189
- { title: 'How to read this page', content: 'The top cards show files discovered, files selected, first-pass complete, and fully ingested counts. The steps list shows which pass is active and how many files are done.' },
1190
- { title: 'How to use this page', content: 'Expand Project Settings to set the repository path, include globs, exclude globs, and Force Reprocess. Save settings, then run the pipeline steps in order. Refresh the progress bar to track status.' },
1191
- { title: 'Important notes', content: 'Ingestion can be expensive because it uses LLMs. Excluding node_modules, .git, and dist is strongly recommended. Force Reprocess re-runs passes even on already-processed files.' },
1192
- ]}
1193
- />
1194
-
1195
1183
  {}
1196
1184
  <div className="grid grid-cols-2 sm:grid-cols-4 gap-3">
1197
1185
  <div className="rounded-lg border bg-card p-3">
@@ -1440,10 +1428,10 @@ export default function CILIngestionPage() {
1440
1428
  </div>
1441
1429
  )
1442
1430
  }
1431
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CILIngestionPage:component"]
1443
1432
  // CIL[DOC-VECTOR type="context" content="purpose='CILIngestionPage component'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
1444
1433
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
1445
1434
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
1446
1435
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
1447
1436
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
1448
1437
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
1449
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILIngestionPage.tsx:CILIngestionPage:component"]