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,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"]