aws-runtime-bridge 1.9.79 → 1.9.81

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 (596) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +0 -1
  2. package/dist/adapter/AcodeSdkAdapter.js +11 -1986
  3. package/dist/adapter/AdapterRegistry.d.ts +0 -1
  4. package/dist/adapter/AdapterRegistry.js +2 -100
  5. package/dist/adapter/ClaudeSdkAdapter.d.ts +0 -1
  6. package/dist/adapter/ClaudeSdkAdapter.js +4 -1300
  7. package/dist/adapter/CodexSdkAdapter.d.ts +0 -1
  8. package/dist/adapter/CodexSdkAdapter.js +4 -836
  9. package/dist/adapter/OpencodeSdkAdapter.d.ts +0 -1
  10. package/dist/adapter/OpencodeSdkAdapter.js +4 -879
  11. package/dist/adapter/SdkProviderSpi.d.ts +0 -1
  12. package/dist/adapter/SdkProviderSpi.js +2 -55
  13. package/dist/adapter/acode-tool-names.d.ts +0 -1
  14. package/dist/adapter/acode-tool-names.js +2 -37
  15. package/dist/adapter/idle-poll-loop.d.ts +0 -1
  16. package/dist/adapter/idle-poll-loop.js +2 -59
  17. package/dist/adapter/index.d.ts +0 -1
  18. package/dist/adapter/index.js +2 -11
  19. package/dist/adapter/instance-ai-config-resolver.d.ts +0 -1
  20. package/dist/adapter/instance-ai-config-resolver.js +2 -46
  21. package/dist/adapter/types.d.ts +0 -1
  22. package/dist/adapter/types.js +2 -443
  23. package/dist/adapters/cc-switch/common.d.ts +0 -1
  24. package/dist/adapters/cc-switch/common.js +2 -61
  25. package/dist/adapters/cc-switch/index.d.ts +0 -1
  26. package/dist/adapters/cc-switch/index.js +2 -57
  27. package/dist/adapters/cc-switch/mcp-acode.d.ts +0 -1
  28. package/dist/adapters/cc-switch/mcp-acode.js +2 -71
  29. package/dist/adapters/cc-switch/mcp-claude.d.ts +0 -1
  30. package/dist/adapters/cc-switch/mcp-claude.js +2 -89
  31. package/dist/adapters/cc-switch/mcp-claudecode.d.ts +0 -1
  32. package/dist/adapters/cc-switch/mcp-claudecode.js +2 -77
  33. package/dist/adapters/cc-switch/mcp-codex.d.ts +0 -1
  34. package/dist/adapters/cc-switch/mcp-codex.js +11 -249
  35. package/dist/adapters/cc-switch/mcp-opencode.d.ts +0 -1
  36. package/dist/adapters/cc-switch/mcp-opencode.js +2 -97
  37. package/dist/adapters/cc-switch/mcp-placeholder.d.ts +0 -1
  38. package/dist/adapters/cc-switch/mcp-placeholder.js +2 -19
  39. package/dist/adapters/cc-switch/skill-acode.d.ts +0 -1
  40. package/dist/adapters/cc-switch/skill-acode.js +2 -12
  41. package/dist/adapters/cc-switch/skill-claude.d.ts +0 -1
  42. package/dist/adapters/cc-switch/skill-claude.js +2 -11
  43. package/dist/adapters/cc-switch/skill-claudecode.d.ts +0 -1
  44. package/dist/adapters/cc-switch/skill-claudecode.js +2 -11
  45. package/dist/adapters/cc-switch/skill-codex.d.ts +0 -1
  46. package/dist/adapters/cc-switch/skill-codex.js +2 -6
  47. package/dist/adapters/cc-switch/skill-directory.d.ts +0 -1
  48. package/dist/adapters/cc-switch/skill-directory.js +3 -137
  49. package/dist/adapters/cc-switch/skill-opencode.d.ts +0 -1
  50. package/dist/adapters/cc-switch/skill-opencode.js +2 -11
  51. package/dist/adapters/cc-switch/skill-placeholder.d.ts +0 -1
  52. package/dist/adapters/cc-switch/skill-placeholder.js +2 -19
  53. package/dist/config.d.ts +0 -1
  54. package/dist/config.js +2 -290
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.js +2 -573
  57. package/dist/middleware/auth.d.ts +0 -1
  58. package/dist/middleware/auth.js +2 -98
  59. package/dist/routes/acode-todos.d.ts +0 -1
  60. package/dist/routes/acode-todos.js +2 -75
  61. package/dist/routes/ai-sources.d.ts +0 -1
  62. package/dist/routes/ai-sources.js +2 -132
  63. package/dist/routes/dashboard.d.ts +0 -1
  64. package/dist/routes/dashboard.js +182 -649
  65. package/dist/routes/events.d.ts +0 -1
  66. package/dist/routes/events.js +2 -22
  67. package/dist/routes/file-browser.d.ts +0 -1
  68. package/dist/routes/file-browser.js +2 -781
  69. package/dist/routes/file-diff-rollback.d.ts +0 -1
  70. package/dist/routes/file-diff-rollback.js +2 -301
  71. package/dist/routes/file-snapshot.d.ts +0 -1
  72. package/dist/routes/file-snapshot.js +2 -156
  73. package/dist/routes/git.d.ts +0 -1
  74. package/dist/routes/git.js +28 -1900
  75. package/dist/routes/instance.d.ts +0 -1
  76. package/dist/routes/instance.js +3 -748
  77. package/dist/routes/mcp.d.ts +0 -1
  78. package/dist/routes/mcp.js +2 -196
  79. package/dist/routes/processes.d.ts +0 -1
  80. package/dist/routes/processes.js +2 -252
  81. package/dist/routes/properties.d.ts +0 -1
  82. package/dist/routes/properties.js +2 -72
  83. package/dist/routes/pty.d.ts +0 -1
  84. package/dist/routes/pty.js +6 -560
  85. package/dist/routes/runtime-binding.d.ts +0 -1
  86. package/dist/routes/runtime-binding.js +2 -263
  87. package/dist/routes/sessions.d.ts +0 -1
  88. package/dist/routes/sessions.js +2 -758
  89. package/dist/routes/skills.d.ts +0 -1
  90. package/dist/routes/skills.js +2 -187
  91. package/dist/routes/sub-agents.d.ts +0 -1
  92. package/dist/routes/sub-agents.js +20 -279
  93. package/dist/routes/system-metrics.d.ts +0 -1
  94. package/dist/routes/system-metrics.js +2 -20
  95. package/dist/routes/task-context.d.ts +0 -1
  96. package/dist/routes/task-context.js +2 -78
  97. package/dist/routes/terminal.d.ts +0 -1
  98. package/dist/routes/terminal.js +54 -2882
  99. package/dist/routes/yml.d.ts +0 -1
  100. package/dist/routes/yml.js +2 -223
  101. package/dist/services/acode-package.d.ts +0 -1
  102. package/dist/services/acode-package.js +2 -111
  103. package/dist/services/agent-event-store.d.ts +0 -1
  104. package/dist/services/agent-event-store.js +2 -81
  105. package/dist/services/agent-process-manager.d.ts +0 -1
  106. package/dist/services/agent-process-manager.js +2 -796
  107. package/dist/services/ai-source-apply.d.ts +0 -1
  108. package/dist/services/ai-source-apply.js +2 -83
  109. package/dist/services/auto-register.d.ts +5 -1
  110. package/dist/services/auto-register.js +2 -1053
  111. package/dist/services/aws-client-agent-mcp.d.ts +0 -1
  112. package/dist/services/aws-client-agent-mcp.js +3 -337
  113. package/dist/services/bridge-package-publish-hooks.d.ts +0 -1
  114. package/dist/services/bridge-package-publish-hooks.js +2 -115
  115. package/dist/services/cc-switch-sdk.d.ts +0 -1
  116. package/dist/services/cc-switch-sdk.js +2 -135
  117. package/dist/services/cli-commands.d.ts +6 -1
  118. package/dist/services/cli-commands.js +6 -645
  119. package/dist/services/event-delta-pusher.d.ts +0 -1
  120. package/dist/services/event-delta-pusher.js +2 -95
  121. package/dist/services/fileSnapshotStore.d.ts +0 -1
  122. package/dist/services/fileSnapshotStore.js +2 -500
  123. package/dist/services/instance-ai-config-service.d.ts +0 -1
  124. package/dist/services/instance-ai-config-service.js +2 -174
  125. package/dist/services/instance-init-service.d.ts +0 -1
  126. package/dist/services/instance-init-service.js +2 -193
  127. package/dist/services/instance-service.d.ts +0 -1
  128. package/dist/services/instance-service.js +2 -237
  129. package/dist/services/instance-state.d.ts +0 -1
  130. package/dist/services/instance-state.js +2 -94
  131. package/dist/services/legacy-path-migration.d.ts +0 -1
  132. package/dist/services/legacy-path-migration.js +2 -66
  133. package/dist/services/lifecycle-state.d.ts +0 -1
  134. package/dist/services/lifecycle-state.js +3 -110
  135. package/dist/services/mcp-launch-binding-queue.d.ts +0 -1
  136. package/dist/services/mcp-launch-binding-queue.js +2 -175
  137. package/dist/services/orphan-monitor.d.ts +0 -1
  138. package/dist/services/orphan-monitor.js +2 -382
  139. package/dist/services/panel-auth.d.ts +0 -1
  140. package/dist/services/panel-auth.js +2 -168
  141. package/dist/services/process-detector.d.ts +0 -1
  142. package/dist/services/process-detector.js +18 -1019
  143. package/dist/services/process-registry.d.ts +0 -1
  144. package/dist/services/process-registry.js +2 -375
  145. package/dist/services/ring-buffer.d.ts +0 -1
  146. package/dist/services/ring-buffer.js +2 -103
  147. package/dist/services/runtime-binding.d.ts +0 -1
  148. package/dist/services/runtime-binding.js +6 -363
  149. package/dist/services/runtime-lifecycle-policy.d.ts +0 -1
  150. package/dist/services/runtime-lifecycle-policy.js +2 -35
  151. package/dist/services/session-output.d.ts +0 -1
  152. package/dist/services/session-output.js +5 -539
  153. package/dist/services/startup-config-wizard.d.ts +0 -1
  154. package/dist/services/startup-config-wizard.js +14 -258
  155. package/dist/services/sub-agent-manager-instance.d.ts +0 -1
  156. package/dist/services/sub-agent-manager-instance.js +2 -12
  157. package/dist/services/system-metrics.d.ts +0 -1
  158. package/dist/services/system-metrics.js +2 -252
  159. package/dist/services/terminal-persistence.d.ts +0 -1
  160. package/dist/services/terminal-persistence.js +2 -176
  161. package/dist/services/tool-installer.d.ts +0 -1
  162. package/dist/services/tool-installer.js +5 -751
  163. package/dist/services/tunnel-client.d.ts +0 -1
  164. package/dist/services/tunnel-client.js +2 -402
  165. package/dist/services/windows-service-manager.d.ts +3 -3
  166. package/dist/services/windows-service-manager.js +2 -59
  167. package/dist/services/workspace-files.d.ts +0 -1
  168. package/dist/services/workspace-files.js +2 -1275
  169. package/dist/services/workspace-watch.d.ts +0 -1
  170. package/dist/services/workspace-watch.js +2 -123
  171. package/dist/services/workspaceTaskChangeWatcher.d.ts +0 -1
  172. package/dist/services/workspaceTaskChangeWatcher.js +2 -483
  173. package/dist/types.d.ts +0 -1
  174. package/dist/types.js +1 -1
  175. package/dist/utils/file-utils.d.ts +0 -1
  176. package/dist/utils/file-utils.js +3 -208
  177. package/dist/utils/instance-ai-config-debug-logger.d.ts +0 -1
  178. package/dist/utils/instance-ai-config-debug-logger.js +4 -63
  179. package/dist/utils/logger.d.ts +0 -1
  180. package/dist/utils/logger.js +2 -154
  181. package/dist/utils/mcp-utils.d.ts +0 -1
  182. package/dist/utils/mcp-utils.js +2 -187
  183. package/dist/utils/path-utils.d.ts +0 -1
  184. package/dist/utils/path-utils.js +2 -44
  185. package/dist/utils/sdk-package-loader.d.ts +0 -1
  186. package/dist/utils/sdk-package-loader.js +2 -78
  187. package/dist/utils/validation.d.ts +0 -1
  188. package/dist/utils/validation.js +2 -53
  189. package/dist/utils/yaml-utils.d.ts +0 -1
  190. package/dist/utils/yaml-utils.js +2 -312
  191. package/node_modules/@cc-switch/sdk/dist/constants.d.ts +0 -1
  192. package/node_modules/@cc-switch/sdk/dist/constants.js +2 -63
  193. package/node_modules/@cc-switch/sdk/dist/errors.d.ts +0 -1
  194. package/node_modules/@cc-switch/sdk/dist/errors.js +2 -8
  195. package/node_modules/@cc-switch/sdk/dist/index.d.ts +0 -1
  196. package/node_modules/@cc-switch/sdk/dist/index.js +2 -9
  197. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts +0 -1
  198. package/node_modules/@cc-switch/sdk/dist/schemas.js +2 -38
  199. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +0 -1
  200. package/node_modules/@cc-switch/sdk/dist/sdk.js +2 -470
  201. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts +0 -1
  202. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.js +4 -307
  203. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts +0 -1
  204. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.js +2 -37
  205. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts +0 -1
  206. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.js +2 -9
  207. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts +0 -1
  208. package/node_modules/@cc-switch/sdk/dist/services/skill-model.js +2 -41
  209. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts +0 -1
  210. package/node_modules/@cc-switch/sdk/dist/services/skill-service.js +2 -9
  211. package/node_modules/@cc-switch/sdk/dist/state.d.ts +0 -1
  212. package/node_modules/@cc-switch/sdk/dist/state.js +2 -19
  213. package/node_modules/@cc-switch/sdk/dist/types.d.ts +0 -1
  214. package/node_modules/@cc-switch/sdk/dist/types.js +1 -1
  215. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts +0 -1
  216. package/node_modules/@cc-switch/sdk/dist/utils/fs.js +3 -114
  217. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts +0 -1
  218. package/node_modules/@cc-switch/sdk/dist/utils/id.js +2 -12
  219. package/node_modules/@cc-switch/sdk/package.json +1 -1
  220. package/package/acode/dist/ask-user-question-tool.d.ts +0 -1
  221. package/package/acode/dist/ask-user-question-tool.js +4 -233
  222. package/package/acode/dist/built-in-file-tools.d.ts +0 -1
  223. package/package/acode/dist/built-in-file-tools.js +4 -966
  224. package/package/acode/dist/built-in-symbols-tool.d.ts +0 -1
  225. package/package/acode/dist/built-in-symbols-tool.js +2 -117
  226. package/package/acode/dist/builtins/commandArtifacts.d.ts +0 -1
  227. package/package/acode/dist/builtins/commandArtifacts.js +9 -97
  228. package/package/acode/dist/builtins/commandOutputEvents.d.ts +0 -1
  229. package/package/acode/dist/builtins/commandOutputEvents.js +2 -56
  230. package/package/acode/dist/builtins/shellCommandPreparation.d.ts +0 -1
  231. package/package/acode/dist/builtins/shellCommandPreparation.js +5 -44
  232. package/package/acode/dist/builtins/shellCommandResult.d.ts +0 -1
  233. package/package/acode/dist/builtins/shellCommandResult.js +2 -71
  234. package/package/acode/dist/builtins/shellCommandRunner.d.ts +0 -1
  235. package/package/acode/dist/builtins/shellCommandRunner.js +2 -115
  236. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +0 -1
  237. package/package/acode/dist/builtins/shellOutputDecoder.js +2 -94
  238. package/package/acode/dist/cli.d.ts +0 -1
  239. package/package/acode/dist/cli.js +4 -38
  240. package/package/acode/dist/commands/commandLoader.d.ts +0 -1
  241. package/package/acode/dist/commands/commandLoader.js +2 -33
  242. package/package/acode/dist/commands/commandParser.d.ts +0 -1
  243. package/package/acode/dist/commands/commandParser.js +3 -77
  244. package/package/acode/dist/commands/commandRegistry.d.ts +0 -1
  245. package/package/acode/dist/commands/commandRegistry.js +2 -30
  246. package/package/acode/dist/compaction.d.ts +0 -1
  247. package/package/acode/dist/compaction.js +7 -919
  248. package/package/acode/dist/config.d.ts +0 -1
  249. package/package/acode/dist/config.js +5 -105
  250. package/package/acode/dist/fs-utils.d.ts +0 -1
  251. package/package/acode/dist/fs-utils.js +2 -79
  252. package/package/acode/dist/hooks/hookBus.d.ts +0 -1
  253. package/package/acode/dist/hooks/hookBus.js +2 -40
  254. package/package/acode/dist/index.d.ts +0 -1
  255. package/package/acode/dist/index.js +2 -19
  256. package/package/acode/dist/mcpToolNames.d.ts +0 -1
  257. package/package/acode/dist/mcpToolNames.js +2 -17
  258. package/package/acode/dist/parsers/ast-cache.d.ts +0 -1
  259. package/package/acode/dist/parsers/ast-cache.js +2 -76
  260. package/package/acode/dist/parsers/language-detector.d.ts +0 -1
  261. package/package/acode/dist/parsers/language-detector.js +2 -44
  262. package/package/acode/dist/parsers/language-queries.d.ts +0 -1
  263. package/package/acode/dist/parsers/language-queries.js +12 -602
  264. package/package/acode/dist/parsers/symbol-extractor.d.ts +0 -1
  265. package/package/acode/dist/parsers/symbol-extractor.js +3 -164
  266. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +0 -1
  267. package/package/acode/dist/parsers/tree-sitter-loader.js +2 -64
  268. package/package/acode/dist/parsers/types.d.ts +0 -1
  269. package/package/acode/dist/parsers/types.js +1 -7
  270. package/package/acode/dist/runtime.d.ts +0 -1
  271. package/package/acode/dist/runtime.js +86 -3771
  272. package/package/acode/dist/skill-tool.d.ts +0 -1
  273. package/package/acode/dist/skill-tool.js +5 -174
  274. package/package/acode/dist/sub-agent-manager.d.ts +0 -1
  275. package/package/acode/dist/sub-agent-manager.js +2 -1159
  276. package/package/acode/dist/sub-agent-store.d.ts +0 -1
  277. package/package/acode/dist/sub-agent-store.js +4 -236
  278. package/package/acode/dist/sub-agent-tools.d.ts +0 -1
  279. package/package/acode/dist/sub-agent-tools.js +15 -369
  280. package/package/acode/dist/sub-agent-types.d.ts +0 -1
  281. package/package/acode/dist/sub-agent-types.js +1 -8
  282. package/package/acode/dist/todo-store.d.ts +0 -1
  283. package/package/acode/dist/todo-store.js +2 -73
  284. package/package/acode/dist/todo-tool.d.ts +0 -1
  285. package/package/acode/dist/todo-tool.js +5 -121
  286. package/package/acode/dist/types.d.ts +0 -1
  287. package/package/acode/dist/types.js +1 -1
  288. package/package/acode/package.json +2 -2
  289. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +0 -1
  290. package/package/aws-client-agent-mcp/dist/agent-client.js +2 -890
  291. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +0 -1
  292. package/package/aws-client-agent-mcp/dist/agent-client.test.js +0 -1
  293. package/package/aws-client-agent-mcp/dist/config.d.ts +0 -1
  294. package/package/aws-client-agent-mcp/dist/config.js +2 -243
  295. package/package/aws-client-agent-mcp/dist/config.test.d.ts +0 -1
  296. package/package/aws-client-agent-mcp/dist/config.test.js +0 -1
  297. package/package/aws-client-agent-mcp/dist/constants.d.ts +0 -1
  298. package/package/aws-client-agent-mcp/dist/constants.js +2 -24
  299. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +0 -1
  300. package/package/aws-client-agent-mcp/dist/context-manager.js +2 -477
  301. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +0 -1
  302. package/package/aws-client-agent-mcp/dist/context-manager.test.js +0 -1
  303. package/package/aws-client-agent-mcp/dist/http-client.d.ts +0 -1
  304. package/package/aws-client-agent-mcp/dist/http-client.js +2 -446
  305. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +0 -1
  306. package/package/aws-client-agent-mcp/dist/http-client.test.js +0 -1
  307. package/package/aws-client-agent-mcp/dist/index.d.ts +0 -1
  308. package/package/aws-client-agent-mcp/dist/index.js +2 -34
  309. package/package/aws-client-agent-mcp/dist/logger.d.ts +0 -1
  310. package/package/aws-client-agent-mcp/dist/logger.js +3 -178
  311. package/package/aws-client-agent-mcp/dist/logger.test.d.ts +0 -1
  312. package/package/aws-client-agent-mcp/dist/logger.test.js +0 -1
  313. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +0 -1
  314. package/package/aws-client-agent-mcp/dist/mcp-server.js +38 -2709
  315. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +0 -1
  316. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +0 -1
  317. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +0 -1
  318. package/package/aws-client-agent-mcp/dist/mcp-tools.js +22 -562
  319. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts +0 -1
  320. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +0 -1
  321. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +0 -1
  322. package/package/aws-client-agent-mcp/dist/memory-store.js +4 -826
  323. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +0 -1
  324. package/package/aws-client-agent-mcp/dist/memory-store.test.js +0 -1
  325. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +0 -1
  326. package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -294
  327. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +0 -1
  328. package/package/aws-client-agent-mcp/dist/message-buffer.js +2 -288
  329. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +0 -1
  330. package/package/aws-client-agent-mcp/dist/message-buffer.test.js +0 -1
  331. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +0 -1
  332. package/package/aws-client-agent-mcp/dist/messageContent.js +2 -125
  333. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +0 -1
  334. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +2 -103
  335. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts +0 -1
  336. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +0 -1
  337. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +0 -1
  338. package/package/aws-client-agent-mcp/dist/server-memory-store.js +2 -96
  339. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +0 -1
  340. package/package/aws-client-agent-mcp/dist/status-reporter.js +3 -327
  341. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +0 -1
  342. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +0 -1
  343. package/package/aws-client-agent-mcp/dist/types.d.ts +0 -1
  344. package/package/aws-client-agent-mcp/dist/types.js +2 -9
  345. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +0 -1
  346. package/package/aws-client-agent-mcp/dist/websocket-client.js +2 -677
  347. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +0 -1
  348. package/package/aws-client-agent-mcp/dist/websocket-client.test.js +0 -1
  349. package/package/aws-client-agent-mcp/package.json +1 -1
  350. package/package/cc-switch-sdk/dist/constants.d.ts +0 -1
  351. package/package/cc-switch-sdk/dist/constants.js +2 -63
  352. package/package/cc-switch-sdk/dist/errors.d.ts +0 -1
  353. package/package/cc-switch-sdk/dist/errors.js +2 -8
  354. package/package/cc-switch-sdk/dist/index.d.ts +0 -1
  355. package/package/cc-switch-sdk/dist/index.js +2 -9
  356. package/package/cc-switch-sdk/dist/schemas.d.ts +0 -1
  357. package/package/cc-switch-sdk/dist/schemas.js +2 -38
  358. package/package/cc-switch-sdk/dist/sdk.d.ts +0 -1
  359. package/package/cc-switch-sdk/dist/sdk.js +2 -470
  360. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts +0 -1
  361. package/package/cc-switch-sdk/dist/services/ai-config-service.js +4 -307
  362. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts +0 -1
  363. package/package/cc-switch-sdk/dist/services/mcp-model.js +2 -37
  364. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts +0 -1
  365. package/package/cc-switch-sdk/dist/services/mcp-service.js +2 -9
  366. package/package/cc-switch-sdk/dist/services/skill-model.d.ts +0 -1
  367. package/package/cc-switch-sdk/dist/services/skill-model.js +2 -41
  368. package/package/cc-switch-sdk/dist/services/skill-service.d.ts +0 -1
  369. package/package/cc-switch-sdk/dist/services/skill-service.js +2 -9
  370. package/package/cc-switch-sdk/dist/state.d.ts +0 -1
  371. package/package/cc-switch-sdk/dist/state.js +2 -19
  372. package/package/cc-switch-sdk/dist/types.d.ts +0 -1
  373. package/package/cc-switch-sdk/dist/types.js +1 -1
  374. package/package/cc-switch-sdk/dist/utils/fs.d.ts +0 -1
  375. package/package/cc-switch-sdk/dist/utils/fs.js +3 -114
  376. package/package/cc-switch-sdk/dist/utils/id.d.ts +0 -1
  377. package/package/cc-switch-sdk/dist/utils/id.js +2 -12
  378. package/package/cc-switch-sdk/package.json +1 -1
  379. package/package.json +4 -2
  380. package/dist/adapter/AcodeSdkAdapter.d.ts.map +0 -1
  381. package/dist/adapter/AdapterRegistry.d.ts.map +0 -1
  382. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +0 -1
  383. package/dist/adapter/CodexSdkAdapter.d.ts.map +0 -1
  384. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +0 -1
  385. package/dist/adapter/SdkProviderSpi.d.ts.map +0 -1
  386. package/dist/adapter/acode-tool-names.d.ts.map +0 -1
  387. package/dist/adapter/idle-poll-loop.d.ts.map +0 -1
  388. package/dist/adapter/index.d.ts.map +0 -1
  389. package/dist/adapter/instance-ai-config-resolver.d.ts.map +0 -1
  390. package/dist/adapter/types.d.ts.map +0 -1
  391. package/dist/adapters/cc-switch/common.d.ts.map +0 -1
  392. package/dist/adapters/cc-switch/index.d.ts.map +0 -1
  393. package/dist/adapters/cc-switch/mcp-acode.d.ts.map +0 -1
  394. package/dist/adapters/cc-switch/mcp-claude.d.ts.map +0 -1
  395. package/dist/adapters/cc-switch/mcp-claudecode.d.ts.map +0 -1
  396. package/dist/adapters/cc-switch/mcp-codex.d.ts.map +0 -1
  397. package/dist/adapters/cc-switch/mcp-opencode.d.ts.map +0 -1
  398. package/dist/adapters/cc-switch/mcp-placeholder.d.ts.map +0 -1
  399. package/dist/adapters/cc-switch/skill-acode.d.ts.map +0 -1
  400. package/dist/adapters/cc-switch/skill-claude.d.ts.map +0 -1
  401. package/dist/adapters/cc-switch/skill-claudecode.d.ts.map +0 -1
  402. package/dist/adapters/cc-switch/skill-codex.d.ts.map +0 -1
  403. package/dist/adapters/cc-switch/skill-directory.d.ts.map +0 -1
  404. package/dist/adapters/cc-switch/skill-opencode.d.ts.map +0 -1
  405. package/dist/adapters/cc-switch/skill-placeholder.d.ts.map +0 -1
  406. package/dist/config.d.ts.map +0 -1
  407. package/dist/index.d.ts.map +0 -1
  408. package/dist/middleware/auth.d.ts.map +0 -1
  409. package/dist/routes/acode-todos.d.ts.map +0 -1
  410. package/dist/routes/ai-sources.d.ts.map +0 -1
  411. package/dist/routes/dashboard.d.ts.map +0 -1
  412. package/dist/routes/events.d.ts.map +0 -1
  413. package/dist/routes/file-browser.d.ts.map +0 -1
  414. package/dist/routes/file-diff-rollback.d.ts.map +0 -1
  415. package/dist/routes/file-snapshot.d.ts.map +0 -1
  416. package/dist/routes/git.d.ts.map +0 -1
  417. package/dist/routes/instance.d.ts.map +0 -1
  418. package/dist/routes/mcp.d.ts.map +0 -1
  419. package/dist/routes/processes.d.ts.map +0 -1
  420. package/dist/routes/properties.d.ts.map +0 -1
  421. package/dist/routes/pty.d.ts.map +0 -1
  422. package/dist/routes/runtime-binding.d.ts.map +0 -1
  423. package/dist/routes/sessions.d.ts.map +0 -1
  424. package/dist/routes/skills.d.ts.map +0 -1
  425. package/dist/routes/sub-agents.d.ts.map +0 -1
  426. package/dist/routes/system-metrics.d.ts.map +0 -1
  427. package/dist/routes/task-context.d.ts.map +0 -1
  428. package/dist/routes/terminal.d.ts.map +0 -1
  429. package/dist/routes/yml.d.ts.map +0 -1
  430. package/dist/services/acode-package.d.ts.map +0 -1
  431. package/dist/services/agent-event-store.d.ts.map +0 -1
  432. package/dist/services/agent-process-manager.d.ts.map +0 -1
  433. package/dist/services/ai-source-apply.d.ts.map +0 -1
  434. package/dist/services/auto-register.d.ts.map +0 -1
  435. package/dist/services/aws-client-agent-mcp.d.ts.map +0 -1
  436. package/dist/services/bridge-package-publish-hooks.d.ts.map +0 -1
  437. package/dist/services/cc-switch-sdk.d.ts.map +0 -1
  438. package/dist/services/cli-commands.d.ts.map +0 -1
  439. package/dist/services/event-delta-pusher.d.ts.map +0 -1
  440. package/dist/services/fileSnapshotStore.d.ts.map +0 -1
  441. package/dist/services/instance-ai-config-service.d.ts.map +0 -1
  442. package/dist/services/instance-init-service.d.ts.map +0 -1
  443. package/dist/services/instance-service.d.ts.map +0 -1
  444. package/dist/services/instance-state.d.ts.map +0 -1
  445. package/dist/services/legacy-path-migration.d.ts.map +0 -1
  446. package/dist/services/lifecycle-state.d.ts.map +0 -1
  447. package/dist/services/mcp-launch-binding-queue.d.ts.map +0 -1
  448. package/dist/services/orphan-monitor.d.ts.map +0 -1
  449. package/dist/services/panel-auth.d.ts.map +0 -1
  450. package/dist/services/process-detector.d.ts.map +0 -1
  451. package/dist/services/process-registry.d.ts.map +0 -1
  452. package/dist/services/ring-buffer.d.ts.map +0 -1
  453. package/dist/services/runtime-binding.d.ts.map +0 -1
  454. package/dist/services/runtime-lifecycle-policy.d.ts.map +0 -1
  455. package/dist/services/session-output.d.ts.map +0 -1
  456. package/dist/services/startup-config-wizard.d.ts.map +0 -1
  457. package/dist/services/sub-agent-manager-instance.d.ts.map +0 -1
  458. package/dist/services/system-metrics.d.ts.map +0 -1
  459. package/dist/services/terminal-persistence.d.ts.map +0 -1
  460. package/dist/services/tool-installer.d.ts.map +0 -1
  461. package/dist/services/tunnel-client.d.ts.map +0 -1
  462. package/dist/services/windows-service-manager.d.ts.map +0 -1
  463. package/dist/services/workspace-files.d.ts.map +0 -1
  464. package/dist/services/workspace-watch.d.ts.map +0 -1
  465. package/dist/services/workspaceTaskChangeWatcher.d.ts.map +0 -1
  466. package/dist/types.d.ts.map +0 -1
  467. package/dist/utils/file-utils.d.ts.map +0 -1
  468. package/dist/utils/instance-ai-config-debug-logger.d.ts.map +0 -1
  469. package/dist/utils/logger.d.ts.map +0 -1
  470. package/dist/utils/mcp-utils.d.ts.map +0 -1
  471. package/dist/utils/path-utils.d.ts.map +0 -1
  472. package/dist/utils/sdk-package-loader.d.ts.map +0 -1
  473. package/dist/utils/validation.d.ts.map +0 -1
  474. package/dist/utils/yaml-utils.d.ts.map +0 -1
  475. package/node_modules/@cc-switch/sdk/dist/constants.d.ts.map +0 -1
  476. package/node_modules/@cc-switch/sdk/dist/errors.d.ts.map +0 -1
  477. package/node_modules/@cc-switch/sdk/dist/index.d.ts.map +0 -1
  478. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts.map +0 -1
  479. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts.map +0 -1
  480. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts.map +0 -1
  481. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts.map +0 -1
  482. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts.map +0 -1
  483. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts.map +0 -1
  484. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts.map +0 -1
  485. package/node_modules/@cc-switch/sdk/dist/state.d.ts.map +0 -1
  486. package/node_modules/@cc-switch/sdk/dist/types.d.ts.map +0 -1
  487. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts.map +0 -1
  488. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts.map +0 -1
  489. package/package/acode/dist/ask-user-question-tool.d.ts.map +0 -1
  490. package/package/acode/dist/built-in-file-tools.d.ts.map +0 -1
  491. package/package/acode/dist/built-in-symbols-tool.d.ts.map +0 -1
  492. package/package/acode/dist/builtins/commandArtifacts.d.ts.map +0 -1
  493. package/package/acode/dist/builtins/commandOutputEvents.d.ts.map +0 -1
  494. package/package/acode/dist/builtins/shellCommandPreparation.d.ts.map +0 -1
  495. package/package/acode/dist/builtins/shellCommandResult.d.ts.map +0 -1
  496. package/package/acode/dist/builtins/shellCommandRunner.d.ts.map +0 -1
  497. package/package/acode/dist/builtins/shellOutputDecoder.d.ts.map +0 -1
  498. package/package/acode/dist/cli.d.ts.map +0 -1
  499. package/package/acode/dist/commands/commandLoader.d.ts.map +0 -1
  500. package/package/acode/dist/commands/commandParser.d.ts.map +0 -1
  501. package/package/acode/dist/commands/commandRegistry.d.ts.map +0 -1
  502. package/package/acode/dist/compaction.d.ts.map +0 -1
  503. package/package/acode/dist/config.d.ts.map +0 -1
  504. package/package/acode/dist/fs-utils.d.ts.map +0 -1
  505. package/package/acode/dist/hooks/hookBus.d.ts.map +0 -1
  506. package/package/acode/dist/index.d.ts.map +0 -1
  507. package/package/acode/dist/mcpToolNames.d.ts.map +0 -1
  508. package/package/acode/dist/parsers/ast-cache.d.ts.map +0 -1
  509. package/package/acode/dist/parsers/language-detector.d.ts.map +0 -1
  510. package/package/acode/dist/parsers/language-queries.d.ts.map +0 -1
  511. package/package/acode/dist/parsers/symbol-extractor.d.ts.map +0 -1
  512. package/package/acode/dist/parsers/tree-sitter-loader.d.ts.map +0 -1
  513. package/package/acode/dist/parsers/types.d.ts.map +0 -1
  514. package/package/acode/dist/runtime.d.ts.map +0 -1
  515. package/package/acode/dist/skill-tool.d.ts.map +0 -1
  516. package/package/acode/dist/sub-agent-manager.d.ts.map +0 -1
  517. package/package/acode/dist/sub-agent-store.d.ts.map +0 -1
  518. package/package/acode/dist/sub-agent-tools.d.ts.map +0 -1
  519. package/package/acode/dist/sub-agent-types.d.ts.map +0 -1
  520. package/package/acode/dist/todo-store.d.ts.map +0 -1
  521. package/package/acode/dist/todo-tool.d.ts.map +0 -1
  522. package/package/acode/dist/types.d.ts.map +0 -1
  523. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +0 -1
  524. package/package/aws-client-agent-mcp/dist/agent-client.js.map +0 -1
  525. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +0 -1
  526. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +0 -1
  527. package/package/aws-client-agent-mcp/dist/config.d.ts.map +0 -1
  528. package/package/aws-client-agent-mcp/dist/config.js.map +0 -1
  529. package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +0 -1
  530. package/package/aws-client-agent-mcp/dist/config.test.js.map +0 -1
  531. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +0 -1
  532. package/package/aws-client-agent-mcp/dist/constants.js.map +0 -1
  533. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +0 -1
  534. package/package/aws-client-agent-mcp/dist/context-manager.js.map +0 -1
  535. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts.map +0 -1
  536. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +0 -1
  537. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +0 -1
  538. package/package/aws-client-agent-mcp/dist/http-client.js.map +0 -1
  539. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +0 -1
  540. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +0 -1
  541. package/package/aws-client-agent-mcp/dist/index.d.ts.map +0 -1
  542. package/package/aws-client-agent-mcp/dist/index.js.map +0 -1
  543. package/package/aws-client-agent-mcp/dist/logger.d.ts.map +0 -1
  544. package/package/aws-client-agent-mcp/dist/logger.js.map +0 -1
  545. package/package/aws-client-agent-mcp/dist/logger.test.d.ts.map +0 -1
  546. package/package/aws-client-agent-mcp/dist/logger.test.js.map +0 -1
  547. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +0 -1
  548. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +0 -1
  549. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +0 -1
  550. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +0 -1
  551. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +0 -1
  552. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +0 -1
  553. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts.map +0 -1
  554. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js.map +0 -1
  555. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +0 -1
  556. package/package/aws-client-agent-mcp/dist/memory-store.js.map +0 -1
  557. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +0 -1
  558. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +0 -1
  559. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +0 -1
  560. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +0 -1
  561. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +0 -1
  562. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +0 -1
  563. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +0 -1
  564. package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +0 -1
  565. package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +0 -1
  566. package/package/aws-client-agent-mcp/dist/messageContent.js.map +0 -1
  567. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +0 -1
  568. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +0 -1
  569. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts.map +0 -1
  570. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js.map +0 -1
  571. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +0 -1
  572. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +0 -1
  573. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +0 -1
  574. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +0 -1
  575. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +0 -1
  576. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +0 -1
  577. package/package/aws-client-agent-mcp/dist/types.d.ts.map +0 -1
  578. package/package/aws-client-agent-mcp/dist/types.js.map +0 -1
  579. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +0 -1
  580. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +0 -1
  581. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +0 -1
  582. package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +0 -1
  583. package/package/cc-switch-sdk/dist/constants.d.ts.map +0 -1
  584. package/package/cc-switch-sdk/dist/errors.d.ts.map +0 -1
  585. package/package/cc-switch-sdk/dist/index.d.ts.map +0 -1
  586. package/package/cc-switch-sdk/dist/schemas.d.ts.map +0 -1
  587. package/package/cc-switch-sdk/dist/sdk.d.ts.map +0 -1
  588. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts.map +0 -1
  589. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts.map +0 -1
  590. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts.map +0 -1
  591. package/package/cc-switch-sdk/dist/services/skill-model.d.ts.map +0 -1
  592. package/package/cc-switch-sdk/dist/services/skill-service.d.ts.map +0 -1
  593. package/package/cc-switch-sdk/dist/state.d.ts.map +0 -1
  594. package/package/cc-switch-sdk/dist/types.d.ts.map +0 -1
  595. package/package/cc-switch-sdk/dist/utils/fs.d.ts.map +0 -1
  596. package/package/cc-switch-sdk/dist/utils/id.d.ts.map +0 -1
@@ -1,645 +1,6 @@
1
- import { spawnSync } from "node:child_process";
2
- import { createInterface } from "node:readline/promises";
3
- import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
4
- import path from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { configureStartupConfig, printConfigExampleCommand, } from "./startup-config-wizard.js";
7
- import { createWindowsServiceManager, isNodeWindowsAvailable, } from "./windows-service-manager.js";
8
- const SYSTEMD_SERVICE_NAME = "awsb.service";
9
- const DEFAULT_SYSTEMD_UNIT_PATH = `/etc/systemd/system/${SYSTEMD_SERVICE_NAME}`;
10
- const WINDOWS_SERVICE_NAME = "awsb";
11
- // Windows 服务日志:node-windows (WinSW) 的 logpath 配置项将日志输出到此目录,
12
- // 生成 awsb.out.log(stdout)和 awsb.err.log(stderr)。
13
- // 路径放在 ProgramData 下,保证安装用户与服务运行账户(LocalSystem)都能访问。
14
- const WINDOWS_SERVICE_LOG_DIR = path.join(process.env.ProgramData || "C:\\ProgramData", "aws-runtime-bridge", "logs");
15
- const WINDOWS_SERVICE_LOG_PATH = path.join(WINDOWS_SERVICE_LOG_DIR, "awsb.out.log");
16
- function getDefaultPackageRoot() {
17
- const currentFile = fileURLToPath(import.meta.url);
18
- return path.resolve(path.dirname(currentFile), "..", "..");
19
- }
20
- export function readPackageVersion(packageRoot = getDefaultPackageRoot()) {
21
- const packageJsonPath = path.join(packageRoot, "package.json");
22
- const metadata = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
23
- return metadata.version || "unknown";
24
- }
25
- function defaultRunCommand(command, args) {
26
- const result = spawnSync(command, args, {
27
- shell: process.platform === "win32",
28
- stdio: "inherit",
29
- });
30
- return { status: result.status, error: result.error };
31
- }
32
- function defaultStdout(message) {
33
- process.stdout.write(`${message}\n`);
34
- }
35
- function defaultStderr(message) {
36
- process.stderr.write(`${message}\n`);
37
- }
38
- function isVersionCommand(command) {
39
- return command === "-v" || command === "--version" || command === "version";
40
- }
41
- function quoteSystemdExecArg(value) {
42
- return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
43
- }
44
- function getDefaultExecutablePath() {
45
- return process.argv[1]
46
- ? path.resolve(process.argv[1])
47
- : fileURLToPath(import.meta.url);
48
- }
49
- /**
50
- * 生成 systemd unit 内容,主流程是用当前 Node 可执行文件启动当前 CLI 入口。
51
- */
52
- export function createSystemdUnitContent(executablePath) {
53
- const execStart = [process.execPath, executablePath]
54
- .map((part) => quoteSystemdExecArg(part))
55
- .join(" ");
56
- return [
57
- "[Unit]",
58
- "Description=AgentsWorkStudio Runtime Bridge",
59
- "After=network-online.target",
60
- "Wants=network-online.target",
61
- "",
62
- "[Service]",
63
- "Type=simple",
64
- "Environment=AWS_BRIDGE_SKIP_SETUP=true",
65
- `ExecStart=${execStart}`,
66
- "Restart=on-failure",
67
- "RestartSec=5s",
68
- "",
69
- "[Install]",
70
- "WantedBy=multi-user.target",
71
- "",
72
- ].join("\n");
73
- }
74
- function runSystemctl(runCommand, args) {
75
- return runCommand("systemctl", args);
76
- }
77
- function systemctlFailureMessage(action, result) {
78
- if (result.error) {
79
- return `[runtime-bridge] ${action}失败: ${result.error.message}`;
80
- }
81
- return `[runtime-bridge] ${action}失败,systemctl 退出码: ${result.status ?? "unknown"}`;
82
- }
83
- function commandSucceeded(result) {
84
- return !result.error && result.status === 0;
85
- }
86
- function ensureLinuxSystemd(platform, stderr) {
87
- if (platform === "linux") {
88
- return true;
89
- }
90
- stderr("[runtime-bridge] service 命令仅支持 Linux systemd 环境。");
91
- return false;
92
- }
93
- function printServiceUsage(stdout) {
94
- stdout("Usage: awsb service <install|uninstall|start|stop|restart>");
95
- }
96
- /**
97
- * 安装 systemd 服务,主干流程是写入 unit、重载 systemd、启用开机自启,并在未运行时启动服务。
98
- */
99
- function installSystemdService(options) {
100
- if (!ensureLinuxSystemd(options.platform, options.stderr)) {
101
- return { handled: true, exitCode: 1 };
102
- }
103
- const unitContent = createSystemdUnitContent(options.executablePath);
104
- try {
105
- mkdirSync(path.dirname(options.serviceUnitPath), { recursive: true });
106
- writeFileSync(options.serviceUnitPath, unitContent, {
107
- encoding: "utf-8",
108
- mode: 0o644,
109
- });
110
- }
111
- catch (error) {
112
- const err = error instanceof Error ? error : new Error(String(error));
113
- options.stderr(`[runtime-bridge] 写入 systemd unit 失败: ${err.message}`);
114
- return { handled: true, exitCode: 1 };
115
- }
116
- const daemonReloadResult = runSystemctl(options.runCommand, ["daemon-reload"]);
117
- if (!commandSucceeded(daemonReloadResult)) {
118
- options.stderr(systemctlFailureMessage("重载 systemd", daemonReloadResult));
119
- return { handled: true, exitCode: daemonReloadResult.status ?? 1 };
120
- }
121
- const enableResult = runSystemctl(options.runCommand, [
122
- "enable",
123
- SYSTEMD_SERVICE_NAME,
124
- ]);
125
- if (!commandSucceeded(enableResult)) {
126
- options.stderr(systemctlFailureMessage("启用 awsb 开机自启", enableResult));
127
- return { handled: true, exitCode: enableResult.status ?? 1 };
128
- }
129
- const activeResult = runSystemctl(options.runCommand, [
130
- "is-active",
131
- "--quiet",
132
- SYSTEMD_SERVICE_NAME,
133
- ]);
134
- if (activeResult.error) {
135
- options.stderr(systemctlFailureMessage("检查 awsb 服务状态", activeResult));
136
- return { handled: true, exitCode: 1 };
137
- }
138
- if (activeResult.status !== 0) {
139
- const startResult = runSystemctl(options.runCommand, [
140
- "start",
141
- SYSTEMD_SERVICE_NAME,
142
- ]);
143
- if (!commandSucceeded(startResult)) {
144
- options.stderr(systemctlFailureMessage("启动 awsb 服务", startResult));
145
- return { handled: true, exitCode: startResult.status ?? 1 };
146
- }
147
- options.stdout("[runtime-bridge] awsb systemd 服务已安装、已启用开机自启并已启动。");
148
- return { handled: true, exitCode: 0 };
149
- }
150
- options.stdout("[runtime-bridge] awsb systemd 服务已安装并已启用开机自启;服务已在运行。");
151
- return { handled: true, exitCode: 0 };
152
- }
153
- /**
154
- * 卸载 systemd 服务,主干流程是按需停止、禁用自启、删除 unit,并重载 systemd。
155
- */
156
- function uninstallSystemdService(options) {
157
- if (!ensureLinuxSystemd(options.platform, options.stderr)) {
158
- return { handled: true, exitCode: 1 };
159
- }
160
- const unitExists = existsSync(options.serviceUnitPath);
161
- const activeResult = runSystemctl(options.runCommand, [
162
- "is-active",
163
- "--quiet",
164
- SYSTEMD_SERVICE_NAME,
165
- ]);
166
- if (activeResult.error) {
167
- options.stderr(systemctlFailureMessage("检查 awsb 服务状态", activeResult));
168
- return { handled: true, exitCode: 1 };
169
- }
170
- if (activeResult.status === 0) {
171
- const stopResult = runSystemctl(options.runCommand, [
172
- "stop",
173
- SYSTEMD_SERVICE_NAME,
174
- ]);
175
- if (!commandSucceeded(stopResult)) {
176
- options.stderr(systemctlFailureMessage("停止 awsb 服务", stopResult));
177
- return { handled: true, exitCode: stopResult.status ?? 1 };
178
- }
179
- }
180
- const disableResult = runSystemctl(options.runCommand, [
181
- "disable",
182
- SYSTEMD_SERVICE_NAME,
183
- ]);
184
- if (disableResult.error || (disableResult.status !== 0 && unitExists)) {
185
- options.stderr(systemctlFailureMessage("禁用 awsb 开机自启", disableResult));
186
- return { handled: true, exitCode: disableResult.status ?? 1 };
187
- }
188
- if (unitExists) {
189
- try {
190
- unlinkSync(options.serviceUnitPath);
191
- }
192
- catch (error) {
193
- const err = error instanceof Error ? error : new Error(String(error));
194
- options.stderr(`[runtime-bridge] 删除 systemd unit 失败: ${err.message}`);
195
- return { handled: true, exitCode: 1 };
196
- }
197
- }
198
- else {
199
- options.stdout("[runtime-bridge] awsb systemd unit 不存在,跳过删除。");
200
- }
201
- const daemonReloadResult = runSystemctl(options.runCommand, ["daemon-reload"]);
202
- if (!commandSucceeded(daemonReloadResult)) {
203
- options.stderr(systemctlFailureMessage("重载 systemd", daemonReloadResult));
204
- return { handled: true, exitCode: daemonReloadResult.status ?? 1 };
205
- }
206
- options.stdout("[runtime-bridge] awsb systemd 服务已卸载。");
207
- return { handled: true, exitCode: 0 };
208
- }
209
- /**
210
- * 重启 systemd 服务,即执行 systemctl restart awsb.service。
211
- * 若 unit 尚未安装,提示先执行 install。
212
- */
213
- function restartSystemdService(options) {
214
- if (!ensureLinuxSystemd(options.platform, options.stderr)) {
215
- return { handled: true, exitCode: 1 };
216
- }
217
- if (!existsSync(options.serviceUnitPath)) {
218
- options.stderr("[runtime-bridge] awsb systemd 服务尚未安装,请先执行 `awsb service install`。");
219
- return { handled: true, exitCode: 1 };
220
- }
221
- const restartResult = runSystemctl(options.runCommand, [
222
- "restart",
223
- SYSTEMD_SERVICE_NAME,
224
- ]);
225
- if (!commandSucceeded(restartResult)) {
226
- options.stderr(systemctlFailureMessage("重启 awsb 服务", restartResult));
227
- return { handled: true, exitCode: restartResult.status ?? 1 };
228
- }
229
- options.stdout("[runtime-bridge] awsb systemd 服务已重启。");
230
- return { handled: true, exitCode: 0 };
231
- }
232
- /**
233
- * 启动 systemd 服务,即执行 systemctl start awsb.service。
234
- * 若 unit 尚未安装,提示先执行 install。
235
- */
236
- function startSystemdService(options) {
237
- if (!ensureLinuxSystemd(options.platform, options.stderr)) {
238
- return { handled: true, exitCode: 1 };
239
- }
240
- if (!existsSync(options.serviceUnitPath)) {
241
- options.stderr("[runtime-bridge] awsb systemd 服务尚未安装,请先执行 `awsb service install`。");
242
- return { handled: true, exitCode: 1 };
243
- }
244
- const startResult = runSystemctl(options.runCommand, [
245
- "start",
246
- SYSTEMD_SERVICE_NAME,
247
- ]);
248
- if (!commandSucceeded(startResult)) {
249
- options.stderr(systemctlFailureMessage("启动 awsb 服务", startResult));
250
- return { handled: true, exitCode: startResult.status ?? 1 };
251
- }
252
- options.stdout("[runtime-bridge] awsb systemd 服务已启动。");
253
- return { handled: true, exitCode: 0 };
254
- }
255
- /**
256
- * 停止 systemd 服务,即执行 systemctl stop awsb.service。
257
- * 若 unit 尚未安装,提示先执行 install。
258
- */
259
- function stopSystemdService(options) {
260
- if (!ensureLinuxSystemd(options.platform, options.stderr)) {
261
- return { handled: true, exitCode: 1 };
262
- }
263
- if (!existsSync(options.serviceUnitPath)) {
264
- options.stderr("[runtime-bridge] awsb systemd 服务尚未安装,请先执行 `awsb service install`。");
265
- return { handled: true, exitCode: 1 };
266
- }
267
- const stopResult = runSystemctl(options.runCommand, [
268
- "stop",
269
- SYSTEMD_SERVICE_NAME,
270
- ]);
271
- if (!commandSucceeded(stopResult)) {
272
- options.stderr(systemctlFailureMessage("停止 awsb 服务", stopResult));
273
- return { handled: true, exitCode: stopResult.status ?? 1 };
274
- }
275
- options.stdout("[runtime-bridge] awsb systemd 服务已停止。");
276
- return { handled: true, exitCode: 0 };
277
- }
278
- /**
279
- * Windows 服务通过 node-windows(内置 WinSW 包装器)实现 SCM 协议适配。
280
- * 用户 `npm install -g aws-runtime-bridge` 时自动获得 node-windows,无需额外安装 nssm。
281
- *
282
- * - install: 用 node-windows 注册服务(WinSW 包装器处理 SCM 协议);
283
- * - uninstall/start/stop/restart: 用 sc.exe(Windows 原生命令)直接操作 SCM。
284
- */
285
- function nodeWindowsMissingError(stderr) {
286
- stderr("[runtime-bridge] 未检测到 node-windows 模块。请重新安装 aws-runtime-bridge:\n" +
287
- " npm install -g aws-runtime-bridge");
288
- return { handled: true, exitCode: 1 };
289
- }
290
- /**
291
- * 用 node-windows 安装并启动 Windows 服务。
292
- * - node-windows 在 script 所在目录下创建 daemon/ 子目录(含 WinSW 包装器和 XML 配置);
293
- * - logpath 配置项将日志输出到 ProgramData 下的指定目录,供 `awsb log` 读取;
294
- * - 安装后用 sc.exe start 启动服务。
295
- */
296
- async function installWindowsService(options) {
297
- // 测试时可注入 mock manager;生产环境用 node-windows 默认实现
298
- const manager = options.windowsServiceManager;
299
- if (!manager && !isNodeWindowsAvailable()) {
300
- return nodeWindowsMissingError(options.stderr);
301
- }
302
- const logPath = options.windowsServiceLogPath || WINDOWS_SERVICE_LOG_PATH;
303
- const execDir = path.dirname(options.executablePath);
304
- try {
305
- const actualManager = manager || createWindowsServiceManager();
306
- await actualManager.install({
307
- name: WINDOWS_SERVICE_NAME,
308
- description: "awsb runtime bridge",
309
- script: options.executablePath,
310
- workingDirectory: execDir,
311
- env: [{ name: "AWS_BRIDGE_SKIP_SETUP", value: "true" }],
312
- logpath: WINDOWS_SERVICE_LOG_DIR,
313
- });
314
- }
315
- catch (error) {
316
- const err = error instanceof Error ? error : new Error(String(error));
317
- options.stderr(`[runtime-bridge] 安装 Windows 服务失败: ${err.message}`);
318
- return { handled: true, exitCode: 1 };
319
- }
320
- // 安装成功后启动服务
321
- const startResult = options.runCommand("sc.exe", [
322
- "start",
323
- WINDOWS_SERVICE_NAME,
324
- ]);
325
- if (!commandSucceeded(startResult)) {
326
- options.stderr(`[runtime-bridge] 启动 Windows 服务失败: ${startResult.error?.message ?? `退出码 ${startResult.status ?? "unknown"}`}`);
327
- return { handled: true, exitCode: startResult.status ?? 1 };
328
- }
329
- options.stdout(`[runtime-bridge] awsb Windows 服务已安装并已启动(日志: ${logPath})。`);
330
- return { handled: true, exitCode: 0 };
331
- }
332
- /**
333
- * 卸载 Windows 服务(sc.exe stop + sc.exe delete)。
334
- */
335
- function uninstallWindowsService(options) {
336
- const run = (args) => options.runCommand("sc.exe", args);
337
- // 先尝试停止(服务可能未运行,忽略失败)
338
- run(["stop", WINDOWS_SERVICE_NAME]);
339
- const deleteResult = run(["delete", WINDOWS_SERVICE_NAME]);
340
- if (!commandSucceeded(deleteResult)) {
341
- options.stderr(`[runtime-bridge] 卸载 Windows 服务失败: ${deleteResult.error?.message ?? `退出码 ${deleteResult.status ?? "unknown"}`}`);
342
- return { handled: true, exitCode: deleteResult.status ?? 1 };
343
- }
344
- options.stdout("[runtime-bridge] awsb Windows 服务已卸载。");
345
- return { handled: true, exitCode: 0 };
346
- }
347
- /**
348
- * 重启 Windows 服务(sc.exe stop + sc.exe start,未运行会被启动)。
349
- */
350
- function restartWindowsService(options) {
351
- const run = (args) => options.runCommand("sc.exe", args);
352
- // 先停止(可能未运行,忽略失败)
353
- run(["stop", WINDOWS_SERVICE_NAME]);
354
- const startResult = run(["start", WINDOWS_SERVICE_NAME]);
355
- if (!commandSucceeded(startResult)) {
356
- options.stderr(`[runtime-bridge] 重启 Windows 服务失败: ${startResult.error?.message ?? `退出码 ${startResult.status ?? "unknown"}`}`);
357
- return { handled: true, exitCode: startResult.status ?? 1 };
358
- }
359
- options.stdout("[runtime-bridge] awsb Windows 服务已重启。");
360
- return { handled: true, exitCode: 0 };
361
- }
362
- /**
363
- * 启动 Windows 服务(sc.exe start)。
364
- */
365
- function startWindowsService(options) {
366
- const result = options.runCommand("sc.exe", [
367
- "start",
368
- WINDOWS_SERVICE_NAME,
369
- ]);
370
- if (!commandSucceeded(result)) {
371
- options.stderr(`[runtime-bridge] 启动 Windows 服务失败: ${result.error?.message ?? `退出码 ${result.status ?? "unknown"}`}`);
372
- return { handled: true, exitCode: result.status ?? 1 };
373
- }
374
- options.stdout("[runtime-bridge] awsb Windows 服务已启动。");
375
- return { handled: true, exitCode: 0 };
376
- }
377
- /**
378
- * 停止 Windows 服务(sc.exe stop)。
379
- */
380
- function stopWindowsService(options) {
381
- const result = options.runCommand("sc.exe", [
382
- "stop",
383
- WINDOWS_SERVICE_NAME,
384
- ]);
385
- if (!commandSucceeded(result)) {
386
- options.stderr(`[runtime-bridge] 停止 Windows 服务失败: ${result.error?.message ?? `退出码 ${result.status ?? "unknown"}`}`);
387
- return { handled: true, exitCode: result.status ?? 1 };
388
- }
389
- options.stdout("[runtime-bridge] awsb Windows 服务已停止。");
390
- return { handled: true, exitCode: 0 };
391
- }
392
- async function handleServiceCommand(argv, options, stdout, stderr) {
393
- const subcommand = argv[1];
394
- if (!subcommand ||
395
- subcommand === "-h" ||
396
- subcommand === "--help" ||
397
- subcommand === "help") {
398
- printServiceUsage(stdout);
399
- return { handled: true, exitCode: subcommand ? 0 : 1 };
400
- }
401
- const serviceOptions = {
402
- stdout,
403
- stderr,
404
- runCommand: options.runCommand || defaultRunCommand,
405
- platform: options.platform || process.platform,
406
- serviceUnitPath: options.serviceUnitPath || DEFAULT_SYSTEMD_UNIT_PATH,
407
- executablePath: options.executablePath || getDefaultExecutablePath(),
408
- windowsServiceManager: options.windowsServiceManager,
409
- };
410
- // 仅 Linux systemd 与 Windows 服务支持 install/uninstall/restart
411
- if (serviceOptions.platform !== "linux" &&
412
- serviceOptions.platform !== "win32") {
413
- stderr("[runtime-bridge] service 命令仅支持 Linux systemd 与 Windows 服务环境。");
414
- return { handled: true, exitCode: 1 };
415
- }
416
- if (subcommand === "install") {
417
- return serviceOptions.platform === "win32"
418
- ? await installWindowsService(serviceOptions)
419
- : installSystemdService(serviceOptions);
420
- }
421
- if (subcommand === "uninstall") {
422
- return serviceOptions.platform === "win32"
423
- ? uninstallWindowsService(serviceOptions)
424
- : uninstallSystemdService(serviceOptions);
425
- }
426
- if (subcommand === "restart") {
427
- return serviceOptions.platform === "win32"
428
- ? restartWindowsService(serviceOptions)
429
- : restartSystemdService(serviceOptions);
430
- }
431
- if (subcommand === "start") {
432
- return serviceOptions.platform === "win32"
433
- ? startWindowsService(serviceOptions)
434
- : startSystemdService(serviceOptions);
435
- }
436
- if (subcommand === "stop") {
437
- return serviceOptions.platform === "win32"
438
- ? stopWindowsService(serviceOptions)
439
- : stopSystemdService(serviceOptions);
440
- }
441
- stderr(`[runtime-bridge] 未知 service 子命令: ${subcommand}`);
442
- printServiceUsage(stdout);
443
- return { handled: true, exitCode: 1 };
444
- }
445
- function parsePids(raw) {
446
- if (!raw) {
447
- return [];
448
- }
449
- return raw
450
- .split(/\r?\n/)
451
- .map((line) => line.trim())
452
- .filter((line) => /^\d+$/.test(line))
453
- .map(Number);
454
- }
455
- /**
456
- * 默认进程检测:列出正在运行且与当前进程不同的 bridge 实例 PID。
457
- * - Windows: 通过 PowerShell 查询命令行包含 aws-runtime-bridge 的 node.exe。
458
- * - Linux/macOS: 通过 pgrep -f aws-runtime-bridge。
459
- * 任何异常都返回空数组,避免更新流程被检测逻辑阻断。
460
- */
461
- function defaultFindRunningBridgeProcesses(platform) {
462
- try {
463
- if (platform === "win32") {
464
- const result = spawnSync("powershell", [
465
- "-NoProfile",
466
- "-Command",
467
- `Get-CimInstance Win32_Process -Filter "Name='node.exe'" | ` +
468
- `Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ` +
469
- `ForEach-Object { $_.ProcessId }`,
470
- ], { encoding: "utf-8" });
471
- return parsePids(result.stdout);
472
- }
473
- const result = spawnSync("pgrep", ["-f", "aws-runtime-bridge"], {
474
- encoding: "utf-8",
475
- });
476
- return parsePids(result.stdout).filter((pid) => pid !== process.pid);
477
- }
478
- catch {
479
- return [];
480
- }
481
- }
482
- function defaultKillBridgeProcess(pid, platform) {
483
- if (platform === "win32") {
484
- // /T 结束进程树,/F 强制
485
- spawnSync("taskkill", ["/PID", String(pid), "/F", "/T"], {
486
- stdio: "ignore",
487
- });
488
- return;
489
- }
490
- // Linux/macOS:直接 SIGKILL。注意若进程由 systemd 托管,kill 后可能被自动拉起。
491
- spawnSync("kill", ["-9", String(pid)], { stdio: "ignore" });
492
- }
493
- function defaultPrompt(question) {
494
- if (!process.stdin.isTTY) {
495
- // 非交互环境(管道 / CI)不要挂起,默认不关闭进程。
496
- return Promise.resolve("n");
497
- }
498
- const rl = createInterface({ input: process.stdin, output: process.stdout });
499
- return rl.question(question).finally(() => rl.close());
500
- }
501
- /**
502
- * 更新 aws-runtime-bridge:
503
- * 1. 检测是否有正在运行的实例;
504
- * 2. 若有,询问用户是否关闭(y 关闭 / 其他 不关闭);
505
- * 3. 关闭后再安装;若不关闭,则以 --force 强制安装(文件被占用可能仍有警告)。
506
- */
507
- async function handleUpdateCommand(options, stdout, stderr) {
508
- const runCommand = options.runCommand || defaultRunCommand;
509
- const platform = options.platform || process.platform;
510
- const findProcesses = options.findRunningBridgeProcesses || defaultFindRunningBridgeProcesses;
511
- const prompt = options.prompt || defaultPrompt;
512
- const killProcess = options.killBridgeProcess || defaultKillBridgeProcess;
513
- stdout("[runtime-bridge] 正在更新 aws-runtime-bridge 到最新版本...");
514
- const running = findProcesses(platform).filter((pid) => pid !== process.pid);
515
- let forceInstall = false;
516
- if (running.length > 0) {
517
- stdout(`[runtime-bridge] 检测到 aws-runtime-bridge 正在运行 (PID: ${running.join(", ")}),` +
518
- "更新时这些进程可能占用文件导致覆盖失败。");
519
- const answer = (await prompt("是否关闭上述进程以继续更新? (y/N) ")).trim().toLowerCase();
520
- if (answer === "y" || answer === "yes") {
521
- for (const pid of running) {
522
- try {
523
- killProcess(pid, platform);
524
- stdout(`[runtime-bridge] 已关闭进程 PID: ${pid}`);
525
- }
526
- catch (error) {
527
- const err = error instanceof Error ? error : new Error(String(error));
528
- stderr(`[runtime-bridge] 关闭进程 PID ${pid} 失败: ${err.message}`);
529
- }
530
- }
531
- }
532
- else {
533
- forceInstall = true;
534
- stdout("[runtime-bridge] 已选择不关闭进程,将以 --force 方式强制安装(若文件仍被占用可能会有警告)。");
535
- }
536
- }
537
- const args = ["install", "-g", "aws-runtime-bridge@latest", "--omit=optional"];
538
- if (forceInstall) {
539
- args.push("--force");
540
- }
541
- const result = runCommand("npm", args);
542
- if (result.error) {
543
- stderr(`[runtime-bridge] 更新失败: ${result.error.message}`);
544
- return { handled: true, exitCode: 1 };
545
- }
546
- if (result.status !== 0) {
547
- stderr(`[runtime-bridge] 更新失败,npm 退出码: ${result.status ?? "unknown"}`);
548
- return { handled: true, exitCode: result.status ?? 1 };
549
- }
550
- stdout("[runtime-bridge] 更新完成。请重新运行 awsb -v 查看当前版本。");
551
- return { handled: true, exitCode: 0 };
552
- }
553
- /**
554
- * 查看 awsb 服务日志。
555
- * - Linux systemd:journalctl -u awsb.service(支持 --follow 实时跟踪)。
556
- * - Windows:读取 install 时重定向到磁盘的日志文件(支持 --follow 实时跟踪)。
557
- * 非服务环境(未安装 / 不支持的平台)给出明确提示。
558
- */
559
- function handleLogCommand(options, stdout, stderr) {
560
- const argv = options.argv || process.argv.slice(2);
561
- const follow = argv
562
- .slice(1)
563
- .some((arg) => arg === "--follow" || arg === "-f");
564
- const platform = options.platform || process.platform;
565
- const runCommand = options.runCommand || defaultRunCommand;
566
- const unitPath = options.serviceUnitPath || DEFAULT_SYSTEMD_UNIT_PATH;
567
- if (platform === "linux") {
568
- if (!existsSync(unitPath)) {
569
- stderr("[runtime-bridge] awsb 服务尚未安装(awsb service install),无日志可查看。");
570
- return { handled: true, exitCode: 1 };
571
- }
572
- const args = ["-u", SYSTEMD_SERVICE_NAME];
573
- if (follow) {
574
- args.push("-f");
575
- }
576
- else {
577
- args.push("-n", "200", "--no-pager");
578
- }
579
- const result = runCommand("journalctl", args);
580
- if (result.error) {
581
- stderr(`[runtime-bridge] 读取日志失败: ${result.error.message}`);
582
- return { handled: true, exitCode: 1 };
583
- }
584
- return { handled: true, exitCode: result.status ?? 0 };
585
- }
586
- if (platform === "win32") {
587
- const logPath = options.windowsServiceLogPath || WINDOWS_SERVICE_LOG_PATH;
588
- if (!existsSync(logPath)) {
589
- stderr(`[runtime-bridge] 尚未生成日志文件: ${logPath}。请先执行 ` +
590
- "`awsb service install` 并运行服务。");
591
- return { handled: true, exitCode: 1 };
592
- }
593
- const psCommand = `Get-Content -Encoding UTF8 -Tail 200 "${logPath}"` +
594
- (follow ? " -Wait" : "");
595
- const result = runCommand("powershell", [
596
- "-NoProfile",
597
- "-Command",
598
- psCommand,
599
- ]);
600
- if (result.error) {
601
- stderr(`[runtime-bridge] 读取日志失败: ${result.error.message}`);
602
- return { handled: true, exitCode: 1 };
603
- }
604
- return { handled: true, exitCode: result.status ?? 0 };
605
- }
606
- stderr("[runtime-bridge] awsb log 仅支持 Linux systemd 与 Windows 服务环境。");
607
- return { handled: true, exitCode: 1 };
608
- }
609
- export async function handleCliCommand(options = {}) {
610
- const argv = options.argv || process.argv.slice(2);
611
- const command = argv[0];
612
- const stdout = options.stdout || defaultStdout;
613
- const stderr = options.stderr || defaultStderr;
614
- if (isVersionCommand(command)) {
615
- stdout(`aws-runtime-bridge ${readPackageVersion(options.packageRoot)}`);
616
- return { handled: true, exitCode: 0 };
617
- }
618
- if (command === "update") {
619
- return await handleUpdateCommand(options, stdout, stderr);
620
- }
621
- if (command === "config") {
622
- const sub = argv[1];
623
- if (sub === "example" ||
624
- sub === "minimal" ||
625
- sub === "--minimal" ||
626
- sub === "-m") {
627
- const configureExample = options.configureExample || printConfigExampleCommand;
628
- const result = await configureExample();
629
- return { handled: true, exitCode: result === "created" ? 0 : 1 };
630
- }
631
- const configure = options.configure || configureStartupConfig;
632
- const result = await configure();
633
- return {
634
- handled: true,
635
- exitCode: result === "configured" || result === "created" ? 0 : 1,
636
- };
637
- }
638
- if (command === "service") {
639
- return await handleServiceCommand(argv, options, stdout, stderr);
640
- }
641
- if (command === "log") {
642
- return handleLogCommand(options, stdout, stderr);
643
- }
644
- return { handled: false, exitCode: 0 };
645
- }
1
+ import{spawnSync as S}from"node:child_process";import{createInterface as N}from"node:readline/promises";import{existsSync as h,mkdirSync as T,readFileSync as A,rmSync as L,unlinkSync as j,writeFileSync as O}from"node:fs";import f from"node:path";import F from"node:os";import{fileURLToPath as W}from"node:url";import{configureStartupConfig as B,printConfigExampleCommand as G}from"./startup-config-wizard.js";import{createWindowsServiceManager as V,isNodeWindowsAvailable as q}from"./windows-service-manager.js";const o="awsb.service",R=`/etc/systemd/system/${o}`,_="awsb",C=`${_}.exe`,I=f.join(process.env.ProgramData||"C:\\ProgramData","aws-runtime-bridge","logs"),k=f.join(I,"awsb.out.log");function H(){const e=W(import.meta.url);return f.resolve(f.dirname(e),"..","..")}function K(e=H()){const r=f.join(e,"package.json");return JSON.parse(A(r,"utf-8")).version||"unknown"}function E(e,r){const t=S(e,r,{shell:process.platform==="win32",stdio:"inherit"});return{status:t.status,error:t.error}}function Y(){try{const e=S("npm",["root","-g"],{shell:process.platform==="win32",encoding:"utf-8",stdio:["ignore","pipe","ignore"]});if(e.status===0&&e.stdout){const r=e.stdout.trim();if(r)return r}}catch{}return null}function J(e){process.stdout.write(`${e}
2
+ `)}function z(e){process.stderr.write(`${e}
3
+ `)}function Q(e){return e==="-v"||e==="--version"||e==="version"}function X(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Z(){return process.argv[1]?f.resolve(process.argv[1]):W(import.meta.url)}function ee(e){return["[Unit]","Description=AgentsWorkStudio Runtime Bridge","After=network-online.target","Wants=network-online.target","","[Service]","Type=simple","Environment=AWS_BRIDGE_SKIP_SETUP=true",`ExecStart=${[process.execPath,e].map(t=>X(t)).join(" ")}`,"Restart=on-failure","RestartSec=5s","","[Install]","WantedBy=multi-user.target",""].join(`
4
+ `)}function c(e,r){return e("systemctl",r)}function l(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function d(e){return!e.error&&e.status===0}function P(e,r){return e==="linux"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u73AF\u5883\u3002"),!1)}function D(e){e("Usage: awsb service <install|uninstall|start|stop|restart>")}function re(e){if(!P(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=ee(e.executablePath);try{T(f.dirname(e.serviceUnitPath),{recursive:!0}),O(e.serviceUnitPath,r,{encoding:"utf-8",mode:420})}catch(n){const a=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5199\u5165 systemd unit \u5931\u8D25: ${a.message}`),{handled:!0,exitCode:1}}const t=c(e.runCommand,["daemon-reload"]);if(!d(t))return e.stderr(l("\u91CD\u8F7D systemd",t)),{handled:!0,exitCode:t.status??1};const i=c(e.runCommand,["enable",o]);if(!d(i))return e.stderr(l("\u542F\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};const s=c(e.runCommand,["is-active","--quiet",o]);if(s.error)return e.stderr(l("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",s)),{handled:!0,exitCode:1};if(s.status!==0){const n=c(e.runCommand,["start",o]);return d(n)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u3001\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\u5E76\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(l("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}return e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\uFF1B\u670D\u52A1\u5DF2\u5728\u8FD0\u884C\u3002"),{handled:!0,exitCode:0}}function te(e){if(!P(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=h(e.serviceUnitPath),t=c(e.runCommand,["is-active","--quiet",o]);if(t.error)return e.stderr(l("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",t)),{handled:!0,exitCode:1};if(t.status===0){const n=c(e.runCommand,["stop",o]);if(!d(n))return e.stderr(l("\u505C\u6B62 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1}}const i=c(e.runCommand,["disable",o]);if(i.error||i.status!==0&&r)return e.stderr(l("\u7981\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};if(r)try{j(e.serviceUnitPath)}catch(n){const a=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 systemd unit \u5931\u8D25: ${a.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb systemd unit \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");const s=c(e.runCommand,["daemon-reload"]);return d(s)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(l("\u91CD\u8F7D systemd",s)),{handled:!0,exitCode:s.status??1})}function ne(e){if(!P(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!h(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=c(e.runCommand,["restart",o]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(l("\u91CD\u542F awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function se(e){if(!P(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!h(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=c(e.runCommand,["start",o]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(l("\u542F\u52A8 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function ie(e){if(!P(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!h(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=c(e.runCommand,["stop",o]);return d(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(l("\u505C\u6B62 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function ae(e){return e(`[runtime-bridge] \u672A\u68C0\u6D4B\u5230 node-windows \u6A21\u5757\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 aws-runtime-bridge\uFF1A
5
+ npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function ue(e){const r=e.windowsServiceManager;if(!r&&!q())return ae(e.stderr);const t=e.windowsServiceLogPath||k,i=f.dirname(e.executablePath),s=F.homedir();try{await(r||V()).install({name:_,description:"awsb runtime bridge",script:e.executablePath,workingDirectory:i,env:[{name:"AWS_BRIDGE_SKIP_SETUP",value:"true"},{name:"AWS_RUNTIME_HOME_DIR",value:s}],logpath:I})}catch(a){const g=a instanceof Error?a:new Error(String(a));return e.stderr(`[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25: ${g.message}`),{handled:!0,exitCode:1}}const n=e.runCommand("sc.exe",["start",C]);return d(n)?(e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1})}function de(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",C]);const t=r(["delete",C]);return d(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u5378\u8F7D Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}function oe(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",C]);const t=r(["start",C]);return d(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u91CD\u542F Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}function ce(e){const r=e.runCommand("sc.exe",["start",C]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function le(e){const r=e.runCommand("sc.exe",["stop",C]);return d(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u505C\u6B62 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}async function me(e,r,t,i){const s=e[1];if(!s||s==="-h"||s==="--help"||s==="help")return D(t),{handled:!0,exitCode:s?0:1};const n={stdout:t,stderr:i,runCommand:r.runCommand||E,platform:r.platform||process.platform,serviceUnitPath:r.serviceUnitPath||R,executablePath:r.executablePath||Z(),windowsServiceManager:r.windowsServiceManager};return n.platform!=="linux"&&n.platform!=="win32"?(i("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u4E0E Windows \u670D\u52A1\u73AF\u5883\u3002"),{handled:!0,exitCode:1}):s==="install"?n.platform==="win32"?await ue(n):re(n):s==="uninstall"?n.platform==="win32"?de(n):te(n):s==="restart"?n.platform==="win32"?oe(n):ne(n):s==="start"?n.platform==="win32"?ce(n):se(n):s==="stop"?n.platform==="win32"?le(n):ie(n):(i(`[runtime-bridge] \u672A\u77E5 service \u5B50\u547D\u4EE4: ${s}`),D(t),{handled:!0,exitCode:1})}function U(e){return e?e.split(/\r?\n/).map(r=>r.trim()).filter(r=>/^\d+$/.test(r)).map(Number):[]}function fe(e){try{if(e==="win32"){const t=S("powershell",["-NoProfile","-Command",`Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ForEach-Object { $_.ProcessId }`],{encoding:"utf-8"});return U(t.stdout)}const r=S("pgrep",["-f","aws-runtime-bridge"],{encoding:"utf-8"});return U(r.stdout).filter(t=>t!==process.pid)}catch{return[]}}function ge(e,r){if(r==="win32"){S("taskkill",["/PID",String(e),"/F","/T"],{stdio:"ignore"});return}S("kill",["-9",String(e)],{stdio:"ignore"})}function we(e){if(!process.stdin.isTTY)return Promise.resolve("n");const r=N({input:process.stdin,output:process.stdout});return r.question(e).finally(()=>r.close())}async function be(e,r,t){const i=e.runCommand||E,s=e.platform||process.platform,n=e.findRunningBridgeProcesses||fe,a=e.prompt||we,g=e.killBridgeProcess||ge,u=e.globalModulePath||Y;r("[runtime-bridge] \u6B63\u5728\u66F4\u65B0 aws-runtime-bridge \u5230\u6700\u65B0\u7248\u672C...");const m=n(s).filter(w=>w!==process.pid);let x=!1;if(m.length>0){r(`[runtime-bridge] \u68C0\u6D4B\u5230 aws-runtime-bridge \u6B63\u5728\u8FD0\u884C (PID: ${m.join(", ")})\uFF0C\u66F4\u65B0\u65F6\u8FD9\u4E9B\u8FDB\u7A0B\u53EF\u80FD\u5360\u7528\u6587\u4EF6\u5BFC\u81F4\u8986\u76D6\u5931\u8D25\u3002`);const w=(await a("\u662F\u5426\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0? (y/N) ")).trim().toLowerCase();if(w==="y"||w==="yes")for(const b of m)try{g(b,s),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${b}`)}catch(y){const M=y instanceof Error?y:new Error(String(y));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${b} \u5931\u8D25: ${M.message}`)}else x=!0,r("[runtime-bridge] \u5DF2\u9009\u62E9\u4E0D\u5173\u95ED\u8FDB\u7A0B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5F3A\u5236\u5B89\u88C5\uFF08\u82E5\u6587\u4EF6\u4ECD\u88AB\u5360\u7528\u53EF\u80FD\u4F1A\u6709\u8B66\u544A\uFF09\u3002")}const $=u();if($){const w=f.join($,"aws-runtime-bridge");if(h(w)){r("[runtime-bridge] \u6E05\u7406\u65E7\u7248\u672C\u6B8B\u7559\u76EE\u5F55...");try{L(w,{recursive:!0,force:!0})}catch(b){const y=b instanceof Error?b:new Error(String(b));t(`[runtime-bridge] \u6E05\u7406\u6B8B\u7559\u76EE\u5F55\u5931\u8D25\uFF08\u5C06\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09: ${y.message}`)}}}const p=["install","-g","aws-runtime-bridge@latest","--omit=optional"];x&&p.push("--force");const v=i("npm",p);return v.error?(t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25: ${v.error.message}`),{handled:!0,exitCode:1}):v.status!==0?(t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25\uFF0Cnpm \u9000\u51FA\u7801: ${v.status??"unknown"}`),{handled:!0,exitCode:v.status??1}):(r("[runtime-bridge] \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C awsb -v \u67E5\u770B\u5F53\u524D\u7248\u672C\u3002"),{handled:!0,exitCode:0})}function he(e,r,t){const s=(e.argv||process.argv.slice(2)).slice(1).some(u=>u==="--follow"||u==="-f"),n=e.platform||process.platform,a=e.runCommand||E,g=e.serviceUnitPath||R;if(n==="linux"){if(!h(g))return t("[runtime-bridge] awsb \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF08awsb service install\uFF09\uFF0C\u65E0\u65E5\u5FD7\u53EF\u67E5\u770B\u3002"),{handled:!0,exitCode:1};const u=["-u",o];s?u.push("-f"):u.push("-n","200","--no-pager");const m=a("journalctl",u);return m.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${m.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:m.status??0}}if(n==="win32"){const u=e.windowsServiceLogPath||k;if(!h(u))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const m=`Get-Content -Encoding UTF8 -Tail 200 "${u}"`+(s?" -Wait":""),x=a("powershell",["-NoProfile","-Command",m]);return x.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${x.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:x.status??0}}return t("[runtime-bridge] awsb log \u4EC5\u652F\u6301 Linux systemd \u4E0E Windows \u670D\u52A1\u73AF\u5883\u3002"),{handled:!0,exitCode:1}}async function pe(e={}){const r=e.argv||process.argv.slice(2),t=r[0],i=e.stdout||J,s=e.stderr||z;if(Q(t))return i(`aws-runtime-bridge ${K(e.packageRoot)}`),{handled:!0,exitCode:0};if(t==="update")return await be(e,i,s);if(t==="config"){const n=r[1];if(n==="example"||n==="minimal"||n==="--minimal"||n==="-m")return{handled:!0,exitCode:await(e.configureExample||G)()==="created"?0:1};const g=await(e.configure||B)();return{handled:!0,exitCode:g==="configured"||g==="created"?0:1}}return t==="service"?await me(r,e,i,s):t==="log"?he(e,i,s):{handled:!1,exitCode:0}}export{ee as createSystemdUnitContent,pe as handleCliCommand,K as readPackageVersion};
6
+