@foothill/agent-move 1.0.6

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 (163) hide show
  1. package/.github/screenshot.png +0 -0
  2. package/README.md +266 -0
  3. package/bin/cli.js +229 -0
  4. package/package.json +53 -0
  5. package/packages/client/dist/assets/BufferResource-Ddjob236.js +185 -0
  6. package/packages/client/dist/assets/CanvasRenderer-B0w6SYyW.js +1 -0
  7. package/packages/client/dist/assets/Filter-NcMGuiK-.js +1 -0
  8. package/packages/client/dist/assets/RenderTargetSystem-DgAzY5_U.js +172 -0
  9. package/packages/client/dist/assets/WebGLRenderer-DUWXDPIX.js +156 -0
  10. package/packages/client/dist/assets/WebGPURenderer-C1HbrllR.js +41 -0
  11. package/packages/client/dist/assets/browserAll-CaF1Fl0O.js +14 -0
  12. package/packages/client/dist/assets/index-CMmR_RuS.css +1 -0
  13. package/packages/client/dist/assets/index-Dh8yWoLP.js +711 -0
  14. package/packages/client/dist/assets/webworkerAll-BJ6UhC7r.js +83 -0
  15. package/packages/client/dist/favicon.svg +27 -0
  16. package/packages/client/dist/index.html +167 -0
  17. package/packages/client/package.json +19 -0
  18. package/packages/server/dist/config.d.ts +12 -0
  19. package/packages/server/dist/config.d.ts.map +1 -0
  20. package/packages/server/dist/config.js +19 -0
  21. package/packages/server/dist/config.js.map +1 -0
  22. package/packages/server/dist/hooks/hook-event-manager.d.ts +39 -0
  23. package/packages/server/dist/hooks/hook-event-manager.d.ts.map +1 -0
  24. package/packages/server/dist/hooks/hook-event-manager.js +161 -0
  25. package/packages/server/dist/hooks/hook-event-manager.js.map +1 -0
  26. package/packages/server/dist/hooks/hook-installer.d.ts +14 -0
  27. package/packages/server/dist/hooks/hook-installer.d.ts.map +1 -0
  28. package/packages/server/dist/hooks/hook-installer.js +179 -0
  29. package/packages/server/dist/hooks/hook-installer.js.map +1 -0
  30. package/packages/server/dist/index.d.ts +4 -0
  31. package/packages/server/dist/index.d.ts.map +1 -0
  32. package/packages/server/dist/index.js +3544 -0
  33. package/packages/server/dist/index.js.map +1 -0
  34. package/packages/server/dist/routes/api.d.ts +4 -0
  35. package/packages/server/dist/routes/api.d.ts.map +1 -0
  36. package/packages/server/dist/routes/api.js +27 -0
  37. package/packages/server/dist/routes/api.js.map +1 -0
  38. package/packages/server/dist/state/activity-processor.d.ts +31 -0
  39. package/packages/server/dist/state/activity-processor.d.ts.map +1 -0
  40. package/packages/server/dist/state/activity-processor.js +417 -0
  41. package/packages/server/dist/state/activity-processor.js.map +1 -0
  42. package/packages/server/dist/state/agent-state-manager.d.ts +107 -0
  43. package/packages/server/dist/state/agent-state-manager.d.ts.map +1 -0
  44. package/packages/server/dist/state/agent-state-manager.js +1622 -0
  45. package/packages/server/dist/state/agent-state-manager.js.map +1 -0
  46. package/packages/server/dist/state/anomaly-detector.d.ts +23 -0
  47. package/packages/server/dist/state/anomaly-detector.d.ts.map +1 -0
  48. package/packages/server/dist/state/anomaly-detector.js +272 -0
  49. package/packages/server/dist/state/anomaly-detector.js.map +1 -0
  50. package/packages/server/dist/state/identity-manager.d.ts +31 -0
  51. package/packages/server/dist/state/identity-manager.d.ts.map +1 -0
  52. package/packages/server/dist/state/identity-manager.js +63 -0
  53. package/packages/server/dist/state/identity-manager.js.map +1 -0
  54. package/packages/server/dist/state/role-resolver.d.ts +23 -0
  55. package/packages/server/dist/state/role-resolver.d.ts.map +1 -0
  56. package/packages/server/dist/state/role-resolver.js +43 -0
  57. package/packages/server/dist/state/role-resolver.js.map +1 -0
  58. package/packages/server/dist/state/task-graph-manager.d.ts +31 -0
  59. package/packages/server/dist/state/task-graph-manager.d.ts.map +1 -0
  60. package/packages/server/dist/state/task-graph-manager.js +191 -0
  61. package/packages/server/dist/state/task-graph-manager.js.map +1 -0
  62. package/packages/server/dist/state/tool-chain-tracker.d.ts +23 -0
  63. package/packages/server/dist/state/tool-chain-tracker.d.ts.map +1 -0
  64. package/packages/server/dist/state/tool-chain-tracker.js +113 -0
  65. package/packages/server/dist/state/tool-chain-tracker.js.map +1 -0
  66. package/packages/server/dist/watcher/agent-watcher.d.ts +16 -0
  67. package/packages/server/dist/watcher/agent-watcher.d.ts.map +1 -0
  68. package/packages/server/dist/watcher/agent-watcher.js +0 -0
  69. package/packages/server/dist/watcher/agent-watcher.js.map +1 -0
  70. package/packages/server/dist/watcher/claude-paths.d.ts +32 -0
  71. package/packages/server/dist/watcher/claude-paths.d.ts.map +1 -0
  72. package/packages/server/dist/watcher/claude-paths.js +104 -0
  73. package/packages/server/dist/watcher/claude-paths.js.map +1 -0
  74. package/packages/server/dist/watcher/file-watcher.d.ts +17 -0
  75. package/packages/server/dist/watcher/file-watcher.d.ts.map +1 -0
  76. package/packages/server/dist/watcher/file-watcher.js +347 -0
  77. package/packages/server/dist/watcher/file-watcher.js.map +1 -0
  78. package/packages/server/dist/watcher/git-info.d.ts +3 -0
  79. package/packages/server/dist/watcher/git-info.d.ts.map +1 -0
  80. package/packages/server/dist/watcher/git-info.js +35 -0
  81. package/packages/server/dist/watcher/git-info.js.map +1 -0
  82. package/packages/server/dist/watcher/jsonl-parser.d.ts +21 -0
  83. package/packages/server/dist/watcher/jsonl-parser.d.ts.map +1 -0
  84. package/packages/server/dist/watcher/jsonl-parser.js +95 -0
  85. package/packages/server/dist/watcher/jsonl-parser.js.map +1 -0
  86. package/packages/server/dist/watcher/opencode/opencode-parser.d.ts +58 -0
  87. package/packages/server/dist/watcher/opencode/opencode-parser.d.ts.map +1 -0
  88. package/packages/server/dist/watcher/opencode/opencode-parser.js +256 -0
  89. package/packages/server/dist/watcher/opencode/opencode-parser.js.map +1 -0
  90. package/packages/server/dist/watcher/opencode/opencode-paths.d.ts +20 -0
  91. package/packages/server/dist/watcher/opencode/opencode-paths.d.ts.map +1 -0
  92. package/packages/server/dist/watcher/opencode/opencode-paths.js +35 -0
  93. package/packages/server/dist/watcher/opencode/opencode-paths.js.map +1 -0
  94. package/packages/server/dist/watcher/opencode/opencode-watcher.d.ts +49 -0
  95. package/packages/server/dist/watcher/opencode/opencode-watcher.d.ts.map +1 -0
  96. package/packages/server/dist/watcher/opencode/opencode-watcher.js +1292 -0
  97. package/packages/server/dist/watcher/opencode/opencode-watcher.js.map +1 -0
  98. package/packages/server/dist/watcher/session-scanner.d.ts +7 -0
  99. package/packages/server/dist/watcher/session-scanner.d.ts.map +1 -0
  100. package/packages/server/dist/watcher/session-scanner.js +69 -0
  101. package/packages/server/dist/watcher/session-scanner.js.map +1 -0
  102. package/packages/server/dist/ws/broadcaster.d.ts +18 -0
  103. package/packages/server/dist/ws/broadcaster.d.ts.map +1 -0
  104. package/packages/server/dist/ws/broadcaster.js +152 -0
  105. package/packages/server/dist/ws/broadcaster.js.map +1 -0
  106. package/packages/server/dist/ws/ws-handler.d.ts +6 -0
  107. package/packages/server/dist/ws/ws-handler.d.ts.map +1 -0
  108. package/packages/server/dist/ws/ws-handler.js +55 -0
  109. package/packages/server/dist/ws/ws-handler.js.map +1 -0
  110. package/packages/server/package.json +25 -0
  111. package/packages/shared/dist/constants/colors.d.ts +46 -0
  112. package/packages/shared/dist/constants/colors.d.ts.map +1 -0
  113. package/packages/shared/dist/constants/colors.js +178 -0
  114. package/packages/shared/dist/constants/colors.js.map +1 -0
  115. package/packages/shared/dist/constants/names.d.ts +6 -0
  116. package/packages/shared/dist/constants/names.d.ts.map +1 -0
  117. package/packages/shared/dist/constants/names.js +28 -0
  118. package/packages/shared/dist/constants/names.js.map +1 -0
  119. package/packages/shared/dist/constants/tools.d.ts +15 -0
  120. package/packages/shared/dist/constants/tools.d.ts.map +1 -0
  121. package/packages/shared/dist/constants/tools.js +120 -0
  122. package/packages/shared/dist/constants/tools.js.map +1 -0
  123. package/packages/shared/dist/constants/zones.d.ts +37 -0
  124. package/packages/shared/dist/constants/zones.d.ts.map +1 -0
  125. package/packages/shared/dist/constants/zones.js +128 -0
  126. package/packages/shared/dist/constants/zones.js.map +1 -0
  127. package/packages/shared/dist/index.d.ts +15 -0
  128. package/packages/shared/dist/index.d.ts.map +1 -0
  129. package/packages/shared/dist/index.js +7 -0
  130. package/packages/shared/dist/index.js.map +1 -0
  131. package/packages/shared/dist/types/agent.d.ts +85 -0
  132. package/packages/shared/dist/types/agent.d.ts.map +1 -0
  133. package/packages/shared/dist/types/agent.js +2 -0
  134. package/packages/shared/dist/types/agent.js.map +1 -0
  135. package/packages/shared/dist/types/anomaly.d.ts +18 -0
  136. package/packages/shared/dist/types/anomaly.d.ts.map +1 -0
  137. package/packages/shared/dist/types/anomaly.js +6 -0
  138. package/packages/shared/dist/types/anomaly.js.map +1 -0
  139. package/packages/shared/dist/types/hooks.d.ts +51 -0
  140. package/packages/shared/dist/types/hooks.d.ts.map +1 -0
  141. package/packages/shared/dist/types/hooks.js +2 -0
  142. package/packages/shared/dist/types/hooks.js.map +1 -0
  143. package/packages/shared/dist/types/jsonl.d.ts +62 -0
  144. package/packages/shared/dist/types/jsonl.d.ts.map +1 -0
  145. package/packages/shared/dist/types/jsonl.js +3 -0
  146. package/packages/shared/dist/types/jsonl.js.map +1 -0
  147. package/packages/shared/dist/types/task-graph.d.ts +20 -0
  148. package/packages/shared/dist/types/task-graph.d.ts.map +1 -0
  149. package/packages/shared/dist/types/task-graph.js +2 -0
  150. package/packages/shared/dist/types/task-graph.js.map +1 -0
  151. package/packages/shared/dist/types/tool-chain.d.ts +17 -0
  152. package/packages/shared/dist/types/tool-chain.d.ts.map +1 -0
  153. package/packages/shared/dist/types/tool-chain.js +2 -0
  154. package/packages/shared/dist/types/tool-chain.js.map +1 -0
  155. package/packages/shared/dist/types/websocket.d.ts +132 -0
  156. package/packages/shared/dist/types/websocket.d.ts.map +1 -0
  157. package/packages/shared/dist/types/websocket.js +2 -0
  158. package/packages/shared/dist/types/websocket.js.map +1 -0
  159. package/packages/shared/dist/types/zone.d.ts +21 -0
  160. package/packages/shared/dist/types/zone.d.ts.map +1 -0
  161. package/packages/shared/dist/types/zone.js +2 -0
  162. package/packages/shared/dist/types/zone.js.map +1 -0
  163. package/packages/shared/package.json +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE9B,qCAAqC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE;QAChC,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE/D,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/D,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAErC,iEAAiE;IACjE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;QAChB,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,IAA8C,CAAC;QACjE,IAAI,CAAC,KAAK,EAAE,eAAe,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,eAAe,cAAc,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3H,oDAAoD;QACpD,WAAW,CAAC,oBAAoB,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,mEAAmE;IACnE,MAAM,QAAQ,GAAmB;QAC/B,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,iGAAiG;IACjG,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAElC,gEAAgE;IAChE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC1D,MAAM;QACR,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7C,UAAU,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;IAElE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,wDAAwD;AACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import type { AgentStateManager } from '../state/agent-state-manager.js';
3
+ export declare function registerApiRoutes(app: FastifyInstance, stateManager: AgentStateManager): void;
4
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,QA2BtF"}
@@ -0,0 +1,27 @@
1
+ // dist/routes/api.js
2
+ function registerApiRoutes(app, stateManager) {
3
+ app.get("/api/health", async () => {
4
+ return { status: "ok", timestamp: Date.now() };
5
+ });
6
+ app.get("/api/state", async () => {
7
+ return {
8
+ agents: stateManager.getAll(),
9
+ timestamp: Date.now()
10
+ };
11
+ });
12
+ app.post("/api/agents/clean-done", async () => {
13
+ const removed = stateManager.removeDone();
14
+ return { removed, count: removed.length };
15
+ });
16
+ app.post("/api/agents/:id/shutdown", async (req, reply) => {
17
+ const agent = stateManager.getAll().find((a) => a.id === req.params.id);
18
+ if (!agent) {
19
+ return reply.status(404).send({ error: "Agent not found" });
20
+ }
21
+ stateManager.shutdown(req.params.id);
22
+ return { removed: req.params.id };
23
+ });
24
+ }
25
+ export {
26
+ registerApiRoutes
27
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,YAA+B;IACrF,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAChC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC/B,OAAO;YACL,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE;YAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,GAAG,CAAC,IAAI,CAA6B,0BAA0B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACpF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { AgentState, ActivityEntry } from '@agent-move/shared';
2
+ import type { ParsedActivity } from '../watcher/jsonl-parser.js';
3
+ import type { AnomalyDetector } from './anomaly-detector.js';
4
+ import type { ToolChainTracker } from './tool-chain-tracker.js';
5
+ import type { TaskGraphManager } from './task-graph-manager.js';
6
+ /** Tools that can block for a long time waiting for results. */
7
+ export declare const LONG_RUNNING_TOOLS: Set<string>;
8
+ /** Tools that block specifically waiting for user input/confirmation. */
9
+ export declare const USER_BLOCKING_TOOLS: Set<string>;
10
+ export interface ActivityProcessorDeps {
11
+ pendingTool: Set<string>;
12
+ anomalyDetector: AnomalyDetector;
13
+ toolChainTracker: ToolChainTracker;
14
+ taskGraphManager: TaskGraphManager;
15
+ namedAgentMap: Map<string, string>;
16
+ addHistory: (agentId: string, entry: ActivityEntry) => void;
17
+ summarizeToolInput: (input: unknown) => string;
18
+ queuePendingInfo: (parentId: string, info: {
19
+ name: string | null;
20
+ task: string | null;
21
+ team: string | null;
22
+ }) => void;
23
+ queueRecipient: (rootSessionId: string, sender: string, recipient: string) => void;
24
+ emit: (event: string, ...args: unknown[]) => void;
25
+ }
26
+ /**
27
+ * Process a parsed activity, mutating agent state.
28
+ * Replaces the switch statement in AgentStateManager.mutateAgentState().
29
+ */
30
+ export declare function processToolActivity(deps: ActivityProcessorDeps, agent: AgentState, activity: ParsedActivity, now: number): void;
31
+ //# sourceMappingURL=activity-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-processor.d.ts","sourceRoot":"","sources":["../../src/state/activity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,aAkB7B,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,aAE9B,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5D,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IACtH,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACnD;AA2KD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,MAAM,GACV,IAAI,CA4DN"}
@@ -0,0 +1,417 @@
1
+ // dist/state/activity-processor.js
2
+ import { execSync } from "child_process";
3
+ var TOOL_ZONE_MAP = {
4
+ // Files zone
5
+ Read: "files",
6
+ Write: "files",
7
+ Edit: "files",
8
+ Patch: "files",
9
+ Glob: "files",
10
+ NotebookEdit: "files",
11
+ // Terminal zone
12
+ Bash: "terminal",
13
+ // Search zone
14
+ Grep: "search",
15
+ WebSearch: "search",
16
+ // Web zone
17
+ WebFetch: "web",
18
+ mcp__chrome_devtools__navigate_page: "web",
19
+ mcp__chrome_devtools__click: "web",
20
+ mcp__chrome_devtools__fill: "web",
21
+ mcp__chrome_devtools__take_screenshot: "web",
22
+ mcp__chrome_devtools__take_snapshot: "web",
23
+ mcp__chrome_devtools__evaluate_script: "web",
24
+ // Thinking zone
25
+ EnterPlanMode: "thinking",
26
+ ExitPlanMode: "thinking",
27
+ AskUserQuestion: "thinking",
28
+ // Messaging zone
29
+ SendMessage: "messaging",
30
+ // Tasks zone
31
+ TaskCreate: "tasks",
32
+ TaskUpdate: "tasks",
33
+ TaskList: "tasks",
34
+ TaskGet: "tasks",
35
+ TodoRead: "tasks",
36
+ TodoWrite: "tasks",
37
+ // Spawn zone
38
+ Agent: "spawn",
39
+ TeamCreate: "spawn",
40
+ TeamDelete: "spawn"
41
+ };
42
+ function getZoneForTool(toolName) {
43
+ if (toolName.startsWith("mcp__"))
44
+ return "web";
45
+ return TOOL_ZONE_MAP[toolName] ?? "thinking";
46
+ }
47
+ var ZONES = [
48
+ // Row 0
49
+ {
50
+ id: "search",
51
+ label: "Search",
52
+ description: "Grep, WebSearch \u2014 Research & lookup",
53
+ icon: "\u{1F4DA}",
54
+ color: 15381256,
55
+ colStart: 0,
56
+ colSpan: 5,
57
+ rowStart: 0,
58
+ rowSpan: 1,
59
+ x: 0,
60
+ y: 0,
61
+ width: 0,
62
+ height: 0
63
+ },
64
+ {
65
+ id: "terminal",
66
+ label: "Terminal",
67
+ description: "Bash commands \u2014 Server room",
68
+ icon: "\u{1F4BB}",
69
+ color: 2278750,
70
+ colStart: 5,
71
+ colSpan: 3,
72
+ rowStart: 0,
73
+ rowSpan: 1,
74
+ x: 0,
75
+ y: 0,
76
+ width: 0,
77
+ height: 0
78
+ },
79
+ {
80
+ id: "web",
81
+ label: "Web",
82
+ description: "WebFetch, Browser \u2014 Network hub",
83
+ icon: "\u{1F310}",
84
+ color: 9133302,
85
+ colStart: 8,
86
+ colSpan: 4,
87
+ rowStart: 0,
88
+ rowSpan: 1,
89
+ x: 0,
90
+ y: 0,
91
+ width: 0,
92
+ height: 0
93
+ },
94
+ // Row 1
95
+ {
96
+ id: "files",
97
+ label: "Files",
98
+ description: "Read, Write, Edit, Glob \u2014 File storage",
99
+ icon: "\u{1F4C1}",
100
+ color: 3900150,
101
+ colStart: 0,
102
+ colSpan: 4,
103
+ rowStart: 1,
104
+ rowSpan: 1,
105
+ x: 0,
106
+ y: 0,
107
+ width: 0,
108
+ height: 0
109
+ },
110
+ {
111
+ id: "thinking",
112
+ label: "Thinking",
113
+ description: "Planning, Questions \u2014 Conference area",
114
+ icon: "\u{1F4AD}",
115
+ color: 16347926,
116
+ colStart: 4,
117
+ colSpan: 5,
118
+ rowStart: 1,
119
+ rowSpan: 1,
120
+ x: 0,
121
+ y: 0,
122
+ width: 0,
123
+ height: 0
124
+ },
125
+ {
126
+ id: "messaging",
127
+ label: "Messaging",
128
+ description: "SendMessage, Teams \u2014 Chat & relax",
129
+ icon: "\u{1F4AC}",
130
+ color: 15485081,
131
+ colStart: 9,
132
+ colSpan: 3,
133
+ rowStart: 1,
134
+ rowSpan: 1,
135
+ x: 0,
136
+ y: 0,
137
+ width: 0,
138
+ height: 0
139
+ },
140
+ // Row 2
141
+ {
142
+ id: "spawn",
143
+ label: "Spawn",
144
+ description: "Agent spawn/despawn \u2014 Entry portal",
145
+ icon: "\u{1F300}",
146
+ color: 11032055,
147
+ colStart: 0,
148
+ colSpan: 3,
149
+ rowStart: 2,
150
+ rowSpan: 1,
151
+ x: 0,
152
+ y: 0,
153
+ width: 0,
154
+ height: 0
155
+ },
156
+ {
157
+ id: "idle",
158
+ label: "Idle",
159
+ description: "Idle agents rest here \u2014 Kitchen & lounge",
160
+ icon: "\u2615",
161
+ color: 7041664,
162
+ colStart: 3,
163
+ colSpan: 5,
164
+ rowStart: 2,
165
+ rowSpan: 1,
166
+ x: 0,
167
+ y: 0,
168
+ width: 0,
169
+ height: 0
170
+ },
171
+ {
172
+ id: "tasks",
173
+ label: "Tasks",
174
+ description: "TaskCreate, TaskUpdate \u2014 Kanban & planning",
175
+ icon: "\u{1F4CB}",
176
+ color: 1357990,
177
+ colStart: 8,
178
+ colSpan: 4,
179
+ rowStart: 2,
180
+ rowSpan: 1,
181
+ x: 0,
182
+ y: 0,
183
+ width: 0,
184
+ height: 0
185
+ }
186
+ ];
187
+ var ZONE_MAP = new Map(ZONES.map((z) => [z.id, z]));
188
+ var branchCache = /* @__PURE__ */ new Map();
189
+ var CACHE_TTL = 3e4;
190
+ var MAX_CACHE_SIZE = 100;
191
+ function getGitBranch(projectPath) {
192
+ const cached = branchCache.get(projectPath);
193
+ if (cached && Date.now() - cached.ts < CACHE_TTL)
194
+ return cached.branch;
195
+ try {
196
+ const branch = execSync("git rev-parse --abbrev-ref HEAD", {
197
+ cwd: projectPath,
198
+ timeout: 5e3,
199
+ encoding: "utf-8",
200
+ stdio: ["ignore", "pipe", "ignore"]
201
+ }).trim() || null;
202
+ branchCache.set(projectPath, { branch, ts: Date.now() });
203
+ pruneCache();
204
+ return branch;
205
+ } catch {
206
+ branchCache.set(projectPath, { branch: null, ts: Date.now() });
207
+ return null;
208
+ }
209
+ }
210
+ function pruneCache() {
211
+ if (branchCache.size <= MAX_CACHE_SIZE)
212
+ return;
213
+ const entries = [...branchCache.entries()].sort((a, b) => a[1].ts - b[1].ts);
214
+ const toRemove = entries.slice(0, branchCache.size - MAX_CACHE_SIZE);
215
+ for (const [key] of toRemove)
216
+ branchCache.delete(key);
217
+ }
218
+ var LONG_RUNNING_TOOLS = /* @__PURE__ */ new Set([
219
+ "Bash",
220
+ "Agent",
221
+ "WebFetch",
222
+ "WebSearch",
223
+ // Tools that block waiting for user input
224
+ "AskUserQuestion",
225
+ // Reasoning / extended thinking pseudo-tool (emitted for OpenCode reasoning parts)
226
+ "thinking",
227
+ // Browser/playwright tools that wait for navigation or network
228
+ "mcp__playwright__browser_navigate",
229
+ "mcp__playwright__browser_wait_for",
230
+ "mcp__playwright__browser_run_code",
231
+ "mcp__chrome-devtools__navigate_page",
232
+ "mcp__chrome-devtools__wait_for",
233
+ "mcp__chrome-devtools__evaluate_script",
234
+ "mcp__chrome-devtools__performance_start_trace",
235
+ "mcp__chrome-devtools__performance_stop_trace"
236
+ ]);
237
+ var USER_BLOCKING_TOOLS = /* @__PURE__ */ new Set([
238
+ "AskUserQuestion"
239
+ ]);
240
+ function processToolUseActivity(deps, agent, activity, now) {
241
+ const { pendingTool, anomalyDetector, toolChainTracker, taskGraphManager, namedAgentMap, addHistory, summarizeToolInput, queuePendingInfo, queueRecipient, emit } = deps;
242
+ const agentId = agent.id;
243
+ const toolName = activity.toolName ?? "";
244
+ if (LONG_RUNNING_TOOLS.has(toolName)) {
245
+ pendingTool.add(agentId);
246
+ } else {
247
+ pendingTool.delete(agentId);
248
+ }
249
+ agent.isWaitingForUser = USER_BLOCKING_TOOLS.has(toolName);
250
+ const prevZone = agent.currentZone;
251
+ agent.currentTool = activity.toolName ?? null;
252
+ agent.currentActivity = summarizeToolInput(activity.toolInput) || null;
253
+ agent.currentZone = getZoneForTool(activity.toolName ?? "");
254
+ agent.toolUseCount++;
255
+ anomalyDetector.setAgentName(agentId, agent.agentName ?? agent.projectName ?? agentId.slice(0, 10));
256
+ anomalyDetector.checkToolUse(agentId, toolName);
257
+ toolChainTracker.recordToolUse(agentId, toolName);
258
+ if (toolName === "TaskCreate" || toolName === "TaskUpdate") {
259
+ const graphChanged = taskGraphManager.processToolUse(agentId, agent.agentName ?? agentId.slice(0, 10), toolName, activity.toolInput, agent.projectName, agent.rootSessionId);
260
+ if (graphChanged) {
261
+ emit("taskgraph:changed", { data: taskGraphManager.getSnapshot(), timestamp: Date.now() });
262
+ }
263
+ }
264
+ if (agent.projectPath) {
265
+ agent.gitBranch = getGitBranch(agent.projectPath);
266
+ }
267
+ if (activity.toolInput) {
268
+ const input = activity.toolInput;
269
+ const filePath = input.file_path;
270
+ if (filePath) {
271
+ agent.recentFiles = [filePath, ...agent.recentFiles.filter((f) => f !== filePath)].slice(0, 10);
272
+ }
273
+ }
274
+ if (activity.toolName === "EnterPlanMode") {
275
+ agent.isPlanning = true;
276
+ } else if (activity.toolName === "ExitPlanMode") {
277
+ agent.isPlanning = false;
278
+ }
279
+ if (activity.toolName === "TeamCreate" && activity.toolInput) {
280
+ agent.teamName = activity.toolInput.team_name ?? null;
281
+ agent.role = "team-lead";
282
+ if (!agent.agentName) {
283
+ agent.agentName = "team-lead";
284
+ }
285
+ namedAgentMap.set(`${agent.rootSessionId}:team-lead`, agentId);
286
+ }
287
+ if (activity.toolName === "SendMessage") {
288
+ agent.currentZone = "messaging";
289
+ if (activity.toolInput) {
290
+ const input = activity.toolInput;
291
+ const recipient = input.recipient;
292
+ agent.messageTarget = recipient ?? null;
293
+ const senderIdentity = agent.agentName || (agent.role === "team-lead" ? "team-lead" : null);
294
+ if (recipient && senderIdentity) {
295
+ queueRecipient(agent.rootSessionId, senderIdentity, recipient);
296
+ }
297
+ }
298
+ } else {
299
+ agent.messageTarget = null;
300
+ }
301
+ if (activity.toolName === "Agent" && activity.toolInput) {
302
+ const input = activity.toolInput;
303
+ const desc = input.description ?? input.prompt ?? "";
304
+ const name = input.name ?? null;
305
+ const teamName = input.team_name ?? null;
306
+ queuePendingInfo(agentId, {
307
+ name,
308
+ task: desc ? desc.length > 80 ? desc.slice(0, 77) + "..." : desc : null,
309
+ team: teamName
310
+ });
311
+ }
312
+ let diffData;
313
+ if (activity.toolName === "Edit" && activity.toolInput) {
314
+ const input = activity.toolInput;
315
+ const fp = input.file_path ?? "";
316
+ const oldStr = input.old_string ?? "";
317
+ const newStr = input.new_string ?? "";
318
+ if (fp && (oldStr || newStr)) {
319
+ diffData = {
320
+ filePath: fp,
321
+ oldText: oldStr.length > 500 ? oldStr.slice(0, 500) + "..." : oldStr,
322
+ newText: newStr.length > 500 ? newStr.slice(0, 500) + "..." : newStr
323
+ };
324
+ }
325
+ }
326
+ if (diffData) {
327
+ agent.recentDiffs.unshift({ ...diffData, timestamp: now });
328
+ if (agent.recentDiffs.length > 10)
329
+ agent.recentDiffs.pop();
330
+ }
331
+ addHistory(agentId, {
332
+ timestamp: now,
333
+ kind: "tool",
334
+ tool: activity.toolName ?? void 0,
335
+ toolArgs: summarizeToolInput(activity.toolInput),
336
+ zone: agent.currentZone,
337
+ diff: diffData
338
+ });
339
+ if (prevZone !== agent.currentZone) {
340
+ addHistory(agentId, {
341
+ timestamp: now,
342
+ kind: "zone-change",
343
+ zone: agent.currentZone,
344
+ prevZone
345
+ });
346
+ }
347
+ if (activity.inputTokens !== void 0 || activity.outputTokens !== void 0) {
348
+ agent.totalInputTokens += activity.inputTokens ?? 0;
349
+ agent.totalOutputTokens += activity.outputTokens ?? 0;
350
+ agent.cacheReadTokens += activity.cacheReadTokens ?? 0;
351
+ agent.cacheCreationTokens += activity.cacheCreationTokens ?? 0;
352
+ if (activity.inputTokens !== void 0) {
353
+ agent.contextTokens = activity.inputTokens + (activity.cacheReadTokens ?? 0);
354
+ agent.contextCacheTokens = activity.cacheReadTokens ?? 0;
355
+ }
356
+ }
357
+ }
358
+ function processToolActivity(deps, agent, activity, now) {
359
+ const { pendingTool, anomalyDetector, addHistory } = deps;
360
+ const agentId = agent.id;
361
+ switch (activity.type) {
362
+ case "tool_use": {
363
+ processToolUseActivity(deps, agent, activity, now);
364
+ break;
365
+ }
366
+ case "text":
367
+ pendingTool.delete(agentId);
368
+ agent.isWaitingForUser = false;
369
+ if (activity.text) {
370
+ agent.speechText = activity.text;
371
+ agent.currentActivity = activity.text;
372
+ if (!agent.taskDescription) {
373
+ agent.taskDescription = activity.text;
374
+ }
375
+ addHistory(agentId, {
376
+ timestamp: now,
377
+ kind: "text",
378
+ text: activity.text
379
+ });
380
+ }
381
+ if (activity.inputTokens !== void 0 || activity.outputTokens !== void 0) {
382
+ agent.totalInputTokens += activity.inputTokens ?? 0;
383
+ agent.totalOutputTokens += activity.outputTokens ?? 0;
384
+ agent.cacheReadTokens += activity.cacheReadTokens ?? 0;
385
+ agent.cacheCreationTokens += activity.cacheCreationTokens ?? 0;
386
+ if (activity.inputTokens !== void 0) {
387
+ agent.contextTokens = activity.inputTokens + (activity.cacheReadTokens ?? 0);
388
+ agent.contextCacheTokens = activity.cacheReadTokens ?? 0;
389
+ }
390
+ }
391
+ break;
392
+ case "token_usage":
393
+ pendingTool.delete(agentId);
394
+ agent.isWaitingForUser = false;
395
+ agent.totalInputTokens += activity.inputTokens ?? 0;
396
+ agent.totalOutputTokens += activity.outputTokens ?? 0;
397
+ agent.cacheReadTokens += activity.cacheReadTokens ?? 0;
398
+ agent.cacheCreationTokens += activity.cacheCreationTokens ?? 0;
399
+ if (activity.inputTokens !== void 0) {
400
+ agent.contextTokens = activity.inputTokens + (activity.cacheReadTokens ?? 0);
401
+ agent.contextCacheTokens = activity.cacheReadTokens ?? 0;
402
+ }
403
+ anomalyDetector.checkTokenUsage(agentId, activity.inputTokens ?? 0, activity.outputTokens ?? 0);
404
+ addHistory(agentId, {
405
+ timestamp: now,
406
+ kind: "tokens",
407
+ inputTokens: activity.inputTokens ?? 0,
408
+ outputTokens: activity.outputTokens ?? 0
409
+ });
410
+ break;
411
+ }
412
+ }
413
+ export {
414
+ LONG_RUNNING_TOOLS,
415
+ USER_BLOCKING_TOOLS,
416
+ processToolActivity
417
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-processor.js","sourceRoot":"","sources":["../../src/state/activity-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM;IACN,OAAO;IACP,UAAU;IACV,WAAW;IACX,0CAA0C;IAC1C,iBAAiB;IACjB,mFAAmF;IACnF,UAAU;IACV,+DAA+D;IAC/D,mCAAmC;IACnC,mCAAmC;IACnC,mCAAmC;IACnC,qCAAqC;IACrC,gCAAgC;IAChC,uCAAuC;IACvC,+CAA+C;IAC/C,8CAA8C;CAC/C,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,iBAAiB;CAClB,CAAC,CAAC;AAeH;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,IAA2B,EAC3B,KAAiB,EACjB,QAAwB,EACxB,GAAW;IAEX,MAAM,EACJ,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAChE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,IAAI,GACtF,GAAG,IAAI,CAAC;IAET,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEzC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;IACnC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC9C,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACvE,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,CAAC,YAAY,EAAE,CAAC;IAErB,+BAA+B;IAC/B,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAElD,sBAAsB;IACtB,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAClD,OAAO,EACP,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EACvC,QAAQ,EACR,QAAQ,CAAC,SAAS,EAClB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,aAAa,CACpB,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,gBAAgB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,6CAA6C;IAC7C,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAoC,CAAC;QAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,SAA+B,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QAC1C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC7D,KAAK,CAAC,QAAQ,GAAI,QAAQ,CAAC,SAAqC,CAAC,SAAmB,IAAI,IAAI,CAAC;QAC7F,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;QACzB,6EAA6E;QAC7E,qDAAqD;QACrD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;QAChC,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,YAAY,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACxC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAoC,CAAC;YAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAA+B,CAAC;YACxD,uDAAuD;YACvD,KAAK,CAAC,aAAa,GAAG,SAAS,IAAI,IAAI,CAAC;YACxC,iEAAiE;YACjE,kEAAkE;YAClE,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5F,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;gBAChC,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAoC,CAAC;QAC5D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAW,CAAC;QACjE,MAAM,IAAI,GAAI,KAAK,CAAC,IAA2B,IAAI,IAAI,CAAC;QACxD,MAAM,QAAQ,GAAI,KAAK,CAAC,SAAgC,IAAI,IAAI,CAAC;QACjE,gBAAgB,CAAC,OAAO,EAAE;YACxB,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACzE,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAA4E,CAAC;IACjF,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAoC,CAAC;QAC5D,MAAM,EAAE,GAAI,KAAK,CAAC,SAAoB,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAI,KAAK,CAAC,UAAqB,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAI,KAAK,CAAC,UAAqB,IAAI,EAAE,CAAC;QAClD,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;YAC7B,QAAQ,GAAG;gBACT,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM;gBACpE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,OAAO,EAAE;QAClB,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ,CAAC,QAAQ,IAAI,SAAS;QACpC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChD,IAAI,EAAE,KAAK,CAAC,WAAW;QACvB,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,UAAU,CAAC,OAAO,EAAE;YAClB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IACtF,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC9E,KAAK,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QACpD,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;QACtD,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;QACvD,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;QAC/D,2FAA2F;QAC3F,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;YAC/E,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA2B,EAC3B,KAAiB,EACjB,QAAwB,EACxB,GAAW;IAEX,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IAEzB,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,KAAK,MAAM;YACT,wEAAwE;YACxE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC/B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACjC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC3B,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACxC,CAAC;gBACD,UAAU,CAAC,OAAO,EAAE;oBAClB,SAAS,EAAE,GAAG;oBACd,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,kDAAkD;YAClD,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC9E,KAAK,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;gBACpD,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;gBACtD,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;gBACvD,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;gBAC/D,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACvC,KAAK,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;oBACnF,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,MAAM;QAER,KAAK,aAAa;YAChB,4DAA4D;YAC5D,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC/B,KAAK,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;YACpD,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;YACtD,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;YACvD,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;YAC/D,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACvC,KAAK,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;gBACjF,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;YACzD,CAAC;YACD,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YAChG,UAAU,CAAC,OAAO,EAAE;gBAClB,SAAS,EAAE,GAAG;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC;gBACtC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;aACzC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { AgentState, ActivityEntry, TimelineEvent, ToolChainData, TaskGraphData } from '@agent-move/shared';
3
+ import type { ParsedActivity } from '../watcher/jsonl-parser.js';
4
+ import type { SessionInfo } from '../watcher/claude-paths.js';
5
+ import { AnomalyDetector } from './anomaly-detector.js';
6
+ import { ToolChainTracker } from './tool-chain-tracker.js';
7
+ import { TaskGraphManager } from './task-graph-manager.js';
8
+ export declare class AgentStateManager extends EventEmitter {
9
+ private agents;
10
+ private idleTimers;
11
+ private shutdownTimers;
12
+ /** Agents with a pending tool call (waiting for result) */
13
+ private pendingTool;
14
+ private activityHistory;
15
+ private timelineBuffer;
16
+ /** Compound queue of subagent metadata from Agent tool calls, keyed by parent agent ID */
17
+ private pendingSubagentInfo;
18
+ /** Maps sessionId → canonical agent ID (for merging multiple sessions into one agent) */
19
+ private sessionToAgent;
20
+ /** Maps rootSessionId:agentName → canonical agent ID (scoped per terminal session) */
21
+ private namedAgentMap;
22
+ /** Agents that are hidden pending identity confirmation — no events emitted */
23
+ private hiddenAgents;
24
+ /** Timers to promote hidden agents after timeout */
25
+ private identityTimers;
26
+ /** Queued recipient names from SendMessage calls: rootSessionId → [{sender, recipient}] */
27
+ private pendingRecipients;
28
+ /** Anomaly detection for token spikes, retry loops, stuck agents */
29
+ readonly anomalyDetector: AnomalyDetector;
30
+ /** Tool chain transition tracking */
31
+ readonly toolChainTracker: ToolChainTracker;
32
+ /** Task dependency graph tracking */
33
+ readonly taskGraphManager: TaskGraphManager;
34
+ constructor();
35
+ getAll(): AgentState[];
36
+ get(id: string): AgentState | undefined;
37
+ /** Flush pending subagent/recipient queues — call after initial replay to prevent stale matches */
38
+ flushPendingQueues(): void;
39
+ getHistory(agentId: string): ActivityEntry[];
40
+ getTimeline(): TimelineEvent[];
41
+ getToolChainSnapshot(): ToolChainData;
42
+ getTaskGraphSnapshot(): TaskGraphData;
43
+ /** Check if any named agents exist for a given root session */
44
+ private hasNamedAgentsForRoot;
45
+ private recordTimeline;
46
+ private addHistory;
47
+ private summarizeToolInput;
48
+ /**
49
+ * Resolve a sessionId to its canonical agent ID.
50
+ */
51
+ private resolveAgentId;
52
+ /**
53
+ * Compute the rootSessionId for a new agent.
54
+ * - Main agents are their own root.
55
+ * - Subagents inherit from their parent (or fallback to parentId/own sessionId).
56
+ */
57
+ private computeRootSessionId;
58
+ /** Build the deps object required by identity-manager functions. */
59
+ private get identityDeps();
60
+ /** Build the deps object required by activity-processor functions. */
61
+ private get activityDeps();
62
+ /**
63
+ * Called when ANY new bytes appear in a session's JSONL file,
64
+ * even if the parser doesn't extract a meaningful activity.
65
+ * This keeps the agent alive during long-running tool executions
66
+ * (e.g. Bash commands) where the tool result writes to the file
67
+ * but doesn't produce a ParsedActivity.
68
+ */
69
+ heartbeat(sessionId: string): void;
70
+ processMessage(sessionId: string, activity: ParsedActivity, sessionInfo: SessionInfo): void;
71
+ /** Apply activity and emit update event (for visible agents) */
72
+ private applyActivity;
73
+ /** Apply activity silently — no events emitted (for hidden agents) */
74
+ private applyActivitySilent;
75
+ /** Mutate agent state based on activity (shared between silent and loud paths) */
76
+ private mutateAgentState;
77
+ private queuePendingInfo;
78
+ private popPendingInfo;
79
+ private queueRecipient;
80
+ /** Pop a queued recipient name matching a specific sender */
81
+ private popRecipientBySender;
82
+ private clearTimers;
83
+ private resetIdleTimer;
84
+ private startShutdownTimer;
85
+ removeDone(): string[];
86
+ shutdown(sessionId: string): void;
87
+ /** Hook: new Claude Code session started */
88
+ hookSessionStart(sessionId: string, _cwd: string): void;
89
+ /** Hook: session ended — definitively shut down the agent */
90
+ hookSessionEnd(sessionId: string): void;
91
+ /** Hook: user submitted a prompt — agent is now running */
92
+ hookUserPromptSubmit(sessionId: string): void;
93
+ /** Hook: agent finished responding (Stop event) */
94
+ hookStop(sessionId: string, lastMessage?: string): void;
95
+ /** Hook: context compaction is starting */
96
+ hookPreCompact(sessionId: string): void;
97
+ /** Hook: tool is about to execute (PreToolUse) */
98
+ hookPreToolUse(sessionId: string, toolName: string, toolInput: unknown, _toolUseId: string): void;
99
+ /** Hook: background task completed (TaskCompleted event) */
100
+ hookTaskCompleted(sessionId: string, taskId: string, taskSubject?: string): void;
101
+ /** Hook: tool completed (PostToolUse = success, PostToolUseFailure = failure) */
102
+ hookPostToolUse(sessionId: string, _toolName: string, _toolUseId: string, success: boolean): void;
103
+ private setPhase;
104
+ dispose(): void;
105
+ private clearAllTimers;
106
+ }
107
+ //# sourceMappingURL=agent-state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-state-manager.d.ts","sourceRoot":"","sources":["../../src/state/agent-state-manager.ts"],"names":[],"mappings":"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"}