magic-agent 1.0.3 → 1.0.49

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 (153) hide show
  1. package/CLIENT-CONTRACT.md +254 -8
  2. package/README.md +48 -5
  3. package/client-ui/index.html +32 -0
  4. package/client-ui/pc/app.css +89 -1
  5. package/client-ui/pc/index.html +18 -8
  6. package/client-ui/pc/js/00-base.js +8 -30
  7. package/client-ui/pc/js/05-task-list-render.js +4 -1
  8. package/client-ui/pc/js/07-chat-stream-render.js +2 -85
  9. package/client-ui/pc/js/10-markdown.js +3 -171
  10. package/client-ui/pc/js/18-askbox.js +2 -176
  11. package/client-ui/pc/js/90-glue.js +1 -1
  12. package/client-ui/pc/js/91-workbench-stubs.js +4 -10
  13. package/client-ui/pc/js/93-rail.js +10 -3
  14. package/client-ui/shared/conv/01-dom.js +52 -0
  15. package/client-ui/shared/conv/02-media-kinds.js +34 -0
  16. package/client-ui/shared/conv/03-chat-message.js +1561 -0
  17. package/client-ui/shared/conv/06-ask-answer.js +377 -0
  18. package/client-ui/shared/conv/07-stream-delegation.js +158 -0
  19. package/client-ui/{pc/js → shared/conv}/09-stream-apply.js +121 -6
  20. package/client-ui/shared/conv/10-markdown-render.js +252 -0
  21. package/client-ui/shared/conv/18-askbox-markup.js +185 -0
  22. package/client-ui/{pc/js → shared/conv}/19-attachments.js +365 -21
  23. package/client-ui/shared/conv/27-conv-ledger.js +381 -0
  24. package/client-ui/{pc/js → shared/conv}/29-msg-variants.js +112 -3
  25. package/client-ui/shared/conv/README.md +257 -0
  26. package/client-ui/shared/conv/conv.css +1638 -0
  27. package/client-ui/shared/conv/dom-map.md +170 -0
  28. package/client-ui/shared/conv/manifest.json +44 -0
  29. package/client-ui/shared/conversation.css +368 -190
  30. package/client-ui/shared/conversation.js +1722 -788
  31. package/client-ui/shared/host-glue.js +143 -0
  32. package/client-ui/shared/transport-http.js +130 -6
  33. package/client-ui-mobile/index.html +2417 -103
  34. package/cmd/magic-client/clientctl.go +273 -0
  35. package/cmd/magic-client/main.go +71 -5
  36. package/go.mod +6 -3
  37. package/go.sum +4 -1
  38. package/internal/agent/arkclaw.go +3 -2
  39. package/internal/agent/arkclaw_stream.go +126 -8
  40. package/internal/agent/arkclaw_stream_test.go +97 -15
  41. package/internal/agent/arkclaw_test.go +3 -3
  42. package/internal/agent/attachments.go +18 -5
  43. package/internal/agent/attachments_test.go +7 -1
  44. package/internal/agent/capability_test.go +11 -1
  45. package/internal/agent/claude.go +96 -158
  46. package/internal/agent/codebuddy.go +108 -133
  47. package/internal/agent/codebuddy_gateway.go +8 -4
  48. package/internal/agent/codebuddy_gateway_stream.go +82 -2
  49. package/internal/agent/codebuddy_gateway_test.go +236 -1
  50. package/internal/agent/codebuddy_stream_test.go +262 -0
  51. package/internal/agent/codex.go +50 -9
  52. package/internal/agent/codex_stream_test.go +30 -0
  53. package/internal/agent/codex_test.go +24 -0
  54. package/internal/agent/custom_models.go +109 -3
  55. package/internal/agent/custom_models_test.go +74 -0
  56. package/internal/agent/dsh.go +464 -130
  57. package/internal/agent/dsh_resume.go +258 -0
  58. package/internal/agent/dsh_sdk.go +68 -17
  59. package/internal/agent/dsh_sdk_test.go +102 -2
  60. package/internal/agent/dsh_test.go +409 -36
  61. package/internal/agent/engine.go +26 -6
  62. package/internal/agent/engine_base.go +46 -2
  63. package/internal/agent/engine_base_test.go +29 -0
  64. package/internal/agent/engine_test.go +101 -0
  65. package/internal/agent/env.go +69 -1
  66. package/internal/agent/itemtracker.go +271 -0
  67. package/internal/agent/launch.go +192 -0
  68. package/internal/agent/launch_test.go +206 -0
  69. package/internal/agent/launch_unix.go +15 -0
  70. package/internal/agent/launch_windows.go +24 -0
  71. package/internal/agent/limitnotice.go +103 -0
  72. package/internal/agent/limitnotice_test.go +211 -0
  73. package/internal/agent/llmengine.go +2 -2
  74. package/internal/agent/models.go +3 -2
  75. package/internal/agent/openclaw.go +4 -3
  76. package/internal/agent/openclaw_acp.go +7 -0
  77. package/internal/agent/openclaw_test.go +2 -2
  78. package/internal/agent/permission.go +100 -11
  79. package/internal/agent/permission_test.go +100 -36
  80. package/internal/agent/runcmd.go +13 -3
  81. package/internal/agent/runner.go +7 -1
  82. package/internal/agent/runner_test.go +1 -1
  83. package/internal/agent/stream.go +777 -43
  84. package/internal/agent/stream_test.go +3 -2
  85. package/internal/agent/stream_timeline_test.go +905 -0
  86. package/internal/agent/streamjson.go +36 -2
  87. package/internal/agent/toolkind.go +20 -1
  88. package/internal/agent/toolkind_test.go +7 -1
  89. package/internal/agent/tools_suffix_test.go +10 -3
  90. package/internal/agent/trae.go +5 -3
  91. package/internal/agent/workspace_test.go +52 -0
  92. package/internal/cli/ask.go +260 -33
  93. package/internal/cli/ask_test.go +15 -11
  94. package/internal/cli/attach_test.go +32 -20
  95. package/internal/cli/clientcmd.go +156 -0
  96. package/internal/cli/events.go +53 -8
  97. package/internal/cli/events_test.go +230 -0
  98. package/internal/cli/keepalive_test.go +101 -6
  99. package/internal/cli/permission_test.go +5 -1
  100. package/internal/cli/root.go +174 -32
  101. package/internal/cli/session.go +175 -28
  102. package/internal/cli/session_test.go +144 -5
  103. package/internal/cli/sessionlog.go +385 -38
  104. package/internal/cli/sessionlog_test.go +708 -0
  105. package/internal/cli/sessionlog_user_test.go +142 -1
  106. package/internal/cli/sessiontitle.go +141 -0
  107. package/internal/client/browse.go +456 -0
  108. package/internal/client/browse_test.go +199 -0
  109. package/internal/client/cors_test.go +35 -0
  110. package/internal/client/daemon.go +525 -0
  111. package/internal/client/daemon_test.go +212 -0
  112. package/internal/client/detach_unix.go +19 -0
  113. package/internal/client/detach_windows.go +27 -0
  114. package/internal/client/pair.go +3 -3
  115. package/internal/client/plugins.go +376 -0
  116. package/internal/client/plugins_test.go +223 -0
  117. package/internal/client/proxy.go +374 -0
  118. package/internal/client/proxy_test.go +212 -0
  119. package/internal/client/service.go +1464 -48
  120. package/internal/client/service_test.go +649 -206
  121. package/internal/client/session_events_test.go +130 -0
  122. package/internal/client/wsproxy.go +113 -0
  123. package/internal/client/wsproxy_test.go +102 -0
  124. package/internal/session/delete.go +151 -0
  125. package/internal/session/delete_test.go +103 -0
  126. package/internal/session/session.go +155 -20
  127. package/internal/session/session_append.go +79 -21
  128. package/internal/session/session_test.go +124 -10
  129. package/internal/session/sessionlog.go +572 -6
  130. package/internal/session/sessionlog_read_test.go +410 -0
  131. package/internal/session/title.go +486 -0
  132. package/internal/session/title_test.go +298 -0
  133. package/npm/bin/magic-agent.js +101 -10
  134. package/npm/bin/magic-client.js +118 -0
  135. package/npm/dist/darwin-arm64/magic-agent +0 -0
  136. package/npm/dist/darwin-arm64/magic-client +0 -0
  137. package/npm/dist/darwin-x64/magic-agent +0 -0
  138. package/npm/dist/darwin-x64/magic-client +0 -0
  139. package/npm/dist/linux-arm64/magic-agent +0 -0
  140. package/npm/dist/linux-arm64/magic-client +0 -0
  141. package/npm/dist/linux-x64/magic-agent +0 -0
  142. package/npm/dist/linux-x64/magic-client +0 -0
  143. package/npm/dist/win32-x64/magic-agent.exe +0 -0
  144. package/npm/dist/win32-x64/magic-client.exe +0 -0
  145. package/npm/install.js +36 -13
  146. package/npm/lib/platform.js +27 -5
  147. package/package.json +8 -3
  148. package/client-ui/pc/js/03-chat-message.js +0 -880
  149. package/client-ui/pc/js/06-ask-answer.js +0 -204
  150. /package/client-ui/{pc/js → shared/conv}/08-ask-event-map.js +0 -0
  151. /package/client-ui/{pc → shared}/vendor/highlight.min.js +0 -0
  152. /package/client-ui/{pc → shared}/vendor/marked.min.js +0 -0
  153. /package/client-ui/{pc → shared}/vendor/purify.min.js +0 -0
@@ -3,7 +3,12 @@
3
3
  // platform.js - node 平台标识 -> Go 交叉编译目标 / 产物路径 的统一映射。
4
4
  //
5
5
  // 约定:dist/<goos>-<goarch>/magic-agent[.exe]
6
+ // dist/<goos>-<goarch>/magic-client[.exe] ← 客户端插件,与 core 并排
6
7
  // darwin-arm64 darwin-x64 linux-arm64 linux-x64 win32-x64
8
+ //
9
+ // 为什么两个二进制都放进 dist/<plat>/:`magic-agent client start` 靠「与自己同目录」
10
+ // 找 magic-client(见 internal/cli/clientcmd.go)。放一起,这一条兜底路径就永远命中,
11
+ // 不必依赖 PATH 里那份版本是否一致。
7
12
 
8
13
  const path = require("path");
9
14
 
@@ -27,8 +32,8 @@ function currentTarget() {
27
32
  };
28
33
  }
29
34
 
30
- function exeName(goos) {
31
- return goos === "windows" ? "magic-agent.exe" : "magic-agent";
35
+ function exeName(goos, base = "magic-agent") {
36
+ return goos === "windows" ? `${base}.exe` : base;
32
37
  }
33
38
 
34
39
  /** 包根目录(npm/ 的上一级) */
@@ -42,16 +47,32 @@ function binaryPath(target) {
42
47
  return path.join(distDir, target.dir, exeName(target.goos));
43
48
  }
44
49
 
50
+ /** 客户端插件产物的绝对路径(与 core 同目录) */
51
+ function clientBinaryPath(target) {
52
+ return path.join(distDir, target.dir, exeName(target.goos, "magic-client"));
53
+ }
54
+
45
55
  /**
46
56
  * 定位可用的 go 可执行文件。
47
- * 顺序:MAGIC_AGENT_GO_BIN > PATH > homebrew > /usr/local/go > 常见版本目录。
57
+ * 顺序:MAGIC_AGENT_GO_BIN > PATH > 常见安装位置(homebrew / 官方安装包 / 版本目录)。
48
58
  */
49
59
  function findGo() {
50
60
  const fs = require("fs");
51
61
  const candidates = [];
52
62
  if (process.env.MAGIC_AGENT_GO_BIN) candidates.push(process.env.MAGIC_AGENT_GO_BIN);
53
63
  candidates.push("go");
54
- candidates.push("/opt/homebrew/bin/go", "/usr/local/go/bin/go", "/usr/local/bin/go");
64
+ if (process.platform === "win32") {
65
+ const pf = process.env["ProgramFiles"] || "C:\\Program Files";
66
+ const pf86 = process.env["ProgramFiles(x86)"] || "C:\\Program Files (x86)";
67
+ candidates.push(
68
+ path.join(pf, "Go", "bin", "go.exe"),
69
+ path.join(pf86, "Go", "bin", "go.exe"),
70
+ "C:\\Go\\bin\\go.exe",
71
+ path.join(process.env.LOCALAPPDATA || "", "Programs", "Go", "bin", "go.exe")
72
+ );
73
+ } else {
74
+ candidates.push("/opt/homebrew/bin/go", "/usr/local/go/bin/go", "/usr/local/bin/go");
75
+ }
55
76
  for (const c of candidates) {
56
77
  try {
57
78
  if (c === "go") {
@@ -59,7 +80,7 @@ function findGo() {
59
80
  execFileSync("go", ["version"], { stdio: "ignore" });
60
81
  return "go";
61
82
  }
62
- if (fs.existsSync(c)) return c;
83
+ if (c && fs.existsSync(c)) return c;
63
84
  } catch (_) {
64
85
  /* 继续找下一个 */
65
86
  }
@@ -74,5 +95,6 @@ module.exports = {
74
95
  pkgRoot,
75
96
  distDir,
76
97
  binaryPath,
98
+ clientBinaryPath,
77
99
  findGo,
78
100
  };
package/package.json CHANGED
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "name": "magic-agent",
3
- "version": "1.0.3",
3
+ "version": "1.0.49",
4
4
  "description": "专业的 agent CLI 代理工具 - 统一 claude / codebuddy / trae / llm / codex / openclaw 引擎",
5
5
  "license": "MIT",
6
6
  "bin": {
7
- "magic-agent": "npm/bin/magic-agent.js"
7
+ "magic-agent": "npm/bin/magic-agent.js",
8
+ "magic-client": "npm/bin/magic-client.js"
8
9
  },
9
10
  "scripts": {
10
11
  "build": "node npm/build.js",
11
12
  "build:current": "node npm/build.js --current",
12
13
  "bump": "node npm/bump.js",
13
14
  "prepack": "node npm/build.js",
14
- "postinstall": "node npm/install.js"
15
+ "postinstall": "node npm/install.js",
16
+ "check:ui": "node tests/check-ui-spec.mjs",
17
+ "check:conv": "node tests/check-conv-shards.mjs",
18
+ "check:conv-host": "node tests/check-conv-shared-host.mjs",
19
+ "check:conv-comp": "node tests/check-conv-component.mjs"
15
20
  },
16
21
  "files": [
17
22
  "npm/bin/",