spine-framework 0.4.3 → 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 (320) 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/agent-runner.ts +1000 -81
  15. package/.framework/functions/_shared/cil.ts +2 -1
  16. package/.framework/functions/_shared/db.ts +3 -6
  17. package/.framework/functions/_shared/hash-api-key.ts +183 -79
  18. package/.framework/functions/_shared/kb.ts +61 -7
  19. package/.framework/functions/_shared/logging.ts +562 -224
  20. package/.framework/functions/_shared/message-sequence.ts +53 -0
  21. package/.framework/functions/_shared/middleware.ts +47 -44
  22. package/.framework/functions/_shared/pipeline-runner.ts +150 -37
  23. package/.framework/functions/_shared/principal.ts +9 -6
  24. package/.framework/functions/_shared/trigger-engine.ts +149 -40
  25. package/.framework/functions/admin-data.ts +48 -31
  26. package/.framework/functions/ai-agents.ts +103 -33
  27. package/.framework/functions/api-keys.ts +301 -122
  28. package/.framework/functions/apps.ts +43 -26
  29. package/.framework/functions/cil-ingest.ts +48 -15
  30. package/.framework/functions/debug-auth.ts +14 -8
  31. package/.framework/functions/deliveries.ts +39 -12
  32. package/.framework/functions/embeddings.ts +145 -76
  33. package/.framework/functions/integration-outbound.ts +67 -27
  34. package/.framework/functions/integrations.ts +254 -127
  35. package/.framework/functions/logs.ts +273 -133
  36. package/.framework/functions/observability.ts +277 -147
  37. package/.framework/functions/pipeline-executions.ts +1 -1
  38. package/.framework/functions/pipeline-runner-background.ts +120 -0
  39. package/.framework/functions/pipelines.ts +14 -9
  40. package/.framework/functions/prompt-configs.ts +7 -4
  41. package/.framework/functions/roles.ts +8 -5
  42. package/.framework/functions/security.ts +30 -17
  43. package/.framework/functions/system-cron.ts +250 -128
  44. package/.framework/functions/tests.ts +7 -6
  45. package/.framework/functions/timers.ts +310 -107
  46. package/.framework/functions/trigger-scheduler.ts +65 -5
  47. package/.framework/functions/triggers.ts +28 -13
  48. package/.framework/functions/types.ts +13 -10
  49. package/.framework/migrations/064_episode_leases.sql +196 -0
  50. package/.framework/migrations/065_execution_tables_updated_at.sql +20 -0
  51. package/.framework/migrations/066_episode_steal_thread_merge.sql +148 -0
  52. package/.framework/migrations/067_episode_lease_stale_steal.sql +93 -0
  53. package/.framework/migrations/068_cron_schedule_timer_rpcs.sql +251 -0
  54. package/.framework/migrations/069_log_stats_window.sql +54 -0
  55. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  56. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  57. package/.framework/migrations/072_slug_autofill.sql +77 -0
  58. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  59. package/.framework/schemas/spine.config.schema.json +62 -0
  60. package/.framework/src/App.tsx +3 -1
  61. package/.framework/src/apps/admin/index.tsx +1141 -775
  62. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  63. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  64. package/.framework/src/components/admin/AdminSidebar.tsx +92 -81
  65. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  66. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  67. package/.framework/src/components/app-shell/GenericAppShell.tsx +3 -1
  68. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  69. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  70. package/.framework/src/components/auth/TurnstileWidget.tsx +9 -6
  71. package/.framework/src/components/kb/KBArticleEditor.tsx +49 -6
  72. package/.framework/src/components/layout/Layout.tsx +4 -2
  73. package/.framework/src/components/layout/Sidebar.tsx +304 -179
  74. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  75. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  76. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  77. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  78. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  79. package/.framework/src/components/ui/sheet.tsx +24 -26
  80. package/.framework/src/components/ui/textarea.tsx +74 -48
  81. package/.framework/src/hooks/useBranding.ts +47 -0
  82. package/.framework/src/hooks/useEntityList.ts +12 -9
  83. package/.framework/src/hooks/useListSchema.ts +108 -58
  84. package/.framework/src/instructions/README.md +57 -0
  85. package/.framework/src/instructions/ai-agents.md +69 -0
  86. package/.framework/src/instructions/alerts.md +80 -0
  87. package/.framework/src/instructions/api-keys.md +87 -0
  88. package/.framework/src/instructions/apps.md +77 -0
  89. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  90. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  91. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  92. package/.framework/src/instructions/concepts/automation.md +186 -0
  93. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  94. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  95. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  96. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  97. package/.framework/src/instructions/concepts/observability.md +116 -0
  98. package/.framework/src/instructions/concepts/permissions.md +150 -0
  99. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  100. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  101. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  102. package/.framework/src/instructions/deliveries.md +59 -0
  103. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  104. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  105. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  106. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  107. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  108. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  109. package/.framework/src/instructions/integrations.md +96 -0
  110. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  111. package/.framework/src/instructions/invites.md +60 -0
  112. package/.framework/src/instructions/kb.md +80 -0
  113. package/.framework/src/instructions/logs.md +77 -0
  114. package/.framework/src/instructions/observability.md +61 -0
  115. package/.framework/src/instructions/operations/deployment.md +115 -0
  116. package/.framework/src/instructions/operations/migrations.md +125 -0
  117. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  118. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  119. package/.framework/src/instructions/operations/upgrade.md +116 -0
  120. package/.framework/src/instructions/pipeline-executions.md +62 -0
  121. package/.framework/src/instructions/pipelines.md +78 -0
  122. package/.framework/src/instructions/prompts.md +95 -0
  123. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  124. package/.framework/src/instructions/reference/api/auth.md +113 -0
  125. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  126. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  127. package/.framework/src/instructions/reference/cli.md +124 -0
  128. package/.framework/src/instructions/reference/database.md +132 -0
  129. package/.framework/src/instructions/reference/design-schema.md +280 -0
  130. package/.framework/src/instructions/reference/env-vars.md +133 -0
  131. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  132. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  133. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  134. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  135. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  136. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  137. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  138. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  139. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  140. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  141. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  142. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  143. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  144. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  145. package/.framework/src/instructions/reference/functions/index.md +103 -0
  146. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  147. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  148. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  149. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  150. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  151. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  152. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  153. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  154. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  155. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  156. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  157. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  158. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  159. package/.framework/src/instructions/reference/functions/security.md +140 -0
  160. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  161. package/.framework/src/instructions/reference/functions/system.md +106 -0
  162. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  163. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  164. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  165. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  166. package/.framework/src/instructions/reference/functions/types.md +146 -0
  167. package/.framework/src/instructions/reference/seeds.md +126 -0
  168. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  169. package/.framework/src/instructions/reference/spine-config.md +114 -0
  170. package/.framework/src/instructions/roles.md +80 -0
  171. package/.framework/src/instructions/runtime-detail.md +70 -0
  172. package/.framework/src/instructions/runtime-list.md +77 -0
  173. package/.framework/src/instructions/security.md +67 -0
  174. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  175. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  176. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  177. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  178. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  179. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  180. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  181. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  182. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  183. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  184. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  185. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  186. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  187. package/.framework/src/instructions/testing.md +59 -0
  188. package/.framework/src/instructions/timers.md +82 -0
  189. package/.framework/src/instructions/triggers.md +69 -0
  190. package/.framework/src/instructions/types.md +93 -0
  191. package/.framework/src/lib/branding.ts +128 -0
  192. package/.framework/src/pages/NoAppPage.tsx +3 -1
  193. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  194. package/.framework/src/pages/SetupPage.tsx +5 -2
  195. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  196. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  197. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  198. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  199. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  200. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  201. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  202. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  203. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  204. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  205. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  206. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  207. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  208. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  209. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  210. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  211. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  212. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  213. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  214. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  215. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  216. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  217. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  218. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  219. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  220. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  221. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  222. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  223. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  224. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  225. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  226. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  227. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  228. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  229. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  230. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  231. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  232. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  233. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  234. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  235. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  236. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  237. package/.framework/src/pages/auth/AuthConfirmPage.tsx +3 -1
  238. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +3 -1
  239. package/.framework/src/pages/auth/LoginPage.tsx +4 -2
  240. package/.framework/src/pages/auth/RegisterPage.tsx +3 -1
  241. package/.framework/templates/agent/AGENTS.md +150 -0
  242. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  243. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  244. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  245. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  246. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  247. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  248. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  249. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  250. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  251. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  252. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  253. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  254. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  255. package/.framework/templates/project.json +5 -1
  256. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  257. package/.framework/tests/unit/agent-files.test.ts +355 -0
  258. package/.framework/tests/unit/agent-runner.test.ts +496 -47
  259. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  260. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  261. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  262. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  263. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  264. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  265. package/.framework/tests/unit/episode-lease.test.ts +695 -0
  266. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  267. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  268. package/.framework/tests/unit/kb-ingest-lease.test.ts +19 -0
  269. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  270. package/.framework/tests/unit/pipeline-runner-background.test.ts +120 -0
  271. package/.framework/tests/unit/pipeline-runner.test.ts +153 -1
  272. package/.framework/tests/unit/principal-cache.test.ts +15 -0
  273. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  274. package/.framework/tests/unit/system-cron.test.ts +240 -0
  275. package/.framework/tests/unit/timers.test.ts +159 -0
  276. package/.framework/tests/unit/trigger-engine.test.ts +278 -91
  277. package/.framework/tests/unit/trigger-scheduler.test.ts +78 -0
  278. package/README.md +125 -166
  279. package/config/tsconfig.cli.json +2 -2
  280. package/netlify.toml +5 -0
  281. package/package.json +15 -4
  282. package/templates/project/package-lock.json +2 -2
  283. package/.framework/docs/admin-routes.md +0 -76
  284. package/.framework/docs/api-docs-progress.md +0 -38
  285. package/.framework/docs/api-governance.md +0 -146
  286. package/.framework/docs/api-testing-results.md +0 -212
  287. package/.framework/docs/assembly-launch-guide.md +0 -138
  288. package/.framework/docs/audit-results.md +0 -590
  289. package/.framework/docs/db-api-inventory.md +0 -95
  290. package/.framework/docs/gap-remediation-backlog.md +0 -103
  291. package/.framework/docs/ui-adoption-verification.md +0 -111
  292. package/.framework/docs/ui-api-coverage.md +0 -84
  293. package/.framework/docs/v2-compatibility-audit.md +0 -228
  294. package/.framework/mcp/index.ts +0 -133
  295. package/.framework/mcp/load-env.ts +0 -60
  296. package/.framework/mcp/shared/app-manifest.ts +0 -275
  297. package/.framework/mcp/shared/db.ts +0 -477
  298. package/.framework/mcp/shared/kb.ts +0 -118
  299. package/.framework/mcp/tools/architect.ts +0 -431
  300. package/.framework/mcp/tools/cil/context.ts +0 -345
  301. package/.framework/mcp/tools/cil/graph.ts +0 -242
  302. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  303. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  304. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  305. package/.framework/mcp/tools/cil/project.ts +0 -791
  306. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  307. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  308. package/.framework/mcp/tools/cil/search.ts +0 -97
  309. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  310. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  311. package/.framework/mcp/tools/kb/delete.ts +0 -139
  312. package/.framework/mcp/tools/kb/index.ts +0 -52
  313. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  314. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  315. package/.framework/mcp/tools/kb/publish.ts +0 -100
  316. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  317. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  318. package/.framework/mcp/tools/kb/search.ts +0 -101
  319. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  320. package/.framework/mcp/tools/observability.ts +0 -510
@@ -1,85 +0,0 @@
1
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/revoke.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/revoke.ts"]
2
- // CIL[DOC-MACRO purpose="MCP tool module that registers the spine_kb_revoke KB item revocation capability"]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Expose spine_kb_revoke to the MCP server for marking all embeddings of a KB item as revoked"]
4
- // CIL[DOC-CONTEXT module="mcp-tools-kb" layer="tools" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
5
- // CIL[DOC-CONTRACT inputs="McpServer instance" outputs="registered tool binding" errors="registration failures" side_effects="spine_kb_revoke becomes available on the MCP server"]
6
- // CIL[DOC-MICRO logic_summary="Imports the MCP server SDK, zod, shared admin DB, and the kbRevoke helper" notable_decisions="[]"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="ai-agents"]
10
-
11
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
12
- import { z } from 'zod'
13
- import { adminDb } from '../../shared/db.js'
14
- import { kbRevoke } from '../../shared/kb.js'
15
- // CIL[DOC-VECTOR type="context" content="purpose='MCP tool module that registers the spine_kb_revoke KB item revocation capability'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
16
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
- // CIL[END stable_id="~/.framework/mcp/tools/kb/revoke.ts:module_header:module_header"]
22
-
23
-
24
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/revoke.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/revoke.ts"]
25
- // CIL[DOC-MACRO purpose="Construct a machine request context for a KB revoke operation"]
26
- // CIL[DOC-RESPONSIBILITY responsibility="Create a valid request context object using the shared admin DB and a system-admin machine principal"]
27
- // CIL[DOC-CONTEXT module="mcp-tools-kb" layer="tools" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/revoke.ts"]
28
- // CIL[DOC-CONTRACT inputs="accountId: string" outputs="RequestContext-like object { requestId, accountId, principal, db, trace }" errors="none" side_effects="none"]
29
- // CIL[DOC-MICRO logic_summary="Builds a unique requestId, sets a machine principal with the system_admin role, and returns the adminDb context" notable_decisions="[]"]
30
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
31
- // CIL[DOC-STABILITY stability="stable"]
32
- function buildCtx(accountId: string) {
33
- return {
34
- requestId: `kb-mcp-${Date.now()}`,
35
- accountId,
36
- principal: {
37
- id: 'kb-mcp',
38
- type: 'machine' as const,
39
- roles: [{ slug: 'system_admin', is_system: true }]
40
- },
41
- db: adminDb,
42
- trace: undefined,
43
- } as any
44
- }
45
- // CIL[DOC-VECTOR type="context" content="purpose='Construct a machine request context for a KB revoke operation'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
46
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
47
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
48
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
49
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
50
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
51
- // CIL[END stable_id="~/.framework/mcp/tools/kb/revoke.ts:buildCtx:function"]
52
-
53
-
54
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/revoke.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/revoke.ts"]
55
- // CIL[DOC-MACRO purpose="Register the spine_kb_revoke MCP tool on a server"]
56
- // CIL[DOC-RESPONSIBILITY responsibility="Bind the revoke tool handler and input schema to the given McpServer"]
57
- // CIL[DOC-CONTEXT module="mcp-tools-kb" layer="tools" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/revoke.ts"]
58
- // CIL[DOC-CONTRACT inputs="server: McpServer" outputs="void" errors="throws on registration or handler failure" side_effects="spine_kb_revoke tool is available and invokes kbRevoke"]
59
- // CIL[DOC-MICRO logic_summary="Defines the tool description and zod input schema, then registers an async handler that builds context and calls kbRevoke" notable_decisions="[]"]
60
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
61
- // CIL[DOC-STABILITY stability="stable"]
62
- export function register(server: McpServer) {
63
- server.registerTool(
64
- 'spine_kb_revoke',
65
- {
66
- description: 'Mark all embeddings for a KB item as revoked.',
67
- inputSchema: z.object({
68
- id: z.string().uuid().describe('Item UUID'),
69
- account_id: z.string().uuid().describe('Account UUID for audit scope'),
70
- }),
71
- },
72
- async ({ id, account_id }) => {
73
- const ctx = buildCtx(account_id)
74
- const result = await kbRevoke(ctx, { id })
75
- return { content: [{ type: 'text', text: JSON.stringify(result) }] }
76
- }
77
- )
78
- }
79
- // CIL[DOC-VECTOR type="context" content="purpose='Register the spine_kb_revoke MCP tool on a server'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
80
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
81
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
82
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
83
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
84
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
85
- // CIL[END stable_id="~/.framework/mcp/tools/kb/revoke.ts:register:function"]
@@ -1,101 +0,0 @@
1
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/search.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/search.ts"]
2
- // CIL[DOC-MACRO purpose="MCP tool module that registers the spine_kb_search tool for querying the knowledge base"]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Expose a Model Context Protocol tool to perform vector similarity searches over published knowledge base articles"]
4
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="interface" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
5
- // CIL[DOC-CONTRACT inputs="McpServer instance" outputs="registered 'spine_kb_search' tool" errors="throws if server registration fails" side_effects="adds a tool to the MCP server"]
6
- // CIL[DOC-MICRO logic_summary="Imports dependencies and re-exports register for the kb search MCP tool" notable_decisions="Uses adminDb and a fixed machine principal for context"]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="mcp consumers, ai agents"]
10
-
11
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
12
- import { z } from 'zod'
13
- import { adminDb } from '../../shared/db.js'
14
- import { kbSearch } from '../../shared/kb.js'
15
- // CIL[DOC-VECTOR type="context" content="purpose='MCP tool module that registers the spine_kb_search tool for querying the knowledge base'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
16
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
- // CIL[END stable_id="~/.framework/mcp/tools/kb/search.ts:module_header:module_header"]
22
-
23
-
24
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/search.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/search.ts"]
25
- // CIL[DOC-MACRO purpose="Build an admin request context for knowledge base search"]
26
- // CIL[DOC-RESPONSIBILITY responsibility="Construct a RequestContext-like object with a fixed machine principal and adminDb connection"]
27
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="utility" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/search.ts"]
28
- // CIL[DOC-CONTRACT inputs="accountId: string" outputs="request context object" errors="none" side_effects="none"]
29
- // CIL[DOC-MICRO logic_summary="Returns an object containing requestId, accountId, principal, db, and trace" notable_decisions="Principal uses the system_admin role; trace is undefined; cast to any"]
30
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
31
- // CIL[DOC-STABILITY stability="stable"]
32
- function buildCtx(accountId: string) {
33
- return {
34
- requestId: `kb-mcp-${Date.now()}`,
35
- accountId,
36
- principal: {
37
- id: 'kb-mcp',
38
- type: 'machine' as const,
39
- roles: [{ slug: 'system_admin', is_system: true }]
40
- },
41
- db: adminDb,
42
- trace: undefined,
43
- } as any
44
- }
45
- // CIL[DOC-VECTOR type="context" content="purpose='Build an admin request context for knowledge base search'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
46
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
47
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
48
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
49
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
50
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
51
- // CIL[END stable_id="~/.framework/mcp/tools/kb/search.ts:buildCtx:function"]
52
-
53
-
54
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/search.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/search.ts"]
55
- // CIL[DOC-MACRO purpose="Register the spine_kb_search tool on the provided MCP server"]
56
- // CIL[DOC-RESPONSIBILITY responsibility="Define input schema and handler for vector similarity knowledge base search"]
57
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="interface" related_files=".framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/search.ts"]
58
- // CIL[DOC-CONTRACT inputs="server: McpServer" outputs="none (registers tool by side effect)" errors="Propagates errors from kbSearch" side_effects="Registers the 'spine_kb_search' tool and calls kbSearch on each invocation"]
59
- // CIL[DOC-MICRO logic_summary="Registers a tool with zod input schema and an async handler that builds a context and calls kbSearch" notable_decisions="Defaults type_slugs to a public/internal/admin list and passes optional filters/limits through unchanged"]
60
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
61
- // CIL[DOC-STABILITY stability="stable"]
62
- export function register(server: McpServer) {
63
- server.registerTool(
64
- 'spine_kb_search',
65
- {
66
- description: 'Search the knowledge base using vector similarity. Returns published articles ranked by similarity.',
67
- inputSchema: z.object({
68
- query: z.string().describe('Search query'),
69
- account_id: z.string().uuid().describe('Account UUID to scope results'),
70
- type_slugs: z.array(z.string()).optional().describe('Limit to these kb type slugs'),
71
- sources: z.array(z.enum(['kb', 'code'])).optional().describe('Sources to search'),
72
- app_id: z.string().uuid().optional().describe('Filter by app_id'),
73
- filters: z.record(z.any()).optional().describe('Post-match filters on record data, e.g. { product: ["example-app"], category: ["how-to"] }'),
74
- vector_fields: z.array(z.string()).optional().describe('Specific vector fields to search'),
75
- limit: z.number().int().min(1).max(50).optional().describe('Max results'),
76
- offset: z.number().int().min(0).optional().describe('Result offset'),
77
- }),
78
- },
79
- async ({ query, account_id, type_slugs, sources, app_id, filters, vector_fields, limit, offset }) => {
80
- const ctx = buildCtx(account_id)
81
- const result = await kbSearch(ctx, {
82
- query,
83
- type_slugs: type_slugs || ['kb-spine-admin', 'kb-spine-internal', 'kb-spine-public'],
84
- sources,
85
- app_id,
86
- filters,
87
- vector_fields,
88
- limit,
89
- offset,
90
- })
91
- return { content: [{ type: 'text', text: JSON.stringify(result) }] }
92
- }
93
- )
94
- }
95
- // CIL[DOC-VECTOR type="context" content="purpose='Register the spine_kb_search tool on the provided MCP server'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
96
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
97
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
98
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
99
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
100
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
101
- // CIL[END stable_id="~/.framework/mcp/tools/kb/search.ts:register:function"]
@@ -1,125 +0,0 @@
1
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/upsert.ts:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/mcp/tools/kb/upsert.ts"]
2
- // CIL[DOC-MACRO purpose="MCP tool module that registers the spine_kb_upsert tool for creating or updating KB articles."]
3
- // CIL[DOC-RESPONSIBILITY responsibility="Imports dependencies and exposes the register function to wire the KB upsert MCP tool into a server."]
4
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="tools" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts"]
5
- // CIL[DOC-CONTRACT inputs="McpServer instance supplied at runtime through register" outputs="Registered spine_kb_upsert tool" errors="Import-time errors if dependencies are missing or malformed" side_effects="No side effects at module load"]
6
- // CIL[DOC-MICRO logic_summary="Imports McpServer SDK, zod, adminDb, admin-data helpers, and KB ingest/revoke helpers; exports a register function for server wiring." notable_decisions="Defers persistence and embedding side effects to the tool handler; uses shared adminDb and admin-data modules."]
7
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
8
- // CIL[DOC-STABILITY stability="stable"]
9
- // CIL[DOC-AUDIENCE audience="system-admin"]
10
-
11
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
12
- import { z } from 'zod'
13
- import { adminDb } from '../../shared/db.js'
14
- import { create as adminCreate, update as adminUpdate } from '../../../functions/admin-data.js'
15
- import { kbIngest, kbRevoke } from '../../shared/kb.js'
16
- // CIL[DOC-VECTOR type="context" content="purpose='MCP tool module that registers the spine_kb_upsert tool for creating or updating KB articles.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
17
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
18
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
19
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
20
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
21
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
22
- // CIL[END stable_id="~/.framework/mcp/tools/kb/upsert.ts:module_header:module_header"]
23
-
24
-
25
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/upsert.ts:buildCtx:function" type="function" identity="buildCtx" parent="~/.framework/mcp/tools/kb/upsert.ts"]
26
- // CIL[DOC-MACRO purpose="Construct a minimal admin request context for KB operations."]
27
- // CIL[DOC-RESPONSIBILITY responsibility="Builds a context object with a machine principal, request id, account, db, and query for admin-data or kbIngest/kbRevoke calls."]
28
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="tools" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/upsert.ts"]
29
- // CIL[DOC-CONTRACT inputs="accountId: string, query: any" outputs="Admin-like request context object" errors="None" side_effects="None"]
30
- // CIL[DOC-MICRO logic_summary="Returns a hard-coded machine principal with system_admin role, adminDb, a generated requestId, and the supplied query." notable_decisions="No trace field is set; the principal is fixed to the kb-mcp machine role."]
31
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
32
- // CIL[DOC-STABILITY stability="stable"]
33
- function buildCtx(accountId: string, query: any) {
34
- return {
35
- requestId: `kb-mcp-${Date.now()}`,
36
- accountId,
37
- principal: {
38
- id: 'kb-mcp',
39
- type: 'machine' as const,
40
- roles: [{ slug: 'system_admin', is_system: true }]
41
- },
42
- db: adminDb,
43
- trace: undefined,
44
- query,
45
- } as any
46
- }
47
- // CIL[DOC-VECTOR type="context" content="purpose='Construct a minimal admin request context for KB operations.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
48
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
49
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
50
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
51
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
52
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
53
- // CIL[END stable_id="~/.framework/mcp/tools/kb/upsert.ts:buildCtx:function"]
54
-
55
-
56
- // CIL[BEGIN stable_id="~/.framework/mcp/tools/kb/upsert.ts:register:function" type="function" identity="register" parent="~/.framework/mcp/tools/kb/upsert.ts"]
57
- // CIL[DOC-MACRO purpose="Register the spine_kb_upsert MCP tool on an McpServer."]
58
- // CIL[DOC-RESPONSIBILITY responsibility="Define the tool input schema and implement creation or update of KB items, publishing or revoking embeddings based on status."]
59
- // CIL[DOC-CONTEXT module="mcp/tools/kb" layer="tools" related_files=".framework/functions/admin-data.ts,.framework/mcp/shared/db.ts,.framework/mcp/shared/kb.ts,.framework/mcp/tools/kb/upsert.ts"]
60
- // CIL[DOC-CONTRACT inputs="server: McpServer" outputs="Tool registered with name spine_kb_upsert" errors="Validation errors from zod or admin-data; ingest or revoke errors" side_effects="Creates or updates a KB item; publishes embeddings for published status or revokes them otherwise"]
61
- // CIL[DOC-MICRO logic_summary="Parses zod input, builds record data, calls adminCreate or adminUpdate, then conditionally calls kbIngest or kbRevoke." notable_decisions="Status defaults to draft; published status triggers kbIngest, all other statuses trigger kbRevoke; app_id and description are optional."]
62
- // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
63
- // CIL[DOC-STABILITY stability="stable"]
64
- export function register(server: McpServer) {
65
- server.registerTool(
66
- 'spine_kb_upsert',
67
- {
68
- description: 'Create or update a KB article through admin-data. Publishes and generates embeddings when status is published.',
69
- inputSchema: z.object({
70
- account_id: z.string().uuid().describe('Account UUID (ignored for platform-scoped types)'),
71
- type_slug: z.string().describe('KB type slug'),
72
- id: z.string().uuid().optional().describe('Item UUID; omit to create'),
73
- title: z.string().describe('Article title'),
74
- description: z.string().optional().describe('Short description'),
75
- content: z.string().describe('Article content'),
76
- tags: z.array(z.string()).optional().describe('Tags'),
77
- status: z.enum(['draft', 'published', 'archived']).optional().describe('Article status'),
78
- app_id: z.string().uuid().optional().describe('App UUID'),
79
- data: z.record(z.any()).optional().describe('Additional record data fields (product, category, work_ticket_id, source_file, source_function, etc.)'),
80
- }),
81
- },
82
- async ({ account_id, type_slug, id, title, description, content, tags, status, app_id, data: extraData }) => {
83
- const recordStatus = status || 'draft'
84
-
85
- const recordData: any = {
86
- entity: 'items',
87
- title,
88
- status: recordStatus,
89
- data: {
90
- ...(extraData || {}),
91
- content,
92
- tags: tags || [],
93
- },
94
- }
95
-
96
- if (description !== undefined) recordData.description = description
97
- if (app_id !== undefined) recordData.app_id = app_id
98
-
99
- let record: any
100
-
101
- if (id) {
102
- const ctx = buildCtx(account_id, { entity: 'items', id, method: 'PATCH' })
103
- record = await adminUpdate(ctx, recordData)
104
- } else {
105
- recordData.type_slug = type_slug
106
- const ctx = buildCtx(account_id, { entity: 'items', method: 'POST' })
107
- record = await adminCreate(ctx, recordData)
108
- }
109
-
110
- const ingestCtx = buildCtx(account_id, {})
111
- const ingestResult = record.status === 'published'
112
- ? await kbIngest(ingestCtx, { id: record.id })
113
- : await kbRevoke(ingestCtx, { id: record.id })
114
-
115
- return { content: [{ type: 'text', text: JSON.stringify({ record, ingest: ingestResult }) }] }
116
- }
117
- )
118
- }
119
- // CIL[DOC-VECTOR type="context" content="purpose='Register the spine_kb_upsert MCP tool on an McpServer.'; No verified external callers; imports: .framework/mcp/shared/db.ts,.framework/functions/admin-data.ts,.framework/mcp/shared/kb.ts"]
120
- // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
121
- // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
122
- // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
123
- // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
124
- // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
125
- // CIL[END stable_id="~/.framework/mcp/tools/kb/upsert.ts:register:function"]