@next-open-ai/openbot 0.6.8 → 0.6.16

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -137
  3. package/apps/desktop/renderer/dist/assets/index-BxqMW-uy.css +10 -0
  4. package/apps/desktop/renderer/dist/assets/index-DJs-wX3R.js +89 -0
  5. package/apps/desktop/renderer/dist/index.html +2 -2
  6. package/dist/core/agent/agent-manager.d.ts +14 -6
  7. package/dist/core/agent/agent-manager.js +63 -23
  8. package/dist/core/agent/proxy/adapters/coze-adapter.d.ts +2 -0
  9. package/dist/core/agent/proxy/adapters/coze-adapter.js +406 -0
  10. package/dist/core/agent/proxy/adapters/local-adapter.d.ts +2 -0
  11. package/dist/core/agent/proxy/adapters/local-adapter.js +93 -0
  12. package/dist/core/agent/proxy/adapters/openclawx-adapter.d.ts +2 -0
  13. package/dist/core/agent/proxy/adapters/openclawx-adapter.js +115 -0
  14. package/dist/core/agent/proxy/adapters/opencode-adapter.d.ts +11 -0
  15. package/dist/core/agent/proxy/adapters/opencode-adapter.js +750 -0
  16. package/dist/core/agent/proxy/adapters/opencode-free-models.d.ts +20 -0
  17. package/dist/core/agent/proxy/adapters/opencode-free-models.js +14 -0
  18. package/dist/core/agent/proxy/adapters/opencode-local-runner.d.ts +5 -0
  19. package/dist/core/agent/proxy/adapters/opencode-local-runner.js +86 -0
  20. package/dist/core/agent/proxy/index.d.ts +3 -0
  21. package/dist/core/agent/proxy/index.js +16 -0
  22. package/dist/core/agent/proxy/registry.d.ts +7 -0
  23. package/dist/core/agent/proxy/registry.js +13 -0
  24. package/dist/core/agent/proxy/run-for-channel.d.ts +3 -0
  25. package/dist/core/agent/proxy/run-for-channel.js +31 -0
  26. package/dist/core/agent/proxy/types.d.ts +30 -0
  27. package/dist/core/agent/proxy/types.js +1 -0
  28. package/dist/core/agent/run.js +1 -1
  29. package/dist/core/config/agent-reload-pending.d.ts +9 -0
  30. package/dist/core/config/agent-reload-pending.js +66 -0
  31. package/dist/core/config/desktop-config.d.ts +111 -3
  32. package/dist/core/config/desktop-config.js +289 -26
  33. package/dist/core/inbound-message-preprocess.d.ts +27 -0
  34. package/dist/core/inbound-message-preprocess.js +96 -0
  35. package/dist/core/mcp/client.d.ts +4 -0
  36. package/dist/core/mcp/client.js +2 -0
  37. package/dist/core/mcp/config.d.ts +14 -3
  38. package/dist/core/mcp/config.js +68 -3
  39. package/dist/core/mcp/index.d.ts +8 -6
  40. package/dist/core/mcp/index.js +6 -3
  41. package/dist/core/mcp/operator.d.ts +17 -2
  42. package/dist/core/mcp/operator.js +97 -30
  43. package/dist/core/mcp/transport/index.d.ts +4 -0
  44. package/dist/core/mcp/transport/index.js +6 -1
  45. package/dist/core/mcp/transport/stdio.d.ts +6 -0
  46. package/dist/core/mcp/transport/stdio.js +22 -1
  47. package/dist/core/mcp/types.d.ts +18 -0
  48. package/dist/core/memory/compaction-extension.d.ts +4 -3
  49. package/dist/core/memory/compaction-extension.js +6 -14
  50. package/dist/core/memory/embedding-types.d.ts +10 -0
  51. package/dist/core/memory/embedding-types.js +5 -0
  52. package/dist/core/memory/embedding.d.ts +2 -1
  53. package/dist/core/memory/embedding.js +38 -6
  54. package/dist/core/memory/index.js +3 -0
  55. package/dist/core/memory/local-embedding-llama.d.ts +13 -0
  56. package/dist/core/memory/local-embedding-llama.js +76 -0
  57. package/dist/core/memory/local-embedding.d.ts +10 -0
  58. package/dist/core/memory/local-embedding.js +29 -0
  59. package/dist/core/memory/persist-compaction-on-close.d.ts +14 -0
  60. package/dist/core/memory/persist-compaction-on-close.js +32 -0
  61. package/dist/core/session-outlet/index.d.ts +19 -0
  62. package/dist/core/session-outlet/index.js +33 -0
  63. package/dist/core/session-outlet/outlet.d.ts +15 -0
  64. package/dist/core/session-outlet/outlet.js +49 -0
  65. package/dist/core/session-outlet/types.d.ts +35 -0
  66. package/dist/core/session-outlet/types.js +5 -0
  67. package/dist/core/tools/bookmark-tool.d.ts +4 -0
  68. package/dist/core/tools/bookmark-tool.js +59 -3
  69. package/dist/core/tools/index.d.ts +2 -1
  70. package/dist/core/tools/index.js +2 -1
  71. package/dist/core/tools/memory-recall-tool.d.ts +6 -0
  72. package/dist/core/tools/memory-recall-tool.js +77 -0
  73. package/dist/gateway/channel/adapters/telegram.js +13 -2
  74. package/dist/gateway/channel/adapters/wechat.d.ts +24 -0
  75. package/dist/gateway/channel/adapters/wechat.js +205 -0
  76. package/dist/gateway/channel/channel-core.d.ts +1 -0
  77. package/dist/gateway/channel/channel-core.js +101 -59
  78. package/dist/gateway/channel/run-agent.d.ts +2 -4
  79. package/dist/gateway/channel/run-agent.js +13 -125
  80. package/dist/gateway/methods/agent-cancel.d.ts +3 -1
  81. package/dist/gateway/methods/agent-cancel.js +16 -2
  82. package/dist/gateway/methods/agent-chat.d.ts +4 -0
  83. package/dist/gateway/methods/agent-chat.js +309 -118
  84. package/dist/gateway/methods/run-scheduled-task.js +7 -7
  85. package/dist/gateway/proxy-run-abort.d.ts +6 -0
  86. package/dist/gateway/proxy-run-abort.js +39 -0
  87. package/dist/gateway/server.js +64 -7
  88. package/dist/server/agent-config/agent-config.controller.d.ts +2 -2
  89. package/dist/server/agent-config/agent-config.controller.js +8 -4
  90. package/dist/server/agent-config/agent-config.module.js +3 -1
  91. package/dist/server/agent-config/agent-config.service.d.ts +67 -6
  92. package/dist/server/agent-config/agent-config.service.js +75 -3
  93. package/dist/server/agents/agents.controller.d.ts +16 -0
  94. package/dist/server/agents/agents.controller.js +62 -1
  95. package/dist/server/agents/agents.service.js +1 -1
  96. package/dist/server/bootstrap.js +9 -2
  97. package/dist/server/config/config.controller.d.ts +31 -2
  98. package/dist/server/config/config.controller.js +14 -0
  99. package/dist/server/config/config.module.js +2 -2
  100. package/dist/server/config/config.service.d.ts +14 -1
  101. package/dist/server/config/config.service.js +1 -0
  102. package/dist/server/workspace/workspace.service.d.ts +7 -0
  103. package/dist/server/workspace/workspace.service.js +16 -0
  104. package/package.json +8 -2
  105. package/presets/preset-agents.json +94 -0
  106. package/presets/preset-config.json +11 -0
  107. package/presets/preset-providers.json +173 -0
  108. package/presets/workspaces/code-assistant/skills/code-review/SKILL.md +19 -0
  109. package/presets/workspaces/code-assistant/skills/code-runner/SKILL.md +21 -0
  110. package/presets/workspaces/code-assistant/skills/git-helper/SKILL.md +29 -0
  111. package/presets/workspaces/creator-assistant/skills/.gitkeep +0 -0
  112. package/presets/workspaces/creator-assistant/skills/creator-tools/SKILL.md +15 -0
  113. package/presets/workspaces/doc-assistant/skills/doc-processor/SKILL.md +21 -0
  114. package/presets/workspaces/download-assistant/skills/downloader/SKILL.md +20 -0
  115. package/presets/workspaces/file-assistant/skills/file-converter/SKILL.md +21 -0
  116. package/presets/workspaces/file-assistant/skills/file-organizer/SKILL.md +17 -0
  117. package/presets/workspaces/file-assistant/skills/file-search/SKILL.md +22 -0
  118. package/presets/workspaces/morning-briefing/skills/news-fetcher/SKILL.md +16 -0
  119. package/presets/workspaces/morning-briefing/skills/web-summarizer/SKILL.md +20 -0
  120. package/presets/workspaces/news-assistant/skills/news-fetcher/SKILL.md +16 -0
  121. package/presets/workspaces/news-assistant/skills/web-summarizer/SKILL.md +20 -0
  122. package/apps/desktop/renderer/dist/assets/index-LCp1YPVA.css +0 -10
  123. package/apps/desktop/renderer/dist/assets/index-l5fpDsHs.js +0 -89
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Local AgentProxy 适配器:使用本机 AgentManager(pi-coding-agent)执行。
3
+ */
4
+ import { agentManager } from "../../agent-manager.js";
5
+ import { getDesktopConfig } from "../../../config/desktop-config.js";
6
+ const CHANNEL_AGENT_TIMEOUT_MS = 120_000;
7
+ export const localAdapter = {
8
+ type: "local",
9
+ async runStream(options, config, callbacks) {
10
+ const { sessionId, message, agentId } = options;
11
+ const workspace = config.workspace ?? agentId ?? "default";
12
+ const { maxAgentSessions } = getDesktopConfig();
13
+ const session = await agentManager.getOrCreateSession(sessionId, {
14
+ agentId,
15
+ workspace,
16
+ provider: config.provider,
17
+ modelId: config.model,
18
+ apiKey: config.apiKey,
19
+ maxSessions: maxAgentSessions,
20
+ targetAgentId: agentId,
21
+ mcpServers: config.mcpServers,
22
+ systemPrompt: config.systemPrompt,
23
+ useLongMemory: config.useLongMemory,
24
+ });
25
+ let resolveDone;
26
+ const donePromise = new Promise((r) => {
27
+ resolveDone = r;
28
+ });
29
+ const unsubscribe = session.subscribe((event) => {
30
+ if (event.type === "message_update" && event.assistantMessageEvent?.type === "text_delta" && event.assistantMessageEvent?.delta) {
31
+ callbacks.onChunk(event.assistantMessageEvent.delta);
32
+ }
33
+ else if (event.type === "turn_end") {
34
+ callbacks.onTurnEnd?.();
35
+ }
36
+ else if (event.type === "agent_end") {
37
+ callbacks.onDone();
38
+ resolveDone();
39
+ }
40
+ });
41
+ try {
42
+ await session.sendUserMessage(message, { deliverAs: "followUp" });
43
+ await Promise.race([
44
+ donePromise,
45
+ new Promise((_, rej) => setTimeout(() => rej(new Error("Channel agent reply timeout")), CHANNEL_AGENT_TIMEOUT_MS)),
46
+ ]);
47
+ }
48
+ finally {
49
+ unsubscribe();
50
+ }
51
+ },
52
+ async runCollect(options, config) {
53
+ const { sessionId, message, agentId } = options;
54
+ const workspace = config.workspace ?? agentId ?? "default";
55
+ const { maxAgentSessions } = getDesktopConfig();
56
+ const session = await agentManager.getOrCreateSession(sessionId, {
57
+ agentId,
58
+ workspace,
59
+ provider: config.provider,
60
+ modelId: config.model,
61
+ apiKey: config.apiKey,
62
+ maxSessions: maxAgentSessions,
63
+ targetAgentId: agentId,
64
+ mcpServers: config.mcpServers,
65
+ systemPrompt: config.systemPrompt,
66
+ useLongMemory: config.useLongMemory,
67
+ });
68
+ const chunks = [];
69
+ let resolveDone;
70
+ const donePromise = new Promise((r) => {
71
+ resolveDone = r;
72
+ });
73
+ const unsubscribe = session.subscribe((event) => {
74
+ if (event.type === "message_update" && event.assistantMessageEvent?.type === "text_delta" && event.assistantMessageEvent?.delta) {
75
+ chunks.push(event.assistantMessageEvent.delta);
76
+ }
77
+ else if (event.type === "agent_end") {
78
+ resolveDone();
79
+ }
80
+ });
81
+ try {
82
+ await session.sendUserMessage(message, { deliverAs: "followUp" });
83
+ await Promise.race([
84
+ donePromise,
85
+ new Promise((_, rej) => setTimeout(() => rej(new Error("Channel agent reply timeout")), CHANNEL_AGENT_TIMEOUT_MS)),
86
+ ]);
87
+ }
88
+ finally {
89
+ unsubscribe();
90
+ }
91
+ return chunks.join("").trim() || "(无文本回复)";
92
+ },
93
+ };
@@ -0,0 +1,2 @@
1
+ import type { IAgentProxyAdapter } from "../types.js";
2
+ export declare const openclawxAdapter: IAgentProxyAdapter;
@@ -0,0 +1,115 @@
1
+ const REQUEST_TIMEOUT_MS = 120_000;
2
+ function getOpenBotConfig(config) {
3
+ const ox = config.openclawx;
4
+ if (!ox?.baseUrl?.trim())
5
+ return null;
6
+ return {
7
+ baseUrl: ox.baseUrl.replace(/\/$/, ""),
8
+ apiKey: ox.apiKey?.trim(),
9
+ };
10
+ }
11
+ function buildHeaders(apiKey) {
12
+ const headers = { "Content-Type": "application/json" };
13
+ if (apiKey)
14
+ headers["Authorization"] = `Bearer ${apiKey}`;
15
+ return headers;
16
+ }
17
+ export const openclawxAdapter = {
18
+ type: "openclawx",
19
+ async runStream(options, config, callbacks) {
20
+ const oxConfig = getOpenBotConfig(config);
21
+ if (!oxConfig) {
22
+ throw new Error("OpenBot adapter: missing openclawx.baseUrl in agent config");
23
+ }
24
+ const url = `${oxConfig.baseUrl}/server-api/agents/proxy-chat/stream`;
25
+ const body = { sessionId: options.sessionId, message: options.message, agentId: options.agentId };
26
+ const controller = new AbortController();
27
+ const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
28
+ const userSignal = options.signal;
29
+ if (userSignal) {
30
+ if (userSignal.aborted)
31
+ controller.abort();
32
+ else
33
+ userSignal.addEventListener("abort", () => controller.abort(), { once: true });
34
+ }
35
+ try {
36
+ const res = await fetch(url, {
37
+ method: "POST",
38
+ headers: buildHeaders(oxConfig.apiKey),
39
+ body: JSON.stringify(body),
40
+ signal: controller.signal,
41
+ });
42
+ if (!res.ok) {
43
+ const text = await res.text();
44
+ throw new Error(`OpenBot proxy stream error ${res.status}: ${text}`);
45
+ }
46
+ const reader = res.body?.getReader();
47
+ if (!reader) {
48
+ callbacks.onDone();
49
+ return;
50
+ }
51
+ const decoder = new TextDecoder();
52
+ let buffer = "";
53
+ while (true) {
54
+ const { done, value } = await reader.read();
55
+ if (done)
56
+ break;
57
+ buffer += decoder.decode(value, { stream: true });
58
+ const lines = buffer.split("\n");
59
+ buffer = lines.pop() || "";
60
+ for (const line of lines) {
61
+ if (line.startsWith("data:")) {
62
+ const data = line.slice(5).trim();
63
+ if (!data)
64
+ continue;
65
+ try {
66
+ const parsed = JSON.parse(data);
67
+ if (parsed.done) {
68
+ callbacks.onDone();
69
+ return;
70
+ }
71
+ if (typeof parsed.delta === "string" && parsed.delta) {
72
+ callbacks.onChunk(parsed.delta);
73
+ }
74
+ }
75
+ catch {
76
+ // ignore
77
+ }
78
+ }
79
+ }
80
+ }
81
+ callbacks.onDone();
82
+ }
83
+ finally {
84
+ clearTimeout(timeoutId);
85
+ }
86
+ },
87
+ async runCollect(options, config) {
88
+ const oxConfig = getOpenBotConfig(config);
89
+ if (!oxConfig) {
90
+ throw new Error("OpenBot adapter: missing openclawx.baseUrl in agent config");
91
+ }
92
+ const url = `${oxConfig.baseUrl}/server-api/agents/proxy-chat`;
93
+ const body = { sessionId: options.sessionId, message: options.message, agentId: options.agentId };
94
+ const controller = new AbortController();
95
+ const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
96
+ try {
97
+ const res = await fetch(url, {
98
+ method: "POST",
99
+ headers: buildHeaders(oxConfig.apiKey),
100
+ body: JSON.stringify(body),
101
+ signal: controller.signal,
102
+ });
103
+ if (!res.ok) {
104
+ const text = await res.text();
105
+ throw new Error(`OpenBot proxy error ${res.status}: ${text}`);
106
+ }
107
+ const data = (await res.json());
108
+ const text = data.text;
109
+ return typeof text === "string" ? text.trim() || "(无文本回复)" : "(无文本回复)";
110
+ }
111
+ finally {
112
+ clearTimeout(timeoutId);
113
+ }
114
+ },
115
+ };
@@ -0,0 +1,11 @@
1
+ import type { IAgentProxyAdapter } from "../types.js";
2
+ export interface ResolvedOpenCodeConfig {
3
+ baseUrl: string;
4
+ username: string;
5
+ password?: string;
6
+ model: {
7
+ providerID: string;
8
+ modelID: string;
9
+ };
10
+ }
11
+ export declare const opencodeAdapter: IAgentProxyAdapter;