@tyvm/knowhow 0.0.83 → 0.0.85

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 (237) hide show
  1. package/package.json +4 -2
  2. package/src/agents/base/base.ts +72 -62
  3. package/src/agents/index.ts +30 -14
  4. package/src/agents/researcher/researcher.ts +1 -2
  5. package/src/agents/tools/aiClient.ts +48 -0
  6. package/src/agents/tools/list.ts +57 -0
  7. package/src/agents/tools/startAgentTask.ts +3 -1
  8. package/src/chat/CliChatService.ts +20 -4
  9. package/src/chat/modules/AgentModule.ts +399 -357
  10. package/src/chat/modules/CustomCommandsModule.ts +0 -1
  11. package/src/chat/modules/InternalChatModule.ts +18 -2
  12. package/src/chat/modules/RendererModule.ts +109 -0
  13. package/src/chat/modules/SessionsModule.ts +854 -0
  14. package/src/chat/modules/SetupModule.ts +6 -8
  15. package/src/chat/modules/index.ts +1 -0
  16. package/src/chat/renderer/CompactRenderer.ts +209 -0
  17. package/src/chat/renderer/ConsoleRenderer.ts +141 -0
  18. package/src/chat/renderer/FancyRenderer.ts +421 -0
  19. package/src/chat/renderer/index.ts +5 -0
  20. package/src/chat/renderer/loadRenderer.ts +314 -0
  21. package/src/chat/renderer/messagesToRenderEvents.ts +96 -0
  22. package/src/chat/renderer/types.ts +88 -0
  23. package/src/chat/types.ts +5 -0
  24. package/src/chat.ts +69 -5
  25. package/src/cli.ts +24 -5
  26. package/src/clients/index.ts +91 -0
  27. package/src/clients/pricing/google.ts +81 -2
  28. package/src/clients/pricing/openai.ts +68 -0
  29. package/src/config.ts +15 -0
  30. package/src/plugins/AgentsMdPlugin.ts +1 -1
  31. package/src/plugins/GitPlugin.ts +20 -20
  32. package/src/plugins/PluginBase.ts +11 -0
  33. package/src/plugins/SkillsPlugin.ts +150 -0
  34. package/src/plugins/asana.ts +4 -4
  35. package/src/plugins/embedding.ts +3 -5
  36. package/src/plugins/exec.ts +3 -3
  37. package/src/plugins/figma.ts +3 -7
  38. package/src/plugins/github.ts +18 -29
  39. package/src/plugins/jira.ts +2 -2
  40. package/src/plugins/language.ts +4 -4
  41. package/src/plugins/linear.ts +4 -4
  42. package/src/plugins/notion.ts +6 -8
  43. package/src/plugins/plugins.ts +29 -3
  44. package/src/plugins/url.ts +2 -2
  45. package/src/plugins/vim.ts +4 -3
  46. package/src/services/AgentService.ts +17 -0
  47. package/src/services/AgentSyncFs.ts +3 -0
  48. package/src/services/EventService.ts +168 -27
  49. package/src/services/KnowhowClient.ts +1 -0
  50. package/src/services/SessionManager.ts +51 -1
  51. package/src/services/SyncedAgentWatcher.ts +397 -0
  52. package/src/services/SyncerService.ts +147 -0
  53. package/src/services/index.ts +2 -0
  54. package/src/services/modules/index.ts +14 -3
  55. package/src/types.ts +103 -5
  56. package/src/worker.ts +80 -2
  57. package/src/workers/auth/PasskeySetup.ts +185 -0
  58. package/src/workers/auth/WorkerPasskeyAuth.ts +190 -0
  59. package/src/workers/auth/types.ts +58 -0
  60. package/src/workers/tools/getChallenge.ts +33 -0
  61. package/src/workers/tools/index.ts +8 -0
  62. package/src/workers/tools/lock.ts +31 -0
  63. package/src/workers/tools/unlock.ts +116 -0
  64. package/tests/clients/pricing.test.ts +144 -0
  65. package/tests/unit/modules/moduleLoading.test.ts +226 -0
  66. package/tests/unit/plugins/pluginLoading.test.ts +151 -0
  67. package/ts_build/package.json +4 -2
  68. package/ts_build/src/agents/base/base.d.ts +4 -3
  69. package/ts_build/src/agents/base/base.js +54 -30
  70. package/ts_build/src/agents/base/base.js.map +1 -1
  71. package/ts_build/src/agents/index.d.ts +3 -0
  72. package/ts_build/src/agents/index.js +21 -11
  73. package/ts_build/src/agents/index.js.map +1 -1
  74. package/ts_build/src/agents/researcher/researcher.js +1 -1
  75. package/ts_build/src/agents/researcher/researcher.js.map +1 -1
  76. package/ts_build/src/agents/tools/aiClient.d.ts +3 -0
  77. package/ts_build/src/agents/tools/aiClient.js +31 -1
  78. package/ts_build/src/agents/tools/aiClient.js.map +1 -1
  79. package/ts_build/src/agents/tools/list.js +48 -0
  80. package/ts_build/src/agents/tools/list.js.map +1 -1
  81. package/ts_build/src/agents/tools/startAgentTask.js +2 -1
  82. package/ts_build/src/agents/tools/startAgentTask.js.map +1 -1
  83. package/ts_build/src/chat/CliChatService.js +16 -5
  84. package/ts_build/src/chat/CliChatService.js.map +1 -1
  85. package/ts_build/src/chat/modules/AgentModule.d.ts +34 -17
  86. package/ts_build/src/chat/modules/AgentModule.js +248 -258
  87. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  88. package/ts_build/src/chat/modules/CustomCommandsModule.js.map +1 -1
  89. package/ts_build/src/chat/modules/InternalChatModule.d.ts +3 -0
  90. package/ts_build/src/chat/modules/InternalChatModule.js +16 -1
  91. package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -1
  92. package/ts_build/src/chat/modules/RendererModule.d.ts +16 -0
  93. package/ts_build/src/chat/modules/RendererModule.js +76 -0
  94. package/ts_build/src/chat/modules/RendererModule.js.map +1 -0
  95. package/ts_build/src/chat/modules/SessionsModule.d.ts +33 -0
  96. package/ts_build/src/chat/modules/SessionsModule.js +582 -0
  97. package/ts_build/src/chat/modules/SessionsModule.js.map +1 -0
  98. package/ts_build/src/chat/modules/SetupModule.d.ts +3 -3
  99. package/ts_build/src/chat/modules/SetupModule.js +4 -6
  100. package/ts_build/src/chat/modules/SetupModule.js.map +1 -1
  101. package/ts_build/src/chat/modules/index.d.ts +1 -0
  102. package/ts_build/src/chat/modules/index.js +3 -1
  103. package/ts_build/src/chat/modules/index.js.map +1 -1
  104. package/ts_build/src/chat/renderer/CompactRenderer.d.ts +23 -0
  105. package/ts_build/src/chat/renderer/CompactRenderer.js +167 -0
  106. package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -0
  107. package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +22 -0
  108. package/ts_build/src/chat/renderer/ConsoleRenderer.js +110 -0
  109. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -0
  110. package/ts_build/src/chat/renderer/FancyRenderer.d.ts +23 -0
  111. package/ts_build/src/chat/renderer/FancyRenderer.js +328 -0
  112. package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -0
  113. package/ts_build/src/chat/renderer/index.d.ts +5 -0
  114. package/ts_build/src/chat/renderer/index.js +29 -0
  115. package/ts_build/src/chat/renderer/index.js.map +1 -0
  116. package/ts_build/src/chat/renderer/loadRenderer.d.ts +4 -0
  117. package/ts_build/src/chat/renderer/loadRenderer.js +246 -0
  118. package/ts_build/src/chat/renderer/loadRenderer.js.map +1 -0
  119. package/ts_build/src/chat/renderer/messagesToRenderEvents.d.ts +15 -0
  120. package/ts_build/src/chat/renderer/messagesToRenderEvents.js +72 -0
  121. package/ts_build/src/chat/renderer/messagesToRenderEvents.js.map +1 -0
  122. package/ts_build/src/chat/renderer/types.d.ts +75 -0
  123. package/ts_build/src/chat/renderer/types.js +3 -0
  124. package/ts_build/src/chat/renderer/types.js.map +1 -0
  125. package/ts_build/src/chat/types.d.ts +5 -0
  126. package/ts_build/src/chat.js +46 -4
  127. package/ts_build/src/chat.js.map +1 -1
  128. package/ts_build/src/cli.js +18 -5
  129. package/ts_build/src/cli.js.map +1 -1
  130. package/ts_build/src/clients/gemini.d.ts +10 -10
  131. package/ts_build/src/clients/index.d.ts +10 -0
  132. package/ts_build/src/clients/index.js +58 -0
  133. package/ts_build/src/clients/index.js.map +1 -1
  134. package/ts_build/src/clients/pricing/google.d.ts +10 -10
  135. package/ts_build/src/clients/pricing/google.js +74 -2
  136. package/ts_build/src/clients/pricing/google.js.map +1 -1
  137. package/ts_build/src/clients/pricing/openai.js +65 -0
  138. package/ts_build/src/clients/pricing/openai.js.map +1 -1
  139. package/ts_build/src/config.d.ts +1 -0
  140. package/ts_build/src/config.js +17 -1
  141. package/ts_build/src/config.js.map +1 -1
  142. package/ts_build/src/plugins/AgentsMdPlugin.js +1 -1
  143. package/ts_build/src/plugins/AgentsMdPlugin.js.map +1 -1
  144. package/ts_build/src/plugins/GitPlugin.js +20 -20
  145. package/ts_build/src/plugins/GitPlugin.js.map +1 -1
  146. package/ts_build/src/plugins/PluginBase.d.ts +1 -0
  147. package/ts_build/src/plugins/PluginBase.js +13 -0
  148. package/ts_build/src/plugins/PluginBase.js.map +1 -1
  149. package/ts_build/src/plugins/SkillsPlugin.d.ts +13 -0
  150. package/ts_build/src/plugins/SkillsPlugin.js +149 -0
  151. package/ts_build/src/plugins/SkillsPlugin.js.map +1 -0
  152. package/ts_build/src/plugins/asana.js +4 -4
  153. package/ts_build/src/plugins/asana.js.map +1 -1
  154. package/ts_build/src/plugins/embedding.js +3 -3
  155. package/ts_build/src/plugins/embedding.js.map +1 -1
  156. package/ts_build/src/plugins/exec.js +3 -3
  157. package/ts_build/src/plugins/exec.js.map +1 -1
  158. package/ts_build/src/plugins/figma.js +3 -3
  159. package/ts_build/src/plugins/figma.js.map +1 -1
  160. package/ts_build/src/plugins/github.js +18 -18
  161. package/ts_build/src/plugins/github.js.map +1 -1
  162. package/ts_build/src/plugins/jira.js +2 -2
  163. package/ts_build/src/plugins/jira.js.map +1 -1
  164. package/ts_build/src/plugins/language.js +4 -4
  165. package/ts_build/src/plugins/language.js.map +1 -1
  166. package/ts_build/src/plugins/linear.js +4 -4
  167. package/ts_build/src/plugins/linear.js.map +1 -1
  168. package/ts_build/src/plugins/notion.js +6 -6
  169. package/ts_build/src/plugins/notion.js.map +1 -1
  170. package/ts_build/src/plugins/plugins.d.ts +3 -0
  171. package/ts_build/src/plugins/plugins.js +18 -3
  172. package/ts_build/src/plugins/plugins.js.map +1 -1
  173. package/ts_build/src/plugins/url.js +2 -2
  174. package/ts_build/src/plugins/url.js.map +1 -1
  175. package/ts_build/src/plugins/vim.js +2 -2
  176. package/ts_build/src/plugins/vim.js.map +1 -1
  177. package/ts_build/src/services/AgentService.d.ts +3 -0
  178. package/ts_build/src/services/AgentService.js +7 -0
  179. package/ts_build/src/services/AgentService.js.map +1 -1
  180. package/ts_build/src/services/AgentSyncFs.d.ts +1 -0
  181. package/ts_build/src/services/AgentSyncFs.js +2 -0
  182. package/ts_build/src/services/AgentSyncFs.js.map +1 -1
  183. package/ts_build/src/services/EventService.d.ts +25 -2
  184. package/ts_build/src/services/EventService.js +92 -14
  185. package/ts_build/src/services/EventService.js.map +1 -1
  186. package/ts_build/src/services/KnowhowClient.d.ts +1 -0
  187. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  188. package/ts_build/src/services/SessionManager.d.ts +6 -0
  189. package/ts_build/src/services/SessionManager.js +39 -1
  190. package/ts_build/src/services/SessionManager.js.map +1 -1
  191. package/ts_build/src/services/SyncedAgentWatcher.d.ts +101 -0
  192. package/ts_build/src/services/SyncedAgentWatcher.js +312 -0
  193. package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -0
  194. package/ts_build/src/services/SyncerService.d.ts +30 -0
  195. package/ts_build/src/services/SyncerService.js +72 -0
  196. package/ts_build/src/services/SyncerService.js.map +1 -0
  197. package/ts_build/src/services/index.d.ts +2 -0
  198. package/ts_build/src/services/index.js +2 -0
  199. package/ts_build/src/services/index.js.map +1 -1
  200. package/ts_build/src/services/modules/index.js +10 -2
  201. package/ts_build/src/services/modules/index.js.map +1 -1
  202. package/ts_build/src/types.d.ts +51 -2
  203. package/ts_build/src/types.js +73 -5
  204. package/ts_build/src/types.js.map +1 -1
  205. package/ts_build/src/worker.d.ts +2 -0
  206. package/ts_build/src/worker.js +59 -4
  207. package/ts_build/src/worker.js.map +1 -1
  208. package/ts_build/src/workers/auth/PasskeySetup.d.ts +10 -0
  209. package/ts_build/src/workers/auth/PasskeySetup.js +131 -0
  210. package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -0
  211. package/ts_build/src/workers/auth/WorkerPasskeyAuth.d.ts +35 -0
  212. package/ts_build/src/workers/auth/WorkerPasskeyAuth.js +129 -0
  213. package/ts_build/src/workers/auth/WorkerPasskeyAuth.js.map +1 -0
  214. package/ts_build/src/workers/auth/types.d.ts +36 -0
  215. package/ts_build/src/workers/auth/types.js +3 -0
  216. package/ts_build/src/workers/auth/types.js.map +1 -0
  217. package/ts_build/src/workers/tools/getChallenge.d.ts +9 -0
  218. package/ts_build/src/workers/tools/getChallenge.js +27 -0
  219. package/ts_build/src/workers/tools/getChallenge.js.map +1 -0
  220. package/ts_build/src/workers/tools/index.d.ts +6 -0
  221. package/ts_build/src/workers/tools/index.js +10 -0
  222. package/ts_build/src/workers/tools/index.js.map +1 -1
  223. package/ts_build/src/workers/tools/lock.d.ts +9 -0
  224. package/ts_build/src/workers/tools/lock.js +27 -0
  225. package/ts_build/src/workers/tools/lock.js.map +1 -0
  226. package/ts_build/src/workers/tools/unlock.d.ts +18 -0
  227. package/ts_build/src/workers/tools/unlock.js +78 -0
  228. package/ts_build/src/workers/tools/unlock.js.map +1 -0
  229. package/ts_build/tests/clients/pricing.test.d.ts +1 -0
  230. package/ts_build/tests/clients/pricing.test.js +90 -0
  231. package/ts_build/tests/clients/pricing.test.js.map +1 -0
  232. package/ts_build/tests/unit/modules/moduleLoading.test.d.ts +1 -0
  233. package/ts_build/tests/unit/modules/moduleLoading.test.js +187 -0
  234. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -0
  235. package/ts_build/tests/unit/plugins/pluginLoading.test.d.ts +1 -0
  236. package/ts_build/tests/unit/plugins/pluginLoading.test.js +123 -0
  237. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -0
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.WebSyncedAgentWatcher = exports.FsSyncedAgentWatcher = exports.WatcherBackedAgent = void 0;
27
+ const EventService_1 = require("./EventService");
28
+ const fs = __importStar(require("fs"));
29
+ const fsPromises = __importStar(require("fs/promises"));
30
+ const path = __importStar(require("path"));
31
+ const messagesToRenderEvents_1 = require("../chat/renderer/messagesToRenderEvents");
32
+ const KnowhowClient_1 = require("./KnowhowClient");
33
+ class WatcherBackedAgent {
34
+ watcher;
35
+ name;
36
+ agentEvents;
37
+ eventTypes;
38
+ constructor(watcher) {
39
+ this.watcher = watcher;
40
+ this.name = watcher.agentName;
41
+ this.agentEvents = watcher.agentEvents;
42
+ this.eventTypes = watcher.eventTypes;
43
+ }
44
+ getTotalCostUsd() {
45
+ return 0;
46
+ }
47
+ async pause() {
48
+ await this.watcher.pause();
49
+ }
50
+ async unpause() {
51
+ await this.watcher.unpause();
52
+ }
53
+ async kill() {
54
+ await this.watcher.kill();
55
+ this.agentEvents.emit(this.eventTypes.done, "Agent killed");
56
+ }
57
+ addPendingUserMessage(message) {
58
+ const text = typeof message.content === "string" ? message.content : "";
59
+ this.watcher
60
+ .sendMessage(text)
61
+ .then(() => {
62
+ console.log(`📨 Message sent to ${this.name}`);
63
+ })
64
+ .catch((err) => {
65
+ console.error(`❌ Failed to send message to ${this.name}:`, err);
66
+ });
67
+ }
68
+ }
69
+ exports.WatcherBackedAgent = WatcherBackedAgent;
70
+ class FsSyncedAgentWatcher {
71
+ taskId = "";
72
+ taskPath = "";
73
+ watcher = null;
74
+ lastThreadLength = 0;
75
+ agentName = "unknown";
76
+ debounceTimer = null;
77
+ agentEvents = new EventService_1.EventService();
78
+ eventTypes = {
79
+ done: "done",
80
+ toolCall: "tool:pre_call",
81
+ toolUsed: "tool:post_call",
82
+ agentSay: "agent:say",
83
+ threadUpdate: "thread_update",
84
+ };
85
+ async startWatching(taskId) {
86
+ this.taskId = taskId;
87
+ this.taskPath = path.join(".knowhow/processes/agents", taskId);
88
+ const metadata = await this.readMetadata();
89
+ if (metadata) {
90
+ const threads = metadata.threads || [];
91
+ const lastThread = threads[threads.length - 1] || [];
92
+ this.agentName = metadata.agentName || taskId;
93
+ this.lastThreadLength = lastThread.length;
94
+ }
95
+ try {
96
+ this.watcher = fs.watch(this.taskPath, (event, filename) => {
97
+ if (filename === "metadata.json" || filename === null) {
98
+ if (this.debounceTimer)
99
+ clearTimeout(this.debounceTimer);
100
+ this.debounceTimer = setTimeout(() => {
101
+ this.onMetadataChanged().catch(() => { });
102
+ }, 200);
103
+ }
104
+ });
105
+ }
106
+ catch (err) {
107
+ console.warn(`⚠️ Could not watch ${this.taskPath}: ${err.message}`);
108
+ }
109
+ console.log(`👁️ Watching fs-synced agent: ${taskId} (${this.agentName})`);
110
+ console.log(` Type /logs 20 to see recent messages, or type to send a message`);
111
+ }
112
+ async onMetadataChanged() {
113
+ const metadata = await this.readMetadata();
114
+ if (!metadata?.threads)
115
+ return;
116
+ const threads = metadata.threads;
117
+ const lastThread = threads[threads.length - 1] || [];
118
+ const newMessages = lastThread.slice(this.lastThreadLength);
119
+ if (newMessages.length > 0) {
120
+ const renderEvents = (0, messagesToRenderEvents_1.messagesToRenderEvents)(newMessages, this.taskId, this.agentName);
121
+ for (const event of renderEvents) {
122
+ if (event.type === "toolCall") {
123
+ this.agentEvents.emit(this.eventTypes.toolCall, {
124
+ toolCall: event.toolCall,
125
+ });
126
+ }
127
+ else if (event.type === "toolResult") {
128
+ this.agentEvents.emit(this.eventTypes.toolUsed, {
129
+ toolCall: event.toolCall,
130
+ functionResp: event.result,
131
+ });
132
+ }
133
+ else if (event.type === "agentMessage") {
134
+ this.agentEvents.emit(this.eventTypes.agentSay, {
135
+ message: event.message,
136
+ });
137
+ }
138
+ }
139
+ this.agentEvents.emit(this.eventTypes.threadUpdate, lastThread);
140
+ this.lastThreadLength = lastThread.length;
141
+ }
142
+ const status = metadata.status;
143
+ const result = metadata.result;
144
+ if ((status === "completed" || status === "killed") && result != null) {
145
+ this.stopWatching();
146
+ this.agentEvents.emit(this.eventTypes.done, result);
147
+ }
148
+ }
149
+ async sendMessage(message) {
150
+ const inputPath = path.join(this.taskPath, "input.txt");
151
+ await fsPromises.writeFile(inputPath, message, "utf8");
152
+ }
153
+ async getThreads() {
154
+ const metadata = await this.readMetadata();
155
+ return metadata?.threads || [];
156
+ }
157
+ stopWatching() {
158
+ if (this.debounceTimer) {
159
+ clearTimeout(this.debounceTimer);
160
+ this.debounceTimer = null;
161
+ }
162
+ this.watcher?.close();
163
+ this.watcher = null;
164
+ console.log(`🔌 Stopped watching agent: ${this.taskId}`);
165
+ }
166
+ async pause() {
167
+ const statusPath = path.join(this.taskPath, "status.txt");
168
+ await fsPromises.writeFile(statusPath, "paused", "utf8");
169
+ console.log(`⏸️ Paused remote agent: ${this.taskId}`);
170
+ }
171
+ async unpause() {
172
+ const statusPath = path.join(this.taskPath, "status.txt");
173
+ await fsPromises.writeFile(statusPath, "running", "utf8");
174
+ console.log(`▶️ Unpaused remote agent: ${this.taskId}`);
175
+ }
176
+ async kill() {
177
+ const statusPath = path.join(this.taskPath, "status.txt");
178
+ await fsPromises.writeFile(statusPath, "killed", "utf8");
179
+ console.log(`🛑 Killed remote agent: ${this.taskId}`);
180
+ }
181
+ async readMetadata() {
182
+ try {
183
+ const metaPath = path.join(this.taskPath, "metadata.json");
184
+ const content = await fsPromises.readFile(metaPath, "utf8");
185
+ return JSON.parse(content);
186
+ }
187
+ catch {
188
+ return null;
189
+ }
190
+ }
191
+ }
192
+ exports.FsSyncedAgentWatcher = FsSyncedAgentWatcher;
193
+ class WebSyncedAgentWatcher {
194
+ taskId = "";
195
+ client;
196
+ pollInterval = null;
197
+ lastThreadLength = 0;
198
+ agentName = "remote-agent";
199
+ stopped = false;
200
+ agentEvents = new EventService_1.EventService();
201
+ eventTypes = {
202
+ done: "done",
203
+ toolCall: "tool:pre_call",
204
+ toolUsed: "tool:post_call",
205
+ agentSay: "agent:say",
206
+ threadUpdate: "thread_update",
207
+ };
208
+ constructor(client) {
209
+ this.client = client || new KnowhowClient_1.KnowhowSimpleClient();
210
+ }
211
+ async startWatching(taskId) {
212
+ this.taskId = taskId;
213
+ this.stopped = false;
214
+ try {
215
+ const details = await this.client.getTaskDetails(taskId);
216
+ const threads = details?.data?.threads || [];
217
+ const lastThread = threads[threads.length - 1] || [];
218
+ this.agentName = "remote-agent";
219
+ this.lastThreadLength = lastThread.length;
220
+ }
221
+ catch (err) {
222
+ console.warn(`⚠️ Could not load initial state for task ${taskId}: ${err.message}`);
223
+ }
224
+ this.pollInterval = setInterval(async () => {
225
+ if (!this.stopped) {
226
+ await this.onPoll().catch(() => { });
227
+ }
228
+ }, 3000);
229
+ console.log(`🌐 Watching web-synced agent: ${taskId} (${this.agentName})`);
230
+ console.log(` Type /logs 20 to see recent messages, or type to send a message`);
231
+ }
232
+ async onPoll() {
233
+ if (this.stopped)
234
+ return;
235
+ try {
236
+ const details = await this.client.getTaskDetails(this.taskId);
237
+ const threads = details?.data?.threads || [];
238
+ const lastThread = threads[threads.length - 1] || [];
239
+ const newMessages = lastThread.slice(this.lastThreadLength);
240
+ if (newMessages.length > 0) {
241
+ const renderEvents = (0, messagesToRenderEvents_1.messagesToRenderEvents)(newMessages, this.taskId, this.agentName);
242
+ for (const event of renderEvents) {
243
+ if (event.type === "toolCall") {
244
+ this.agentEvents.emit(this.eventTypes.toolCall, {
245
+ toolCall: event.toolCall,
246
+ });
247
+ }
248
+ else if (event.type === "toolResult") {
249
+ this.agentEvents.emit(this.eventTypes.toolUsed, {
250
+ toolCall: event.toolCall,
251
+ functionResp: event.result,
252
+ });
253
+ }
254
+ else if (event.type === "agentMessage") {
255
+ this.agentEvents.emit(this.eventTypes.agentSay, {
256
+ message: event.message,
257
+ });
258
+ }
259
+ }
260
+ this.agentEvents.emit(this.eventTypes.threadUpdate, lastThread);
261
+ this.lastThreadLength = lastThread.length;
262
+ }
263
+ const status = details?.data?.status;
264
+ const result = details?.data?.result;
265
+ if (status === "completed" || status === "killed") {
266
+ this.stopWatching();
267
+ if (result != null) {
268
+ this.agentEvents.emit(this.eventTypes.done, result);
269
+ }
270
+ else {
271
+ console.log(`\n✅ Remote agent ${this.taskId} status: ${status} (no result)`);
272
+ }
273
+ }
274
+ }
275
+ catch {
276
+ }
277
+ }
278
+ async sendMessage(message) {
279
+ await this.client.sendMessageToAgent(this.taskId, message);
280
+ }
281
+ async getThreads() {
282
+ try {
283
+ const details = await this.client.getTaskDetails(this.taskId);
284
+ return details?.data?.threads || [];
285
+ }
286
+ catch {
287
+ return [];
288
+ }
289
+ }
290
+ stopWatching() {
291
+ this.stopped = true;
292
+ if (this.pollInterval) {
293
+ clearInterval(this.pollInterval);
294
+ this.pollInterval = null;
295
+ }
296
+ console.log(`🔌 Stopped watching web agent: ${this.taskId}`);
297
+ }
298
+ async pause() {
299
+ await this.client.pauseAgent(this.taskId);
300
+ console.log(`⏸️ Paused remote web agent: ${this.taskId}`);
301
+ }
302
+ async unpause() {
303
+ await this.client.resumeAgent(this.taskId);
304
+ console.log(`▶️ Unpaused remote web agent: ${this.taskId}`);
305
+ }
306
+ async kill() {
307
+ await this.client.killAgent(this.taskId);
308
+ console.log(`🛑 Killed remote web agent: ${this.taskId}`);
309
+ }
310
+ }
311
+ exports.WebSyncedAgentWatcher = WebSyncedAgentWatcher;
312
+ //# sourceMappingURL=SyncedAgentWatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncedAgentWatcher.js","sourceRoot":"","sources":["../../../src/services/SyncedAgentWatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { BaseAgent } from "../agents/base/base";
2
+ export interface SyncerOptions {
3
+ taskId: string;
4
+ prompt: string;
5
+ messageId?: string;
6
+ syncFs?: boolean;
7
+ existingKnowhowTaskId?: string;
8
+ agentName?: string;
9
+ }
10
+ export interface AgentSyncer {
11
+ createTask(options: SyncerOptions): Promise<string>;
12
+ setupAgentSync(agent: BaseAgent, taskId: string): Promise<void>;
13
+ waitForFinalization(): Promise<void>;
14
+ reset(): void;
15
+ isActive(): boolean;
16
+ }
17
+ export declare class SyncerService implements AgentSyncer {
18
+ private fsSync;
19
+ private webSync;
20
+ private active;
21
+ private useWebSync;
22
+ private createdTaskId;
23
+ constructor();
24
+ createTask(options: SyncerOptions): Promise<string>;
25
+ setupAgentSync(agent: BaseAgent, taskId: string): Promise<void>;
26
+ waitForFinalization(): Promise<void>;
27
+ reset(): void;
28
+ isActive(): boolean;
29
+ getCreatedWebTaskId(): string | undefined;
30
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncerService = void 0;
4
+ const AgentSyncFs_1 = require("./AgentSyncFs");
5
+ const AgentSyncKnowhowWeb_1 = require("./AgentSyncKnowhowWeb");
6
+ class SyncerService {
7
+ fsSync;
8
+ webSync;
9
+ active = false;
10
+ useWebSync = false;
11
+ createdTaskId;
12
+ constructor() {
13
+ this.fsSync = new AgentSyncFs_1.AgentSyncFs();
14
+ this.webSync = new AgentSyncKnowhowWeb_1.AgentSyncKnowhowWeb();
15
+ }
16
+ async createTask(options) {
17
+ this.active = true;
18
+ this.useWebSync = false;
19
+ const shouldUseWebSync = !!options.messageId &&
20
+ !options.syncFs &&
21
+ !options.existingKnowhowTaskId;
22
+ console.log(`📁 Using filesystem-based synchronization for task: ${options.taskId}`);
23
+ const fsTaskId = await this.fsSync.createTask({
24
+ taskId: options.taskId,
25
+ prompt: options.prompt,
26
+ agentName: options.agentName,
27
+ });
28
+ if (shouldUseWebSync) {
29
+ const knowhowTaskId = await this.webSync.createChatTask({
30
+ messageId: options.messageId,
31
+ prompt: options.prompt,
32
+ });
33
+ if (knowhowTaskId) {
34
+ this.useWebSync = true;
35
+ this.createdTaskId = knowhowTaskId;
36
+ console.log(`🌐 Web sync task created: ${knowhowTaskId}`);
37
+ }
38
+ }
39
+ return fsTaskId;
40
+ }
41
+ async setupAgentSync(agent, taskId) {
42
+ await this.fsSync.setupAgentSync(agent, taskId);
43
+ if (this.useWebSync && this.createdTaskId) {
44
+ await this.webSync.setupAgentSync(agent, this.createdTaskId);
45
+ }
46
+ }
47
+ async waitForFinalization() {
48
+ if (this.useWebSync) {
49
+ console.log("🎯 [SyncerService] Waiting for web sync finalization...");
50
+ await this.webSync.waitForFinalization();
51
+ console.log("🎯 [SyncerService] Web sync finalization complete");
52
+ }
53
+ console.log("🎯 [SyncerService] Waiting for fs sync finalization...");
54
+ await this.fsSync.waitForFinalization();
55
+ console.log("🎯 [SyncerService] Fs sync finalization complete");
56
+ }
57
+ reset() {
58
+ this.webSync.reset();
59
+ this.fsSync.reset();
60
+ this.active = false;
61
+ this.useWebSync = false;
62
+ this.createdTaskId = undefined;
63
+ }
64
+ isActive() {
65
+ return this.active;
66
+ }
67
+ getCreatedWebTaskId() {
68
+ return this.useWebSync ? this.createdTaskId : undefined;
69
+ }
70
+ }
71
+ exports.SyncerService = SyncerService;
72
+ //# sourceMappingURL=SyncerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncerService.js","sourceRoot":"","sources":["../../../src/services/SyncerService.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ export * from "./AgentSyncKnowhowWeb";
24
24
  export * from "./AgentSyncFs";
25
25
  export * from "./SessionManager";
26
26
  export * from "./TaskRegistry";
27
+ export * from "./SyncedAgentWatcher";
28
+ export * from "./SyncerService";
27
29
  export { Clients } from "../clients";
28
30
  declare let Singletons: {
29
31
  Tools: ToolsService;
@@ -53,6 +53,8 @@ __exportStar(require("./AgentSyncKnowhowWeb"), exports);
53
53
  __exportStar(require("./AgentSyncFs"), exports);
54
54
  __exportStar(require("./SessionManager"), exports);
55
55
  __exportStar(require("./TaskRegistry"), exports);
56
+ __exportStar(require("./SyncedAgentWatcher"), exports);
57
+ __exportStar(require("./SyncerService"), exports);
56
58
  var clients_2 = require("../clients");
57
59
  Object.defineProperty(exports, "Clients", { enumerable: true, get: function () { return clients_2.Clients; } });
58
60
  let Singletons = {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAqE;AACrE,wCAA+C;AAC/C,iDAA8C;AAC9C,iDAA8C;AAC9C,mCAAuC;AACvC,qCAAyC;AACzC,mDAAsD;AACtD,+BAAmC;AACnC,6BAAiC;AACjC,mCAAuC;AACvC,gDAAmD;AACnD,mDAAgD;AAMhD,iDAA+B;AAC/B,iDAA+B;AAC/B,0CAAwB;AACxB,2CAAyB;AACzB,uCAAqB;AACrB,0CAAwB;AACxB,qDAAmC;AACnC,6CAA6B;AAC7B,qDAAmC;AACnC,kDAAgC;AAChC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAEhB,IAAI,UAAU,GAAG,EAahB,CAAC;AAEK,MAAM,QAAQ,GAAG,GAAsB,EAAE;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,oBAAY,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,2BAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,2BAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,8BAAiB,CAAC,iBAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,uBAAa,CAAC;YAChC,MAAM;YACN,MAAM;YACN,KAAK;YACL,OAAO,EAAP,iBAAO;SACR,CAAC,CAAC;QAEH,UAAU,GAAG;YACX,MAAM;YACN,KAAK,EAAE,IAAI,cAAS,EAAE;YACtB,OAAO,EAAP,iBAAO;YACP,MAAM,EAAE,IAAI,6BAAa,EAAE;YAC3B,UAAU;YACV,MAAM;YACN,KAAK,EAAE,IAAI,oBAAY,EAAE;YACzB,MAAM,EAAE,IAAI,sBAAa,EAAE;YAC3B,GAAG,EAAE,IAAI,gBAAU,EAAE;YACrB,OAAO;YACP,KAAK;YACL,gBAAgB,EAAE,IAAI,mCAAmB,EAAE;SAC5C,CAAC;QAEF,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1B,MAAM;YACN,MAAM;YACN,OAAO;YACP,OAAO,EAAP,iBAAO;SACR,CAAC,CAAC;KACJ;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AArCW,QAAA,QAAQ,YAqCnB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAqE;AACrE,wCAA+C;AAC/C,iDAA8C;AAC9C,iDAA8C;AAC9C,mCAAuC;AACvC,qCAAyC;AACzC,mDAAsD;AACtD,+BAAmC;AACnC,6BAAiC;AACjC,mCAAuC;AACvC,gDAAmD;AACnD,mDAAgD;AAMhD,iDAA+B;AAC/B,iDAA+B;AAC/B,0CAAwB;AACxB,2CAAyB;AACzB,uCAAqB;AACrB,0CAAwB;AACxB,qDAAmC;AACnC,6CAA6B;AAC7B,qDAAmC;AACnC,kDAAgC;AAChC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,uDAAqC;AACrC,kDAAgC;AAChC,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAEhB,IAAI,UAAU,GAAG,EAahB,CAAC;AAEK,MAAM,QAAQ,GAAG,GAAsB,EAAE;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,oBAAY,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,2BAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,2BAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,8BAAiB,CAAC,iBAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,uBAAa,CAAC;YAChC,MAAM;YACN,MAAM;YACN,KAAK;YACL,OAAO,EAAP,iBAAO;SACR,CAAC,CAAC;QAEH,UAAU,GAAG;YACX,MAAM;YACN,KAAK,EAAE,IAAI,cAAS,EAAE;YACtB,OAAO,EAAP,iBAAO;YACP,MAAM,EAAE,IAAI,6BAAa,EAAE;YAC3B,UAAU;YACV,MAAM;YACN,KAAK,EAAE,IAAI,oBAAY,EAAE;YACzB,MAAM,EAAE,IAAI,sBAAa,EAAE;YAC3B,GAAG,EAAE,IAAI,gBAAU,EAAE;YACrB,OAAO;YACP,KAAK;YACL,gBAAgB,EAAE,IAAI,mCAAmB,EAAE;SAC5C,CAAC;QAEF,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1B,MAAM;YACN,MAAM;YACN,OAAO;YACP,OAAO,EAAP,iBAAO;SACR,CAAC,CAAC;KACJ;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AArCW,QAAA,QAAQ,YAqCnB"}
@@ -19,8 +19,12 @@ class ModulesService {
19
19
  const agentService = context.Agents;
20
20
  const pluginService = context.Plugins;
21
21
  const clients = context.Clients;
22
- const modules = config.modules || [];
23
- for (const modulePath of modules) {
22
+ const globalConfig = await (0, config_1.getGlobalConfig)();
23
+ const allModulePaths = [
24
+ ...(globalConfig.modules || []),
25
+ ...(config.modules || []),
26
+ ];
27
+ for (const modulePath of allModulePaths) {
24
28
  const importedModule = require(modulePath);
25
29
  await importedModule.init({ config, cwd: process.cwd() });
26
30
  for (const agent of importedModule.agents) {
@@ -38,6 +42,10 @@ class ModulesService {
38
42
  clients.registerModels(client.provider, client.models);
39
43
  }
40
44
  }
45
+ if (pluginService) {
46
+ await pluginService.loadPluginsFromConfig(config);
47
+ await pluginService.loadPluginsFromConfig(globalConfig);
48
+ }
41
49
  }
42
50
  }
43
51
  exports.ModulesService = ModulesService;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/modules/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAGzC,2BAA+B;AAG/B,MAAa,cAAc;IACzB,KAAK,CAAC,qBAAqB,CAAC,OAAuB;QACjD,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;QAGjC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,YAAQ,GAAE,CAAC;YACvD,OAAO,GAAG;gBACR,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,KAAK;aACN,CAAC;SACH;QAGD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAErC,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAkB,CAAC;YAC5D,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAE1D,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;gBACzC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACnC;YAED,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE;gBACvC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACvE;YAED,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC3C,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aAC1D;YAED,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC3C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aACxD;SACF;IACH,CAAC;CACF;AA9CD,wCA8CC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/modules/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0D;AAG1D,2BAA+B;AAG/B,MAAa,cAAc;IACzB,KAAK,CAAC,qBAAqB,CAAC,OAAuB;QACjD,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;QAGjC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,YAAQ,GAAE,CAAC;YACvD,OAAO,GAAG;gBACR,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,KAAK;aACN,CAAC;SACH;QAGD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAGhC,MAAM,YAAY,GAAG,MAAM,IAAA,wBAAe,GAAE,CAAC;QAC7C,MAAM,cAAc,GAAG;YACrB,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SAC1B,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;YACvC,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAkB,CAAC;YAC5D,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAE1D,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;gBACzC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACnC;YAED,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE;gBACvC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACvE;YAED,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC3C,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aAC1D;YAED,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC3C,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aACxD;SACF;QAGD,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,aAAa,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;SACzD;IACH,CAAC;CACF;AAzDD,wCAyDC"}
@@ -39,11 +39,18 @@ export type Config = {
39
39
  sources: GenerationSource[];
40
40
  embedSources: EmbedSource[];
41
41
  embeddingModel: string;
42
+ skills?: string[];
42
43
  plugins: {
43
44
  enabled: string[];
44
45
  disabled: string[];
45
46
  };
47
+ chat?: {
48
+ rootModule?: string;
49
+ renderer?: string;
50
+ modules?: string[];
51
+ };
46
52
  modules: string[];
53
+ pluginPackages?: Record<string, string>;
47
54
  agents: Assistant[];
48
55
  mcps: McpConfig[];
49
56
  modelProviders: ModelProvider[];
@@ -64,6 +71,18 @@ export type Config = {
64
71
  sandbox?: boolean;
65
72
  volumes?: string[];
66
73
  envFile?: string;
74
+ auth?: {
75
+ required?: boolean;
76
+ passkey?: {
77
+ publicKey?: string;
78
+ credentialId?: string;
79
+ algorithm?: string;
80
+ };
81
+ sessionDurationHours?: number;
82
+ };
83
+ commandAuth?: {
84
+ [toolName: string]: "always" | "session" | "never";
85
+ };
67
86
  tunnel?: {
68
87
  enabled?: boolean;
69
88
  allowedPorts?: number[];
@@ -174,6 +193,12 @@ export declare const Models: {
174
193
  openai: {
175
194
  GPT_5_2: string;
176
195
  GPT_5_1: string;
196
+ GPT_54: string;
197
+ GPT_54_Mini: string;
198
+ GPT_54_Nano: string;
199
+ GPT_54_Pro: string;
200
+ GPT_53_Chat: string;
201
+ GPT_53_Codex: string;
177
202
  GPT_5: string;
178
203
  GPT_5_Mini: string;
179
204
  GPT_5_Nano: string;
@@ -196,6 +221,12 @@ export declare const Models: {
196
221
  o1_Mini: string;
197
222
  GPT_4o_Mini_Search: string;
198
223
  GPT_4o_Search: string;
224
+ GPT_4o_Transcribe: string;
225
+ GPT_4o_Mini_Transcribe: string;
226
+ GPT_Realtime_15: string;
227
+ GPT_Realtime_Mini: string;
228
+ GPT_Image_15: string;
229
+ GPT_Image_1_Mini: string;
199
230
  TTS_1: string;
200
231
  Whisper_1: string;
201
232
  DALL_E_3: string;
@@ -205,9 +236,20 @@ export declare const Models: {
205
236
  Sora_2_Pro: string;
206
237
  };
207
238
  google: {
208
- Gemini_3_Preview: string;
239
+ Gemini_31_Pro_Preview: string;
240
+ Gemini_31_Flash_Image_Preview: string;
241
+ Gemini_31_Flash_Lite_Preview: string;
242
+ Gemini_3_Flash_Preview: string;
243
+ Gemini_3_Pro_Image_Preview: string;
244
+ Gemini_25_Pro: string;
245
+ Gemini_25_Flash: string;
246
+ Gemini_25_Flash_Lite: string;
209
247
  Gemini_25_Flash_Preview: string;
210
248
  Gemini_25_Pro_Preview: string;
249
+ Gemini_25_Flash_Image: string;
250
+ Gemini_25_Flash_Live: string;
251
+ Gemini_25_Flash_Native_Audio: string;
252
+ Gemini_25_Pro_TTS: string;
211
253
  Gemini_20_Flash: string;
212
254
  Gemini_20_Flash_Preview_Image_Generation: string;
213
255
  Gemini_20_Flash_Lite: string;
@@ -215,8 +257,13 @@ export declare const Models: {
215
257
  Gemini_15_Flash_8B: string;
216
258
  Gemini_15_Pro: string;
217
259
  Imagen_3: string;
260
+ Imagen_4_Fast: string;
261
+ Imagen_4_Ultra: string;
218
262
  Veo_2: string;
263
+ Veo_3: string;
264
+ Veo_3_Fast: string;
219
265
  Veo_3_1: string;
266
+ Veo_3_1_Fast: string;
220
267
  Gemini_20_Flash_Live: string;
221
268
  Gemini_25_Flash_TTS: string;
222
269
  Gemini_20_Flash_TTS: string;
@@ -230,6 +277,7 @@ export declare const EmbeddingModels: {
230
277
  };
231
278
  google: {
232
279
  Gemini_Embedding: string;
280
+ Gemini_Embedding_001: string;
233
281
  };
234
282
  };
235
283
  export declare function getEnabledPlugins(plugins: Config["plugins"] | undefined): string[];
@@ -247,8 +295,9 @@ export declare const GoogleImageModels: string[];
247
295
  export declare const OpenAiImageModels: string[];
248
296
  export declare const OpenAiVideoModels: string[];
249
297
  export declare const OpenAiTTSModels: string[];
250
- export declare const OpenAiTranscriptionModels: string[];
251
298
  export declare const XaiImageModels: string[];
299
+ export declare const OpenAiTranscriptionModels: string[];
300
+ export declare const OpenAiRealtimeModels: string[];
252
301
  export declare const XaiVideoModels: string[];
253
302
  export declare const GoogleTTSModels: string[];
254
303
  export declare const GoogleVideoModels: string[];