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,352 @@
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: d2ab887ef3d842fd
11
+ -- Module: AgentStore
12
+
13
+ CREATE TABLE IF NOT EXISTS agents (
14
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
15
+ session_id UUID NOT NULL,
16
+ model_id VARCHAR NOT NULL,
17
+ provider_id VARCHAR NOT NULL,
18
+ system_prompt VARCHAR NOT NULL,
19
+ temperature DOUBLE PRECISION NOT NULL,
20
+ max_tokens BIGINT NOT NULL,
21
+ context_window_used BIGINT NOT NULL,
22
+ context_window_max BIGINT NOT NULL,
23
+ total_cost_usd DOUBLE PRECISION NOT NULL,
24
+ total_tokens_in BIGINT NOT NULL,
25
+ total_tokens_out BIGINT NOT NULL,
26
+ config JSONB NOT NULL,
27
+ state VARCHAR NOT NULL,
28
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
29
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
30
+ );
31
+
32
+
33
+ CREATE OR REPLACE FUNCTION update_agents_updated_at()
34
+ RETURNS TRIGGER AS \$\$
35
+ BEGIN
36
+ NEW.updated_at = NOW();
37
+ RETURN NEW;
38
+ END;
39
+ \$\$ LANGUAGE plpgsql;
40
+
41
+ CREATE TRIGGER trg_agents_updated_at
42
+ BEFORE UPDATE ON agents
43
+ FOR EACH ROW
44
+ EXECUTE FUNCTION update_agents_updated_at();
45
+ `);
46
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
47
+ -- Source: d2ab887ef3d842fd
48
+ -- Module: TaskStore
49
+
50
+ CREATE TABLE IF NOT EXISTS tasks (
51
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
52
+ agent_id UUID NOT NULL,
53
+ session_id UUID NOT NULL,
54
+ description VARCHAR NOT NULL,
55
+ priority BIGINT NOT NULL,
56
+ state VARCHAR NOT NULL,
57
+ result JSONB NOT NULL,
58
+ error VARCHAR NOT NULL,
59
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
60
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
61
+ );
62
+
63
+
64
+ CREATE OR REPLACE FUNCTION update_tasks_updated_at()
65
+ RETURNS TRIGGER AS \$\$
66
+ BEGIN
67
+ NEW.updated_at = NOW();
68
+ RETURN NEW;
69
+ END;
70
+ \$\$ LANGUAGE plpgsql;
71
+
72
+ CREATE TRIGGER trg_tasks_updated_at
73
+ BEFORE UPDATE ON tasks
74
+ FOR EACH ROW
75
+ EXECUTE FUNCTION update_tasks_updated_at();
76
+ `);
77
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
78
+ -- Source: d2ab887ef3d842fd
79
+ -- Module: PlanStore
80
+
81
+ CREATE TABLE IF NOT EXISTS plans (
82
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
83
+ session_id UUID NOT NULL,
84
+ agent_id UUID NOT NULL,
85
+ task_id UUID NOT NULL,
86
+ steps JSONB NOT NULL,
87
+ rationale VARCHAR NOT NULL,
88
+ estimated_tokens BIGINT NOT NULL,
89
+ state VARCHAR NOT NULL,
90
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
91
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
92
+ );
93
+
94
+
95
+ CREATE OR REPLACE FUNCTION update_plans_updated_at()
96
+ RETURNS TRIGGER AS \$\$
97
+ BEGIN
98
+ NEW.updated_at = NOW();
99
+ RETURN NEW;
100
+ END;
101
+ \$\$ LANGUAGE plpgsql;
102
+
103
+ CREATE TRIGGER trg_plans_updated_at
104
+ BEFORE UPDATE ON plans
105
+ FOR EACH ROW
106
+ EXECUTE FUNCTION update_plans_updated_at();
107
+ `);
108
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
109
+ -- Source: d2ab887ef3d842fd
110
+ -- Module: BuildStepStore
111
+
112
+ CREATE TABLE IF NOT EXISTS build_steps (
113
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
114
+ task_id UUID NOT NULL,
115
+ agent_id UUID NOT NULL,
116
+ session_id UUID NOT NULL,
117
+ step_type VARCHAR NOT NULL,
118
+ description VARCHAR NOT NULL,
119
+ file_path VARCHAR NOT NULL,
120
+ diff VARCHAR NOT NULL,
121
+ result JSONB NOT NULL,
122
+ error VARCHAR NOT NULL,
123
+ order_index BIGINT NOT NULL,
124
+ state VARCHAR NOT NULL,
125
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
126
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
127
+ );
128
+
129
+
130
+ CREATE OR REPLACE FUNCTION update_build_steps_updated_at()
131
+ RETURNS TRIGGER AS \$\$
132
+ BEGIN
133
+ NEW.updated_at = NOW();
134
+ RETURN NEW;
135
+ END;
136
+ \$\$ LANGUAGE plpgsql;
137
+
138
+ CREATE TRIGGER trg_build_steps_updated_at
139
+ BEFORE UPDATE ON build_steps
140
+ FOR EACH ROW
141
+ EXECUTE FUNCTION update_build_steps_updated_at();
142
+ `);
143
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
144
+ -- Source: d2ab887ef3d842fd
145
+ -- Module: ToolCallStore
146
+
147
+ CREATE TABLE IF NOT EXISTS tool_calls (
148
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
149
+ session_id UUID NOT NULL,
150
+ agent_id UUID NOT NULL,
151
+ build_step_id UUID NOT NULL,
152
+ tool_name VARCHAR NOT NULL,
153
+ tool_input JSONB NOT NULL,
154
+ tool_output JSONB NOT NULL,
155
+ error VARCHAR NOT NULL,
156
+ duration_ms BIGINT NOT NULL,
157
+ permission_decision VARCHAR NOT NULL,
158
+ state VARCHAR NOT NULL,
159
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
160
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
161
+ );
162
+
163
+
164
+ CREATE OR REPLACE FUNCTION update_tool_calls_updated_at()
165
+ RETURNS TRIGGER AS \$\$
166
+ BEGIN
167
+ NEW.updated_at = NOW();
168
+ RETURN NEW;
169
+ END;
170
+ \$\$ LANGUAGE plpgsql;
171
+
172
+ CREATE TRIGGER trg_tool_calls_updated_at
173
+ BEFORE UPDATE ON tool_calls
174
+ FOR EACH ROW
175
+ EXECUTE FUNCTION update_tool_calls_updated_at();
176
+ `);
177
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
178
+ -- Source: d2ab887ef3d842fd
179
+ -- Module: AgentInstanceService
180
+
181
+ CREATE TABLE IF NOT EXISTS agent_instances (
182
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
183
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
184
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
185
+ session_id UUID NOT NULL,
186
+ model_id VARCHAR NOT NULL,
187
+ provider_id VARCHAR NOT NULL,
188
+ system_prompt VARCHAR,
189
+ temperature DOUBLE PRECISION,
190
+ max_tokens BIGINT,
191
+ context_window_used BIGINT NOT NULL,
192
+ context_window_max BIGINT NOT NULL,
193
+ total_cost_usd DOUBLE PRECISION NOT NULL,
194
+ total_tokens_in BIGINT NOT NULL,
195
+ total_tokens_out BIGINT NOT NULL,
196
+ config JSONB NOT NULL
197
+ );
198
+
199
+ CREATE INDEX IF NOT EXISTS idx_agent_instances_session_id ON agent_instances (session_id);
200
+
201
+ CREATE OR REPLACE FUNCTION update_agent_instances_updated_at()
202
+ RETURNS TRIGGER AS \$\$
203
+ BEGIN
204
+ NEW.updated_at = NOW();
205
+ RETURN NEW;
206
+ END;
207
+ \$\$ LANGUAGE plpgsql;
208
+
209
+ CREATE TRIGGER trg_agent_instances_updated_at
210
+ BEFORE UPDATE ON agent_instances
211
+ FOR EACH ROW
212
+ EXECUTE FUNCTION update_agent_instances_updated_at();
213
+ `);
214
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
215
+ -- Source: d2ab887ef3d842fd
216
+ -- Module: TaskStore
217
+
218
+ CREATE TABLE IF NOT EXISTS tasks (
219
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
220
+ agent_id UUID NOT NULL,
221
+ session_id UUID NOT NULL,
222
+ description VARCHAR NOT NULL,
223
+ priority BIGINT NOT NULL,
224
+ state VARCHAR NOT NULL,
225
+ result JSONB NOT NULL,
226
+ error VARCHAR NOT NULL,
227
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
228
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
229
+ );
230
+
231
+
232
+ CREATE OR REPLACE FUNCTION update_tasks_updated_at()
233
+ RETURNS TRIGGER AS \$\$
234
+ BEGIN
235
+ NEW.updated_at = NOW();
236
+ RETURN NEW;
237
+ END;
238
+ \$\$ LANGUAGE plpgsql;
239
+
240
+ CREATE TRIGGER trg_tasks_updated_at
241
+ BEFORE UPDATE ON tasks
242
+ FOR EACH ROW
243
+ EXECUTE FUNCTION update_tasks_updated_at();
244
+ `);
245
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
246
+ -- Source: d2ab887ef3d842fd
247
+ -- Module: PlanStore
248
+
249
+ CREATE TABLE IF NOT EXISTS plans (
250
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
251
+ session_id UUID NOT NULL,
252
+ agent_id UUID NOT NULL,
253
+ task_id UUID NOT NULL,
254
+ steps JSONB NOT NULL,
255
+ rationale VARCHAR NOT NULL,
256
+ estimated_tokens BIGINT NOT NULL,
257
+ state VARCHAR NOT NULL,
258
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
259
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
260
+ );
261
+
262
+
263
+ CREATE OR REPLACE FUNCTION update_plans_updated_at()
264
+ RETURNS TRIGGER AS \$\$
265
+ BEGIN
266
+ NEW.updated_at = NOW();
267
+ RETURN NEW;
268
+ END;
269
+ \$\$ LANGUAGE plpgsql;
270
+
271
+ CREATE TRIGGER trg_plans_updated_at
272
+ BEFORE UPDATE ON plans
273
+ FOR EACH ROW
274
+ EXECUTE FUNCTION update_plans_updated_at();
275
+ `);
276
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
277
+ -- Source: d2ab887ef3d842fd
278
+ -- Module: BuildStepStore
279
+
280
+ CREATE TABLE IF NOT EXISTS build_steps (
281
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
282
+ task_id UUID NOT NULL,
283
+ agent_id UUID NOT NULL,
284
+ session_id UUID NOT NULL,
285
+ step_type VARCHAR NOT NULL,
286
+ description VARCHAR NOT NULL,
287
+ file_path VARCHAR NOT NULL,
288
+ diff VARCHAR NOT NULL,
289
+ result JSONB NOT NULL,
290
+ error VARCHAR NOT NULL,
291
+ order_index BIGINT NOT NULL,
292
+ state VARCHAR NOT NULL,
293
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
294
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
295
+ );
296
+
297
+
298
+ CREATE OR REPLACE FUNCTION update_build_steps_updated_at()
299
+ RETURNS TRIGGER AS \$\$
300
+ BEGIN
301
+ NEW.updated_at = NOW();
302
+ RETURN NEW;
303
+ END;
304
+ \$\$ LANGUAGE plpgsql;
305
+
306
+ CREATE TRIGGER trg_build_steps_updated_at
307
+ BEFORE UPDATE ON build_steps
308
+ FOR EACH ROW
309
+ EXECUTE FUNCTION update_build_steps_updated_at();
310
+ `);
311
+ await client.query(`-- Generated by BoneScript compiler. DO NOT EDIT.
312
+ -- Source: d2ab887ef3d842fd
313
+ -- Module: ToolCallStore
314
+
315
+ CREATE TABLE IF NOT EXISTS tool_calls (
316
+ id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
317
+ session_id UUID NOT NULL,
318
+ agent_id UUID NOT NULL,
319
+ build_step_id UUID NOT NULL,
320
+ tool_name VARCHAR NOT NULL,
321
+ tool_input JSONB NOT NULL,
322
+ tool_output JSONB NOT NULL,
323
+ error VARCHAR NOT NULL,
324
+ duration_ms BIGINT NOT NULL,
325
+ permission_decision VARCHAR NOT NULL,
326
+ state VARCHAR NOT NULL,
327
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
328
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
329
+ );
330
+
331
+
332
+ CREATE OR REPLACE FUNCTION update_tool_calls_updated_at()
333
+ RETURNS TRIGGER AS \$\$
334
+ BEGIN
335
+ NEW.updated_at = NOW();
336
+ RETURN NEW;
337
+ END;
338
+ \$\$ LANGUAGE plpgsql;
339
+
340
+ CREATE TRIGGER trg_tool_calls_updated_at
341
+ BEFORE UPDATE ON tool_calls
342
+ FOR EACH ROW
343
+ EXECUTE FUNCTION update_tool_calls_updated_at();
344
+ `);
345
+ console.log("Migrations complete.");
346
+ } finally {
347
+ client.release();
348
+ await pool.end();
349
+ }
350
+ }
351
+
352
+ 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
+ }
@@ -0,0 +1,125 @@
1
+ // Generated by BoneScript compiler.
2
+ // Notification service — fires on event emissions.
3
+ // Configure NOTIFY_PROVIDER=resend|sendgrid|log (default: log)
4
+ // Set NOTIFY_API_KEY and NOTIFY_FROM_EMAIL in .env
5
+
6
+ import { SystemEvent } from "./events";
7
+
8
+ export type NotifyProvider = "resend" | "sendgrid" | "log";
9
+
10
+ const PROVIDER = (process.env.NOTIFY_PROVIDER || "log") as NotifyProvider;
11
+ const API_KEY = process.env.NOTIFY_API_KEY || "";
12
+ const FROM_EMAIL = process.env.NOTIFY_FROM_EMAIL || "noreply@example.com";
13
+
14
+ export interface NotifyMessage {
15
+ to: string;
16
+ subject: string;
17
+ body: string;
18
+ }
19
+
20
+ async function sendEmail(msg: NotifyMessage): Promise<void> {
21
+ if (PROVIDER === "log") {
22
+ console.log(`[notify] ${msg.subject} → ${msg.to}`);
23
+ return;
24
+ }
25
+ if (PROVIDER === "resend") {
26
+ const res = await fetch("https://api.resend.com/emails", {
27
+ method: "POST",
28
+ headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
29
+ body: JSON.stringify({ from: FROM_EMAIL, to: msg.to, subject: msg.subject, html: msg.body }),
30
+ });
31
+ if (!res.ok) throw new Error(`Resend error: ${res.status}`);
32
+ return;
33
+ }
34
+ if (PROVIDER === "sendgrid") {
35
+ const res = await fetch("https://api.sendgrid.com/v3/mail/send", {
36
+ method: "POST",
37
+ headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
38
+ body: JSON.stringify({ personalizations: [{ to: [{ email: msg.to }] }], from: { email: FROM_EMAIL }, subject: msg.subject, content: [{ type: "text/html", value: msg.body }] }),
39
+ });
40
+ if (!res.ok) throw new Error(`SendGrid error: ${res.status}`);
41
+ return;
42
+ }
43
+ }
44
+
45
+ // Handler for AgentStarted
46
+ export async function notifyAgentStarted(event: SystemEvent, recipientEmail: string): Promise<void> {
47
+ await sendEmail({
48
+ to: recipientEmail,
49
+ subject: "AgentStarted notification",
50
+ body: `<p>Event <strong>AgentStarted</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
51
+ });
52
+ }
53
+
54
+ // Handler for AgentCompleted
55
+ export async function notifyAgentCompleted(event: SystemEvent, recipientEmail: string): Promise<void> {
56
+ await sendEmail({
57
+ to: recipientEmail,
58
+ subject: "AgentCompleted notification",
59
+ body: `<p>Event <strong>AgentCompleted</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
60
+ });
61
+ }
62
+
63
+ // Handler for AgentFailed
64
+ export async function notifyAgentFailed(event: SystemEvent, recipientEmail: string): Promise<void> {
65
+ await sendEmail({
66
+ to: recipientEmail,
67
+ subject: "AgentFailed notification",
68
+ body: `<p>Event <strong>AgentFailed</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
69
+ });
70
+ }
71
+
72
+ // Handler for ToolCallRequested
73
+ export async function notifyToolCallRequested(event: SystemEvent, recipientEmail: string): Promise<void> {
74
+ await sendEmail({
75
+ to: recipientEmail,
76
+ subject: "ToolCallRequested notification",
77
+ body: `<p>Event <strong>ToolCallRequested</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
78
+ });
79
+ }
80
+
81
+ // Handler for ToolCallCompleted
82
+ export async function notifyToolCallCompleted(event: SystemEvent, recipientEmail: string): Promise<void> {
83
+ await sendEmail({
84
+ to: recipientEmail,
85
+ subject: "ToolCallCompleted notification",
86
+ body: `<p>Event <strong>ToolCallCompleted</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
87
+ });
88
+ }
89
+
90
+ // Handler for PermissionRequired
91
+ export async function notifyPermissionRequired(event: SystemEvent, recipientEmail: string): Promise<void> {
92
+ await sendEmail({
93
+ to: recipientEmail,
94
+ subject: "PermissionRequired notification",
95
+ body: `<p>Event <strong>PermissionRequired</strong> occurred.</p><pre>${JSON.stringify(event.payload, null, 2)}</pre>`,
96
+ });
97
+ }
98
+
99
+ export function registerNotificationHandlers(eventBus: any): void {
100
+ // TODO: implement recipient lookup per event type
101
+ // eventBus.subscribe("AgentStarted", async (event: SystemEvent) => {
102
+ // const recipientEmail = await lookupRecipient(event);
103
+ // await notifyAgentStarted(event, recipientEmail);
104
+ // });
105
+ // eventBus.subscribe("AgentCompleted", async (event: SystemEvent) => {
106
+ // const recipientEmail = await lookupRecipient(event);
107
+ // await notifyAgentCompleted(event, recipientEmail);
108
+ // });
109
+ // eventBus.subscribe("AgentFailed", async (event: SystemEvent) => {
110
+ // const recipientEmail = await lookupRecipient(event);
111
+ // await notifyAgentFailed(event, recipientEmail);
112
+ // });
113
+ // eventBus.subscribe("ToolCallRequested", async (event: SystemEvent) => {
114
+ // const recipientEmail = await lookupRecipient(event);
115
+ // await notifyToolCallRequested(event, recipientEmail);
116
+ // });
117
+ // eventBus.subscribe("ToolCallCompleted", async (event: SystemEvent) => {
118
+ // const recipientEmail = await lookupRecipient(event);
119
+ // await notifyToolCallCompleted(event, recipientEmail);
120
+ // });
121
+ // eventBus.subscribe("PermissionRequired", async (event: SystemEvent) => {
122
+ // const recipientEmail = await lookupRecipient(event);
123
+ // await notifyPermissionRequired(event, recipientEmail);
124
+ // });
125
+ }