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
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "bonecode",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "BoneCode — a production-grade AI coding agent with BoneScript-generated backend and pgvector RAG",
6
+ "keywords": ["ai", "coding-agent", "llm", "rag", "pgvector", "opencode", "bonescript"],
7
+ "author": "BoneCode Contributors",
8
+ "license": "MIT",
9
+ "homepage": "https://github.com/Doorman11991/bonecode",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/Doorman11991/bonecode.git"
13
+ },
14
+ "main": "dist/cli.js",
15
+ "bin": {
16
+ "bonecode": "./bin/bonecode"
17
+ },
18
+ "files": [
19
+ "bin/",
20
+ "dist/",
21
+ "bone/output/",
22
+ "bone/migrations/",
23
+ "scripts/",
24
+ "src/",
25
+ "compat/",
26
+ "tsconfig.json",
27
+ "ARCHITECTURE.md",
28
+ "README.md"
29
+ ],
30
+ "scripts": {
31
+ "compile": "node --max-old-space-size=512 scripts/compile.js",
32
+ "migrate": "node --max-old-space-size=512 scripts/migrate.js",
33
+ "dev": "ts-node --project tsconfig.json src/server.ts",
34
+ "build": "tsc --project tsconfig.json",
35
+ "start": "node dist/server.js",
36
+ "cli": "ts-node --project tsconfig.json src/cli.ts",
37
+ "lint": "tsc --noEmit"
38
+ },
39
+ "dependencies": {
40
+ "@ai-sdk/anthropic": "1.2.12",
41
+ "@ai-sdk/google": "1.2.18",
42
+ "@ai-sdk/openai": "1.3.22",
43
+ "@modelcontextprotocol/sdk": "1.10.2",
44
+ "ai": "4.3.16",
45
+ "cors": "2.8.5",
46
+ "dotenv": "16.3.1",
47
+ "express": "4.18.2",
48
+ "express-rate-limit": "7.1.5",
49
+ "helmet": "7.1.0",
50
+ "jsonwebtoken": "9.0.2",
51
+ "node-cron": "3.0.3",
52
+ "pg": "8.11.3",
53
+ "uuid": "9.0.0",
54
+ "ws": "8.16.0",
55
+ "zod": "^4.4.3"
56
+ },
57
+ "devDependencies": {
58
+ "@types/cors": "2.8.17",
59
+ "@types/express": "4.17.21",
60
+ "@types/jsonwebtoken": "9.0.5",
61
+ "@types/node": "20.11.0",
62
+ "@types/node-cron": "3.0.11",
63
+ "@types/pg": "8.10.9",
64
+ "@types/uuid": "9.0.7",
65
+ "@types/ws": "8.5.10",
66
+ "ts-node": "10.9.2",
67
+ "typescript": "5.3.3"
68
+ }
69
+ }
@@ -0,0 +1,34 @@
1
+ require("dotenv").config();
2
+ const { Pool } = require("pg");
3
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
4
+
5
+ (async () => {
6
+ // Find the benchmark session
7
+ const r = await pool.query(
8
+ "SELECT id, title, state FROM sessions WHERE title LIKE $1 ORDER BY created_at DESC LIMIT 5",
9
+ ["%Benchmark%"]
10
+ );
11
+ console.log("Benchmark sessions:", r.rows);
12
+
13
+ if (r.rows[0]) {
14
+ const sid = r.rows[0].id;
15
+ const msgs = await pool.query(
16
+ "SELECT id, role, tokens_input, tokens_output FROM messages WHERE session_id = $1 ORDER BY created_at",
17
+ [sid]
18
+ );
19
+ console.log("\nMessages:", msgs.rows.length);
20
+ for (const m of msgs.rows) {
21
+ const parts = await pool.query(
22
+ "SELECT part_type, length(data::text) as data_len FROM parts WHERE message_id = $1",
23
+ [m.id]
24
+ );
25
+ console.log(
26
+ " ", m.role,
27
+ "tokens_in:", m.tokens_input,
28
+ "tokens_out:", m.tokens_output,
29
+ "parts:", parts.rows.map(p => p.part_type + ":" + p.data_len).join(", ")
30
+ );
31
+ }
32
+ }
33
+ await pool.end();
34
+ })().catch(e => { console.error(e.message); process.exit(1); });
@@ -0,0 +1,24 @@
1
+ require("dotenv").config();
2
+ const { streamText } = require("ai");
3
+ const { createOpenAI } = require("@ai-sdk/openai");
4
+
5
+ const model = createOpenAI({
6
+ apiKey: process.env.OPENAI_API_KEY || "not-needed",
7
+ baseURL: process.env.OPENAI_BASE_URL,
8
+ })(process.env.DEFAULT_MODEL);
9
+
10
+ (async () => {
11
+ console.log("Checking finish event structure...");
12
+ const r = streamText({
13
+ model,
14
+ messages: [{ role: "user", content: "Say hi in one word." }],
15
+ maxTokens: 20,
16
+ });
17
+
18
+ for await (const e of r.fullStream) {
19
+ if (e.type === "finish" || e.type === "step-finish") {
20
+ console.log(`\nEVENT TYPE: ${e.type}`);
21
+ console.log("FULL EVENT:", JSON.stringify(e, null, 2));
22
+ }
23
+ }
24
+ })().catch(e => console.error("Error:", e.message));
@@ -0,0 +1,15 @@
1
+ require("dotenv").config();
2
+ const { Pool } = require("pg");
3
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
4
+ (async () => {
5
+ const sessR = await pool.query("SELECT id FROM sessions ORDER BY created_at DESC LIMIT 1");
6
+ const sid = sessR.rows[0].id;
7
+ console.log("Session:", sid);
8
+ const msgs = await pool.query("SELECT id, role FROM messages WHERE session_id = $1 ORDER BY created_at", [sid]);
9
+ for (const msg of msgs.rows) {
10
+ const parts = await pool.query("SELECT part_type, data FROM parts WHERE message_id = $1 ORDER BY created_at", [msg.id]);
11
+ const partSummary = parts.rows.map(p => p.part_type + ":" + JSON.stringify(p.data).slice(0, 80)).join(" | ");
12
+ console.log(msg.role, ":", partSummary || "(no parts)");
13
+ }
14
+ await pool.end();
15
+ })().catch(e => console.error(e.message));
@@ -0,0 +1,79 @@
1
+ /**
2
+ * BoneCode compile script
3
+ * Compiles all .bone files and emits output to bone/output/
4
+ * Run: node scripts/compile.js
5
+ */
6
+
7
+ const { Lexer } = require("../compiler/dist/lexer.js");
8
+ const { Parser } = require("../compiler/dist/parser.js");
9
+ const { TypeChecker } = require("../compiler/dist/typechecker.js");
10
+ const { Lowering } = require("../compiler/dist/lowering.js");
11
+ const { FullEmitter } = require("../compiler/dist/emit_full.js");
12
+ const crypto = require("crypto");
13
+ const fs = require("fs");
14
+ const path = require("path");
15
+
16
+ // Resolve compiler path relative to this script
17
+ const COMPILER_DIR = path.resolve(__dirname, "../compiler");
18
+ const BONE_DIR = path.resolve(__dirname, "../bone");
19
+ const OUTPUT_DIR = path.resolve(__dirname, "../bone/output");
20
+
21
+ // Patch require to find compiler modules
22
+ const Module = require("module");
23
+ const originalResolve = Module._resolveFilename;
24
+ Module._resolveFilename = function (request, parent, isMain, options) {
25
+ if (request.startsWith("./") || request.startsWith("../")) {
26
+ return originalResolve.call(this, request, parent, isMain, options);
27
+ }
28
+ return originalResolve.call(this, request, parent, isMain, options);
29
+ };
30
+
31
+ const DOMAINS = ["session", "agent", "rag", "workspace"];
32
+ let totalFiles = 0;
33
+ let errors = 0;
34
+
35
+ for (const domain of DOMAINS) {
36
+ const bonePath = path.join(BONE_DIR, `${domain}.bone`);
37
+ if (!fs.existsSync(bonePath)) {
38
+ console.error(` SKIP: ${domain}.bone not found`);
39
+ continue;
40
+ }
41
+
42
+ const src = fs.readFileSync(bonePath, "utf-8");
43
+ process.stdout.write(` Compiling ${domain}.bone ... `);
44
+
45
+ try {
46
+ const tokens = new Lexer(src).tokenize();
47
+ const ast = new Parser(tokens).parse();
48
+
49
+ const typeErrors = new TypeChecker().check(ast);
50
+ if (typeErrors.length > 0) {
51
+ console.error(`FAILED (${typeErrors.length} type errors)`);
52
+ for (const e of typeErrors.slice(0, 5)) {
53
+ console.error(` ${e.code} at ${e.loc.line}:${e.loc.column}: ${e.message}`);
54
+ }
55
+ errors++;
56
+ continue;
57
+ }
58
+
59
+ const hash = crypto.createHash("sha256").update(src).digest("hex").slice(0, 16);
60
+ const ir = new Lowering().lower(ast, hash);
61
+ const files = new FullEmitter().emit(ir[0], { noSdk: false, noOpenApi: false, noSeed: true });
62
+
63
+ const outDir = path.join(OUTPUT_DIR, domain);
64
+ for (const file of files) {
65
+ const outPath = path.join(outDir, file.path);
66
+ fs.mkdirSync(path.dirname(outPath), { recursive: true });
67
+ fs.writeFileSync(outPath, file.content, "utf-8");
68
+ }
69
+
70
+ totalFiles += files.length;
71
+ console.log(`OK (${files.length} files)`);
72
+ } catch (e) {
73
+ console.error(`FAILED: ${e.message}`);
74
+ errors++;
75
+ }
76
+ }
77
+
78
+ console.log(`\n${errors === 0 ? "✓" : "✗"} Compiled ${DOMAINS.length - errors}/${DOMAINS.length} domains, ${totalFiles} total files`);
79
+ if (errors > 0) process.exit(1);
@@ -0,0 +1,53 @@
1
+ $src = "c:\Users\savag\Downloads\ZopenCode\opencode example\opencode-dev\packages\opencode\src"
2
+ $dst = "c:\Users\savag\Downloads\ZopenCode\BoneCode\src\engine"
3
+
4
+ $dirs = @("tool", "lsp", "format", "skill", "file", "permission", "pty", "mcp", "snapshot", "util", "patch", "image", "git", "shell", "question", "command", "background", "reference", "sync", "share", "worktree", "acp", "bus", "effect", "env", "id", "ide", "installation", "plugin", "project", "auth", "account", "control-plane")
5
+
6
+ foreach ($d in $dirs) {
7
+ $srcPath = Join-Path $src $d
8
+ $dstPath = Join-Path $dst $d
9
+ if (Test-Path $srcPath) {
10
+ Copy-Item -Recurse -Force $srcPath $dstPath
11
+ Write-Host "Copied $d"
12
+ }
13
+ }
14
+
15
+ $sessionFiles = @("compaction.ts","retry.ts","overflow.ts","status.ts","instruction.ts","summary.ts","revert.ts","run-state.ts","message-v2.ts","message-error.ts","message.ts","schema.ts","session.ts","session.sql.ts","todo.ts","llm.ts","processor.ts","system.ts")
16
+ New-Item -ItemType Directory -Force -Path "$dst\session" | Out-Null
17
+ New-Item -ItemType Directory -Force -Path "$dst\session\prompt" | Out-Null
18
+ foreach ($f in $sessionFiles) {
19
+ $srcFile = Join-Path $src "session\$f"
20
+ if (Test-Path $srcFile) {
21
+ Copy-Item -Force $srcFile "$dst\session\$f"
22
+ Write-Host "Copied session/$f"
23
+ }
24
+ }
25
+ if (Test-Path "$src\session\prompt") {
26
+ Copy-Item -Recurse -Force "$src\session\prompt\*" "$dst\session\prompt\"
27
+ Write-Host "Copied session/prompt/"
28
+ }
29
+
30
+ New-Item -ItemType Directory -Force -Path "$dst\provider" | Out-Null
31
+ Copy-Item -Recurse -Force "$src\provider\*" "$dst\provider\"
32
+ Write-Host "Copied provider/"
33
+
34
+ New-Item -ItemType Directory -Force -Path "$dst\agent" | Out-Null
35
+ Copy-Item -Recurse -Force "$src\agent\*" "$dst\agent\"
36
+ Write-Host "Copied agent/"
37
+
38
+ New-Item -ItemType Directory -Force -Path "$dst\config" | Out-Null
39
+ Copy-Item -Recurse -Force "$src\config\*" "$dst\config\"
40
+ Write-Host "Copied config/"
41
+
42
+ # Top-level files
43
+ $topFiles = @("index.ts","node.ts","temporary.ts","event-v2-bridge.ts","data-migration.ts")
44
+ foreach ($f in $topFiles) {
45
+ $srcFile = Join-Path $src $f
46
+ if (Test-Path $srcFile) {
47
+ Copy-Item -Force $srcFile "$dst\$f"
48
+ Write-Host "Copied $f"
49
+ }
50
+ }
51
+
52
+ Write-Host "`nDone. Total files:"
53
+ (Get-ChildItem -Recurse $dst -File).Count
@@ -0,0 +1,129 @@
1
+ -- Recreate hybrid search functions with vector(768)
2
+
3
+ CREATE OR REPLACE FUNCTION bonecode_hybrid_search(
4
+ p_knowledge_base_id UUID,
5
+ p_query_embedding vector(768),
6
+ p_query_text TEXT,
7
+ p_language TEXT DEFAULT NULL,
8
+ p_symbol_type TEXT DEFAULT NULL,
9
+ p_limit INT DEFAULT 20
10
+ )
11
+ RETURNS TABLE (
12
+ chunk_id UUID,
13
+ code_file_id UUID,
14
+ file_path TEXT,
15
+ content TEXT,
16
+ start_line BIGINT,
17
+ end_line BIGINT,
18
+ language TEXT,
19
+ symbol_name TEXT,
20
+ symbol_type TEXT,
21
+ vector_score FLOAT,
22
+ text_score FLOAT,
23
+ rrf_score FLOAT
24
+ )
25
+ LANGUAGE SQL STABLE
26
+ AS $$
27
+ WITH
28
+ vector_results AS (
29
+ SELECT cc.id AS chunk_id, cc.code_file_id, cf.file_path, cc.content,
30
+ cc.start_line, cc.end_line, cc.language, cc.symbol_name, cc.symbol_type,
31
+ 1 - (cc.embedding <=> p_query_embedding) AS vector_score,
32
+ ROW_NUMBER() OVER (ORDER BY cc.embedding <=> p_query_embedding) AS vector_rank
33
+ FROM code_chunks cc JOIN code_files cf ON cf.id = cc.code_file_id
34
+ WHERE cc.knowledge_base_id = p_knowledge_base_id AND cc.embedding IS NOT NULL
35
+ AND (p_language IS NULL OR cc.language = p_language)
36
+ AND (p_symbol_type IS NULL OR cc.symbol_type = p_symbol_type)
37
+ ORDER BY cc.embedding <=> p_query_embedding LIMIT p_limit * 2
38
+ ),
39
+ text_results AS (
40
+ SELECT cc.id AS chunk_id, cc.code_file_id, cf.file_path, cc.content,
41
+ cc.start_line, cc.end_line, cc.language, cc.symbol_name, cc.symbol_type,
42
+ ts_rank(to_tsvector('english', cc.content), plainto_tsquery('english', p_query_text)) AS text_score,
43
+ ROW_NUMBER() OVER (ORDER BY ts_rank(to_tsvector('english', cc.content), plainto_tsquery('english', p_query_text)) DESC) AS text_rank
44
+ FROM code_chunks cc JOIN code_files cf ON cf.id = cc.code_file_id
45
+ WHERE cc.knowledge_base_id = p_knowledge_base_id
46
+ AND to_tsvector('english', cc.content) @@ plainto_tsquery('english', p_query_text)
47
+ AND (p_language IS NULL OR cc.language = p_language)
48
+ AND (p_symbol_type IS NULL OR cc.symbol_type = p_symbol_type)
49
+ ORDER BY text_score DESC LIMIT p_limit * 2
50
+ ),
51
+ rrf AS (
52
+ SELECT COALESCE(v.chunk_id, t.chunk_id) AS chunk_id,
53
+ COALESCE(v.code_file_id, t.code_file_id) AS code_file_id,
54
+ COALESCE(v.file_path, t.file_path) AS file_path,
55
+ COALESCE(v.content, t.content) AS content,
56
+ COALESCE(v.start_line, t.start_line) AS start_line,
57
+ COALESCE(v.end_line, t.end_line) AS end_line,
58
+ COALESCE(v.language, t.language) AS language,
59
+ COALESCE(v.symbol_name, t.symbol_name) AS symbol_name,
60
+ COALESCE(v.symbol_type, t.symbol_type) AS symbol_type,
61
+ COALESCE(v.vector_score, 0) AS vector_score,
62
+ COALESCE(t.text_score, 0) AS text_score,
63
+ COALESCE(1.0/(60+v.vector_rank),0) + COALESCE(1.0/(60+t.text_rank),0) AS rrf_score
64
+ FROM vector_results v FULL OUTER JOIN text_results t ON t.chunk_id = v.chunk_id
65
+ )
66
+ SELECT chunk_id, code_file_id, file_path, content, start_line, end_line,
67
+ language, symbol_name, symbol_type, vector_score, text_score, rrf_score
68
+ FROM rrf ORDER BY rrf_score DESC LIMIT p_limit;
69
+ $$;
70
+
71
+ CREATE OR REPLACE FUNCTION bonecode_memory_search(
72
+ p_session_id UUID,
73
+ p_project_id UUID,
74
+ p_query_embedding vector(768),
75
+ p_query_text TEXT,
76
+ p_memory_type TEXT DEFAULT NULL,
77
+ p_limit INT DEFAULT 10
78
+ )
79
+ RETURNS TABLE (
80
+ memory_id UUID,
81
+ memory_type TEXT,
82
+ content TEXT,
83
+ importance FLOAT,
84
+ access_count BIGINT,
85
+ vector_score FLOAT,
86
+ rrf_score FLOAT
87
+ )
88
+ LANGUAGE SQL STABLE
89
+ AS $$
90
+ WITH
91
+ vector_results AS (
92
+ SELECT me.id AS memory_id, me.memory_type, me.content, me.importance, me.access_count,
93
+ 1 - (me.embedding <=> p_query_embedding) AS vector_score,
94
+ ROW_NUMBER() OVER (ORDER BY me.embedding <=> p_query_embedding) AS vector_rank
95
+ FROM memory_entrys me
96
+ WHERE (me.session_id = p_session_id OR me.project_id = p_project_id)
97
+ AND me.state = 'active' AND me.embedding IS NOT NULL
98
+ AND (p_memory_type IS NULL OR me.memory_type = p_memory_type)
99
+ ORDER BY me.embedding <=> p_query_embedding LIMIT p_limit * 2
100
+ ),
101
+ text_results AS (
102
+ SELECT me.id AS memory_id, me.memory_type, me.content, me.importance, me.access_count,
103
+ ts_rank(to_tsvector('english', me.content), plainto_tsquery('english', p_query_text)) AS text_score,
104
+ ROW_NUMBER() OVER (ORDER BY ts_rank(to_tsvector('english', me.content), plainto_tsquery('english', p_query_text)) DESC) AS text_rank
105
+ FROM memory_entrys me
106
+ WHERE (me.session_id = p_session_id OR me.project_id = p_project_id)
107
+ AND me.state = 'active'
108
+ AND to_tsvector('english', me.content) @@ plainto_tsquery('english', p_query_text)
109
+ AND (p_memory_type IS NULL OR me.memory_type = p_memory_type)
110
+ ORDER BY text_score DESC LIMIT p_limit * 2
111
+ ),
112
+ rrf AS (
113
+ SELECT COALESCE(v.memory_id, t.memory_id) AS memory_id,
114
+ COALESCE(v.memory_type, t.memory_type) AS memory_type,
115
+ COALESCE(v.content, t.content) AS content,
116
+ COALESCE(v.importance, t.importance) AS importance,
117
+ COALESCE(v.access_count, t.access_count) AS access_count,
118
+ COALESCE(v.vector_score, 0) AS vector_score,
119
+ COALESCE(1.0/(60+v.vector_rank),0) + COALESCE(1.0/(60+t.text_rank),0) AS rrf_score
120
+ FROM vector_results v FULL OUTER JOIN text_results t ON t.memory_id = v.memory_id
121
+ )
122
+ SELECT memory_id, memory_type, content, importance, access_count, vector_score, rrf_score
123
+ FROM rrf ORDER BY rrf_score DESC, importance DESC LIMIT p_limit;
124
+ $$;
125
+
126
+ CREATE OR REPLACE FUNCTION bonecode_record_memory_access(p_memory_id UUID)
127
+ RETURNS VOID LANGUAGE SQL AS $$
128
+ UPDATE memory_entrys SET access_count = access_count + 1, last_accessed_at = NOW() WHERE id = p_memory_id;
129
+ $$;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * BoneCode migrate script
3
+ * Runs all SQL migrations in order:
4
+ * 1. BoneScript-generated migrations for each domain
5
+ * 2. RAG vector extension (pgvector columns + indexes)
6
+ *
7
+ * Run: node scripts/migrate.js
8
+ * Requires: DATABASE_URL env var
9
+ */
10
+
11
+ require("dotenv").config();
12
+ const { Pool } = require("pg");
13
+ const fs = require("fs");
14
+ const path = require("path");
15
+
16
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
17
+
18
+ async function runMigration(client, label, sql) {
19
+ process.stdout.write(` ${label} ... `);
20
+ try {
21
+ await client.query(sql);
22
+ console.log("OK");
23
+ } catch (e) {
24
+ console.error(`FAILED: ${e.message}`);
25
+ throw e;
26
+ }
27
+ }
28
+
29
+ async function main() {
30
+ console.log("[BoneCode] Running migrations...");
31
+ console.log(` Database: ${process.env.DATABASE_URL || "(DATABASE_URL not set)"}\n`);
32
+
33
+ const client = await pool.connect();
34
+ try {
35
+ // ── Phase 1: Domain migrations (one transaction) ──────────────────────────
36
+ await client.query("BEGIN");
37
+
38
+ const OUTPUT_DIR = path.resolve(__dirname, "../bone/output");
39
+ const DOMAINS = ["session", "agent", "rag", "workspace"];
40
+
41
+ for (const domain of DOMAINS) {
42
+ const migrationsDir = path.join(OUTPUT_DIR, domain, "migrations");
43
+ if (!fs.existsSync(migrationsDir)) {
44
+ console.warn(` SKIP: ${domain} migrations not found (run npm run compile first)`);
45
+ continue;
46
+ }
47
+
48
+ const files = fs.readdirSync(migrationsDir)
49
+ .filter(f => f.endsWith(".sql"))
50
+ .sort();
51
+
52
+ for (const file of files) {
53
+ const sql = fs.readFileSync(path.join(migrationsDir, file), "utf-8");
54
+ await runMigration(client, `${domain}/${file}`, sql);
55
+ }
56
+ }
57
+
58
+ await client.query("COMMIT");
59
+ console.log("\n Phase 1 committed.\n");
60
+
61
+ // ── Phase 2: RAG vector extension (separate transaction) ─────────────────
62
+ const ragVectorsSql = path.resolve(__dirname, "../bone/migrations/rag_vectors.sql");
63
+ if (fs.existsSync(ragVectorsSql)) {
64
+ await client.query("BEGIN");
65
+ const sql = fs.readFileSync(ragVectorsSql, "utf-8");
66
+ await runMigration(client, "rag_vectors.sql (pgvector)", sql);
67
+ await client.query("COMMIT");
68
+ console.log("\n Phase 2 committed.\n");
69
+ }
70
+
71
+ console.log("✓ All migrations complete.");
72
+ } catch (e) {
73
+ await client.query("ROLLBACK").catch(() => {});
74
+ console.error("\n✗ Migration failed. Transaction rolled back.");
75
+ process.exit(1);
76
+ } finally {
77
+ client.release();
78
+ await pool.end();
79
+ }
80
+ }
81
+
82
+ main().catch(e => {
83
+ console.error(e);
84
+ process.exit(1);
85
+ });