@jingyi0605/codingns 0.1.0 → 0.1.2

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 (241) hide show
  1. package/README.md +14 -0
  2. package/dist/public/assets/TerminalPage-Dr7knYq2.js +55 -0
  3. package/dist/public/assets/index-BpUi6zoT.js +108 -0
  4. package/dist/public/assets/index-NMtdQNda.css +1 -0
  5. package/dist/public/index.html +2 -2
  6. package/dist/server/config/env.js +72 -7
  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 +16 -0
  67. package/dist/server/modules/sessions/codex-app-server-helper-client.js +237 -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 +8 -3
  81. package/dist/server/modules/sessions/session-history-service.js +303 -64
  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 +40 -4
  84. package/dist/server/modules/sessions/session-live-runtime-service.js +334 -44
  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 +2 -2
  92. package/dist/server/modules/terminal/command-template-service.js +3 -3
  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/terminal-controller.js +7 -7
  149. package/dist/server/modules/terminal/terminal-controller.js.map +1 -1
  150. package/dist/server/modules/terminal/terminal-service.d.ts +30 -14
  151. package/dist/server/modules/terminal/terminal-service.js +260 -51
  152. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  153. package/dist/server/modules/terminal/terminal-shell.d.ts +4 -0
  154. package/dist/server/modules/terminal/terminal-shell.js +165 -18
  155. package/dist/server/modules/terminal/terminal-shell.js.map +1 -1
  156. package/dist/server/modules/workbench/workspace-file-watcher.d.ts +30 -0
  157. package/dist/server/modules/workbench/workspace-file-watcher.js +137 -0
  158. package/dist/server/modules/workbench/workspace-file-watcher.js.map +1 -0
  159. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +43 -7
  160. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  161. package/dist/server/routes/git.js +1 -0
  162. package/dist/server/routes/git.js.map +1 -1
  163. package/dist/server/routes/preferences.d.ts +2 -1
  164. package/dist/server/routes/preferences.js +3 -1
  165. package/dist/server/routes/preferences.js.map +1 -1
  166. package/dist/server/routes/sessions.js +2 -0
  167. package/dist/server/routes/sessions.js.map +1 -1
  168. package/dist/server/server/create-server.d.ts +4 -0
  169. package/dist/server/server/create-server.js +22 -5
  170. package/dist/server/server/create-server.js.map +1 -1
  171. package/dist/server/shared/utils/command-launch.d.ts +6 -0
  172. package/dist/server/shared/utils/command-launch.js +39 -0
  173. package/dist/server/shared/utils/command-launch.js.map +1 -0
  174. package/dist/server/shared/utils/perf-log.d.ts +1 -0
  175. package/dist/server/shared/utils/perf-log.js +8 -2
  176. package/dist/server/shared/utils/perf-log.js.map +1 -1
  177. package/dist/server/shared/utils/permission-debug-log.d.ts +2 -0
  178. package/dist/server/shared/utils/permission-debug-log.js +40 -0
  179. package/dist/server/shared/utils/permission-debug-log.js.map +1 -0
  180. package/dist/server/shared/utils/terminal-debug-log.d.ts +4 -0
  181. package/dist/server/shared/utils/terminal-debug-log.js +71 -0
  182. package/dist/server/shared/utils/terminal-debug-log.js.map +1 -0
  183. package/dist/server/storage/repositories/user-preference-profile-repository.d.ts +8 -0
  184. package/dist/server/storage/repositories/user-preference-profile-repository.js +46 -0
  185. package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -0
  186. package/dist/server/storage/sqlite/schema.sql +13 -0
  187. package/dist/server/types/domain.d.ts +28 -1
  188. package/dist/server/ws/terminal-ws-hub.d.ts +2 -0
  189. package/dist/server/ws/terminal-ws-hub.js +42 -5
  190. package/dist/server/ws/terminal-ws-hub.js.map +1 -1
  191. package/dist/server/ws/workbench-ws-hub.d.ts +9 -1
  192. package/dist/server/ws/workbench-ws-hub.js +132 -21
  193. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  194. package/dist/server/ws/ws-server.d.ts +22 -1
  195. package/dist/server/ws/ws-server.js +134 -46
  196. package/dist/server/ws/ws-server.js.map +1 -1
  197. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.d.ts +4 -1
  198. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js +107 -6
  199. package/node_modules/@codingns/session-sync-core/dist/claude-message-utils.js.map +1 -1
  200. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +30 -0
  201. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +103 -0
  202. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -0
  203. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +1 -1
  204. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +38 -6
  205. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  206. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -1
  207. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +1 -1
  208. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  209. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.d.ts +1 -0
  210. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js +8 -0
  211. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-permissions.js.map +1 -0
  212. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js +87 -7
  213. package/node_modules/@codingns/session-sync-core/dist/providers/opencode-shared.js.map +1 -1
  214. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +1 -1
  215. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +8 -4
  216. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  217. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +1 -0
  218. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +5 -0
  219. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  220. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +5 -0
  221. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +114 -6
  222. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  223. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +23 -0
  224. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +721 -18
  225. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  226. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -0
  227. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +106 -23
  228. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  229. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +1 -0
  230. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +3 -0
  231. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -1
  232. package/node_modules/@codingns/session-sync-core/dist/runtime/types.d.ts +1 -0
  233. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +1 -1
  234. package/node_modules/@codingns/session-sync-core/dist/services.js +2 -2
  235. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  236. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +1 -1
  237. package/package.json +6 -2
  238. package/scripts/postinstall.mjs +218 -0
  239. package/dist/public/assets/TerminalPage-Dj_VDew3.js +0 -54
  240. package/dist/public/assets/index-C1GZV2wq.js +0 -106
  241. package/dist/public/assets/index-DU7f8NaZ.css +0 -1
@@ -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,16 @@
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 failAll;
16
+ }
@@ -0,0 +1,237 @@
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
+ closed: false
51
+ };
52
+ this.transports.set(transportId, state);
53
+ const request = async (method, input = {}) => {
54
+ if (state.closed) {
55
+ throw new Error("CODEX_APP_SERVER_CLOSED");
56
+ }
57
+ const requestId = String(this.nextRequestId++);
58
+ return await new Promise((resolve, reject) => {
59
+ state.pendingResponses.set(requestId, {
60
+ resolve,
61
+ reject
62
+ });
63
+ this.sendMessage({
64
+ type: "transport_request",
65
+ transportId,
66
+ requestId,
67
+ method,
68
+ ...input
69
+ }).catch((error) => {
70
+ state.pendingResponses.delete(requestId);
71
+ reject(error);
72
+ });
73
+ });
74
+ };
75
+ return {
76
+ async initialize() {
77
+ await request("initialize");
78
+ },
79
+ async startThread(runtimeRequest) {
80
+ const result = await request("startThread", {
81
+ request: runtimeRequest
82
+ });
83
+ return {
84
+ providerSessionId: String(result.providerSessionId ?? ""),
85
+ rawStoreRef: normalizeNullableString(result.rawStoreRef)
86
+ };
87
+ },
88
+ async resumeThread(runtimeRequest, providerSessionId) {
89
+ const result = await request("resumeThread", {
90
+ request: runtimeRequest,
91
+ providerSessionId
92
+ });
93
+ return {
94
+ providerSessionId: String(result.providerSessionId ?? providerSessionId),
95
+ rawStoreRef: normalizeNullableString(result.rawStoreRef)
96
+ };
97
+ },
98
+ async startTurn(runtimeRequest, providerSessionId) {
99
+ await request("startTurn", {
100
+ request: runtimeRequest,
101
+ providerSessionId
102
+ });
103
+ },
104
+ async interruptTurn() {
105
+ await request("interruptTurn");
106
+ },
107
+ setNotificationHandler(handler) {
108
+ state.notificationHandler = handler;
109
+ },
110
+ setServerRequestHandler(handler) {
111
+ state.serverRequestHandler = handler;
112
+ },
113
+ close: () => {
114
+ if (state.closed) {
115
+ return;
116
+ }
117
+ state.closed = true;
118
+ void this.sendMessage({
119
+ type: "transport_request",
120
+ transportId,
121
+ requestId: String(this.nextRequestId++),
122
+ method: "close"
123
+ });
124
+ this.rejectTransportPending(state, new Error("CODEX_APP_SERVER_CLOSED"));
125
+ this.transports.delete(transportId);
126
+ }
127
+ };
128
+ }
129
+ dispose() {
130
+ if (this.disposed) {
131
+ return;
132
+ }
133
+ this.disposed = true;
134
+ this.stdoutReader.close();
135
+ this.child.kill("SIGTERM");
136
+ this.failAll(new Error("Codex app-server helper 已关闭"));
137
+ }
138
+ async handleMessageLine(line) {
139
+ const trimmed = line.trim();
140
+ if (!trimmed.startsWith("{")) {
141
+ console.warn(`[codex-app-server-helper] 忽略非协议输出: ${trimmed}`);
142
+ return;
143
+ }
144
+ let message;
145
+ try {
146
+ message = JSON.parse(trimmed);
147
+ }
148
+ catch (error) {
149
+ console.warn("[codex-app-server-helper] 无法解析响应", error);
150
+ return;
151
+ }
152
+ const state = this.transports.get(message.transportId);
153
+ if (!state) {
154
+ return;
155
+ }
156
+ switch (message.type) {
157
+ case "response": {
158
+ const pending = state.pendingResponses.get(message.requestId);
159
+ if (!pending) {
160
+ return;
161
+ }
162
+ state.pendingResponses.delete(message.requestId);
163
+ if (message.ok) {
164
+ pending.resolve(message.result);
165
+ return;
166
+ }
167
+ pending.reject(new Error(message.error));
168
+ return;
169
+ }
170
+ case "notification":
171
+ await state.notificationHandler(message.notification);
172
+ return;
173
+ case "server_request":
174
+ try {
175
+ const result = await state.serverRequestHandler(message.request);
176
+ await this.sendMessage({
177
+ type: "server_request_result",
178
+ transportId: message.transportId,
179
+ requestId: message.requestId,
180
+ ok: true,
181
+ result
182
+ });
183
+ }
184
+ catch (error) {
185
+ await this.sendMessage({
186
+ type: "server_request_result",
187
+ transportId: message.transportId,
188
+ requestId: message.requestId,
189
+ ok: false,
190
+ error: error instanceof Error ? error.message : String(error)
191
+ });
192
+ }
193
+ return;
194
+ case "transport_closed":
195
+ state.closed = true;
196
+ this.rejectTransportPending(state, new Error(message.detail ?? "CODEX_APP_SERVER_CLOSED"));
197
+ this.transports.delete(message.transportId);
198
+ }
199
+ }
200
+ async sendMessage(message) {
201
+ await new Promise((resolve, reject) => {
202
+ this.child.stdin.write(`${JSON.stringify(message)}\n`, (error) => {
203
+ if (error) {
204
+ reject(error);
205
+ return;
206
+ }
207
+ resolve();
208
+ });
209
+ });
210
+ }
211
+ rejectTransportPending(state, error) {
212
+ for (const pending of state.pendingResponses.values()) {
213
+ pending.reject(error);
214
+ }
215
+ state.pendingResponses.clear();
216
+ }
217
+ failAll(error) {
218
+ for (const state of this.transports.values()) {
219
+ this.rejectTransportPending(state, error instanceof Error ? error : new Error(String(error)));
220
+ }
221
+ this.transports.clear();
222
+ }
223
+ }
224
+ function resolveHelperLaunch(commandPath) {
225
+ const currentFilePath = fileURLToPath(import.meta.url);
226
+ const extension = path.extname(currentFilePath);
227
+ const helperPath = currentFilePath.replace(/codex-app-server-helper-client\.(ts|js)$/, `codex-app-server-helper-process${extension}`);
228
+ const baseArgs = extension === ".ts" ? ["--import", "tsx", helperPath] : [helperPath];
229
+ return {
230
+ command: process.execPath,
231
+ args: [...baseArgs, "--command-path", commandPath]
232
+ };
233
+ }
234
+ function normalizeNullableString(value) {
235
+ return typeof value === "string" && value.length > 0 ? value : null;
236
+ }
237
+ //# 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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"}