@jingyi0605/codingns 0.2.0 → 0.2.5

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 (257) hide show
  1. package/README.md +44 -0
  2. package/bin/codingns.mjs +640 -53
  3. package/dist/public/assets/{TerminalPage-BlbQuWi1.js → TerminalPage-BkjqU9NG.js} +19 -19
  4. package/dist/public/assets/index-C6U8-9jg.css +1 -0
  5. package/dist/public/assets/index-CKSumuV2.js +109 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/env.d.ts +1 -0
  8. package/dist/server/config/env.js +3 -0
  9. package/dist/server/config/env.js.map +1 -1
  10. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +89 -0
  11. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +138 -0
  12. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -0
  13. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +115 -0
  14. package/dist/server/modules/assistant-capability/assistant-capability-service.js +241 -0
  15. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -0
  16. package/dist/server/modules/butler/butler-control-session-service.js +69 -30
  17. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  18. package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +9 -0
  19. package/dist/server/modules/butler/butler-follow-up-scheduler.js +47 -11
  20. package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -1
  21. package/dist/server/modules/butler/butler-follow-up-service.d.ts +7 -1
  22. package/dist/server/modules/butler/butler-follow-up-service.js +10 -0
  23. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  24. package/dist/server/modules/butler/butler-session-service.d.ts +2 -1
  25. package/dist/server/modules/butler/butler-session-service.js +10 -1
  26. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  27. package/dist/server/modules/butler/butler-session-summary-service.d.ts +8 -1
  28. package/dist/server/modules/butler/butler-session-summary-service.js +34 -7
  29. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  30. package/dist/server/modules/butler/context-aggregator.js +44 -13
  31. package/dist/server/modules/butler/context-aggregator.js.map +1 -1
  32. package/dist/server/modules/butler/patrol-scheduler.d.ts +9 -0
  33. package/dist/server/modules/butler/patrol-scheduler.js +63 -9
  34. package/dist/server/modules/butler/patrol-scheduler.js.map +1 -1
  35. package/dist/server/modules/butler/session-summary-scheduler.d.ts +9 -0
  36. package/dist/server/modules/butler/session-summary-scheduler.js +47 -11
  37. package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -1
  38. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.d.ts +38 -0
  39. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js +99 -0
  40. package/dist/server/modules/debug-target/debug-runtime-reconciliation-scheduler.js.map +1 -0
  41. package/dist/server/modules/debug-target/debug-target-controller.d.ts +70 -0
  42. package/dist/server/modules/debug-target/debug-target-controller.js +113 -0
  43. package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -0
  44. package/dist/server/modules/debug-target/debug-target-service.d.ts +102 -0
  45. package/dist/server/modules/debug-target/debug-target-service.js +1484 -0
  46. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -0
  47. package/dist/server/modules/debug-target/framework-compatibility-matrix.d.ts +4 -0
  48. package/dist/server/modules/debug-target/framework-compatibility-matrix.js +45 -0
  49. package/dist/server/modules/debug-target/framework-compatibility-matrix.js.map +1 -0
  50. package/dist/server/modules/debug-target/launch-adapter-registry.d.ts +25 -0
  51. package/dist/server/modules/debug-target/launch-adapter-registry.js +445 -0
  52. package/dist/server/modules/debug-target/launch-adapter-registry.js.map +1 -0
  53. package/dist/server/modules/file/file-content-service.d.ts +2 -1
  54. package/dist/server/modules/file/file-content-service.js +53 -0
  55. package/dist/server/modules/file/file-content-service.js.map +1 -1
  56. package/dist/server/modules/git/commit-orchestrator.d.ts +4 -1
  57. package/dist/server/modules/git/commit-orchestrator.js +18 -1
  58. package/dist/server/modules/git/commit-orchestrator.js.map +1 -1
  59. package/dist/server/modules/git/git-auth.d.ts +25 -0
  60. package/dist/server/modules/git/git-auth.js +88 -0
  61. package/dist/server/modules/git/git-auth.js.map +1 -0
  62. package/dist/server/modules/git/git-controller.d.ts +6 -0
  63. package/dist/server/modules/git/git-controller.js +5 -1
  64. package/dist/server/modules/git/git-controller.js.map +1 -1
  65. package/dist/server/modules/git/git-read-service.d.ts +2 -1
  66. package/dist/server/modules/git/git-read-service.js +19 -2
  67. package/dist/server/modules/git/git-read-service.js.map +1 -1
  68. package/dist/server/modules/git/git-remote-credential-service.d.ts +9 -0
  69. package/dist/server/modules/git/git-remote-credential-service.js +76 -0
  70. package/dist/server/modules/git/git-remote-credential-service.js.map +1 -0
  71. package/dist/server/modules/git/git-write-service.d.ts +5 -2
  72. package/dist/server/modules/git/git-write-service.js +33 -17
  73. package/dist/server/modules/git/git-write-service.js.map +1 -1
  74. package/dist/server/modules/git/types.d.ts +3 -0
  75. package/dist/server/modules/git/workspace-repo-guard.js +3 -2
  76. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  77. package/dist/server/modules/provider/codex-model-options.d.ts +3 -1
  78. package/dist/server/modules/provider/codex-model-options.js +4 -1
  79. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  80. package/dist/server/modules/provider/opencode-model-options.d.ts +3 -1
  81. package/dist/server/modules/provider/opencode-model-options.js +5 -1
  82. package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
  83. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +24 -0
  84. package/dist/server/modules/provider/provider-discovery-helper-client.js +14 -0
  85. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  86. package/dist/server/modules/provider/provider-discovery-helper-process.js +54 -0
  87. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  88. package/dist/server/modules/sessions/session-controller.d.ts +5 -0
  89. package/dist/server/modules/sessions/session-controller.js +16 -0
  90. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  91. package/dist/server/modules/sessions/session-history-service.d.ts +19 -5
  92. package/dist/server/modules/sessions/session-history-service.js +322 -39
  93. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  94. package/dist/server/modules/tasks/event-loop-monitor.d.ts +21 -0
  95. package/dist/server/modules/tasks/event-loop-monitor.js +64 -0
  96. package/dist/server/modules/tasks/event-loop-monitor.js.map +1 -0
  97. package/dist/server/modules/tasks/observability-controller.d.ts +30 -0
  98. package/dist/server/modules/tasks/observability-controller.js +44 -0
  99. package/dist/server/modules/tasks/observability-controller.js.map +1 -0
  100. package/dist/server/modules/tasks/observability-service.d.ts +32 -0
  101. package/dist/server/modules/tasks/observability-service.js +104 -0
  102. package/dist/server/modules/tasks/observability-service.js.map +1 -0
  103. package/dist/server/modules/tasks/scheduler-metrics.d.ts +41 -0
  104. package/dist/server/modules/tasks/scheduler-metrics.js +92 -0
  105. package/dist/server/modules/tasks/scheduler-metrics.js.map +1 -0
  106. package/dist/server/modules/tasks/task-activity-log.d.ts +39 -0
  107. package/dist/server/modules/tasks/task-activity-log.js +43 -0
  108. package/dist/server/modules/tasks/task-activity-log.js.map +1 -0
  109. package/dist/server/modules/tasks/task-helper-client.d.ts +11 -0
  110. package/dist/server/modules/tasks/task-helper-client.js +132 -0
  111. package/dist/server/modules/tasks/task-helper-client.js.map +1 -0
  112. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +16 -0
  113. package/dist/server/modules/tasks/task-helper-process-handlers.js +14 -0
  114. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -0
  115. package/dist/server/modules/tasks/task-helper-process.d.ts +1 -0
  116. package/dist/server/modules/tasks/task-helper-process.js +49 -0
  117. package/dist/server/modules/tasks/task-helper-process.js.map +1 -0
  118. package/dist/server/modules/tasks/task-lane-executors.d.ts +2 -0
  119. package/dist/server/modules/tasks/task-lane-executors.js +15 -0
  120. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -0
  121. package/dist/server/modules/tasks/task-manager.d.ts +15 -0
  122. package/dist/server/modules/tasks/task-manager.js +36 -0
  123. package/dist/server/modules/tasks/task-manager.js.map +1 -0
  124. package/dist/server/modules/tasks/task-metrics.d.ts +9 -0
  125. package/dist/server/modules/tasks/task-metrics.js +81 -0
  126. package/dist/server/modules/tasks/task-metrics.js.map +1 -0
  127. package/dist/server/modules/tasks/task-registry.d.ts +7 -0
  128. package/dist/server/modules/tasks/task-registry.js +21 -0
  129. package/dist/server/modules/tasks/task-registry.js.map +1 -0
  130. package/dist/server/modules/tasks/task-scheduler.d.ts +31 -0
  131. package/dist/server/modules/tasks/task-scheduler.js +473 -0
  132. package/dist/server/modules/tasks/task-scheduler.js.map +1 -0
  133. package/dist/server/modules/tasks/task-types.d.ts +106 -0
  134. package/dist/server/modules/tasks/task-types.js +23 -0
  135. package/dist/server/modules/tasks/task-types.js.map +1 -0
  136. package/dist/server/modules/terminal/command-template-service.d.ts +4 -0
  137. package/dist/server/modules/terminal/command-template-service.js +5 -3
  138. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  139. package/dist/server/modules/terminal/runtime/terminal-log-spooler.d.ts +7 -3
  140. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js +95 -15
  141. package/dist/server/modules/terminal/runtime/terminal-log-spooler.js.map +1 -1
  142. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.d.ts +21 -0
  143. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +144 -0
  144. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -0
  145. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.d.ts +1 -0
  146. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +187 -0
  147. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -0
  148. package/dist/server/modules/terminal/terminal-service.d.ts +12 -0
  149. package/dist/server/modules/terminal/terminal-service.js +34 -17
  150. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  151. package/dist/server/modules/workbench/workbench-service.d.ts +23 -2
  152. package/dist/server/modules/workbench/workbench-service.js +126 -15
  153. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  154. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +5 -1
  155. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +88 -19
  156. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  157. package/dist/server/modules/workspace/workspace-code-composition.d.ts +2 -0
  158. package/dist/server/modules/workspace/workspace-code-composition.js +154 -0
  159. package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -0
  160. package/dist/server/modules/workspace/workspace-controller.d.ts +14 -0
  161. package/dist/server/modules/workspace/workspace-controller.js +19 -0
  162. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  163. package/dist/server/modules/workspace/workspace-service.d.ts +21 -14
  164. package/dist/server/modules/workspace/workspace-service.js +183 -234
  165. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  166. package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +35 -0
  167. package/dist/server/modules/worktree/worktree-cleanup-service.js +210 -0
  168. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -0
  169. package/dist/server/modules/worktree/worktree-controller.d.ts +44 -0
  170. package/dist/server/modules/worktree/worktree-controller.js +40 -0
  171. package/dist/server/modules/worktree/worktree-controller.js.map +1 -0
  172. package/dist/server/modules/worktree/worktree-manager.d.ts +34 -0
  173. package/dist/server/modules/worktree/worktree-manager.js +292 -0
  174. package/dist/server/modules/worktree/worktree-manager.js.map +1 -0
  175. package/dist/server/modules/worktree/worktree-merge-service.d.ts +52 -0
  176. package/dist/server/modules/worktree/worktree-merge-service.js +293 -0
  177. package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -0
  178. package/dist/server/modules/worktree/worktree-sync-service.d.ts +23 -0
  179. package/dist/server/modules/worktree/worktree-sync-service.js +166 -0
  180. package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -0
  181. package/dist/server/routes/assistant.d.ts +3 -0
  182. package/dist/server/routes/assistant.js +15 -0
  183. package/dist/server/routes/assistant.js.map +1 -0
  184. package/dist/server/routes/debug-targets.d.ts +3 -0
  185. package/dist/server/routes/debug-targets.js +15 -0
  186. package/dist/server/routes/debug-targets.js.map +1 -0
  187. package/dist/server/routes/git.js +1 -0
  188. package/dist/server/routes/git.js.map +1 -1
  189. package/dist/server/routes/observability.d.ts +3 -0
  190. package/dist/server/routes/observability.js +7 -0
  191. package/dist/server/routes/observability.js.map +1 -0
  192. package/dist/server/routes/workspaces.js +2 -0
  193. package/dist/server/routes/workspaces.js.map +1 -1
  194. package/dist/server/routes/worktrees.d.ts +3 -0
  195. package/dist/server/routes/worktrees.js +8 -0
  196. package/dist/server/routes/worktrees.js.map +1 -0
  197. package/dist/server/server/create-server.d.ts +34 -0
  198. package/dist/server/server/create-server.js +100 -10
  199. package/dist/server/server/create-server.js.map +1 -1
  200. package/dist/server/shared/utils/secret-box.d.ts +2 -0
  201. package/dist/server/shared/utils/secret-box.js +29 -0
  202. package/dist/server/shared/utils/secret-box.js.map +1 -0
  203. package/dist/server/shared/utils/terminal-debug-log.js +5 -3
  204. package/dist/server/shared/utils/terminal-debug-log.js.map +1 -1
  205. package/dist/server/storage/repositories/ai-fallback-edit-repository.d.ts +11 -0
  206. package/dist/server/storage/repositories/ai-fallback-edit-repository.js +118 -0
  207. package/dist/server/storage/repositories/ai-fallback-edit-repository.js.map +1 -0
  208. package/dist/server/storage/repositories/debug-runtime-session-repository.d.ts +11 -0
  209. package/dist/server/storage/repositories/debug-runtime-session-repository.js +100 -0
  210. package/dist/server/storage/repositories/debug-runtime-session-repository.js.map +1 -0
  211. package/dist/server/storage/repositories/debug-service-repository.d.ts +9 -0
  212. package/dist/server/storage/repositories/debug-service-repository.js +99 -0
  213. package/dist/server/storage/repositories/debug-service-repository.js.map +1 -0
  214. package/dist/server/storage/repositories/debug-target-repository.d.ts +11 -0
  215. package/dist/server/storage/repositories/debug-target-repository.js +100 -0
  216. package/dist/server/storage/repositories/debug-target-repository.js.map +1 -0
  217. package/dist/server/storage/repositories/framework-analysis-result-repository.d.ts +9 -0
  218. package/dist/server/storage/repositories/framework-analysis-result-repository.js +98 -0
  219. package/dist/server/storage/repositories/framework-analysis-result-repository.js.map +1 -0
  220. package/dist/server/storage/repositories/git-remote-credential-repository.d.ts +9 -0
  221. package/dist/server/storage/repositories/git-remote-credential-repository.js +51 -0
  222. package/dist/server/storage/repositories/git-remote-credential-repository.js.map +1 -0
  223. package/dist/server/storage/repositories/port-lease-repository.d.ts +12 -0
  224. package/dist/server/storage/repositories/port-lease-repository.js +124 -0
  225. package/dist/server/storage/repositories/port-lease-repository.js.map +1 -0
  226. package/dist/server/storage/repositories/runtime-binding-repository.d.ts +10 -0
  227. package/dist/server/storage/repositories/runtime-binding-repository.js +89 -0
  228. package/dist/server/storage/repositories/runtime-binding-repository.js.map +1 -0
  229. package/dist/server/storage/repositories/terminal-command-template-repository.js +77 -4
  230. package/dist/server/storage/repositories/terminal-command-template-repository.js.map +1 -1
  231. package/dist/server/storage/repositories/terminal-instance-repository.js +89 -7
  232. package/dist/server/storage/repositories/terminal-instance-repository.js.map +1 -1
  233. package/dist/server/storage/repositories/workspace-navigation-state-repository.d.ts +9 -0
  234. package/dist/server/storage/repositories/workspace-navigation-state-repository.js +49 -0
  235. package/dist/server/storage/repositories/workspace-navigation-state-repository.js.map +1 -0
  236. package/dist/server/storage/repositories/workspace-repository.d.ts +7 -1
  237. package/dist/server/storage/repositories/workspace-repository.js +32 -8
  238. package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
  239. package/dist/server/storage/repositories/workspace-worktree-repository.d.ts +13 -0
  240. package/dist/server/storage/repositories/workspace-worktree-repository.js +158 -0
  241. package/dist/server/storage/repositories/workspace-worktree-repository.js.map +1 -0
  242. package/dist/server/storage/sqlite/client.js +301 -0
  243. package/dist/server/storage/sqlite/client.js.map +1 -1
  244. package/dist/server/storage/sqlite/schema.sql +238 -0
  245. package/dist/server/types/domain.d.ts +231 -0
  246. package/dist/server/ws/workbench-ws-hub.js +33 -9
  247. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  248. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +18 -6
  249. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  250. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +14 -2
  251. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  252. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +25 -1
  253. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  254. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +6 -0
  255. package/package.json +1 -1
  256. package/dist/public/assets/index-1VIm8lVL.css +0 -1
  257. package/dist/public/assets/index-Dti93O2S.js +0 -109
@@ -1 +1 @@
1
- {"version":3,"file":"command-template-service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/command-template-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-template-service.js","sourceRoot":"","sources":["../../../../src/modules/terminal/command-template-service.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { TerminalOutputChunk } from "../../../types/domain.js";
2
2
  import type { TerminalLogFileRepository } from "../../../storage/repositories/terminal-log-file-repository.js";
3
3
  import type { TerminalLogSegmentRepository } from "../../../storage/repositories/terminal-log-segment-repository.js";
4
4
  interface TerminalLogSpoolerOptions {
5
+ databasePath?: string;
5
6
  logRootDir: string;
6
7
  fileRepository: TerminalLogFileRepository;
7
8
  segmentRepository: TerminalLogSegmentRepository;
@@ -14,13 +15,16 @@ export declare class TerminalLogSpooler {
14
15
  private readonly pendingByTerminalId;
15
16
  private readonly flushIntervalMs;
16
17
  private readonly maxBatchBytes;
18
+ private readonly writerClient;
17
19
  constructor(options: TerminalLogSpoolerOptions);
18
20
  appendChunks(terminalId: string, chunks: TerminalOutputChunk[]): void;
19
- flushTerminal(terminalId: string): void;
20
- flushAll(): void;
21
+ flushTerminal(terminalId: string): Promise<void>;
22
+ flushAll(): Promise<void>;
21
23
  clearTerminal(terminalId: string): void;
22
- deleteTerminalLogs(terminalId: string): void;
24
+ deleteTerminalLogs(terminalId: string): Promise<void>;
25
+ dispose(): Promise<void>;
23
26
  private persistChunks;
27
+ private persistChunksInline;
24
28
  private getOrCreateBatch;
25
29
  private scheduleFlush;
26
30
  private clearBatchTimer;
@@ -1,6 +1,8 @@
1
1
  import { createId } from "../../../shared/utils/id.js";
2
+ import { logTerminalDebug, terminalDebugNowMs } from "../../../shared/utils/terminal-debug-log.js";
2
3
  import { nowIso } from "../../../shared/utils/time.js";
3
4
  import { TerminalLogFileStore } from "./terminal-log-file-store.js";
5
+ import { TerminalLogWriterClient } from "./terminal-log-writer-client.js";
4
6
  const DEFAULT_FLUSH_INTERVAL_MS = 2_000;
5
7
  const DEFAULT_MAX_BATCH_BYTES = 256 * 1024;
6
8
  export class TerminalLogSpooler {
@@ -9,11 +11,16 @@ export class TerminalLogSpooler {
9
11
  pendingByTerminalId = new Map();
10
12
  flushIntervalMs;
11
13
  maxBatchBytes;
14
+ writerClient;
12
15
  constructor(options) {
13
16
  this.options = options;
14
17
  this.fileStore = new TerminalLogFileStore(options.logRootDir);
15
18
  this.flushIntervalMs = options.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS;
16
19
  this.maxBatchBytes = options.maxBatchBytes ?? DEFAULT_MAX_BATCH_BYTES;
20
+ this.writerClient =
21
+ options.databasePath && options.databasePath !== ":memory:"
22
+ ? new TerminalLogWriterClient(options.databasePath, options.logRootDir)
23
+ : null;
17
24
  }
18
25
  appendChunks(terminalId, chunks) {
19
26
  if (chunks.length === 0) {
@@ -29,9 +36,19 @@ export class TerminalLogSpooler {
29
36
  }
30
37
  this.scheduleFlush(terminalId, batch.totalBytes >= this.maxBatchBytes ? 0 : this.flushIntervalMs);
31
38
  }
32
- flushTerminal(terminalId) {
39
+ async flushTerminal(terminalId) {
33
40
  const batch = this.pendingByTerminalId.get(terminalId);
34
- if (!batch || batch.flushing || batch.chunks.length === 0) {
41
+ if (!batch) {
42
+ return;
43
+ }
44
+ if (batch.flushing) {
45
+ await batch.flushPromise;
46
+ if (batch.chunks.length > 0) {
47
+ await this.flushTerminal(terminalId);
48
+ }
49
+ return;
50
+ }
51
+ if (batch.chunks.length === 0) {
35
52
  return;
36
53
  }
37
54
  this.clearBatchTimer(batch);
@@ -40,31 +57,61 @@ export class TerminalLogSpooler {
40
57
  const flushingBytes = batch.totalBytes;
41
58
  batch.chunks = [];
42
59
  batch.totalBytes = 0;
43
- try {
44
- this.persistChunks(terminalId, flushingChunks);
45
- }
46
- catch (error) {
60
+ const flushStartedAtMs = terminalDebugNowMs();
61
+ logTerminalDebug("terminal.log_flush.started", {
62
+ terminalId,
63
+ chunkCount: flushingChunks.length,
64
+ totalBytes: flushingBytes,
65
+ mode: this.writerClient ? "worker" : "inline"
66
+ });
67
+ const flushPromise = this.persistChunks(terminalId, flushingChunks)
68
+ .then(() => {
69
+ logTerminalDebug("terminal.log_flush.completed", {
70
+ terminalId,
71
+ chunkCount: flushingChunks.length,
72
+ totalBytes: flushingBytes,
73
+ durationMs: terminalDebugNowMs() - flushStartedAtMs,
74
+ mode: this.writerClient ? "worker" : "inline"
75
+ });
76
+ })
77
+ .catch((error) => {
47
78
  batch.chunks = [...flushingChunks, ...batch.chunks];
48
79
  batch.totalBytes += flushingBytes;
49
80
  console.warn("[terminal-log-flush-failed]", {
50
81
  terminalId,
51
82
  error: error instanceof Error ? error.message : String(error)
52
83
  });
84
+ logTerminalDebug("terminal.log_flush.failed", {
85
+ terminalId,
86
+ chunkCount: flushingChunks.length,
87
+ totalBytes: flushingBytes,
88
+ durationMs: terminalDebugNowMs() - flushStartedAtMs,
89
+ error: error instanceof Error ? error.message : String(error),
90
+ mode: this.writerClient ? "worker" : "inline"
91
+ });
53
92
  this.scheduleFlush(terminalId, this.flushIntervalMs);
54
- }
55
- finally {
93
+ })
94
+ .finally(() => {
56
95
  batch.flushing = false;
96
+ batch.flushPromise = null;
57
97
  if (batch.chunks.length > 0) {
58
98
  this.scheduleFlush(terminalId, batch.totalBytes >= this.maxBatchBytes ? 0 : this.flushIntervalMs);
59
99
  }
60
100
  else if (!batch.timer) {
61
101
  this.pendingByTerminalId.delete(terminalId);
62
102
  }
63
- }
103
+ });
104
+ batch.flushPromise = flushPromise;
105
+ await flushPromise;
64
106
  }
65
- flushAll() {
107
+ async flushAll() {
66
108
  for (const terminalId of [...this.pendingByTerminalId.keys()]) {
67
- this.flushTerminal(terminalId);
109
+ try {
110
+ await this.flushTerminal(terminalId);
111
+ }
112
+ catch {
113
+ // flush 失败时保留已有警告,这里继续尝试刷其他终端。
114
+ }
68
115
  }
69
116
  }
70
117
  clearTerminal(terminalId) {
@@ -75,17 +122,49 @@ export class TerminalLogSpooler {
75
122
  this.clearBatchTimer(batch);
76
123
  this.pendingByTerminalId.delete(terminalId);
77
124
  }
78
- deleteTerminalLogs(terminalId) {
125
+ async deleteTerminalLogs(terminalId) {
126
+ const batch = this.pendingByTerminalId.get(terminalId);
127
+ const flushPromise = batch?.flushPromise ?? null;
79
128
  this.clearTerminal(terminalId);
129
+ if (flushPromise) {
130
+ try {
131
+ await flushPromise;
132
+ }
133
+ catch {
134
+ // flush 失败时继续删除,避免残留损坏的日志索引。
135
+ }
136
+ }
137
+ if (this.writerClient) {
138
+ await this.writerClient.deleteTerminalLogs(terminalId);
139
+ return;
140
+ }
141
+ this.options.segmentRepository.deleteByTerminalId(terminalId);
142
+ this.options.fileRepository.deleteByTerminalId(terminalId);
80
143
  this.fileStore.deleteTerminalLogs(terminalId);
81
144
  }
82
- persistChunks(terminalId, chunks) {
145
+ async dispose() {
146
+ await this.flushAll();
147
+ await this.writerClient?.close();
148
+ }
149
+ async persistChunks(terminalId, chunks) {
83
150
  const startSeq = parseCursor(chunks[0]?.cursor);
84
151
  const endSeq = parseCursor(chunks.at(-1)?.cursor);
85
152
  if (startSeq === null || endSeq === null) {
86
153
  throw new Error("终端日志分段缺少有效 cursor");
87
154
  }
88
155
  const content = chunks.map((chunk) => chunk.content).join("");
156
+ if (this.writerClient) {
157
+ await this.writerClient.persistChunkBatch({
158
+ terminalId,
159
+ startSeq,
160
+ endSeq,
161
+ content
162
+ });
163
+ return;
164
+ }
165
+ this.persistChunksInline(terminalId, startSeq, endSeq, content);
166
+ }
167
+ persistChunksInline(terminalId, startSeq, endSeq, content) {
89
168
  const timestamp = nowIso();
90
169
  let activeFile = this.options.fileRepository.findActiveByTerminalId(terminalId);
91
170
  if (!activeFile) {
@@ -128,7 +207,8 @@ export class TerminalLogSpooler {
128
207
  chunks: [],
129
208
  totalBytes: 0,
130
209
  timer: null,
131
- flushing: false
210
+ flushing: false,
211
+ flushPromise: null
132
212
  };
133
213
  this.pendingByTerminalId.set(terminalId, batch);
134
214
  }
@@ -142,7 +222,7 @@ export class TerminalLogSpooler {
142
222
  this.clearBatchTimer(batch);
143
223
  batch.timer = setTimeout(() => {
144
224
  batch.timer = null;
145
- this.flushTerminal(terminalId);
225
+ void this.flushTerminal(terminalId);
146
226
  }, Math.max(0, delayMs));
147
227
  batch.timer.unref?.();
148
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-log-spooler.js","sourceRoot":"","sources":["../../../../../src/modules/terminal/runtime/terminal-log-spooler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-log-spooler.js","sourceRoot":"","sources":["../../../../../src/modules/terminal/runtime/terminal-log-spooler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface PersistTerminalLogBatchInput {
2
+ terminalId: string;
3
+ startSeq: number;
4
+ endSeq: number;
5
+ content: string;
6
+ }
7
+ export declare class TerminalLogWriterClient {
8
+ private readonly child;
9
+ private readonly stdoutReader;
10
+ private readonly pendingRequests;
11
+ private nextRequestId;
12
+ private closed;
13
+ constructor(databasePath: string, logRootDir: string);
14
+ persistChunkBatch(input: PersistTerminalLogBatchInput): Promise<void>;
15
+ deleteTerminalLogs(terminalId: string): Promise<void>;
16
+ close(): Promise<void>;
17
+ private sendRequest;
18
+ private handleResponseLine;
19
+ private rejectAll;
20
+ }
21
+ export {};
@@ -0,0 +1,144 @@
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 TerminalLogWriterClient {
6
+ child;
7
+ stdoutReader;
8
+ pendingRequests = new Map();
9
+ nextRequestId = 1;
10
+ closed = false;
11
+ constructor(databasePath, logRootDir) {
12
+ const launch = resolveWriterLaunch(databasePath, logRootDir);
13
+ this.child = spawn(launch.command, launch.args, {
14
+ cwd: launch.cwd,
15
+ env: process.env,
16
+ stdio: ["pipe", "pipe", "pipe"]
17
+ });
18
+ this.stdoutReader = readline.createInterface({
19
+ input: this.child.stdout
20
+ });
21
+ this.stdoutReader.on("line", (line) => {
22
+ this.handleResponseLine(line);
23
+ });
24
+ this.child.stderr.on("data", (chunk) => {
25
+ const content = String(chunk).trim();
26
+ if (content) {
27
+ console.warn(`[terminal-log-writer] ${content}`);
28
+ }
29
+ });
30
+ this.child.on("error", (error) => {
31
+ this.rejectAll(error);
32
+ });
33
+ this.child.on("exit", (code, signal) => {
34
+ this.closed = true;
35
+ this.rejectAll(new Error(`terminal log writer 已退出:code=${code ?? "null"} signal=${signal ?? "null"}`));
36
+ });
37
+ }
38
+ async persistChunkBatch(input) {
39
+ await this.sendRequest({
40
+ type: "persist",
41
+ ...input
42
+ });
43
+ }
44
+ async deleteTerminalLogs(terminalId) {
45
+ await this.sendRequest({
46
+ type: "delete",
47
+ terminalId
48
+ });
49
+ }
50
+ async close() {
51
+ if (this.closed) {
52
+ return;
53
+ }
54
+ try {
55
+ await this.sendRequest({
56
+ type: "shutdown"
57
+ });
58
+ }
59
+ finally {
60
+ this.closed = true;
61
+ this.stdoutReader.close();
62
+ this.child.kill();
63
+ }
64
+ }
65
+ async sendRequest(input) {
66
+ if (this.closed) {
67
+ throw new Error("terminal log writer 已关闭");
68
+ }
69
+ const id = String(this.nextRequestId++);
70
+ const payload = {
71
+ ...input,
72
+ id
73
+ };
74
+ await new Promise((resolve, reject) => {
75
+ this.pendingRequests.set(id, {
76
+ resolve,
77
+ reject
78
+ });
79
+ this.child.stdin.write(`${JSON.stringify(payload)}\n`, (error) => {
80
+ if (!error) {
81
+ return;
82
+ }
83
+ this.pendingRequests.delete(id);
84
+ reject(error);
85
+ });
86
+ });
87
+ }
88
+ handleResponseLine(line) {
89
+ const trimmed = line.trim();
90
+ if (!trimmed.startsWith("{")) {
91
+ return;
92
+ }
93
+ let payload;
94
+ try {
95
+ payload = JSON.parse(trimmed);
96
+ }
97
+ catch {
98
+ return;
99
+ }
100
+ const pending = this.pendingRequests.get(payload.id);
101
+ if (!pending) {
102
+ return;
103
+ }
104
+ this.pendingRequests.delete(payload.id);
105
+ if (payload.ok) {
106
+ pending.resolve();
107
+ return;
108
+ }
109
+ pending.reject(new Error(payload.error));
110
+ }
111
+ rejectAll(error) {
112
+ for (const pending of this.pendingRequests.values()) {
113
+ pending.reject(error);
114
+ }
115
+ this.pendingRequests.clear();
116
+ }
117
+ }
118
+ function resolveWriterLaunch(databasePath, logRootDir) {
119
+ const currentFilePath = fileURLToPath(import.meta.url);
120
+ const currentDir = path.dirname(currentFilePath);
121
+ const isSourceFile = currentFilePath.endsWith(".ts");
122
+ const scriptPath = path.join(currentDir, `terminal-log-writer-process${isSourceFile ? ".ts" : ".js"}`);
123
+ const hostAppRoot = resolveHostAppRoot(currentFilePath);
124
+ const baseArgs = isSourceFile ? ["--import", "tsx", scriptPath] : [scriptPath];
125
+ return {
126
+ command: process.execPath,
127
+ args: [
128
+ ...baseArgs,
129
+ "--database-path",
130
+ databasePath,
131
+ "--log-root-dir",
132
+ logRootDir
133
+ ],
134
+ cwd: hostAppRoot
135
+ };
136
+ }
137
+ function resolveHostAppRoot(currentFilePath) {
138
+ const srcRootCandidate = path.resolve(path.dirname(currentFilePath), "..", "..", "..");
139
+ const withoutSrc = path.basename(srcRootCandidate) === "src"
140
+ ? path.dirname(srcRootCandidate)
141
+ : srcRootCandidate;
142
+ return path.basename(withoutSrc) === ".build" ? path.dirname(withoutSrc) : withoutSrc;
143
+ }
144
+ //# sourceMappingURL=terminal-log-writer-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-log-writer-client.js","sourceRoot":"","sources":["../../../../../src/modules/terminal/runtime/terminal-log-writer-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { appendFileSync, mkdirSync, rmSync } from "node:fs";
3
+ import path from "node:path";
4
+ import readline from "node:readline";
5
+ import Database from "better-sqlite3";
6
+ import { parseCliArgs, readRequiredCliArg } from "./conpty-runtime-shared.js";
7
+ const cliArgs = parseCliArgs(process.argv.slice(2));
8
+ const databasePath = readRequiredCliArg(cliArgs, "database-path");
9
+ const logRootDir = path.resolve(readRequiredCliArg(cliArgs, "log-root-dir"));
10
+ const db = new Database(databasePath);
11
+ const ensuredDirectories = new Set();
12
+ const findActiveFileStatement = db.prepare(`SELECT
13
+ id,
14
+ relative_path,
15
+ status,
16
+ size_bytes
17
+ FROM terminal_log_files
18
+ WHERE terminal_id = ? AND status = 'active'
19
+ ORDER BY updated_at DESC, created_at DESC
20
+ LIMIT 1`);
21
+ const createFileStatement = db.prepare(`INSERT INTO terminal_log_files (
22
+ id,
23
+ terminal_id,
24
+ relative_path,
25
+ status,
26
+ start_seq,
27
+ end_seq,
28
+ size_bytes,
29
+ created_at,
30
+ updated_at
31
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);
32
+ const createSegmentStatement = db.prepare(`INSERT INTO terminal_log_segments (
33
+ id,
34
+ terminal_id,
35
+ file_id,
36
+ start_seq,
37
+ end_seq,
38
+ start_offset,
39
+ end_offset,
40
+ byte_length,
41
+ created_at
42
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);
43
+ const updateFileStatement = db.prepare(`UPDATE terminal_log_files
44
+ SET status = ?,
45
+ end_seq = ?,
46
+ size_bytes = ?,
47
+ updated_at = ?
48
+ WHERE id = ?`);
49
+ const deleteSegmentsStatement = db.prepare(`DELETE FROM terminal_log_segments
50
+ WHERE terminal_id = ?`);
51
+ const deleteFilesStatement = db.prepare(`DELETE FROM terminal_log_files
52
+ WHERE terminal_id = ?`);
53
+ const persistBatchTransaction = db.transaction((input) => {
54
+ const timestamp = new Date().toISOString();
55
+ let activeFile = findActiveFileStatement.get(input.terminalId);
56
+ if (!activeFile) {
57
+ activeFile = {
58
+ id: randomUUID(),
59
+ relative_path: buildActiveRelativePath(input.terminalId),
60
+ status: "active",
61
+ size_bytes: 0
62
+ };
63
+ createFileStatement.run(activeFile.id, input.terminalId, activeFile.relative_path, activeFile.status, input.startSeq, null, 0, timestamp, timestamp);
64
+ }
65
+ const appendResult = appendLogFile(activeFile.relative_path, input.content, activeFile.size_bytes);
66
+ createSegmentStatement.run(randomUUID(), input.terminalId, activeFile.id, input.startSeq, input.endSeq, appendResult.startOffset, appendResult.endOffset, appendResult.byteLength, timestamp);
67
+ updateFileStatement.run(activeFile.status, input.endSeq, appendResult.endOffset, timestamp, activeFile.id);
68
+ });
69
+ const deleteTerminalLogsTransaction = db.transaction((terminalId) => {
70
+ deleteSegmentsStatement.run(terminalId);
71
+ deleteFilesStatement.run(terminalId);
72
+ });
73
+ const stdinReader = readline.createInterface({
74
+ input: process.stdin,
75
+ crlfDelay: Infinity
76
+ });
77
+ let queue = Promise.resolve();
78
+ stdinReader.on("line", (line) => {
79
+ queue = queue.then(async () => {
80
+ await handleLine(line);
81
+ }).catch((error) => {
82
+ console.error(error instanceof Error ? error.message : String(error));
83
+ });
84
+ });
85
+ process.on("SIGINT", () => {
86
+ shutdown();
87
+ });
88
+ process.on("SIGTERM", () => {
89
+ shutdown();
90
+ });
91
+ async function handleLine(line) {
92
+ let payload;
93
+ try {
94
+ payload = JSON.parse(line);
95
+ }
96
+ catch {
97
+ return;
98
+ }
99
+ try {
100
+ switch (payload.type) {
101
+ case "persist":
102
+ persistBatchTransaction(payload);
103
+ await writeResult({
104
+ type: "result",
105
+ id: payload.id,
106
+ ok: true
107
+ });
108
+ return;
109
+ case "delete":
110
+ deleteTerminalLogsTransaction(payload.terminalId);
111
+ deleteTerminalDirectory(payload.terminalId);
112
+ await writeResult({
113
+ type: "result",
114
+ id: payload.id,
115
+ ok: true
116
+ });
117
+ return;
118
+ case "shutdown":
119
+ await writeResult({
120
+ type: "result",
121
+ id: payload.id,
122
+ ok: true
123
+ });
124
+ shutdown();
125
+ return;
126
+ default:
127
+ return;
128
+ }
129
+ }
130
+ catch (error) {
131
+ await writeResult({
132
+ type: "result",
133
+ id: payload.id,
134
+ ok: false,
135
+ error: error instanceof Error ? error.message : String(error)
136
+ });
137
+ }
138
+ }
139
+ function appendLogFile(relativePath, content, currentSizeBytes) {
140
+ const filePath = resolveLogPath(relativePath);
141
+ const directoryPath = path.dirname(filePath);
142
+ if (!ensuredDirectories.has(directoryPath)) {
143
+ mkdirSync(directoryPath, { recursive: true });
144
+ ensuredDirectories.add(directoryPath);
145
+ }
146
+ appendFileSync(filePath, content, "utf8");
147
+ const byteLength = Buffer.byteLength(content, "utf8");
148
+ return {
149
+ startOffset: currentSizeBytes,
150
+ endOffset: currentSizeBytes + byteLength,
151
+ byteLength
152
+ };
153
+ }
154
+ function deleteTerminalDirectory(terminalId) {
155
+ const terminalDir = resolveLogPath(terminalId);
156
+ ensuredDirectories.delete(terminalDir);
157
+ rmSync(terminalDir, { recursive: true, force: true });
158
+ }
159
+ function buildActiveRelativePath(terminalId) {
160
+ return path.join(terminalId, "active.log");
161
+ }
162
+ function resolveLogPath(relativePath) {
163
+ const resolvedPath = path.resolve(logRootDir, relativePath);
164
+ if (resolvedPath !== logRootDir && !resolvedPath.startsWith(`${logRootDir}${path.sep}`)) {
165
+ throw new Error(`Invalid terminal log path: ${relativePath}`);
166
+ }
167
+ return resolvedPath;
168
+ }
169
+ async function writeResult(payload) {
170
+ await new Promise((resolve, reject) => {
171
+ process.stdout.write(`${JSON.stringify(payload)}\n`, (error) => {
172
+ if (error) {
173
+ reject(error);
174
+ return;
175
+ }
176
+ resolve();
177
+ });
178
+ });
179
+ }
180
+ function shutdown() {
181
+ stdinReader.close();
182
+ if (db.open) {
183
+ db.close();
184
+ }
185
+ process.exit(0);
186
+ }
187
+ //# sourceMappingURL=terminal-log-writer-process.js.map