@jingyi0605/codingns 0.1.1 → 0.1.3

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 (251) hide show
  1. package/README.md +14 -0
  2. package/dist/public/assets/{TerminalPage-CVG1cGAJ.js → TerminalPage-Nq5sPc5c.js} +19 -19
  3. package/dist/public/assets/index-9hnprhO7.css +1 -0
  4. package/dist/public/assets/index-BTpmuKhG.js +108 -0
  5. package/dist/public/index.html +2 -2
  6. package/dist/server/config/env.js +24 -3
  7. package/dist/server/config/env.js.map +1 -1
  8. package/dist/server/config/opencode-base-url-resolver.d.ts +13 -8
  9. package/dist/server/config/opencode-base-url-resolver.js +117 -147
  10. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  11. package/dist/server/config/opencode-system-probe-helper-client.d.ts +18 -0
  12. package/dist/server/config/opencode-system-probe-helper-client.js +127 -0
  13. package/dist/server/config/opencode-system-probe-helper-client.js.map +1 -0
  14. package/dist/server/config/opencode-system-probe-helper-process.d.ts +1 -0
  15. package/dist/server/config/opencode-system-probe-helper-process.js +208 -0
  16. package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -0
  17. package/dist/server/modules/git/git-command-helper-client.d.ts +25 -0
  18. package/dist/server/modules/git/git-command-helper-client.js +143 -0
  19. package/dist/server/modules/git/git-command-helper-client.js.map +1 -0
  20. package/dist/server/modules/git/git-command-helper-process.d.ts +1 -0
  21. package/dist/server/modules/git/git-command-helper-process.js +237 -0
  22. package/dist/server/modules/git/git-command-helper-process.js.map +1 -0
  23. package/dist/server/modules/git/git-command-runner.d.ts +8 -0
  24. package/dist/server/modules/git/git-command-runner.js +77 -6
  25. package/dist/server/modules/git/git-command-runner.js.map +1 -1
  26. package/dist/server/modules/git/git-controller.d.ts +4 -0
  27. package/dist/server/modules/git/git-controller.js +4 -1
  28. package/dist/server/modules/git/git-controller.js.map +1 -1
  29. package/dist/server/modules/git/git-read-service.d.ts +2 -1
  30. package/dist/server/modules/git/git-read-service.js +30 -0
  31. package/dist/server/modules/git/git-read-service.js.map +1 -1
  32. package/dist/server/modules/git/git-write-service.d.ts +1 -1
  33. package/dist/server/modules/git/git-write-service.js +8 -7
  34. package/dist/server/modules/git/git-write-service.js.map +1 -1
  35. package/dist/server/modules/git/types.d.ts +5 -0
  36. package/dist/server/modules/preferences/common.d.ts +2 -0
  37. package/dist/server/modules/preferences/common.js +13 -0
  38. package/dist/server/modules/preferences/common.js.map +1 -0
  39. package/dist/server/modules/preferences/profile-controller.d.ts +11 -0
  40. package/dist/server/modules/preferences/profile-controller.js +14 -0
  41. package/dist/server/modules/preferences/profile-controller.js.map +1 -0
  42. package/dist/server/modules/preferences/profile-service.d.ts +17 -0
  43. package/dist/server/modules/preferences/profile-service.js +213 -0
  44. package/dist/server/modules/preferences/profile-service.js.map +1 -0
  45. package/dist/server/modules/preferences/quick-phrase-controller.js +2 -12
  46. package/dist/server/modules/preferences/quick-phrase-controller.js.map +1 -1
  47. package/dist/server/modules/provider/codex-model-options.js +26 -165
  48. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  49. package/dist/server/modules/provider/opencode-model-options.js +6 -71
  50. package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
  51. package/dist/server/modules/provider/provider-controller.d.ts +2 -0
  52. package/dist/server/modules/provider/provider-controller.js +21 -1
  53. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  54. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +25 -0
  55. package/dist/server/modules/provider/provider-discovery-helper-client.js +114 -0
  56. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -0
  57. package/dist/server/modules/provider/provider-discovery-helper-process.d.ts +1 -0
  58. package/dist/server/modules/provider/provider-discovery-helper-process.js +296 -0
  59. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -0
  60. package/dist/server/modules/sessions/claude-runtime-helper-client.d.ts +28 -0
  61. package/dist/server/modules/sessions/claude-runtime-helper-client.js +221 -0
  62. package/dist/server/modules/sessions/claude-runtime-helper-client.js.map +1 -0
  63. package/dist/server/modules/sessions/claude-runtime-helper-process.d.ts +1 -0
  64. package/dist/server/modules/sessions/claude-runtime-helper-process.js +146 -0
  65. package/dist/server/modules/sessions/claude-runtime-helper-process.js.map +1 -0
  66. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +17 -0
  67. package/dist/server/modules/sessions/codex-app-server-helper-client.js +260 -0
  68. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -0
  69. package/dist/server/modules/sessions/codex-app-server-helper-process.d.ts +1 -0
  70. package/dist/server/modules/sessions/codex-app-server-helper-process.js +484 -0
  71. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -0
  72. package/dist/server/modules/sessions/session-activity-authority-service.d.ts +52 -0
  73. package/dist/server/modules/sessions/session-activity-authority-service.js +377 -0
  74. package/dist/server/modules/sessions/session-activity-authority-service.js.map +1 -0
  75. package/dist/server/modules/sessions/session-activity-inspector.js +80 -40
  76. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  77. package/dist/server/modules/sessions/session-controller.d.ts +15 -1
  78. package/dist/server/modules/sessions/session-controller.js +14 -1
  79. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  80. package/dist/server/modules/sessions/session-history-service.d.ts +4 -2
  81. package/dist/server/modules/sessions/session-history-service.js +167 -44
  82. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  83. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +42 -4
  84. package/dist/server/modules/sessions/session-live-runtime-service.js +343 -51
  85. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  86. package/dist/server/modules/sessions/session-permission-request-service.d.ts +175 -0
  87. package/dist/server/modules/sessions/session-permission-request-service.js +1615 -0
  88. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -0
  89. package/dist/server/modules/sessions/session-provider-error-mapper.js +14 -0
  90. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  91. package/dist/server/modules/terminal/command-template-service.d.ts +6 -2
  92. package/dist/server/modules/terminal/command-template-service.js +91 -5
  93. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  94. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-client.d.ts +24 -0
  95. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-client.js +104 -0
  96. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-client.js.map +1 -0
  97. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-process.d.ts +1 -0
  98. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-process.js +96 -0
  99. package/dist/server/modules/terminal/runtime/adapters/conpty-control-helper-process.js.map +1 -0
  100. package/dist/server/modules/terminal/runtime/adapters/conpty-runtime-adapter.d.ts +37 -0
  101. package/dist/server/modules/terminal/runtime/adapters/conpty-runtime-adapter.js +123 -0
  102. package/dist/server/modules/terminal/runtime/adapters/conpty-runtime-adapter.js.map +1 -0
  103. package/dist/server/modules/terminal/runtime/adapters/embedded-pty-runtime-adapter.d.ts +12 -5
  104. package/dist/server/modules/terminal/runtime/adapters/embedded-pty-runtime-adapter.js +44 -4
  105. package/dist/server/modules/terminal/runtime/adapters/embedded-pty-runtime-adapter.js.map +1 -1
  106. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-client.d.ts +14 -0
  107. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-client.js +105 -0
  108. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-client.js.map +1 -0
  109. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-process.d.ts +1 -0
  110. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-process.js +67 -0
  111. package/dist/server/modules/terminal/runtime/adapters/tmux-helper-process.js.map +1 -0
  112. package/dist/server/modules/terminal/runtime/adapters/tmux-runtime-adapter.d.ts +8 -12
  113. package/dist/server/modules/terminal/runtime/adapters/tmux-runtime-adapter.js +112 -21
  114. package/dist/server/modules/terminal/runtime/adapters/tmux-runtime-adapter.js.map +1 -1
  115. package/dist/server/modules/terminal/runtime/conpty-runtime-shared.d.ts +25 -0
  116. package/dist/server/modules/terminal/runtime/conpty-runtime-shared.js +124 -0
  117. package/dist/server/modules/terminal/runtime/conpty-runtime-shared.js.map +1 -0
  118. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.d.ts +1 -0
  119. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +205 -0
  120. package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -0
  121. package/dist/server/modules/terminal/runtime/conpty-session-attach-client.d.ts +1 -0
  122. package/dist/server/modules/terminal/runtime/conpty-session-attach-client.js +108 -0
  123. package/dist/server/modules/terminal/runtime/conpty-session-attach-client.js.map +1 -0
  124. package/dist/server/modules/terminal/runtime/conpty-session-control-client.d.ts +1 -0
  125. package/dist/server/modules/terminal/runtime/conpty-session-control-client.js +90 -0
  126. package/dist/server/modules/terminal/runtime/conpty-session-control-client.js.map +1 -0
  127. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.d.ts +1 -0
  128. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +179 -0
  129. package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -0
  130. package/dist/server/modules/terminal/runtime/pty-broker-client.d.ts +29 -0
  131. package/dist/server/modules/terminal/runtime/pty-broker-client.js +169 -0
  132. package/dist/server/modules/terminal/runtime/pty-broker-client.js.map +1 -0
  133. package/dist/server/modules/terminal/runtime/pty-broker-shared.d.ts +22 -0
  134. package/dist/server/modules/terminal/runtime/pty-broker-shared.js +123 -0
  135. package/dist/server/modules/terminal/runtime/pty-broker-shared.js.map +1 -0
  136. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.d.ts +1 -0
  137. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +11 -1
  138. package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
  139. package/dist/server/modules/terminal/runtime/terminal-log-file-store.d.ts +1 -0
  140. package/dist/server/modules/terminal/runtime/terminal-log-file-store.js +7 -1
  141. package/dist/server/modules/terminal/runtime/terminal-log-file-store.js.map +1 -1
  142. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js +3 -2
  143. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js.map +1 -1
  144. package/dist/server/modules/terminal/runtime/terminal-runtime-adapter.d.ts +5 -3
  145. package/dist/server/modules/terminal/runtime/terminal-runtime-manager.d.ts +11 -5
  146. package/dist/server/modules/terminal/runtime/terminal-runtime-manager.js +110 -13
  147. package/dist/server/modules/terminal/runtime/terminal-runtime-manager.js.map +1 -1
  148. package/dist/server/modules/terminal/template-reverse-proxy-service.d.ts +10 -0
  149. package/dist/server/modules/terminal/template-reverse-proxy-service.js +320 -0
  150. package/dist/server/modules/terminal/template-reverse-proxy-service.js.map +1 -0
  151. package/dist/server/modules/terminal/terminal-controller.d.ts +1 -0
  152. package/dist/server/modules/terminal/terminal-controller.js +23 -7
  153. package/dist/server/modules/terminal/terminal-controller.js.map +1 -1
  154. package/dist/server/modules/terminal/terminal-service.d.ts +30 -14
  155. package/dist/server/modules/terminal/terminal-service.js +260 -51
  156. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  157. package/dist/server/modules/terminal/terminal-shell.d.ts +4 -0
  158. package/dist/server/modules/terminal/terminal-shell.js +165 -18
  159. package/dist/server/modules/terminal/terminal-shell.js.map +1 -1
  160. package/dist/server/modules/workbench/workspace-file-watcher.d.ts +30 -0
  161. package/dist/server/modules/workbench/workspace-file-watcher.js +137 -0
  162. package/dist/server/modules/workbench/workspace-file-watcher.js.map +1 -0
  163. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +48 -7
  164. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  165. package/dist/server/routes/git.js +1 -0
  166. package/dist/server/routes/git.js.map +1 -1
  167. package/dist/server/routes/preferences.d.ts +2 -1
  168. package/dist/server/routes/preferences.js +3 -1
  169. package/dist/server/routes/preferences.js.map +1 -1
  170. package/dist/server/routes/proxy.d.ts +3 -0
  171. package/dist/server/routes/proxy.js +24 -0
  172. package/dist/server/routes/proxy.js.map +1 -0
  173. package/dist/server/routes/sessions.js +2 -0
  174. package/dist/server/routes/sessions.js.map +1 -1
  175. package/dist/server/server/create-server.d.ts +4 -0
  176. package/dist/server/server/create-server.js +29 -5
  177. package/dist/server/server/create-server.js.map +1 -1
  178. package/dist/server/shared/utils/command-launch.d.ts +6 -0
  179. package/dist/server/shared/utils/command-launch.js +39 -0
  180. package/dist/server/shared/utils/command-launch.js.map +1 -0
  181. package/dist/server/shared/utils/perf-log.d.ts +1 -0
  182. package/dist/server/shared/utils/perf-log.js +8 -2
  183. package/dist/server/shared/utils/perf-log.js.map +1 -1
  184. package/dist/server/shared/utils/permission-debug-log.d.ts +2 -0
  185. package/dist/server/shared/utils/permission-debug-log.js +40 -0
  186. package/dist/server/shared/utils/permission-debug-log.js.map +1 -0
  187. package/dist/server/shared/utils/terminal-debug-log.d.ts +4 -0
  188. package/dist/server/shared/utils/terminal-debug-log.js +71 -0
  189. package/dist/server/shared/utils/terminal-debug-log.js.map +1 -0
  190. package/dist/server/storage/repositories/terminal-command-template-repository.d.ts +1 -0
  191. package/dist/server/storage/repositories/terminal-command-template-repository.js +34 -3
  192. package/dist/server/storage/repositories/terminal-command-template-repository.js.map +1 -1
  193. package/dist/server/storage/repositories/user-preference-profile-repository.d.ts +8 -0
  194. package/dist/server/storage/repositories/user-preference-profile-repository.js +46 -0
  195. package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -0
  196. package/dist/server/storage/sqlite/client.js +27 -0
  197. package/dist/server/storage/sqlite/client.js.map +1 -1
  198. package/dist/server/storage/sqlite/schema.sql +15 -0
  199. package/dist/server/types/domain.d.ts +30 -1
  200. package/dist/server/ws/terminal-ws-hub.d.ts +2 -0
  201. package/dist/server/ws/terminal-ws-hub.js +42 -5
  202. package/dist/server/ws/terminal-ws-hub.js.map +1 -1
  203. package/dist/server/ws/workbench-ws-hub.d.ts +9 -1
  204. package/dist/server/ws/workbench-ws-hub.js +132 -21
  205. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  206. package/dist/server/ws/ws-server.d.ts +22 -1
  207. package/dist/server/ws/ws-server.js +82 -44
  208. package/dist/server/ws/ws-server.js.map +1 -1
  209. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +42 -0
  210. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +1 -1
  211. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +30 -0
  212. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +103 -0
  213. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -0
  214. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +1 -1
  215. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +167 -7
  216. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  217. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -1
  218. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +1 -1
  219. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  220. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +1 -0
  221. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +8 -0
  222. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +1 -0
  223. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +31 -0
  224. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +1 -1
  225. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +1 -1
  226. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +8 -4
  227. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  228. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +1 -0
  229. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +15 -0
  230. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  231. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +5 -0
  232. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +85 -1
  233. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  234. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +25 -0
  235. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +718 -17
  236. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  237. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -0
  238. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +106 -23
  239. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  240. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +3 -0
  241. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +19 -0
  242. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -1
  243. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +3 -0
  244. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +1 -1
  245. package/node_modules/@codingns/session-sync-core/dist/services.js +2 -2
  246. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  247. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +1 -1
  248. package/package.json +3 -2
  249. package/scripts/postinstall.mjs +15 -8
  250. package/dist/public/assets/index-BUPByQPG.css +0 -1
  251. package/dist/public/assets/index-D1CwTkI2.js +0 -106
@@ -0,0 +1,146 @@
1
+ import readline from "node:readline";
2
+ import { ClaudeRuntimeAdapter } from "@codingns/session-sync-core";
3
+ const args = process.argv.slice(2);
4
+ const homeDir = readFlag(args, "--home-dir");
5
+ const commandPath = readFlag(args, "--command-path");
6
+ const hookBridge = readJsonFlag(args, "--hook-bridge");
7
+ if (!homeDir) {
8
+ throw new Error("CLAUDE_RUNTIME_HELPER_HOME_DIR_REQUIRED");
9
+ }
10
+ const adapter = new ClaudeRuntimeAdapter({
11
+ homeDir,
12
+ commandPath: commandPath ?? undefined,
13
+ hookBridge
14
+ });
15
+ const activeRuns = new Map();
16
+ const stdinReader = readline.createInterface({
17
+ input: process.stdin,
18
+ crlfDelay: Infinity
19
+ });
20
+ stdinReader.on("line", (line) => {
21
+ void handleLine(line);
22
+ });
23
+ async function handleLine(line) {
24
+ let message;
25
+ try {
26
+ message = JSON.parse(line);
27
+ }
28
+ catch (error) {
29
+ console.error("[claude-runtime-helper] 无法解析请求", error);
30
+ return;
31
+ }
32
+ switch (message.type) {
33
+ case "start":
34
+ case "continue":
35
+ await handleLaunch(message.type, message.requestId, message.request);
36
+ return;
37
+ case "submit": {
38
+ const run = activeRuns.get(message.sessionId);
39
+ if (!run || !run.launch.submitDuringRun) {
40
+ emitError({
41
+ sessionId: message.sessionId,
42
+ detail: "IN_RUN_INPUT_NOT_SUPPORTED"
43
+ });
44
+ return;
45
+ }
46
+ try {
47
+ await run.launch.submitDuringRun(message.options);
48
+ }
49
+ catch (error) {
50
+ emitError({
51
+ sessionId: message.sessionId,
52
+ detail: error instanceof Error ? error.message : String(error)
53
+ });
54
+ }
55
+ return;
56
+ }
57
+ case "interrupt": {
58
+ const run = activeRuns.get(message.sessionId);
59
+ if (!run || !run.launch.interrupt) {
60
+ return;
61
+ }
62
+ try {
63
+ await run.launch.interrupt();
64
+ }
65
+ catch (error) {
66
+ emitError({
67
+ sessionId: message.sessionId,
68
+ detail: error instanceof Error ? error.message : String(error)
69
+ });
70
+ }
71
+ }
72
+ }
73
+ }
74
+ async function handleLaunch(type, requestId, request) {
75
+ const sink = {
76
+ emit: async (event) => {
77
+ emit({
78
+ type: "event",
79
+ sessionId: request.sessionId,
80
+ event
81
+ });
82
+ },
83
+ updateSessionBinding: (binding) => {
84
+ emit({
85
+ type: "binding",
86
+ sessionId: request.sessionId,
87
+ binding
88
+ });
89
+ }
90
+ };
91
+ try {
92
+ const launch = type === "start"
93
+ ? await adapter.startSession(request, sink)
94
+ : await adapter.continueSession(request, sink);
95
+ activeRuns.set(request.sessionId, {
96
+ launch
97
+ });
98
+ emit({
99
+ type: "launch",
100
+ requestId,
101
+ sessionId: request.sessionId,
102
+ providerSessionId: launch.providerSessionId,
103
+ rawStoreRef: launch.rawStoreRef,
104
+ supportsSubmitDuringRun: typeof launch.submitDuringRun === "function",
105
+ supportsInterrupt: typeof launch.interrupt === "function"
106
+ });
107
+ void launch.completed.finally(() => {
108
+ activeRuns.delete(request.sessionId);
109
+ emit({
110
+ type: "completed",
111
+ sessionId: request.sessionId
112
+ });
113
+ });
114
+ }
115
+ catch (error) {
116
+ emitError({
117
+ requestId,
118
+ sessionId: request.sessionId,
119
+ detail: error instanceof Error ? error.message : String(error)
120
+ });
121
+ }
122
+ }
123
+ function emit(message) {
124
+ process.stdout.write(`${JSON.stringify(message)}\n`);
125
+ }
126
+ function emitError(input) {
127
+ emit({
128
+ type: "error",
129
+ ...input
130
+ });
131
+ }
132
+ function readFlag(argv, flag) {
133
+ const index = argv.indexOf(flag);
134
+ if (index < 0) {
135
+ return null;
136
+ }
137
+ return argv[index + 1] ?? null;
138
+ }
139
+ function readJsonFlag(argv, flag) {
140
+ const value = readFlag(argv, flag);
141
+ if (!value) {
142
+ return null;
143
+ }
144
+ return JSON.parse(value);
145
+ }
146
+ //# sourceMappingURL=claude-runtime-helper-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-runtime-helper-process.js","sourceRoot":"","sources":["../../../../src/modules/sessions/claude-runtime-helper-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { CodexAppServerTransport } from "@codingns/session-sync-core";
2
+ export declare class CodexAppServerHelperClient {
3
+ private readonly child;
4
+ private readonly stdoutReader;
5
+ private readonly transports;
6
+ private nextTransportId;
7
+ private nextRequestId;
8
+ private disposed;
9
+ constructor(commandPath: string);
10
+ createTransport(): CodexAppServerTransport;
11
+ dispose(): void;
12
+ private handleMessageLine;
13
+ private sendMessage;
14
+ private rejectTransportPending;
15
+ private notifyTransportClosed;
16
+ private failAll;
17
+ }
@@ -0,0 +1,260 @@
1
+ import { spawn } from "node:child_process";
2
+ import path from "node:path";
3
+ import readline from "node:readline";
4
+ import { fileURLToPath } from "node:url";
5
+ export class CodexAppServerHelperClient {
6
+ child;
7
+ stdoutReader;
8
+ transports = new Map();
9
+ nextTransportId = 1;
10
+ nextRequestId = 1;
11
+ disposed = false;
12
+ constructor(commandPath) {
13
+ const launch = resolveHelperLaunch(commandPath);
14
+ this.child = spawn(launch.command, launch.args, {
15
+ cwd: process.cwd(),
16
+ env: process.env,
17
+ stdio: ["pipe", "pipe", "pipe"]
18
+ });
19
+ this.stdoutReader = readline.createInterface({
20
+ input: this.child.stdout
21
+ });
22
+ this.stdoutReader.on("line", (line) => {
23
+ void this.handleMessageLine(line);
24
+ });
25
+ this.child.stderr.on("data", (chunk) => {
26
+ const content = String(chunk).trim();
27
+ if (!content) {
28
+ return;
29
+ }
30
+ console.warn(`[codex-app-server-helper] ${content}`);
31
+ });
32
+ this.child.on("error", (error) => {
33
+ this.failAll(error);
34
+ });
35
+ this.child.on("exit", (code, signal) => {
36
+ if (this.disposed && (code === 0 || signal === "SIGTERM")) {
37
+ return;
38
+ }
39
+ this.failAll(new Error(`Codex app-server helper 已退出:code=${code ?? "null"} signal=${signal ?? "null"}`));
40
+ });
41
+ }
42
+ createTransport() {
43
+ const transportId = String(this.nextTransportId++);
44
+ const state = {
45
+ pendingResponses: new Map(),
46
+ notificationHandler: () => undefined,
47
+ serverRequestHandler: async () => {
48
+ throw new Error("CODEX_APP_SERVER_REQUEST_NOT_SUPPORTED");
49
+ },
50
+ closeHandler: null,
51
+ closed: false
52
+ };
53
+ this.transports.set(transportId, state);
54
+ const request = async (method, input = {}) => {
55
+ if (state.closed) {
56
+ throw new Error("CODEX_APP_SERVER_CLOSED");
57
+ }
58
+ const requestId = String(this.nextRequestId++);
59
+ return await new Promise((resolve, reject) => {
60
+ state.pendingResponses.set(requestId, {
61
+ resolve,
62
+ reject
63
+ });
64
+ this.sendMessage({
65
+ type: "transport_request",
66
+ transportId,
67
+ requestId,
68
+ method,
69
+ ...input
70
+ }).catch((error) => {
71
+ state.pendingResponses.delete(requestId);
72
+ reject(error);
73
+ });
74
+ });
75
+ };
76
+ return {
77
+ async initialize() {
78
+ await request("initialize");
79
+ },
80
+ async startThread(runtimeRequest) {
81
+ const result = await request("startThread", {
82
+ request: runtimeRequest
83
+ });
84
+ return {
85
+ providerSessionId: String(result.providerSessionId ?? ""),
86
+ rawStoreRef: normalizeNullableString(result.rawStoreRef)
87
+ };
88
+ },
89
+ async resumeThread(runtimeRequest, providerSessionId) {
90
+ const result = await request("resumeThread", {
91
+ request: runtimeRequest,
92
+ providerSessionId
93
+ });
94
+ return {
95
+ providerSessionId: String(result.providerSessionId ?? providerSessionId),
96
+ rawStoreRef: normalizeNullableString(result.rawStoreRef)
97
+ };
98
+ },
99
+ async startTurn(runtimeRequest, providerSessionId) {
100
+ await request("startTurn", {
101
+ request: runtimeRequest,
102
+ providerSessionId
103
+ });
104
+ },
105
+ async interruptTurn() {
106
+ await request("interruptTurn");
107
+ },
108
+ setNotificationHandler(handler) {
109
+ state.notificationHandler = handler;
110
+ },
111
+ setServerRequestHandler(handler) {
112
+ state.serverRequestHandler = handler;
113
+ },
114
+ setOnClose(handler) {
115
+ state.closeHandler = handler;
116
+ },
117
+ isClosed() {
118
+ return state.closed;
119
+ },
120
+ close: () => {
121
+ if (state.closed) {
122
+ return;
123
+ }
124
+ state.closed = true;
125
+ void this.sendMessage({
126
+ type: "transport_request",
127
+ transportId,
128
+ requestId: String(this.nextRequestId++),
129
+ method: "close"
130
+ });
131
+ this.rejectTransportPending(state, new Error("CODEX_APP_SERVER_CLOSED"));
132
+ this.notifyTransportClosed(state, null);
133
+ this.transports.delete(transportId);
134
+ }
135
+ };
136
+ }
137
+ dispose() {
138
+ if (this.disposed) {
139
+ return;
140
+ }
141
+ this.disposed = true;
142
+ this.stdoutReader.close();
143
+ this.child.kill("SIGTERM");
144
+ this.failAll(new Error("Codex app-server helper 已关闭"));
145
+ }
146
+ async handleMessageLine(line) {
147
+ const trimmed = line.trim();
148
+ if (!trimmed.startsWith("{")) {
149
+ console.warn(`[codex-app-server-helper] 忽略非协议输出: ${trimmed}`);
150
+ return;
151
+ }
152
+ let message;
153
+ try {
154
+ message = JSON.parse(trimmed);
155
+ }
156
+ catch (error) {
157
+ console.warn("[codex-app-server-helper] 无法解析响应", error);
158
+ return;
159
+ }
160
+ const state = this.transports.get(message.transportId);
161
+ if (!state) {
162
+ return;
163
+ }
164
+ switch (message.type) {
165
+ case "response": {
166
+ const pending = state.pendingResponses.get(message.requestId);
167
+ if (!pending) {
168
+ return;
169
+ }
170
+ state.pendingResponses.delete(message.requestId);
171
+ if (message.ok) {
172
+ pending.resolve(message.result);
173
+ return;
174
+ }
175
+ pending.reject(new Error(message.error));
176
+ return;
177
+ }
178
+ case "notification":
179
+ await state.notificationHandler(message.notification);
180
+ return;
181
+ case "server_request":
182
+ try {
183
+ const result = await state.serverRequestHandler(message.request);
184
+ await this.sendMessage({
185
+ type: "server_request_result",
186
+ transportId: message.transportId,
187
+ requestId: message.requestId,
188
+ ok: true,
189
+ result
190
+ });
191
+ }
192
+ catch (error) {
193
+ await this.sendMessage({
194
+ type: "server_request_result",
195
+ transportId: message.transportId,
196
+ requestId: message.requestId,
197
+ ok: false,
198
+ error: error instanceof Error ? error.message : String(error)
199
+ });
200
+ }
201
+ return;
202
+ case "transport_closed":
203
+ state.closed = true;
204
+ this.rejectTransportPending(state, new Error(message.detail ?? "CODEX_APP_SERVER_CLOSED"));
205
+ this.notifyTransportClosed(state, message.detail ? new Error(message.detail) : null);
206
+ this.transports.delete(message.transportId);
207
+ }
208
+ }
209
+ async sendMessage(message) {
210
+ await new Promise((resolve, reject) => {
211
+ this.child.stdin.write(`${JSON.stringify(message)}\n`, (error) => {
212
+ if (error) {
213
+ reject(error);
214
+ return;
215
+ }
216
+ resolve();
217
+ });
218
+ });
219
+ }
220
+ rejectTransportPending(state, error) {
221
+ for (const pending of state.pendingResponses.values()) {
222
+ pending.reject(error);
223
+ }
224
+ state.pendingResponses.clear();
225
+ }
226
+ notifyTransportClosed(state, error) {
227
+ if (!state.closeHandler) {
228
+ return;
229
+ }
230
+ try {
231
+ state.closeHandler(error);
232
+ }
233
+ catch {
234
+ return;
235
+ }
236
+ }
237
+ failAll(error) {
238
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
239
+ for (const state of this.transports.values()) {
240
+ state.closed = true;
241
+ this.rejectTransportPending(state, normalizedError);
242
+ this.notifyTransportClosed(state, normalizedError);
243
+ }
244
+ this.transports.clear();
245
+ }
246
+ }
247
+ function resolveHelperLaunch(commandPath) {
248
+ const currentFilePath = fileURLToPath(import.meta.url);
249
+ const extension = path.extname(currentFilePath);
250
+ const helperPath = currentFilePath.replace(/codex-app-server-helper-client\.(ts|js)$/, `codex-app-server-helper-process${extension}`);
251
+ const baseArgs = extension === ".ts" ? ["--import", "tsx", helperPath] : [helperPath];
252
+ return {
253
+ command: process.execPath,
254
+ args: [...baseArgs, "--command-path", commandPath]
255
+ };
256
+ }
257
+ function normalizeNullableString(value) {
258
+ return typeof value === "string" && value.length > 0 ? value : null;
259
+ }
260
+ //# sourceMappingURL=codex-app-server-helper-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-app-server-helper-client.js","sourceRoot":"","sources":["../../../../src/modules/sessions/codex-app-server-helper-client.ts"],"names":[],"mappings":"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"}