@0xmaxma/claude-gateway 2.0.5 → 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 (435) 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 +51 -3
  17. package/dist/agent/runner.d.ts.map +1 -1
  18. package/dist/agent/runner.js +228 -107
  19. package/dist/agent/runner.js.map +1 -1
  20. package/dist/agent/session-compaction-scheduler.d.ts +22 -0
  21. package/dist/agent/session-compaction-scheduler.d.ts.map +1 -0
  22. package/dist/agent/session-compaction-scheduler.js +40 -0
  23. package/dist/agent/session-compaction-scheduler.js.map +1 -0
  24. package/dist/agent/session-confirmations.d.ts +12 -0
  25. package/dist/agent/session-confirmations.d.ts.map +1 -0
  26. package/dist/agent/session-confirmations.js +43 -0
  27. package/dist/agent/session-confirmations.js.map +1 -0
  28. package/dist/agent/session-status.d.ts +7 -0
  29. package/dist/agent/session-status.d.ts.map +1 -0
  30. package/dist/agent/session-status.js +16 -0
  31. package/dist/agent/session-status.js.map +1 -0
  32. package/dist/agent/skill-learning/index.d.ts +5 -1
  33. package/dist/agent/skill-learning/index.d.ts.map +1 -1
  34. package/dist/agent/skill-learning/index.js +23 -1
  35. package/dist/agent/skill-learning/index.js.map +1 -1
  36. package/dist/agent/skill-learning/notifier.d.ts +2 -1
  37. package/dist/agent/skill-learning/notifier.d.ts.map +1 -1
  38. package/dist/agent/skill-learning/notifier.js +1 -0
  39. package/dist/agent/skill-learning/notifier.js.map +1 -1
  40. package/dist/api/apps-router.d.ts.map +1 -1
  41. package/dist/api/apps-router.js +1 -3
  42. package/dist/api/apps-router.js.map +1 -1
  43. package/dist/api/cron-router.d.ts +1 -1
  44. package/dist/api/cron-router.d.ts.map +1 -1
  45. package/dist/api/cron-router.js +4 -4
  46. package/dist/api/cron-router.js.map +1 -1
  47. package/dist/api/dashboard-processes.d.ts +86 -0
  48. package/dist/api/dashboard-processes.d.ts.map +1 -0
  49. package/dist/api/dashboard-processes.js +155 -0
  50. package/dist/api/dashboard-processes.js.map +1 -0
  51. package/dist/api/dashboard-sessions.d.ts +15 -0
  52. package/dist/api/dashboard-sessions.d.ts.map +1 -0
  53. package/dist/api/dashboard-sessions.js +66 -0
  54. package/dist/api/dashboard-sessions.js.map +1 -0
  55. package/dist/api/gateway-router.d.ts +3 -4
  56. package/dist/api/gateway-router.d.ts.map +1 -1
  57. package/dist/api/gateway-router.js +177 -66
  58. package/dist/api/gateway-router.js.map +1 -1
  59. package/dist/api/memory-activity.d.ts +18 -0
  60. package/dist/api/memory-activity.d.ts.map +1 -0
  61. package/dist/api/memory-activity.js +97 -0
  62. package/dist/api/memory-activity.js.map +1 -0
  63. package/dist/api/oauth-connectors-router.d.ts +1 -1
  64. package/dist/api/oauth-connectors-router.d.ts.map +1 -1
  65. package/dist/api/oauth-connectors-router.js +11 -21
  66. package/dist/api/oauth-connectors-router.js.map +1 -1
  67. package/dist/api/router.d.ts +1 -1
  68. package/dist/api/router.d.ts.map +1 -1
  69. package/dist/api/router.js +3 -9
  70. package/dist/api/router.js.map +1 -1
  71. package/dist/api/share-router.d.ts +1 -1
  72. package/dist/api/share-router.d.ts.map +1 -1
  73. package/dist/api/share-router.js +1 -1
  74. package/dist/api/share-router.js.map +1 -1
  75. package/dist/api/slack-webhook-router.js +1 -1
  76. package/dist/api/slack-webhook-router.js.map +1 -1
  77. package/dist/api/voice-router.d.ts +1 -0
  78. package/dist/api/voice-router.d.ts.map +1 -1
  79. package/dist/api/voice-router.js +7 -0
  80. package/dist/api/voice-router.js.map +1 -1
  81. package/dist/apps/agent-container-migration.d.ts +2 -0
  82. package/dist/apps/agent-container-migration.d.ts.map +1 -1
  83. package/dist/apps/agent-container-migration.js +59 -2
  84. package/dist/apps/agent-container-migration.js.map +1 -1
  85. package/dist/apps/agent-manager.d.ts +4 -2
  86. package/dist/apps/agent-manager.d.ts.map +1 -1
  87. package/dist/apps/agent-manager.js +39 -3
  88. package/dist/apps/agent-manager.js.map +1 -1
  89. package/dist/apps/installer.d.ts +4 -3
  90. package/dist/apps/installer.d.ts.map +1 -1
  91. package/dist/apps/installer.js +8 -4
  92. package/dist/apps/installer.js.map +1 -1
  93. package/dist/build-provenance.json +8 -0
  94. package/dist/cli/args.js +1 -1
  95. package/dist/cli/args.js.map +1 -1
  96. package/dist/cli/commands/app.d.ts.map +1 -1
  97. package/dist/cli/commands/app.js +39 -3
  98. package/dist/cli/commands/app.js.map +1 -1
  99. package/dist/cli/commands/doctor.d.ts.map +1 -1
  100. package/dist/cli/commands/doctor.js +6 -2
  101. package/dist/cli/commands/doctor.js.map +1 -1
  102. package/dist/cli/commands/safemode.d.ts +2 -0
  103. package/dist/cli/commands/safemode.d.ts.map +1 -0
  104. package/dist/cli/commands/safemode.js +279 -0
  105. package/dist/cli/commands/safemode.js.map +1 -0
  106. package/dist/cli/dependencies.d.ts +2 -0
  107. package/dist/cli/dependencies.d.ts.map +1 -1
  108. package/dist/cli/dependencies.js +81 -0
  109. package/dist/cli/dependencies.js.map +1 -1
  110. package/dist/cli/index.d.ts.map +1 -1
  111. package/dist/cli/index.js +11 -1
  112. package/dist/cli/index.js.map +1 -1
  113. package/dist/cli/manager.d.ts.map +1 -1
  114. package/dist/cli/manager.js +4 -1
  115. package/dist/cli/manager.js.map +1 -1
  116. package/dist/config/agent-lifecycle.d.ts +26 -0
  117. package/dist/config/agent-lifecycle.d.ts.map +1 -0
  118. package/dist/config/agent-lifecycle.js +63 -0
  119. package/dist/config/agent-lifecycle.js.map +1 -0
  120. package/dist/config/loader.d.ts.map +1 -1
  121. package/dist/config/loader.js +11 -0
  122. package/dist/config/loader.js.map +1 -1
  123. package/dist/config/reload-policy.d.ts +9 -0
  124. package/dist/config/reload-policy.d.ts.map +1 -0
  125. package/dist/config/reload-policy.js +62 -0
  126. package/dist/config/reload-policy.js.map +1 -0
  127. package/dist/config/watcher.d.ts +3 -2
  128. package/dist/config/watcher.d.ts.map +1 -1
  129. package/dist/config/watcher.js +34 -51
  130. package/dist/config/watcher.js.map +1 -1
  131. package/dist/cron/tool-schemas.d.ts +296 -0
  132. package/dist/cron/tool-schemas.d.ts.map +1 -0
  133. package/dist/cron/tool-schemas.js +122 -0
  134. package/dist/cron/tool-schemas.js.map +1 -0
  135. package/dist/index.js +141 -158
  136. package/dist/index.js.map +1 -1
  137. package/dist/orchestration/agent-tool-schemas.js +5 -5
  138. package/dist/orchestration/agent-tool-schemas.js.map +1 -1
  139. package/dist/orchestration/background-work.d.ts +9 -0
  140. package/dist/orchestration/background-work.d.ts.map +1 -0
  141. package/dist/orchestration/background-work.js +49 -0
  142. package/dist/orchestration/background-work.js.map +1 -0
  143. package/dist/orchestration/bridge.d.ts +6 -15
  144. package/dist/orchestration/bridge.d.ts.map +1 -1
  145. package/dist/orchestration/bridge.js +67 -32
  146. package/dist/orchestration/bridge.js.map +1 -1
  147. package/dist/orchestration/capabilities.d.ts.map +1 -1
  148. package/dist/orchestration/capabilities.js +18 -10
  149. package/dist/orchestration/capabilities.js.map +1 -1
  150. package/dist/orchestration/capacity.d.ts +3 -2
  151. package/dist/orchestration/capacity.d.ts.map +1 -1
  152. package/dist/orchestration/capacity.js +7 -0
  153. package/dist/orchestration/capacity.js.map +1 -1
  154. package/dist/orchestration/channel-controls.d.ts.map +1 -1
  155. package/dist/orchestration/channel-controls.js +3 -2
  156. package/dist/orchestration/channel-controls.js.map +1 -1
  157. package/dist/orchestration/cli-skills.d.ts +5 -0
  158. package/dist/orchestration/cli-skills.d.ts.map +1 -1
  159. package/dist/orchestration/compact-measurements.d.ts +21 -0
  160. package/dist/orchestration/compact-measurements.d.ts.map +1 -0
  161. package/dist/orchestration/compact-measurements.js +62 -0
  162. package/dist/orchestration/compact-measurements.js.map +1 -0
  163. package/dist/orchestration/config.d.ts +4 -0
  164. package/dist/orchestration/config.d.ts.map +1 -1
  165. package/dist/orchestration/config.js +1 -1
  166. package/dist/orchestration/config.js.map +1 -1
  167. package/dist/orchestration/container-tool-schemas.d.ts +37 -0
  168. package/dist/orchestration/container-tool-schemas.d.ts.map +1 -0
  169. package/dist/orchestration/container-tool-schemas.js +27 -0
  170. package/dist/orchestration/container-tool-schemas.js.map +1 -0
  171. package/dist/orchestration/container.d.ts.map +1 -1
  172. package/dist/orchestration/container.js +7 -0
  173. package/dist/orchestration/container.js.map +1 -1
  174. package/dist/orchestration/context-delivery.d.ts +32 -0
  175. package/dist/orchestration/context-delivery.d.ts.map +1 -0
  176. package/dist/orchestration/context-delivery.js +101 -0
  177. package/dist/orchestration/context-delivery.js.map +1 -0
  178. package/dist/orchestration/conversation-intake.d.ts +10 -6
  179. package/dist/orchestration/conversation-intake.d.ts.map +1 -1
  180. package/dist/orchestration/conversation-intake.js +22 -8
  181. package/dist/orchestration/conversation-intake.js.map +1 -1
  182. package/dist/orchestration/dashboard-charts.d.ts +32 -0
  183. package/dist/orchestration/dashboard-charts.d.ts.map +1 -0
  184. package/dist/orchestration/dashboard-charts.js +77 -0
  185. package/dist/orchestration/dashboard-charts.js.map +1 -0
  186. package/dist/orchestration/dashboard-reader-worker.js +28 -10
  187. package/dist/orchestration/dashboard-reader-worker.js.map +1 -1
  188. package/dist/orchestration/dashboard-reader.d.ts +1 -1
  189. package/dist/orchestration/dashboard-reader.d.ts.map +1 -1
  190. package/dist/orchestration/dashboard-reader.js +2 -2
  191. package/dist/orchestration/dashboard-reader.js.map +1 -1
  192. package/dist/orchestration/decision-context.d.ts +1 -1
  193. package/dist/orchestration/decision-context.d.ts.map +1 -1
  194. package/dist/orchestration/decision-context.js +3 -3
  195. package/dist/orchestration/decision-context.js.map +1 -1
  196. package/dist/orchestration/gateway-tasks/controller.d.ts +29 -0
  197. package/dist/orchestration/gateway-tasks/controller.d.ts.map +1 -0
  198. package/dist/orchestration/gateway-tasks/controller.js +139 -0
  199. package/dist/orchestration/gateway-tasks/controller.js.map +1 -0
  200. package/dist/orchestration/gateway-tasks/safemode.d.ts +19 -0
  201. package/dist/orchestration/gateway-tasks/safemode.d.ts.map +1 -0
  202. package/dist/orchestration/gateway-tasks/safemode.js +128 -0
  203. package/dist/orchestration/gateway-tasks/safemode.js.map +1 -0
  204. package/dist/orchestration/mutation-recovery.d.ts +3 -2
  205. package/dist/orchestration/mutation-recovery.d.ts.map +1 -1
  206. package/dist/orchestration/mutation-recovery.js +8 -0
  207. package/dist/orchestration/mutation-recovery.js.map +1 -1
  208. package/dist/orchestration/native-compact.d.ts +4 -1
  209. package/dist/orchestration/native-compact.d.ts.map +1 -1
  210. package/dist/orchestration/native-compact.js +6 -2
  211. package/dist/orchestration/native-compact.js.map +1 -1
  212. package/dist/orchestration/process-turn.d.ts +12 -2
  213. package/dist/orchestration/process-turn.d.ts.map +1 -1
  214. package/dist/orchestration/process-turn.js +48 -8
  215. package/dist/orchestration/process-turn.js.map +1 -1
  216. package/dist/orchestration/recovery.d.ts.map +1 -1
  217. package/dist/orchestration/recovery.js +4 -2
  218. package/dist/orchestration/recovery.js.map +1 -1
  219. package/dist/orchestration/runtime.d.ts +23 -1
  220. package/dist/orchestration/runtime.d.ts.map +1 -1
  221. package/dist/orchestration/runtime.js +191 -21
  222. package/dist/orchestration/runtime.js.map +1 -1
  223. package/dist/orchestration/session-compaction.d.ts +59 -0
  224. package/dist/orchestration/session-compaction.d.ts.map +1 -0
  225. package/dist/orchestration/session-compaction.js +212 -0
  226. package/dist/orchestration/session-compaction.js.map +1 -0
  227. package/dist/orchestration/skills.d.ts +2 -0
  228. package/dist/orchestration/skills.d.ts.map +1 -1
  229. package/dist/orchestration/skills.js +4 -3
  230. package/dist/orchestration/skills.js.map +1 -1
  231. package/dist/orchestration/task-controls.d.ts +12 -0
  232. package/dist/orchestration/task-controls.d.ts.map +1 -1
  233. package/dist/orchestration/task-controls.js +3 -1
  234. package/dist/orchestration/task-controls.js.map +1 -1
  235. package/dist/orchestration/tasks/driver.d.ts.map +1 -1
  236. package/dist/orchestration/tasks/driver.js +100 -13
  237. package/dist/orchestration/tasks/driver.js.map +1 -1
  238. package/dist/orchestration/tasks/pool.d.ts +2 -0
  239. package/dist/orchestration/tasks/pool.d.ts.map +1 -1
  240. package/dist/orchestration/tasks/pool.js +4 -0
  241. package/dist/orchestration/tasks/pool.js.map +1 -1
  242. package/dist/orchestration/tasks/scheduler.d.ts.map +1 -1
  243. package/dist/orchestration/tasks/scheduler.js +4 -0
  244. package/dist/orchestration/tasks/scheduler.js.map +1 -1
  245. package/dist/orchestration/tasks/service.d.ts +4 -0
  246. package/dist/orchestration/tasks/service.d.ts.map +1 -1
  247. package/dist/orchestration/tasks/service.js +38 -8
  248. package/dist/orchestration/tasks/service.js.map +1 -1
  249. package/dist/orchestration/token-ledger.d.ts +8 -0
  250. package/dist/orchestration/token-ledger.d.ts.map +1 -1
  251. package/dist/orchestration/token-ledger.js +7 -2
  252. package/dist/orchestration/token-ledger.js.map +1 -1
  253. package/dist/orchestration/token-usage.d.ts +3 -0
  254. package/dist/orchestration/token-usage.d.ts.map +1 -1
  255. package/dist/orchestration/token-usage.js +12 -3
  256. package/dist/orchestration/token-usage.js.map +1 -1
  257. package/dist/orchestration/types.d.ts +19 -1
  258. package/dist/orchestration/types.d.ts.map +1 -1
  259. package/dist/orchestration/types.js.map +1 -1
  260. package/dist/orchestration/worker-crons.d.ts +5 -0
  261. package/dist/orchestration/worker-crons.d.ts.map +1 -0
  262. package/dist/orchestration/worker-crons.js +84 -0
  263. package/dist/orchestration/worker-crons.js.map +1 -0
  264. package/dist/orchestration/worker-harness.d.ts +15 -0
  265. package/dist/orchestration/worker-harness.d.ts.map +1 -0
  266. package/dist/orchestration/worker-harness.js +72 -0
  267. package/dist/orchestration/worker-harness.js.map +1 -0
  268. package/dist/safemode/config.d.ts +7 -0
  269. package/dist/safemode/config.d.ts.map +1 -0
  270. package/dist/safemode/config.js +67 -0
  271. package/dist/safemode/config.js.map +1 -0
  272. package/dist/safemode/context.d.ts +7 -0
  273. package/dist/safemode/context.d.ts.map +1 -0
  274. package/dist/safemode/context.js +397 -0
  275. package/dist/safemode/context.js.map +1 -0
  276. package/dist/safemode/external-owners.d.ts +19 -0
  277. package/dist/safemode/external-owners.d.ts.map +1 -0
  278. package/dist/safemode/external-owners.js +229 -0
  279. package/dist/safemode/external-owners.js.map +1 -0
  280. package/dist/safemode/native.d.ts +38 -0
  281. package/dist/safemode/native.d.ts.map +1 -0
  282. package/dist/safemode/native.js +220 -0
  283. package/dist/safemode/native.js.map +1 -0
  284. package/dist/safemode/params.d.ts +10 -0
  285. package/dist/safemode/params.d.ts.map +1 -0
  286. package/dist/safemode/params.js +86 -0
  287. package/dist/safemode/params.js.map +1 -0
  288. package/dist/safemode/provenance.d.ts +45 -0
  289. package/dist/safemode/provenance.d.ts.map +1 -0
  290. package/dist/safemode/provenance.js +153 -0
  291. package/dist/safemode/provenance.js.map +1 -0
  292. package/dist/safemode/runner.d.ts +17 -0
  293. package/dist/safemode/runner.d.ts.map +1 -0
  294. package/dist/safemode/runner.js +398 -0
  295. package/dist/safemode/runner.js.map +1 -0
  296. package/dist/safemode/store.d.ts +56 -0
  297. package/dist/safemode/store.d.ts.map +1 -0
  298. package/dist/safemode/store.js +451 -0
  299. package/dist/safemode/store.js.map +1 -0
  300. package/dist/session/codex-auth.d.ts +37 -0
  301. package/dist/session/codex-auth.d.ts.map +1 -0
  302. package/dist/session/codex-auth.js +266 -0
  303. package/dist/session/codex-auth.js.map +1 -0
  304. package/dist/session/codex-container-runtime.d.ts +15 -0
  305. package/dist/session/codex-container-runtime.d.ts.map +1 -0
  306. package/dist/session/codex-container-runtime.js +85 -0
  307. package/dist/session/codex-container-runtime.js.map +1 -0
  308. package/dist/session/codex-context-defaults.json +5 -0
  309. package/dist/session/codex-context.d.ts +13 -0
  310. package/dist/session/codex-context.d.ts.map +1 -0
  311. package/dist/session/codex-context.js +27 -0
  312. package/dist/session/codex-context.js.map +1 -0
  313. package/dist/session/codex-extension-discovery.d.ts +21 -0
  314. package/dist/session/codex-extension-discovery.d.ts.map +1 -0
  315. package/dist/session/codex-extension-discovery.js +132 -0
  316. package/dist/session/codex-extension-discovery.js.map +1 -0
  317. package/dist/session/codex-native-mcp-client.d.ts +37 -0
  318. package/dist/session/codex-native-mcp-client.d.ts.map +1 -0
  319. package/dist/session/codex-native-mcp-client.js +164 -0
  320. package/dist/session/codex-native-mcp-client.js.map +1 -0
  321. package/dist/session/codex-policy.d.ts +6 -0
  322. package/dist/session/codex-policy.d.ts.map +1 -0
  323. package/dist/session/codex-policy.js +17 -0
  324. package/dist/session/codex-policy.js.map +1 -0
  325. package/dist/session/codex-process.d.ts +114 -0
  326. package/dist/session/codex-process.d.ts.map +1 -0
  327. package/dist/session/codex-process.js +759 -0
  328. package/dist/session/codex-process.js.map +1 -0
  329. package/dist/session/codex-runtime.d.ts +20 -0
  330. package/dist/session/codex-runtime.d.ts.map +1 -0
  331. package/dist/session/codex-runtime.js +182 -0
  332. package/dist/session/codex-runtime.js.map +1 -0
  333. package/dist/session/codex-tool-capture.d.ts +35 -0
  334. package/dist/session/codex-tool-capture.d.ts.map +1 -0
  335. package/dist/session/codex-tool-capture.js +178 -0
  336. package/dist/session/codex-tool-capture.js.map +1 -0
  337. package/dist/session/container-connectors.d.ts +10 -0
  338. package/dist/session/container-connectors.d.ts.map +1 -0
  339. package/dist/session/container-connectors.js +41 -0
  340. package/dist/session/container-connectors.js.map +1 -0
  341. package/dist/session/container-extensions.d.ts +4 -0
  342. package/dist/session/container-extensions.d.ts.map +1 -0
  343. package/dist/session/container-extensions.js +45 -0
  344. package/dist/session/container-extensions.js.map +1 -0
  345. package/dist/session/managed-connectors.d.ts +16 -0
  346. package/dist/session/managed-connectors.d.ts.map +1 -0
  347. package/dist/session/managed-connectors.js +25 -0
  348. package/dist/session/managed-connectors.js.map +1 -0
  349. package/dist/session/process-diagnostics.d.ts +14 -0
  350. package/dist/session/process-diagnostics.d.ts.map +1 -0
  351. package/dist/session/process-diagnostics.js +39 -0
  352. package/dist/session/process-diagnostics.js.map +1 -0
  353. package/dist/session/process.d.ts +4 -0
  354. package/dist/session/process.d.ts.map +1 -1
  355. package/dist/session/process.js +21 -16
  356. package/dist/session/process.js.map +1 -1
  357. package/dist/session/request-tool-capture.d.ts +1 -1
  358. package/dist/session/request-tool-capture.d.ts.map +1 -1
  359. package/dist/session/runtime-profile.d.ts +8 -0
  360. package/dist/session/runtime-profile.d.ts.map +1 -1
  361. package/dist/session/runtime-profile.js +3 -2
  362. package/dist/session/runtime-profile.js.map +1 -1
  363. package/dist/session/worker-environment.d.ts +5 -0
  364. package/dist/session/worker-environment.d.ts.map +1 -0
  365. package/dist/session/worker-environment.js +27 -0
  366. package/dist/session/worker-environment.js.map +1 -0
  367. package/dist/session/worker-extensions.d.ts +20 -0
  368. package/dist/session/worker-extensions.d.ts.map +1 -0
  369. package/dist/session/worker-extensions.js +322 -0
  370. package/dist/session/worker-extensions.js.map +1 -0
  371. package/dist/skills/loader.d.ts +2 -0
  372. package/dist/skills/loader.d.ts.map +1 -1
  373. package/dist/skills/loader.js.map +1 -1
  374. package/dist/types.d.ts +33 -0
  375. package/dist/types.d.ts.map +1 -1
  376. package/dist/ui/codex-context.d.ts +4 -0
  377. package/dist/ui/codex-context.d.ts.map +1 -0
  378. package/dist/ui/codex-context.js +15 -0
  379. package/dist/ui/codex-context.js.map +1 -0
  380. package/dist/ui/dashboard-charts.d.ts +3 -0
  381. package/dist/ui/dashboard-charts.d.ts.map +1 -0
  382. package/dist/ui/dashboard-charts.js +130 -0
  383. package/dist/ui/dashboard-charts.js.map +1 -0
  384. package/dist/ui/dashboard-client.d.ts.map +1 -1
  385. package/dist/ui/dashboard-client.js +20 -21
  386. package/dist/ui/dashboard-client.js.map +1 -1
  387. package/dist/ui/dashboard-controls.d.ts +4 -0
  388. package/dist/ui/dashboard-controls.d.ts.map +1 -0
  389. package/dist/ui/dashboard-controls.js +27 -0
  390. package/dist/ui/dashboard-controls.js.map +1 -0
  391. package/dist/ui/dashboard-presentation.d.ts +4 -1
  392. package/dist/ui/dashboard-presentation.d.ts.map +1 -1
  393. package/dist/ui/dashboard-presentation.js +13 -7
  394. package/dist/ui/dashboard-presentation.js.map +1 -1
  395. package/dist/ui/dashboard-range.d.ts +3 -3
  396. package/dist/ui/dashboard-range.d.ts.map +1 -1
  397. package/dist/ui/dashboard-range.js +21 -5
  398. package/dist/ui/dashboard-range.js.map +1 -1
  399. package/dist/ui/dashboard-theme.d.ts +3 -1
  400. package/dist/ui/dashboard-theme.d.ts.map +1 -1
  401. package/dist/ui/dashboard-theme.js +80 -3
  402. package/dist/ui/dashboard-theme.js.map +1 -1
  403. package/dist/ui/memory-activity.d.ts +4 -0
  404. package/dist/ui/memory-activity.d.ts.map +1 -0
  405. package/dist/ui/memory-activity.js +115 -0
  406. package/dist/ui/memory-activity.js.map +1 -0
  407. package/dist/ui/token-report-client.d.ts +1 -1
  408. package/dist/ui/token-report-client.d.ts.map +1 -1
  409. package/dist/ui/token-report-client.js +1 -1
  410. package/dist/ui/token-report.d.ts +4 -0
  411. package/dist/ui/token-report.d.ts.map +1 -1
  412. package/dist/ui/token-report.js +38 -23
  413. package/dist/ui/token-report.js.map +1 -1
  414. package/dist/ui/web-ui.d.ts +1 -1
  415. package/dist/ui/web-ui.d.ts.map +1 -1
  416. package/dist/ui/web-ui.js +68 -370
  417. package/dist/ui/web-ui.js.map +1 -1
  418. package/mcp/capability-catalog.ts +2 -0
  419. package/mcp/extension-catalog.ts +18 -0
  420. package/mcp/lazy-connector.ts +4 -2
  421. package/mcp/lazy-tools.test.ts +29 -0
  422. package/mcp/modules.ts +1 -0
  423. package/mcp/server.ts +2 -2
  424. package/mcp/tools/cron/module.ts +8 -114
  425. package/mcp/tools/discord/commands.ts +4 -1
  426. package/mcp/tools/safemode/module.test.ts +29 -0
  427. package/mcp/tools/telegram/receiver-server.ts +33 -39
  428. package/mcp/tools/telegram/session-browser.ts +10 -0
  429. package/mcp/tools/telegram/task-detail.ts +2 -1
  430. package/package.json +3 -2
  431. package/scripts/orchestration/audit-codex-context.cjs +83 -0
  432. package/scripts/orchestration/benchmark-worker-harnesses.cjs +112 -0
  433. package/scripts/orchestration/smoke-codex-extensions.ts +29 -0
  434. package/scripts/orchestration/smoke-codex-worker.cjs +166 -0
  435. package/scripts/orchestration/smoke-safemode-codex.cjs +66 -0
@@ -1,4 +1,6 @@
1
+ /** Favicon rendered from the original main-branch brandmark (35px at 4x). */
2
+ export declare const dashboardIconUrl = "data:image/png;base64,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";
1
3
  /** Shared tokens from the approved pastel dashboard direction. */
2
4
  export declare const dashboardTheme: string;
3
- export declare const dashboardFontLink = "<script>(function(){var i=location.pathname.lastIndexOf('/dashboard');if(i<0)return;var l=document.createElement('link');l.rel='stylesheet';l.href=location.pathname.slice(0,i)+'/dashboard/fonts.css';document.head.appendChild(l);})();</script>";
5
+ export declare const dashboardFontLink: string;
4
6
  //# sourceMappingURL=dashboard-theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-theme.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-theme.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,cAAc,QA8d1B,CAAC;AACF,eAAO,MAAM,iBAAiB,uPAAuP,CAAC"}
1
+ {"version":3,"file":"dashboard-theme.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-theme.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,2snBAA2snB,CAAC;AACzunB,kEAAkE;AAClE,eAAO,MAAM,cAAc,QAyiB1B,CAAC;AACF,eAAO,MAAM,iBAAiB,QAA0T,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dashboardFontLink = exports.dashboardTheme = void 0;
3
+ exports.dashboardFontLink = exports.dashboardTheme = exports.dashboardIconUrl = void 0;
4
+ /** Favicon rendered from the original main-branch brandmark (35px at 4x). */
5
+ exports.dashboardIconUrl = "data:image/png;base64,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";
4
6
  /** Shared tokens from the approved pastel dashboard direction. */
5
7
  exports.dashboardTheme = String.raw `
6
8
  :root{color-scheme:dark;--bg:#101113;--side:#141517;--panel:#181a1d;--raised:#202226;--line:#2b2e33;--text:#eeeef0;--muted:#989da7;--accent:#ff935c;--accentbg:#35261f;--green:#78d5aa;--greenbg:#1e3029;--blue:#8dbdff;--bluebg:#202c3f;--yellow:#ebc978;--yellowbg:#342e20;--red:#efa19e;--redbg:#362426;--shadow:0 24px 100px #0008;--radius:14px}
@@ -190,7 +192,7 @@ to{opacity:1;transform:none}
190
192
 
191
193
 
192
194
  /* V3: a white workspace with violet controls and pastel category surfaces. */
193
- :root,[data-theme=light]{color-scheme:light;--bg:#f5f6f8;--side:#fff;--panel:#fff;--raised:#f5f6f8;--line:#dddfeb;--text:#333;--muted:#535768;--accent:#6161ff;--accentbg:#e7ecff;--green:#226149;--greenbg:#e5f6dc;--blue:#355a80;--bluebg:#dff4fc;--yellow:#785622;--yellowbg:#fff0d8;--red:#9c405d;--redbg:#fce8ef;--shadow:0 12px 42px #35386612;--radius:24px;--mint:#e2f8d3;--sky:#dff6ff;--peach:#fff0e3;--lavender:#eddff7;--pink:#fbe0ef;--prism:conic-gradient(#8181ff,#4dc2cb,#a5db88,#f8e094,#f3a0d2,#8181ff)}
195
+ :root,[data-theme=light]{color-scheme:light;--bg:#f5f6f8;--side:#fff;--panel:#fff;--raised:#f5f6f8;--line:#dddfeb;--text:#333;--muted:#535768;--accent:#6161ff;--accentbg:#e7ecff;--green:#226149;--greenbg:#e5f6dc;--blue:#355a80;--bluebg:#dff4fc;--yellow:#785622;--yellowbg:#fff0d8;--red:#9c405d;--redbg:#fce8ef;--shadow:0 12px 42px #35386612;--radius:24px;--mint:var(--palette-mint);--sky:var(--palette-sky);--peach:var(--palette-peach);--lavender:var(--palette-lavender);--pink:var(--palette-pink);--prism:conic-gradient(#8181ff,#4dc2cb,#a5db88,#f8e094,#f3a0d2,#8181ff)}
194
196
 
195
197
  [data-theme=dark]{color-scheme:dark;--bg:#171824;--side:#1d1f2e;--panel:#222536;--raised:#2a2e42;--line:#393e57;--text:#f1f1f8;--muted:#b2b7cc;--accent:#a5a5ff;--accentbg:#353858;--green:#abd8b3;--greenbg:#293e33;--blue:#adcce9;--bluebg:#2b3b51;--yellow:#e4c792;--yellowbg:#443b2a;--red:#f1afc3;--redbg:#473044;--shadow:0 12px 42px #0002;--mint:#263b30;--sky:#253a4b;--peach:#423328;--lavender:#3a2f4b;--pink:#412a3b}
196
198
 
@@ -480,6 +482,81 @@ tr.session-row:hover td{background:var(--raised)}
480
482
  .tool-name-list{list-style:none;padding:0;margin:10px 0;display:grid;gap:6px}.tool-name-list li{padding:7px 10px;background:var(--raised);border:1px solid var(--line);border-radius:7px;min-width:0}.tool-name-list code{font:12px/1.6 ui-monospace,monospace;color:var(--text);overflow-wrap:anywhere}
481
483
  .status-badge{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:0;border:0;border-radius:0;min-height:0;background:transparent;color:var(--status-color);font-size:12px;font-weight:500;line-height:1.6;letter-spacing:0;white-space:normal;vertical-align:middle}.status-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
482
484
  tr[data-dash-agent],.turn-row{cursor:pointer}tr[data-dash-agent]:hover,.turn-row:hover{background:var(--raised)}tr[data-dash-agent]:focus-visible,.turn-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.short-id,.session-id{overflow-wrap:anywhere;white-space:normal;color:var(--text);font-size:12px}.dash-tools{overflow-wrap:anywhere}.detail-block{padding:14px;border:1px solid var(--line);border-radius:10px;margin:12px 0}.detail-block h3{margin:0 0 8px}
485
+ /* Memory activity keeps column sizes stable as live records change. */
486
+ .memory-table{table-layout:fixed;width:100%}.memory-table th,.memory-table td{white-space:normal;overflow-wrap:anywhere;vertical-align:top;padding:14px 16px}.memory-table .identity-badge{max-width:100%;overflow:hidden;text-overflow:ellipsis}.memory-table .status-badge{white-space:normal}.memory-table button{white-space:nowrap}.memory-table tr[data-memory-id]{cursor:pointer}.memory-table tr[data-memory-id]:hover{background:var(--raised)}
487
+ #memory-drawer{overflow-x:hidden}#memory-drawer .table-wrap{max-width:100%;overflow-x:auto}#memory-drawer pre{white-space:pre-wrap;overflow-wrap:anywhere}#memory-stats{grid-template-columns:repeat(3,minmax(0,1fr))}#memory-stats .dash-stat{padding:18px}#memory-stats .dash-stat strong{font-size:26px;margin-top:6px}@media(max-width:520px){#memory-stats{grid-template-columns:1fr}}
488
+ #view-dreams .heading h2{color:var(--text)}.memory-schedules{margin:16px 0 20px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.memory-schedules>summary{padding:14px 18px;font-weight:500;color:var(--text);cursor:pointer}.memory-schedules[open]>summary{border-bottom:1px solid var(--line)}#memory-schedule-table{padding:0 12px 12px}#memory-schedule-table .table-wrap{margin-top:12px}#memory-error[hidden]{display:none}
489
+
490
+ .memory-activity-label{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:500;line-height:1.4;color:var(--activity-color)}
491
+ .memory-activity-label::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}
492
+ .memory-activity-label.memory-dream{--activity-color:var(--accent)}
493
+ .memory-activity-label.session-compaction{--activity-color:var(--blue)}
494
+ /* One filter component shared with the Turn details report. */
495
+ .turn-filters{display:flex;gap:12px;flex-wrap:wrap;align-items:stretch;font:15px/1.7 system-ui,-apple-system,"Noto Sans Thai",sans-serif}
496
+ .turn-filters .range-toggle button,.turn-filters select,.turn-filters input{font-size:12px}
497
+ .turn-filters input{flex:1;min-width:160px;max-width:380px}
498
+ .report-toolbar.turn-filters{align-items:stretch}
499
+ .turn-filters>select,.turn-filters>input{height:48px;margin:0;align-self:stretch}
500
+ .memory-filters{flex-wrap:nowrap;gap:12px;margin:20px 0 12px;max-width:100%;overflow-x:auto;padding:6px 6px 8px}
501
+ .memory-filters .range-toggle{flex:0 0 auto;flex-wrap:nowrap;white-space:nowrap}
502
+ .memory-filters #memory-agent{flex:0 0 auto;width:160px}
503
+
504
+ /* Drawer chrome must not inherit report section/card decoration. */
505
+ .dash-drawer{margin:0;border:0;border-radius:0;height:100%;max-height:100%;font:13px/1.6 Poppins,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
506
+ .dash-drawer .drawer-actions{display:flex;justify-content:flex-end;margin:0 0 16px}
507
+ .dash-drawer .drawer-close{font:500 12px/1.5 Poppins,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;border-radius:160px;min-height:38px;padding:8px 14px}
508
+ .dash-drawer .drawer-actions+h1{margin-top:0}
509
+ .dash-drawer h3{font-size:14px;font-weight:600;margin:18px 0 8px}
510
+ .dash-drawer .muted{font-size:12px}
511
+ button.theme-toggle{width:38px;height:38px;min-height:38px;flex:0 0 38px;padding:9px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
512
+ .theme-toggle svg{display:block;flex-shrink:0}.theme-toggle .theme-sun{display:none}
513
+ [data-theme=dark] .theme-toggle .theme-moon{display:none}[data-theme=dark] .theme-toggle .theme-sun{display:block}
514
+ #report-theme{margin-left:auto}
515
+
516
+ /* Shared chart colors: distribution roles and the existing light-theme pastel palette. */
517
+ :root{--token-agent:#329eda;--token-worker:#9661d9;--token-report:#ea8a23;--palette-mint:#e2f8d3;--palette-sky:#dff6ff;--palette-peach:#fff0e3;--palette-lavender:#eddff7;--palette-pink:#fbe0ef;--palette-yellow:#fff0d8}
518
+ .identity-badge,.agent-column{--agent-fill:hsl(var(--agent-hue) 60% 94%);--agent-ink:hsl(var(--agent-hue) 55% 30%);--agent-border:hsl(var(--agent-hue) 45% 85%)}
519
+ [data-theme=dark] .identity-badge,[data-theme=dark] .agent-column{--agent-fill:hsl(var(--agent-hue) 30% 21%);--agent-ink:hsl(var(--agent-hue) 65% 80%);--agent-border:hsl(var(--agent-hue) 30% 35%)}
520
+ .identity-badge,[data-theme=dark] .identity-badge{background:var(--agent-fill);color:var(--agent-ink);border-color:var(--agent-border)}
521
+ /* Overview charts share card sizing, range controls and numeric typography. */
522
+ #overview-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0}
523
+ #overview-charts .overview-chart-card{margin:0;padding:24px;min-width:0;overflow:visible}
524
+ .chart-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
525
+ .chart-card-header h2{margin:0;font-size:17px;font-weight:550;line-height:1.5}
526
+ .chart-range{margin-left:auto;flex-wrap:nowrap;font-size:12px}.chart-range button{padding:6px 9px;min-height:30px}
527
+ .chart-period{margin:0 0 22px;min-height:20px}.chart-content{min-height:274px;min-width:0}.chart-content>.empty{min-height:220px;display:flex;align-items:center;justify-content:center}
528
+ .chart-status{margin:4px 0 0!important;min-height:0}.chart-status:empty{display:none}
529
+ .activity-frame,.agent-column-plot{display:flex;gap:10px;height:216px;padding-top:16px}
530
+ .chart-y-labels{width:40px;flex:none;display:flex;flex-direction:column;justify-content:space-between;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;height:180px;padding-top:4px}
531
+ .activity-plot{position:relative;flex:1;min-width:0;height:190px}.activity-plot>svg{display:block;width:100%;height:190px;overflow:visible}
532
+ .chart-hit-grid{position:absolute;inset:0;display:grid}.chart-hit{position:relative;outline:none;background:transparent}
533
+ .chart-line-dot{display:none;position:absolute;width:8px;height:8px;transform:translate(-50%,-50%);border:2px solid var(--panel);border-radius:50%;background:var(--dot-color);box-shadow:0 0 0 1px var(--dot-color);pointer-events:none}
534
+ .chart-hit:hover .chart-line-dot,.chart-hit:focus-visible .chart-line-dot{display:block}
535
+ .chart-popover{text-align:left;width:max-content;max-width:calc(100vw - 32px);display:none;position:absolute;z-index:5;top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);font-size:12px;line-height:1.7;white-space:nowrap;pointer-events:none;color:var(--text)}
536
+ .chart-tooltip-row{display:grid;grid-template-columns:auto auto;gap:16px;align-items:baseline;margin-top:4px}.chart-tooltip-row>span{color:var(--muted)}.chart-tooltip-row>strong{font-weight:650;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.chart-tooltip-detail{font-weight:400}.chart-popover>strong{display:block;margin-bottom:6px;color:var(--muted);font-weight:500}
537
+ .chart-popover.align-left{left:0}.chart-popover.align-right{right:0}
538
+ .chart-hit:hover .chart-popover,.chart-hit:focus-visible .chart-popover,.agent-bar-space:hover~.chart-popover,.agent-column:focus-visible .chart-popover{display:block}
539
+ .chart-x-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:8px}
540
+ .chart-key{display:flex;gap:18px;font-size:12px;margin:18px 0 10px;color:var(--muted)}.chart-key span{display:inline-flex;align-items:center;gap:7px}
541
+ .chart-key i,.model-chart-legend i,.reuse-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
542
+ .agent-columns{flex:1;min-width:0;display:flex;justify-content:space-evenly;gap:0;position:relative;border-bottom:1px solid var(--line);height:180px;background:repeating-linear-gradient(to top,transparent 0,transparent 88px,var(--line) 89px,transparent 90px)}
543
+ .agent-column{--agent-chart-color:hsl(var(--agent-hue) 55% 52%);min-width:0;flex:1;text-align:center;position:relative;outline-offset:3px}.agent-bar-space{width:32px;margin:0 auto;height:180px;display:flex;justify-content:center;align-items:flex-end}
544
+ .agent-bar{position:relative;width:32px;flex:none;display:flex;flex-direction:column;border-radius:5px 5px 0 0;background:var(--agent-chart-color);border:0}.agent-bar>span:not(.chart-popover):not(.agent-bar-total){display:block;flex-shrink:0}.agent-bar>span:first-child{border-radius:5px 5px 0 0}
545
+ .agent-bar-total{pointer-events:none;position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:600;white-space:nowrap}
546
+ .agent-column>.chart-popover{left:50%;transform:translateX(-50%);top:4px}.agent-column:first-child>.chart-popover{left:0;transform:none}.agent-column:last-child>.chart-popover{left:auto;right:0;transform:none}.agent-column:only-child>.chart-popover{left:50%;right:auto;transform:translateX(-50%)}.agent-bar-label{display:flex;align-items:center;justify-content:center;gap:5px;padding:0 4px;margin-top:10px;min-width:0;font-size:11px;color:var(--muted)}.agent-bar-label>i{width:6px;height:6px;flex:none;border-radius:50%;background:var(--agent-chart-color)}.agent-bar-label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
547
+
548
+ .model-donut-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:center;min-height:230px}.model-donut{position:relative;width:min(100%,220px);justify-self:center}.model-donut svg{display:block;width:100%;height:auto}.model-donut circle:hover,.model-donut circle:focus{filter:brightness(.82);outline:none}
549
+ .model-tooltip{top:0;left:50%;transform:translateX(-50%);width:max-content;max-width:240px;white-space:normal;overflow-wrap:anywhere}.donut-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none}.donut-center strong{font-size:24px;font-weight:600}.donut-center span{font-size:11px;color:var(--muted)}
550
+ .model-chart-legend,.reuse-legend{list-style:none;margin:0;padding:0;min-width:0;flex:1}.model-chart-legend li{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:4px 8px;align-items:center;margin:13px 0;font-size:11px}.model-chart-legend li>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-chart-legend li>small{grid-column:2/4;color:var(--muted)}.model-chart-legend i{border:1px solid var(--line)}.model-chart-legend strong,.reuse-legend strong{font-weight:600;font-variant-numeric:tabular-nums}
551
+ .reuse-key{gap:12px;flex-wrap:wrap}.reuse-summary{font-size:12px;margin:10px 0}.reuse-summary>strong{color:var(--token-agent);font-size:18px;font-weight:600}.chart-content>.live-note{margin-bottom:0;font-size:11px;line-height:1.7}
552
+ #overview-attention-panel[hidden]{display:none}
553
+ @media(max-width:1200px){.model-donut-layout{gap:8px}.donut-center strong{font-size:21px}.reuse-headline{gap:12px}.reuse-headline>strong{font-size:36px}}
554
+ @media(max-width:1000px){#overview-charts{grid-template-columns:1fr}}
555
+ @media(max-width:520px){#overview-charts .overview-chart-card{padding:18px}.chart-card-header h2{font-size:16px}.chart-card-header{gap:8px}.chart-range button{padding:5px 7px}.model-donut-layout{grid-template-columns:1fr;gap:0}.model-chart-legend{width:100%;max-width:none}.reuse-legend li{font-size:11px;gap:7px}.reuse-headline>strong{font-size:34px}.chart-period{font-size:10px}}
556
+
557
+ .kb-toolbar button{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:160px;padding:8px 14px;font-size:12px;min-height:38px}
558
+ .kb-toolbar button:hover{background:var(--raised)}
559
+ #kb-source,#kb-demo-size,#kb-search{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 12px;font:12px/1.5 Poppins,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;min-height:38px}
483
560
  `;
484
- exports.dashboardFontLink = "<script>(function(){var i=location.pathname.lastIndexOf('/dashboard');if(i<0)return;var l=document.createElement('link');l.rel='stylesheet';l.href=location.pathname.slice(0,i)+'/dashboard/fonts.css';document.head.appendChild(l);})();</script>";
561
+ exports.dashboardFontLink = '<link rel="icon" type="image/png" href="' + exports.dashboardIconUrl + '">' + "<script>(function(){var i=location.pathname.lastIndexOf('/dashboard');if(i<0)return;var l=document.createElement('link');l.rel='stylesheet';l.href=location.pathname.slice(0,i)+'/dashboard/fonts.css';document.head.appendChild(l);})();</script>";
485
562
  //# sourceMappingURL=dashboard-theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-theme.js","sourceRoot":"","sources":["../../src/ui/dashboard-theme.ts"],"names":[],"mappings":";;;AAAA,kEAAkE;AACrD,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8dvC,CAAC;AACW,QAAA,iBAAiB,GAAG,oPAAoP,CAAC"}
1
+ {"version":3,"file":"dashboard-theme.js","sourceRoot":"","sources":["../../src/ui/dashboard-theme.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAChE,QAAA,gBAAgB,GAAG,wsnBAAwsnB,CAAC;AACzunB,kEAAkE;AACrD,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyiBvC,CAAC;AACW,QAAA,iBAAiB,GAAG,0CAA0C,GAAC,wBAAgB,GAAC,IAAI,GAAG,oPAAoP,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Memory maintenance shares the dashboard theme, but owns its refresh and drawer state. */
2
+ export declare const memoryActivityHtml: string;
3
+ export declare const memoryActivityClient: string;
4
+ //# sourceMappingURL=memory-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-activity.d.ts","sourceRoot":"","sources":["../../src/ui/memory-activity.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,QAY9B,CAAC;AACF,eAAO,MAAM,oBAAoB,QAgGhC,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.memoryActivityClient = exports.memoryActivityHtml = void 0;
4
+ /** Memory maintenance shares the dashboard theme, but owns its refresh and drawer state. */
5
+ exports.memoryActivityHtml = String.raw `
6
+ <div class="heading"><h2>Nightly dreaming</h2><p>Completed compactions and memory reports, newest first.</p></div>
7
+ <div class="dash-grid" id="memory-stats"></div>
8
+ <div class="report-toolbar turn-filters memory-filters">
9
+ <div id="memory-kind" class="range-toggle" role="group" aria-label="Activity"><button type="button" data-kind="all" aria-pressed="true">All</button><button type="button" data-kind="memory_dream" aria-pressed="false">Memory Dream</button><button type="button" data-kind="session_compaction" aria-pressed="false">Session Compaction</button></div>
10
+ <div id="memory-status" class="range-toggle" role="group" aria-label="Status"><button type="button" data-status="all" aria-pressed="false">All</button><button type="button" data-status="pending" aria-pressed="true">Pending</button><button type="button" data-status="running" aria-pressed="true">Running</button><button type="button" data-status="completed" aria-pressed="true">Completed</button><button type="button" data-status="failed" aria-pressed="true">Failed</button><button type="button" data-status="partial_failure" aria-pressed="true">Partially failed</button><button type="button" data-status="interrupted" aria-pressed="true">Interrupted</button><button type="button" data-status="skipped" aria-pressed="false">Skipped</button></div>
11
+ <select id="memory-agent" aria-label="Filter by agent"><option value="">All agents</option></select>
12
+ </div>
13
+ <p class="live-note"><span id="memory-updated" role="status"></span> · <span id="memory-range-note">Uses the date range above.</span> Up to 100 recorded runs per activity per agent. Only successful compactions are shown. Missing measurements are shown as —.</p>
14
+ <p id="memory-error" class="error" role="status" hidden></p>
15
+ <div id="memory-results"></div><div class="dash-pager"><span id="memory-page"></span><div class="row"><button id="memory-prev">← Previous</button><button id="memory-next">Next →</button></div>
16
+ <div id="memory-back" class="dash-drawer-back"><section id="memory-drawer" class="dash-drawer" role="dialog" aria-modal="true" aria-label="Memory activity details" tabindex="-1"></section></div>
17
+ `;
18
+ exports.memoryActivityClient = String.raw `
19
+ (function(){
20
+ const byId=id=>document.getElementById(id),txt=escHtml;
21
+ let page=0,generation=0,detailGeneration=0,busy=false,controller=null,selected=null,focus=null,detailBusy=false,applying=false;
22
+ const field=id=>byId('memory-'+id).value;
23
+ let activity='all';
24
+ const statuses=['pending','running','completed','failed','partial_failure','interrupted','skipped'];
25
+ const selectedStatuses=new Set(statuses.filter(s=>s!=='skipped'));
26
+ const number=compactNumber;
27
+ const time=n=>n==null?'—':new Date(n).toLocaleString('en-GB',{timeZone:dashboardTimezone});
28
+ const age=n=>{if(n==null)return '—';const seconds=Math.max(0,Math.floor((Date.now()-n)/1000));return seconds<60?seconds+'s ago':seconds<3600?Math.floor(seconds/60)+'m ago':seconds<86400?Math.floor(seconds/3600)+'h '+Math.floor(seconds%3600/60)+'m ago':Math.floor(seconds/86400)+'d ago';};
29
+ const timeCell=n=>txt(time(n))+'<br><span class="live-note">'+txt(age(n))+'</span>';
30
+ const percent=(value,total)=>value==null||!(total>0)?'—':(value/total*100).toFixed(2)+'%';
31
+ const tokens=(value,window)=>number(value)+(value!=null&&window>0?'<br><span class="live-note">'+percent(value,window)+' of window</span>':'');
32
+ const reduction=(before,after)=>before==null||after==null?'—':number(before-after)+'<br><span class="live-note">'+percent(before-after,before)+' reduction</span>';
33
+ const title=kind=>kind==='memory_dream'?'Memory Dream':'Session Compaction';
34
+ const activityBadge=kind=>'<span class="memory-activity-label '+(kind==='memory_dream'?'memory-dream':'session-compaction')+'">'+title(kind)+'</span>';
35
+ const badge=taskStatusBadge;
36
+ const reason=value=>{const labels={pending_input:'Pending input',active_tasks:'Active tasks',recent_activity:'Recently active',unchanged_measurement:'No new measurement',no_measurement:'No recorded measurement',already_compacted:'Already compacted',context_changed:'Context changed; awaiting a fresh measurement',below_threshold:'Below context threshold',run_limit:'Run limit reached',model_window_unavailable:'Context window unavailable',missing_transcript:'Session transcript unavailable',agent_busy:'Agent is responding',gateway_stopping:'Gateway is stopping',COMPACTION_FAILED:'Compaction failed',INTERRUPTED:'Interrupted'};return labels[value]||String(value||'—').replace(/_/g,' ').toLowerCase().replace(/^./,c=>c.toUpperCase());};
37
+ const showError=message=>{byId('memory-error').textContent=message;byId('memory-error').hidden=!message;};
38
+ const table=(head,rows)=>{const widths=head.length===6?[17,15,15,14,29,10]:[24,18,19,17,22];return '<div class="table-wrap"><table class="data-table memory-table" style="min-width:'+(head.length===6?900:660)+'px"><colgroup>'+widths.map(w=>'<col style="width:'+w+'%">').join('')+'</colgroup><thead><tr>'+head.map(h=>'<th>'+h+'</th>').join('')+'</tr></thead><tbody>'+rows.join('')+'</tbody></table></div>';};
39
+ const query=()=>new URLSearchParams({agentId:field('agent'),kind:activity,status:selectedStatuses.size===statuses.length?'all':[...selectedStatuses].join(',')||'none',scope:dashboardScope,page:String(page),completedOnly:'true'});
40
+ function close(){detailGeneration++;selected=null;byId('memory-back').classList.remove('open');document.body.style.overflow='';if(focus?.isConnected)focus.focus();}
41
+ async function load(force){
42
+ if(document.hidden||byId('view-dreams').style.display==='none')return;
43
+ if(force){controller?.abort();busy=false;page=0;}
44
+ if(busy)return;
45
+ busy=true;const version=++generation;controller=new AbortController();
46
+ byId('memory-updated').textContent='Updating…';
47
+ try{
48
+ const response=await fetch(apiUrl('/dashboard/memory-activity')+'?'+query(),{signal:controller.signal});
49
+ if(response.status===401){onUnauthorized();return;}if(!response.ok)throw Error('HTTP '+response.status);
50
+ const data=await response.json();if(version!==generation)return;
51
+ byId('memory-range-note').textContent=dashboardScope==='all'?'All recorded history.':'Since '+new Date(data.since).toLocaleString('en-GB',{timeZone:data.timezone})+' ('+data.timezone+').';
52
+ const previous=field('agent');byId('memory-agent').innerHTML='<option value="">All agents</option>'+data.agents.map(a=>'<option value="'+txt(a)+'">'+txt(a)+'</option>').join('');byId('memory-agent').value=previous;
53
+ byId('memory-stats').innerHTML=[['Recorded runs',data.counts.runs],['Proposals to review',data.counts.pendingProposals],['Failed runs',data.counts.failed]].map(([label,n])=>'<div class="dash-stat"><span>'+label+'</span><strong>'+number(n)+'</strong></div>').join('');
54
+ showError((data.unavailable||[]).join(' · '));
55
+ byId('memory-results').innerHTML=data.runs.length?table(['Time','Agent','Activity','Status','Summary','Details'],data.runs.map(r=>'<tr data-memory-id="'+txt(r.id)+'" data-memory-agent="'+txt(r.agent)+'">'+('<td>'+timeCell(r.startedAt)+'</td><td>'+agentBadge(r.agent)+'</td><td>'+activityBadge(r.kind)+'</td><td>'+badge(r.status)+'</td><td>'+(r.kind==='memory_dream'?txt(r.summary||r.outcome):'<strong>'+number(r.beforeTokens)+' → '+number(r.afterTokens)+'</strong><br>'+percent(r.beforeTokens,r.contextWindow)+' → '+percent(r.afterTokens,r.contextWindow)+' of window<br>'+reduction(r.beforeTokens,r.afterTokens))+'</td>')+'<td><button data-memory-open>Inspect</button></td></tr>')):'<p class="empty">No recorded activities match these filters.</p>';
56
+ byId('memory-page').textContent='Page '+(page+1)+' · '+number(data.total)+' runs';byId('memory-prev').disabled=page===0;byId('memory-next').disabled=(page+1)*25>=data.total;
57
+ byId('memory-updated').textContent='Updated '+new Date().toLocaleTimeString('en-GB',{timeZone:dashboardTimezone});
58
+ if(selected?.status==='running'&&!detailBusy&&!applying)void detail(selected.agent,selected.id,true);
59
+ }catch(error){if(error.name!=='AbortError'&&version===generation){showError('Unable to load activity: '+error.message);byId('memory-updated').textContent='Retrying…';}}
60
+ finally{if(version===generation)busy=false;}
61
+ }
62
+ async function detail(agent,id,refresh=false){
63
+ const version=++detailGeneration;detailBusy=true;
64
+ if(!refresh){dashClose();focus=document.activeElement;selected={agent,id};}
65
+ const panel=byId('memory-drawer');
66
+ if(!refresh){byId('memory-back').classList.add('open');document.body.style.overflow='hidden';panel.focus();panel.innerHTML=dashboardCloseButton('memory')+'<p>Loading recorded details…</p>';}
67
+ try{
68
+ const response=await fetch(apiUrl('/dashboard/memory-activity')+'?'+new URLSearchParams({agentId:agent,id,completedOnly:'true'}));
69
+ if(response.status===401){onUnauthorized();return;}if(!response.ok)throw Error('HTTP '+response.status);
70
+ const {run:r}=await response.json();if(version!==detailGeneration)return;
71
+ let body=dashboardCloseButton('memory')+'<h1>'+title(r.kind)+'</h1><p class="live-note">'+agentBadge(agent)+' · '+txt(time(r.startedAt))+'</p>'+badge(r.status)+'<p id="memory-apply-result" role="status"></p>';
72
+ if(r.kind==='memory_dream'){
73
+ body+='<h2>Summary</h2><p>'+txt(r.summary||'No summary recorded')+'</p><p class="live-note">Mode: '+txt(r.mode)+' · Outcome: '+txt(r.outcome)+' · Tokens: '+number(r.tokens)+' · Sessions: '+number(r.sessions)+'</p>';
74
+ if(r.pendingProposals)body+='<button data-memory-accept="all" data-memory-ts="'+Number(r.ts)+'">Accept all pending ('+number(r.pendingProposals)+')</button>';
75
+ body+='<h2>Memory proposals</h2>'+(r.proposals||[]).map(p=>'<section class="dash-panel"><h3>'+txt(p.op)+' · '+txt(p.file)+'</h3><p>'+txt(p.reason)+'</p>'+(p.target?'<h4>Current text</h4><pre>'+txt(p.target)+'</pre>':'')+(p.content?'<h4>Proposed text</h4><pre>'+txt(p.content)+'</pre>':'')+'<p class="live-note">Score: '+number(p.score)+' · Recall: '+number(p.recallCount)+'</p>'+(p.accepted?badge('accepted'):r.mode==='propose'?'<button data-memory-accept="'+Number(p.index)+'" data-memory-ts="'+Number(r.ts)+'">Accept proposal</button>':'')+'</section>').join('');
76
+ }else{
77
+ body+='<h2>Run settings</h2><p>Context threshold '+number(r.config.thresholdPercent)+'% · Quiet '+number(r.config.quietMinutes)+' minutes · Maximum '+number(r.config.maxSessionsPerRun)+' sessions</p><p class="live-note">Ended: '+txt(time(r.endedAt))+'. Native context compaction preserves canonical chat history. Token values describe context, not cost. Before/after percentages use the context window; reduction uses the before value. Measurements use saved CLI metadata only—no additional model requests.</p><h2>Sessions</h2><p class="live-note">Showing '+number((r.items||[]).length)+' of '+number(r.itemCount??(r.items||[]).length)+' recorded sessions.</p>';
78
+ body+=table(['Session','Before','After','Reduced','Duration'],(r.items||[]).map(item=>'<tr><td style="white-space:normal;overflow-wrap:anywhere">'+txt(item.sessionId)+'</td><td>'+tokens(item.beforeTokens,item.contextWindow)+'</td><td>'+tokens(item.afterTokens,item.contextWindow)+'</td><td>'+reduction(item.beforeTokens,item.afterTokens)+'</td><td>'+txt(item.endedAt!=null?Math.round((item.endedAt-item.startedAt)/1000)+'s':'—')+'</td></tr>'));
79
+ }
80
+ const signature=JSON.stringify(r);selected.status=r.status;
81
+ if(!refresh||panel.dataset.record!==signature){
82
+ const scroll=panel.scrollTop,active=document.activeElement,inside=panel.contains(active),accept=active?.dataset?.memoryAccept;
83
+ const previousNotice=byId('memory-apply-result')?.textContent||'';const notice=previousNotice==='Detail refresh unavailable; retrying.'?'':previousNotice;
84
+ panel.innerHTML=body;panel.dataset.record=signature;panel.scrollTop=scroll;
85
+ byId('memory-apply-result').textContent=notice;
86
+ if(inside){const replacement=accept!==undefined?[...panel.querySelectorAll('[data-memory-accept]')].find(b=>b.dataset.memoryAccept===accept):active?.hasAttribute('data-memory-close')?panel.querySelector('[data-memory-close]'):panel; (replacement||panel).focus({preventScroll:true});}
87
+ }
88
+ }catch(error){if(version===detailGeneration){if(refresh&&byId('memory-apply-result'))byId('memory-apply-result').textContent='Detail refresh unavailable; retrying.';else panel.innerHTML=dashboardCloseButton('memory')+'<p class="error">Unable to read details: '+txt(error.message)+'</p>';}}finally{if(version===detailGeneration)detailBusy=false;}
89
+ }
90
+ byId('memory-results').addEventListener('click',e=>{const row=e.target.closest('[data-memory-id]');if(row)detail(row.dataset.memoryAgent,row.dataset.memoryId);});
91
+ byId('memory-back').addEventListener('click',async e=>{
92
+ if(e.target.id==='memory-back'||e.target.closest('[data-memory-close]')){close();return;}
93
+ const button=e.target.closest('[data-memory-accept]');if(!button||!selected||applying)return;applying=true;
94
+ const target={...selected};const version=detailGeneration;
95
+ byId('memory-drawer').querySelectorAll('[data-memory-accept]').forEach(b=>b.disabled=true);
96
+ try{
97
+ const payload={agentId:target.agent,ts:Number(button.dataset.memoryTs)};if(button.dataset.memoryAccept!=='all')payload.indexes=[Number(button.dataset.memoryAccept)];
98
+ const response=await fetch(apiUrl('/knowledge/dreams/apply'),{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload)});
99
+ if(response.status===401){onUnauthorized();return;}const result=await response.json();if(!response.ok)throw Error(result.error||'Apply failed');
100
+ if(version!==detailGeneration)return;await detail(target.agent,target.id,true);
101
+ if(selected?.id===target.id&&selected?.agent===target.agent)byId('memory-apply-result')&&(byId('memory-apply-result').textContent='Applied '+number(result.applied)+' · Skipped '+number(result.skipped)+' · Already accepted '+number(result.alreadyAccepted));
102
+ load(false);
103
+ }catch(error){if(version===detailGeneration){byId('memory-apply-result').textContent=error.message;byId('memory-drawer').querySelectorAll('[data-memory-accept]').forEach(b=>b.disabled=false);}}finally{applying=false;if(selected?.id===target.id&&selected?.agent===target.agent)byId('memory-drawer').querySelectorAll('[data-memory-accept]').forEach(b=>b.disabled=false);}
104
+ });
105
+ document.addEventListener('keydown',e=>{if(!selected)return;if(e.key==='Escape')close();if(e.key==='Tab'){const nodes=[...byId('memory-drawer').querySelectorAll('button,a,summary')].filter(n=>n.getClientRects().length),first=nodes[0],last=nodes[nodes.length-1];if(e.shiftKey&&(document.activeElement===first||document.activeElement===byId('memory-drawer'))){e.preventDefault();last?.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first?.focus();}}});
106
+ byId('memory-agent').addEventListener('change',()=>{close();load(true);});
107
+ byId('memory-kind').addEventListener('click',e=>{const button=e.target.closest('[data-kind]');if(!button)return;activity=button.dataset.kind;byId('memory-kind').querySelectorAll('[data-kind]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.kind===activity)));close();load(true);});
108
+ byId('memory-status').addEventListener('click',e=>{const button=e.target.closest('[data-status]');if(!button)return;const status=button.dataset.status;if(status==='all'){statuses.forEach(s=>selectedStatuses.add(s));}else if(selectedStatuses.has(status)){selectedStatuses.delete(status);}else{selectedStatuses.add(status);}byId('memory-status').querySelectorAll('[data-status]').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.status==='all'?selectedStatuses.size===statuses.length:selectedStatuses.has(b.dataset.status))));close();load(true);});
109
+ byId('memory-prev').onclick=()=>{page=Math.max(0,page-1);controller?.abort();busy=false;load(false);};byId('memory-next').onclick=()=>{page++;controller?.abort();busy=false;load(false);};
110
+ document.addEventListener('click',e=>{if(e.target.closest('.tab')&&selected)close();});
111
+ document.addEventListener('visibilitychange',()=>{if(!document.hidden)load(false);});
112
+ setInterval(()=>load(false),15000);window.__loadDreams=force=>load(Boolean(force));
113
+ })();
114
+ `;
115
+ //# sourceMappingURL=memory-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-activity.js","sourceRoot":"","sources":["../../src/ui/memory-activity.ts"],"names":[],"mappings":";;;AAAA,4FAA4F;AAC/E,QAAA,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;CAY3C,CAAC;AACW,QAAA,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgG7C,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** Refresh rendered data only; keep filters, theme, scroll and the open turn-detail panel. */
2
- export declare const tokenReportClient = "\nvar reportRefreshing=false;\nasync function refreshReport(){\n if(document.hidden||reportRefreshing)return;\n reportRefreshing=true;\n var status=document.getElementById('report-live');\n try{\n var response=await fetch(location.href,{cache:'no-store',headers:{Accept:'text/html'}});\n if(response.status===401){location.reload();return;}\n if(!response.ok)throw Error('Unavailable');\n var next=new DOMParser().parseFromString(await response.text(),'text/html');\n if(next.getElementById('login-form')){location.reload();return;}\n if(!next.getElementById('report-totals'))throw Error('Unavailable');\n var scrolls=Array.from(document.querySelectorAll('.table-scroll')).map(function(el){return el.scrollLeft;});\n var x=scrollX,y=scrollY;\n ['report-status','report-totals','report-footprint','report-distribution'].forEach(function(id){var old=document.getElementById(id),fresh=next.getElementById(id);if(old.innerHTML!==fresh.innerHTML)old.innerHTML=fresh.innerHTML;});\n var body=document.querySelector('.report-table tbody'),freshBody=next.querySelector('.report-table tbody');\n if(body.innerHTML!==freshBody.innerHTML)body.innerHTML=freshBody.innerHTML;\n var pagers=next.querySelectorAll('.report-pager');document.querySelectorAll('.report-pager').forEach(function(el,i){if(pagers[i])el.innerHTML=pagers[i].innerHTML;});\n var model=document.getElementById('turn-model'),freshModel=next.getElementById('turn-model'),selected=model.value;\n if(model.innerHTML!==freshModel.innerHTML){model.innerHTML=freshModel.innerHTML;if(selected&&!Array.from(model.options).some(function(o){return o.value===selected;})){var option=document.createElement('option');option.value=selected;option.textContent=selected+' (no turns on this page)';model.appendChild(option);}model.value=selected;}\n filter();if(typeof reportRenderDrawer==='function')reportRenderDrawer();document.querySelectorAll('.table-scroll').forEach(function(el,i){el.scrollLeft=scrolls[i]||0;});scrollTo(x,y);\n status.textContent='Live \u00B7 updated '+new Date().toLocaleTimeString();\n }catch(e){status.textContent='Reconnecting\u2026 \u00B7 data may be outdated';}\n finally{reportRefreshing=false;}\n}\nsetInterval(refreshReport,5000);\ndocument.addEventListener('visibilitychange',function(){if(!document.hidden)refreshReport();});\n";
2
+ export declare const tokenReportClient = "\nvar reportRefreshing=false;\nasync function refreshReport(){\n if(document.hidden||reportRefreshing)return;\n reportRefreshing=true;\n var status=document.getElementById('report-live');\n try{\n var response=await fetch(location.href,{cache:'no-store',headers:{Accept:'text/html'}});\n if(response.status===401){location.reload();return;}\n if(!response.ok)throw Error('Unavailable');\n var next=new DOMParser().parseFromString(await response.text(),'text/html');\n if(next.getElementById('login-form')){location.reload();return;}\n if(!next.getElementById('report-totals'))throw Error('Unavailable');\n var scrolls=Array.from(document.querySelectorAll('.table-scroll')).map(function(el){return el.scrollLeft;});\n var x=scrollX,y=scrollY;\n ['report-status','report-totals','report-footprint','report-distribution'].forEach(function(id){var old=document.getElementById(id),fresh=next.getElementById(id);if(old.innerHTML!==fresh.innerHTML)old.innerHTML=fresh.innerHTML;});\n var body=document.querySelector('.report-table tbody'),freshBody=next.querySelector('.report-table tbody');\n if(body.innerHTML!==freshBody.innerHTML)body.innerHTML=freshBody.innerHTML;\n var pagers=next.querySelectorAll('.report-pager');document.querySelectorAll('.report-pager').forEach(function(el,i){if(pagers[i])el.innerHTML=pagers[i].innerHTML;});\n var model=document.getElementById('turn-model'),freshModel=next.getElementById('turn-model'),selected=model.value;\n if(model.innerHTML!==freshModel.innerHTML){model.innerHTML=freshModel.innerHTML;if(selected&&!Array.from(model.options).some(function(o){return o.value===selected;})){var option=document.createElement('option');option.value=selected;option.textContent=selected+' (no turns on this page)';model.appendChild(option);}model.value=selected;}\n filter();if(typeof reportRenderDrawer==='function')reportRenderDrawer();document.querySelectorAll('.table-scroll').forEach(function(el,i){el.scrollLeft=scrolls[i]||0;});scrollTo(x,y);\n status.textContent='Live \u00B7 updated '+new Date().toLocaleTimeString('en-GB',{timeZone:dashboardTimezone});\n }catch(e){status.textContent='Reconnecting\u2026 \u00B7 data may be outdated';}\n finally{reportRefreshing=false;}\n}\nsetInterval(refreshReport,5000);\ndocument.addEventListener('visibilitychange',function(){if(!document.hidden)refreshReport();});\n";
3
3
  //# sourceMappingURL=token-report-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-report-client.d.ts","sourceRoot":"","sources":["../../src/ui/token-report-client.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,oxEA4B7B,CAAC"}
1
+ {"version":3,"file":"token-report-client.d.ts","sourceRoot":"","sources":["../../src/ui/token-report-client.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,wzEA4B7B,CAAC"}
@@ -24,7 +24,7 @@ async function refreshReport(){
24
24
  var model=document.getElementById('turn-model'),freshModel=next.getElementById('turn-model'),selected=model.value;
25
25
  if(model.innerHTML!==freshModel.innerHTML){model.innerHTML=freshModel.innerHTML;if(selected&&!Array.from(model.options).some(function(o){return o.value===selected;})){var option=document.createElement('option');option.value=selected;option.textContent=selected+' (no turns on this page)';model.appendChild(option);}model.value=selected;}
26
26
  filter();if(typeof reportRenderDrawer==='function')reportRenderDrawer();document.querySelectorAll('.table-scroll').forEach(function(el,i){el.scrollLeft=scrolls[i]||0;});scrollTo(x,y);
27
- status.textContent='Live · updated '+new Date().toLocaleTimeString();
27
+ status.textContent='Live · updated '+new Date().toLocaleTimeString('en-GB',{timeZone:dashboardTimezone});
28
28
  }catch(e){status.textContent='Reconnecting… · data may be outdated';}
29
29
  finally{reportRefreshing=false;}
30
30
  }
@@ -1,7 +1,9 @@
1
+ import type { CodexContextMeasurement } from '../session/codex-context';
1
2
  import type { RequestToolSchemas } from '../session/request-tool-capture';
2
3
  import type { ContextFootprint } from '../orchestration/context-footprint';
3
4
  /** Read-only admin report. Escape all stored model/tool metadata as untrusted text. */
4
5
  export interface TokenReportView {
6
+ timezone?: string;
5
7
  contextFootprint?: ContextFootprint;
6
8
  contextWindow?: {
7
9
  used: number;
@@ -44,10 +46,12 @@ export interface TokenReportView {
44
46
  triggerReason: string | null;
45
47
  }>;
46
48
  turns: Array<{
49
+ contextWindow?: CodexContextMeasurement;
47
50
  id: string;
48
51
  role: string;
49
52
  category: string;
50
53
  taskId?: string;
54
+ harness?: 'claude' | 'codex';
51
55
  inputModalities?: string[];
52
56
  inputSequences?: number[];
53
57
  inputTexts?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"token-report.d.ts","sourceRoot":"","sources":["../../src/ui/token-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-report.d.ts","sourceRoot":"","sources":["../../src/ui/token-report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACpF,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAG/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACjD,UAAU,CAAC,EAAE;QAAC,MAAM,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAA;KAAC,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IACtD,WAAW,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,WAAW,EAAC,MAAM,CAAC;QAAA,mBAAmB,EAAC,MAAM,CAAC;QAAA,eAAe,EAAC,MAAM,CAAC;QAAA,YAAY,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IAC5H,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChG,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC9H,KAAK,EAAE,KAAK,CAAC;QACX,aAAa,CAAC,EAAE,uBAAuB,CAAC;QACxC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;QAC1F,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QACtD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QACvG,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QACjE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACtE,KAAK,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;YAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACxM,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;YAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;SAAE,CAAC,CAAC;QAClJ,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,cAAc,CAAC,EAAE;YAAC,QAAQ,EAAC,MAAM,CAAC;YAAA,KAAK,EAAC,MAAM,CAAA;SAAC,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtI,CAAC,CAAC;CACJ;AA2FD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CA4FxF"}