@octo-cyber/ai 0.5.5 → 0.5.6

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 (329) hide show
  1. package/dist/shared/IClaudeCodeSessionManager.d.ts +151 -0
  2. package/dist/shared/IClaudeCodeSessionManager.d.ts.map +1 -0
  3. package/dist/shared/IClaudeCodeSessionManager.js +6 -0
  4. package/dist/shared/IClaudeCodeSessionManager.js.map +1 -0
  5. package/dist/src/BranchDecisionEngine.d.ts +73 -0
  6. package/dist/src/BranchDecisionEngine.d.ts.map +1 -0
  7. package/dist/src/BranchDecisionEngine.js +195 -0
  8. package/dist/src/BranchDecisionEngine.js.map +1 -0
  9. package/dist/src/agent/agent-approval.controller.d.ts +20 -0
  10. package/dist/src/agent/agent-approval.controller.d.ts.map +1 -0
  11. package/dist/src/agent/agent-approval.controller.js +101 -0
  12. package/dist/src/agent/agent-approval.controller.js.map +1 -0
  13. package/dist/src/agent/agent-approval.entity.d.ts +15 -0
  14. package/dist/src/agent/agent-approval.entity.d.ts.map +1 -0
  15. package/dist/src/agent/agent-approval.entity.js +63 -0
  16. package/dist/src/agent/agent-approval.entity.js.map +1 -0
  17. package/dist/src/agent/agent-approval.service.d.ts +35 -0
  18. package/dist/src/agent/agent-approval.service.d.ts.map +1 -0
  19. package/dist/src/agent/agent-approval.service.js +109 -0
  20. package/dist/src/agent/agent-approval.service.js.map +1 -0
  21. package/dist/src/agent/agent-gateway.controller.d.ts +30 -0
  22. package/dist/src/agent/agent-gateway.controller.d.ts.map +1 -0
  23. package/dist/src/agent/agent-gateway.controller.js +112 -0
  24. package/dist/src/agent/agent-gateway.controller.js.map +1 -0
  25. package/dist/src/agent/agent-gateway.service.d.ts +33 -0
  26. package/dist/src/agent/agent-gateway.service.d.ts.map +1 -0
  27. package/dist/src/agent/agent-gateway.service.js +84 -0
  28. package/dist/src/agent/agent-gateway.service.js.map +1 -0
  29. package/dist/src/agent/agent-registry.service.d.ts +30 -0
  30. package/dist/src/agent/agent-registry.service.d.ts.map +1 -0
  31. package/dist/src/agent/agent-registry.service.js +45 -0
  32. package/dist/src/agent/agent-registry.service.js.map +1 -0
  33. package/dist/src/agent/agent-run.controller.d.ts +42 -0
  34. package/dist/src/agent/agent-run.controller.d.ts.map +1 -0
  35. package/dist/src/agent/agent-run.controller.js +195 -0
  36. package/dist/src/agent/agent-run.controller.js.map +1 -0
  37. package/dist/src/agent/agent-run.entity.d.ts +35 -0
  38. package/dist/src/agent/agent-run.entity.d.ts.map +1 -0
  39. package/dist/src/agent/agent-run.entity.js +98 -0
  40. package/dist/src/agent/agent-run.entity.js.map +1 -0
  41. package/dist/src/agent/agent-run.service.d.ts +48 -0
  42. package/dist/src/agent/agent-run.service.d.ts.map +1 -0
  43. package/dist/src/agent/agent-run.service.js +155 -0
  44. package/dist/src/agent/agent-run.service.js.map +1 -0
  45. package/dist/src/agent/agent-session.controller.d.ts +20 -0
  46. package/dist/src/agent/agent-session.controller.d.ts.map +1 -0
  47. package/dist/src/agent/agent-session.controller.js +97 -0
  48. package/dist/src/agent/agent-session.controller.js.map +1 -0
  49. package/dist/src/agent/agent-session.entity.d.ts +13 -0
  50. package/dist/src/agent/agent-session.entity.d.ts.map +1 -0
  51. package/dist/src/agent/agent-session.entity.js +57 -0
  52. package/dist/src/agent/agent-session.entity.js.map +1 -0
  53. package/dist/src/agent/agent-session.service.d.ts +38 -0
  54. package/dist/src/agent/agent-session.service.d.ts.map +1 -0
  55. package/dist/src/agent/agent-session.service.js +112 -0
  56. package/dist/src/agent/agent-session.service.js.map +1 -0
  57. package/dist/src/agent/coding-tools.d.ts +7 -0
  58. package/dist/src/agent/coding-tools.d.ts.map +1 -0
  59. package/dist/src/agent/coding-tools.js +181 -0
  60. package/dist/src/agent/coding-tools.js.map +1 -0
  61. package/dist/src/agent/computer-use-tools.d.ts +15 -0
  62. package/dist/src/agent/computer-use-tools.d.ts.map +1 -0
  63. package/dist/src/agent/computer-use-tools.js +256 -0
  64. package/dist/src/agent/computer-use-tools.js.map +1 -0
  65. package/dist/src/agent/external-agent.controller.d.ts +41 -0
  66. package/dist/src/agent/external-agent.controller.d.ts.map +1 -0
  67. package/dist/src/agent/external-agent.controller.js +129 -0
  68. package/dist/src/agent/external-agent.controller.js.map +1 -0
  69. package/dist/src/agent/external-agent.entity.d.ts +22 -0
  70. package/dist/src/agent/external-agent.entity.d.ts.map +1 -0
  71. package/dist/src/agent/external-agent.entity.js +75 -0
  72. package/dist/src/agent/external-agent.entity.js.map +1 -0
  73. package/dist/src/agent/external-agent.service.d.ts +60 -0
  74. package/dist/src/agent/external-agent.service.d.ts.map +1 -0
  75. package/dist/src/agent/external-agent.service.js +143 -0
  76. package/dist/src/agent/external-agent.service.js.map +1 -0
  77. package/dist/src/ai.module.d.ts +22 -0
  78. package/dist/src/ai.module.d.ts.map +1 -0
  79. package/dist/src/ai.module.js +178 -0
  80. package/dist/src/ai.module.js.map +1 -0
  81. package/dist/{cli → src/cli}/adapters/antigravity.adapter.d.ts +2 -0
  82. package/dist/src/cli/adapters/antigravity.adapter.d.ts.map +1 -0
  83. package/dist/{cli → src/cli}/adapters/antigravity.adapter.js +78 -0
  84. package/dist/src/cli/adapters/antigravity.adapter.js.map +1 -0
  85. package/dist/src/cli/adapters/claude-cli.adapter.d.ts.map +1 -0
  86. package/dist/{cli → src/cli}/adapters/claude-cli.adapter.js +2 -0
  87. package/dist/src/cli/adapters/claude-cli.adapter.js.map +1 -0
  88. package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
  89. package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
  90. package/dist/src/cli/adapters/cli-proxy-api.adapter.js +239 -0
  91. package/dist/src/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
  92. package/dist/src/cli/adapters/codex-cli.adapter.d.ts.map +1 -0
  93. package/dist/src/cli/adapters/codex-cli.adapter.js.map +1 -0
  94. package/dist/src/cli/adapters/detect-cli.d.ts.map +1 -0
  95. package/dist/src/cli/adapters/detect-cli.js.map +1 -0
  96. package/dist/src/cli/adapters/gemini-cli.adapter.d.ts.map +1 -0
  97. package/dist/src/cli/adapters/gemini-cli.adapter.js.map +1 -0
  98. package/dist/src/cli/adapters/index.d.ts.map +1 -0
  99. package/dist/src/cli/adapters/index.js.map +1 -0
  100. package/dist/{cli → src/cli}/cli-executor.service.d.ts +2 -0
  101. package/dist/src/cli/cli-executor.service.d.ts.map +1 -0
  102. package/dist/{cli → src/cli}/cli-executor.service.js +21 -1
  103. package/dist/src/cli/cli-executor.service.js.map +1 -0
  104. package/dist/src/cli/cli-registry.service.d.ts.map +1 -0
  105. package/dist/{cli → src/cli}/cli-registry.service.js +3 -1
  106. package/dist/src/cli/cli-registry.service.js.map +1 -0
  107. package/dist/{cli → src/cli}/controllers/ai-cli.controller.d.ts +4 -0
  108. package/dist/src/cli/controllers/ai-cli.controller.d.ts.map +1 -0
  109. package/dist/{cli → src/cli}/controllers/ai-cli.controller.js +33 -4
  110. package/dist/src/cli/controllers/ai-cli.controller.js.map +1 -0
  111. package/dist/{cli → src/cli}/index.d.ts +1 -1
  112. package/dist/src/cli/index.d.ts.map +1 -0
  113. package/dist/src/cli/index.js.map +1 -0
  114. package/dist/{cli → src/cli}/types.d.ts +23 -1
  115. package/dist/src/cli/types.d.ts.map +1 -0
  116. package/dist/{skill → src/cli}/types.js.map +1 -1
  117. package/dist/{cli → src/cli}/workspace.service.d.ts +11 -3
  118. package/dist/src/cli/workspace.service.d.ts.map +1 -0
  119. package/dist/{cli → src/cli}/workspace.service.js +61 -6
  120. package/dist/src/cli/workspace.service.js.map +1 -0
  121. package/dist/src/computer-use/computer-use.controller.d.ts +23 -0
  122. package/dist/src/computer-use/computer-use.controller.d.ts.map +1 -0
  123. package/dist/src/computer-use/computer-use.controller.js +87 -0
  124. package/dist/src/computer-use/computer-use.controller.js.map +1 -0
  125. package/dist/src/index.d.ts +12 -0
  126. package/dist/src/index.d.ts.map +1 -0
  127. package/dist/src/index.js +51 -0
  128. package/dist/src/index.js.map +1 -0
  129. package/dist/src/orchestrator/orchestrator-plan.entity.d.ts +31 -0
  130. package/dist/src/orchestrator/orchestrator-plan.entity.d.ts.map +1 -0
  131. package/dist/src/orchestrator/orchestrator-plan.entity.js +69 -0
  132. package/dist/src/orchestrator/orchestrator-plan.entity.js.map +1 -0
  133. package/dist/src/orchestrator/orchestrator-plan.service.d.ts +27 -0
  134. package/dist/src/orchestrator/orchestrator-plan.service.d.ts.map +1 -0
  135. package/dist/src/orchestrator/orchestrator-plan.service.js +201 -0
  136. package/dist/src/orchestrator/orchestrator-plan.service.js.map +1 -0
  137. package/dist/src/orchestrator/orchestrator.controller.d.ts +29 -0
  138. package/dist/src/orchestrator/orchestrator.controller.d.ts.map +1 -0
  139. package/dist/src/orchestrator/orchestrator.controller.js +144 -0
  140. package/dist/src/orchestrator/orchestrator.controller.js.map +1 -0
  141. package/dist/src/orchestrator/workflow-feedback.entity.d.ts +12 -0
  142. package/dist/src/orchestrator/workflow-feedback.entity.d.ts.map +1 -0
  143. package/dist/src/orchestrator/workflow-feedback.entity.js +49 -0
  144. package/dist/src/orchestrator/workflow-feedback.entity.js.map +1 -0
  145. package/dist/src/orchestrator/workflow-feedback.service.d.ts +14 -0
  146. package/dist/src/orchestrator/workflow-feedback.service.d.ts.map +1 -0
  147. package/dist/src/orchestrator/workflow-feedback.service.js +51 -0
  148. package/dist/src/orchestrator/workflow-feedback.service.js.map +1 -0
  149. package/dist/src/session/claude-code-session-manager.service.d.ts +28 -0
  150. package/dist/src/session/claude-code-session-manager.service.d.ts.map +1 -0
  151. package/dist/src/session/claude-code-session-manager.service.js +177 -0
  152. package/dist/src/session/claude-code-session-manager.service.js.map +1 -0
  153. package/dist/src/skill/controllers/skill-market.controller.d.ts +18 -0
  154. package/dist/src/skill/controllers/skill-market.controller.d.ts.map +1 -0
  155. package/dist/src/skill/controllers/skill-market.controller.js +128 -0
  156. package/dist/src/skill/controllers/skill-market.controller.js.map +1 -0
  157. package/dist/{skill → src/skill}/controllers/skill.controller.d.ts +4 -0
  158. package/dist/src/skill/controllers/skill.controller.d.ts.map +1 -0
  159. package/dist/{skill → src/skill}/controllers/skill.controller.js +31 -0
  160. package/dist/src/skill/controllers/skill.controller.js.map +1 -0
  161. package/dist/src/skill/entities/octo-skill.entity.d.ts.map +1 -0
  162. package/dist/src/skill/entities/octo-skill.entity.js.map +1 -0
  163. package/dist/{skill → src/skill}/index.d.ts +3 -1
  164. package/dist/src/skill/index.d.ts.map +1 -0
  165. package/dist/{skill → src/skill}/index.js +5 -1
  166. package/dist/src/skill/index.js.map +1 -0
  167. package/dist/src/skill/services/skill-generator.service.d.ts.map +1 -0
  168. package/dist/src/skill/services/skill-generator.service.js.map +1 -0
  169. package/dist/{skill → src/skill}/services/skill-installer.service.d.ts +27 -0
  170. package/dist/src/skill/services/skill-installer.service.d.ts.map +1 -0
  171. package/dist/{skill → src/skill}/services/skill-installer.service.js +108 -0
  172. package/dist/src/skill/services/skill-installer.service.js.map +1 -0
  173. package/dist/src/skill/services/skill-market-helpers.d.ts +25 -0
  174. package/dist/src/skill/services/skill-market-helpers.d.ts.map +1 -0
  175. package/dist/src/skill/services/skill-market-helpers.js +22 -0
  176. package/dist/src/skill/services/skill-market-helpers.js.map +1 -0
  177. package/dist/src/skill/services/skill-market.service.d.ts +60 -0
  178. package/dist/src/skill/services/skill-market.service.d.ts.map +1 -0
  179. package/dist/src/skill/services/skill-market.service.js +228 -0
  180. package/dist/src/skill/services/skill-market.service.js.map +1 -0
  181. package/dist/src/skill/services/skill-registry.service.d.ts.map +1 -0
  182. package/dist/{skill → src/skill}/services/skill-registry.service.js +4 -4
  183. package/dist/src/skill/services/skill-registry.service.js.map +1 -0
  184. package/dist/{skill → src/skill}/types.d.ts +32 -1
  185. package/dist/src/skill/types.d.ts.map +1 -0
  186. package/dist/{cli → src/skill}/types.js.map +1 -1
  187. package/dist/src/workflow-design/DocumentExtractorAgent.d.ts +47 -0
  188. package/dist/src/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
  189. package/dist/src/workflow-design/DocumentExtractorAgent.js +118 -0
  190. package/dist/src/workflow-design/DocumentExtractorAgent.js.map +1 -0
  191. package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
  192. package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
  193. package/dist/src/workflow-design/N8nNodeKnowledgeBase.js +362 -0
  194. package/dist/src/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
  195. package/dist/src/workflow-design/OctoAgentClient.d.ts +42 -0
  196. package/dist/src/workflow-design/OctoAgentClient.d.ts.map +1 -0
  197. package/dist/src/workflow-design/OctoAgentClient.js +191 -0
  198. package/dist/src/workflow-design/OctoAgentClient.js.map +1 -0
  199. package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
  200. package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
  201. package/dist/src/workflow-design/WorkflowDesignOrchestrator.js +265 -0
  202. package/dist/src/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
  203. package/dist/src/workflow-design/agents/ActionChainAgent.d.ts +9 -0
  204. package/dist/src/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
  205. package/dist/src/workflow-design/agents/ActionChainAgent.js +79 -0
  206. package/dist/src/workflow-design/agents/ActionChainAgent.js.map +1 -0
  207. package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
  208. package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
  209. package/dist/src/workflow-design/agents/CodeScriptAgent.js +96 -0
  210. package/dist/src/workflow-design/agents/CodeScriptAgent.js.map +1 -0
  211. package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
  212. package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
  213. package/dist/src/workflow-design/agents/LogicFlowAgent.js +78 -0
  214. package/dist/src/workflow-design/agents/LogicFlowAgent.js.map +1 -0
  215. package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
  216. package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
  217. package/dist/src/workflow-design/agents/TriggerAnalystAgent.js +65 -0
  218. package/dist/src/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
  219. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
  220. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
  221. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
  222. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
  223. package/dist/src/workflow-design/index.d.ts +12 -0
  224. package/dist/src/workflow-design/index.d.ts.map +1 -0
  225. package/dist/src/workflow-design/index.js +23 -0
  226. package/dist/src/workflow-design/index.js.map +1 -0
  227. package/dist/src/workflow-design/types.d.ts +155 -0
  228. package/dist/src/workflow-design/types.d.ts.map +1 -0
  229. package/dist/src/workflow-design/types.js +6 -0
  230. package/dist/src/workflow-design/types.js.map +1 -0
  231. package/package.json +20 -14
  232. package/web/components/CreateWorkspaceDialog.tsx +157 -0
  233. package/web/components/DirBrowser.tsx +85 -0
  234. package/web/components/GithubTokenDialog.tsx +152 -0
  235. package/web/components/LocalPathSection.tsx +91 -0
  236. package/web/components/MarketInstallDialog.tsx +196 -0
  237. package/web/components/MarketSkillCard.tsx +74 -0
  238. package/web/components/RepoList.tsx +97 -0
  239. package/web/components/SearchResultsGrid.tsx +55 -0
  240. package/web/components/SkillCard.tsx +4 -1
  241. package/web/components/ToolCard.tsx +88 -0
  242. package/web/components/WorkspaceCard.tsx +146 -0
  243. package/web/components/WorkspaceItem.tsx +65 -0
  244. package/web/components/WorkspaceSelect.tsx +94 -0
  245. package/web/index.ts +18 -1
  246. package/web/manifest.ts +7 -0
  247. package/web/messages/en-US.json +231 -7
  248. package/web/messages/zh-CN.json +234 -7
  249. package/web/pages/AgentMarketPage.tsx +318 -0
  250. package/web/pages/AgentRunsPage.tsx +162 -0
  251. package/web/pages/AgentsPage.tsx +239 -0
  252. package/web/pages/AiCliToolsPage.tsx +17 -128
  253. package/web/pages/ApprovalsPage.tsx +260 -0
  254. package/web/pages/OrchestratorPage.tsx +384 -0
  255. package/web/pages/SessionsPage.tsx +248 -0
  256. package/web/pages/SkillMarketPage.tsx +25 -0
  257. package/web/pages/WorkspaceSection.tsx +13 -113
  258. package/web/pages/WorkspacesPage.tsx +29 -254
  259. package/web/services/agent-approval.service.ts +35 -0
  260. package/web/services/agent-gateway.service.ts +41 -0
  261. package/web/services/agent-run.service.ts +48 -0
  262. package/web/services/agent-session.service.ts +30 -0
  263. package/web/services/ai-cli-service.ts +33 -0
  264. package/web/services/external-agent.service.ts +38 -0
  265. package/web/services/orchestrator.service.ts +52 -0
  266. package/web/services/skill-market-service.ts +88 -0
  267. package/web/services/skill-service.ts +12 -0
  268. package/dist/ai.module.d.ts +0 -4
  269. package/dist/ai.module.d.ts.map +0 -1
  270. package/dist/ai.module.js +0 -59
  271. package/dist/ai.module.js.map +0 -1
  272. package/dist/cli/adapters/antigravity.adapter.d.ts.map +0 -1
  273. package/dist/cli/adapters/antigravity.adapter.js.map +0 -1
  274. package/dist/cli/adapters/claude-cli.adapter.d.ts.map +0 -1
  275. package/dist/cli/adapters/claude-cli.adapter.js.map +0 -1
  276. package/dist/cli/adapters/codex-cli.adapter.d.ts.map +0 -1
  277. package/dist/cli/adapters/codex-cli.adapter.js.map +0 -1
  278. package/dist/cli/adapters/detect-cli.d.ts.map +0 -1
  279. package/dist/cli/adapters/detect-cli.js.map +0 -1
  280. package/dist/cli/adapters/gemini-cli.adapter.d.ts.map +0 -1
  281. package/dist/cli/adapters/gemini-cli.adapter.js.map +0 -1
  282. package/dist/cli/adapters/index.d.ts.map +0 -1
  283. package/dist/cli/adapters/index.js.map +0 -1
  284. package/dist/cli/cli-executor.service.d.ts.map +0 -1
  285. package/dist/cli/cli-executor.service.js.map +0 -1
  286. package/dist/cli/cli-registry.service.d.ts.map +0 -1
  287. package/dist/cli/cli-registry.service.js.map +0 -1
  288. package/dist/cli/controllers/ai-cli.controller.d.ts.map +0 -1
  289. package/dist/cli/controllers/ai-cli.controller.js.map +0 -1
  290. package/dist/cli/index.d.ts.map +0 -1
  291. package/dist/cli/index.js.map +0 -1
  292. package/dist/cli/types.d.ts.map +0 -1
  293. package/dist/cli/workspace.service.d.ts.map +0 -1
  294. package/dist/cli/workspace.service.js.map +0 -1
  295. package/dist/index.d.ts +0 -5
  296. package/dist/index.d.ts.map +0 -1
  297. package/dist/index.js +0 -23
  298. package/dist/index.js.map +0 -1
  299. package/dist/skill/controllers/skill.controller.d.ts.map +0 -1
  300. package/dist/skill/controllers/skill.controller.js.map +0 -1
  301. package/dist/skill/entities/octo-skill.entity.d.ts.map +0 -1
  302. package/dist/skill/entities/octo-skill.entity.js.map +0 -1
  303. package/dist/skill/index.d.ts.map +0 -1
  304. package/dist/skill/index.js.map +0 -1
  305. package/dist/skill/services/skill-generator.service.d.ts.map +0 -1
  306. package/dist/skill/services/skill-generator.service.js.map +0 -1
  307. package/dist/skill/services/skill-installer.service.d.ts.map +0 -1
  308. package/dist/skill/services/skill-installer.service.js.map +0 -1
  309. package/dist/skill/services/skill-registry.service.d.ts.map +0 -1
  310. package/dist/skill/services/skill-registry.service.js.map +0 -1
  311. package/dist/skill/types.d.ts.map +0 -1
  312. /package/dist/{cli → src/cli}/adapters/claude-cli.adapter.d.ts +0 -0
  313. /package/dist/{cli → src/cli}/adapters/codex-cli.adapter.d.ts +0 -0
  314. /package/dist/{cli → src/cli}/adapters/codex-cli.adapter.js +0 -0
  315. /package/dist/{cli → src/cli}/adapters/detect-cli.d.ts +0 -0
  316. /package/dist/{cli → src/cli}/adapters/detect-cli.js +0 -0
  317. /package/dist/{cli → src/cli}/adapters/gemini-cli.adapter.d.ts +0 -0
  318. /package/dist/{cli → src/cli}/adapters/gemini-cli.adapter.js +0 -0
  319. /package/dist/{cli → src/cli}/adapters/index.d.ts +0 -0
  320. /package/dist/{cli → src/cli}/adapters/index.js +0 -0
  321. /package/dist/{cli → src/cli}/cli-registry.service.d.ts +0 -0
  322. /package/dist/{cli → src/cli}/index.js +0 -0
  323. /package/dist/{cli → src/cli}/types.js +0 -0
  324. /package/dist/{skill → src/skill}/entities/octo-skill.entity.d.ts +0 -0
  325. /package/dist/{skill → src/skill}/entities/octo-skill.entity.js +0 -0
  326. /package/dist/{skill → src/skill}/services/skill-generator.service.d.ts +0 -0
  327. /package/dist/{skill → src/skill}/services/skill-generator.service.js +0 -0
  328. /package/dist/{skill → src/skill}/services/skill-registry.service.d.ts +0 -0
  329. /package/dist/{skill → src/skill}/types.js +0 -0
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentSessionController = void 0;
13
+ const core_1 = require("@octo-cyber/core");
14
+ const agent_session_service_js_1 = require("./agent-session.service.js");
15
+ /**
16
+ * AgentSessionController — shared context session API.
17
+ *
18
+ * Endpoints:
19
+ * POST /api/v1/ai/agent/session — Create a new session
20
+ * GET /api/v1/ai/agent/session — List sessions (newest 20)
21
+ * GET /api/v1/ai/agent/session/:id — Get a session
22
+ * PATCH /api/v1/ai/agent/session/:id/context — Merge-update context
23
+ * POST /api/v1/ai/agent/session/:id/close — Close a session
24
+ */
25
+ let AgentSessionController = class AgentSessionController {
26
+ get service() {
27
+ return core_1.Container.get(agent_session_service_js_1.AgentSessionService);
28
+ }
29
+ async createSession(req, res) {
30
+ const body = req.body;
31
+ const name = typeof body.name === 'string' ? body.name.trim() || undefined : undefined;
32
+ const session = await this.service.create(name);
33
+ res.json(core_1.ApiResponse.ok(this.service.toDto(session)));
34
+ }
35
+ async listSessions(_req, res) {
36
+ const sessions = await this.service.list();
37
+ res.json(core_1.ApiResponse.ok(sessions.map((s) => this.service.toDto(s))));
38
+ }
39
+ async getSession(req, res) {
40
+ const id = String(req.params['id'] ?? '');
41
+ const session = await this.service.getById(id);
42
+ if (!session)
43
+ throw core_1.AppError.notFound(`Agent session not found: ${id}`);
44
+ res.json(core_1.ApiResponse.ok(this.service.toDto(session)));
45
+ }
46
+ async updateContext(req, res) {
47
+ const id = String(req.params['id'] ?? '');
48
+ const patch = req.body;
49
+ if (!patch || typeof patch !== 'object' || Array.isArray(patch)) {
50
+ throw core_1.AppError.badRequest('Request body must be a JSON object');
51
+ }
52
+ const updated = await this.service.updateContext(id, patch);
53
+ res.json(core_1.ApiResponse.ok(this.service.toDto(updated)));
54
+ }
55
+ async closeSession(req, res) {
56
+ const id = String(req.params['id'] ?? '');
57
+ const closed = await this.service.close(id);
58
+ if (!closed)
59
+ throw core_1.AppError.notFound(`Agent session not found: ${id}`);
60
+ res.json(core_1.ApiResponse.ok({ closed: true }));
61
+ }
62
+ };
63
+ exports.AgentSessionController = AgentSessionController;
64
+ __decorate([
65
+ (0, core_1.Post)('/session'),
66
+ __metadata("design:type", Function),
67
+ __metadata("design:paramtypes", [Object, Object]),
68
+ __metadata("design:returntype", Promise)
69
+ ], AgentSessionController.prototype, "createSession", null);
70
+ __decorate([
71
+ (0, core_1.Get)('/session'),
72
+ __metadata("design:type", Function),
73
+ __metadata("design:paramtypes", [Object, Object]),
74
+ __metadata("design:returntype", Promise)
75
+ ], AgentSessionController.prototype, "listSessions", null);
76
+ __decorate([
77
+ (0, core_1.Get)('/session/:id'),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", [Object, Object]),
80
+ __metadata("design:returntype", Promise)
81
+ ], AgentSessionController.prototype, "getSession", null);
82
+ __decorate([
83
+ (0, core_1.Patch)('/session/:id/context'),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", [Object, Object]),
86
+ __metadata("design:returntype", Promise)
87
+ ], AgentSessionController.prototype, "updateContext", null);
88
+ __decorate([
89
+ (0, core_1.Post)('/session/:id/close'),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", [Object, Object]),
92
+ __metadata("design:returntype", Promise)
93
+ ], AgentSessionController.prototype, "closeSession", null);
94
+ exports.AgentSessionController = AgentSessionController = __decorate([
95
+ (0, core_1.Controller)('/api/v1/ai/agent')
96
+ ], AgentSessionController);
97
+ //# sourceMappingURL=agent-session.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.controller.js","sourceRoot":"","sources":["../../../src/agent/agent-session.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type AgentSessionStatus = 'active' | 'closed';
2
+ export declare class AgentSession {
3
+ id: string;
4
+ name: string | null;
5
+ /** JSON blob — shared key/value context for all runs in this session. */
6
+ context: string;
7
+ /** JSON array of AgentRun IDs associated with this session. */
8
+ runIds: string;
9
+ status: AgentSessionStatus;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
13
+ //# sourceMappingURL=agent-session.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.entity.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-session.entity.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,qBACa,YAAY;IAEvB,EAAE,EAAG,MAAM,CAAC;IAGZ,IAAI,EAAG,MAAM,GAAG,IAAI,CAAC;IAErB,yEAAyE;IAEzE,OAAO,EAAG,MAAM,CAAC;IAEjB,+DAA+D;IAE/D,MAAM,EAAG,MAAM,CAAC;IAGhB,MAAM,EAAG,kBAAkB,CAAC;IAG5B,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentSession = void 0;
13
+ const core_1 = require("@octo-cyber/core");
14
+ let AgentSession = class AgentSession {
15
+ id;
16
+ name;
17
+ /** JSON blob — shared key/value context for all runs in this session. */
18
+ context;
19
+ /** JSON array of AgentRun IDs associated with this session. */
20
+ runIds;
21
+ status;
22
+ createdAt;
23
+ updatedAt;
24
+ };
25
+ exports.AgentSession = AgentSession;
26
+ __decorate([
27
+ (0, core_1.PrimaryGeneratedColumn)('uuid'),
28
+ __metadata("design:type", String)
29
+ ], AgentSession.prototype, "id", void 0);
30
+ __decorate([
31
+ (0, core_1.Column)({ type: 'varchar', length: 128, nullable: true }),
32
+ __metadata("design:type", Object)
33
+ ], AgentSession.prototype, "name", void 0);
34
+ __decorate([
35
+ (0, core_1.Column)({ type: 'text', default: '{}' }),
36
+ __metadata("design:type", String)
37
+ ], AgentSession.prototype, "context", void 0);
38
+ __decorate([
39
+ (0, core_1.Column)({ type: 'text', default: '[]' }),
40
+ __metadata("design:type", String)
41
+ ], AgentSession.prototype, "runIds", void 0);
42
+ __decorate([
43
+ (0, core_1.Column)({ type: 'varchar', length: 32, default: 'active' }),
44
+ __metadata("design:type", String)
45
+ ], AgentSession.prototype, "status", void 0);
46
+ __decorate([
47
+ (0, core_1.CreateDateColumn)({ name: 'created_at' }),
48
+ __metadata("design:type", Date)
49
+ ], AgentSession.prototype, "createdAt", void 0);
50
+ __decorate([
51
+ (0, core_1.UpdateDateColumn)({ name: 'updated_at' }),
52
+ __metadata("design:type", Date)
53
+ ], AgentSession.prototype, "updatedAt", void 0);
54
+ exports.AgentSession = AgentSession = __decorate([
55
+ (0, core_1.Entity)('agent_session')
56
+ ], AgentSession);
57
+ //# sourceMappingURL=agent-session.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.entity.js","sourceRoot":"","sources":["../../../src/agent/agent-session.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAM0B;AAKnB,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEvB,EAAE,CAAU;IAGZ,IAAI,CAAiB;IAErB,yEAAyE;IAEzE,OAAO,CAAU;IAEjB,+DAA+D;IAE/D,MAAM,CAAU;IAGhB,MAAM,CAAsB;IAG5B,SAAS,CAAQ;IAGjB,SAAS,CAAQ;CAClB,CAAA;AAvBY,oCAAY;AAEvB;IADC,IAAA,6BAAsB,EAAC,MAAM,CAAC;;wCACnB;AAGZ;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACpC;AAIrB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6CACvB;AAIjB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4CACxB;AAGhB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;4CAC/B;AAG5B;IADC,IAAA,uBAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;+CAAC;AAGjB;IADC,IAAA,uBAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;+CAAC;uBAtBN,YAAY;IADxB,IAAA,aAAM,EAAC,eAAe,CAAC;GACX,YAAY,CAuBxB"}
@@ -0,0 +1,38 @@
1
+ import type { Repository } from '@octo-cyber/core';
2
+ import { AgentSession } from './agent-session.entity.js';
3
+ export interface AgentSessionDto {
4
+ id: string;
5
+ name: string | null;
6
+ context: Record<string, unknown>;
7
+ runIds: string[];
8
+ status: 'active' | 'closed';
9
+ createdAt: string;
10
+ updatedAt: string;
11
+ }
12
+ /**
13
+ * AgentSessionService — manages shared context sessions across multiple agent runs.
14
+ *
15
+ * A session acts as a shared memory store:
16
+ * - Multiple agent runs can be attached to a single session
17
+ * - Any run can read/write session context to share state
18
+ * - Sessions can be closed to signal completion
19
+ */
20
+ export declare class AgentSessionService {
21
+ private repo;
22
+ setRepository(repo: Repository<AgentSession>): void;
23
+ private getRepo;
24
+ create(name?: string): Promise<AgentSession>;
25
+ getById(id: string): Promise<AgentSession | null>;
26
+ /** List the 20 most recently updated sessions. */
27
+ list(): Promise<AgentSession[]>;
28
+ /**
29
+ * Merge patch into the session's existing context JSON.
30
+ * Shallow-merges: top-level keys from patch override existing keys.
31
+ */
32
+ updateContext(id: string, patch: Record<string, unknown>): Promise<AgentSession>;
33
+ /** Append a run ID to the session's runIds list. */
34
+ addRunId(id: string, runId: string): Promise<void>;
35
+ close(id: string): Promise<boolean>;
36
+ toDto(session: AgentSession): AgentSessionDto;
37
+ }
38
+ //# sourceMappingURL=agent-session.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.service.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-session.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,qBACa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAyC;IAErD,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO;IAKT,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAW5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIvD,kDAAkD;IAC5C,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOrC;;;OAGG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IActF,oDAAoD;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASzC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe;CAW9C"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AgentSessionService = void 0;
10
+ const core_1 = require("@octo-cyber/core");
11
+ /**
12
+ * AgentSessionService — manages shared context sessions across multiple agent runs.
13
+ *
14
+ * A session acts as a shared memory store:
15
+ * - Multiple agent runs can be attached to a single session
16
+ * - Any run can read/write session context to share state
17
+ * - Sessions can be closed to signal completion
18
+ */
19
+ let AgentSessionService = class AgentSessionService {
20
+ repo = null;
21
+ setRepository(repo) {
22
+ this.repo = repo;
23
+ }
24
+ getRepo() {
25
+ if (!this.repo)
26
+ throw new Error('AgentSessionService: repository not initialized');
27
+ return this.repo;
28
+ }
29
+ async create(name) {
30
+ const repo = this.getRepo();
31
+ const session = repo.create({
32
+ name: name ?? null,
33
+ context: '{}',
34
+ runIds: '[]',
35
+ status: 'active',
36
+ });
37
+ return repo.save(session);
38
+ }
39
+ async getById(id) {
40
+ return this.getRepo().findOne({ where: { id } });
41
+ }
42
+ /** List the 20 most recently updated sessions. */
43
+ async list() {
44
+ return this.getRepo().find({
45
+ order: { updatedAt: 'DESC' },
46
+ take: 20,
47
+ });
48
+ }
49
+ /**
50
+ * Merge patch into the session's existing context JSON.
51
+ * Shallow-merges: top-level keys from patch override existing keys.
52
+ */
53
+ async updateContext(id, patch) {
54
+ const repo = this.getRepo();
55
+ const session = await repo.findOne({ where: { id } });
56
+ if (!session)
57
+ throw core_1.AppError.notFound(`Agent session not found: ${id}`);
58
+ const existing = parseJson(session.context, {});
59
+ const merged = { ...existing, ...patch };
60
+ await repo.update(id, { context: JSON.stringify(merged) });
61
+ const updated = await repo.findOne({ where: { id } });
62
+ if (!updated)
63
+ throw core_1.AppError.notFound(`Agent session not found after update: ${id}`);
64
+ return updated;
65
+ }
66
+ /** Append a run ID to the session's runIds list. */
67
+ async addRunId(id, runId) {
68
+ const repo = this.getRepo();
69
+ const session = await repo.findOne({ where: { id } });
70
+ if (!session)
71
+ throw core_1.AppError.notFound(`Agent session not found: ${id}`);
72
+ const existing = parseJson(session.runIds, []);
73
+ if (!existing.includes(runId)) {
74
+ await repo.update(id, { runIds: JSON.stringify([...existing, runId]) });
75
+ }
76
+ }
77
+ async close(id) {
78
+ const repo = this.getRepo();
79
+ const session = await repo.findOne({ where: { id } });
80
+ if (!session)
81
+ return false;
82
+ await repo.update(id, { status: 'closed' });
83
+ return true;
84
+ }
85
+ toDto(session) {
86
+ return {
87
+ id: session.id,
88
+ name: session.name,
89
+ context: parseJson(session.context, {}),
90
+ runIds: parseJson(session.runIds, []),
91
+ status: session.status,
92
+ createdAt: session.createdAt.toISOString(),
93
+ updatedAt: session.updatedAt.toISOString(),
94
+ };
95
+ }
96
+ };
97
+ exports.AgentSessionService = AgentSessionService;
98
+ exports.AgentSessionService = AgentSessionService = __decorate([
99
+ (0, core_1.Service)()
100
+ ], AgentSessionService);
101
+ // Intentionally not exported — module-private helper
102
+ function parseJson(value, fallback) {
103
+ try {
104
+ return JSON.parse(value);
105
+ }
106
+ catch {
107
+ return fallback;
108
+ }
109
+ }
110
+ // Ensure singleton is registered in DI at import time
111
+ core_1.Container.get(AgentSessionService);
112
+ //# sourceMappingURL=agent-session.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.service.js","sourceRoot":"","sources":["../../../src/agent/agent-session.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ToolDefinition } from '../workflow-design/types.js';
2
+ /**
3
+ * Creates the standard coding tool set for a Claude Code agent session.
4
+ * All tools operate strictly within the given worktree directory.
5
+ */
6
+ export declare function createCodingTools(worktreePath: string): ToolDefinition[];
7
+ //# sourceMappingURL=coding-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-tools.d.ts","sourceRoot":"","sources":["../../../src/agent/coding-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAmClE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE,CAExE"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createCodingTools = createCodingTools;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const node_util_1 = require("node:util");
11
+ const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
12
+ const BASH_TIMEOUT_MS = 60_000;
13
+ const STDOUT_MAX_BYTES = 8 * 1024; // 8 KB
14
+ // ============================================================
15
+ // Path safety
16
+ // ============================================================
17
+ /**
18
+ * Resolves a user-supplied path relative to worktreePath and ensures it does
19
+ * not escape the worktree directory (path traversal guard).
20
+ *
21
+ * @throws Error if the resolved path is outside the worktree.
22
+ */
23
+ function resolveJailed(userPath, worktreePath) {
24
+ // Reject absolute paths that don't start with the worktree
25
+ const base = node_path_1.default.resolve(worktreePath);
26
+ const resolved = node_path_1.default.resolve(base, userPath);
27
+ if (!resolved.startsWith(base + node_path_1.default.sep) && resolved !== base) {
28
+ throw new Error(`Path "${userPath}" resolves to "${resolved}" which is outside the worktree "${base}"`);
29
+ }
30
+ return resolved;
31
+ }
32
+ // ============================================================
33
+ // Tool factory
34
+ // ============================================================
35
+ /**
36
+ * Creates the standard coding tool set for a Claude Code agent session.
37
+ * All tools operate strictly within the given worktree directory.
38
+ */
39
+ function createCodingTools(worktreePath) {
40
+ return [bashTool(worktreePath), fileEditTool(worktreePath), readFileTool(worktreePath), gitTool(worktreePath)];
41
+ }
42
+ // ── bash ──────────────────────────────────────────────────────
43
+ function bashTool(worktreePath) {
44
+ return {
45
+ name: 'bash',
46
+ description: 'Execute a shell command inside the worktree directory. Use for build, test, and inspection commands. Output is truncated to 8 KB.',
47
+ parameters: {
48
+ type: 'object',
49
+ properties: {
50
+ command: { type: 'string', description: 'Shell command to run (e.g. "pnpm build")' },
51
+ cwd: {
52
+ type: 'string',
53
+ description: 'Optional subdirectory (relative to worktree root) in which to run the command.',
54
+ },
55
+ },
56
+ required: ['command'],
57
+ },
58
+ async execute(args) {
59
+ const { command, cwd: cwdArg } = args;
60
+ const effectiveCwd = cwdArg ? resolveJailed(cwdArg, worktreePath) : worktreePath;
61
+ let stdout;
62
+ let stderr;
63
+ try {
64
+ const result = await execAsync(command, {
65
+ cwd: effectiveCwd,
66
+ timeout: BASH_TIMEOUT_MS,
67
+ maxBuffer: STDOUT_MAX_BYTES * 4,
68
+ env: { ...process.env, FORCE_COLOR: '0' },
69
+ });
70
+ stdout = result.stdout;
71
+ stderr = result.stderr;
72
+ }
73
+ catch (err) {
74
+ const execErr = err;
75
+ stdout = execErr.stdout ?? '';
76
+ stderr = execErr.stderr ?? execErr.message ?? 'Unknown error';
77
+ }
78
+ const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
79
+ const truncated = Buffer.byteLength(combined) > STDOUT_MAX_BYTES
80
+ ? combined.slice(0, STDOUT_MAX_BYTES) + '\n[output truncated]'
81
+ : combined;
82
+ return truncated || '(no output)';
83
+ },
84
+ };
85
+ }
86
+ // ── file_edit ─────────────────────────────────────────────────
87
+ function fileEditTool(worktreePath) {
88
+ return {
89
+ name: 'file_edit',
90
+ description: 'Write or overwrite a file inside the worktree.',
91
+ parameters: {
92
+ type: 'object',
93
+ properties: {
94
+ path: { type: 'string', description: 'File path relative to the worktree root.' },
95
+ content: { type: 'string', description: 'New file content (complete, not a diff).' },
96
+ },
97
+ required: ['path', 'content'],
98
+ },
99
+ async execute(args) {
100
+ const { path: filePath, content } = args;
101
+ const resolved = resolveJailed(filePath, worktreePath);
102
+ // Create intermediate directories if needed
103
+ await promises_1.default.mkdir(node_path_1.default.dirname(resolved), { recursive: true });
104
+ await promises_1.default.writeFile(resolved, content, 'utf-8');
105
+ return `Written ${resolved}`;
106
+ },
107
+ };
108
+ }
109
+ // ── read_file ─────────────────────────────────────────────────
110
+ function readFileTool(worktreePath) {
111
+ return {
112
+ name: 'read_file',
113
+ description: 'Read the contents of a file inside the worktree.',
114
+ parameters: {
115
+ type: 'object',
116
+ properties: {
117
+ path: { type: 'string', description: 'File path relative to the worktree root.' },
118
+ },
119
+ required: ['path'],
120
+ },
121
+ async execute(args) {
122
+ const { path: filePath } = args;
123
+ const resolved = resolveJailed(filePath, worktreePath);
124
+ let content;
125
+ try {
126
+ content = await promises_1.default.readFile(resolved, 'utf-8');
127
+ }
128
+ catch {
129
+ return `Error: file "${resolved}" not found or unreadable.`;
130
+ }
131
+ const truncated = Buffer.byteLength(content) > STDOUT_MAX_BYTES
132
+ ? content.slice(0, STDOUT_MAX_BYTES) + '\n[file truncated]'
133
+ : content;
134
+ return truncated;
135
+ },
136
+ };
137
+ }
138
+ // ── git ───────────────────────────────────────────────────────
139
+ function gitTool(worktreePath) {
140
+ return {
141
+ name: 'git',
142
+ description: 'Run a git command inside the worktree. Pass args as an array (e.g. ["add", "-A"] or ["commit", "-m", "feat: add login"]).',
143
+ parameters: {
144
+ type: 'object',
145
+ properties: {
146
+ args: {
147
+ type: 'array',
148
+ items: { type: 'string' },
149
+ description: 'Git subcommand and arguments (without the "git" prefix).',
150
+ },
151
+ },
152
+ required: ['args'],
153
+ },
154
+ async execute(args) {
155
+ const { args: gitArgs } = args;
156
+ if (!Array.isArray(gitArgs) || gitArgs.length === 0) {
157
+ return 'Error: args must be a non-empty array of strings.';
158
+ }
159
+ const command = `git ${gitArgs.map((a) => JSON.stringify(a)).join(' ')}`;
160
+ let stdout;
161
+ let stderr;
162
+ try {
163
+ const result = await execAsync(command, {
164
+ cwd: worktreePath,
165
+ timeout: BASH_TIMEOUT_MS,
166
+ maxBuffer: STDOUT_MAX_BYTES * 4,
167
+ });
168
+ stdout = result.stdout;
169
+ stderr = result.stderr;
170
+ }
171
+ catch (err) {
172
+ const execErr = err;
173
+ stdout = execErr.stdout ?? '';
174
+ stderr = execErr.stderr ?? execErr.message ?? 'git command failed';
175
+ }
176
+ const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
177
+ return combined || '(no output)';
178
+ },
179
+ };
180
+ }
181
+ //# sourceMappingURL=coding-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-tools.js","sourceRoot":"","sources":["../../../src/agent/coding-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ToolDefinition } from '../workflow-design/types.js';
2
+ export declare const IMAGE_RESULT_PREFIX = "[IMAGE:png]";
3
+ export declare const SYSTEM_PROMPT_COMPUTER_USE = "You are an AI agent that can control the desktop computer.\nYou have access to these tools:\n- screenshot: take a screenshot to see the current state of the screen\n- left_click: click at a specific (x, y) coordinate\n- type: type text into the focused element\n- scroll: scroll up or down at a screen position\n- key: press a key or key combination (e.g. \"enter\", \"ctrl+c\")\n\nTo complete a task:\n1. Start by taking a screenshot to understand the current state of the screen.\n2. Identify what needs to be done based on the screenshot.\n3. Use the appropriate tools to interact with the UI.\n4. Take follow-up screenshots to verify your actions had the intended effect.\n5. Repeat until the task is complete, then summarize what you did.\n\nImportant:\n- Always verify actions with a screenshot after significant interactions.\n- Use the \"key\" tool for keyboard shortcuts (e.g. \"enter\" to confirm, \"escape\" to cancel).\n- Coordinate (0, 0) is the top-left corner of the screen.\n- Be precise with coordinates \u2014 click the center of buttons and input fields.";
4
+ /**
5
+ * Creates the computer-use tool set for agent loops.
6
+ *
7
+ * Screenshot results use the `[IMAGE:png]<base64>` sentinel so
8
+ * OctoAgentClient can pass them as Anthropic ImageBlockParam,
9
+ * enabling Claude to see and reason about the screen content.
10
+ *
11
+ * macOS: grant Accessibility + Screen Recording to Terminal/Node.
12
+ * Windows/Linux: no extra permissions required.
13
+ */
14
+ export declare function createComputerUseTools(): ToolDefinition[];
15
+ //# sourceMappingURL=computer-use-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computer-use-tools.d.ts","sourceRoot":"","sources":["../../../src/agent/computer-use-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAOlE,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,eAAO,MAAM,0BAA0B,sjCAmBuC,CAAC;AAM/E;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,EAAE,CAQzD"}