actoviq-agent-sdk 0.4.7 → 0.4.8

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 (258) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/README-zh.md +8 -5
  3. package/README.md +9 -6
  4. package/assets/actoviq-icon.png +0 -0
  5. package/dist/src/browser/actoviqBrowserSession.d.ts +137 -0
  6. package/dist/src/browser/actoviqBrowserSession.d.ts.map +1 -0
  7. package/dist/src/browser/actoviqBrowserSession.js +623 -0
  8. package/dist/src/browser/actoviqBrowserSession.js.map +1 -0
  9. package/dist/src/browser/actoviqBrowserTools.d.ts +80 -0
  10. package/dist/src/browser/actoviqBrowserTools.d.ts.map +1 -0
  11. package/dist/src/browser/actoviqBrowserTools.js +177 -0
  12. package/dist/src/browser/actoviqBrowserTools.js.map +1 -0
  13. package/dist/src/browser/browserSettings.d.ts +8 -0
  14. package/dist/src/browser/browserSettings.d.ts.map +1 -0
  15. package/dist/src/browser/browserSettings.js +47 -0
  16. package/dist/src/browser/browserSettings.js.map +1 -0
  17. package/dist/src/cli/actoviq-react.js +144 -4
  18. package/dist/src/cli/actoviq-react.js.map +1 -1
  19. package/dist/src/computer/actoviqComputerUse.d.ts.map +1 -1
  20. package/dist/src/computer/actoviqComputerUse.js +226 -40
  21. package/dist/src/computer/actoviqComputerUse.js.map +1 -1
  22. package/dist/src/computer/e2bComputerUse.d.ts +57 -0
  23. package/dist/src/computer/e2bComputerUse.d.ts.map +1 -0
  24. package/dist/src/computer/e2bComputerUse.js +401 -0
  25. package/dist/src/computer/e2bComputerUse.js.map +1 -0
  26. package/dist/src/config/agentProfiles.d.ts +8 -1
  27. package/dist/src/config/agentProfiles.d.ts.map +1 -1
  28. package/dist/src/config/agentProfiles.js +86 -4
  29. package/dist/src/config/agentProfiles.js.map +1 -1
  30. package/dist/src/config/projectSessionDirectory.d.ts +22 -0
  31. package/dist/src/config/projectSessionDirectory.d.ts.map +1 -1
  32. package/dist/src/config/projectSessionDirectory.js +512 -46
  33. package/dist/src/config/projectSessionDirectory.js.map +1 -1
  34. package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
  35. package/dist/src/config/resolveRuntimeConfig.js +12 -7
  36. package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
  37. package/dist/src/gui/actoviqGui.d.ts +3 -0
  38. package/dist/src/gui/actoviqGui.d.ts.map +1 -1
  39. package/dist/src/gui/actoviqGui.js +7247 -997
  40. package/dist/src/gui/actoviqGui.js.map +1 -1
  41. package/dist/src/gui/electronMain.js +21 -4
  42. package/dist/src/gui/electronMain.js.map +1 -1
  43. package/dist/src/gui/externalCliAgentMonitor.d.ts +15 -0
  44. package/dist/src/gui/externalCliAgentMonitor.d.ts.map +1 -0
  45. package/dist/src/gui/externalCliAgentMonitor.js +133 -0
  46. package/dist/src/gui/externalCliAgentMonitor.js.map +1 -0
  47. package/dist/src/gui/projectWorkbench.d.ts +2 -0
  48. package/dist/src/gui/projectWorkbench.d.ts.map +1 -1
  49. package/dist/src/gui/projectWorkbench.js +66 -1
  50. package/dist/src/gui/projectWorkbench.js.map +1 -1
  51. package/dist/src/gui/transcript/clientBundle.d.ts.map +1 -1
  52. package/dist/src/gui/transcript/clientBundle.js +157 -17
  53. package/dist/src/gui/transcript/clientBundle.js.map +1 -1
  54. package/dist/src/gui/transcript/parts.d.ts.map +1 -1
  55. package/dist/src/gui/transcript/parts.js +28 -0
  56. package/dist/src/gui/transcript/parts.js.map +1 -1
  57. package/dist/src/index.d.ts +36 -3
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +22 -2
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parity/actoviqBridgeSdk.d.ts +13 -1
  62. package/dist/src/parity/actoviqBridgeSdk.d.ts.map +1 -1
  63. package/dist/src/parity/actoviqBridgeSdk.js +1022 -83
  64. package/dist/src/parity/actoviqBridgeSdk.js.map +1 -1
  65. package/dist/src/parity/bridgeConfigs.d.ts +15 -0
  66. package/dist/src/parity/bridgeConfigs.d.ts.map +1 -1
  67. package/dist/src/parity/bridgeConfigs.js +112 -3
  68. package/dist/src/parity/bridgeConfigs.js.map +1 -1
  69. package/dist/src/parity/bridgeEventAdapter.d.ts +5 -1
  70. package/dist/src/parity/bridgeEventAdapter.d.ts.map +1 -1
  71. package/dist/src/parity/bridgeEventAdapter.js +65 -12
  72. package/dist/src/parity/bridgeEventAdapter.js.map +1 -1
  73. package/dist/src/parity/bridgeExecResolver.d.ts +10 -11
  74. package/dist/src/parity/bridgeExecResolver.d.ts.map +1 -1
  75. package/dist/src/parity/bridgeExecResolver.js +40 -23
  76. package/dist/src/parity/bridgeExecResolver.js.map +1 -1
  77. package/dist/src/parity/bridgeProcessTree.d.ts +3 -0
  78. package/dist/src/parity/bridgeProcessTree.d.ts.map +1 -0
  79. package/dist/src/parity/bridgeProcessTree.js +83 -0
  80. package/dist/src/parity/bridgeProcessTree.js.map +1 -0
  81. package/dist/src/parity/bridgeProviders.d.ts +16 -2
  82. package/dist/src/parity/bridgeProviders.d.ts.map +1 -1
  83. package/dist/src/parity/bridgeProviders.js +482 -100
  84. package/dist/src/parity/bridgeProviders.js.map +1 -1
  85. package/dist/src/parity/codewhaleRuntimeAdapter.d.ts +18 -0
  86. package/dist/src/parity/codewhaleRuntimeAdapter.d.ts.map +1 -0
  87. package/dist/src/parity/codewhaleRuntimeAdapter.js +350 -0
  88. package/dist/src/parity/codewhaleRuntimeAdapter.js.map +1 -0
  89. package/dist/src/parity/crushManagedClient.d.ts +84 -0
  90. package/dist/src/parity/crushManagedClient.d.ts.map +1 -0
  91. package/dist/src/parity/crushManagedClient.js +978 -0
  92. package/dist/src/parity/crushManagedClient.js.map +1 -0
  93. package/dist/src/parity/crushSessionHistory.d.ts +53 -0
  94. package/dist/src/parity/crushSessionHistory.d.ts.map +1 -0
  95. package/dist/src/parity/crushSessionHistory.js +358 -0
  96. package/dist/src/parity/crushSessionHistory.js.map +1 -0
  97. package/dist/src/parity/externalCliAuth.d.ts +23 -0
  98. package/dist/src/parity/externalCliAuth.d.ts.map +1 -0
  99. package/dist/src/parity/externalCliAuth.js +268 -0
  100. package/dist/src/parity/externalCliAuth.js.map +1 -0
  101. package/dist/src/parity/externalCliRuntimeManager.d.ts +138 -0
  102. package/dist/src/parity/externalCliRuntimeManager.d.ts.map +1 -0
  103. package/dist/src/parity/externalCliRuntimeManager.js +527 -0
  104. package/dist/src/parity/externalCliRuntimeManager.js.map +1 -0
  105. package/dist/src/parity/externalCliSessions.d.ts +90 -0
  106. package/dist/src/parity/externalCliSessions.d.ts.map +1 -0
  107. package/dist/src/parity/externalCliSessions.js +1436 -0
  108. package/dist/src/parity/externalCliSessions.js.map +1 -0
  109. package/dist/src/parity/reasonixAcpSession.d.ts +35 -0
  110. package/dist/src/parity/reasonixAcpSession.d.ts.map +1 -0
  111. package/dist/src/parity/reasonixAcpSession.js +472 -0
  112. package/dist/src/parity/reasonixAcpSession.js.map +1 -0
  113. package/dist/src/parity/reasonixManagedClient.d.ts +56 -0
  114. package/dist/src/parity/reasonixManagedClient.d.ts.map +1 -0
  115. package/dist/src/parity/reasonixManagedClient.js +293 -0
  116. package/dist/src/parity/reasonixManagedClient.js.map +1 -0
  117. package/dist/src/parity/reasonixSessionParser.d.ts +50 -0
  118. package/dist/src/parity/reasonixSessionParser.d.ts.map +1 -0
  119. package/dist/src/parity/reasonixSessionParser.js +440 -0
  120. package/dist/src/parity/reasonixSessionParser.js.map +1 -0
  121. package/dist/src/plugins/githubPlugin.d.ts +64 -0
  122. package/dist/src/plugins/githubPlugin.d.ts.map +1 -0
  123. package/dist/src/plugins/githubPlugin.js +261 -0
  124. package/dist/src/plugins/githubPlugin.js.map +1 -0
  125. package/dist/src/plugins/kimiWebBridgePlugin.d.ts +32 -0
  126. package/dist/src/plugins/kimiWebBridgePlugin.d.ts.map +1 -0
  127. package/dist/src/plugins/kimiWebBridgePlugin.js +214 -0
  128. package/dist/src/plugins/kimiWebBridgePlugin.js.map +1 -0
  129. package/dist/src/plugins/managedPluginCatalog.d.ts +47 -0
  130. package/dist/src/plugins/managedPluginCatalog.d.ts.map +1 -0
  131. package/dist/src/plugins/managedPluginCatalog.js +399 -0
  132. package/dist/src/plugins/managedPluginCatalog.js.map +1 -0
  133. package/dist/src/plugins/managedPluginHealth.d.ts +9 -0
  134. package/dist/src/plugins/managedPluginHealth.d.ts.map +1 -0
  135. package/dist/src/plugins/managedPluginHealth.js +149 -0
  136. package/dist/src/plugins/managedPluginHealth.js.map +1 -0
  137. package/dist/src/plugins/managedPluginRuntime.d.ts +14 -0
  138. package/dist/src/plugins/managedPluginRuntime.d.ts.map +1 -0
  139. package/dist/src/plugins/managedPluginRuntime.js +331 -0
  140. package/dist/src/plugins/managedPluginRuntime.js.map +1 -0
  141. package/dist/src/plugins/ocrPlugin.d.ts +46 -0
  142. package/dist/src/plugins/ocrPlugin.d.ts.map +1 -0
  143. package/dist/src/plugins/ocrPlugin.js +464 -0
  144. package/dist/src/plugins/ocrPlugin.js.map +1 -0
  145. package/dist/src/provider/client.d.ts +7 -1
  146. package/dist/src/provider/client.d.ts.map +1 -1
  147. package/dist/src/provider/client.js +61 -6
  148. package/dist/src/provider/client.js.map +1 -1
  149. package/dist/src/provider/openai-client.d.ts.map +1 -1
  150. package/dist/src/provider/openai-client.js +49 -3
  151. package/dist/src/provider/openai-client.js.map +1 -1
  152. package/dist/src/runtime/actoviqAgentExecutions.d.ts +85 -0
  153. package/dist/src/runtime/actoviqAgentExecutions.d.ts.map +1 -0
  154. package/dist/src/runtime/actoviqAgentExecutions.js +479 -0
  155. package/dist/src/runtime/actoviqAgentExecutions.js.map +1 -0
  156. package/dist/src/runtime/actoviqAgents.d.ts +15 -12
  157. package/dist/src/runtime/actoviqAgents.d.ts.map +1 -1
  158. package/dist/src/runtime/actoviqAgents.js +15 -0
  159. package/dist/src/runtime/actoviqAgents.js.map +1 -1
  160. package/dist/src/runtime/actoviqBackgroundTasks.d.ts +17 -2
  161. package/dist/src/runtime/actoviqBackgroundTasks.d.ts.map +1 -1
  162. package/dist/src/runtime/actoviqBackgroundTasks.js +291 -104
  163. package/dist/src/runtime/actoviqBackgroundTasks.js.map +1 -1
  164. package/dist/src/runtime/actoviqCompact.d.ts.map +1 -1
  165. package/dist/src/runtime/actoviqCompact.js +10 -75
  166. package/dist/src/runtime/actoviqCompact.js.map +1 -1
  167. package/dist/src/runtime/actoviqSkills.d.ts +14 -1
  168. package/dist/src/runtime/actoviqSkills.d.ts.map +1 -1
  169. package/dist/src/runtime/actoviqSkills.js +27 -2
  170. package/dist/src/runtime/actoviqSkills.js.map +1 -1
  171. package/dist/src/runtime/agentClient.d.ts +16 -2
  172. package/dist/src/runtime/agentClient.d.ts.map +1 -1
  173. package/dist/src/runtime/agentClient.js +745 -207
  174. package/dist/src/runtime/agentClient.js.map +1 -1
  175. package/dist/src/runtime/agentExecution.d.ts +196 -0
  176. package/dist/src/runtime/agentExecution.d.ts.map +1 -0
  177. package/dist/src/runtime/agentExecution.js +360 -0
  178. package/dist/src/runtime/agentExecution.js.map +1 -0
  179. package/dist/src/runtime/agentRuntimeDiscovery.d.ts +8 -2
  180. package/dist/src/runtime/agentRuntimeDiscovery.d.ts.map +1 -1
  181. package/dist/src/runtime/agentRuntimeDiscovery.js +30 -18
  182. package/dist/src/runtime/agentRuntimeDiscovery.js.map +1 -1
  183. package/dist/src/runtime/conversationEngine.d.ts +2 -1
  184. package/dist/src/runtime/conversationEngine.d.ts.map +1 -1
  185. package/dist/src/runtime/conversationEngine.js +66 -50
  186. package/dist/src/runtime/conversationEngine.js.map +1 -1
  187. package/dist/src/runtime/externalSkillCatalog.d.ts +107 -0
  188. package/dist/src/runtime/externalSkillCatalog.d.ts.map +1 -0
  189. package/dist/src/runtime/externalSkillCatalog.js +895 -0
  190. package/dist/src/runtime/externalSkillCatalog.js.map +1 -0
  191. package/dist/src/runtime/externalSkillPreferences.d.ts +25 -0
  192. package/dist/src/runtime/externalSkillPreferences.d.ts.map +1 -0
  193. package/dist/src/runtime/externalSkillPreferences.js +132 -0
  194. package/dist/src/runtime/externalSkillPreferences.js.map +1 -0
  195. package/dist/src/runtime/externalSkillRuntime.d.ts +31 -0
  196. package/dist/src/runtime/externalSkillRuntime.d.ts.map +1 -0
  197. package/dist/src/runtime/externalSkillRuntime.js +129 -0
  198. package/dist/src/runtime/externalSkillRuntime.js.map +1 -0
  199. package/dist/src/runtime/sessionTurnCoordinator.d.ts +2 -2
  200. package/dist/src/runtime/sessionTurnCoordinator.js +2 -2
  201. package/dist/src/storage/agentExecutionStore.d.ts +31 -0
  202. package/dist/src/storage/agentExecutionStore.d.ts.map +1 -0
  203. package/dist/src/storage/agentExecutionStore.js +413 -0
  204. package/dist/src/storage/agentExecutionStore.js.map +1 -0
  205. package/dist/src/storage/backgroundTaskStore.d.ts +5 -0
  206. package/dist/src/storage/backgroundTaskStore.d.ts.map +1 -1
  207. package/dist/src/storage/backgroundTaskStore.js +79 -3
  208. package/dist/src/storage/backgroundTaskStore.js.map +1 -1
  209. package/dist/src/storage/sessionStore.d.ts +8 -0
  210. package/dist/src/storage/sessionStore.d.ts.map +1 -1
  211. package/dist/src/storage/sessionStore.js +134 -18
  212. package/dist/src/storage/sessionStore.js.map +1 -1
  213. package/dist/src/team/teamGraphLayout.d.ts +53 -1
  214. package/dist/src/team/teamGraphLayout.d.ts.map +1 -1
  215. package/dist/src/team/teamGraphLayout.js +127 -1
  216. package/dist/src/team/teamGraphLayout.js.map +1 -1
  217. package/dist/src/team/teamGraphScaffold.d.ts.map +1 -1
  218. package/dist/src/team/teamGraphScaffold.js +31 -0
  219. package/dist/src/team/teamGraphScaffold.js.map +1 -1
  220. package/dist/src/team/teamGraphV3.d.ts +1 -0
  221. package/dist/src/team/teamGraphV3.d.ts.map +1 -1
  222. package/dist/src/team/teamGraphV3.js +24 -5
  223. package/dist/src/team/teamGraphV3.js.map +1 -1
  224. package/dist/src/team/teamPropose.d.ts +19 -0
  225. package/dist/src/team/teamPropose.d.ts.map +1 -0
  226. package/dist/src/team/teamPropose.js +126 -0
  227. package/dist/src/team/teamPropose.js.map +1 -0
  228. package/dist/src/tools/actoviqCoreTools.d.ts.map +1 -1
  229. package/dist/src/tools/actoviqCoreTools.js +3 -1
  230. package/dist/src/tools/actoviqCoreTools.js.map +1 -1
  231. package/dist/src/tools/exaSearch.d.ts +56 -0
  232. package/dist/src/tools/exaSearch.d.ts.map +1 -0
  233. package/dist/src/tools/exaSearch.js +170 -0
  234. package/dist/src/tools/exaSearch.js.map +1 -0
  235. package/dist/src/tools/tavilySearch.d.ts +34 -1
  236. package/dist/src/tools/tavilySearch.d.ts.map +1 -1
  237. package/dist/src/tools/tavilySearch.js +69 -54
  238. package/dist/src/tools/tavilySearch.js.map +1 -1
  239. package/dist/src/tools/todo/TodoWriteTool.d.ts +1 -1
  240. package/dist/src/tui/actoviqTui.d.ts +3 -1
  241. package/dist/src/tui/actoviqTui.d.ts.map +1 -1
  242. package/dist/src/tui/actoviqTui.js +1208 -92
  243. package/dist/src/tui/actoviqTui.js.map +1 -1
  244. package/dist/src/types.d.ts +223 -14
  245. package/dist/src/types.d.ts.map +1 -1
  246. package/dist/src/types.js.map +1 -1
  247. package/dist/src/ui/agentExecutionView.d.ts +111 -0
  248. package/dist/src/ui/agentExecutionView.d.ts.map +1 -0
  249. package/dist/src/ui/agentExecutionView.js +442 -0
  250. package/dist/src/ui/agentExecutionView.js.map +1 -0
  251. package/dist/src/ui/commandSurface.d.ts +2 -0
  252. package/dist/src/ui/commandSurface.d.ts.map +1 -1
  253. package/dist/src/ui/commandSurface.js +38 -3
  254. package/dist/src/ui/commandSurface.js.map +1 -1
  255. package/dist/src/workflow-v2/localIsolatedProcessExecutor.d.ts.map +1 -1
  256. package/dist/src/workflow-v2/localIsolatedProcessExecutor.js +6 -2
  257. package/dist/src/workflow-v2/localIsolatedProcessExecutor.js.map +1 -1
  258. package/package.json +35 -7
package/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on Keep a Changelog, with automated updates from GitHub Releases.
6
6
 
7
+ ## v0.4.8 - 2026-07-27
8
+
9
+ ### Runtime / prompt cache
10
+
11
+ - Keep conversation history **append-only** on the wire and in session compact: no sliding-window rewrite of historical `tool_result` content between ReAct turns or auto session compact (aligns with Claude Code third-party behavior).
12
+ - Context pressure is handled by **full summary compact** (in-loop + session), not by nibbling earlier tool results. Default `apiMicrocompactClearToolResults` is now `false`.
13
+ - Map DeepSeek `prompt_cache_hit_tokens` → `cache_read_input_tokens` for local usage / GUI reporting. DeepSeek Context Caching remains automatic on their side; Anthropic hosts still receive explicit `cache_control` breakpoints.
14
+
15
+ ### GUI / docs
16
+
17
+ - Document that the desktop **Agent graph** orchestration UI remains **under active iteration and optimization** (not a stable product surface). Prefer `/team`, saved team definitions, and SDK `createTeam()` / graph runtime for production workflows.
18
+
19
+ ### Notes
20
+
21
+ - This release stays on the **0.4.x** line. **1.0.0 is not published yet.**
22
+
7
23
  ## v0.4.7 - 2026-07-12
8
24
 
9
25
  ### GUI
@@ -14,7 +30,7 @@ The format is based on Keep a Changelog, with automated updates from GitHub Rele
14
30
 
15
31
  ### Still under development (not product-ready in 0.4.7)
16
32
 
17
- - Main **Agent** / team-graph region UI
33
+ - Main **Agent** / team-graph / **Agent graph orchestration UI** — still being iterated and optimized; do not treat as finished
18
34
  - Settings: **Profile**, **Browser**, **Computer control**, dedicated **Worktrees** tab
19
35
  - Keyboard shortcut remapping (reference list only)
20
36
  - Full 1.0 runtime/package surface (tracked as unreleased below)
package/README-zh.md CHANGED
@@ -9,14 +9,16 @@
9
9
 
10
10
  文档站地址:https://deconbear.github.io/actoviq-agent-sdk/
11
11
 
12
- **Actoviq**(`0.4.x`)是 TypeScript agent SDK 与 agent-team 平台,含 TUI、GUI、Bridge 与多 agent 协作。未来的 **1.0** 线将稳定 package subpath 契约;该表面**尚未发布**。GUI 仍隐藏部分开发中面板(详见 `CHANGELOG.md` 的 0.4.7)。
12
+ **Actoviq**(`0.4.x`)是 TypeScript agent SDK 与 agent-team 平台,含 TUI、GUI、Bridge 与多 agent 协作。未来的 **1.0** 线将稳定 package subpath 契约;该表面**尚未发布**。
13
+
14
+ > **说明:** 桌面端 **Agent graph** 编排 UI(可视化团队 / 图编辑器)**仍在持续迭代与优化中**,交互与行为可能变化。生产工作流请优先使用 `/team`、已保存的 team 定义,以及 SDK 的 `createTeam()` / graph runtime。详见 `CHANGELOG.md`。
13
15
 
14
16
  受 Claude Code、Codex、Deepagents 等项目启发。Actoviq 保持独立,拥有自己的公开 API 与文档。
15
17
 
16
18
  ## 愿景
17
19
 
18
20
  - **多 agent**:子代理委派(Task 工具)、panel-analysis 团队、reviewer-auditor 对、动态 workflow —— agent 之间协作,而非单一的 ReAct 循环。
19
- - **多运行时状态管理**:bridge config 支持预配置多个后端(anthropic / openai / 任意兼容)的 apiKey + baseURL + model,命名切换,对话上下文在切换中保留(同一个 session 对象、同一份 transcript)。
21
+ - **多运行时状态管理**:bridge config 明确区分两种模式。`Direct API` 在进程内调用 Anthropic/OpenAI 兼容接口;`External CLI` 则把已安装的 Claude Code、Codex、Pi、CodeWhale、Reasonix Crush 作为子进程托管,并在 CLI 协议提供会话 ID 时保留原生 session 身份。
20
22
  - **model team 协作**:leader 将每轮分派给最佳 specialist(`/model router`),panel 成员并行调查并收敛,reviewer 只报告可验证的问题 —— team 是 agent 可调用的一等工具。
21
23
 
22
24
  ## 亮点
@@ -24,8 +26,8 @@
24
26
  - **Model Team** — `panel-analysis`(并行调查 + 收敛)和 `reviewer`(只报告可验证问题的审计者)。runtime-owned 成员池、流式 `TeamEvent`、成员 provider 配置,以及继承的权限/重试边界。
25
27
  - **Model Router / Leader-Dispatch** — 每轮由 leader 分派到最佳 specialist(任意模型/提供商),执行者自身也可召集 team。Profile 位于 `~/.actoviq/routers/`。
26
28
  - **Dynamic Workflows** — 显式信任等级的 JS 编排:trusted 兼容执行、隔离 local-process,或由 host 提供的远程/container 强 sandbox;local process 不宣传为对抗性多租户沙箱。
27
- - **Bridge(命名连接配置)**进程内运行时切换:预配置 `anthropic`/`openai` 后端,命名 + apiKey + baseURL + model,命名切换,多轮上下文保留。`/bridge config` 单页编辑器;`/bridge` 列出已保存配置;`/cost` 中按配置展示用量。
28
- - **桌面 GUI (`actoviq-gui`)** — Electron 聊天 UI:流式 transcript、对话历史、命令面板、设置、每工具权限提示。安全增强。
29
+ - **Bridge(命名运行时配置)**可选 `Direct API` provider/API 级复用,也可选 `External CLI` 直接启动已安装的 Claude Code、Codex、Pi、CodeWhale、Reasonix Crush,继承各 CLI 的原生登录和配置、流式显示规范化后的工具与回答事件、终止后台任务,并浏览/恢复受支持的原生会话。单独填写的 key 只注入子进程,不写入 CLI 的凭据库;Pi、CodeWhale、Reasonix 与 Crush 会使用按配置隔离的持久会话目录,因此 key 模式重启后仍可读取历史,同时不会读取原生登录凭据。
30
+ - **桌面 GUI (`actoviq-gui`)** — Electron 聊天 UI:流式 transcript、对话历史、命令面板、设置、每工具权限提示。安全增强。可视化 **Agent graph** 编排 UI 仍在迭代中,暂勿当作稳定产品面。
29
31
  - **TUI (`actoviq-tui`)** — 终端 UI,25+ 斜杠命令,Claude Code 风格 UX:`/team`、`/bridge`、`/plan`、`/hooks`、`/mcp`、`/review`、`/context`、`/cost`、`/doctor` 等。实时状态旋转器、滚动 transcript、todo 面板、项目/用户级权限对话框、子命令自动补全。
30
32
  - **计划模式 + hooks** — `EnterPlanMode`/`ExitPlanMode` 工具 + 计划文件;`settings.json` 中的 `PreToolUse`/`PostToolUse`/`SessionStart` hooks。
31
33
  - **Worktree 工具** — `EnterWorktree`/`ExitWorktree`,栈式 cwd,`.worktreeinclude`,PR checkout。
@@ -126,7 +128,7 @@ npx actoviq-tui [工作目录] [选项]
126
128
  # --continue 继续最近更新的会话
127
129
  ```
128
130
 
129
- 特性与英文 README 一致,包括上下文管理、bridge config、计划模式、hooks、MCP、诊断等。
131
+ 特性与英文 README 一致,包括上下文管理(append-only 前缀以利于 DeepSeek 等自动缓存;超阈值走整段摘要 compact)、bridge config、计划模式、hooks、MCP、诊断等。六种 External CLI 都可使用 `/bridge status`、`/bridge background`、`/bridge runs` 和 `/bridge stop`;`/bridge history` 与 `/bridge resume` 在 TUI 和 GUI 中共享同一套校验逻辑,但原生历史/恢复能力仍取决于已安装 CLI 的协议与版本。
130
132
 
131
133
  ## 桌面 GUI (`actoviq-gui`)
132
134
 
@@ -135,6 +137,7 @@ npx actoviq-gui [工作目录] [选项]
135
137
  ```
136
138
 
137
139
  - Project 详情提供 `Document` / `Issues` 双 Tab。Issue 支持优先级、标签、验收标准、评论,以及受守卫保护的 `backlog → todo → in_progress → in_review/blocked → done` 生命周期。
140
+ - **Agent graph 编排 UI**(GUI **Agent** 区域的可视化团队/图编辑器)**仍在持续迭代和优化中**,请勿当作已定稿产品面;稳定工作流请用已保存 team + `/team` / SDK API。
138
141
  - Settings → Models & routing 可创建 Agent Profile,将 bridge config 与模型绑定。`/issues start <id> [agent-profile]` 会先让 Project Manager 生成任务书,再创建关联会话;执行 agent 通过 `IssueReport` 汇报待审或阻塞状态。
139
142
  - Issue 与会话可双向跳转。Issue 默认保存在 `<data-root>/projects/<workspace-key>/issues.json`,也可切换到受保护的工作区文件 `.actoviq/issues.json`。
140
143
  - Settings → General 可将完整数据根目录迁移到空目录:复制并校验数据、写入 bootstrap 指针、重建 SDK/session store,并保留旧目录供手动清理。
package/README.md CHANGED
@@ -9,14 +9,16 @@
9
9
 
10
10
  Documentation site: https://deconbear.github.io/actoviq-agent-sdk/
11
11
 
12
- **Actoviq** (`0.4.x`) is a TypeScript agent SDK and agent-team platform with TUI, GUI, Bridge, and multi-agent collaboration. A future **1.0** line will stabilize package subpath contracts; that surface is **not published yet**. The GUI still hides some under-development panels (see `CHANGELOG.md` for 0.4.7).
12
+ **Actoviq** (`0.4.x`) is a TypeScript agent SDK and agent-team platform with TUI, GUI, Bridge, and multi-agent collaboration. A future **1.0** line will stabilize package subpath contracts; that surface is **not published yet**.
13
+
14
+ > **Note:** The desktop **Agent graph** orchestration UI (visual team / graph editor) is **still under active iteration and optimization** — expect UX and API changes. Prefer `/team`, saved team definitions, and the SDK `createTeam()` / graph runtime for production workflows today. See `CHANGELOG.md`.
13
15
 
14
16
  Inspired by Claude Code, Codex, Deepagents, and the broader agent ecosystem. Actoviq remains independent with its own public surface and documentation.
15
17
 
16
18
  ## Vision
17
19
 
18
20
  - **Multi-agent**: subagent delegation (Task tool), panel-analysis teams, reviewer-auditor pairs, dynamic workflows — agents collaborating, not just a single loop.
19
- - **Multi-runtime state management**: bridge configs let you pre-configure multiple backends (anthropic / openai / any-compatible) with apiKey + baseURL + model, switch by name mid-session, and the conversation context survives the switch (same session object, same transcript).
21
+ - **Multi-runtime state management**: bridge configs have two explicit modes. `Direct API` calls Anthropic/OpenAI-compatible providers in-process; `External CLI` manages installed Claude Code, Codex, Pi, CodeWhale, Reasonix, or Crush runtimes as child processes and preserves native session identities when the CLI protocol exposes them.
20
22
  - **Model team collaboration**: leaders dispatch to specialists (`/model router`), panel members investigate in parallel with structured convergence, reviewers report only verifiable issues — teams as first-class tools the agent invokes.
21
23
 
22
24
  ## Highlights
@@ -24,8 +26,8 @@ Inspired by Claude Code, Codex, Deepagents, and the broader agent ecosystem. Act
24
26
  - **Model Team** — `panel-analysis` (parallel investigation + convergence) and `reviewer` (verifiable-issues-only auditor). Runtime-owned member pooling, streamed `TeamEvent`s, per-member provider config, and inherited permission/retry boundaries.
25
27
  - **Model Router / Leader-Dispatch** — a leader classifies each turn and dispatches it to the best specialist route (any model/provider), runs normally, and the executor may itself convene a team. Profiles in `~/.actoviq/routers/`.
26
28
  - **Dynamic Workflows** — JS script-based orchestration with explicit trust levels: trusted compatibility execution, isolated local-process execution, or a host-supplied remote/container sandbox for adversarial inputs.
27
- - **Bridge (named connection configs)** — in-process runtime switching: pre-configure `anthropic`/`openai` backends with name + apiKey + baseURL + model, switch by name mid-session, multi-turn context survives (same session). `/bridge config` single-page editor; `/bridge` lists saved configs; per-config usage tracking in `/cost`.
28
- - **Desktop GUI (`actoviq-gui`)** — Electron chat UI: streamed transcript, conversation history, command palette, settings, per-tool permission prompts. Security-hardened.
29
+ - **Bridge (named runtime configs)** — choose `Direct API` for provider-level reuse, or `External CLI` to launch installed Claude Code, Codex, Pi, CodeWhale, Reasonix, or Crush; reuse each CLI's native login/config, stream normalized tool and assistant events, stop background work, and browse/resume supported native conversations. An explicit key override is injected only into the child and is not written to the CLI's credential store; Pi, CodeWhale, Reasonix, and Crush keep isolated per-config session profiles so that key-mode history survives restarts without reading the native login store.
30
+ - **Desktop GUI (`actoviq-gui`)** — Electron chat UI: streamed transcript, conversation history, command palette, settings, per-tool permission prompts. Security-hardened. The visual **Agent graph** orchestration UI is shipping in-progress and continues to be iterated (not a stable product surface yet).
29
31
  - **TUI (`actoviq-tui`)** — Terminal UI with 25+ slash commands, Claude Code-style UX: `/team`, `/bridge`, `/plan`, `/hooks`, `/mcp`, `/review`, `/context`, `/cost`, `/doctor`, and more. Live status spinner, scrollback transcript, todo panel, permission dialogs with project/user scope, sub-command autocomplete.
30
32
  - **Plan mode + hooks** — `EnterPlanMode`/`ExitPlanMode` tools with plan file; user-configurable `PreToolUse`/`PostToolUse`/`SessionStart` hooks from `settings.json`.
31
33
  - **Worktree Tools** — `EnterWorktree`/`ExitWorktree` with stack-based cwd, `.worktreeinclude`, PR checkout.
@@ -146,9 +148,9 @@ Features:
146
148
  - **Permission presets + per-tool scope** — `/permissions` switches between read-only/workspace/full/plan presets; always-allow rules persist with project or user scope.
147
149
  - **Mid-run steering** — keep typing while the agent works and press `Enter`: the message is queued and injected into the very next model request (shown as `⧗ queued`).
148
150
  - **Plan mode + hooks** — `/plan` enters plan mode (`EnterPlanMode`/`ExitPlanMode` tools, plan file); `PreToolUse`/`PostToolUse`/`SessionStart` hooks from settings.json; `/hooks` lists them.
149
- - **Bridge configs** — `/bridge config` manages named connection profiles (name + runtime + apiKey + baseURL + model); `/bridge` lists them; selecting one switches the active runtime in-process. Per-config usage in `/cost` and `/usage`.
151
+ - **Bridge configs** — `/bridge config` manages named API or External CLI profiles for all six managed CLIs. `/bridge status`, `/bridge background`, `/bridge runs`, `/bridge stop`, `/bridge history`, and `/bridge resume` expose the same runtime lifecycle in the TUI and GUI; native history/resume remains subject to each installed CLI's protocol/version support.
150
152
  - **Diagnostics + inspection** — `/doctor` checks config health; `/context` inspects the context window; `/cost`/`/usage` track token + spend (per-config breakdown); `/review` reviews the git diff; `/stats` shows session stats.
151
- - **Context management built in** — the Hadamard SDK auto-compacts long sessions mid-run and reactively recovers when a provider rejects an oversized prompt; compactions surface as `∿ context compacted` notices.
153
+ - **Context management built in** — the Hadamard SDK auto-compacts long sessions mid-run (full summary compact) and reactively recovers when a provider rejects an oversized prompt; notices surface as context compacted. History stays **append-only** between turns so automatic prefix caches (e.g. DeepSeek Context Caching) stay hot; Anthropic hosts still get explicit cache_control breakpoints. Oversized tool outputs are artifacted at write time rather than rewriting earlier messages.
152
154
  - **MCP management** — `/mcp add`/`/mcp remove` manage stdio + remote HTTP MCP servers, persisted to `~/.actoviq/mcp.json`.
153
155
  - **Image attachments** — `@<path>.png` tokens expand into image content blocks (in-process, read as base64).
154
156
 
@@ -181,6 +183,7 @@ It opens an Electron window backed by a localhost-only HTTP server. Features:
181
183
  - **Command palette + slash commands**, settings (provider / model / keys / appearance), workspace switching, and empty-chat cleanup
182
184
  - **Per-tool permission prompts** (queued so concurrent requests don't collide) and a token-usage readout
183
185
  - **Project Documents + Issues** — each Project detail page has `Document` and `Issues` tabs. Issues use the guarded `backlog → todo → in_progress → in_review/blocked → done` lifecycle, support priorities, labels, acceptance criteria, comments, and links back to their worker sessions.
186
+ - **Agent graph orchestration UI** — visual team/graph editor lives in the GUI **Agent** region; **it is still being iterated and optimized** and should not be treated as a finished product surface. Prefer saved teams + `/team` / SDK APIs for stable workflows.
184
187
  - **Agent Profiles for issue dispatch** — Settings → Models & routing can bind a named profile to a saved bridge config and model. `/issues start <id> [agent-profile]` asks the Project Manager for a worker brief, starts a linked session without changing the globally active runtime, and requires the worker to report through `IssueReport`.
185
188
  - **Movable data root** — Settings → General can copy the complete Actoviq data root to an empty directory, validate it, write the bootstrap pointer, rebuild the SDK/session store, and retain the previous directory for manual cleanup.
186
189
 
Binary file
@@ -0,0 +1,137 @@
1
+ export interface ActoviqBrowserElementRef {
2
+ index: number;
3
+ tag: string;
4
+ role: string;
5
+ name: string;
6
+ type?: string;
7
+ value?: string;
8
+ /** Sensitive controls expose presence only, never the underlying value. */
9
+ hasValue?: boolean;
10
+ href?: string;
11
+ }
12
+ export interface ActoviqBrowserTabInfo {
13
+ id: string;
14
+ url: string;
15
+ title: string;
16
+ active: boolean;
17
+ }
18
+ export interface ActoviqBrowserSnapshot {
19
+ url: string;
20
+ title: string;
21
+ tabs: ActoviqBrowserTabInfo[];
22
+ elements: ActoviqBrowserElementRef[];
23
+ truncated: boolean;
24
+ }
25
+ export interface ActoviqBrowserSessionOptions {
26
+ headless?: boolean;
27
+ channel?: 'chromium' | 'chrome' | 'msedge';
28
+ /** Connect to an existing browser via CDP (e.g. chrome://inspect). */
29
+ cdpUrl?: string;
30
+ userDataDir?: string;
31
+ /** Root directory for screenshot output paths. Defaults to process.cwd(). */
32
+ workspaceDir?: string;
33
+ allowedDomains?: string[];
34
+ defaultTimeoutMs?: number;
35
+ viewport?: {
36
+ width: number;
37
+ height: number;
38
+ };
39
+ }
40
+ export declare function resolveBrowserScreenshotPath(workspaceDir: string, requestedPath: string): string;
41
+ export declare class ActoviqBrowserSession {
42
+ private options;
43
+ private playwright;
44
+ private browser;
45
+ private context;
46
+ private tabs;
47
+ private activeTabId;
48
+ private nextTabSeq;
49
+ private launched;
50
+ private ownership;
51
+ private closeInFlight;
52
+ private guardedPages;
53
+ private navigationViolations;
54
+ constructor(options?: ActoviqBrowserSessionOptions);
55
+ ensureReady(): Promise<void>;
56
+ navigate(url: string, opts?: {
57
+ newTab?: boolean;
58
+ }): Promise<{
59
+ tabId: string;
60
+ url: string;
61
+ title: string;
62
+ }>;
63
+ goBack(): Promise<{
64
+ url: string;
65
+ title: string;
66
+ }>;
67
+ wait(ms: number): Promise<void>;
68
+ snapshot(opts?: {
69
+ interactiveOnly?: boolean;
70
+ maxElements?: number;
71
+ }): Promise<ActoviqBrowserSnapshot>;
72
+ click(target: {
73
+ index?: number;
74
+ x?: number;
75
+ y?: number;
76
+ }): Promise<{
77
+ ok: true;
78
+ }>;
79
+ type(input: {
80
+ index: number;
81
+ text: string;
82
+ clear?: boolean;
83
+ submit?: boolean;
84
+ }): Promise<{
85
+ ok: true;
86
+ }>;
87
+ press(keys: string): Promise<{
88
+ ok: true;
89
+ }>;
90
+ scroll(input: {
91
+ direction: 'up' | 'down';
92
+ pages?: number;
93
+ index?: number;
94
+ }): Promise<{
95
+ ok: true;
96
+ }>;
97
+ screenshot(opts?: {
98
+ path?: string;
99
+ fullPage?: boolean;
100
+ }): Promise<{
101
+ path?: string;
102
+ base64?: string;
103
+ }>;
104
+ listTabs(): ActoviqBrowserTabInfo[];
105
+ tabsDetailed(): Promise<ActoviqBrowserTabInfo[]>;
106
+ switchTab(tabId: string): Promise<{
107
+ ok: true;
108
+ tabId: string;
109
+ }>;
110
+ closeTab(tabId?: string): Promise<{
111
+ ok: true;
112
+ closed: string;
113
+ }>;
114
+ extract(): Promise<{
115
+ url: string;
116
+ title: string;
117
+ text: string;
118
+ }>;
119
+ evaluate(expression: string): Promise<{
120
+ result: unknown;
121
+ }>;
122
+ close(): Promise<void>;
123
+ private closeOwnedResources;
124
+ private openTab;
125
+ private trackPage;
126
+ private requireActiveTab;
127
+ private ensureIndexed;
128
+ private assertNavigableUrl;
129
+ private assertManagedPageUrl;
130
+ private onTrackedFrameNavigated;
131
+ private scheduleNavigationRecovery;
132
+ private enforceAllowedPage;
133
+ private armNavigationGuard;
134
+ private disarmNavigationGuard;
135
+ private runWithNavigationGuard;
136
+ }
137
+ //# sourceMappingURL=actoviqBrowserSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actoviqBrowserSession.d.ts","sourceRoot":"","sources":["../../../src/browser/actoviqBrowserSession.ts"],"names":[],"mappings":"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"}