@getpaseo/server 0.1.74 → 0.1.76
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/dist/scripts/supervisor-entrypoint.js +2 -21
- package/dist/scripts/supervisor-entrypoint.js.map +1 -1
- package/dist/scripts/supervisor-log-config.js +31 -0
- package/dist/scripts/supervisor-log-config.js.map +1 -0
- package/dist/server/client/daemon-client.d.ts +13 -2
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +36 -0
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-manager.d.ts +5 -1
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +152 -22
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-prompt.d.ts.map +1 -1
- package/dist/server/server/agent/agent-prompt.js +27 -0
- package/dist/server/server/agent/agent-prompt.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +5 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.js +10 -0
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/server/server/agent/foreground-run-state.d.ts +1 -1
- package/dist/server/server/agent/foreground-run-state.d.ts.map +1 -1
- package/dist/server/server/agent/foreground-run-state.js +2 -4
- package/dist/server/server/agent/foreground-run-state.js.map +1 -1
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-server.js +74 -3
- package/dist/server/server/agent/mcp-server.js.map +1 -1
- package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
- package/dist/server/server/agent/provider-history-timestamps.d.ts.map +1 -0
- package/dist/server/server/agent/provider-history-timestamps.js +16 -0
- package/dist/server/server/agent/provider-history-timestamps.js.map +1 -0
- package/dist/server/server/agent/provider-manifest.d.ts +1 -1
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
- package/dist/server/server/agent/provider-manifest.js +17 -3
- package/dist/server/server/agent/provider-manifest.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +66 -32
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +2 -6
- package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.js +43 -32
- package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.d.ts +42 -2
- package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.js +182 -28
- package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.d.ts +1 -1
- package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.js +191 -62
- package/dist/server/server/agent/providers/claude/agent.js.map +1 -1
- package/dist/server/server/agent/providers/claude/models.d.ts +2 -0
- package/dist/server/server/agent/providers/claude/models.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude/models.js +78 -0
- package/dist/server/server/agent/providers/claude/models.js.map +1 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +8 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.js +32 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -1
- package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js +36 -7
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +28 -4
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +487 -80
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +10 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.js +114 -7
- package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +21 -0
- package/dist/server/server/agent/providers/cursor-acp-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/cursor-acp-agent.js +85 -0
- package/dist/server/server/agent/providers/cursor-acp-agent.js.map +1 -0
- package/dist/server/server/agent/providers/generic-acp-agent.d.ts +13 -0
- package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/generic-acp-agent.js +209 -2
- package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.d.ts +7 -7
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +121 -109
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +2 -2
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.js +16 -15
- package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts +22 -0
- package/dist/server/server/agent/providers/pi-session-recovery-policy.d.ts.map +1 -0
- package/dist/server/server/agent/providers/pi-session-recovery-policy.js +51 -0
- package/dist/server/server/agent/providers/pi-session-recovery-policy.js.map +1 -0
- package/dist/server/server/agent/providers/provider-runner.d.ts +1 -1
- package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -1
- package/dist/server/server/agent/providers/provider-runner.js +2 -1
- package/dist/server/server/agent/providers/provider-runner.js.map +1 -1
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +1 -1
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts.map +1 -1
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +2 -1
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
- package/dist/server/server/agent/stt-manager.d.ts +5 -1
- package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
- package/dist/server/server/agent/stt-manager.js +3 -2
- package/dist/server/server/agent/stt-manager.js.map +1 -1
- package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
- package/dist/server/server/agent/timeline-projection.js +9 -0
- package/dist/server/server/agent/timeline-projection.js.map +1 -1
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts.map +1 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +80 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.js.map +1 -0
- package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
- package/dist/server/server/auto-archive-on-merge/index.d.ts.map +1 -0
- package/dist/server/server/auto-archive-on-merge/index.js +15 -0
- package/dist/server/server/auto-archive-on-merge/index.js.map +1 -0
- package/dist/server/server/bootstrap.d.ts +6 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +74 -38
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/checkout/status-projection.d.ts.map +1 -1
- package/dist/server/server/checkout/status-projection.js +5 -1
- package/dist/server/server/checkout/status-projection.js.map +1 -1
- package/dist/server/server/config.d.ts.map +1 -1
- package/dist/server/server/config.js +3 -1
- package/dist/server/server/config.js.map +1 -1
- package/dist/server/server/daemon-config-store.js +1 -0
- package/dist/server/server/daemon-config-store.js.map +1 -1
- package/dist/server/server/dictation/dictation-stream-manager.d.ts +2 -0
- package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -1
- package/dist/server/server/dictation/dictation-stream-manager.js +2 -1
- package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -1
- package/dist/server/server/logger.js +1 -1
- package/dist/server/server/logger.js.map +1 -1
- package/dist/server/server/loop/rpc-schemas.d.ts +96 -96
- package/dist/server/server/loop-service.d.ts +18 -18
- package/dist/server/server/paseo-worktree-service.d.ts +3 -1
- package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
- package/dist/server/server/paseo-worktree-service.js +55 -18
- package/dist/server/server/paseo-worktree-service.js.map +1 -1
- package/dist/server/server/persisted-config.d.ts +25 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +3 -0
- package/dist/server/server/persisted-config.js.map +1 -1
- package/dist/server/server/relay-transport.d.ts +2 -1
- package/dist/server/server/relay-transport.d.ts.map +1 -1
- package/dist/server/server/relay-transport.js +26 -4
- package/dist/server/server/relay-transport.js.map +1 -1
- package/dist/server/server/schedule/service.d.ts.map +1 -1
- package/dist/server/server/schedule/service.js +14 -1
- package/dist/server/server/schedule/service.js.map +1 -1
- package/dist/server/server/session.d.ts +9 -0
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +281 -50
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/speech/providers/local/config.d.ts +5 -0
- package/dist/server/server/speech/providers/local/config.d.ts.map +1 -1
- package/dist/server/server/speech/providers/local/config.js +35 -0
- package/dist/server/server/speech/providers/local/config.js.map +1 -1
- package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -1
- package/dist/server/server/speech/speech-config-resolver.js +1 -0
- package/dist/server/server/speech/speech-config-resolver.js.map +1 -1
- package/dist/server/server/speech/speech-runtime.d.ts +2 -0
- package/dist/server/server/speech/speech-runtime.d.ts.map +1 -1
- package/dist/server/server/speech/speech-runtime.js +2 -0
- package/dist/server/server/speech/speech-runtime.js.map +1 -1
- package/dist/server/server/voice/voice-turn-controller.d.ts +1 -0
- package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -1
- package/dist/server/server/voice/voice-turn-controller.js +1 -1
- package/dist/server/server/voice/voice-turn-controller.js.map +1 -1
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +7 -0
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/server/workspace-git-service.d.ts +6 -1
- package/dist/server/server/workspace-git-service.d.ts.map +1 -1
- package/dist/server/server/workspace-git-service.js +27 -4
- package/dist/server/server/workspace-git-service.js.map +1 -1
- package/dist/server/server/workspace-reconciliation-service.d.ts +4 -2
- package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -1
- package/dist/server/server/workspace-reconciliation-service.js +112 -14
- package/dist/server/server/workspace-reconciliation-service.js.map +1 -1
- package/dist/server/server/workspace-registry.d.ts +6 -1
- package/dist/server/server/workspace-registry.d.ts.map +1 -1
- package/dist/server/server/workspace-registry.js +11 -0
- package/dist/server/server/workspace-registry.js.map +1 -1
- package/dist/server/server/worktree-session.d.ts.map +1 -1
- package/dist/server/server/worktree-session.js +1 -0
- package/dist/server/server/worktree-session.js.map +1 -1
- package/dist/server/services/github-service.d.ts +46 -0
- package/dist/server/services/github-service.d.ts.map +1 -1
- package/dist/server/services/github-service.js +274 -5
- package/dist/server/services/github-service.js.map +1 -1
- package/dist/server/shared/messages.d.ts +3427 -290
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +93 -3
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/shared/terminal-input-mode.d.ts +26 -0
- package/dist/server/shared/terminal-input-mode.d.ts.map +1 -0
- package/dist/server/shared/terminal-input-mode.js +151 -0
- package/dist/server/shared/terminal-input-mode.js.map +1 -0
- package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
- package/dist/server/terminal/terminal-session-controller.js +12 -2
- package/dist/server/terminal/terminal-session-controller.js.map +1 -1
- package/dist/server/terminal/terminal.d.ts +1 -0
- package/dist/server/terminal/terminal.d.ts.map +1 -1
- package/dist/server/terminal/terminal.js +16 -3
- package/dist/server/terminal/terminal.js.map +1 -1
- package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -1
- package/dist/server/terminal/worker-terminal-manager.js +8 -0
- package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
- package/dist/server/utils/checkout-git.d.ts +4 -1
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +85 -29
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
- package/dist/server/utils/directory-suggestions.js +51 -14
- package/dist/server/utils/directory-suggestions.js.map +1 -1
- package/dist/server/utils/executable.d.ts.map +1 -1
- package/dist/server/utils/executable.js +6 -3
- package/dist/server/utils/executable.js.map +1 -1
- package/dist/server/utils/run-git-command.d.ts +2 -0
- package/dist/server/utils/run-git-command.d.ts.map +1 -1
- package/dist/server/utils/run-git-command.js +41 -1
- package/dist/server/utils/run-git-command.js.map +1 -1
- package/dist/server/utils/worktree.js +1 -1
- package/dist/server/utils/worktree.js.map +1 -1
- package/dist/src/server/agent/agent-sdk-types.js +10 -0
- package/dist/src/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/src/server/agent/provider-manifest.js +17 -3
- package/dist/src/server/agent/provider-manifest.js.map +1 -1
- package/dist/src/server/persisted-config.js +3 -0
- package/dist/src/server/persisted-config.js.map +1 -1
- package/dist/src/shared/messages.js +93 -3
- package/dist/src/shared/messages.js.map +1 -1
- package/dist/src/utils/executable.js +6 -3
- package/dist/src/utils/executable.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,6 +4,7 @@ import { stat } from "node:fs/promises";
|
|
|
4
4
|
import { AGENT_LIFECYCLE_STATUSES, } from "../../shared/agent-lifecycle.js";
|
|
5
5
|
import { PARENT_AGENT_ID_LABEL } from "../../shared/agent-labels.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
+
import { getAgentStreamEventTurnId, } from "./agent-sdk-types.js";
|
|
7
8
|
import { buildArchivedAgentRecord } from "./agent-archive.js";
|
|
8
9
|
import { InMemoryAgentTimelineStore, } from "./agent-timeline-store.js";
|
|
9
10
|
import { AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS, AgentStreamCoalescer, } from "./agent-stream-coalescer.js";
|
|
@@ -589,16 +590,23 @@ export class AgentManager {
|
|
|
589
590
|
const agent = this.requireAgent(agentId);
|
|
590
591
|
this.logger.trace({
|
|
591
592
|
agentId,
|
|
593
|
+
provider: agent.provider,
|
|
594
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
595
|
+
turnId: agent.activeForegroundTurnId ?? undefined,
|
|
592
596
|
lifecycle: agent.lifecycle,
|
|
593
597
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
594
598
|
pendingPermissions: agent.pendingPermissions.size,
|
|
595
|
-
}, "
|
|
599
|
+
}, "agent.manager.close.start");
|
|
596
600
|
const closedAgent = this.prepareAgentForClosure(agent, "agent closed");
|
|
597
601
|
await agent.session.close();
|
|
598
602
|
this.timelineStore.delete(agentId);
|
|
599
603
|
await this.persistSnapshot(closedAgent);
|
|
600
604
|
this.emitClosedAgent(closedAgent, { persist: false });
|
|
601
|
-
this.logger.trace({
|
|
605
|
+
this.logger.trace({
|
|
606
|
+
agentId,
|
|
607
|
+
provider: closedAgent.provider,
|
|
608
|
+
sessionId: closedAgent.persistence?.sessionId ?? undefined,
|
|
609
|
+
}, "agent.manager.close.complete");
|
|
602
610
|
}
|
|
603
611
|
async archiveAgent(agentId) {
|
|
604
612
|
const agent = this.requireAgent(agentId);
|
|
@@ -906,10 +914,11 @@ export class AgentManager {
|
|
|
906
914
|
this.dispatchStream(agent.id, event, {
|
|
907
915
|
seq: row.seq,
|
|
908
916
|
epoch: this.timelineStore.getEpoch(agent.id),
|
|
917
|
+
timestamp: row.timestamp,
|
|
909
918
|
});
|
|
910
919
|
return;
|
|
911
920
|
}
|
|
912
|
-
this.dispatchStream(agent.id, event);
|
|
921
|
+
this.dispatchStream(agent.id, event, { timestamp: new Date().toISOString() });
|
|
913
922
|
};
|
|
914
923
|
void (async () => {
|
|
915
924
|
try {
|
|
@@ -944,6 +953,7 @@ export class AgentManager {
|
|
|
944
953
|
}, {
|
|
945
954
|
seq: row.seq,
|
|
946
955
|
epoch: this.timelineStore.getEpoch(agentId),
|
|
956
|
+
timestamp: row.timestamp,
|
|
947
957
|
});
|
|
948
958
|
if (options?.emitState !== false) {
|
|
949
959
|
this.emitState(agent);
|
|
@@ -960,6 +970,7 @@ export class AgentManager {
|
|
|
960
970
|
}, {
|
|
961
971
|
seq: row.seq,
|
|
962
972
|
epoch: this.timelineStore.getEpoch(agentId),
|
|
973
|
+
timestamp: row.timestamp,
|
|
963
974
|
});
|
|
964
975
|
await this.persistSnapshot(agent);
|
|
965
976
|
}
|
|
@@ -976,18 +987,24 @@ export class AgentManager {
|
|
|
976
987
|
const existingAgent = this.requireSessionAgent(agentId);
|
|
977
988
|
this.logger.trace({
|
|
978
989
|
agentId,
|
|
990
|
+
provider: existingAgent.provider,
|
|
991
|
+
sessionId: existingAgent.persistence?.sessionId ?? undefined,
|
|
992
|
+
turnId: existingAgent.activeForegroundTurnId ?? undefined,
|
|
979
993
|
lifecycle: existingAgent.lifecycle,
|
|
980
994
|
activeForegroundTurnId: existingAgent.activeForegroundTurnId,
|
|
981
995
|
hasPendingForegroundRun: this.foregroundRuns.hasPendingRun(agentId),
|
|
982
996
|
promptType: typeof prompt === "string" ? "string" : "structured",
|
|
983
997
|
hasRunOptions: Boolean(options),
|
|
984
|
-
}, "
|
|
998
|
+
}, "agent.manager.stream.request");
|
|
985
999
|
if (existingAgent.activeForegroundTurnId || this.foregroundRuns.hasPendingRun(agentId)) {
|
|
986
1000
|
this.logger.trace({
|
|
987
1001
|
agentId,
|
|
1002
|
+
provider: existingAgent.provider,
|
|
1003
|
+
sessionId: existingAgent.persistence?.sessionId ?? undefined,
|
|
1004
|
+
turnId: existingAgent.activeForegroundTurnId ?? undefined,
|
|
988
1005
|
lifecycle: existingAgent.lifecycle,
|
|
989
1006
|
hasPendingForegroundRun: this.foregroundRuns.hasPendingRun(agentId),
|
|
990
|
-
}, "
|
|
1007
|
+
}, "agent.manager.stream.reject");
|
|
991
1008
|
throw new Error(`Agent ${agentId} already has an active run`);
|
|
992
1009
|
}
|
|
993
1010
|
const agent = existingAgent;
|
|
@@ -1019,9 +1036,12 @@ export class AgentManager {
|
|
|
1019
1036
|
this.emitState(agent);
|
|
1020
1037
|
this.logger.trace({
|
|
1021
1038
|
agentId,
|
|
1039
|
+
provider: agent.provider,
|
|
1040
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1041
|
+
turnId,
|
|
1022
1042
|
lifecycle: agent.lifecycle,
|
|
1023
1043
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
1024
|
-
}, "
|
|
1044
|
+
}, "agent.manager.stream.start");
|
|
1025
1045
|
turnStream = this.foregroundRuns.createTurnStream(turnId);
|
|
1026
1046
|
this.foregroundRuns.addWaiter(agent, turnStream.waiter);
|
|
1027
1047
|
try {
|
|
@@ -1069,10 +1089,13 @@ export class AgentManager {
|
|
|
1069
1089
|
}
|
|
1070
1090
|
this.logger.trace({
|
|
1071
1091
|
agentId: agent.id,
|
|
1092
|
+
provider: agent.provider,
|
|
1093
|
+
sessionId: mutableAgent.persistence?.sessionId ?? undefined,
|
|
1094
|
+
turnId,
|
|
1072
1095
|
lifecycle: mutableAgent.lifecycle,
|
|
1073
1096
|
terminalError,
|
|
1074
1097
|
pendingReplacement: mutableAgent.pendingReplacement,
|
|
1075
|
-
}, "
|
|
1098
|
+
}, "agent.manager.finalize");
|
|
1076
1099
|
if (!shouldHoldBusyForReplacement) {
|
|
1077
1100
|
this.touchUpdatedAt(mutableAgent);
|
|
1078
1101
|
this.emitState(mutableAgent);
|
|
@@ -1216,7 +1239,7 @@ export class AgentManager {
|
|
|
1216
1239
|
const bufferedResolution = agent.bufferedPermissionResolutions.get(requestId);
|
|
1217
1240
|
if (bufferedResolution) {
|
|
1218
1241
|
agent.bufferedPermissionResolutions.delete(requestId);
|
|
1219
|
-
this.dispatchStream(agent.id, bufferedResolution);
|
|
1242
|
+
this.dispatchStream(agent.id, bufferedResolution, { timestamp: new Date().toISOString() });
|
|
1220
1243
|
}
|
|
1221
1244
|
return result;
|
|
1222
1245
|
}
|
|
@@ -1297,7 +1320,7 @@ export class AgentManager {
|
|
|
1297
1320
|
provider: agent.provider,
|
|
1298
1321
|
requestId,
|
|
1299
1322
|
resolution: { behavior: "deny", message: "Interrupted" },
|
|
1300
|
-
});
|
|
1323
|
+
}, { timestamp: new Date().toISOString() });
|
|
1301
1324
|
}
|
|
1302
1325
|
agent.pendingPermissions.clear();
|
|
1303
1326
|
this.touchUpdatedAt(agent);
|
|
@@ -1690,6 +1713,13 @@ export class AgentManager {
|
|
|
1690
1713
|
agent.unsubscribeSession = unsubscribe;
|
|
1691
1714
|
}
|
|
1692
1715
|
enqueueSessionEvent(agentId, event) {
|
|
1716
|
+
this.logger.trace({
|
|
1717
|
+
agentId,
|
|
1718
|
+
provider: event.provider,
|
|
1719
|
+
sessionId: this.agents.get(agentId)?.persistence?.sessionId ?? undefined,
|
|
1720
|
+
turnId: getAgentStreamEventTurnId(event),
|
|
1721
|
+
event,
|
|
1722
|
+
}, "agent.manager.enqueue");
|
|
1693
1723
|
const previous = this.sessionEventTails.get(agentId) ?? Promise.resolve();
|
|
1694
1724
|
const next = previous
|
|
1695
1725
|
.catch(() => undefined)
|
|
@@ -1701,6 +1731,13 @@ export class AgentManager {
|
|
|
1701
1731
|
if (current.session == null) {
|
|
1702
1732
|
return;
|
|
1703
1733
|
}
|
|
1734
|
+
this.logger.trace({
|
|
1735
|
+
agentId,
|
|
1736
|
+
provider: event.provider,
|
|
1737
|
+
sessionId: current.persistence?.sessionId ?? undefined,
|
|
1738
|
+
turnId: getAgentStreamEventTurnId(event),
|
|
1739
|
+
event,
|
|
1740
|
+
}, "agent.manager.dequeue");
|
|
1704
1741
|
await this.dispatchSessionEvent(current, event);
|
|
1705
1742
|
return;
|
|
1706
1743
|
})
|
|
@@ -1716,8 +1753,16 @@ export class AgentManager {
|
|
|
1716
1753
|
});
|
|
1717
1754
|
}
|
|
1718
1755
|
async dispatchSessionEvent(agent, event) {
|
|
1719
|
-
const turnId = event
|
|
1756
|
+
const turnId = getAgentStreamEventTurnId(event);
|
|
1720
1757
|
const matchingWaiters = this.foregroundRuns.getMatchingWaiters(agent, turnId);
|
|
1758
|
+
this.logger.trace({
|
|
1759
|
+
agentId: agent.id,
|
|
1760
|
+
provider: event.provider,
|
|
1761
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1762
|
+
turnId,
|
|
1763
|
+
matchingWaiterCount: matchingWaiters.length,
|
|
1764
|
+
event,
|
|
1765
|
+
}, "agent.manager.dispatch_session_event");
|
|
1721
1766
|
const shouldNotifyWaiters = await this.handleStreamEvent(agent, event);
|
|
1722
1767
|
if (!shouldNotifyWaiters) {
|
|
1723
1768
|
return;
|
|
@@ -1725,6 +1770,15 @@ export class AgentManager {
|
|
|
1725
1770
|
this.foregroundRuns.notifyWaiters(matchingWaiters, event, {
|
|
1726
1771
|
terminal: isTurnTerminalEvent(event),
|
|
1727
1772
|
});
|
|
1773
|
+
this.logger.trace({
|
|
1774
|
+
agentId: agent.id,
|
|
1775
|
+
provider: event.provider,
|
|
1776
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1777
|
+
turnId,
|
|
1778
|
+
notifiedWaiterCount: matchingWaiters.length,
|
|
1779
|
+
terminal: isTurnTerminalEvent(event),
|
|
1780
|
+
event,
|
|
1781
|
+
}, "agent.manager.notify_waiters");
|
|
1728
1782
|
}
|
|
1729
1783
|
async resolveInitialPersistedTitle(agentId, config) {
|
|
1730
1784
|
const existing = await this.registry?.get(agentId);
|
|
@@ -1814,7 +1868,7 @@ export class AgentManager {
|
|
|
1814
1868
|
if (isDuplicateLegacyUserMessage(event.item, canonicalUserMessagesById)) {
|
|
1815
1869
|
continue;
|
|
1816
1870
|
}
|
|
1817
|
-
this.recordTimeline(agent.id, event.item);
|
|
1871
|
+
this.recordTimeline(agent.id, event.item, event.timestamp ? { timestamp: event.timestamp } : undefined);
|
|
1818
1872
|
}
|
|
1819
1873
|
}
|
|
1820
1874
|
catch {
|
|
@@ -1822,7 +1876,7 @@ export class AgentManager {
|
|
|
1822
1876
|
}
|
|
1823
1877
|
}
|
|
1824
1878
|
notifyForegroundTurnWaiters(agentId, event) {
|
|
1825
|
-
const turnId = event
|
|
1879
|
+
const turnId = getAgentStreamEventTurnId(event);
|
|
1826
1880
|
if (turnId == null) {
|
|
1827
1881
|
return;
|
|
1828
1882
|
}
|
|
@@ -1831,10 +1885,18 @@ export class AgentManager {
|
|
|
1831
1885
|
return;
|
|
1832
1886
|
}
|
|
1833
1887
|
this.foregroundRuns.notifyAgentWaiters(agent, event);
|
|
1888
|
+
this.logger.trace({
|
|
1889
|
+
agentId,
|
|
1890
|
+
provider: event.provider,
|
|
1891
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1892
|
+
turnId,
|
|
1893
|
+
event,
|
|
1894
|
+
}, "agent.manager.notify_waiters.coalesced");
|
|
1834
1895
|
}
|
|
1835
1896
|
async handleStreamEvent(agent, event, options) {
|
|
1836
|
-
const eventTurnId = event
|
|
1897
|
+
const eventTurnId = getAgentStreamEventTurnId(event);
|
|
1837
1898
|
const isForegroundEvent = Boolean(eventTurnId && agent.activeForegroundTurnId === eventTurnId);
|
|
1899
|
+
this.traceHandleStreamEventStart(agent, event, eventTurnId, isForegroundEvent);
|
|
1838
1900
|
if (eventTurnId &&
|
|
1839
1901
|
isTurnTerminalEvent(event) &&
|
|
1840
1902
|
this.foregroundRuns.hasFinalizedTurn(agent, eventTurnId)) {
|
|
@@ -1844,6 +1906,7 @@ export class AgentManager {
|
|
|
1844
1906
|
if (!options?.fromHistory) {
|
|
1845
1907
|
this.touchUpdatedAt(agent);
|
|
1846
1908
|
if (this.agentStreamCoalescer.handle(agent.id, event)) {
|
|
1909
|
+
this.traceCoalescerBuffered(agent, event, eventTurnId);
|
|
1847
1910
|
return false;
|
|
1848
1911
|
}
|
|
1849
1912
|
this.agentStreamCoalescer.flushFor(agent.id);
|
|
@@ -1864,10 +1927,45 @@ export class AgentManager {
|
|
|
1864
1927
|
this.finalizeForegroundTurn(agent, eventTurnId);
|
|
1865
1928
|
}
|
|
1866
1929
|
if (!options?.fromHistory && flags.shouldDispatchEvent) {
|
|
1867
|
-
this.dispatchStream(agent.id, event);
|
|
1930
|
+
this.dispatchStream(agent.id, event, { timestamp: new Date().toISOString() });
|
|
1868
1931
|
}
|
|
1932
|
+
this.traceHandleStreamEventEnd(agent, event, eventTurnId, flags);
|
|
1869
1933
|
return flags.shouldNotifyWaiters;
|
|
1870
1934
|
}
|
|
1935
|
+
traceHandleStreamEventStart(agent, event, turnId, isForegroundEvent) {
|
|
1936
|
+
this.logger.trace({
|
|
1937
|
+
agentId: agent.id,
|
|
1938
|
+
provider: event.provider,
|
|
1939
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1940
|
+
turnId,
|
|
1941
|
+
lifecycle: agent.lifecycle,
|
|
1942
|
+
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
1943
|
+
isForegroundEvent,
|
|
1944
|
+
event,
|
|
1945
|
+
}, "agent.manager.handle_stream_event.start");
|
|
1946
|
+
}
|
|
1947
|
+
traceCoalescerBuffered(agent, event, turnId) {
|
|
1948
|
+
this.logger.trace({
|
|
1949
|
+
agentId: agent.id,
|
|
1950
|
+
provider: event.provider,
|
|
1951
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1952
|
+
turnId,
|
|
1953
|
+
event,
|
|
1954
|
+
}, "agent.manager.coalescer.buffer");
|
|
1955
|
+
}
|
|
1956
|
+
traceHandleStreamEventEnd(agent, event, turnId, flags) {
|
|
1957
|
+
this.logger.trace({
|
|
1958
|
+
agentId: agent.id,
|
|
1959
|
+
provider: event.provider,
|
|
1960
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
1961
|
+
turnId,
|
|
1962
|
+
lifecycle: agent.lifecycle,
|
|
1963
|
+
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
1964
|
+
shouldDispatchEvent: flags.shouldDispatchEvent,
|
|
1965
|
+
shouldNotifyWaiters: flags.shouldNotifyWaiters,
|
|
1966
|
+
event,
|
|
1967
|
+
}, "agent.manager.handle_stream_event.end");
|
|
1968
|
+
}
|
|
1871
1969
|
dispatchStreamEventByType(params) {
|
|
1872
1970
|
const { agent, event, options, isForegroundEvent, eventTurnId, flags } = params;
|
|
1873
1971
|
switch (event.type) {
|
|
@@ -1972,7 +2070,7 @@ export class AgentManager {
|
|
|
1972
2070
|
}
|
|
1973
2071
|
}
|
|
1974
2072
|
if (options?.fromHistory) {
|
|
1975
|
-
this.recordTimeline(agent.id, event.item);
|
|
2073
|
+
this.recordTimeline(agent.id, event.item, event.timestamp ? { timestamp: event.timestamp } : undefined);
|
|
1976
2074
|
flags.shouldDispatchEvent = false;
|
|
1977
2075
|
flags.shouldNotifyWaiters = false;
|
|
1978
2076
|
return;
|
|
@@ -1989,10 +2087,12 @@ export class AgentManager {
|
|
|
1989
2087
|
const { agent, event, eventTurnId, isForegroundEvent } = params;
|
|
1990
2088
|
this.logger.trace({
|
|
1991
2089
|
agentId: agent.id,
|
|
2090
|
+
provider: agent.provider,
|
|
2091
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
2092
|
+
turnId: eventTurnId,
|
|
1992
2093
|
lifecycle: agent.lifecycle,
|
|
1993
2094
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
1994
|
-
|
|
1995
|
-
}, "handleStreamEvent: turn_completed");
|
|
2095
|
+
}, "agent.manager.turn.completed");
|
|
1996
2096
|
agent.lastUsage = event.usage;
|
|
1997
2097
|
agent.lastError = undefined;
|
|
1998
2098
|
if (!isForegroundEvent && agent.lifecycle !== "idle" && !agent.pendingReplacement) {
|
|
@@ -2005,6 +2105,9 @@ export class AgentManager {
|
|
|
2005
2105
|
const { agent, event, eventTurnId, isForegroundEvent, options } = params;
|
|
2006
2106
|
this.logger.warn({
|
|
2007
2107
|
agentId: agent.id,
|
|
2108
|
+
provider: agent.provider,
|
|
2109
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
2110
|
+
turnId: eventTurnId,
|
|
2008
2111
|
lifecycle: agent.lifecycle,
|
|
2009
2112
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
2010
2113
|
eventTurnId,
|
|
@@ -2026,10 +2129,13 @@ export class AgentManager {
|
|
|
2026
2129
|
const { agent, event, eventTurnId, isForegroundEvent, options } = params;
|
|
2027
2130
|
this.logger.trace({
|
|
2028
2131
|
agentId: agent.id,
|
|
2132
|
+
provider: agent.provider,
|
|
2133
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
2134
|
+
turnId: eventTurnId,
|
|
2029
2135
|
lifecycle: agent.lifecycle,
|
|
2030
2136
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
2031
2137
|
eventTurnId,
|
|
2032
|
-
}, "
|
|
2138
|
+
}, "agent.manager.turn.canceled");
|
|
2033
2139
|
if (!isForegroundEvent && !agent.pendingReplacement) {
|
|
2034
2140
|
agent.lifecycle = "idle";
|
|
2035
2141
|
}
|
|
@@ -2043,10 +2149,12 @@ export class AgentManager {
|
|
|
2043
2149
|
const { agent, eventTurnId, isForegroundEvent } = params;
|
|
2044
2150
|
this.logger.trace({
|
|
2045
2151
|
agentId: agent.id,
|
|
2152
|
+
provider: agent.provider,
|
|
2153
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
2154
|
+
turnId: eventTurnId,
|
|
2046
2155
|
lifecycle: agent.lifecycle,
|
|
2047
2156
|
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
2048
|
-
|
|
2049
|
-
}, "handleStreamEvent: turn_started");
|
|
2157
|
+
}, "agent.manager.turn.started");
|
|
2050
2158
|
if (!isForegroundEvent) {
|
|
2051
2159
|
agent.lifecycle = "running";
|
|
2052
2160
|
this.emitState(agent);
|
|
@@ -2094,6 +2202,7 @@ export class AgentManager {
|
|
|
2094
2202
|
this.dispatchStream(agentId, event, {
|
|
2095
2203
|
seq: row.seq,
|
|
2096
2204
|
epoch: this.timelineStore.getEpoch(agentId),
|
|
2205
|
+
timestamp: row.timestamp,
|
|
2097
2206
|
});
|
|
2098
2207
|
return event;
|
|
2099
2208
|
}
|
|
@@ -2119,6 +2228,7 @@ export class AgentManager {
|
|
|
2119
2228
|
}, {
|
|
2120
2229
|
seq: row.seq,
|
|
2121
2230
|
epoch: this.timelineStore.getEpoch(agent.id),
|
|
2231
|
+
timestamp: row.timestamp,
|
|
2122
2232
|
});
|
|
2123
2233
|
}
|
|
2124
2234
|
formatTurnFailedMessage(event) {
|
|
@@ -2134,8 +2244,8 @@ export class AgentManager {
|
|
|
2134
2244
|
}
|
|
2135
2245
|
return parts.join("\n\n");
|
|
2136
2246
|
}
|
|
2137
|
-
recordTimeline(agentId, item) {
|
|
2138
|
-
const row = this.timelineStore.append(agentId, item);
|
|
2247
|
+
recordTimeline(agentId, item, options) {
|
|
2248
|
+
const row = this.timelineStore.append(agentId, item, options);
|
|
2139
2249
|
this.enqueueDurableTimelineAppend(agentId, row);
|
|
2140
2250
|
return row;
|
|
2141
2251
|
}
|
|
@@ -2146,6 +2256,16 @@ export class AgentManager {
|
|
|
2146
2256
|
this.enqueueBackgroundPersist(agent);
|
|
2147
2257
|
}
|
|
2148
2258
|
this.syncFeaturesFromSession(agent);
|
|
2259
|
+
this.logger.trace({
|
|
2260
|
+
agentId: agent.id,
|
|
2261
|
+
provider: agent.provider,
|
|
2262
|
+
sessionId: agent.persistence?.sessionId ?? undefined,
|
|
2263
|
+
turnId: agent.activeForegroundTurnId ?? undefined,
|
|
2264
|
+
lifecycle: agent.lifecycle,
|
|
2265
|
+
activeForegroundTurnId: agent.activeForegroundTurnId,
|
|
2266
|
+
pendingPermissions: agent.pendingPermissions.size,
|
|
2267
|
+
persist: options?.persist !== false,
|
|
2268
|
+
}, "agent.manager.emit_state");
|
|
2149
2269
|
this.dispatch({
|
|
2150
2270
|
type: "agent_state",
|
|
2151
2271
|
agent: { ...agent },
|
|
@@ -2243,6 +2363,15 @@ export class AgentManager {
|
|
|
2243
2363
|
});
|
|
2244
2364
|
}
|
|
2245
2365
|
dispatchStream(agentId, event, metadata) {
|
|
2366
|
+
const agent = this.agents.get(agentId);
|
|
2367
|
+
this.logger.trace({
|
|
2368
|
+
agentId,
|
|
2369
|
+
provider: event.provider,
|
|
2370
|
+
sessionId: agent?.persistence?.sessionId ?? undefined,
|
|
2371
|
+
turnId: getAgentStreamEventTurnId(event),
|
|
2372
|
+
metadata,
|
|
2373
|
+
event,
|
|
2374
|
+
}, "agent.manager.dispatch_stream");
|
|
2246
2375
|
this.dispatch({ type: "agent_stream", agentId, event, ...metadata });
|
|
2247
2376
|
}
|
|
2248
2377
|
dispatch(event) {
|
|
@@ -2327,6 +2456,7 @@ export class AgentManager {
|
|
|
2327
2456
|
}
|
|
2328
2457
|
buildLaunchContext(agentId) {
|
|
2329
2458
|
return {
|
|
2459
|
+
agentId,
|
|
2330
2460
|
env: {
|
|
2331
2461
|
PASEO_AGENT_ID: agentId,
|
|
2332
2462
|
},
|