@jingyi0605/codingns 0.1.4 → 0.2.0

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 (239) hide show
  1. package/dist/public/assets/{TerminalPage-4ulgBhv9.js → TerminalPage-BlbQuWi1.js} +1 -1
  2. package/dist/public/assets/gemini-D4G1NbrE.png +0 -0
  3. package/dist/public/assets/index-1VIm8lVL.css +1 -0
  4. package/dist/public/assets/index-Dti93O2S.js +109 -0
  5. package/dist/public/assets/kimi-BWNNSh7e.png +0 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/env.d.ts +7 -0
  8. package/dist/server/config/env.js +150 -1
  9. package/dist/server/config/env.js.map +1 -1
  10. package/dist/server/config/opencode-system-probe-helper-process.d.ts +24 -0
  11. package/dist/server/config/opencode-system-probe-helper-process.js +70 -5
  12. package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
  13. package/dist/server/modules/butler/butler-action-context-service.d.ts +30 -0
  14. package/dist/server/modules/butler/butler-action-context-service.js +108 -0
  15. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -0
  16. package/dist/server/modules/butler/butler-auth-service.d.ts +17 -0
  17. package/dist/server/modules/butler/butler-auth-service.js +91 -0
  18. package/dist/server/modules/butler/butler-auth-service.js.map +1 -0
  19. package/dist/server/modules/butler/butler-control-action-service.d.ts +65 -0
  20. package/dist/server/modules/butler/butler-control-action-service.js +296 -0
  21. package/dist/server/modules/butler/butler-control-action-service.js.map +1 -0
  22. package/dist/server/modules/butler/butler-control-session-service.d.ts +55 -0
  23. package/dist/server/modules/butler/butler-control-session-service.js +367 -0
  24. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -0
  25. package/dist/server/modules/butler/butler-controller.d.ts +367 -0
  26. package/dist/server/modules/butler/butler-controller.js +475 -0
  27. package/dist/server/modules/butler/butler-controller.js.map +1 -0
  28. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +34 -0
  29. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +77 -0
  30. package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -0
  31. package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +23 -0
  32. package/dist/server/modules/butler/butler-follow-up-scheduler.js +57 -0
  33. package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -0
  34. package/dist/server/modules/butler/butler-follow-up-service.d.ts +86 -0
  35. package/dist/server/modules/butler/butler-follow-up-service.js +948 -0
  36. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -0
  37. package/dist/server/modules/butler/butler-inbox-service.d.ts +35 -0
  38. package/dist/server/modules/butler/butler-inbox-service.js +136 -0
  39. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -0
  40. package/dist/server/modules/butler/butler-notification-service.d.ts +12 -0
  41. package/dist/server/modules/butler/butler-notification-service.js +45 -0
  42. package/dist/server/modules/butler/butler-notification-service.js.map +1 -0
  43. package/dist/server/modules/butler/butler-profile-service.d.ts +26 -0
  44. package/dist/server/modules/butler/butler-profile-service.js +529 -0
  45. package/dist/server/modules/butler/butler-profile-service.js.map +1 -0
  46. package/dist/server/modules/butler/butler-project-service.d.ts +48 -0
  47. package/dist/server/modules/butler/butler-project-service.js +253 -0
  48. package/dist/server/modules/butler/butler-project-service.js.map +1 -0
  49. package/dist/server/modules/butler/butler-session-service.d.ts +79 -0
  50. package/dist/server/modules/butler/butler-session-service.js +503 -0
  51. package/dist/server/modules/butler/butler-session-service.js.map +1 -0
  52. package/dist/server/modules/butler/butler-session-summary-service.d.ts +55 -0
  53. package/dist/server/modules/butler/butler-session-summary-service.js +382 -0
  54. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -0
  55. package/dist/server/modules/butler/context-aggregator.d.ts +187 -0
  56. package/dist/server/modules/butler/context-aggregator.js +807 -0
  57. package/dist/server/modules/butler/context-aggregator.js.map +1 -0
  58. package/dist/server/modules/butler/instruction-adapter.d.ts +28 -0
  59. package/dist/server/modules/butler/instruction-adapter.js +101 -0
  60. package/dist/server/modules/butler/instruction-adapter.js.map +1 -0
  61. package/dist/server/modules/butler/patrol-execution-service.d.ts +47 -0
  62. package/dist/server/modules/butler/patrol-execution-service.js +347 -0
  63. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -0
  64. package/dist/server/modules/butler/patrol-plan-service.d.ts +54 -0
  65. package/dist/server/modules/butler/patrol-plan-service.js +272 -0
  66. package/dist/server/modules/butler/patrol-plan-service.js.map +1 -0
  67. package/dist/server/modules/butler/patrol-run-service.d.ts +60 -0
  68. package/dist/server/modules/butler/patrol-run-service.js +185 -0
  69. package/dist/server/modules/butler/patrol-run-service.js.map +1 -0
  70. package/dist/server/modules/butler/patrol-scheduler.d.ts +36 -0
  71. package/dist/server/modules/butler/patrol-scheduler.js +99 -0
  72. package/dist/server/modules/butler/patrol-scheduler.js.map +1 -0
  73. package/dist/server/modules/butler/project-memory-service.d.ts +30 -0
  74. package/dist/server/modules/butler/project-memory-service.js +103 -0
  75. package/dist/server/modules/butler/project-memory-service.js.map +1 -0
  76. package/dist/server/modules/butler/provider-adapter-registry.d.ts +61 -0
  77. package/dist/server/modules/butler/provider-adapter-registry.js +430 -0
  78. package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -0
  79. package/dist/server/modules/butler/session-summary-instruction-adapter.d.ts +28 -0
  80. package/dist/server/modules/butler/session-summary-instruction-adapter.js +79 -0
  81. package/dist/server/modules/butler/session-summary-instruction-adapter.js.map +1 -0
  82. package/dist/server/modules/butler/session-summary-scheduler.d.ts +23 -0
  83. package/dist/server/modules/butler/session-summary-scheduler.js +57 -0
  84. package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -0
  85. package/dist/server/modules/butler/verification-run-service.d.ts +73 -0
  86. package/dist/server/modules/butler/verification-run-service.js +633 -0
  87. package/dist/server/modules/butler/verification-run-service.js.map +1 -0
  88. package/dist/server/modules/file/file-controller.d.ts +12 -1
  89. package/dist/server/modules/file/file-controller.js +72 -1
  90. package/dist/server/modules/file/file-controller.js.map +1 -1
  91. package/dist/server/modules/file/file-preview-link-service.d.ts +22 -0
  92. package/dist/server/modules/file/file-preview-link-service.js +160 -0
  93. package/dist/server/modules/file/file-preview-link-service.js.map +1 -0
  94. package/dist/server/modules/preferences/profile-service.js +8 -2
  95. package/dist/server/modules/preferences/profile-service.js.map +1 -1
  96. package/dist/server/modules/sessions/claude-runtime-helper-process.js +1 -1
  97. package/dist/server/modules/sessions/claude-runtime-helper-process.js.map +1 -1
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +7 -2
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js +113 -2
  100. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js +106 -1
  102. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  103. package/dist/server/modules/sessions/session-controller.d.ts +24 -1
  104. package/dist/server/modules/sessions/session-controller.js +34 -3
  105. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  106. package/dist/server/modules/sessions/session-history-service.d.ts +47 -2
  107. package/dist/server/modules/sessions/session-history-service.js +881 -56
  108. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  109. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +30 -2
  110. package/dist/server/modules/sessions/session-live-runtime-service.js +584 -159
  111. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  112. package/dist/server/modules/sessions/session-provider-error-mapper.js +94 -0
  113. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  114. package/dist/server/modules/workbench/workbench-service.d.ts +7 -1
  115. package/dist/server/modules/workbench/workbench-service.js +31 -7
  116. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  117. package/dist/server/routes/butler.d.ts +3 -0
  118. package/dist/server/routes/butler.js +54 -0
  119. package/dist/server/routes/butler.js.map +1 -0
  120. package/dist/server/routes/files.js +2 -0
  121. package/dist/server/routes/files.js.map +1 -1
  122. package/dist/server/routes/sessions.js +1 -0
  123. package/dist/server/routes/sessions.js.map +1 -1
  124. package/dist/server/server/create-server.d.ts +65 -0
  125. package/dist/server/server/create-server.js +154 -5
  126. package/dist/server/server/create-server.js.map +1 -1
  127. package/dist/server/shared/utils/command-availability.d.ts +1 -0
  128. package/dist/server/shared/utils/command-availability.js +83 -0
  129. package/dist/server/shared/utils/command-availability.js.map +1 -0
  130. package/dist/server/storage/repositories/butler-control-event-repository.d.ts +8 -0
  131. package/dist/server/storage/repositories/butler-control-event-repository.js +78 -0
  132. package/dist/server/storage/repositories/butler-control-event-repository.js.map +1 -0
  133. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +11 -0
  134. package/dist/server/storage/repositories/butler-control-session-repository.js +86 -0
  135. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -0
  136. package/dist/server/storage/repositories/butler-follow-up-task-repository.d.ts +16 -0
  137. package/dist/server/storage/repositories/butler-follow-up-task-repository.js +252 -0
  138. package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -0
  139. package/dist/server/storage/repositories/butler-inbox-item-repository.d.ts +15 -0
  140. package/dist/server/storage/repositories/butler-inbox-item-repository.js +111 -0
  141. package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -0
  142. package/dist/server/storage/repositories/butler-notification-archive-repository.d.ts +9 -0
  143. package/dist/server/storage/repositories/butler-notification-archive-repository.js +48 -0
  144. package/dist/server/storage/repositories/butler-notification-archive-repository.js.map +1 -0
  145. package/dist/server/storage/repositories/butler-profile-repository.d.ts +9 -0
  146. package/dist/server/storage/repositories/butler-profile-repository.js +86 -0
  147. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -0
  148. package/dist/server/storage/repositories/butler-project-repository.d.ts +14 -0
  149. package/dist/server/storage/repositories/butler-project-repository.js +140 -0
  150. package/dist/server/storage/repositories/butler-project-repository.js.map +1 -0
  151. package/dist/server/storage/repositories/butler-session-repository.d.ts +11 -0
  152. package/dist/server/storage/repositories/butler-session-repository.js +106 -0
  153. package/dist/server/storage/repositories/butler-session-repository.js.map +1 -0
  154. package/dist/server/storage/repositories/butler-session-summary-state-repository.d.ts +8 -0
  155. package/dist/server/storage/repositories/butler-session-summary-state-repository.js +62 -0
  156. package/dist/server/storage/repositories/butler-session-summary-state-repository.js.map +1 -0
  157. package/dist/server/storage/repositories/patrol-plan-repository.d.ts +27 -0
  158. package/dist/server/storage/repositories/patrol-plan-repository.js +119 -0
  159. package/dist/server/storage/repositories/patrol-plan-repository.js.map +1 -0
  160. package/dist/server/storage/repositories/patrol-run-repository.d.ts +28 -0
  161. package/dist/server/storage/repositories/patrol-run-repository.js +121 -0
  162. package/dist/server/storage/repositories/patrol-run-repository.js.map +1 -0
  163. package/dist/server/storage/repositories/project-memory-repository.d.ts +15 -0
  164. package/dist/server/storage/repositories/project-memory-repository.js +150 -0
  165. package/dist/server/storage/repositories/project-memory-repository.js.map +1 -0
  166. package/dist/server/storage/repositories/session-checkpoint-repository.d.ts +9 -0
  167. package/dist/server/storage/repositories/session-checkpoint-repository.js +72 -0
  168. package/dist/server/storage/repositories/session-checkpoint-repository.js.map +1 -0
  169. package/dist/server/storage/repositories/session-fork-repository.d.ts +8 -0
  170. package/dist/server/storage/repositories/session-fork-repository.js +69 -0
  171. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -0
  172. package/dist/server/storage/repositories/session-index-repository.js +40 -2
  173. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  174. package/dist/server/storage/repositories/session-message-origin-repository.d.ts +10 -0
  175. package/dist/server/storage/repositories/session-message-origin-repository.js +93 -0
  176. package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -0
  177. package/dist/server/storage/repositories/verification-run-repository.d.ts +29 -0
  178. package/dist/server/storage/repositories/verification-run-repository.js +125 -0
  179. package/dist/server/storage/repositories/verification-run-repository.js.map +1 -0
  180. package/dist/server/storage/sqlite/client.js +146 -0
  181. package/dist/server/storage/sqlite/client.js.map +1 -1
  182. package/dist/server/storage/sqlite/schema.sql +354 -0
  183. package/dist/server/types/domain.d.ts +286 -2
  184. package/dist/server/ws/ws-server.d.ts +2 -1
  185. package/dist/server/ws/ws-server.js +2 -1
  186. package/dist/server/ws/ws-server.js.map +1 -1
  187. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +4 -0
  188. package/node_modules/@codingns/session-sync-core/dist/index.js +4 -0
  189. package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -1
  190. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +18 -0
  191. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +659 -0
  192. package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +1 -0
  193. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +11 -0
  194. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +72 -0
  195. package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +1 -0
  196. package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +8 -0
  197. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +89 -0
  198. package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
  199. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +6 -1
  200. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +228 -7
  201. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  202. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +26 -1
  203. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +499 -3
  204. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  205. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +41 -0
  206. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +1175 -0
  207. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -0
  208. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +29 -0
  209. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +578 -0
  210. package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -0
  211. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +5 -1
  212. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +271 -4
  213. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  214. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
  215. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +147 -19
  216. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
  217. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +2 -0
  218. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +43 -5
  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/codex-runtime.d.ts +12 -0
  221. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +442 -71
  222. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  223. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +21 -0
  224. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +537 -0
  225. package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +1 -0
  226. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +38 -0
  227. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +911 -0
  228. package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +1 -0
  229. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +2 -1
  230. package/node_modules/@codingns/session-sync-core/dist/services.js +55 -8
  231. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  232. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +6 -0
  233. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +9 -0
  234. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -0
  235. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +27 -0
  236. package/node_modules/@codingns/session-sync-core/package.json +8 -0
  237. package/package.json +1 -1
  238. package/dist/public/assets/index-C5lu52cQ.css +0 -1
  239. package/dist/public/assets/index-WpdUo_Vs.js +0 -108
@@ -0,0 +1,537 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createInterface } from "node:readline";
3
+ import { ensureText, extractTextBlocks, messageIdFromRawRef, nextTimestamp, safeDate, stringifyStructuredValue } from "../providers/utils.js";
4
+ import { buildApplyPatchFromStructuredFileTool } from "../patch-builder.js";
5
+ const INTERRUPT_KILL_TIMEOUT_MS = 1_500;
6
+ export class GeminiRuntimeAdapter {
7
+ options;
8
+ providerId = "gemini";
9
+ commandPath;
10
+ baseArgs;
11
+ spawnFactory;
12
+ constructor(options) {
13
+ this.options = options;
14
+ this.commandPath = options.commandPath?.trim() || "gemini";
15
+ this.baseArgs = options.baseArgs ?? [];
16
+ this.spawnFactory = options.spawnFactory ?? spawn;
17
+ }
18
+ async startSession(request, sink) {
19
+ const pendingProviderSessionId = buildPendingGeminiSessionRef(request.sessionId);
20
+ const pendingRawStoreRef = pendingProviderSessionId;
21
+ sink.updateSessionBinding({
22
+ providerSessionId: pendingProviderSessionId,
23
+ rawStoreRef: pendingRawStoreRef
24
+ });
25
+ return this.launchRuntime(request, sink, "start", pendingProviderSessionId, pendingRawStoreRef);
26
+ }
27
+ async continueSession(request, sink) {
28
+ const providerSessionId = request.providerSessionId?.trim();
29
+ if (!providerSessionId) {
30
+ throw new Error("PROVIDER_SESSION_ID_REQUIRED");
31
+ }
32
+ const rawStoreRef = request.rawStoreRef ?? buildGeminiRawStoreRef(providerSessionId);
33
+ sink.updateSessionBinding({
34
+ providerSessionId,
35
+ rawStoreRef
36
+ });
37
+ return this.launchRuntime(request, sink, "continue", providerSessionId, rawStoreRef);
38
+ }
39
+ launchRuntime(request, sink, mode, initialProviderSessionId, initialRawStoreRef) {
40
+ const args = [
41
+ ...this.baseArgs,
42
+ ...buildGeminiRuntimeArgs(mode, initialProviderSessionId, request)
43
+ ];
44
+ const proc = this.spawnFactory(this.commandPath, args, {
45
+ cwd: request.workspacePath,
46
+ env: {
47
+ ...process.env,
48
+ GEMINI_HOME: this.options.homeDir,
49
+ NO_COLOR: "1"
50
+ },
51
+ shell: shouldSpawnViaShell(this.commandPath),
52
+ windowsHide: true,
53
+ stdio: ["pipe", "pipe", "pipe"]
54
+ });
55
+ let sequence = Math.max(0, request.sequenceBase ?? 0);
56
+ let lineNumber = 0;
57
+ let settled = false;
58
+ let interrupted = false;
59
+ let activeProviderSessionId = initialProviderSessionId;
60
+ let activeRawStoreRef = initialRawStoreRef;
61
+ let stderrBuffer = "";
62
+ let runtimeFailure = null;
63
+ let resultStatus = null;
64
+ let resultDetail = null;
65
+ let assistantMessageIndex = 0;
66
+ let userMessageIndex = 0;
67
+ let activeAssistantMessage = null;
68
+ const toolNameById = new Map();
69
+ let lineChain = Promise.resolve();
70
+ const updateBinding = (providerSessionId) => {
71
+ if (!providerSessionId.trim() || providerSessionId === activeProviderSessionId) {
72
+ return;
73
+ }
74
+ activeProviderSessionId = providerSessionId;
75
+ activeRawStoreRef = buildGeminiRawStoreRef(providerSessionId);
76
+ sink.updateSessionBinding({
77
+ providerSessionId: activeProviderSessionId,
78
+ rawStoreRef: activeRawStoreRef
79
+ });
80
+ };
81
+ const resetAssistantMessage = () => {
82
+ activeAssistantMessage = null;
83
+ };
84
+ const emitStructuredEvent = async (event) => {
85
+ await sink.emit({
86
+ ...event,
87
+ providerSessionId: activeProviderSessionId,
88
+ rawStoreRef: activeRawStoreRef
89
+ });
90
+ };
91
+ const handleMessageEvent = async (payload, rawEventRef) => {
92
+ const role = normalizeGeminiMessageRole(payload.role);
93
+ if (!role) {
94
+ return;
95
+ }
96
+ const timestamp = safeDate(payload.timestamp, nextTimestamp());
97
+ const contentChunk = extractTextBlocks(payload.content).trim();
98
+ if (!contentChunk) {
99
+ return;
100
+ }
101
+ if (role === "user") {
102
+ resetAssistantMessage();
103
+ userMessageIndex += 1;
104
+ sequence += 1;
105
+ const rawRef = buildGeminiMessageRawRef(activeProviderSessionId, role, userMessageIndex);
106
+ await emitStructuredEvent({
107
+ type: "message",
108
+ message: createGeminiRuntimeMessage({
109
+ providerSessionId: activeProviderSessionId,
110
+ role,
111
+ kind: "text",
112
+ content: contentChunk,
113
+ timestamp,
114
+ sequence,
115
+ rawRef,
116
+ toolCall: null
117
+ }),
118
+ rawEventRef
119
+ });
120
+ return;
121
+ }
122
+ if (!activeAssistantMessage) {
123
+ assistantMessageIndex += 1;
124
+ sequence += 1;
125
+ const rawRef = buildGeminiMessageRawRef(activeProviderSessionId, role, assistantMessageIndex);
126
+ activeAssistantMessage = {
127
+ rawRef,
128
+ messageId: messageIdFromRawRef(rawRef),
129
+ sequence,
130
+ timestamp,
131
+ content: ""
132
+ };
133
+ }
134
+ const isDelta = payload.delta === true;
135
+ const nextContent = isDelta
136
+ ? `${activeAssistantMessage.content}${contentChunk}`
137
+ : contentChunk;
138
+ if (nextContent === activeAssistantMessage.content) {
139
+ return;
140
+ }
141
+ activeAssistantMessage = {
142
+ ...activeAssistantMessage,
143
+ timestamp,
144
+ content: nextContent
145
+ };
146
+ await emitStructuredEvent({
147
+ type: "message",
148
+ message: {
149
+ messageId: activeAssistantMessage.messageId,
150
+ provider: "gemini",
151
+ providerSessionId: activeProviderSessionId,
152
+ role,
153
+ kind: "text",
154
+ content: activeAssistantMessage.content,
155
+ toolCall: null,
156
+ timestamp: activeAssistantMessage.timestamp,
157
+ sequence: activeAssistantMessage.sequence,
158
+ rawRef: activeAssistantMessage.rawRef
159
+ },
160
+ rawEventRef
161
+ });
162
+ };
163
+ const handleToolUseEvent = async (payload, rawEventRef) => {
164
+ resetAssistantMessage();
165
+ const toolId = readFirstNonEmptyString(payload, [
166
+ ["tool_id"],
167
+ ["toolUseId"],
168
+ ["id"]
169
+ ]) || `gemini-tool-call-${lineNumber}`;
170
+ const toolName = readFirstNonEmptyString(payload, [
171
+ ["tool_name"],
172
+ ["toolName"],
173
+ ["name"]
174
+ ]) || "tool";
175
+ const parameters = readFirstDefinedValue(payload, [
176
+ ["parameters"],
177
+ ["args"],
178
+ ["input"]
179
+ ]);
180
+ const patchText = buildGeminiRuntimeApplyPatch(parameters);
181
+ const normalizedToolName = patchText ? "apply_patch" : toolName;
182
+ toolNameById.set(toolId, normalizedToolName);
183
+ sequence += 1;
184
+ await emitStructuredEvent({
185
+ type: "message",
186
+ message: createGeminiRuntimeMessage({
187
+ providerSessionId: activeProviderSessionId,
188
+ role: patchText ? "tool" : "assistant",
189
+ kind: "tool_call",
190
+ content: patchText || stringifyStructuredValue(parameters),
191
+ timestamp: safeDate(payload.timestamp, nextTimestamp()),
192
+ sequence,
193
+ rawRef: buildGeminiToolRawRef(activeProviderSessionId, toolId, "call"),
194
+ toolCall: {
195
+ callId: toolId,
196
+ name: normalizedToolName,
197
+ input: patchText || stringifyStructuredValue(parameters),
198
+ output: null,
199
+ error: null,
200
+ status: "running"
201
+ }
202
+ }),
203
+ rawEventRef
204
+ });
205
+ };
206
+ const handleToolResultEvent = async (payload, rawEventRef) => {
207
+ resetAssistantMessage();
208
+ const toolId = readFirstNonEmptyString(payload, [
209
+ ["tool_id"],
210
+ ["toolUseId"],
211
+ ["tool_use_id"],
212
+ ["id"]
213
+ ]) || `gemini-tool-result-${lineNumber}`;
214
+ const toolName = toolNameById.get(toolId)
215
+ || readFirstNonEmptyString(payload, [
216
+ ["tool_name"],
217
+ ["toolName"],
218
+ ["name"]
219
+ ])
220
+ || "tool";
221
+ const output = extractTextBlocks(readFirstDefinedValue(payload, [
222
+ ["output"],
223
+ ["result"],
224
+ ["content"]
225
+ ])).trim();
226
+ const errorDetail = extractGeminiErrorDetail(payload.error);
227
+ const toolStatus = normalizeGeminiToolStatus(payload.status, errorDetail);
228
+ sequence += 1;
229
+ await emitStructuredEvent({
230
+ type: "message",
231
+ message: createGeminiRuntimeMessage({
232
+ providerSessionId: activeProviderSessionId,
233
+ role: "tool",
234
+ kind: "tool_result",
235
+ content: output || errorDetail || toolName,
236
+ timestamp: safeDate(payload.timestamp, nextTimestamp()),
237
+ sequence,
238
+ rawRef: buildGeminiToolRawRef(activeProviderSessionId, toolId, "result"),
239
+ toolCall: {
240
+ callId: toolId,
241
+ name: toolName,
242
+ input: "",
243
+ output: output || null,
244
+ error: errorDetail || null,
245
+ status: toolStatus
246
+ }
247
+ }),
248
+ rawEventRef
249
+ });
250
+ };
251
+ const handleLine = async (line) => {
252
+ lineNumber += 1;
253
+ const trimmed = line.trim();
254
+ if (!trimmed) {
255
+ return;
256
+ }
257
+ let payload;
258
+ try {
259
+ payload = JSON.parse(trimmed);
260
+ }
261
+ catch {
262
+ return;
263
+ }
264
+ const rawEventRef = buildGeminiRawEventRef(activeProviderSessionId, lineNumber);
265
+ const eventType = ensureText(payload.type).trim().toLowerCase();
266
+ switch (eventType) {
267
+ case "init": {
268
+ const discoveredSessionId = readFirstNonEmptyString(payload, [["session_id"], ["sessionId"]]);
269
+ if (discoveredSessionId) {
270
+ updateBinding(discoveredSessionId);
271
+ }
272
+ return;
273
+ }
274
+ case "message":
275
+ await handleMessageEvent(payload, rawEventRef);
276
+ return;
277
+ case "tool_use":
278
+ await handleToolUseEvent(payload, rawEventRef);
279
+ return;
280
+ case "tool_result":
281
+ await handleToolResultEvent(payload, rawEventRef);
282
+ return;
283
+ case "error": {
284
+ const severity = ensureText(payload.severity).trim().toLowerCase();
285
+ const message = readFirstNonEmptyString(payload, [["message"]]);
286
+ if (severity === "error" && message) {
287
+ resultStatus = "error";
288
+ resultDetail = message;
289
+ }
290
+ return;
291
+ }
292
+ case "result":
293
+ resultStatus = ensureText(payload.status).trim().toLowerCase() || "success";
294
+ resultDetail = buildGeminiResultDetail(payload);
295
+ return;
296
+ default:
297
+ return;
298
+ }
299
+ };
300
+ const completed = new Promise((resolve, reject) => {
301
+ const settle = (callback) => {
302
+ if (settled) {
303
+ return;
304
+ }
305
+ settled = true;
306
+ callback();
307
+ };
308
+ proc.stdout.setEncoding("utf8");
309
+ proc.stderr.setEncoding("utf8");
310
+ const stdoutReader = createInterface({
311
+ input: proc.stdout
312
+ });
313
+ stdoutReader.on("line", (line) => {
314
+ lineChain = lineChain.then(() => handleLine(line)).catch((error) => {
315
+ runtimeFailure = error instanceof Error ? error : new Error("GEMINI_RUNTIME_FAILED");
316
+ });
317
+ });
318
+ proc.stderr.on("data", (chunk) => {
319
+ stderrBuffer = `${stderrBuffer}${chunk.toString()}`;
320
+ });
321
+ proc.once("error", (error) => {
322
+ stdoutReader.close();
323
+ settle(() => {
324
+ reject(error);
325
+ });
326
+ });
327
+ proc.once("close", (code, signal) => {
328
+ stdoutReader.close();
329
+ void lineChain
330
+ .then(() => {
331
+ if (runtimeFailure) {
332
+ settle(() => {
333
+ reject(runtimeFailure);
334
+ });
335
+ return;
336
+ }
337
+ if (interrupted) {
338
+ settle(() => {
339
+ resolve();
340
+ });
341
+ return;
342
+ }
343
+ if (resultStatus && resultStatus !== "success") {
344
+ settle(() => {
345
+ reject(new Error(resultDetail || "GEMINI_RUNTIME_FAILED"));
346
+ });
347
+ return;
348
+ }
349
+ if (code === 0) {
350
+ settle(() => {
351
+ resolve();
352
+ });
353
+ return;
354
+ }
355
+ const detail = stderrBuffer.trim()
356
+ || resultDetail
357
+ || `Gemini exited with code=${String(code ?? "null")} signal=${String(signal ?? "null")}`;
358
+ settle(() => {
359
+ reject(new Error(detail));
360
+ });
361
+ })
362
+ .catch((error) => {
363
+ settle(() => {
364
+ reject(error instanceof Error ? error : new Error("GEMINI_RUNTIME_FAILED"));
365
+ });
366
+ });
367
+ });
368
+ });
369
+ return {
370
+ providerSessionId: activeProviderSessionId,
371
+ rawStoreRef: activeRawStoreRef,
372
+ interrupt: async () => {
373
+ interrupted = true;
374
+ if (!proc.killed) {
375
+ proc.kill("SIGINT");
376
+ }
377
+ setTimeout(() => {
378
+ if (!proc.killed) {
379
+ proc.kill("SIGTERM");
380
+ }
381
+ }, INTERRUPT_KILL_TIMEOUT_MS).unref?.();
382
+ },
383
+ isAlive: () => !proc.killed && proc.exitCode === null,
384
+ completed
385
+ };
386
+ }
387
+ }
388
+ function buildGeminiRuntimeArgs(mode, providerSessionId, request) {
389
+ const args = [
390
+ "--output-format",
391
+ "stream-json"
392
+ ];
393
+ const prompt = resolveGeminiPrompt(request.options);
394
+ const approvalMode = mapGeminiApprovalMode(request.options.permissionMode);
395
+ if (mode === "continue" && !providerSessionId.startsWith("pending://")) {
396
+ args.push("--resume", providerSessionId);
397
+ }
398
+ if (request.options.model?.trim()) {
399
+ args.push("--model", request.options.model.trim());
400
+ }
401
+ if (approvalMode) {
402
+ args.push("--approval-mode", approvalMode);
403
+ }
404
+ args.push("--prompt", prompt);
405
+ return args;
406
+ }
407
+ function resolveGeminiPrompt(options) {
408
+ const providerPrompt = options.providerPrompt?.trim();
409
+ if (providerPrompt) {
410
+ return providerPrompt;
411
+ }
412
+ return options.content;
413
+ }
414
+ function mapGeminiApprovalMode(permissionMode) {
415
+ switch (permissionMode) {
416
+ case "acceptEdits":
417
+ return "auto_edit";
418
+ case "bypassPermissions":
419
+ return "yolo";
420
+ case "default":
421
+ return "default";
422
+ default:
423
+ return null;
424
+ }
425
+ }
426
+ function normalizeGeminiMessageRole(value) {
427
+ const normalized = ensureText(value).trim().toLowerCase();
428
+ if (normalized === "user" || normalized === "assistant") {
429
+ return normalized;
430
+ }
431
+ return null;
432
+ }
433
+ function normalizeGeminiToolStatus(value, errorDetail) {
434
+ const normalized = ensureText(value).trim().toLowerCase();
435
+ if (normalized === "completed" || normalized === "success") {
436
+ return "completed";
437
+ }
438
+ if (normalized === "failed" || normalized === "error") {
439
+ return "failed";
440
+ }
441
+ return errorDetail ? "failed" : "completed";
442
+ }
443
+ function extractGeminiErrorDetail(value) {
444
+ if (typeof value === "string") {
445
+ return value.trim();
446
+ }
447
+ if (!value || typeof value !== "object") {
448
+ return "";
449
+ }
450
+ const record = value;
451
+ const message = ensureText(record.message).trim();
452
+ if (message) {
453
+ return message;
454
+ }
455
+ return stringifyStructuredValue(value).trim();
456
+ }
457
+ function buildGeminiResultDetail(payload) {
458
+ const status = ensureText(payload.status).trim().toLowerCase();
459
+ const detail = readFirstNonEmptyString(payload, [
460
+ ["message"],
461
+ ["detail"]
462
+ ]);
463
+ if (detail) {
464
+ return detail;
465
+ }
466
+ if (status && status !== "success") {
467
+ return `Gemini runtime result=${status}`;
468
+ }
469
+ return null;
470
+ }
471
+ function buildGeminiRuntimeApplyPatch(value) {
472
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
473
+ return null;
474
+ }
475
+ return buildApplyPatchFromStructuredFileTool(value);
476
+ }
477
+ function createGeminiRuntimeMessage(input) {
478
+ return {
479
+ messageId: messageIdFromRawRef(input.rawRef),
480
+ provider: "gemini",
481
+ providerSessionId: input.providerSessionId,
482
+ role: input.role,
483
+ kind: input.kind,
484
+ content: input.content,
485
+ toolCall: input.toolCall,
486
+ timestamp: input.timestamp,
487
+ sequence: input.sequence,
488
+ rawRef: input.rawRef
489
+ };
490
+ }
491
+ function buildPendingGeminiSessionRef(sessionId) {
492
+ return `pending://gemini/${sessionId}`;
493
+ }
494
+ function buildGeminiRawStoreRef(sessionId) {
495
+ return `gemini://session/${encodeURIComponent(sessionId)}`;
496
+ }
497
+ function buildGeminiRawEventRef(sessionId, lineNumber) {
498
+ return `gemini://session/${encodeURIComponent(sessionId)}/stream#line=${lineNumber}`;
499
+ }
500
+ function buildGeminiMessageRawRef(sessionId, role, index) {
501
+ return `gemini://session/${encodeURIComponent(sessionId)}/message/${role}-${index}`;
502
+ }
503
+ function buildGeminiToolRawRef(sessionId, toolId, kind) {
504
+ return `gemini://session/${encodeURIComponent(sessionId)}/tool/${encodeURIComponent(toolId)}/${kind}`;
505
+ }
506
+ function shouldSpawnViaShell(commandPath) {
507
+ return /\.(cmd|bat|ps1)$/i.test(commandPath);
508
+ }
509
+ function readPath(value, path) {
510
+ let current = value;
511
+ for (const key of path) {
512
+ if (!current || typeof current !== "object") {
513
+ return undefined;
514
+ }
515
+ current = current[key];
516
+ }
517
+ return current;
518
+ }
519
+ function readFirstDefinedValue(record, paths) {
520
+ for (const path of paths) {
521
+ const value = readPath(record, path);
522
+ if (value !== undefined) {
523
+ return value;
524
+ }
525
+ }
526
+ return undefined;
527
+ }
528
+ function readFirstNonEmptyString(record, paths) {
529
+ for (const path of paths) {
530
+ const value = readPath(record, path);
531
+ if (typeof value === "string" && value.trim()) {
532
+ return value.trim();
533
+ }
534
+ }
535
+ return null;
536
+ }
537
+ //# sourceMappingURL=gemini-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-runtime.js","sourceRoot":"","sources":["../../src/runtime/gemini-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { spawn } from "node:child_process";
2
+ import type { ProviderId } from "../types.js";
3
+ import type { ProviderRuntimeAdapter, ProviderRuntimeEventSink, ProviderRuntimeLaunchResult, ProviderRuntimeRunRequest } from "./types.js";
4
+ interface KimiRuntimeOptions {
5
+ homeDir: string;
6
+ commandPath?: string;
7
+ baseArgs?: string[];
8
+ spawnFactory?: typeof spawn;
9
+ cliSyntax?: KimiCliSyntax | "auto";
10
+ cliProbeTimeoutMs?: number;
11
+ }
12
+ type KimiCliSyntax = "modern" | "legacy";
13
+ export declare class KimiRuntimeAdapter implements ProviderRuntimeAdapter {
14
+ private readonly options;
15
+ readonly providerId: ProviderId;
16
+ private readonly commandPath;
17
+ private readonly baseArgs;
18
+ private readonly spawnFactory;
19
+ private readonly cliSyntax;
20
+ private readonly cliProbeTimeoutMs;
21
+ private cliSyntaxPromise;
22
+ constructor(options: KimiRuntimeOptions);
23
+ startSession(request: ProviderRuntimeRunRequest, sink: ProviderRuntimeEventSink): Promise<ProviderRuntimeLaunchResult>;
24
+ continueSession(request: ProviderRuntimeRunRequest, sink: ProviderRuntimeEventSink): Promise<ProviderRuntimeLaunchResult>;
25
+ private launchWithFallback;
26
+ private launchTransport;
27
+ private scheduleBindingResolution;
28
+ private resolveCliSyntax;
29
+ private resolveStartedSessionBinding;
30
+ private captureStartBindingProbe;
31
+ private findResolvedSessionIdFromWorkDir;
32
+ private findLatestSessionIdForWorkspace;
33
+ private writePrompt;
34
+ private writePromptPayload;
35
+ private writeWirePayload;
36
+ private closeCommandInput;
37
+ }
38
+ export {};