@0xmaxma/claude-gateway 2.0.6 → 2.0.7

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 (364) hide show
  1. package/README.md +14 -1
  2. package/dist/agent/builtin-commands.js +5 -5
  3. package/dist/agent/builtin-commands.js.map +1 -1
  4. package/dist/agent/command-help.d.ts +9 -0
  5. package/dist/agent/command-help.d.ts.map +1 -0
  6. package/dist/agent/command-help.js +50 -0
  7. package/dist/agent/command-help.js.map +1 -0
  8. package/dist/agent/dreaming/index.d.ts +6 -3
  9. package/dist/agent/dreaming/index.d.ts.map +1 -1
  10. package/dist/agent/dreaming/index.js +21 -1
  11. package/dist/agent/dreaming/index.js.map +1 -1
  12. package/dist/agent/knowledge/reflection.d.ts +7 -4
  13. package/dist/agent/knowledge/reflection.d.ts.map +1 -1
  14. package/dist/agent/knowledge/reflection.js +19 -1
  15. package/dist/agent/knowledge/reflection.js.map +1 -1
  16. package/dist/agent/runner.d.ts +37 -3
  17. package/dist/agent/runner.d.ts.map +1 -1
  18. package/dist/agent/runner.js +164 -47
  19. package/dist/agent/runner.js.map +1 -1
  20. package/dist/agent/session-confirmations.d.ts +12 -0
  21. package/dist/agent/session-confirmations.d.ts.map +1 -0
  22. package/dist/agent/session-confirmations.js +43 -0
  23. package/dist/agent/session-confirmations.js.map +1 -0
  24. package/dist/agent/session-status.d.ts +7 -0
  25. package/dist/agent/session-status.d.ts.map +1 -0
  26. package/dist/agent/session-status.js +16 -0
  27. package/dist/agent/session-status.js.map +1 -0
  28. package/dist/agent/skill-learning/index.d.ts +5 -1
  29. package/dist/agent/skill-learning/index.d.ts.map +1 -1
  30. package/dist/agent/skill-learning/index.js +23 -1
  31. package/dist/agent/skill-learning/index.js.map +1 -1
  32. package/dist/agent/skill-learning/notifier.d.ts +2 -1
  33. package/dist/agent/skill-learning/notifier.d.ts.map +1 -1
  34. package/dist/agent/skill-learning/notifier.js +1 -0
  35. package/dist/agent/skill-learning/notifier.js.map +1 -1
  36. package/dist/api/apps-router.d.ts.map +1 -1
  37. package/dist/api/apps-router.js +1 -3
  38. package/dist/api/apps-router.js.map +1 -1
  39. package/dist/api/cron-router.d.ts +1 -1
  40. package/dist/api/cron-router.d.ts.map +1 -1
  41. package/dist/api/cron-router.js +4 -4
  42. package/dist/api/cron-router.js.map +1 -1
  43. package/dist/api/dashboard-processes.d.ts +86 -0
  44. package/dist/api/dashboard-processes.d.ts.map +1 -0
  45. package/dist/api/dashboard-processes.js +155 -0
  46. package/dist/api/dashboard-processes.js.map +1 -0
  47. package/dist/api/dashboard-sessions.d.ts +15 -0
  48. package/dist/api/dashboard-sessions.d.ts.map +1 -0
  49. package/dist/api/dashboard-sessions.js +66 -0
  50. package/dist/api/dashboard-sessions.js.map +1 -0
  51. package/dist/api/gateway-router.d.ts +3 -4
  52. package/dist/api/gateway-router.d.ts.map +1 -1
  53. package/dist/api/gateway-router.js +77 -56
  54. package/dist/api/gateway-router.js.map +1 -1
  55. package/dist/api/oauth-connectors-router.d.ts +1 -1
  56. package/dist/api/oauth-connectors-router.d.ts.map +1 -1
  57. package/dist/api/oauth-connectors-router.js +11 -21
  58. package/dist/api/oauth-connectors-router.js.map +1 -1
  59. package/dist/api/router.d.ts +1 -1
  60. package/dist/api/router.d.ts.map +1 -1
  61. package/dist/api/router.js +3 -9
  62. package/dist/api/router.js.map +1 -1
  63. package/dist/api/share-router.d.ts +1 -1
  64. package/dist/api/share-router.d.ts.map +1 -1
  65. package/dist/api/share-router.js +1 -1
  66. package/dist/api/share-router.js.map +1 -1
  67. package/dist/api/slack-webhook-router.js +1 -1
  68. package/dist/api/slack-webhook-router.js.map +1 -1
  69. package/dist/api/voice-router.d.ts +1 -0
  70. package/dist/api/voice-router.d.ts.map +1 -1
  71. package/dist/api/voice-router.js +7 -0
  72. package/dist/api/voice-router.js.map +1 -1
  73. package/dist/apps/agent-container-migration.d.ts +2 -0
  74. package/dist/apps/agent-container-migration.d.ts.map +1 -1
  75. package/dist/apps/agent-container-migration.js +59 -2
  76. package/dist/apps/agent-container-migration.js.map +1 -1
  77. package/dist/apps/agent-manager.d.ts +4 -2
  78. package/dist/apps/agent-manager.d.ts.map +1 -1
  79. package/dist/apps/agent-manager.js +39 -3
  80. package/dist/apps/agent-manager.js.map +1 -1
  81. package/dist/apps/installer.d.ts +4 -3
  82. package/dist/apps/installer.d.ts.map +1 -1
  83. package/dist/apps/installer.js +8 -4
  84. package/dist/apps/installer.js.map +1 -1
  85. package/dist/build-provenance.json +8 -0
  86. package/dist/cli/args.js +1 -1
  87. package/dist/cli/args.js.map +1 -1
  88. package/dist/cli/commands/app.d.ts.map +1 -1
  89. package/dist/cli/commands/app.js +39 -3
  90. package/dist/cli/commands/app.js.map +1 -1
  91. package/dist/cli/commands/doctor.d.ts.map +1 -1
  92. package/dist/cli/commands/doctor.js +6 -2
  93. package/dist/cli/commands/doctor.js.map +1 -1
  94. package/dist/cli/commands/safemode.d.ts +2 -0
  95. package/dist/cli/commands/safemode.d.ts.map +1 -0
  96. package/dist/cli/commands/safemode.js +279 -0
  97. package/dist/cli/commands/safemode.js.map +1 -0
  98. package/dist/cli/dependencies.d.ts +2 -0
  99. package/dist/cli/dependencies.d.ts.map +1 -1
  100. package/dist/cli/dependencies.js +81 -0
  101. package/dist/cli/dependencies.js.map +1 -1
  102. package/dist/cli/index.d.ts.map +1 -1
  103. package/dist/cli/index.js +11 -1
  104. package/dist/cli/index.js.map +1 -1
  105. package/dist/cli/manager.d.ts.map +1 -1
  106. package/dist/cli/manager.js +4 -1
  107. package/dist/cli/manager.js.map +1 -1
  108. package/dist/config/agent-lifecycle.d.ts +26 -0
  109. package/dist/config/agent-lifecycle.d.ts.map +1 -0
  110. package/dist/config/agent-lifecycle.js +63 -0
  111. package/dist/config/agent-lifecycle.js.map +1 -0
  112. package/dist/config/loader.d.ts.map +1 -1
  113. package/dist/config/loader.js +11 -0
  114. package/dist/config/loader.js.map +1 -1
  115. package/dist/config/reload-policy.d.ts +9 -0
  116. package/dist/config/reload-policy.d.ts.map +1 -0
  117. package/dist/config/reload-policy.js +62 -0
  118. package/dist/config/reload-policy.js.map +1 -0
  119. package/dist/config/watcher.d.ts +3 -2
  120. package/dist/config/watcher.d.ts.map +1 -1
  121. package/dist/config/watcher.js +34 -51
  122. package/dist/config/watcher.js.map +1 -1
  123. package/dist/cron/tool-schemas.d.ts +296 -0
  124. package/dist/cron/tool-schemas.d.ts.map +1 -0
  125. package/dist/cron/tool-schemas.js +122 -0
  126. package/dist/cron/tool-schemas.js.map +1 -0
  127. package/dist/index.js +141 -158
  128. package/dist/index.js.map +1 -1
  129. package/dist/orchestration/agent-tool-schemas.js +4 -4
  130. package/dist/orchestration/agent-tool-schemas.js.map +1 -1
  131. package/dist/orchestration/background-work.d.ts +9 -0
  132. package/dist/orchestration/background-work.d.ts.map +1 -0
  133. package/dist/orchestration/background-work.js +49 -0
  134. package/dist/orchestration/background-work.js.map +1 -0
  135. package/dist/orchestration/bridge.d.ts +6 -15
  136. package/dist/orchestration/bridge.d.ts.map +1 -1
  137. package/dist/orchestration/bridge.js +67 -32
  138. package/dist/orchestration/bridge.js.map +1 -1
  139. package/dist/orchestration/capabilities.d.ts.map +1 -1
  140. package/dist/orchestration/capabilities.js +18 -10
  141. package/dist/orchestration/capabilities.js.map +1 -1
  142. package/dist/orchestration/capacity.d.ts +3 -2
  143. package/dist/orchestration/capacity.d.ts.map +1 -1
  144. package/dist/orchestration/capacity.js +7 -0
  145. package/dist/orchestration/capacity.js.map +1 -1
  146. package/dist/orchestration/channel-controls.d.ts.map +1 -1
  147. package/dist/orchestration/channel-controls.js +3 -2
  148. package/dist/orchestration/channel-controls.js.map +1 -1
  149. package/dist/orchestration/cli-skills.d.ts +5 -0
  150. package/dist/orchestration/cli-skills.d.ts.map +1 -1
  151. package/dist/orchestration/container-tool-schemas.d.ts +37 -0
  152. package/dist/orchestration/container-tool-schemas.d.ts.map +1 -0
  153. package/dist/orchestration/container-tool-schemas.js +27 -0
  154. package/dist/orchestration/container-tool-schemas.js.map +1 -0
  155. package/dist/orchestration/container.d.ts.map +1 -1
  156. package/dist/orchestration/container.js +7 -0
  157. package/dist/orchestration/container.js.map +1 -1
  158. package/dist/orchestration/dashboard-reader-worker.js +7 -7
  159. package/dist/orchestration/dashboard-reader-worker.js.map +1 -1
  160. package/dist/orchestration/decision-context.js +1 -1
  161. package/dist/orchestration/decision-context.js.map +1 -1
  162. package/dist/orchestration/gateway-tasks/controller.d.ts +29 -0
  163. package/dist/orchestration/gateway-tasks/controller.d.ts.map +1 -0
  164. package/dist/orchestration/gateway-tasks/controller.js +139 -0
  165. package/dist/orchestration/gateway-tasks/controller.js.map +1 -0
  166. package/dist/orchestration/gateway-tasks/safemode.d.ts +19 -0
  167. package/dist/orchestration/gateway-tasks/safemode.d.ts.map +1 -0
  168. package/dist/orchestration/gateway-tasks/safemode.js +128 -0
  169. package/dist/orchestration/gateway-tasks/safemode.js.map +1 -0
  170. package/dist/orchestration/process-turn.d.ts +11 -2
  171. package/dist/orchestration/process-turn.d.ts.map +1 -1
  172. package/dist/orchestration/process-turn.js +47 -7
  173. package/dist/orchestration/process-turn.js.map +1 -1
  174. package/dist/orchestration/recovery.d.ts.map +1 -1
  175. package/dist/orchestration/recovery.js +4 -2
  176. package/dist/orchestration/recovery.js.map +1 -1
  177. package/dist/orchestration/runtime.d.ts +10 -0
  178. package/dist/orchestration/runtime.d.ts.map +1 -1
  179. package/dist/orchestration/runtime.js +31 -4
  180. package/dist/orchestration/runtime.js.map +1 -1
  181. package/dist/orchestration/skills.d.ts +2 -0
  182. package/dist/orchestration/skills.d.ts.map +1 -1
  183. package/dist/orchestration/skills.js +4 -3
  184. package/dist/orchestration/skills.js.map +1 -1
  185. package/dist/orchestration/task-controls.d.ts +12 -0
  186. package/dist/orchestration/task-controls.d.ts.map +1 -1
  187. package/dist/orchestration/task-controls.js +3 -1
  188. package/dist/orchestration/task-controls.js.map +1 -1
  189. package/dist/orchestration/tasks/driver.d.ts.map +1 -1
  190. package/dist/orchestration/tasks/driver.js +99 -12
  191. package/dist/orchestration/tasks/driver.js.map +1 -1
  192. package/dist/orchestration/tasks/pool.d.ts +2 -0
  193. package/dist/orchestration/tasks/pool.d.ts.map +1 -1
  194. package/dist/orchestration/tasks/pool.js +4 -0
  195. package/dist/orchestration/tasks/pool.js.map +1 -1
  196. package/dist/orchestration/tasks/scheduler.d.ts.map +1 -1
  197. package/dist/orchestration/tasks/scheduler.js +4 -0
  198. package/dist/orchestration/tasks/scheduler.js.map +1 -1
  199. package/dist/orchestration/tasks/service.d.ts +4 -0
  200. package/dist/orchestration/tasks/service.d.ts.map +1 -1
  201. package/dist/orchestration/tasks/service.js +38 -8
  202. package/dist/orchestration/tasks/service.js.map +1 -1
  203. package/dist/orchestration/token-ledger.d.ts +1 -0
  204. package/dist/orchestration/token-ledger.d.ts.map +1 -1
  205. package/dist/orchestration/token-ledger.js +6 -2
  206. package/dist/orchestration/token-ledger.js.map +1 -1
  207. package/dist/orchestration/token-usage.d.ts +3 -0
  208. package/dist/orchestration/token-usage.d.ts.map +1 -1
  209. package/dist/orchestration/token-usage.js +12 -3
  210. package/dist/orchestration/token-usage.js.map +1 -1
  211. package/dist/orchestration/types.d.ts +19 -1
  212. package/dist/orchestration/types.d.ts.map +1 -1
  213. package/dist/orchestration/types.js.map +1 -1
  214. package/dist/orchestration/worker-crons.d.ts +5 -0
  215. package/dist/orchestration/worker-crons.d.ts.map +1 -0
  216. package/dist/orchestration/worker-crons.js +84 -0
  217. package/dist/orchestration/worker-crons.js.map +1 -0
  218. package/dist/orchestration/worker-harness.d.ts +15 -0
  219. package/dist/orchestration/worker-harness.d.ts.map +1 -0
  220. package/dist/orchestration/worker-harness.js +72 -0
  221. package/dist/orchestration/worker-harness.js.map +1 -0
  222. package/dist/safemode/config.d.ts +7 -0
  223. package/dist/safemode/config.d.ts.map +1 -0
  224. package/dist/safemode/config.js +67 -0
  225. package/dist/safemode/config.js.map +1 -0
  226. package/dist/safemode/context.d.ts +7 -0
  227. package/dist/safemode/context.d.ts.map +1 -0
  228. package/dist/safemode/context.js +397 -0
  229. package/dist/safemode/context.js.map +1 -0
  230. package/dist/safemode/external-owners.d.ts +19 -0
  231. package/dist/safemode/external-owners.d.ts.map +1 -0
  232. package/dist/safemode/external-owners.js +229 -0
  233. package/dist/safemode/external-owners.js.map +1 -0
  234. package/dist/safemode/native.d.ts +38 -0
  235. package/dist/safemode/native.d.ts.map +1 -0
  236. package/dist/safemode/native.js +220 -0
  237. package/dist/safemode/native.js.map +1 -0
  238. package/dist/safemode/params.d.ts +10 -0
  239. package/dist/safemode/params.d.ts.map +1 -0
  240. package/dist/safemode/params.js +86 -0
  241. package/dist/safemode/params.js.map +1 -0
  242. package/dist/safemode/provenance.d.ts +45 -0
  243. package/dist/safemode/provenance.d.ts.map +1 -0
  244. package/dist/safemode/provenance.js +153 -0
  245. package/dist/safemode/provenance.js.map +1 -0
  246. package/dist/safemode/runner.d.ts +17 -0
  247. package/dist/safemode/runner.d.ts.map +1 -0
  248. package/dist/safemode/runner.js +398 -0
  249. package/dist/safemode/runner.js.map +1 -0
  250. package/dist/safemode/store.d.ts +56 -0
  251. package/dist/safemode/store.d.ts.map +1 -0
  252. package/dist/safemode/store.js +451 -0
  253. package/dist/safemode/store.js.map +1 -0
  254. package/dist/session/codex-auth.d.ts +37 -0
  255. package/dist/session/codex-auth.d.ts.map +1 -0
  256. package/dist/session/codex-auth.js +266 -0
  257. package/dist/session/codex-auth.js.map +1 -0
  258. package/dist/session/codex-container-runtime.d.ts +15 -0
  259. package/dist/session/codex-container-runtime.d.ts.map +1 -0
  260. package/dist/session/codex-container-runtime.js +85 -0
  261. package/dist/session/codex-container-runtime.js.map +1 -0
  262. package/dist/session/codex-context-defaults.json +5 -0
  263. package/dist/session/codex-context.d.ts +13 -0
  264. package/dist/session/codex-context.d.ts.map +1 -0
  265. package/dist/session/codex-context.js +27 -0
  266. package/dist/session/codex-context.js.map +1 -0
  267. package/dist/session/codex-extension-discovery.d.ts +21 -0
  268. package/dist/session/codex-extension-discovery.d.ts.map +1 -0
  269. package/dist/session/codex-extension-discovery.js +132 -0
  270. package/dist/session/codex-extension-discovery.js.map +1 -0
  271. package/dist/session/codex-native-mcp-client.d.ts +37 -0
  272. package/dist/session/codex-native-mcp-client.d.ts.map +1 -0
  273. package/dist/session/codex-native-mcp-client.js +164 -0
  274. package/dist/session/codex-native-mcp-client.js.map +1 -0
  275. package/dist/session/codex-policy.d.ts +6 -0
  276. package/dist/session/codex-policy.d.ts.map +1 -0
  277. package/dist/session/codex-policy.js +17 -0
  278. package/dist/session/codex-policy.js.map +1 -0
  279. package/dist/session/codex-process.d.ts +114 -0
  280. package/dist/session/codex-process.d.ts.map +1 -0
  281. package/dist/session/codex-process.js +759 -0
  282. package/dist/session/codex-process.js.map +1 -0
  283. package/dist/session/codex-runtime.d.ts +20 -0
  284. package/dist/session/codex-runtime.d.ts.map +1 -0
  285. package/dist/session/codex-runtime.js +182 -0
  286. package/dist/session/codex-runtime.js.map +1 -0
  287. package/dist/session/codex-tool-capture.d.ts +35 -0
  288. package/dist/session/codex-tool-capture.d.ts.map +1 -0
  289. package/dist/session/codex-tool-capture.js +178 -0
  290. package/dist/session/codex-tool-capture.js.map +1 -0
  291. package/dist/session/container-connectors.d.ts +10 -0
  292. package/dist/session/container-connectors.d.ts.map +1 -0
  293. package/dist/session/container-connectors.js +41 -0
  294. package/dist/session/container-connectors.js.map +1 -0
  295. package/dist/session/container-extensions.d.ts +4 -0
  296. package/dist/session/container-extensions.d.ts.map +1 -0
  297. package/dist/session/container-extensions.js +45 -0
  298. package/dist/session/container-extensions.js.map +1 -0
  299. package/dist/session/managed-connectors.d.ts +16 -0
  300. package/dist/session/managed-connectors.d.ts.map +1 -0
  301. package/dist/session/managed-connectors.js +25 -0
  302. package/dist/session/managed-connectors.js.map +1 -0
  303. package/dist/session/process-diagnostics.d.ts +14 -0
  304. package/dist/session/process-diagnostics.d.ts.map +1 -0
  305. package/dist/session/process-diagnostics.js +39 -0
  306. package/dist/session/process-diagnostics.js.map +1 -0
  307. package/dist/session/process.d.ts +4 -0
  308. package/dist/session/process.d.ts.map +1 -1
  309. package/dist/session/process.js +21 -16
  310. package/dist/session/process.js.map +1 -1
  311. package/dist/session/request-tool-capture.d.ts +1 -1
  312. package/dist/session/request-tool-capture.d.ts.map +1 -1
  313. package/dist/session/runtime-profile.d.ts +8 -0
  314. package/dist/session/runtime-profile.d.ts.map +1 -1
  315. package/dist/session/runtime-profile.js +3 -2
  316. package/dist/session/runtime-profile.js.map +1 -1
  317. package/dist/session/worker-environment.d.ts +5 -0
  318. package/dist/session/worker-environment.d.ts.map +1 -0
  319. package/dist/session/worker-environment.js +27 -0
  320. package/dist/session/worker-environment.js.map +1 -0
  321. package/dist/session/worker-extensions.d.ts +20 -0
  322. package/dist/session/worker-extensions.d.ts.map +1 -0
  323. package/dist/session/worker-extensions.js +322 -0
  324. package/dist/session/worker-extensions.js.map +1 -0
  325. package/dist/skills/loader.d.ts +2 -0
  326. package/dist/skills/loader.d.ts.map +1 -1
  327. package/dist/skills/loader.js.map +1 -1
  328. package/dist/types.d.ts +30 -0
  329. package/dist/types.d.ts.map +1 -1
  330. package/dist/ui/codex-context.d.ts +4 -0
  331. package/dist/ui/codex-context.d.ts.map +1 -0
  332. package/dist/ui/codex-context.js +15 -0
  333. package/dist/ui/codex-context.js.map +1 -0
  334. package/dist/ui/dashboard-client.d.ts.map +1 -1
  335. package/dist/ui/dashboard-client.js +14 -11
  336. package/dist/ui/dashboard-client.js.map +1 -1
  337. package/dist/ui/dashboard-presentation.d.ts +1 -1
  338. package/dist/ui/dashboard-presentation.d.ts.map +1 -1
  339. package/dist/ui/dashboard-presentation.js +2 -2
  340. package/dist/ui/dashboard-presentation.js.map +1 -1
  341. package/dist/ui/token-report.d.ts +3 -0
  342. package/dist/ui/token-report.d.ts.map +1 -1
  343. package/dist/ui/token-report.js +22 -10
  344. package/dist/ui/token-report.js.map +1 -1
  345. package/dist/ui/web-ui.d.ts.map +1 -1
  346. package/dist/ui/web-ui.js +53 -132
  347. package/dist/ui/web-ui.js.map +1 -1
  348. package/mcp/capability-catalog.ts +2 -0
  349. package/mcp/extension-catalog.ts +18 -0
  350. package/mcp/lazy-connector.ts +4 -2
  351. package/mcp/lazy-tools.test.ts +29 -0
  352. package/mcp/modules.ts +1 -0
  353. package/mcp/server.ts +2 -2
  354. package/mcp/tools/cron/module.ts +8 -114
  355. package/mcp/tools/discord/commands.ts +4 -1
  356. package/mcp/tools/safemode/module.test.ts +29 -0
  357. package/mcp/tools/telegram/receiver-server.ts +2 -22
  358. package/mcp/tools/telegram/task-detail.ts +2 -1
  359. package/package.json +3 -2
  360. package/scripts/orchestration/audit-codex-context.cjs +83 -0
  361. package/scripts/orchestration/benchmark-worker-harnesses.cjs +112 -0
  362. package/scripts/orchestration/smoke-codex-extensions.ts +29 -0
  363. package/scripts/orchestration/smoke-codex-worker.cjs +166 -0
  364. package/scripts/orchestration/smoke-safemode-codex.cjs +66 -0
@@ -0,0 +1,86 @@
1
+ export interface ProcessOwner {
2
+ pid: number;
3
+ group: 'gateway' | 'agent' | 'worker' | 'safemode';
4
+ agentId?: string;
5
+ sessionId?: string;
6
+ model?: string;
7
+ taskId?: string;
8
+ title?: string;
9
+ harness?: string;
10
+ container?: string;
11
+ name?: string;
12
+ mode?: string;
13
+ startTicks?: string;
14
+ }
15
+ interface ProcessRow {
16
+ pid: number;
17
+ ppid: number;
18
+ stat: string;
19
+ cpu: number;
20
+ rssKb: number;
21
+ command: string;
22
+ args: string;
23
+ }
24
+ export interface ProcessContainer {
25
+ name: string;
26
+ id?: string;
27
+ agentIds: string[];
28
+ state: string;
29
+ pids: number[];
30
+ error?: string;
31
+ }
32
+ export declare function parseProcesses(stdout: string): ProcessRow[];
33
+ /** One host PID is counted once, even when docker top also reports it. Never return argv. */
34
+ export declare function classifyProcesses(rows: ProcessRow[], owners: ProcessOwner[], containers: ProcessContainer[]): {
35
+ pid: number;
36
+ ppid: number;
37
+ stat: string;
38
+ cpu: number;
39
+ rssKb: number;
40
+ command: string;
41
+ group: string;
42
+ role: "gateway" | "safemode" | "agent" | "worker" | undefined;
43
+ rootPid: number | undefined;
44
+ container: string | undefined;
45
+ receiver: string | undefined;
46
+ agentId?: string;
47
+ sessionId?: string;
48
+ model?: string;
49
+ taskId?: string;
50
+ title?: string;
51
+ harness?: string;
52
+ name?: string;
53
+ mode?: string;
54
+ startTicks?: string;
55
+ }[];
56
+ export declare function collectDashboardProcesses(owners: ProcessOwner[], apps: Array<{
57
+ name: string;
58
+ agentIds: string[];
59
+ }>): Promise<{
60
+ processes: {
61
+ pid: number;
62
+ ppid: number;
63
+ stat: string;
64
+ cpu: number;
65
+ rssKb: number;
66
+ command: string;
67
+ group: string;
68
+ role: "gateway" | "safemode" | "agent" | "worker" | undefined;
69
+ rootPid: number | undefined;
70
+ container: string | undefined;
71
+ receiver: string | undefined;
72
+ agentId?: string;
73
+ sessionId?: string;
74
+ model?: string;
75
+ taskId?: string;
76
+ title?: string;
77
+ harness?: string;
78
+ name?: string;
79
+ mode?: string;
80
+ startTicks?: string;
81
+ }[];
82
+ containers: ProcessContainer[];
83
+ warnings: string[];
84
+ }>;
85
+ export {};
86
+ //# sourceMappingURL=dashboard-processes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-processes.d.ts","sourceRoot":"","sources":["../../src/api/dashboard-processes.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,UAAU,UAAU;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3H,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAIlI,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAK3D;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;;;;;;;;;;;;cAjBhG,MAAM;gBAAc,MAAM;YAAU,MAAM;aAAW,MAAM;YAAU,MAAM;cAC3E,MAAM;WAA6B,MAAM;WAAS,MAAM;iBACrD,MAAM;IAgDpB;AAsBD,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,EAAE,CAAA;CAAC,CAAC;;;;;;;;;;;;;kBAxExG,MAAM;oBAAc,MAAM;gBAAU,MAAM;iBAAW,MAAM;gBAAU,MAAM;kBAC3E,MAAM;eAA6B,MAAM;eAAS,MAAM;qBACrD,MAAM;;;;GA2GpB"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseProcesses = parseProcesses;
4
+ exports.classifyProcesses = classifyProcesses;
5
+ exports.collectDashboardProcesses = collectDashboardProcesses;
6
+ const child_process_1 = require("child_process");
7
+ const promises_1 = require("fs/promises");
8
+ const os_1 = require("os");
9
+ const path_1 = require("path");
10
+ const codex_container_runtime_1 = require("../session/codex-container-runtime");
11
+ const execute = (file, args) => new Promise((resolve, reject) => {
12
+ (0, child_process_1.execFile)(file, args, { timeout: 4000, maxBuffer: 4 * 1024 * 1024, encoding: 'utf8', env: { ...process.env, LC_ALL: 'C' } }, (error, stdout) => error ? reject(error) : resolve(stdout));
13
+ });
14
+ function parseProcesses(stdout) {
15
+ return stdout.split('\n').flatMap(line => {
16
+ const m = line.trim().match(/^(\d+)\s+(\d+)\s+(\S+)\s+([\d.]+)\s+(\d+)\s+(\S+)\s*(.*)$/);
17
+ return m ? [{ pid: +m[1], ppid: +m[2], stat: m[3], cpu: +m[4], rssKb: +m[5], command: m[6], args: m[7] }] : [];
18
+ });
19
+ }
20
+ /** One host PID is counted once, even when docker top also reports it. Never return argv. */
21
+ function classifyProcesses(rows, owners, containers) {
22
+ const byPid = new Map(rows.map(row => [row.pid, row]));
23
+ const roots = new Map(owners.filter(owner => byPid.has(owner.pid)).map(owner => [owner.pid, owner]));
24
+ const containerPids = new Map(containers.flatMap(c => c.pids.map(pid => [pid, c.name])));
25
+ // docker exec's host client is not the parent of the container process.
26
+ // Correlate only with the private invocation marker from a known live owner.
27
+ for (const owner of owners.filter(o => o.container)) {
28
+ const args = byPid.get(owner.pid)?.args ?? '';
29
+ const marker = args.match(/\/tmp\/gateway-orch-[a-f0-9-]{36}\b/)?.[0];
30
+ const session = args.match(/--session-id\s+([a-f0-9-]{36})\b/)?.[1];
31
+ const matches = rows.filter(row => containerPids.get(row.pid) === owner.container &&
32
+ (marker ? row.args.includes(marker) : session ? row.args.includes('--session-id ' + session) : false));
33
+ const matchingPids = new Set(matches.map(p => p.pid));
34
+ for (const row of matches.filter(p => !matchingPids.has(p.ppid)))
35
+ roots.set(row.pid, { ...owner, pid: row.pid });
36
+ }
37
+ return [...byPid.values()].flatMap(row => {
38
+ let cursor = row, owner;
39
+ const seen = new Set();
40
+ while (cursor && !seen.has(cursor.pid)) {
41
+ seen.add(cursor.pid);
42
+ owner = roots.get(cursor.pid);
43
+ if (owner)
44
+ break;
45
+ cursor = byPid.get(cursor.ppid);
46
+ }
47
+ const container = containerPids.get(row.pid);
48
+ const receiver = /(?:telegram|discord).*receiver/.exec(row.args)?.[0]?.split(/[^a-z]/)[0];
49
+ // Unmanaged personal CLIs are not gateway orphans. Require gateway-specific evidence.
50
+ const orphan = !owner && !container && /(?:\.claude-gateway\/.*(?:mcp|receiver)|--mcp-config\s+\S*claude-gateway|claude-gateway[^\s]*\/mcp\/server)/.test(row.args);
51
+ if (!owner && !container && !orphan)
52
+ return [];
53
+ return [{ ...owner, pid: row.pid, ppid: row.ppid, stat: row.stat, cpu: row.cpu, rssKb: row.rssKb, command: row.command,
54
+ group: container ? 'container' : receiver && owner?.group === 'gateway' ? 'receiver' : owner?.group ?? 'orphan',
55
+ role: owner?.group, rootPid: owner?.pid, container: container ?? owner?.container, receiver,
56
+ }];
57
+ });
58
+ }
59
+ /** Read private safemode ownership without constructing a store (which migrates metadata). */
60
+ async function safemodeOwners(rows) {
61
+ const root = (0, path_1.join)((0, os_1.homedir)(), '.claude-gateway', 'safemode');
62
+ let entries;
63
+ try {
64
+ entries = await (0, promises_1.readdir)(root);
65
+ }
66
+ catch (error) {
67
+ if (error.code === 'ENOENT')
68
+ return [];
69
+ throw error;
70
+ }
71
+ const result = [];
72
+ for (const id of entries.filter(name => /^(starting-)?[a-f0-9-]{36}$/.test(name))) {
73
+ try {
74
+ const owner = JSON.parse(await (0, promises_1.readFile)((0, path_1.join)(root, id, 'owner.json'), 'utf8'));
75
+ const process = rows.find(row => row.pid === owner.pid);
76
+ if (!process || !/(?:entry|index)\.js\s+safemode\b/.test(process.args))
77
+ continue;
78
+ const session = JSON.parse(await (0, promises_1.readFile)((0, path_1.join)(root, id, 'session.json'), 'utf8'));
79
+ let name = session.name;
80
+ try {
81
+ name = JSON.parse(await (0, promises_1.readFile)((0, path_1.join)(root, id, 'name.json'), 'utf8')).name;
82
+ }
83
+ catch { /* Optional alias. */ }
84
+ result.push({ pid: owner.pid, group: 'safemode', sessionId: session.nativeSessionId, name, harness: session.cli, mode: owner.mode, model: session.model });
85
+ }
86
+ catch (error) {
87
+ if (error.code !== 'ENOENT')
88
+ throw error;
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ async function collectDashboardProcesses(owners, apps) {
94
+ const rows = parseProcesses(await execute('ps', ['-eo', 'pid,ppid,stat,pcpu,rss,comm,args', '--no-headers']));
95
+ const warnings = [];
96
+ owners = (await Promise.all(owners.map(async (owner) => {
97
+ if (!owner.startTicks)
98
+ return owner;
99
+ try {
100
+ const stat = await (0, promises_1.readFile)(`/proc/${owner.pid}/stat`, 'utf8');
101
+ return stat.slice(stat.lastIndexOf(')') + 2).split(' ')[19] === owner.startTicks ? owner : undefined;
102
+ }
103
+ catch {
104
+ return undefined;
105
+ }
106
+ }))).filter((owner) => Boolean(owner));
107
+ try {
108
+ owners = [...owners, ...await safemodeOwners(rows)];
109
+ }
110
+ catch {
111
+ warnings.push('Safemode ownership could not be read.');
112
+ }
113
+ const containers = [];
114
+ let localDocker = true;
115
+ if (apps.length)
116
+ try {
117
+ await (0, codex_container_runtime_1.assertLocalCodexDocker)();
118
+ }
119
+ catch {
120
+ localDocker = false;
121
+ }
122
+ // Bound Docker concurrency; collect only containers declared by configured agents.
123
+ for (let i = 0; i < apps.length; i += 2) {
124
+ containers.push(...await Promise.all(apps.slice(i, i + 2).map(async (app) => {
125
+ try {
126
+ if (!localDocker)
127
+ throw new Error('Local Docker process namespace unavailable');
128
+ const state = (await execute('docker', ['inspect', '--format', '{{json .Id}}|{{json .State.Status}}', app.name])).trim().split('|').map(part => JSON.parse(part));
129
+ const running = state[1] === 'running';
130
+ const listing = running ? parseProcesses(await execute('docker', ['top', app.name, '-eo', 'pid,ppid,stat,pcpu,rss,comm,args'])) : [];
131
+ for (const row of listing)
132
+ if (!rows.some(p => p.pid === row.pid))
133
+ rows.push(row);
134
+ return { ...app, id: state[0], state: state[1], pids: listing.map(row => row.pid) };
135
+ }
136
+ catch {
137
+ return { ...app, state: 'unknown', pids: [], error: 'Container inspection unavailable' };
138
+ }
139
+ })));
140
+ }
141
+ const processes = classifyProcesses(rows, owners, containers);
142
+ const containerProcesses = processes.filter(p => p.group === 'container');
143
+ for (let i = 0; i < containerProcesses.length; i += 16)
144
+ await Promise.all(containerProcesses.slice(i, i + 16).map(async (p) => {
145
+ try {
146
+ const status = await (0, promises_1.readFile)(`/proc/${p.pid}/status`, 'utf8');
147
+ const ids = status.match(/^NSpid:\s+([\d\s]+)$/m)?.[1].trim().split(/\s+/);
148
+ if (ids && ids.length > 1)
149
+ Object.assign(p, { containerPid: Number(ids[ids.length - 1]) });
150
+ }
151
+ catch { /* Never substitute a host PID for an unknown container PID. */ }
152
+ }));
153
+ return { processes, containers, warnings };
154
+ }
155
+ //# sourceMappingURL=dashboard-processes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-processes.js","sourceRoot":"","sources":["../../src/api/dashboard-processes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ApiKey } from '../types';
2
+ /** Opaque cookies; only token/key digests are stored. Opening is lazy so a
3
+ * read-only install can still start and accept admin API keys. */
4
+ export declare class DashboardSessions {
5
+ private readonly filename;
6
+ private db?;
7
+ constructor(filename?: string);
8
+ private database;
9
+ issue(key: string, ttlMs: number): string;
10
+ valid(token: string, keys: ApiKey[]): boolean;
11
+ revoke(token: string): void;
12
+ prune(): void;
13
+ close(): void;
14
+ }
15
+ //# sourceMappingURL=dashboard-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-sessions.d.ts","sourceRoot":"","sources":["../../src/api/dashboard-sessions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC;kEACkE;AAClE,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,OAAO,CAAC,EAAE,CAAC,CAAe;gBACG,QAAQ,GAAE,MAAmB;IAE1D,OAAO,CAAC,QAAQ;IAmBhB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAQzC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAY7C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAG3B,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DashboardSessions = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const node_sqlite_1 = require("node:sqlite");
8
+ const digest = (value) => (0, crypto_1.createHash)('sha256').update(value).digest('hex');
9
+ /** Opaque cookies; only token/key digests are stored. Opening is lazy so a
10
+ * read-only install can still start and accept admin API keys. */
11
+ class DashboardSessions {
12
+ constructor(filename = ':memory:') {
13
+ this.filename = filename;
14
+ }
15
+ database() {
16
+ if (this.db)
17
+ return this.db;
18
+ if (this.filename !== ':memory:') {
19
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(this.filename), { recursive: true, mode: 0o700 });
20
+ (0, fs_1.closeSync)((0, fs_1.openSync)(this.filename, 'a', 0o600));
21
+ (0, fs_1.chmodSync)(this.filename, 0o600);
22
+ }
23
+ const db = new node_sqlite_1.DatabaseSync(this.filename);
24
+ try {
25
+ db.exec(`PRAGMA busy_timeout=1000;
26
+ CREATE TABLE IF NOT EXISTS sessions (
27
+ token_hash TEXT PRIMARY KEY, key_hash TEXT NOT NULL, expires_at INTEGER NOT NULL
28
+ );
29
+ CREATE INDEX IF NOT EXISTS sessions_expiry ON sessions(expires_at);`);
30
+ this.db = db;
31
+ return db;
32
+ }
33
+ catch (error) {
34
+ db.close();
35
+ throw error;
36
+ }
37
+ }
38
+ issue(key, ttlMs) {
39
+ this.prune();
40
+ const token = (0, crypto_1.randomBytes)(32).toString('hex');
41
+ this.database().prepare('INSERT INTO sessions VALUES (?, ?, ?)')
42
+ .run(digest(token), digest('dashboard-admin-key:' + key), Date.now() + ttlMs);
43
+ return token;
44
+ }
45
+ valid(token, keys) {
46
+ if (!/^[a-f0-9]{64}$/.test(token))
47
+ return false;
48
+ const row = this.database().prepare('SELECT key_hash, expires_at FROM sessions WHERE token_hash=?')
49
+ .get(digest(token));
50
+ if (!row)
51
+ return false;
52
+ if (row.expires_at <= Date.now() || !keys.some(key => key.admin && digest('dashboard-admin-key:' + key.key) === row.key_hash)) {
53
+ this.revoke(token);
54
+ return false;
55
+ }
56
+ return true;
57
+ }
58
+ revoke(token) {
59
+ if (/^[a-f0-9]{64}$/.test(token))
60
+ this.database().prepare('DELETE FROM sessions WHERE token_hash=?').run(digest(token));
61
+ }
62
+ prune() { this.database().prepare('DELETE FROM sessions WHERE expires_at<=?').run(Date.now()); }
63
+ close() { this.db?.close(); this.db = undefined; }
64
+ }
65
+ exports.DashboardSessions = DashboardSessions;
66
+ //# sourceMappingURL=dashboard-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-sessions.js","sourceRoot":"","sources":["../../src/api/dashboard-sessions.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ export declare class GatewayRouter {
28
28
  private voiceApi?;
29
29
  /** Cached /processes result (3s TTL, avoids blocking execSync on every poll). */
30
30
  private processesCache;
31
+ private processesPending?;
31
32
  private static readonly PROCESSES_CACHE_TTL_MS;
32
33
  /** Core count is constant for the process lifetime — read once instead of
33
34
  * calling os.cpus() (a syscall) on every /processes poll. Used to normalize
@@ -36,10 +37,8 @@ export declare class GatewayRouter {
36
37
  /** Short-lived WS auth tickets: ticket → { agentId, sessionId, expiresAt }. One-time use. */
37
38
  private readonly ptyStreamTickets;
38
39
  private ticketPruner;
39
- /** Dashboard session tokens (DASH_SESSION_TTL_MS). Issued at POST /dashboard/login
40
- * and carried by the HttpOnly `dash_session` cookie — never embedded in the HTML,
41
- * so no token is exposed to view-source/XSS. token → expiresAt. */
42
- private readonly dashboardTokens;
40
+ /** Persistent, hashed login sessions; embedded routers without a config path use memory. */
41
+ private readonly dashboardSessions;
43
42
  /** Failed-login throttle for /dashboard/login, keyed by client IP.
44
43
  * ip → { count, resetAt }. Blocks brute-forcing configured API keys. */
45
44
  private readonly loginAttempts;
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-router.d.ts","sourceRoot":"","sources":["../../src/api/gateway-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-router.d.ts","sourceRoot":"","sources":["../../src/api/gateway-router.ts"],"names":[],"mappings":"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"}