@octo-cyber/ai 0.5.5 → 0.5.7

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 (426) hide show
  1. package/dist/BranchDecisionEngine.d.ts +73 -0
  2. package/dist/BranchDecisionEngine.d.ts.map +1 -0
  3. package/dist/BranchDecisionEngine.js +195 -0
  4. package/dist/BranchDecisionEngine.js.map +1 -0
  5. package/dist/agent/coding-tools.d.ts +7 -0
  6. package/dist/agent/coding-tools.d.ts.map +1 -0
  7. package/dist/agent/coding-tools.js +181 -0
  8. package/dist/agent/coding-tools.js.map +1 -0
  9. package/dist/ai.module.d.ts +14 -2
  10. package/dist/ai.module.d.ts.map +1 -1
  11. package/dist/ai.module.js +61 -14
  12. package/dist/ai.module.js.map +1 -1
  13. package/dist/cli/adapters/antigravity.adapter.d.ts +2 -0
  14. package/dist/cli/adapters/antigravity.adapter.d.ts.map +1 -1
  15. package/dist/cli/adapters/antigravity.adapter.js +78 -0
  16. package/dist/cli/adapters/antigravity.adapter.js.map +1 -1
  17. package/dist/cli/adapters/claude-cli.adapter.d.ts.map +1 -1
  18. package/dist/cli/adapters/claude-cli.adapter.js +2 -0
  19. package/dist/cli/adapters/claude-cli.adapter.js.map +1 -1
  20. package/dist/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
  21. package/dist/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
  22. package/dist/cli/adapters/cli-proxy-api.adapter.js +239 -0
  23. package/dist/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
  24. package/dist/cli/cli-executor.service.d.ts +2 -0
  25. package/dist/cli/cli-executor.service.d.ts.map +1 -1
  26. package/dist/cli/cli-executor.service.js +21 -1
  27. package/dist/cli/cli-executor.service.js.map +1 -1
  28. package/dist/cli/cli-registry.service.d.ts.map +1 -1
  29. package/dist/cli/cli-registry.service.js +3 -1
  30. package/dist/cli/cli-registry.service.js.map +1 -1
  31. package/dist/cli/controllers/ai-cli.controller.d.ts +4 -0
  32. package/dist/cli/controllers/ai-cli.controller.d.ts.map +1 -1
  33. package/dist/cli/controllers/ai-cli.controller.js +33 -4
  34. package/dist/cli/controllers/ai-cli.controller.js.map +1 -1
  35. package/dist/cli/index.d.ts +1 -1
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/types.d.ts +23 -1
  39. package/dist/cli/types.d.ts.map +1 -1
  40. package/dist/cli/workspace.service.d.ts +11 -3
  41. package/dist/cli/workspace.service.d.ts.map +1 -1
  42. package/dist/cli/workspace.service.js +61 -6
  43. package/dist/cli/workspace.service.js.map +1 -1
  44. package/dist/index.d.ts +5 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +22 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/session/claude-code-session-manager.service.d.ts +28 -0
  49. package/dist/session/claude-code-session-manager.service.d.ts.map +1 -0
  50. package/dist/session/claude-code-session-manager.service.js +177 -0
  51. package/dist/session/claude-code-session-manager.service.js.map +1 -0
  52. package/dist/shared/IClaudeCodeSessionManager.d.ts +151 -0
  53. package/dist/shared/IClaudeCodeSessionManager.d.ts.map +1 -0
  54. package/dist/shared/IClaudeCodeSessionManager.js +6 -0
  55. package/dist/shared/IClaudeCodeSessionManager.js.map +1 -0
  56. package/dist/skill/controllers/skill-market.controller.d.ts +18 -0
  57. package/dist/skill/controllers/skill-market.controller.d.ts.map +1 -0
  58. package/dist/skill/controllers/skill-market.controller.js +128 -0
  59. package/dist/skill/controllers/skill-market.controller.js.map +1 -0
  60. package/dist/skill/controllers/skill.controller.d.ts +4 -0
  61. package/dist/skill/controllers/skill.controller.d.ts.map +1 -1
  62. package/dist/skill/controllers/skill.controller.js +31 -0
  63. package/dist/skill/controllers/skill.controller.js.map +1 -1
  64. package/dist/skill/index.d.ts +3 -1
  65. package/dist/skill/index.d.ts.map +1 -1
  66. package/dist/skill/index.js +5 -1
  67. package/dist/skill/index.js.map +1 -1
  68. package/dist/skill/services/skill-installer.service.d.ts +27 -0
  69. package/dist/skill/services/skill-installer.service.d.ts.map +1 -1
  70. package/dist/skill/services/skill-installer.service.js +108 -0
  71. package/dist/skill/services/skill-installer.service.js.map +1 -1
  72. package/dist/skill/services/skill-market.service.d.ts +60 -0
  73. package/dist/skill/services/skill-market.service.d.ts.map +1 -0
  74. package/dist/skill/services/skill-market.service.js +244 -0
  75. package/dist/skill/services/skill-market.service.js.map +1 -0
  76. package/dist/skill/services/skill-registry.service.js +4 -4
  77. package/dist/skill/services/skill-registry.service.js.map +1 -1
  78. package/dist/skill/types.d.ts +32 -1
  79. package/dist/skill/types.d.ts.map +1 -1
  80. package/dist/src/BranchDecisionEngine.d.ts +73 -0
  81. package/dist/src/BranchDecisionEngine.d.ts.map +1 -0
  82. package/dist/src/BranchDecisionEngine.js +195 -0
  83. package/dist/src/BranchDecisionEngine.js.map +1 -0
  84. package/dist/src/agent/agent-approval.controller.d.ts +20 -0
  85. package/dist/src/agent/agent-approval.controller.d.ts.map +1 -0
  86. package/dist/src/agent/agent-approval.controller.js +101 -0
  87. package/dist/src/agent/agent-approval.controller.js.map +1 -0
  88. package/dist/src/agent/agent-approval.entity.d.ts +15 -0
  89. package/dist/src/agent/agent-approval.entity.d.ts.map +1 -0
  90. package/dist/src/agent/agent-approval.entity.js +63 -0
  91. package/dist/src/agent/agent-approval.entity.js.map +1 -0
  92. package/dist/src/agent/agent-approval.service.d.ts +35 -0
  93. package/dist/src/agent/agent-approval.service.d.ts.map +1 -0
  94. package/dist/src/agent/agent-approval.service.js +109 -0
  95. package/dist/src/agent/agent-approval.service.js.map +1 -0
  96. package/dist/src/agent/agent-gateway.controller.d.ts +30 -0
  97. package/dist/src/agent/agent-gateway.controller.d.ts.map +1 -0
  98. package/dist/src/agent/agent-gateway.controller.js +112 -0
  99. package/dist/src/agent/agent-gateway.controller.js.map +1 -0
  100. package/dist/src/agent/agent-gateway.service.d.ts +33 -0
  101. package/dist/src/agent/agent-gateway.service.d.ts.map +1 -0
  102. package/dist/src/agent/agent-gateway.service.js +84 -0
  103. package/dist/src/agent/agent-gateway.service.js.map +1 -0
  104. package/dist/src/agent/agent-registry.service.d.ts +30 -0
  105. package/dist/src/agent/agent-registry.service.d.ts.map +1 -0
  106. package/dist/src/agent/agent-registry.service.js +45 -0
  107. package/dist/src/agent/agent-registry.service.js.map +1 -0
  108. package/dist/src/agent/agent-run-persistence.service.d.ts +82 -0
  109. package/dist/src/agent/agent-run-persistence.service.d.ts.map +1 -0
  110. package/dist/src/agent/agent-run-persistence.service.js +171 -0
  111. package/dist/src/agent/agent-run-persistence.service.js.map +1 -0
  112. package/dist/src/agent/agent-run-step.entity.d.ts +23 -0
  113. package/dist/src/agent/agent-run-step.entity.d.ts.map +1 -0
  114. package/dist/src/agent/agent-run-step.entity.js +76 -0
  115. package/dist/src/agent/agent-run-step.entity.js.map +1 -0
  116. package/dist/src/agent/agent-run.controller.d.ts +42 -0
  117. package/dist/src/agent/agent-run.controller.d.ts.map +1 -0
  118. package/dist/src/agent/agent-run.controller.js +195 -0
  119. package/dist/src/agent/agent-run.controller.js.map +1 -0
  120. package/dist/src/agent/agent-run.entity.d.ts +35 -0
  121. package/dist/src/agent/agent-run.entity.d.ts.map +1 -0
  122. package/dist/src/agent/agent-run.entity.js +98 -0
  123. package/dist/src/agent/agent-run.entity.js.map +1 -0
  124. package/dist/src/agent/agent-run.service.d.ts +48 -0
  125. package/dist/src/agent/agent-run.service.d.ts.map +1 -0
  126. package/dist/src/agent/agent-run.service.js +155 -0
  127. package/dist/src/agent/agent-run.service.js.map +1 -0
  128. package/dist/src/agent/agent-session.controller.d.ts +20 -0
  129. package/dist/src/agent/agent-session.controller.d.ts.map +1 -0
  130. package/dist/src/agent/agent-session.controller.js +97 -0
  131. package/dist/src/agent/agent-session.controller.js.map +1 -0
  132. package/dist/src/agent/agent-session.entity.d.ts +13 -0
  133. package/dist/src/agent/agent-session.entity.d.ts.map +1 -0
  134. package/dist/src/agent/agent-session.entity.js +57 -0
  135. package/dist/src/agent/agent-session.entity.js.map +1 -0
  136. package/dist/src/agent/agent-session.service.d.ts +38 -0
  137. package/dist/src/agent/agent-session.service.d.ts.map +1 -0
  138. package/dist/src/agent/agent-session.service.js +112 -0
  139. package/dist/src/agent/agent-session.service.js.map +1 -0
  140. package/dist/src/agent/coding-tools.d.ts +7 -0
  141. package/dist/src/agent/coding-tools.d.ts.map +1 -0
  142. package/dist/src/agent/coding-tools.js +181 -0
  143. package/dist/src/agent/coding-tools.js.map +1 -0
  144. package/dist/src/agent/computer-use-tools.d.ts +15 -0
  145. package/dist/src/agent/computer-use-tools.d.ts.map +1 -0
  146. package/dist/src/agent/computer-use-tools.js +256 -0
  147. package/dist/src/agent/computer-use-tools.js.map +1 -0
  148. package/dist/src/agent/external-agent.controller.d.ts +41 -0
  149. package/dist/src/agent/external-agent.controller.d.ts.map +1 -0
  150. package/dist/src/agent/external-agent.controller.js +129 -0
  151. package/dist/src/agent/external-agent.controller.js.map +1 -0
  152. package/dist/src/agent/external-agent.entity.d.ts +22 -0
  153. package/dist/src/agent/external-agent.entity.d.ts.map +1 -0
  154. package/dist/src/agent/external-agent.entity.js +75 -0
  155. package/dist/src/agent/external-agent.entity.js.map +1 -0
  156. package/dist/src/agent/external-agent.service.d.ts +60 -0
  157. package/dist/src/agent/external-agent.service.d.ts.map +1 -0
  158. package/dist/src/agent/external-agent.service.js +143 -0
  159. package/dist/src/agent/external-agent.service.js.map +1 -0
  160. package/dist/src/ai.module.d.ts +22 -0
  161. package/dist/src/ai.module.d.ts.map +1 -0
  162. package/dist/src/ai.module.js +178 -0
  163. package/dist/src/ai.module.js.map +1 -0
  164. package/dist/src/cli/adapters/antigravity.adapter.d.ts +31 -0
  165. package/dist/src/cli/adapters/antigravity.adapter.d.ts.map +1 -0
  166. package/dist/src/cli/adapters/antigravity.adapter.js +248 -0
  167. package/dist/src/cli/adapters/antigravity.adapter.js.map +1 -0
  168. package/dist/src/cli/adapters/claude-cli.adapter.d.ts +23 -0
  169. package/dist/src/cli/adapters/claude-cli.adapter.d.ts.map +1 -0
  170. package/dist/src/cli/adapters/claude-cli.adapter.js +81 -0
  171. package/dist/src/cli/adapters/claude-cli.adapter.js.map +1 -0
  172. package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
  173. package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
  174. package/dist/src/cli/adapters/cli-proxy-api.adapter.js +239 -0
  175. package/dist/src/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
  176. package/dist/src/cli/adapters/codex-cli.adapter.d.ts +22 -0
  177. package/dist/src/cli/adapters/codex-cli.adapter.d.ts.map +1 -0
  178. package/dist/src/cli/adapters/codex-cli.adapter.js +76 -0
  179. package/dist/src/cli/adapters/codex-cli.adapter.js.map +1 -0
  180. package/dist/src/cli/adapters/detect-cli.d.ts +11 -0
  181. package/dist/src/cli/adapters/detect-cli.d.ts.map +1 -0
  182. package/dist/src/cli/adapters/detect-cli.js +40 -0
  183. package/dist/src/cli/adapters/detect-cli.js.map +1 -0
  184. package/dist/src/cli/adapters/gemini-cli.adapter.d.ts +21 -0
  185. package/dist/src/cli/adapters/gemini-cli.adapter.d.ts.map +1 -0
  186. package/dist/src/cli/adapters/gemini-cli.adapter.js +72 -0
  187. package/dist/src/cli/adapters/gemini-cli.adapter.js.map +1 -0
  188. package/dist/src/cli/adapters/index.d.ts +4 -0
  189. package/dist/src/cli/adapters/index.d.ts.map +1 -0
  190. package/dist/src/cli/adapters/index.js +10 -0
  191. package/dist/src/cli/adapters/index.js.map +1 -0
  192. package/dist/src/cli/cli-executor.service.d.ts +25 -0
  193. package/dist/src/cli/cli-executor.service.d.ts.map +1 -0
  194. package/dist/src/cli/cli-executor.service.js +170 -0
  195. package/dist/src/cli/cli-executor.service.js.map +1 -0
  196. package/dist/src/cli/cli-registry.service.d.ts +38 -0
  197. package/dist/src/cli/cli-registry.service.d.ts.map +1 -0
  198. package/dist/src/cli/cli-registry.service.js +114 -0
  199. package/dist/src/cli/cli-registry.service.js.map +1 -0
  200. package/dist/src/cli/controllers/ai-cli.controller.d.ts +40 -0
  201. package/dist/src/cli/controllers/ai-cli.controller.d.ts.map +1 -0
  202. package/dist/src/cli/controllers/ai-cli.controller.js +208 -0
  203. package/dist/src/cli/controllers/ai-cli.controller.js.map +1 -0
  204. package/dist/src/cli/index.d.ts +8 -0
  205. package/dist/src/cli/index.d.ts.map +1 -0
  206. package/dist/src/cli/index.js +17 -0
  207. package/dist/src/cli/index.js.map +1 -0
  208. package/dist/src/cli/types.d.ts +153 -0
  209. package/dist/src/cli/types.d.ts.map +1 -0
  210. package/dist/src/cli/types.js +9 -0
  211. package/dist/src/cli/types.js.map +1 -0
  212. package/dist/src/cli/workspace.service.d.ts +42 -0
  213. package/dist/src/cli/workspace.service.d.ts.map +1 -0
  214. package/dist/src/cli/workspace.service.js +249 -0
  215. package/dist/src/cli/workspace.service.js.map +1 -0
  216. package/dist/src/computer-use/computer-use.controller.d.ts +23 -0
  217. package/dist/src/computer-use/computer-use.controller.d.ts.map +1 -0
  218. package/dist/src/computer-use/computer-use.controller.js +87 -0
  219. package/dist/src/computer-use/computer-use.controller.js.map +1 -0
  220. package/dist/src/index.d.ts +12 -0
  221. package/dist/src/index.d.ts.map +1 -0
  222. package/dist/src/index.js +51 -0
  223. package/dist/src/index.js.map +1 -0
  224. package/dist/src/orchestrator/orchestrator-plan.entity.d.ts +31 -0
  225. package/dist/src/orchestrator/orchestrator-plan.entity.d.ts.map +1 -0
  226. package/dist/src/orchestrator/orchestrator-plan.entity.js +69 -0
  227. package/dist/src/orchestrator/orchestrator-plan.entity.js.map +1 -0
  228. package/dist/src/orchestrator/orchestrator-plan.service.d.ts +27 -0
  229. package/dist/src/orchestrator/orchestrator-plan.service.d.ts.map +1 -0
  230. package/dist/src/orchestrator/orchestrator-plan.service.js +201 -0
  231. package/dist/src/orchestrator/orchestrator-plan.service.js.map +1 -0
  232. package/dist/src/orchestrator/orchestrator.controller.d.ts +29 -0
  233. package/dist/src/orchestrator/orchestrator.controller.d.ts.map +1 -0
  234. package/dist/src/orchestrator/orchestrator.controller.js +144 -0
  235. package/dist/src/orchestrator/orchestrator.controller.js.map +1 -0
  236. package/dist/src/orchestrator/workflow-feedback.entity.d.ts +12 -0
  237. package/dist/src/orchestrator/workflow-feedback.entity.d.ts.map +1 -0
  238. package/dist/src/orchestrator/workflow-feedback.entity.js +49 -0
  239. package/dist/src/orchestrator/workflow-feedback.entity.js.map +1 -0
  240. package/dist/src/orchestrator/workflow-feedback.service.d.ts +14 -0
  241. package/dist/src/orchestrator/workflow-feedback.service.d.ts.map +1 -0
  242. package/dist/src/orchestrator/workflow-feedback.service.js +51 -0
  243. package/dist/src/orchestrator/workflow-feedback.service.js.map +1 -0
  244. package/dist/src/session/claude-code-session-manager.service.d.ts +28 -0
  245. package/dist/src/session/claude-code-session-manager.service.d.ts.map +1 -0
  246. package/dist/src/session/claude-code-session-manager.service.js +177 -0
  247. package/dist/src/session/claude-code-session-manager.service.js.map +1 -0
  248. package/dist/src/skill/controllers/skill-market.controller.d.ts +18 -0
  249. package/dist/src/skill/controllers/skill-market.controller.d.ts.map +1 -0
  250. package/dist/src/skill/controllers/skill-market.controller.js +128 -0
  251. package/dist/src/skill/controllers/skill-market.controller.js.map +1 -0
  252. package/dist/src/skill/controllers/skill.controller.d.ts +37 -0
  253. package/dist/src/skill/controllers/skill.controller.d.ts.map +1 -0
  254. package/dist/src/skill/controllers/skill.controller.js +295 -0
  255. package/dist/src/skill/controllers/skill.controller.js.map +1 -0
  256. package/dist/src/skill/entities/octo-skill.entity.d.ts +22 -0
  257. package/dist/src/skill/entities/octo-skill.entity.d.ts.map +1 -0
  258. package/dist/src/skill/entities/octo-skill.entity.js +91 -0
  259. package/dist/src/skill/entities/octo-skill.entity.js.map +1 -0
  260. package/dist/src/skill/index.d.ts +9 -0
  261. package/dist/src/skill/index.d.ts.map +1 -0
  262. package/dist/src/skill/index.js +21 -0
  263. package/dist/src/skill/index.js.map +1 -0
  264. package/dist/src/skill/services/skill-generator.service.d.ts +47 -0
  265. package/dist/src/skill/services/skill-generator.service.d.ts.map +1 -0
  266. package/dist/src/skill/services/skill-generator.service.js +232 -0
  267. package/dist/src/skill/services/skill-generator.service.js.map +1 -0
  268. package/dist/src/skill/services/skill-installer.service.d.ts +65 -0
  269. package/dist/src/skill/services/skill-installer.service.d.ts.map +1 -0
  270. package/dist/src/skill/services/skill-installer.service.js +258 -0
  271. package/dist/src/skill/services/skill-installer.service.js.map +1 -0
  272. package/dist/src/skill/services/skill-market-helpers.d.ts +25 -0
  273. package/dist/src/skill/services/skill-market-helpers.d.ts.map +1 -0
  274. package/dist/src/skill/services/skill-market-helpers.js +22 -0
  275. package/dist/src/skill/services/skill-market-helpers.js.map +1 -0
  276. package/dist/src/skill/services/skill-market-utils.d.ts +25 -0
  277. package/dist/src/skill/services/skill-market-utils.d.ts.map +1 -0
  278. package/dist/src/skill/services/skill-market-utils.js +22 -0
  279. package/dist/src/skill/services/skill-market-utils.js.map +1 -0
  280. package/dist/src/skill/services/skill-market.service.d.ts +60 -0
  281. package/dist/src/skill/services/skill-market.service.d.ts.map +1 -0
  282. package/dist/src/skill/services/skill-market.service.js +228 -0
  283. package/dist/src/skill/services/skill-market.service.js.map +1 -0
  284. package/dist/src/skill/services/skill-registry.service.d.ts +61 -0
  285. package/dist/src/skill/services/skill-registry.service.d.ts.map +1 -0
  286. package/dist/src/skill/services/skill-registry.service.js +159 -0
  287. package/dist/src/skill/services/skill-registry.service.js.map +1 -0
  288. package/dist/src/skill/types.d.ts +76 -0
  289. package/dist/src/skill/types.d.ts.map +1 -0
  290. package/dist/src/skill/types.js +6 -0
  291. package/dist/src/skill/types.js.map +1 -0
  292. package/dist/src/workflow-design/DocumentExtractorAgent.d.ts +47 -0
  293. package/dist/src/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
  294. package/dist/src/workflow-design/DocumentExtractorAgent.js +118 -0
  295. package/dist/src/workflow-design/DocumentExtractorAgent.js.map +1 -0
  296. package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
  297. package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
  298. package/dist/src/workflow-design/N8nNodeKnowledgeBase.js +362 -0
  299. package/dist/src/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
  300. package/dist/src/workflow-design/OctoAgentClient.d.ts +42 -0
  301. package/dist/src/workflow-design/OctoAgentClient.d.ts.map +1 -0
  302. package/dist/src/workflow-design/OctoAgentClient.js +191 -0
  303. package/dist/src/workflow-design/OctoAgentClient.js.map +1 -0
  304. package/dist/src/workflow-design/WorkflowAssembler.d.ts +10 -0
  305. package/dist/src/workflow-design/WorkflowAssembler.d.ts.map +1 -0
  306. package/dist/src/workflow-design/WorkflowAssembler.js +81 -0
  307. package/dist/src/workflow-design/WorkflowAssembler.js.map +1 -0
  308. package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
  309. package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
  310. package/dist/src/workflow-design/WorkflowDesignOrchestrator.js +265 -0
  311. package/dist/src/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
  312. package/dist/src/workflow-design/agents/ActionChainAgent.d.ts +9 -0
  313. package/dist/src/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
  314. package/dist/src/workflow-design/agents/ActionChainAgent.js +79 -0
  315. package/dist/src/workflow-design/agents/ActionChainAgent.js.map +1 -0
  316. package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
  317. package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
  318. package/dist/src/workflow-design/agents/CodeScriptAgent.js +96 -0
  319. package/dist/src/workflow-design/agents/CodeScriptAgent.js.map +1 -0
  320. package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
  321. package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
  322. package/dist/src/workflow-design/agents/LogicFlowAgent.js +78 -0
  323. package/dist/src/workflow-design/agents/LogicFlowAgent.js.map +1 -0
  324. package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
  325. package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
  326. package/dist/src/workflow-design/agents/TriggerAnalystAgent.js +65 -0
  327. package/dist/src/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
  328. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
  329. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
  330. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
  331. package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
  332. package/dist/src/workflow-design/index.d.ts +12 -0
  333. package/dist/src/workflow-design/index.d.ts.map +1 -0
  334. package/dist/src/workflow-design/index.js +23 -0
  335. package/dist/src/workflow-design/index.js.map +1 -0
  336. package/dist/src/workflow-design/n8n-node-templates-data.d.ts +4 -0
  337. package/dist/src/workflow-design/n8n-node-templates-data.d.ts.map +1 -0
  338. package/dist/src/workflow-design/n8n-node-templates-data.js +290 -0
  339. package/dist/src/workflow-design/n8n-node-templates-data.js.map +1 -0
  340. package/dist/src/workflow-design/types.d.ts +155 -0
  341. package/dist/src/workflow-design/types.d.ts.map +1 -0
  342. package/dist/src/workflow-design/types.js +6 -0
  343. package/dist/src/workflow-design/types.js.map +1 -0
  344. package/dist/workflow-design/DocumentExtractorAgent.d.ts +47 -0
  345. package/dist/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
  346. package/dist/workflow-design/DocumentExtractorAgent.js +118 -0
  347. package/dist/workflow-design/DocumentExtractorAgent.js.map +1 -0
  348. package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
  349. package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
  350. package/dist/workflow-design/N8nNodeKnowledgeBase.js +320 -0
  351. package/dist/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
  352. package/dist/workflow-design/OctoAgentClient.d.ts +42 -0
  353. package/dist/workflow-design/OctoAgentClient.d.ts.map +1 -0
  354. package/dist/workflow-design/OctoAgentClient.js +166 -0
  355. package/dist/workflow-design/OctoAgentClient.js.map +1 -0
  356. package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
  357. package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
  358. package/dist/workflow-design/WorkflowDesignOrchestrator.js +265 -0
  359. package/dist/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
  360. package/dist/workflow-design/agents/ActionChainAgent.d.ts +9 -0
  361. package/dist/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
  362. package/dist/workflow-design/agents/ActionChainAgent.js +79 -0
  363. package/dist/workflow-design/agents/ActionChainAgent.js.map +1 -0
  364. package/dist/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
  365. package/dist/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
  366. package/dist/workflow-design/agents/CodeScriptAgent.js +96 -0
  367. package/dist/workflow-design/agents/CodeScriptAgent.js.map +1 -0
  368. package/dist/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
  369. package/dist/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
  370. package/dist/workflow-design/agents/LogicFlowAgent.js +78 -0
  371. package/dist/workflow-design/agents/LogicFlowAgent.js.map +1 -0
  372. package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
  373. package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
  374. package/dist/workflow-design/agents/TriggerAnalystAgent.js +65 -0
  375. package/dist/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
  376. package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
  377. package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
  378. package/dist/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
  379. package/dist/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
  380. package/dist/workflow-design/index.d.ts +12 -0
  381. package/dist/workflow-design/index.d.ts.map +1 -0
  382. package/dist/workflow-design/index.js +23 -0
  383. package/dist/workflow-design/index.js.map +1 -0
  384. package/dist/workflow-design/types.d.ts +155 -0
  385. package/dist/workflow-design/types.d.ts.map +1 -0
  386. package/dist/workflow-design/types.js +6 -0
  387. package/dist/workflow-design/types.js.map +1 -0
  388. package/package.json +21 -14
  389. package/web/components/CreateWorkspaceDialog.tsx +157 -0
  390. package/web/components/DirBrowser.tsx +85 -0
  391. package/web/components/GithubTokenDialog.tsx +152 -0
  392. package/web/components/LocalPathSection.tsx +91 -0
  393. package/web/components/MarketInstallDialog.tsx +196 -0
  394. package/web/components/MarketSkillCard.tsx +74 -0
  395. package/web/components/RepoList.tsx +97 -0
  396. package/web/components/SearchResultsGrid.tsx +55 -0
  397. package/web/components/SkillCard.tsx +4 -1
  398. package/web/components/ToolCard.tsx +88 -0
  399. package/web/components/WorkspaceCard.tsx +146 -0
  400. package/web/components/WorkspaceItem.tsx +65 -0
  401. package/web/components/WorkspaceSelect.tsx +94 -0
  402. package/web/dist/module.iife.js +254 -0
  403. package/web/dynamic-entry.tsx +94 -0
  404. package/web/index.ts +18 -1
  405. package/web/manifest.ts +7 -0
  406. package/web/messages/en-US.json +231 -7
  407. package/web/messages/zh-CN.json +234 -7
  408. package/web/pages/AgentMarketPage.tsx +318 -0
  409. package/web/pages/AgentRunsPage.tsx +162 -0
  410. package/web/pages/AgentsPage.tsx +239 -0
  411. package/web/pages/AiCliToolsPage.tsx +17 -128
  412. package/web/pages/ApprovalsPage.tsx +260 -0
  413. package/web/pages/OrchestratorPage.tsx +384 -0
  414. package/web/pages/SessionsPage.tsx +248 -0
  415. package/web/pages/SkillMarketPage.tsx +25 -0
  416. package/web/pages/WorkspaceSection.tsx +13 -113
  417. package/web/pages/WorkspacesPage.tsx +29 -254
  418. package/web/services/agent-approval.service.ts +35 -0
  419. package/web/services/agent-gateway.service.ts +41 -0
  420. package/web/services/agent-run.service.ts +48 -0
  421. package/web/services/agent-session.service.ts +30 -0
  422. package/web/services/ai-cli-service.ts +33 -0
  423. package/web/services/external-agent.service.ts +38 -0
  424. package/web/services/orchestrator.service.ts +52 -0
  425. package/web/services/skill-market-service.ts +88 -0
  426. package/web/services/skill-service.ts +12 -0
@@ -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"}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SYSTEM_PROMPT_COMPUTER_USE = exports.IMAGE_RESULT_PREFIX = void 0;
4
+ exports.createComputerUseTools = createComputerUseTools;
5
+ // ============================================================
6
+ // Sentinel prefix used to signal an image tool result.
7
+ // OctoAgentClient.run() detects this and wraps it in an
8
+ // Anthropic ImageBlockParam so Claude can see the screenshot.
9
+ // ============================================================
10
+ exports.IMAGE_RESULT_PREFIX = '[IMAGE:png]';
11
+ exports.SYSTEM_PROMPT_COMPUTER_USE = `You are an AI agent that can control the desktop computer.
12
+ You have access to these tools:
13
+ - screenshot: take a screenshot to see the current state of the screen
14
+ - left_click: click at a specific (x, y) coordinate
15
+ - type: type text into the focused element
16
+ - scroll: scroll up or down at a screen position
17
+ - key: press a key or key combination (e.g. "enter", "ctrl+c")
18
+
19
+ To complete a task:
20
+ 1. Start by taking a screenshot to understand the current state of the screen.
21
+ 2. Identify what needs to be done based on the screenshot.
22
+ 3. Use the appropriate tools to interact with the UI.
23
+ 4. Take follow-up screenshots to verify your actions had the intended effect.
24
+ 5. Repeat until the task is complete, then summarize what you did.
25
+
26
+ Important:
27
+ - Always verify actions with a screenshot after significant interactions.
28
+ - Use the "key" tool for keyboard shortcuts (e.g. "enter" to confirm, "escape" to cancel).
29
+ - Coordinate (0, 0) is the top-left corner of the screen.
30
+ - Be precise with coordinates — click the center of buttons and input fields.`;
31
+ // ============================================================
32
+ // Tool factory
33
+ // ============================================================
34
+ /**
35
+ * Creates the computer-use tool set for agent loops.
36
+ *
37
+ * Screenshot results use the `[IMAGE:png]<base64>` sentinel so
38
+ * OctoAgentClient can pass them as Anthropic ImageBlockParam,
39
+ * enabling Claude to see and reason about the screen content.
40
+ *
41
+ * macOS: grant Accessibility + Screen Recording to Terminal/Node.
42
+ * Windows/Linux: no extra permissions required.
43
+ */
44
+ function createComputerUseTools() {
45
+ return [
46
+ screenshotTool(),
47
+ leftClickTool(),
48
+ typeTool(),
49
+ scrollTool(),
50
+ keyTool(),
51
+ ];
52
+ }
53
+ // ── screenshot ────────────────────────────────────────────────
54
+ function screenshotTool() {
55
+ return {
56
+ name: 'screenshot',
57
+ description: 'Take a screenshot of the current screen and return it as an image. ' +
58
+ 'Use this to observe the current state of the desktop or any application.',
59
+ parameters: {
60
+ type: 'object',
61
+ properties: {},
62
+ required: [],
63
+ },
64
+ async execute(_args) {
65
+ try {
66
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
67
+ const { Monitor } = require('node-screenshots');
68
+ const monitors = Monitor.all();
69
+ if (monitors.length === 0)
70
+ return 'Error: no monitors found';
71
+ const monitor = monitors[0];
72
+ const image = await monitor.captureImage();
73
+ const pngBuffer = await image.toPng();
74
+ const base64 = pngBuffer.toString('base64');
75
+ return `${exports.IMAGE_RESULT_PREFIX}${base64}`;
76
+ }
77
+ catch (err) {
78
+ return `Error taking screenshot: ${err instanceof Error ? err.message : String(err)}`;
79
+ }
80
+ },
81
+ };
82
+ }
83
+ // ── left_click ────────────────────────────────────────────────
84
+ function leftClickTool() {
85
+ return {
86
+ name: 'left_click',
87
+ description: 'Move the mouse cursor to screen coordinates (x, y) and perform a left click.',
88
+ parameters: {
89
+ type: 'object',
90
+ properties: {
91
+ x: { type: 'number', description: 'Horizontal pixel coordinate (from left edge of screen).' },
92
+ y: { type: 'number', description: 'Vertical pixel coordinate (from top edge of screen).' },
93
+ },
94
+ required: ['x', 'y'],
95
+ },
96
+ async execute(args) {
97
+ const { x, y } = args;
98
+ try {
99
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
100
+ const { mouse } = require('@nut-tree/nut-js');
101
+ await mouse.setPosition({ x, y });
102
+ await mouse.leftClick();
103
+ return `Clicked at (${x}, ${y})`;
104
+ }
105
+ catch (err) {
106
+ return `Error clicking at (${x}, ${y}): ${err instanceof Error ? err.message : String(err)}`;
107
+ }
108
+ },
109
+ };
110
+ }
111
+ // ── type ──────────────────────────────────────────────────────
112
+ function typeTool() {
113
+ return {
114
+ name: 'type',
115
+ description: 'Type text into the currently focused input field or application. ' +
116
+ 'Simulates keyboard keystrokes character by character.',
117
+ parameters: {
118
+ type: 'object',
119
+ properties: {
120
+ text: { type: 'string', description: 'Text to type. Supports printable ASCII characters.' },
121
+ },
122
+ required: ['text'],
123
+ },
124
+ async execute(args) {
125
+ const { text } = args;
126
+ try {
127
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
128
+ const { keyboard } = require('@nut-tree/nut-js');
129
+ await keyboard.type(text);
130
+ return `Typed: ${text.slice(0, 50)}${text.length > 50 ? '...' : ''}`;
131
+ }
132
+ catch (err) {
133
+ return `Error typing text: ${err instanceof Error ? err.message : String(err)}`;
134
+ }
135
+ },
136
+ };
137
+ }
138
+ // ── scroll ────────────────────────────────────────────────────
139
+ function scrollTool() {
140
+ return {
141
+ name: 'scroll',
142
+ description: 'Scroll the mouse wheel at the given screen position. ' +
143
+ 'Positive dy scrolls up; negative dy scrolls down.',
144
+ parameters: {
145
+ type: 'object',
146
+ properties: {
147
+ x: { type: 'number', description: 'Horizontal coordinate to scroll at.' },
148
+ y: { type: 'number', description: 'Vertical coordinate to scroll at.' },
149
+ dy: { type: 'number', description: 'Scroll amount: positive = up, negative = down (e.g. 3 or -3).' },
150
+ },
151
+ required: ['x', 'y', 'dy'],
152
+ },
153
+ async execute(args) {
154
+ const { x, y, dy } = args;
155
+ try {
156
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
157
+ const { mouse } = require('@nut-tree/nut-js');
158
+ await mouse.setPosition({ x, y });
159
+ const amount = Math.abs(Math.round(dy));
160
+ if (dy > 0) {
161
+ await mouse.scrollUp(amount);
162
+ }
163
+ else {
164
+ await mouse.scrollDown(amount);
165
+ }
166
+ return `Scrolled ${dy > 0 ? 'up' : 'down'} ${amount} at (${x}, ${y})`;
167
+ }
168
+ catch (err) {
169
+ return `Error scrolling: ${err instanceof Error ? err.message : String(err)}`;
170
+ }
171
+ },
172
+ };
173
+ }
174
+ // ── key ───────────────────────────────────────────────────────
175
+ function keyTool() {
176
+ return {
177
+ name: 'key',
178
+ description: 'Press a keyboard key or key combination. ' +
179
+ 'Examples: "enter", "escape", "ctrl+c", "cmd+tab", "ctrl+shift+t".',
180
+ parameters: {
181
+ type: 'object',
182
+ properties: {
183
+ keys: {
184
+ type: 'string',
185
+ description: 'Key or key combination to press. ' +
186
+ 'Single key: "enter", "escape", "tab", "space", "backspace". ' +
187
+ 'Combination: "ctrl+c", "cmd+v", "alt+f4", "ctrl+shift+t".',
188
+ },
189
+ },
190
+ required: ['keys'],
191
+ },
192
+ async execute(args) {
193
+ const { keys } = args;
194
+ try {
195
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-explicit-any
196
+ const { keyboard, Key } = require('@nut-tree/nut-js');
197
+ const resolved = parseKeys(keys, Key);
198
+ if (resolved.length === 0)
199
+ return `Unknown key: ${keys}`;
200
+ await keyboard.pressKey(...resolved);
201
+ await keyboard.releaseKey(...resolved);
202
+ return `Pressed: ${keys}`;
203
+ }
204
+ catch (err) {
205
+ return `Error pressing key "${keys}": ${err instanceof Error ? err.message : String(err)}`;
206
+ }
207
+ },
208
+ };
209
+ }
210
+ function parseKeys(input, Key) {
211
+ const parts = input.toLowerCase().split('+').map((s) => s.trim());
212
+ return parts.map((p) => resolveKey(p, Key)).filter((k) => k !== undefined);
213
+ }
214
+ function resolveKey(name, Key) {
215
+ const map = {
216
+ enter: Key.Enter,
217
+ return: Key.Return,
218
+ escape: Key.Escape,
219
+ esc: Key.Escape,
220
+ tab: Key.Tab,
221
+ space: Key.Space,
222
+ backspace: Key.Backspace,
223
+ delete: Key.Delete,
224
+ del: Key.Delete,
225
+ home: Key.Home,
226
+ end: Key.End,
227
+ pageup: Key.PageUp,
228
+ pagedown: Key.PageDown,
229
+ up: Key.Up,
230
+ down: Key.Down,
231
+ left: Key.Left,
232
+ right: Key.Right,
233
+ ctrl: Key.LeftControl,
234
+ control: Key.LeftControl,
235
+ shift: Key.LeftShift,
236
+ alt: Key.LeftAlt,
237
+ option: Key.LeftAlt,
238
+ cmd: Key.LeftCmd,
239
+ command: Key.LeftCmd,
240
+ win: Key.LeftWin,
241
+ super: Key.LeftWin,
242
+ a: Key.A, b: Key.B, c: Key.C, d: Key.D, e: Key.E, f: Key.F,
243
+ g: Key.G, h: Key.H, i: Key.I, j: Key.J, k: Key.K, l: Key.L,
244
+ m: Key.M, n: Key.N, o: Key.O, p: Key.P, q: Key.Q, r: Key.R,
245
+ s: Key.S, t: Key.T, u: Key.U, v: Key.V, w: Key.W, x: Key.X,
246
+ y: Key.Y, z: Key.Z,
247
+ '0': Key.Num0, '1': Key.Num1, '2': Key.Num2, '3': Key.Num3,
248
+ '4': Key.Num4, '5': Key.Num5, '6': Key.Num6, '7': Key.Num7,
249
+ '8': Key.Num8, '9': Key.Num9,
250
+ f1: Key.F1, f2: Key.F2, f3: Key.F3, f4: Key.F4, f5: Key.F5,
251
+ f6: Key.F6, f7: Key.F7, f8: Key.F8, f9: Key.F9, f10: Key.F10,
252
+ f11: Key.F11, f12: Key.F12,
253
+ };
254
+ return map[name];
255
+ }
256
+ //# sourceMappingURL=computer-use-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computer-use-tools.js","sourceRoot":"","sources":["../../../src/agent/computer-use-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Request, Response } from '@octo-cyber/core';
2
+ /**
3
+ * ExternalAgentController — HTTP API for external agent self-management.
4
+ *
5
+ * Endpoints:
6
+ * POST /api/v1/agents/external/register — Register or update an external agent
7
+ * POST /api/v1/agents/external/heartbeat — Send a heartbeat to stay online
8
+ * POST /api/v1/agents/external/unregister — Mark the agent as offline
9
+ * GET /api/v1/agents/external — List all external agents
10
+ */
11
+ export declare class ExternalAgentController {
12
+ private get service();
13
+ /**
14
+ * Register or update an external agent (upsert by agentId).
15
+ *
16
+ * Body:
17
+ * agentId {string} — Caller-chosen unique identifier
18
+ * name {string} — Human-readable agent name
19
+ * description {string?} — Optional description
20
+ * endpoint {string} — HTTP URL that accepts POST task payloads
21
+ * capabilities {string[]?} — Optional list of capability tags
22
+ */
23
+ registerAgent(req: Request, res: Response): Promise<void>;
24
+ /**
25
+ * Send a heartbeat for the given agentId.
26
+ *
27
+ * Body:
28
+ * agentId {string}
29
+ */
30
+ heartbeat(req: Request, res: Response): Promise<void>;
31
+ /**
32
+ * Unregister (mark offline) the given external agent.
33
+ *
34
+ * Body:
35
+ * agentId {string}
36
+ */
37
+ unregisterAgent(req: Request, res: Response): Promise<void>;
38
+ /** List all external agents (newest first). */
39
+ listAgents(_req: Request, res: Response): Promise<void>;
40
+ }
41
+ //# sourceMappingURL=external-agent.controller.d.ts.map