bonecode 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/ARCHITECTURE.md +183 -0
  2. package/README.md +71 -0
  3. package/bin/bonecode +62 -0
  4. package/bone/migrations/rag_vectors.sql +258 -0
  5. package/bone/output/agent/.dockerignore +7 -0
  6. package/bone/output/agent/.env.example +36 -0
  7. package/bone/output/agent/.github/workflows/ci.yaml +58 -0
  8. package/bone/output/agent/AgentDomain.bone.map +350 -0
  9. package/bone/output/agent/AgentDomain.postman_collection.json +958 -0
  10. package/bone/output/agent/Dockerfile +22 -0
  11. package/bone/output/agent/README.md +47 -0
  12. package/bone/output/agent/admin/index.html +740 -0
  13. package/bone/output/agent/docker-compose.yaml +22 -0
  14. package/bone/output/agent/k8s/deployment.yaml +75 -0
  15. package/bone/output/agent/migrations/agent.sql +36 -0
  16. package/bone/output/agent/migrations/agent_instance.sql +36 -0
  17. package/bone/output/agent/migrations/audit_log.sql +18 -0
  18. package/bone/output/agent/migrations/build_step.sql +34 -0
  19. package/bone/output/agent/migrations/event_outbox.sql +31 -0
  20. package/bone/output/agent/migrations/plan.sql +30 -0
  21. package/bone/output/agent/migrations/task.sql +30 -0
  22. package/bone/output/agent/migrations/tool_call.sql +33 -0
  23. package/bone/output/agent/openapi.yaml +1116 -0
  24. package/bone/output/agent/package.json +36 -0
  25. package/bone/output/agent/schema.graphql +233 -0
  26. package/bone/output/agent/sdk/client.ts +231 -0
  27. package/bone/output/agent/src/algorithms.ts +2 -0
  28. package/bone/output/agent/src/audit.ts +44 -0
  29. package/bone/output/agent/src/auth.ts +57 -0
  30. package/bone/output/agent/src/cron.ts +12 -0
  31. package/bone/output/agent/src/db.ts +32 -0
  32. package/bone/output/agent/src/debug.ts +66 -0
  33. package/bone/output/agent/src/events.ts +243 -0
  34. package/bone/output/agent/src/extensions.ts +54 -0
  35. package/bone/output/agent/src/failure_rules.ts +323 -0
  36. package/bone/output/agent/src/flows.ts +168 -0
  37. package/bone/output/agent/src/health.ts +43 -0
  38. package/bone/output/agent/src/index.ts +100 -0
  39. package/bone/output/agent/src/logger.ts +66 -0
  40. package/bone/output/agent/src/metrics.ts +75 -0
  41. package/bone/output/agent/src/migrate.ts +352 -0
  42. package/bone/output/agent/src/migration_diff.ts +108 -0
  43. package/bone/output/agent/src/notify.ts +125 -0
  44. package/bone/output/agent/src/routes/agent_instance.ts +234 -0
  45. package/bone/output/agent/src/routes/build_step.ts +105 -0
  46. package/bone/output/agent/src/routes/plan.ts +91 -0
  47. package/bone/output/agent/src/routes/task.ts +105 -0
  48. package/bone/output/agent/src/routes/tool_call.ts +166 -0
  49. package/bone/output/agent/src/schemas.ts +384 -0
  50. package/bone/output/agent/src/state_machines/agent_instance.ts +24 -0
  51. package/bone/output/agent/src/state_machines/build_step.ts +22 -0
  52. package/bone/output/agent/src/state_machines/plan.ts +22 -0
  53. package/bone/output/agent/src/state_machines/task.ts +22 -0
  54. package/bone/output/agent/src/state_machines/tool_call.ts +22 -0
  55. package/bone/output/agent/src/tests.ts +362 -0
  56. package/bone/output/agent/src/websocket.ts +201 -0
  57. package/bone/output/agent/tsconfig.json +25 -0
  58. package/bone/output/rag/.dockerignore +7 -0
  59. package/bone/output/rag/.env.example +36 -0
  60. package/bone/output/rag/.github/workflows/ci.yaml +58 -0
  61. package/bone/output/rag/Dockerfile +22 -0
  62. package/bone/output/rag/RAGDomain.bone.map +287 -0
  63. package/bone/output/rag/RAGDomain.postman_collection.json +923 -0
  64. package/bone/output/rag/README.md +47 -0
  65. package/bone/output/rag/admin/index.html +818 -0
  66. package/bone/output/rag/docker-compose.yaml +22 -0
  67. package/bone/output/rag/k8s/deployment.yaml +75 -0
  68. package/bone/output/rag/migrations/audit_log.sql +18 -0
  69. package/bone/output/rag/migrations/code_chunk.sql +34 -0
  70. package/bone/output/rag/migrations/code_file.sql +33 -0
  71. package/bone/output/rag/migrations/event_outbox.sql +31 -0
  72. package/bone/output/rag/migrations/indexing_job.sql +33 -0
  73. package/bone/output/rag/migrations/knowledge_base.sql +35 -0
  74. package/bone/output/rag/migrations/memory_entry.sql +34 -0
  75. package/bone/output/rag/openapi.yaml +1097 -0
  76. package/bone/output/rag/package.json +36 -0
  77. package/bone/output/rag/schema.graphql +245 -0
  78. package/bone/output/rag/sdk/client.ts +234 -0
  79. package/bone/output/rag/src/algorithms.ts +2 -0
  80. package/bone/output/rag/src/audit.ts +37 -0
  81. package/bone/output/rag/src/auth.ts +57 -0
  82. package/bone/output/rag/src/cron.ts +12 -0
  83. package/bone/output/rag/src/db.ts +32 -0
  84. package/bone/output/rag/src/debug.ts +66 -0
  85. package/bone/output/rag/src/events.ts +243 -0
  86. package/bone/output/rag/src/extensions.ts +350 -0
  87. package/bone/output/rag/src/failure_rules.ts +315 -0
  88. package/bone/output/rag/src/flows.ts +239 -0
  89. package/bone/output/rag/src/health.ts +43 -0
  90. package/bone/output/rag/src/index.ts +95 -0
  91. package/bone/output/rag/src/logger.ts +66 -0
  92. package/bone/output/rag/src/metrics.ts +75 -0
  93. package/bone/output/rag/src/migrate.ts +364 -0
  94. package/bone/output/rag/src/migration_diff.ts +108 -0
  95. package/bone/output/rag/src/notify.ts +99 -0
  96. package/bone/output/rag/src/routes/code_chunk.ts +75 -0
  97. package/bone/output/rag/src/routes/code_file.ts +101 -0
  98. package/bone/output/rag/src/routes/indexing_job.ts +87 -0
  99. package/bone/output/rag/src/routes/knowledge_base.ts +230 -0
  100. package/bone/output/rag/src/routes/memory_entry.ts +87 -0
  101. package/bone/output/rag/src/schemas.ts +394 -0
  102. package/bone/output/rag/src/state_machines/code_file.ts +23 -0
  103. package/bone/output/rag/src/state_machines/indexing_job.ts +22 -0
  104. package/bone/output/rag/src/state_machines/knowledge_base.ts +23 -0
  105. package/bone/output/rag/src/state_machines/memory_entry.ts +20 -0
  106. package/bone/output/rag/src/tests.ts +340 -0
  107. package/bone/output/rag/tsconfig.json +25 -0
  108. package/bone/output/session/.dockerignore +7 -0
  109. package/bone/output/session/.env.example +36 -0
  110. package/bone/output/session/.github/workflows/ci.yaml +58 -0
  111. package/bone/output/session/Dockerfile +22 -0
  112. package/bone/output/session/README.md +47 -0
  113. package/bone/output/session/SessionDomain.bone.map +350 -0
  114. package/bone/output/session/SessionDomain.postman_collection.json +958 -0
  115. package/bone/output/session/admin/index.html +667 -0
  116. package/bone/output/session/docker-compose.yaml +22 -0
  117. package/bone/output/session/k8s/deployment.yaml +75 -0
  118. package/bone/output/session/migrations/audit_log.sql +18 -0
  119. package/bone/output/session/migrations/event_outbox.sql +31 -0
  120. package/bone/output/session/migrations/message.sql +31 -0
  121. package/bone/output/session/migrations/part.sql +28 -0
  122. package/bone/output/session/migrations/permission.sql +28 -0
  123. package/bone/output/session/migrations/project.sql +28 -0
  124. package/bone/output/session/migrations/session.sql +38 -0
  125. package/bone/output/session/openapi.yaml +1101 -0
  126. package/bone/output/session/package.json +36 -0
  127. package/bone/output/session/schema.graphql +222 -0
  128. package/bone/output/session/sdk/client.ts +225 -0
  129. package/bone/output/session/src/algorithms.ts +2 -0
  130. package/bone/output/session/src/audit.ts +44 -0
  131. package/bone/output/session/src/auth.ts +57 -0
  132. package/bone/output/session/src/cron.ts +12 -0
  133. package/bone/output/session/src/db.ts +32 -0
  134. package/bone/output/session/src/debug.ts +66 -0
  135. package/bone/output/session/src/events.ts +270 -0
  136. package/bone/output/session/src/extensions.ts +215 -0
  137. package/bone/output/session/src/failure_rules.ts +284 -0
  138. package/bone/output/session/src/flows.ts +168 -0
  139. package/bone/output/session/src/health.ts +43 -0
  140. package/bone/output/session/src/index.ts +100 -0
  141. package/bone/output/session/src/logger.ts +66 -0
  142. package/bone/output/session/src/metrics.ts +75 -0
  143. package/bone/output/session/src/migrate.ts +332 -0
  144. package/bone/output/session/src/migration_diff.ts +108 -0
  145. package/bone/output/session/src/notify.ts +112 -0
  146. package/bone/output/session/src/routes/message.ts +93 -0
  147. package/bone/output/session/src/routes/part.ts +79 -0
  148. package/bone/output/session/src/routes/permission.ts +79 -0
  149. package/bone/output/session/src/routes/project.ts +79 -0
  150. package/bone/output/session/src/routes/session.ts +294 -0
  151. package/bone/output/session/src/schemas.ts +357 -0
  152. package/bone/output/session/src/state_machines/session.ts +23 -0
  153. package/bone/output/session/src/tests.ts +326 -0
  154. package/bone/output/session/src/websocket.ts +201 -0
  155. package/bone/output/session/tsconfig.json +25 -0
  156. package/bone/output/workspace/.dockerignore +7 -0
  157. package/bone/output/workspace/.env.example +36 -0
  158. package/bone/output/workspace/.github/workflows/ci.yaml +58 -0
  159. package/bone/output/workspace/Dockerfile +22 -0
  160. package/bone/output/workspace/README.md +45 -0
  161. package/bone/output/workspace/WorkspaceDomain.bone.map +189 -0
  162. package/bone/output/workspace/WorkspaceDomain.postman_collection.json +621 -0
  163. package/bone/output/workspace/admin/index.html +485 -0
  164. package/bone/output/workspace/docker-compose.yaml +22 -0
  165. package/bone/output/workspace/k8s/deployment.yaml +75 -0
  166. package/bone/output/workspace/migrations/audit_log.sql +18 -0
  167. package/bone/output/workspace/migrations/codebase.sql +34 -0
  168. package/bone/output/workspace/migrations/event_outbox.sql +31 -0
  169. package/bone/output/workspace/migrations/snapshot.sql +32 -0
  170. package/bone/output/workspace/migrations/workspace.sql +33 -0
  171. package/bone/output/workspace/openapi.yaml +721 -0
  172. package/bone/output/workspace/package.json +36 -0
  173. package/bone/output/workspace/schema.graphql +153 -0
  174. package/bone/output/workspace/sdk/client.ts +155 -0
  175. package/bone/output/workspace/src/algorithms.ts +2 -0
  176. package/bone/output/workspace/src/audit.ts +37 -0
  177. package/bone/output/workspace/src/auth.ts +57 -0
  178. package/bone/output/workspace/src/cron.ts +12 -0
  179. package/bone/output/workspace/src/db.ts +32 -0
  180. package/bone/output/workspace/src/debug.ts +66 -0
  181. package/bone/output/workspace/src/events.ts +243 -0
  182. package/bone/output/workspace/src/extensions.ts +44 -0
  183. package/bone/output/workspace/src/failure_rules.ts +153 -0
  184. package/bone/output/workspace/src/health.ts +43 -0
  185. package/bone/output/workspace/src/index.ts +89 -0
  186. package/bone/output/workspace/src/logger.ts +66 -0
  187. package/bone/output/workspace/src/metrics.ts +75 -0
  188. package/bone/output/workspace/src/migrate.ts +220 -0
  189. package/bone/output/workspace/src/migration_diff.ts +108 -0
  190. package/bone/output/workspace/src/notify.ts +73 -0
  191. package/bone/output/workspace/src/routes/codebase.ts +87 -0
  192. package/bone/output/workspace/src/routes/snapshot.ts +127 -0
  193. package/bone/output/workspace/src/routes/workspace.ts +190 -0
  194. package/bone/output/workspace/src/schemas.ts +231 -0
  195. package/bone/output/workspace/src/state_machines/codebase.ts +21 -0
  196. package/bone/output/workspace/src/state_machines/snapshot.ts +20 -0
  197. package/bone/output/workspace/src/state_machines/workspace.ts +21 -0
  198. package/bone/output/workspace/src/tests.ts +249 -0
  199. package/bone/output/workspace/tsconfig.json +25 -0
  200. package/compat/opencode_adapter.ts +410 -0
  201. package/package.json +69 -0
  202. package/scripts/check_benchmark_session.js +34 -0
  203. package/scripts/check_finish_event.js +24 -0
  204. package/scripts/check_parts.js +15 -0
  205. package/scripts/compile.js +79 -0
  206. package/scripts/copy_opencode.ps1 +53 -0
  207. package/scripts/create_functions.sql +129 -0
  208. package/scripts/migrate.js +85 -0
  209. package/scripts/migrate_from_opencode.ts +218 -0
  210. package/scripts/test_agent_loop.js +101 -0
  211. package/scripts/test_api.ps1 +116 -0
  212. package/scripts/test_context_builder.js +136 -0
  213. package/scripts/test_context_builder.ts +97 -0
  214. package/scripts/test_rag.js +189 -0
  215. package/scripts/test_stream_events.js +36 -0
  216. package/scripts/test_websocket_and_saga.js +216 -0
  217. package/src/cli.ts +475 -0
  218. package/src/config.ts +162 -0
  219. package/src/context_builder.ts +598 -0
  220. package/src/engine/account/account.sql.ts +39 -0
  221. package/src/engine/account/account.ts +456 -0
  222. package/src/engine/account/repo.ts +166 -0
  223. package/src/engine/account/schema.ts +99 -0
  224. package/src/engine/account/url.ts +8 -0
  225. package/src/engine/acp/README.md +174 -0
  226. package/src/engine/acp/agent.ts +1968 -0
  227. package/src/engine/acp/runtime.ts +22 -0
  228. package/src/engine/acp/session.ts +122 -0
  229. package/src/engine/acp/types.ts +24 -0
  230. package/src/engine/agent/agent.ts +463 -0
  231. package/src/engine/agent/generate.txt +75 -0
  232. package/src/engine/agent/prompt/compaction.txt +9 -0
  233. package/src/engine/agent/prompt/explore.txt +18 -0
  234. package/src/engine/agent/prompt/scout.txt +36 -0
  235. package/src/engine/agent/prompt/summary.txt +11 -0
  236. package/src/engine/agent/prompt/title.txt +44 -0
  237. package/src/engine/agent/subagent-permissions.ts +34 -0
  238. package/src/engine/auth/index.ts +96 -0
  239. package/src/engine/background/background/job.ts +200 -0
  240. package/src/engine/background/job.ts +200 -0
  241. package/src/engine/bus/bus-event.ts +45 -0
  242. package/src/engine/bus/global.ts +22 -0
  243. package/src/engine/bus/index.ts +203 -0
  244. package/src/engine/command/command/index.ts +181 -0
  245. package/src/engine/command/command/template/initialize.txt +66 -0
  246. package/src/engine/command/command/template/review.txt +101 -0
  247. package/src/engine/command/index.ts +181 -0
  248. package/src/engine/command/template/initialize.txt +66 -0
  249. package/src/engine/command/template/review.txt +101 -0
  250. package/src/engine/config/agent.ts +172 -0
  251. package/src/engine/config/attachment.ts +25 -0
  252. package/src/engine/config/command.ts +62 -0
  253. package/src/engine/config/config.ts +833 -0
  254. package/src/engine/config/console-state.ts +14 -0
  255. package/src/engine/config/entry-name.ts +16 -0
  256. package/src/engine/config/error.ts +23 -0
  257. package/src/engine/config/formatter.ts +13 -0
  258. package/src/engine/config/layout.ts +6 -0
  259. package/src/engine/config/lsp.ts +43 -0
  260. package/src/engine/config/managed.ts +71 -0
  261. package/src/engine/config/markdown.ts +96 -0
  262. package/src/engine/config/mcp.ts +56 -0
  263. package/src/engine/config/model-id.ts +5 -0
  264. package/src/engine/config/parse.ts +79 -0
  265. package/src/engine/config/paths.ts +45 -0
  266. package/src/engine/config/permission.ts +58 -0
  267. package/src/engine/config/plugin.ts +84 -0
  268. package/src/engine/config/provider.ts +111 -0
  269. package/src/engine/config/reference.ts +23 -0
  270. package/src/engine/config/server.ts +19 -0
  271. package/src/engine/config/skills.ts +14 -0
  272. package/src/engine/config/variable.ts +90 -0
  273. package/src/engine/control-plane/adapters/index.ts +41 -0
  274. package/src/engine/control-plane/adapters/worktree.ts +96 -0
  275. package/src/engine/control-plane/dev/README.md +19 -0
  276. package/src/engine/control-plane/dev/debug-workspace-plugin.ts +73 -0
  277. package/src/engine/control-plane/schema.ts +14 -0
  278. package/src/engine/control-plane/types.ts +59 -0
  279. package/src/engine/control-plane/util.ts +39 -0
  280. package/src/engine/control-plane/workspace-adapter-runtime.ts +51 -0
  281. package/src/engine/control-plane/workspace-context.ts +26 -0
  282. package/src/engine/control-plane/workspace.sql.ts +20 -0
  283. package/src/engine/control-plane/workspace.ts +1072 -0
  284. package/src/engine/data-migration.ts +161 -0
  285. package/src/engine/effect/app-runtime.ts +143 -0
  286. package/src/engine/effect/bootstrap-runtime.ts +29 -0
  287. package/src/engine/effect/bridge.ts +84 -0
  288. package/src/engine/effect/config-service.ts +67 -0
  289. package/src/engine/effect/instance-ref.ts +11 -0
  290. package/src/engine/effect/instance-registry.ts +12 -0
  291. package/src/engine/effect/instance-state.ts +72 -0
  292. package/src/engine/effect/promise.ts +17 -0
  293. package/src/engine/effect/run-service.ts +47 -0
  294. package/src/engine/effect/runner.ts +217 -0
  295. package/src/engine/effect/runtime-flags.ts +74 -0
  296. package/src/engine/effect/service-use.ts +38 -0
  297. package/src/engine/env/index.ts +37 -0
  298. package/src/engine/event-v2-bridge.ts +89 -0
  299. package/src/engine/file/file/ignore.ts +81 -0
  300. package/src/engine/file/file/index.ts +651 -0
  301. package/src/engine/file/file/protected.ts +59 -0
  302. package/src/engine/file/file/ripgrep.ts +481 -0
  303. package/src/engine/file/file/watcher.ts +167 -0
  304. package/src/engine/file/ignore.ts +81 -0
  305. package/src/engine/file/index.ts +651 -0
  306. package/src/engine/file/protected.ts +59 -0
  307. package/src/engine/file/ripgrep.ts +481 -0
  308. package/src/engine/file/watcher.ts +167 -0
  309. package/src/engine/format/format/formatter.ts +404 -0
  310. package/src/engine/format/format/index.ts +209 -0
  311. package/src/engine/format/formatter.ts +404 -0
  312. package/src/engine/format/index.ts +209 -0
  313. package/src/engine/git/git/index.ts +347 -0
  314. package/src/engine/git/index.ts +347 -0
  315. package/src/engine/id/id.ts +80 -0
  316. package/src/engine/ide/index.ts +70 -0
  317. package/src/engine/image/image/image.ts +176 -0
  318. package/src/engine/image/image.ts +176 -0
  319. package/src/engine/index.ts +251 -0
  320. package/src/engine/installation/index.ts +327 -0
  321. package/src/engine/lsp/client.ts +707 -0
  322. package/src/engine/lsp/diagnostic.ts +29 -0
  323. package/src/engine/lsp/language.ts +121 -0
  324. package/src/engine/lsp/launch.ts +21 -0
  325. package/src/engine/lsp/lsp/client.ts +707 -0
  326. package/src/engine/lsp/lsp/diagnostic.ts +29 -0
  327. package/src/engine/lsp/lsp/language.ts +121 -0
  328. package/src/engine/lsp/lsp/launch.ts +21 -0
  329. package/src/engine/lsp/lsp/lsp.ts +507 -0
  330. package/src/engine/lsp/lsp/server.ts +2064 -0
  331. package/src/engine/lsp/lsp.ts +507 -0
  332. package/src/engine/lsp/server.ts +2064 -0
  333. package/src/engine/mcp/auth.ts +146 -0
  334. package/src/engine/mcp/index.ts +958 -0
  335. package/src/engine/mcp/mcp/auth.ts +146 -0
  336. package/src/engine/mcp/mcp/index.ts +958 -0
  337. package/src/engine/mcp/mcp/oauth-callback.ts +232 -0
  338. package/src/engine/mcp/mcp/oauth-provider.ts +214 -0
  339. package/src/engine/mcp/oauth-callback.ts +232 -0
  340. package/src/engine/mcp/oauth-provider.ts +214 -0
  341. package/src/engine/node.ts +6 -0
  342. package/src/engine/patch/index.ts +689 -0
  343. package/src/engine/patch/patch/index.ts +689 -0
  344. package/src/engine/permission/arity.ts +163 -0
  345. package/src/engine/permission/evaluate.ts +15 -0
  346. package/src/engine/permission/index.ts +306 -0
  347. package/src/engine/permission/permission/arity.ts +163 -0
  348. package/src/engine/permission/permission/evaluate.ts +15 -0
  349. package/src/engine/permission/permission/index.ts +306 -0
  350. package/src/engine/permission/permission/schema.ts +13 -0
  351. package/src/engine/permission/schema.ts +13 -0
  352. package/src/engine/plugin/azure.ts +26 -0
  353. package/src/engine/plugin/cloudflare.ts +76 -0
  354. package/src/engine/plugin/codex.ts +622 -0
  355. package/src/engine/plugin/digitalocean.ts +411 -0
  356. package/src/engine/plugin/github-copilot/copilot.ts +394 -0
  357. package/src/engine/plugin/github-copilot/models.ts +196 -0
  358. package/src/engine/plugin/index.ts +295 -0
  359. package/src/engine/plugin/install.ts +439 -0
  360. package/src/engine/plugin/loader.ts +216 -0
  361. package/src/engine/plugin/meta.ts +188 -0
  362. package/src/engine/plugin/shared.ts +323 -0
  363. package/src/engine/project/bootstrap-service.ts +9 -0
  364. package/src/engine/project/bootstrap.ts +75 -0
  365. package/src/engine/project/instance-context.ts +24 -0
  366. package/src/engine/project/instance-layer.ts +11 -0
  367. package/src/engine/project/instance-runtime.ts +16 -0
  368. package/src/engine/project/instance-store.ts +193 -0
  369. package/src/engine/project/project.sql.ts +17 -0
  370. package/src/engine/project/project.ts +537 -0
  371. package/src/engine/project/schema.ts +13 -0
  372. package/src/engine/project/vcs.ts +405 -0
  373. package/src/engine/provider/auth.ts +225 -0
  374. package/src/engine/provider/error.ts +204 -0
  375. package/src/engine/provider/model-status.ts +8 -0
  376. package/src/engine/provider/provider.ts +1843 -0
  377. package/src/engine/provider/schema.ts +30 -0
  378. package/src/engine/provider/sdk/copilot/AGENTS.md +1 -0
  379. package/src/engine/provider/transform.ts +1376 -0
  380. package/src/engine/pty/index.ts +365 -0
  381. package/src/engine/pty/input.ts +24 -0
  382. package/src/engine/pty/pty/index.ts +365 -0
  383. package/src/engine/pty/pty/input.ts +24 -0
  384. package/src/engine/pty/pty/pty.bun.ts +26 -0
  385. package/src/engine/pty/pty/pty.node.ts +27 -0
  386. package/src/engine/pty/pty/pty.ts +25 -0
  387. package/src/engine/pty/pty/schema.ts +14 -0
  388. package/src/engine/pty/pty/ticket.ts +68 -0
  389. package/src/engine/pty/pty.bun.ts +26 -0
  390. package/src/engine/pty/pty.node.ts +27 -0
  391. package/src/engine/pty/pty.ts +25 -0
  392. package/src/engine/pty/schema.ts +14 -0
  393. package/src/engine/pty/ticket.ts +68 -0
  394. package/src/engine/question/index.ts +213 -0
  395. package/src/engine/question/question/index.ts +213 -0
  396. package/src/engine/question/question/schema.ts +10 -0
  397. package/src/engine/question/schema.ts +10 -0
  398. package/src/engine/reference/reference/reference.ts +241 -0
  399. package/src/engine/reference/reference/repository-cache.ts +147 -0
  400. package/src/engine/reference/reference.ts +241 -0
  401. package/src/engine/reference/repository-cache.ts +147 -0
  402. package/src/engine/session/compaction.ts +651 -0
  403. package/src/engine/session/compaction_logic.ts +120 -0
  404. package/src/engine/session/instruction.ts +238 -0
  405. package/src/engine/session/instruction_loader.ts +54 -0
  406. package/src/engine/session/llm.ts +459 -0
  407. package/src/engine/session/message-error.ts +14 -0
  408. package/src/engine/session/message-v2.ts +1202 -0
  409. package/src/engine/session/message.ts +146 -0
  410. package/src/engine/session/overflow.ts +32 -0
  411. package/src/engine/session/overflow_check.ts +46 -0
  412. package/src/engine/session/processor.ts +823 -0
  413. package/src/engine/session/prompt/anthropic.txt +105 -0
  414. package/src/engine/session/prompt/beast.txt +147 -0
  415. package/src/engine/session/prompt/build-switch.txt +5 -0
  416. package/src/engine/session/prompt/codex.txt +79 -0
  417. package/src/engine/session/prompt/copilot-gpt-5.txt +143 -0
  418. package/src/engine/session/prompt/default.txt +105 -0
  419. package/src/engine/session/prompt/gemini.txt +155 -0
  420. package/src/engine/session/prompt/gpt.txt +107 -0
  421. package/src/engine/session/prompt/kimi.txt +95 -0
  422. package/src/engine/session/prompt/max-steps.txt +16 -0
  423. package/src/engine/session/prompt/plan-reminder-anthropic.txt +67 -0
  424. package/src/engine/session/prompt/plan.txt +26 -0
  425. package/src/engine/session/prompt/trinity.txt +97 -0
  426. package/src/engine/session/prompt.ts +671 -0
  427. package/src/engine/session/provider_transform.ts +187 -0
  428. package/src/engine/session/retry.ts +200 -0
  429. package/src/engine/session/retry_logic.ts +65 -0
  430. package/src/engine/session/revert.ts +162 -0
  431. package/src/engine/session/run-state.ts +153 -0
  432. package/src/engine/session/schema.ts +26 -0
  433. package/src/engine/session/session.sql.ts +137 -0
  434. package/src/engine/session/session.ts +1011 -0
  435. package/src/engine/session/status.ts +94 -0
  436. package/src/engine/session/summary.ts +164 -0
  437. package/src/engine/session/system.ts +84 -0
  438. package/src/engine/session/system_prompt.ts +65 -0
  439. package/src/engine/session/todo.ts +81 -0
  440. package/src/engine/session/tool_registry.ts +162 -0
  441. package/src/engine/share/session.ts +61 -0
  442. package/src/engine/share/share-next.ts +376 -0
  443. package/src/engine/share/share.sql.ts +13 -0
  444. package/src/engine/shell/shell/shell.ts +215 -0
  445. package/src/engine/shell/shell.ts +215 -0
  446. package/src/engine/skill/discovery.ts +116 -0
  447. package/src/engine/skill/index.ts +336 -0
  448. package/src/engine/skill/prompt/customize-opencode.md +377 -0
  449. package/src/engine/skill/skill/discovery.ts +116 -0
  450. package/src/engine/skill/skill/index.ts +336 -0
  451. package/src/engine/skill/skill/prompt/customize-opencode.md +377 -0
  452. package/src/engine/snapshot/index.ts +762 -0
  453. package/src/engine/snapshot/snapshot/index.ts +762 -0
  454. package/src/engine/sync/README.md +179 -0
  455. package/src/engine/sync/event.sql.ts +17 -0
  456. package/src/engine/sync/index.ts +410 -0
  457. package/src/engine/sync/schema.ts +11 -0
  458. package/src/engine/temporary.ts +33 -0
  459. package/src/engine/tool/apply_patch.ts +313 -0
  460. package/src/engine/tool/apply_patch.txt +33 -0
  461. package/src/engine/tool/edit.ts +711 -0
  462. package/src/engine/tool/edit.txt +10 -0
  463. package/src/engine/tool/external-directory.ts +49 -0
  464. package/src/engine/tool/glob.ts +103 -0
  465. package/src/engine/tool/glob.txt +6 -0
  466. package/src/engine/tool/grep.ts +156 -0
  467. package/src/engine/tool/grep.txt +8 -0
  468. package/src/engine/tool/invalid.ts +21 -0
  469. package/src/engine/tool/json-schema.ts +164 -0
  470. package/src/engine/tool/lsp.ts +113 -0
  471. package/src/engine/tool/lsp.txt +24 -0
  472. package/src/engine/tool/mcp-websearch.ts +96 -0
  473. package/src/engine/tool/plan-enter.txt +14 -0
  474. package/src/engine/tool/plan-exit.txt +13 -0
  475. package/src/engine/tool/plan.ts +78 -0
  476. package/src/engine/tool/question.ts +44 -0
  477. package/src/engine/tool/question.txt +10 -0
  478. package/src/engine/tool/read.ts +337 -0
  479. package/src/engine/tool/read.txt +14 -0
  480. package/src/engine/tool/registry.ts +472 -0
  481. package/src/engine/tool/repo_clone.ts +80 -0
  482. package/src/engine/tool/repo_clone.txt +5 -0
  483. package/src/engine/tool/repo_overview.ts +279 -0
  484. package/src/engine/tool/repo_overview.txt +4 -0
  485. package/src/engine/tool/schema.ts +14 -0
  486. package/src/engine/tool/shell/id.ts +19 -0
  487. package/src/engine/tool/shell/prompt.ts +295 -0
  488. package/src/engine/tool/shell/shell.txt +77 -0
  489. package/src/engine/tool/shell.ts +647 -0
  490. package/src/engine/tool/skill.ts +75 -0
  491. package/src/engine/tool/skill.txt +5 -0
  492. package/src/engine/tool/task.ts +337 -0
  493. package/src/engine/tool/task.txt +58 -0
  494. package/src/engine/tool/task_status.ts +179 -0
  495. package/src/engine/tool/task_status.txt +13 -0
  496. package/src/engine/tool/todo.ts +57 -0
  497. package/src/engine/tool/todowrite.txt +167 -0
  498. package/src/engine/tool/tool/apply_patch.ts +313 -0
  499. package/src/engine/tool/tool/apply_patch.txt +33 -0
  500. package/src/engine/tool/tool/edit.ts +711 -0
  501. package/src/engine/tool/tool/edit.txt +10 -0
  502. package/src/engine/tool/tool/external-directory.ts +49 -0
  503. package/src/engine/tool/tool/glob.ts +103 -0
  504. package/src/engine/tool/tool/glob.txt +6 -0
  505. package/src/engine/tool/tool/grep.ts +156 -0
  506. package/src/engine/tool/tool/grep.txt +8 -0
  507. package/src/engine/tool/tool/invalid.ts +21 -0
  508. package/src/engine/tool/tool/json-schema.ts +164 -0
  509. package/src/engine/tool/tool/lsp.ts +113 -0
  510. package/src/engine/tool/tool/lsp.txt +24 -0
  511. package/src/engine/tool/tool/mcp-websearch.ts +96 -0
  512. package/src/engine/tool/tool/plan-enter.txt +14 -0
  513. package/src/engine/tool/tool/plan-exit.txt +13 -0
  514. package/src/engine/tool/tool/plan.ts +78 -0
  515. package/src/engine/tool/tool/question.ts +44 -0
  516. package/src/engine/tool/tool/question.txt +10 -0
  517. package/src/engine/tool/tool/read.ts +337 -0
  518. package/src/engine/tool/tool/read.txt +14 -0
  519. package/src/engine/tool/tool/registry.ts +472 -0
  520. package/src/engine/tool/tool/repo_clone.ts +80 -0
  521. package/src/engine/tool/tool/repo_clone.txt +5 -0
  522. package/src/engine/tool/tool/repo_overview.ts +279 -0
  523. package/src/engine/tool/tool/repo_overview.txt +4 -0
  524. package/src/engine/tool/tool/schema.ts +14 -0
  525. package/src/engine/tool/tool/shell/id.ts +19 -0
  526. package/src/engine/tool/tool/shell/prompt.ts +295 -0
  527. package/src/engine/tool/tool/shell/shell.txt +77 -0
  528. package/src/engine/tool/tool/shell.ts +647 -0
  529. package/src/engine/tool/tool/skill.ts +75 -0
  530. package/src/engine/tool/tool/skill.txt +5 -0
  531. package/src/engine/tool/tool/task.ts +337 -0
  532. package/src/engine/tool/tool/task.txt +58 -0
  533. package/src/engine/tool/tool/task_status.ts +179 -0
  534. package/src/engine/tool/tool/task_status.txt +13 -0
  535. package/src/engine/tool/tool/todo.ts +57 -0
  536. package/src/engine/tool/tool/todowrite.txt +167 -0
  537. package/src/engine/tool/tool/tool.ts +164 -0
  538. package/src/engine/tool/tool/truncate.ts +160 -0
  539. package/src/engine/tool/tool/truncation-dir.ts +4 -0
  540. package/src/engine/tool/tool/webfetch.ts +192 -0
  541. package/src/engine/tool/tool/webfetch.txt +13 -0
  542. package/src/engine/tool/tool/websearch.ts +143 -0
  543. package/src/engine/tool/tool/websearch.txt +14 -0
  544. package/src/engine/tool/tool/write.ts +104 -0
  545. package/src/engine/tool/tool/write.txt +8 -0
  546. package/src/engine/tool/tool.ts +164 -0
  547. package/src/engine/tool/truncate.ts +160 -0
  548. package/src/engine/tool/truncation-dir.ts +4 -0
  549. package/src/engine/tool/webfetch.ts +192 -0
  550. package/src/engine/tool/webfetch.txt +13 -0
  551. package/src/engine/tool/websearch.ts +143 -0
  552. package/src/engine/tool/websearch.txt +14 -0
  553. package/src/engine/tool/write.ts +104 -0
  554. package/src/engine/tool/write.txt +8 -0
  555. package/src/engine/util/archive.ts +17 -0
  556. package/src/engine/util/bom.ts +31 -0
  557. package/src/engine/util/data-url.ts +9 -0
  558. package/src/engine/util/defer.ts +10 -0
  559. package/src/engine/util/effect-http-client.ts +11 -0
  560. package/src/engine/util/error.ts +88 -0
  561. package/src/engine/util/filesystem.ts +252 -0
  562. package/src/engine/util/format.ts +20 -0
  563. package/src/engine/util/iife.ts +3 -0
  564. package/src/engine/util/lazy.ts +20 -0
  565. package/src/engine/util/local-context.ts +25 -0
  566. package/src/engine/util/locale.ts +86 -0
  567. package/src/engine/util/media.ts +26 -0
  568. package/src/engine/util/process.ts +176 -0
  569. package/src/engine/util/queue.ts +32 -0
  570. package/src/engine/util/record.ts +3 -0
  571. package/src/engine/util/repository.ts +158 -0
  572. package/src/engine/util/rpc.ts +66 -0
  573. package/src/engine/util/signal.ts +12 -0
  574. package/src/engine/util/timeout.ts +13 -0
  575. package/src/engine/util/token.ts +7 -0
  576. package/src/engine/util/util/archive.ts +17 -0
  577. package/src/engine/util/util/bom.ts +31 -0
  578. package/src/engine/util/util/data-url.ts +9 -0
  579. package/src/engine/util/util/defer.ts +10 -0
  580. package/src/engine/util/util/effect-http-client.ts +11 -0
  581. package/src/engine/util/util/error.ts +88 -0
  582. package/src/engine/util/util/filesystem.ts +252 -0
  583. package/src/engine/util/util/format.ts +20 -0
  584. package/src/engine/util/util/iife.ts +3 -0
  585. package/src/engine/util/util/lazy.ts +20 -0
  586. package/src/engine/util/util/local-context.ts +25 -0
  587. package/src/engine/util/util/locale.ts +86 -0
  588. package/src/engine/util/util/media.ts +26 -0
  589. package/src/engine/util/util/process.ts +176 -0
  590. package/src/engine/util/util/queue.ts +32 -0
  591. package/src/engine/util/util/record.ts +3 -0
  592. package/src/engine/util/util/repository.ts +158 -0
  593. package/src/engine/util/util/rpc.ts +66 -0
  594. package/src/engine/util/util/signal.ts +12 -0
  595. package/src/engine/util/util/timeout.ts +13 -0
  596. package/src/engine/util/util/token.ts +7 -0
  597. package/src/engine/util/util/which.ts +14 -0
  598. package/src/engine/util/util/wildcard.ts +59 -0
  599. package/src/engine/util/which.ts +14 -0
  600. package/src/engine/util/wildcard.ts +59 -0
  601. package/src/engine/worktree/index.ts +621 -0
  602. package/src/rag_worker.ts +519 -0
  603. package/src/server.ts +201 -0
  604. package/src/tui.ts +637 -0
  605. package/tsconfig.json +24 -0
@@ -0,0 +1,95 @@
1
+ // Generated by BoneScript compiler. DO NOT EDIT.
2
+ // System: RAGDomain
3
+ require("dotenv").config();
4
+ import express from "express";
5
+ import { createServer } from "http";
6
+ import cors from "cors";
7
+ import helmet from "helmet";
8
+ import rateLimit from "express-rate-limit";
9
+ import { authMiddleware } from "./auth";
10
+ import { healthRouter } from "./health";
11
+ import { logger } from "./logger";
12
+ import { eventBus } from "./events";
13
+ import { pool } from "./db";
14
+
15
+ import { knowledgeBasesRouter } from "./routes/knowledge_base";
16
+ import { codeFilesRouter } from "./routes/code_file";
17
+ import { codeChunksRouter } from "./routes/code_chunk";
18
+ import { memoryEntrysRouter } from "./routes/memory_entry";
19
+ import { indexingJobsRouter } from "./routes/indexing_job";
20
+
21
+ const app = express();
22
+ const httpServer = createServer(app);
23
+ const PORT = parseInt(process.env.PORT || "3000");
24
+
25
+ // Middleware
26
+ app.use(helmet());
27
+ // CORS: restrict to ALLOWED_ORIGINS env var (comma-separated). Defaults to same-origin only.
28
+ const __allowedOrigins = (process.env.ALLOWED_ORIGINS || "").split(",").map(s => s.trim()).filter(Boolean);
29
+ app.use(cors({
30
+ origin: __allowedOrigins.length > 0
31
+ ? (origin, cb) => { if (!origin || __allowedOrigins.includes(origin)) cb(null, true); else cb(new Error("Not allowed by CORS")); }
32
+ : false,
33
+ credentials: true,
34
+ }));
35
+ app.use(express.json({ limit: "1mb" }));
36
+ app.use(express.urlencoded({ extended: false, limit: "1mb" }));
37
+ app.use(authMiddleware);
38
+ app.use(rateLimit({ windowMs: 60000, max: 1000 }));
39
+
40
+ // Request timeout (default 30s, override per-route)
41
+ app.use((req: any, res: any, next: any) => {
42
+ const timeout = parseInt(process.env.REQUEST_TIMEOUT_MS || "30000");
43
+ const timer = setTimeout(() => {
44
+ if (!res.headersSent) {
45
+ res.status(503).json({ error: { code: "REQUEST_TIMEOUT", message: "Request timed out" } });
46
+ }
47
+ }, timeout);
48
+ res.on("finish", () => clearTimeout(timer));
49
+ next();
50
+ });
51
+
52
+ // Health & metrics
53
+ app.use("/health", healthRouter);
54
+
55
+ // Routes
56
+ app.use("/knowledge_bases", knowledgeBasesRouter);
57
+ app.use("/code_files", codeFilesRouter);
58
+ app.use("/code_chunks", codeChunksRouter);
59
+ app.use("/memory_entrys", memoryEntrysRouter);
60
+ app.use("/indexing_jobs", indexingJobsRouter);
61
+
62
+ // Start
63
+ httpServer.listen(PORT, () => {
64
+ logger.info("server_started", { event: "startup", metadata: { port: PORT } });
65
+ // Start durable event worker (no-op in in_process mode)
66
+ eventBus.startWorker(parseInt(process.env.EVENT_WORKER_INTERVAL_MS || "1000"));
67
+ console.log(`[RAGDomain] Running on port ${PORT}`);
68
+ console.log(` HTTP routes:`);
69
+ console.log(` /knowledge_bases`);
70
+ console.log(` /code_files`);
71
+ console.log(` /code_chunks`);
72
+ console.log(` /memory_entrys`);
73
+ console.log(` /indexing_jobs`);
74
+ console.log(` Health: /health/live, /health/ready, /health/metrics`);
75
+ });
76
+
77
+ // Graceful shutdown
78
+ const shutdown = async (signal: string) => {
79
+ logger.info("server_stopping", { event: "shutdown", metadata: { signal } });
80
+ httpServer.close(async () => {
81
+ try {
82
+ await pool.end();
83
+ logger.info("server_stopped", { event: "shutdown", status: "success" });
84
+ } catch (e: any) {
85
+ logger.error("shutdown_error", { event: "shutdown", metadata: { error: e.message } });
86
+ }
87
+ process.exit(0);
88
+ });
89
+ // Force exit after 10s if connections don't drain
90
+ setTimeout(() => { logger.error("shutdown_timeout", { event: "shutdown" }); process.exit(1); }, 10000);
91
+ };
92
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
93
+ process.on("SIGINT", () => shutdown("SIGINT"));
94
+
95
+ export { app, httpServer };
@@ -0,0 +1,66 @@
1
+ // Generated by BoneScript compiler. DO NOT EDIT.
2
+ // Implements spec/10 §3 (Logging Schema)
3
+
4
+ import { v4 as uuid } from "uuid";
5
+
6
+ export type LogLevel = "debug" | "info" | "warn" | "error" | "fatal";
7
+ export type LogStatus = "success" | "failure" | "timeout" | "rejected";
8
+
9
+ export interface LogEntry {
10
+ timestamp: string;
11
+ level: LogLevel;
12
+ service: string;
13
+ trace_id: string;
14
+ span_id: string;
15
+ event: string;
16
+ duration_ms?: number;
17
+ status: LogStatus;
18
+ entity_id?: string;
19
+ actor_id?: string | null;
20
+ error_code?: string | null;
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+
24
+ class Logger {
25
+ private service: string;
26
+
27
+ constructor(service: string) {
28
+ this.service = service;
29
+ }
30
+
31
+ emit(entry: Omit<LogEntry, "timestamp" | "service" | "span_id">): void {
32
+ const full: LogEntry = {
33
+ timestamp: new Date().toISOString(),
34
+ service: this.service,
35
+ span_id: uuid(),
36
+ ...entry,
37
+ };
38
+ // In production: send to log aggregator. In dev: console.
39
+ const fn = entry.level === "error" || entry.level === "fatal" ? console.error : console.log;
40
+ fn(JSON.stringify(full));
41
+ }
42
+
43
+ info(event: string, fields: Partial<LogEntry> = {}): void {
44
+ this.emit({ level: "info", event, status: "success", trace_id: fields.trace_id || "", ...fields });
45
+ }
46
+
47
+ warn(event: string, fields: Partial<LogEntry> = {}): void {
48
+ this.emit({ level: "warn", event, status: "rejected", trace_id: fields.trace_id || "", ...fields });
49
+ }
50
+
51
+ error(event: string, fields: Partial<LogEntry> = {}): void {
52
+ this.emit({ level: "error", event, status: "failure", trace_id: fields.trace_id || "", ...fields });
53
+ }
54
+
55
+ debug(event: string, fields: Partial<LogEntry> = {}): void {
56
+ if (process.env.LOG_LEVEL === "debug") {
57
+ this.emit({ level: "debug", event, status: "success", trace_id: fields.trace_id || "", ...fields });
58
+ }
59
+ }
60
+ }
61
+
62
+ export function createLogger(service: string): Logger {
63
+ return new Logger(service);
64
+ }
65
+
66
+ export const logger = createLogger("RAGDomain");
@@ -0,0 +1,75 @@
1
+ // Generated by BoneScript compiler. DO NOT EDIT.
2
+ // Implements spec/10 §4 (Telemetry Hooks)
3
+
4
+ interface Counter {
5
+ type: "counter";
6
+ value: number;
7
+ labels: Record<string, string>;
8
+ }
9
+
10
+ interface Histogram {
11
+ type: "histogram";
12
+ values: number[];
13
+ labels: Record<string, string>;
14
+ }
15
+
16
+ interface Gauge {
17
+ type: "gauge";
18
+ value: number;
19
+ labels: Record<string, string>;
20
+ }
21
+
22
+ type Metric = Counter | Histogram | Gauge;
23
+
24
+ const metrics: Map<string, Metric> = new Map();
25
+
26
+ function key(name: string, labels: Record<string, string>): string {
27
+ const parts = Object.keys(labels).sort().map(k => `${k}="${labels[k]}"`);
28
+ return parts.length > 0 ? `${name}{${parts.join(",")}}` : name;
29
+ }
30
+
31
+ export function counter(name: string, labels: Record<string, string> = {}): void {
32
+ const k = key(name, labels);
33
+ const existing = metrics.get(k);
34
+ if (existing && existing.type === "counter") {
35
+ existing.value++;
36
+ } else {
37
+ metrics.set(k, { type: "counter", value: 1, labels });
38
+ }
39
+ }
40
+
41
+ export function histogram(name: string, value: number, labels: Record<string, string> = {}): void {
42
+ const k = key(name, labels);
43
+ const existing = metrics.get(k);
44
+ if (existing && existing.type === "histogram") {
45
+ existing.values.push(value);
46
+ } else {
47
+ metrics.set(k, { type: "histogram", values: [value], labels });
48
+ }
49
+ }
50
+
51
+ export function gauge(name: string, value: number, labels: Record<string, string> = {}): void {
52
+ const k = key(name, labels);
53
+ metrics.set(k, { type: "gauge", value, labels });
54
+ }
55
+
56
+ export function dump(): string {
57
+ const lines: string[] = [];
58
+ for (const [k, m] of metrics.entries()) {
59
+ if (m.type === "counter" || m.type === "gauge") {
60
+ lines.push(`${k} ${m.value}`);
61
+ } else {
62
+ const sum = m.values.reduce((a, b) => a + b, 0);
63
+ const count = m.values.length;
64
+ const avg = count > 0 ? sum / count : 0;
65
+ lines.push(`${k}_count ${count}`);
66
+ lines.push(`${k}_sum ${sum}`);
67
+ lines.push(`${k}_avg ${avg.toFixed(2)}`);
68
+ }
69
+ }
70
+ return lines.join("\n");
71
+ }
72
+
73
+ export function reset(): void {
74
+ metrics.clear();
75
+ }
@@ -0,0 +1,364 @@
1
+ // Generated by BoneScript compiler. DO NOT EDIT.
2
+ require("dotenv").config();
3
+ import { pool } from "./db";
4
+
5
+ async function migrate() {
6
+ console.log("Running migrations...");
7
+ const client = await pool.connect();
8
+ try {
9
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
10
+ -- Source: 1f72617e51bc07fb
11
+ -- Module: KnowledgeBaseStore
12
+
13
+ CREATE TABLE IF NOT EXISTS knowledge_bases (
14
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
15
+ project_id UUID NOT NULL,
16
+ name VARCHAR NOT NULL,
17
+ description VARCHAR NOT NULL,
18
+ embedding_model VARCHAR NOT NULL,
19
+ embedding_dimensions BIGINT NOT NULL,
20
+ chunk_strategy VARCHAR NOT NULL,
21
+ chunk_size BIGINT NOT NULL,
22
+ chunk_overlap BIGINT NOT NULL,
23
+ total_files BIGINT NOT NULL,
24
+ total_chunks BIGINT NOT NULL,
25
+ last_indexed_at TIMESTAMPTZ NOT NULL,
26
+ state VARCHAR NOT NULL,
27
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
28
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
29
+ );
30
+
31
+
32
+ CREATE OR REPLACE FUNCTION update_knowledge_bases_updated_at()
33
+ RETURNS TRIGGER AS \$\$
34
+ BEGIN
35
+ NEW.updated_at = NOW();
36
+ RETURN NEW;
37
+ END;
38
+ \$\$ LANGUAGE plpgsql;
39
+
40
+ CREATE TRIGGER trg_knowledge_bases_updated_at
41
+ BEFORE UPDATE ON knowledge_bases
42
+ FOR EACH ROW
43
+ EXECUTE FUNCTION update_knowledge_bases_updated_at();
44
+ `);
45
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
46
+ -- Source: 1f72617e51bc07fb
47
+ -- Module: CodeFileStore
48
+
49
+ CREATE TABLE IF NOT EXISTS code_files (
50
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
51
+ knowledge_base_id UUID NOT NULL,
52
+ project_id UUID NOT NULL,
53
+ file_path VARCHAR NOT NULL,
54
+ language VARCHAR NOT NULL,
55
+ file_hash VARCHAR NOT NULL,
56
+ file_size_bytes BIGINT NOT NULL,
57
+ total_chunks BIGINT NOT NULL,
58
+ last_modified_at TIMESTAMPTZ NOT NULL,
59
+ metadata JSONB NOT NULL,
60
+ state VARCHAR NOT NULL,
61
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
62
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
63
+ );
64
+
65
+
66
+ CREATE OR REPLACE FUNCTION update_code_files_updated_at()
67
+ RETURNS TRIGGER AS \$\$
68
+ BEGIN
69
+ NEW.updated_at = NOW();
70
+ RETURN NEW;
71
+ END;
72
+ \$\$ LANGUAGE plpgsql;
73
+
74
+ CREATE TRIGGER trg_code_files_updated_at
75
+ BEFORE UPDATE ON code_files
76
+ FOR EACH ROW
77
+ EXECUTE FUNCTION update_code_files_updated_at();
78
+ `);
79
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
80
+ -- Source: 1f72617e51bc07fb
81
+ -- Module: CodeChunkStore
82
+
83
+ CREATE TABLE IF NOT EXISTS code_chunks (
84
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
85
+ code_file_id UUID NOT NULL,
86
+ knowledge_base_id UUID NOT NULL,
87
+ project_id UUID NOT NULL,
88
+ content VARCHAR NOT NULL,
89
+ start_line BIGINT NOT NULL,
90
+ end_line BIGINT NOT NULL,
91
+ chunk_index BIGINT NOT NULL,
92
+ language VARCHAR NOT NULL,
93
+ symbol_name VARCHAR NOT NULL,
94
+ symbol_type VARCHAR NOT NULL,
95
+ metadata JSONB NOT NULL,
96
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
97
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
98
+ );
99
+
100
+
101
+ CREATE OR REPLACE FUNCTION update_code_chunks_updated_at()
102
+ RETURNS TRIGGER AS \$\$
103
+ BEGIN
104
+ NEW.updated_at = NOW();
105
+ RETURN NEW;
106
+ END;
107
+ \$\$ LANGUAGE plpgsql;
108
+
109
+ CREATE TRIGGER trg_code_chunks_updated_at
110
+ BEFORE UPDATE ON code_chunks
111
+ FOR EACH ROW
112
+ EXECUTE FUNCTION update_code_chunks_updated_at();
113
+ `);
114
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
115
+ -- Source: 1f72617e51bc07fb
116
+ -- Module: MemoryEntryStore
117
+
118
+ CREATE TABLE IF NOT EXISTS memory_entrys (
119
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
120
+ session_id UUID NOT NULL,
121
+ project_id UUID NOT NULL,
122
+ agent_id UUID NOT NULL,
123
+ memory_type VARCHAR NOT NULL,
124
+ content VARCHAR NOT NULL,
125
+ importance DOUBLE PRECISION NOT NULL,
126
+ access_count BIGINT NOT NULL,
127
+ last_accessed_at TIMESTAMPTZ NOT NULL,
128
+ expires_at TIMESTAMPTZ NOT NULL,
129
+ metadata JSONB NOT NULL,
130
+ state VARCHAR NOT NULL,
131
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
132
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
133
+ );
134
+
135
+
136
+ CREATE OR REPLACE FUNCTION update_memory_entrys_updated_at()
137
+ RETURNS TRIGGER AS \$\$
138
+ BEGIN
139
+ NEW.updated_at = NOW();
140
+ RETURN NEW;
141
+ END;
142
+ \$\$ LANGUAGE plpgsql;
143
+
144
+ CREATE TRIGGER trg_memory_entrys_updated_at
145
+ BEFORE UPDATE ON memory_entrys
146
+ FOR EACH ROW
147
+ EXECUTE FUNCTION update_memory_entrys_updated_at();
148
+ `);
149
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
150
+ -- Source: 1f72617e51bc07fb
151
+ -- Module: IndexingJobStore
152
+
153
+ CREATE TABLE IF NOT EXISTS indexing_jobs (
154
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
155
+ knowledge_base_id UUID NOT NULL,
156
+ project_id UUID NOT NULL,
157
+ job_type VARCHAR NOT NULL,
158
+ file_paths JSONB NOT NULL,
159
+ files_total BIGINT NOT NULL,
160
+ files_processed BIGINT NOT NULL,
161
+ chunks_total BIGINT NOT NULL,
162
+ chunks_embedded BIGINT NOT NULL,
163
+ error VARCHAR NOT NULL,
164
+ state VARCHAR NOT NULL,
165
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
166
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
167
+ );
168
+
169
+
170
+ CREATE OR REPLACE FUNCTION update_indexing_jobs_updated_at()
171
+ RETURNS TRIGGER AS \$\$
172
+ BEGIN
173
+ NEW.updated_at = NOW();
174
+ RETURN NEW;
175
+ END;
176
+ \$\$ LANGUAGE plpgsql;
177
+
178
+ CREATE TRIGGER trg_indexing_jobs_updated_at
179
+ BEFORE UPDATE ON indexing_jobs
180
+ FOR EACH ROW
181
+ EXECUTE FUNCTION update_indexing_jobs_updated_at();
182
+ `);
183
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
184
+ -- Source: 1f72617e51bc07fb
185
+ -- Module: KnowledgeBaseStore
186
+
187
+ CREATE TABLE IF NOT EXISTS knowledge_bases (
188
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
189
+ project_id UUID NOT NULL,
190
+ name VARCHAR NOT NULL,
191
+ description VARCHAR NOT NULL,
192
+ embedding_model VARCHAR NOT NULL,
193
+ embedding_dimensions BIGINT NOT NULL,
194
+ chunk_strategy VARCHAR NOT NULL,
195
+ chunk_size BIGINT NOT NULL,
196
+ chunk_overlap BIGINT NOT NULL,
197
+ total_files BIGINT NOT NULL,
198
+ total_chunks BIGINT NOT NULL,
199
+ last_indexed_at TIMESTAMPTZ NOT NULL,
200
+ state VARCHAR NOT NULL,
201
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
202
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
203
+ );
204
+
205
+
206
+ CREATE OR REPLACE FUNCTION update_knowledge_bases_updated_at()
207
+ RETURNS TRIGGER AS \$\$
208
+ BEGIN
209
+ NEW.updated_at = NOW();
210
+ RETURN NEW;
211
+ END;
212
+ \$\$ LANGUAGE plpgsql;
213
+
214
+ CREATE TRIGGER trg_knowledge_bases_updated_at
215
+ BEFORE UPDATE ON knowledge_bases
216
+ FOR EACH ROW
217
+ EXECUTE FUNCTION update_knowledge_bases_updated_at();
218
+ `);
219
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
220
+ -- Source: 1f72617e51bc07fb
221
+ -- Module: CodeFileStore
222
+
223
+ CREATE TABLE IF NOT EXISTS code_files (
224
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
225
+ knowledge_base_id UUID NOT NULL,
226
+ project_id UUID NOT NULL,
227
+ file_path VARCHAR NOT NULL,
228
+ language VARCHAR NOT NULL,
229
+ file_hash VARCHAR NOT NULL,
230
+ file_size_bytes BIGINT NOT NULL,
231
+ total_chunks BIGINT NOT NULL,
232
+ last_modified_at TIMESTAMPTZ NOT NULL,
233
+ metadata JSONB NOT NULL,
234
+ state VARCHAR NOT NULL,
235
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
236
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
237
+ );
238
+
239
+
240
+ CREATE OR REPLACE FUNCTION update_code_files_updated_at()
241
+ RETURNS TRIGGER AS \$\$
242
+ BEGIN
243
+ NEW.updated_at = NOW();
244
+ RETURN NEW;
245
+ END;
246
+ \$\$ LANGUAGE plpgsql;
247
+
248
+ CREATE TRIGGER trg_code_files_updated_at
249
+ BEFORE UPDATE ON code_files
250
+ FOR EACH ROW
251
+ EXECUTE FUNCTION update_code_files_updated_at();
252
+ `);
253
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
254
+ -- Source: 1f72617e51bc07fb
255
+ -- Module: CodeChunkStore
256
+
257
+ CREATE TABLE IF NOT EXISTS code_chunks (
258
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
259
+ code_file_id UUID NOT NULL,
260
+ knowledge_base_id UUID NOT NULL,
261
+ project_id UUID NOT NULL,
262
+ content VARCHAR NOT NULL,
263
+ start_line BIGINT NOT NULL,
264
+ end_line BIGINT NOT NULL,
265
+ chunk_index BIGINT NOT NULL,
266
+ language VARCHAR NOT NULL,
267
+ symbol_name VARCHAR NOT NULL,
268
+ symbol_type VARCHAR NOT NULL,
269
+ metadata JSONB NOT NULL,
270
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
271
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
272
+ );
273
+
274
+
275
+ CREATE OR REPLACE FUNCTION update_code_chunks_updated_at()
276
+ RETURNS TRIGGER AS \$\$
277
+ BEGIN
278
+ NEW.updated_at = NOW();
279
+ RETURN NEW;
280
+ END;
281
+ \$\$ LANGUAGE plpgsql;
282
+
283
+ CREATE TRIGGER trg_code_chunks_updated_at
284
+ BEFORE UPDATE ON code_chunks
285
+ FOR EACH ROW
286
+ EXECUTE FUNCTION update_code_chunks_updated_at();
287
+ `);
288
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
289
+ -- Source: 1f72617e51bc07fb
290
+ -- Module: MemoryEntryStore
291
+
292
+ CREATE TABLE IF NOT EXISTS memory_entrys (
293
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
294
+ session_id UUID NOT NULL,
295
+ project_id UUID NOT NULL,
296
+ agent_id UUID NOT NULL,
297
+ memory_type VARCHAR NOT NULL,
298
+ content VARCHAR NOT NULL,
299
+ importance DOUBLE PRECISION NOT NULL,
300
+ access_count BIGINT NOT NULL,
301
+ last_accessed_at TIMESTAMPTZ NOT NULL,
302
+ expires_at TIMESTAMPTZ NOT NULL,
303
+ metadata JSONB NOT NULL,
304
+ state VARCHAR NOT NULL,
305
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
306
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
307
+ );
308
+
309
+
310
+ CREATE OR REPLACE FUNCTION update_memory_entrys_updated_at()
311
+ RETURNS TRIGGER AS \$\$
312
+ BEGIN
313
+ NEW.updated_at = NOW();
314
+ RETURN NEW;
315
+ END;
316
+ \$\$ LANGUAGE plpgsql;
317
+
318
+ CREATE TRIGGER trg_memory_entrys_updated_at
319
+ BEFORE UPDATE ON memory_entrys
320
+ FOR EACH ROW
321
+ EXECUTE FUNCTION update_memory_entrys_updated_at();
322
+ `);
323
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
324
+ -- Source: 1f72617e51bc07fb
325
+ -- Module: IndexingJobStore
326
+
327
+ CREATE TABLE IF NOT EXISTS indexing_jobs (
328
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
329
+ knowledge_base_id UUID NOT NULL,
330
+ project_id UUID NOT NULL,
331
+ job_type VARCHAR NOT NULL,
332
+ file_paths JSONB NOT NULL,
333
+ files_total BIGINT NOT NULL,
334
+ files_processed BIGINT NOT NULL,
335
+ chunks_total BIGINT NOT NULL,
336
+ chunks_embedded BIGINT NOT NULL,
337
+ error VARCHAR NOT NULL,
338
+ state VARCHAR NOT NULL,
339
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
340
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
341
+ );
342
+
343
+
344
+ CREATE OR REPLACE FUNCTION update_indexing_jobs_updated_at()
345
+ RETURNS TRIGGER AS \$\$
346
+ BEGIN
347
+ NEW.updated_at = NOW();
348
+ RETURN NEW;
349
+ END;
350
+ \$\$ LANGUAGE plpgsql;
351
+
352
+ CREATE TRIGGER trg_indexing_jobs_updated_at
353
+ BEFORE UPDATE ON indexing_jobs
354
+ FOR EACH ROW
355
+ EXECUTE FUNCTION update_indexing_jobs_updated_at();
356
+ `);
357
+ console.log("Migrations complete.");
358
+ } finally {
359
+ client.release();
360
+ await pool.end();
361
+ }
362
+ }
363
+
364
+ migrate().catch(e => { console.error(e); process.exit(1); });
@@ -0,0 +1,108 @@
1
+ // Generated by BoneScript compiler. DO NOT EDIT.
2
+ // Migration diff utility — compares two IR snapshots and produces ALTER statements.
3
+
4
+ import * as fs from "fs";
5
+
6
+ interface Field {
7
+ name: string;
8
+ type: string;
9
+ nullable: boolean;
10
+ }
11
+
12
+ interface Model {
13
+ name: string;
14
+ fields: Field[];
15
+ primary_key: string;
16
+ }
17
+
18
+ export function diffModels(oldModels: Model[], newModels: Model[]): string[] {
19
+ const statements: string[] = [];
20
+ const oldByName = new Map(oldModels.map(m => [m.name, m]));
21
+ const newByName = new Map(newModels.map(m => [m.name, m]));
22
+
23
+ // New tables
24
+ for (const [name, model] of newByName) {
25
+ if (!oldByName.has(name)) {
26
+ const tableName = toSnake(name) + "s";
27
+ statements.push(`-- New table: ${tableName}`);
28
+ statements.push(`-- (Generated by previous migration)`);
29
+ }
30
+ }
31
+
32
+ // Removed tables (warn but don't auto-drop)
33
+ for (const [name] of oldByName) {
34
+ if (!newByName.has(name)) {
35
+ const tableName = toSnake(name) + "s";
36
+ statements.push(`-- WARNING: Table ${tableName} no longer in schema. Manual DROP required.`);
37
+ }
38
+ }
39
+
40
+ // Modified tables
41
+ for (const [name, newModel] of newByName) {
42
+ const oldModel = oldByName.get(name);
43
+ if (!oldModel) continue;
44
+
45
+ const tableName = toSnake(name) + "s";
46
+ const oldFields = new Map(oldModel.fields.map(f => [f.name, f]));
47
+ const newFields = new Map(newModel.fields.map(f => [f.name, f]));
48
+
49
+ // New columns (backward-compatible)
50
+ for (const [fname, field] of newFields) {
51
+ if (!oldFields.has(fname)) {
52
+ const sqlType = mapType(field.type);
53
+ const nullability = field.nullable ? "" : " NOT NULL DEFAULT (CASE WHEN false THEN NULL ELSE NULL END)";
54
+ statements.push(`ALTER TABLE ${tableName} ADD COLUMN ${fname} ${sqlType}${nullability};`);
55
+ }
56
+ }
57
+
58
+ // Removed columns (NOT auto-dropped — backward compat)
59
+ for (const [fname] of oldFields) {
60
+ if (!newFields.has(fname)) {
61
+ statements.push(`-- WARNING: Column ${tableName}.${fname} removed from schema. Run manually: ALTER TABLE ${tableName} DROP COLUMN ${fname};`);
62
+ }
63
+ }
64
+
65
+ // Type changes
66
+ for (const [fname, newField] of newFields) {
67
+ const oldField = oldFields.get(fname);
68
+ if (!oldField) continue;
69
+ if (oldField.type !== newField.type) {
70
+ const sqlType = mapType(newField.type);
71
+ statements.push(`ALTER TABLE ${tableName} ALTER COLUMN ${fname} TYPE ${sqlType};`);
72
+ }
73
+ }
74
+ }
75
+
76
+ return statements;
77
+ }
78
+
79
+ function toSnake(s: string): string {
80
+ return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
81
+ }
82
+
83
+ function mapType(t: string): string {
84
+ const map: Record<string, string> = {
85
+ string: "VARCHAR", uint: "BIGINT", int: "BIGINT", float: "DOUBLE PRECISION",
86
+ bool: "BOOLEAN", timestamp: "TIMESTAMPTZ", uuid: "UUID", bytes: "BYTEA", json: "JSONB",
87
+ };
88
+ return map[t] || "JSONB";
89
+ }
90
+
91
+ if (require.main === module) {
92
+ const oldFile = process.argv[2];
93
+ const newFile = process.argv[3];
94
+ if (!oldFile || !newFile) {
95
+ console.error("Usage: node migration-diff.js <old-ir.json> <new-ir.json>");
96
+ process.exit(1);
97
+ }
98
+ const oldIR = JSON.parse(fs.readFileSync(oldFile, "utf-8"));
99
+ const newIR = JSON.parse(fs.readFileSync(newFile, "utf-8"));
100
+
101
+ const oldModels: Model[] = [];
102
+ const newModels: Model[] = [];
103
+ for (const sys of oldIR) for (const mod of sys.modules) for (const m of mod.models) oldModels.push(m);
104
+ for (const sys of newIR) for (const mod of sys.modules) for (const m of mod.models) newModels.push(m);
105
+
106
+ const diff = diffModels(oldModels, newModels);
107
+ console.log(diff.join("\n"));
108
+ }