@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.
- package/.github/screenshot.png +0 -0
- package/README.md +266 -0
- package/bin/cli.js +229 -0
- package/package.json +53 -0
- package/packages/client/dist/assets/BufferResource-Ddjob236.js +185 -0
- package/packages/client/dist/assets/CanvasRenderer-B0w6SYyW.js +1 -0
- package/packages/client/dist/assets/Filter-NcMGuiK-.js +1 -0
- package/packages/client/dist/assets/RenderTargetSystem-DgAzY5_U.js +172 -0
- package/packages/client/dist/assets/WebGLRenderer-DUWXDPIX.js +156 -0
- package/packages/client/dist/assets/WebGPURenderer-C1HbrllR.js +41 -0
- package/packages/client/dist/assets/browserAll-CaF1Fl0O.js +14 -0
- package/packages/client/dist/assets/index-CMmR_RuS.css +1 -0
- package/packages/client/dist/assets/index-Dh8yWoLP.js +711 -0
- package/packages/client/dist/assets/webworkerAll-BJ6UhC7r.js +83 -0
- package/packages/client/dist/favicon.svg +27 -0
- package/packages/client/dist/index.html +167 -0
- package/packages/client/package.json +19 -0
- package/packages/server/dist/config.d.ts +12 -0
- package/packages/server/dist/config.d.ts.map +1 -0
- package/packages/server/dist/config.js +19 -0
- package/packages/server/dist/config.js.map +1 -0
- package/packages/server/dist/hooks/hook-event-manager.d.ts +39 -0
- package/packages/server/dist/hooks/hook-event-manager.d.ts.map +1 -0
- package/packages/server/dist/hooks/hook-event-manager.js +161 -0
- package/packages/server/dist/hooks/hook-event-manager.js.map +1 -0
- package/packages/server/dist/hooks/hook-installer.d.ts +14 -0
- package/packages/server/dist/hooks/hook-installer.d.ts.map +1 -0
- package/packages/server/dist/hooks/hook-installer.js +179 -0
- package/packages/server/dist/hooks/hook-installer.js.map +1 -0
- package/packages/server/dist/index.d.ts +4 -0
- package/packages/server/dist/index.d.ts.map +1 -0
- package/packages/server/dist/index.js +3544 -0
- package/packages/server/dist/index.js.map +1 -0
- package/packages/server/dist/routes/api.d.ts +4 -0
- package/packages/server/dist/routes/api.d.ts.map +1 -0
- package/packages/server/dist/routes/api.js +27 -0
- package/packages/server/dist/routes/api.js.map +1 -0
- package/packages/server/dist/state/activity-processor.d.ts +31 -0
- package/packages/server/dist/state/activity-processor.d.ts.map +1 -0
- package/packages/server/dist/state/activity-processor.js +417 -0
- package/packages/server/dist/state/activity-processor.js.map +1 -0
- package/packages/server/dist/state/agent-state-manager.d.ts +107 -0
- package/packages/server/dist/state/agent-state-manager.d.ts.map +1 -0
- package/packages/server/dist/state/agent-state-manager.js +1622 -0
- package/packages/server/dist/state/agent-state-manager.js.map +1 -0
- package/packages/server/dist/state/anomaly-detector.d.ts +23 -0
- package/packages/server/dist/state/anomaly-detector.d.ts.map +1 -0
- package/packages/server/dist/state/anomaly-detector.js +272 -0
- package/packages/server/dist/state/anomaly-detector.js.map +1 -0
- package/packages/server/dist/state/identity-manager.d.ts +31 -0
- package/packages/server/dist/state/identity-manager.d.ts.map +1 -0
- package/packages/server/dist/state/identity-manager.js +63 -0
- package/packages/server/dist/state/identity-manager.js.map +1 -0
- package/packages/server/dist/state/role-resolver.d.ts +23 -0
- package/packages/server/dist/state/role-resolver.d.ts.map +1 -0
- package/packages/server/dist/state/role-resolver.js +43 -0
- package/packages/server/dist/state/role-resolver.js.map +1 -0
- package/packages/server/dist/state/task-graph-manager.d.ts +31 -0
- package/packages/server/dist/state/task-graph-manager.d.ts.map +1 -0
- package/packages/server/dist/state/task-graph-manager.js +191 -0
- package/packages/server/dist/state/task-graph-manager.js.map +1 -0
- package/packages/server/dist/state/tool-chain-tracker.d.ts +23 -0
- package/packages/server/dist/state/tool-chain-tracker.d.ts.map +1 -0
- package/packages/server/dist/state/tool-chain-tracker.js +113 -0
- package/packages/server/dist/state/tool-chain-tracker.js.map +1 -0
- package/packages/server/dist/watcher/agent-watcher.d.ts +16 -0
- package/packages/server/dist/watcher/agent-watcher.d.ts.map +1 -0
- package/packages/server/dist/watcher/agent-watcher.js +0 -0
- package/packages/server/dist/watcher/agent-watcher.js.map +1 -0
- package/packages/server/dist/watcher/claude-paths.d.ts +32 -0
- package/packages/server/dist/watcher/claude-paths.d.ts.map +1 -0
- package/packages/server/dist/watcher/claude-paths.js +104 -0
- package/packages/server/dist/watcher/claude-paths.js.map +1 -0
- package/packages/server/dist/watcher/file-watcher.d.ts +17 -0
- package/packages/server/dist/watcher/file-watcher.d.ts.map +1 -0
- package/packages/server/dist/watcher/file-watcher.js +347 -0
- package/packages/server/dist/watcher/file-watcher.js.map +1 -0
- package/packages/server/dist/watcher/git-info.d.ts +3 -0
- package/packages/server/dist/watcher/git-info.d.ts.map +1 -0
- package/packages/server/dist/watcher/git-info.js +35 -0
- package/packages/server/dist/watcher/git-info.js.map +1 -0
- package/packages/server/dist/watcher/jsonl-parser.d.ts +21 -0
- package/packages/server/dist/watcher/jsonl-parser.d.ts.map +1 -0
- package/packages/server/dist/watcher/jsonl-parser.js +95 -0
- package/packages/server/dist/watcher/jsonl-parser.js.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-parser.d.ts +58 -0
- package/packages/server/dist/watcher/opencode/opencode-parser.d.ts.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-parser.js +256 -0
- package/packages/server/dist/watcher/opencode/opencode-parser.js.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-paths.d.ts +20 -0
- package/packages/server/dist/watcher/opencode/opencode-paths.d.ts.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-paths.js +35 -0
- package/packages/server/dist/watcher/opencode/opencode-paths.js.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-watcher.d.ts +49 -0
- package/packages/server/dist/watcher/opencode/opencode-watcher.d.ts.map +1 -0
- package/packages/server/dist/watcher/opencode/opencode-watcher.js +1292 -0
- package/packages/server/dist/watcher/opencode/opencode-watcher.js.map +1 -0
- package/packages/server/dist/watcher/session-scanner.d.ts +7 -0
- package/packages/server/dist/watcher/session-scanner.d.ts.map +1 -0
- package/packages/server/dist/watcher/session-scanner.js +69 -0
- package/packages/server/dist/watcher/session-scanner.js.map +1 -0
- package/packages/server/dist/ws/broadcaster.d.ts +18 -0
- package/packages/server/dist/ws/broadcaster.d.ts.map +1 -0
- package/packages/server/dist/ws/broadcaster.js +152 -0
- package/packages/server/dist/ws/broadcaster.js.map +1 -0
- package/packages/server/dist/ws/ws-handler.d.ts +6 -0
- package/packages/server/dist/ws/ws-handler.d.ts.map +1 -0
- package/packages/server/dist/ws/ws-handler.js +55 -0
- package/packages/server/dist/ws/ws-handler.js.map +1 -0
- package/packages/server/package.json +25 -0
- package/packages/shared/dist/constants/colors.d.ts +46 -0
- package/packages/shared/dist/constants/colors.d.ts.map +1 -0
- package/packages/shared/dist/constants/colors.js +178 -0
- package/packages/shared/dist/constants/colors.js.map +1 -0
- package/packages/shared/dist/constants/names.d.ts +6 -0
- package/packages/shared/dist/constants/names.d.ts.map +1 -0
- package/packages/shared/dist/constants/names.js +28 -0
- package/packages/shared/dist/constants/names.js.map +1 -0
- package/packages/shared/dist/constants/tools.d.ts +15 -0
- package/packages/shared/dist/constants/tools.d.ts.map +1 -0
- package/packages/shared/dist/constants/tools.js +120 -0
- package/packages/shared/dist/constants/tools.js.map +1 -0
- package/packages/shared/dist/constants/zones.d.ts +37 -0
- package/packages/shared/dist/constants/zones.d.ts.map +1 -0
- package/packages/shared/dist/constants/zones.js +128 -0
- package/packages/shared/dist/constants/zones.js.map +1 -0
- package/packages/shared/dist/index.d.ts +15 -0
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +7 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/shared/dist/types/agent.d.ts +85 -0
- package/packages/shared/dist/types/agent.d.ts.map +1 -0
- package/packages/shared/dist/types/agent.js +2 -0
- package/packages/shared/dist/types/agent.js.map +1 -0
- package/packages/shared/dist/types/anomaly.d.ts +18 -0
- package/packages/shared/dist/types/anomaly.d.ts.map +1 -0
- package/packages/shared/dist/types/anomaly.js +6 -0
- package/packages/shared/dist/types/anomaly.js.map +1 -0
- package/packages/shared/dist/types/hooks.d.ts +51 -0
- package/packages/shared/dist/types/hooks.d.ts.map +1 -0
- package/packages/shared/dist/types/hooks.js +2 -0
- package/packages/shared/dist/types/hooks.js.map +1 -0
- package/packages/shared/dist/types/jsonl.d.ts +62 -0
- package/packages/shared/dist/types/jsonl.d.ts.map +1 -0
- package/packages/shared/dist/types/jsonl.js +3 -0
- package/packages/shared/dist/types/jsonl.js.map +1 -0
- package/packages/shared/dist/types/task-graph.d.ts +20 -0
- package/packages/shared/dist/types/task-graph.d.ts.map +1 -0
- package/packages/shared/dist/types/task-graph.js +2 -0
- package/packages/shared/dist/types/task-graph.js.map +1 -0
- package/packages/shared/dist/types/tool-chain.d.ts +17 -0
- package/packages/shared/dist/types/tool-chain.d.ts.map +1 -0
- package/packages/shared/dist/types/tool-chain.js +2 -0
- package/packages/shared/dist/types/tool-chain.js.map +1 -0
- package/packages/shared/dist/types/websocket.d.ts +132 -0
- package/packages/shared/dist/types/websocket.d.ts.map +1 -0
- package/packages/shared/dist/types/websocket.js +2 -0
- package/packages/shared/dist/types/websocket.js.map +1 -0
- package/packages/shared/dist/types/zone.d.ts +21 -0
- package/packages/shared/dist/types/zone.d.ts.map +1 -0
- package/packages/shared/dist/types/zone.js +2 -0
- package/packages/shared/dist/types/zone.js.map +1 -0
- package/packages/shared/package.json +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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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"}
|