@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 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/workflow-design/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@octo-cyber/ai",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
4
4
  "description": "Octo AI module — Agent + Capability + SyncBridge + client registration",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
5
+ "main": "dist/src/index.js",
6
+ "types": "dist/src/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.js",
11
- "default": "./dist/index.js"
9
+ "types": "./dist/src/index.d.ts",
10
+ "import": "./dist/src/index.js",
11
+ "default": "./dist/src/index.js"
12
12
  },
13
13
  "./web": {
14
14
  "types": "./web/index.ts",
@@ -22,22 +22,27 @@
22
22
  }
23
23
  },
24
24
  "dependencies": {
25
- "@octo-cyber/core": "^0.5.4",
25
+ "@anthropic-ai/sdk": "^0.80.0",
26
+ "node-screenshots": "^0.2.8",
26
27
  "@octo-cyber/auth": "^0.5.6",
28
+ "@octo-cyber/core": "^0.5.4",
27
29
  "@octo-cyber/task": "^0.5.3"
28
30
  },
31
+ "optionalDependencies": {
32
+ "@nut-tree/nut-js": "^4.2.0"
33
+ },
29
34
  "peerDependencies": {
30
- "react": "^19.0.0",
31
- "react-dom": "^19.0.0",
35
+ "@hookform/resolvers": "^5.0.0",
36
+ "@tanstack/react-table": "^8.0.0",
37
+ "lucide-react": ">=0.400.0",
32
38
  "next": "^16.0.0",
33
39
  "next-intl": "^4.0.0",
34
- "lucide-react": ">=0.400.0",
40
+ "react": "^19.0.0",
41
+ "react-dom": "^19.0.0",
35
42
  "react-hook-form": "^7.0.0",
36
- "@hookform/resolvers": "^5.0.0",
37
- "@tanstack/react-table": "^8.0.0",
38
- "zod": "^3.0.0",
39
43
  "sonner": "^2.0.0",
40
- "@octo-cyber/ui": "^0.5.2"
44
+ "zod": "^3.0.0",
45
+ "@octo-cyber/ui": "^0.5.3"
41
46
  },
42
47
  "peerDependenciesMeta": {
43
48
  "@octo-cyber/ui": {
@@ -75,6 +80,7 @@
75
80
  }
76
81
  },
77
82
  "devDependencies": {
83
+ "@types/node": "^22.0.0",
78
84
  "@types/react": "^19",
79
85
  "@types/react-dom": "^19",
80
86
  "typescript": "^5.8.0",
@@ -0,0 +1,157 @@
1
+ 'use client'
2
+
3
+ import { useState } from 'react'
4
+ import { useTranslations } from 'next-intl'
5
+ import { toast } from 'sonner'
6
+ import { FolderOpen, Github, Loader2 } from 'lucide-react'
7
+
8
+ import { Button } from '@octo-cyber/ui/components/ui/button'
9
+ import { Input } from '@octo-cyber/ui/components/ui/input'
10
+ import { Label } from '@octo-cyber/ui/components/ui/label'
11
+ import { Textarea } from '@octo-cyber/ui/components/ui/textarea'
12
+ import {
13
+ Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter,
14
+ } from '@octo-cyber/ui/components/ui/dialog'
15
+ import { Tabs, TabsList, TabsTrigger } from '@octo-cyber/ui/components/ui/tabs'
16
+ import { aiCliService } from '../services/ai-cli-service'
17
+ import type { DetectedGitInfo } from '../services/ai-cli-service'
18
+ import { LocalPathSection } from './LocalPathSection'
19
+
20
+ type WorkspaceType = 'local' | 'github'
21
+
22
+ export function CreateWorkspaceDialog({
23
+ open,
24
+ onOpenChange,
25
+ onCreated,
26
+ }: {
27
+ open: boolean
28
+ onOpenChange: (open: boolean) => void
29
+ onCreated: () => void
30
+ }) {
31
+ const t = useTranslations('aiCli.workspaces')
32
+ const tc = useTranslations('common')
33
+
34
+ const [createType, setCreateType] = useState<WorkspaceType>('local')
35
+ const [createName, setCreateName] = useState('')
36
+ const [createDescription, setCreateDescription] = useState('')
37
+ const [createLocalPath, setCreateLocalPath] = useState('')
38
+ const [createRepoUrl, setCreateRepoUrl] = useState('')
39
+ const [createBranch, setCreateBranch] = useState('')
40
+ const [detectedGitInfo, setDetectedGitInfo] = useState<DetectedGitInfo | null>(null)
41
+ const [isCreating, setIsCreating] = useState(false)
42
+
43
+ const resetForm = () => {
44
+ setCreateType('local')
45
+ setCreateName('')
46
+ setCreateDescription('')
47
+ setCreateLocalPath('')
48
+ setCreateRepoUrl('')
49
+ setCreateBranch('')
50
+ setDetectedGitInfo(null)
51
+ }
52
+
53
+ const handleDirSelected = (path: string, suggestedName: string, gitInfo: DetectedGitInfo | null) => {
54
+ if (!createName.trim()) setCreateName(suggestedName)
55
+ setDetectedGitInfo(gitInfo)
56
+ if (gitInfo?.isGitRepo && gitInfo.remoteUrl) setCreateRepoUrl(gitInfo.remoteUrl)
57
+ if (gitInfo?.isGitRepo && gitInfo.branch) setCreateBranch(gitInfo.branch)
58
+ }
59
+
60
+ const handleCreate = async () => {
61
+ if (!createName.trim()) return
62
+ setIsCreating(true)
63
+ try {
64
+ if (createType === 'local') {
65
+ if (!createLocalPath.trim()) return
66
+ await aiCliService.createWorkspace({
67
+ type: 'local', name: createName.trim(),
68
+ description: createDescription.trim() || undefined,
69
+ localPath: createLocalPath.trim(),
70
+ repoUrl: detectedGitInfo?.remoteUrl || undefined,
71
+ branch: detectedGitInfo?.branch || undefined,
72
+ })
73
+ } else {
74
+ if (!createRepoUrl.trim() || !createBranch.trim()) return
75
+ await aiCliService.createWorkspace({
76
+ type: 'github', name: createName.trim(),
77
+ description: createDescription.trim() || undefined,
78
+ repoUrl: createRepoUrl.trim(),
79
+ branch: createBranch.trim(),
80
+ })
81
+ }
82
+ onOpenChange(false)
83
+ resetForm()
84
+ onCreated()
85
+ } catch {
86
+ toast.error(t('toast.createFailed'))
87
+ } finally {
88
+ setIsCreating(false)
89
+ }
90
+ }
91
+
92
+ const isValid = createName.trim() !== '' && (
93
+ createType === 'local'
94
+ ? createLocalPath.trim() !== ''
95
+ : createRepoUrl.trim() !== '' && createBranch.trim() !== ''
96
+ )
97
+
98
+ const handleOpenChange = (nextOpen: boolean) => {
99
+ if (!nextOpen) resetForm()
100
+ onOpenChange(nextOpen)
101
+ }
102
+
103
+ return (
104
+ <Dialog open={open} onOpenChange={handleOpenChange}>
105
+ <DialogContent className="sm:max-w-lg">
106
+ <DialogHeader>
107
+ <DialogTitle>{t('createDialog.title')}</DialogTitle>
108
+ <DialogDescription>{t('createDialog.description')}</DialogDescription>
109
+ </DialogHeader>
110
+ <div className="space-y-4">
111
+ <Tabs value={createType} onValueChange={(v) => setCreateType(v as WorkspaceType)}>
112
+ <TabsList className="grid w-full grid-cols-2">
113
+ <TabsTrigger value="local"><FolderOpen className="mr-1 h-3 w-3" />{t('createDialog.typeLocal')}</TabsTrigger>
114
+ <TabsTrigger value="github"><Github className="mr-1 h-3 w-3" />{t('createDialog.typeGithub')}</TabsTrigger>
115
+ </TabsList>
116
+ </Tabs>
117
+
118
+ {createType === 'local' ? (
119
+ <LocalPathSection
120
+ localPath={createLocalPath}
121
+ onLocalPathChange={setCreateLocalPath}
122
+ onDirSelected={handleDirSelected}
123
+ t={t}
124
+ />
125
+ ) : (
126
+ <>
127
+ <div className="space-y-2">
128
+ <Label>{t('createDialog.repoUrlLabel')}</Label>
129
+ <Input placeholder={t('createDialog.repoUrlPlaceholder')} value={createRepoUrl} onChange={(e) => setCreateRepoUrl(e.target.value)} />
130
+ </div>
131
+ <div className="space-y-2">
132
+ <Label>{t('createDialog.branchLabel')}</Label>
133
+ <Input placeholder={t('createDialog.branchPlaceholder')} value={createBranch} onChange={(e) => setCreateBranch(e.target.value)} />
134
+ </div>
135
+ </>
136
+ )}
137
+
138
+ <div className="space-y-2">
139
+ <Label>{t('createDialog.nameLabel')}</Label>
140
+ <Input placeholder={t('createDialog.namePlaceholder')} value={createName} onChange={(e) => setCreateName(e.target.value)} />
141
+ </div>
142
+ <div className="space-y-2">
143
+ <Label>{t('createDialog.descriptionLabel')}</Label>
144
+ <Textarea placeholder={t('createDialog.descriptionPlaceholder')} value={createDescription} onChange={(e) => setCreateDescription(e.target.value)} rows={2} />
145
+ </div>
146
+ </div>
147
+ <DialogFooter>
148
+ <Button variant="outline" onClick={() => handleOpenChange(false)}>{tc('cancel')}</Button>
149
+ <Button onClick={handleCreate} disabled={isCreating || !isValid}>
150
+ {isCreating && <Loader2 className="mr-1 h-3 w-3 animate-spin" />}
151
+ {tc('create')}
152
+ </Button>
153
+ </DialogFooter>
154
+ </DialogContent>
155
+ </Dialog>
156
+ )
157
+ }
@@ -0,0 +1,85 @@
1
+ 'use client'
2
+
3
+ import { useState, useEffect, useCallback } from 'react'
4
+ import { useTranslations } from 'next-intl'
5
+ import { FolderOpen, ChevronUp, Check, Loader2 } from 'lucide-react'
6
+
7
+ import { Button } from '@octo-cyber/ui/components/ui/button'
8
+ import { aiCliService } from '../services/ai-cli-service'
9
+ import type { DirEntry } from '../services/ai-cli-service'
10
+
11
+ export function DirBrowser({
12
+ onSelect,
13
+ initialPath = '/',
14
+ }: {
15
+ onSelect: (path: string) => void
16
+ initialPath?: string
17
+ }) {
18
+ const t = useTranslations('aiCli.workspaces.createDialog')
19
+ const [currentPath, setCurrentPath] = useState(initialPath)
20
+ const [entries, setEntries] = useState<DirEntry[]>([])
21
+ const [loading, setLoading] = useState(false)
22
+
23
+ const loadDir = useCallback(async (dirPath: string) => {
24
+ setLoading(true)
25
+ try {
26
+ const data = await aiCliService.browseDir(dirPath)
27
+ setEntries(data)
28
+ setCurrentPath(dirPath)
29
+ } catch {
30
+ setEntries([])
31
+ } finally {
32
+ setLoading(false)
33
+ }
34
+ }, [])
35
+
36
+ useEffect(() => {
37
+ loadDir(initialPath)
38
+ }, [initialPath, loadDir])
39
+
40
+ const goUp = () => {
41
+ const parent = currentPath.replace(/\/[^/]+\/?$/, '') || '/'
42
+ loadDir(parent)
43
+ }
44
+
45
+ return (
46
+ <div className="border rounded-md">
47
+ <div className="flex items-center gap-1 p-2 border-b bg-muted/50">
48
+ <Button variant="ghost" size="sm" className="h-7 px-2" onClick={goUp}>
49
+ <ChevronUp className="h-3 w-3 mr-1" />
50
+ {t('parentDir')}
51
+ </Button>
52
+ <span className="text-xs text-muted-foreground truncate flex-1" title={currentPath}>
53
+ {currentPath}
54
+ </span>
55
+ <Button size="sm" className="h-7" onClick={() => onSelect(currentPath)}>
56
+ <Check className="h-3 w-3 mr-1" />
57
+ {t('selectThisDir')}
58
+ </Button>
59
+ </div>
60
+ <div className="max-h-48 overflow-y-auto">
61
+ {loading ? (
62
+ <div className="flex items-center justify-center py-6">
63
+ <Loader2 className="h-4 w-4 animate-spin text-muted-foreground" />
64
+ </div>
65
+ ) : entries.length === 0 ? (
66
+ <div className="flex items-center justify-center py-6">
67
+ <p className="text-xs text-muted-foreground">{t('emptyDir')}</p>
68
+ </div>
69
+ ) : (
70
+ entries.map((entry) => (
71
+ <button
72
+ key={entry.path}
73
+ type="button"
74
+ className="flex items-center gap-2 w-full px-3 py-1.5 text-left text-sm hover:bg-accent transition-colors"
75
+ onClick={() => loadDir(entry.path)}
76
+ >
77
+ <FolderOpen className="h-3.5 w-3.5 text-muted-foreground shrink-0" />
78
+ <span className="truncate">{entry.name}</span>
79
+ </button>
80
+ ))
81
+ )}
82
+ </div>
83
+ </div>
84
+ )
85
+ }
@@ -0,0 +1,152 @@
1
+ 'use client'
2
+
3
+ import { useState, useEffect } from 'react'
4
+ import { useTranslations } from 'next-intl'
5
+ import { toast } from 'sonner'
6
+ import { Loader2, AlertTriangle, CheckCircle2 } from 'lucide-react'
7
+
8
+ import { Button } from '@octo-cyber/ui/components/ui/button'
9
+ import { Input } from '@octo-cyber/ui/components/ui/input'
10
+ import { Label } from '@octo-cyber/ui/components/ui/label'
11
+ import { Badge } from '@octo-cyber/ui/components/ui/badge'
12
+ import {
13
+ Dialog,
14
+ DialogContent,
15
+ DialogHeader,
16
+ DialogTitle,
17
+ DialogDescription,
18
+ DialogFooter,
19
+ } from '@octo-cyber/ui/components/ui/dialog'
20
+ import { skillMarketService } from '../services/skill-market-service'
21
+ import type { GithubTokenStatus } from '../services/skill-market-service'
22
+
23
+ export function GithubTokenDialog({
24
+ open,
25
+ onOpenChange,
26
+ }: {
27
+ open: boolean
28
+ onOpenChange: (open: boolean) => void
29
+ }) {
30
+ const t = useTranslations('aiSkillMarket.tokenConfig')
31
+ const tc = useTranslations('common')
32
+
33
+ const [status, setStatus] = useState<GithubTokenStatus | null>(null)
34
+ const [tokenInput, setTokenInput] = useState('')
35
+ const [loading, setLoading] = useState(false)
36
+ const [saving, setSaving] = useState(false)
37
+
38
+ useEffect(() => {
39
+ if (!open) return
40
+ setLoading(true)
41
+ skillMarketService.getTokenStatus()
42
+ .then(setStatus)
43
+ .catch(() => setStatus(null))
44
+ .finally(() => setLoading(false))
45
+ }, [open])
46
+
47
+ const handleSave = async () => {
48
+ if (!tokenInput.trim()) return
49
+ setSaving(true)
50
+ try {
51
+ const newStatus = await skillMarketService.setToken(tokenInput.trim())
52
+ setStatus(newStatus)
53
+ setTokenInput('')
54
+ toast.success(t('saved'))
55
+ } catch {
56
+ toast.error(t('saveFailed'))
57
+ } finally {
58
+ setSaving(false)
59
+ }
60
+ }
61
+
62
+ const handleClear = async () => {
63
+ setSaving(true)
64
+ try {
65
+ const newStatus = await skillMarketService.clearToken()
66
+ setStatus(newStatus)
67
+ setTokenInput('')
68
+ toast.success(t('cleared'))
69
+ } catch {
70
+ toast.error(t('saveFailed'))
71
+ } finally {
72
+ setSaving(false)
73
+ }
74
+ }
75
+
76
+ return (
77
+ <Dialog open={open} onOpenChange={onOpenChange}>
78
+ <DialogContent className="sm:max-w-md">
79
+ <DialogHeader>
80
+ <DialogTitle>{t('title')}</DialogTitle>
81
+ <DialogDescription>{t('description')}</DialogDescription>
82
+ </DialogHeader>
83
+
84
+ {loading ? (
85
+ <div className="flex items-center justify-center py-6">
86
+ <Loader2 className="h-5 w-5 animate-spin text-muted-foreground" />
87
+ </div>
88
+ ) : (
89
+ <div className="space-y-4">
90
+ {/* Current status */}
91
+ {status?.hasToken ? (
92
+ <div className="flex items-center gap-2 rounded-md border p-3 bg-muted/30">
93
+ <CheckCircle2 className="h-4 w-4 text-green-500 shrink-0" />
94
+ <div className="flex-1 min-w-0">
95
+ <p className="text-sm font-medium">{t('currentToken')}</p>
96
+ <p className="text-xs text-muted-foreground font-mono truncate">
97
+ {status.maskedToken}
98
+ </p>
99
+ </div>
100
+ <Badge variant="outline" className="text-xs shrink-0">
101
+ {status.source === 'env' ? t('sourceEnv') : t('sourceConfig')}
102
+ </Badge>
103
+ </div>
104
+ ) : (
105
+ <div className="flex items-start gap-2 rounded-md border border-yellow-500/30 p-3 bg-yellow-500/5">
106
+ <AlertTriangle className="h-4 w-4 text-yellow-500 shrink-0 mt-0.5" />
107
+ <div>
108
+ <p className="text-sm font-medium">{t('noToken')}</p>
109
+ <p className="text-xs text-muted-foreground">{t('noTokenHint')}</p>
110
+ </div>
111
+ </div>
112
+ )}
113
+
114
+ {/* Token input */}
115
+ <div className="space-y-2">
116
+ <Label>{t('inputLabel')}</Label>
117
+ <Input
118
+ type="password"
119
+ placeholder={t('inputPlaceholder')}
120
+ value={tokenInput}
121
+ onChange={(e) => setTokenInput(e.target.value)}
122
+ />
123
+ </div>
124
+ </div>
125
+ )}
126
+
127
+ <DialogFooter className="gap-2">
128
+ {status?.hasToken && status.source === 'config' && (
129
+ <Button
130
+ variant="outline"
131
+ onClick={handleClear}
132
+ disabled={saving}
133
+ className="text-destructive hover:text-destructive"
134
+ >
135
+ {t('clear')}
136
+ </Button>
137
+ )}
138
+ <Button variant="outline" onClick={() => onOpenChange(false)}>
139
+ {tc('cancel')}
140
+ </Button>
141
+ <Button
142
+ onClick={handleSave}
143
+ disabled={saving || !tokenInput.trim()}
144
+ >
145
+ {saving && <Loader2 className="mr-1 h-3 w-3 animate-spin" />}
146
+ {t('save')}
147
+ </Button>
148
+ </DialogFooter>
149
+ </DialogContent>
150
+ </Dialog>
151
+ )
152
+ }
@@ -0,0 +1,91 @@
1
+ 'use client'
2
+
3
+ import { useState } from 'react'
4
+ import { Search, Loader2, GitBranch } from 'lucide-react'
5
+ import { useTranslations } from 'next-intl'
6
+ import { Button } from '@octo-cyber/ui/components/ui/button'
7
+ import { Badge } from '@octo-cyber/ui/components/ui/badge'
8
+ import { Input } from '@octo-cyber/ui/components/ui/input'
9
+ import { Label } from '@octo-cyber/ui/components/ui/label'
10
+ import { aiCliService } from '../services/ai-cli-service'
11
+ import type { DetectedGitInfo } from '../services/ai-cli-service'
12
+ import { DirBrowser } from './DirBrowser'
13
+
14
+ interface LocalPathSectionProps {
15
+ localPath: string
16
+ onLocalPathChange: (path: string) => void
17
+ onDirSelected: (path: string, suggestedName: string, gitInfo: DetectedGitInfo | null) => void
18
+ t: ReturnType<typeof useTranslations>
19
+ }
20
+
21
+ export function LocalPathSection({ localPath, onLocalPathChange, onDirSelected, t }: LocalPathSectionProps) {
22
+ const [showBrowser, setShowBrowser] = useState(false)
23
+ const [gitInfo, setGitInfo] = useState<DetectedGitInfo | null>(null)
24
+ const [isDetectingGit, setIsDetectingGit] = useState(false)
25
+
26
+ const handleDirSelect = async (dirPath: string) => {
27
+ onLocalPathChange(dirPath)
28
+ setShowBrowser(false)
29
+ const suggestedName = dirPath.split('/').filter(Boolean).pop() || ''
30
+ setIsDetectingGit(true)
31
+ setGitInfo(null)
32
+ let detected: DetectedGitInfo | null = null
33
+ try {
34
+ detected = await aiCliService.detectGit(dirPath)
35
+ setGitInfo(detected)
36
+ } catch {
37
+ detected = null
38
+ } finally {
39
+ setIsDetectingGit(false)
40
+ }
41
+ onDirSelected(dirPath, suggestedName, detected)
42
+ }
43
+
44
+ return (
45
+ <>
46
+ <div className="space-y-2">
47
+ <Label>{t('createDialog.localPathLabel')}</Label>
48
+ <div className="flex gap-2">
49
+ <Input
50
+ className="flex-1"
51
+ placeholder={t('createDialog.localPathPlaceholder')}
52
+ value={localPath}
53
+ onChange={(e) => onLocalPathChange(e.target.value)}
54
+ />
55
+ <Button type="button" variant="outline" size="sm" onClick={() => setShowBrowser(!showBrowser)}>
56
+ <Search className="h-3 w-3 mr-1" />
57
+ {t('createDialog.browse')}
58
+ </Button>
59
+ </div>
60
+ {showBrowser && (
61
+ <DirBrowser initialPath={localPath || '/'} onSelect={handleDirSelect} />
62
+ )}
63
+ </div>
64
+ {(isDetectingGit || gitInfo) && (
65
+ <div className="flex items-center gap-2 text-xs">
66
+ {isDetectingGit ? (
67
+ <>
68
+ <Loader2 className="h-3 w-3 animate-spin text-muted-foreground" />
69
+ <span className="text-muted-foreground">{t('createDialog.detecting')}</span>
70
+ </>
71
+ ) : gitInfo?.isGitRepo ? (
72
+ <>
73
+ <GitBranch className="h-3 w-3 text-green-500" />
74
+ <span className="text-green-600 dark:text-green-400">{t('createDialog.gitDetected')}</span>
75
+ {gitInfo.remoteUrl && (
76
+ <span className="text-muted-foreground truncate" title={gitInfo.remoteUrl}>
77
+ {gitInfo.remoteUrl}
78
+ </span>
79
+ )}
80
+ {gitInfo.branch && (
81
+ <Badge variant="outline" className="text-xs">{gitInfo.branch}</Badge>
82
+ )}
83
+ </>
84
+ ) : (
85
+ <span className="text-muted-foreground">{t('createDialog.gitNotDetected')}</span>
86
+ )}
87
+ </div>
88
+ )}
89
+ </>
90
+ )
91
+ }