@getpaseo/server 0.1.75 → 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/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 +1 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +13 -8
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +3 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.js +7 -0
- package/dist/server/server/agent/agent-sdk-types.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 +14 -0
- 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 +53 -27
- 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 +3 -1
- package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.js +61 -14
- package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude/agent.js +111 -38
- 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 +1 -0
- 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 +14 -10
- package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +15 -1
- 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 +369 -68
- package/dist/server/server/agent/providers/codex-app-server-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 +1 -3
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +73 -75
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.js +14 -0
- 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/tool-call-detail-primitives.d.ts.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 +1 -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/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 +7 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +1 -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/session.d.ts +6 -0
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +193 -33
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +5 -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 +7 -0
- package/dist/src/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/src/server/agent/provider-manifest.js +14 -0
- package/dist/src/server/agent/provider-manifest.js.map +1 -1
- package/dist/src/server/persisted-config.js +1 -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
|
@@ -14,6 +14,7 @@ import { formatDiagnosticStatus, formatProviderDiagnostic, formatProviderDiagnos
|
|
|
14
14
|
import { runProviderTurn } from "./provider-runner.js";
|
|
15
15
|
import { renderPromptAttachmentAsText } from "../prompt-attachments.js";
|
|
16
16
|
import { createSdkOpenCodeClient, } from "./opencode/runtime.js";
|
|
17
|
+
import { normalizeProviderReplayTimestamp } from "../provider-history-timestamps.js";
|
|
17
18
|
const OPENCODE_CAPABILITIES = {
|
|
18
19
|
supportsStreaming: true,
|
|
19
20
|
supportsSessionPersistence: true,
|
|
@@ -26,7 +27,6 @@ const OPENCODE_BUILD_MODE_ID = "build";
|
|
|
26
27
|
const OPENCODE_FULL_ACCESS_MODE_ID = "full-access";
|
|
27
28
|
const OPENCODE_STORAGE_SESSION_LIMIT = 200;
|
|
28
29
|
const OPENCODE_PENDING_ABORT_START_TIMEOUT_MS = 10000;
|
|
29
|
-
const OPENCODE_RETRY_STATUS_FAILURE_MS = 10000;
|
|
30
30
|
const DEFAULT_MODES = [
|
|
31
31
|
{
|
|
32
32
|
id: OPENCODE_BUILD_MODE_ID,
|
|
@@ -389,7 +389,9 @@ function buildOpenCodeModelContextWindowLookup(providers) {
|
|
|
389
389
|
}
|
|
390
390
|
const connectedProviderIds = new Set(providers.connected ?? []);
|
|
391
391
|
for (const provider of providers.all ?? []) {
|
|
392
|
-
|
|
392
|
+
// Providers with source "api" are managed by the OpenCode console/subscription and are
|
|
393
|
+
// usable even though they don't appear in `connected` (which only lists env/config providers).
|
|
394
|
+
if (!connectedProviderIds.has(provider.id) && provider.source !== "api") {
|
|
393
395
|
continue;
|
|
394
396
|
}
|
|
395
397
|
for (const [modelId, modelDefinition] of Object.entries(provider.models ?? {})) {
|
|
@@ -637,6 +639,55 @@ function getOpenCodeMessageTimestamp(message) {
|
|
|
637
639
|
function getOpenCodePartTimestamp(part) {
|
|
638
640
|
return part.time?.start ?? part.time?.end ?? 0;
|
|
639
641
|
}
|
|
642
|
+
function resolveOpenCodeReplayTimestamp(params) {
|
|
643
|
+
const timedPart = params.part;
|
|
644
|
+
const partTimestamp = timedPart?.time?.start ??
|
|
645
|
+
timedPart?.time?.end ??
|
|
646
|
+
params.message.time?.created ??
|
|
647
|
+
params.message.time?.completed;
|
|
648
|
+
return normalizeProviderReplayTimestamp(partTimestamp);
|
|
649
|
+
}
|
|
650
|
+
function buildOpenCodeReplayTimelineEvent(params) {
|
|
651
|
+
const timestamp = resolveOpenCodeReplayTimestamp({
|
|
652
|
+
message: params.message,
|
|
653
|
+
part: params.part,
|
|
654
|
+
});
|
|
655
|
+
return {
|
|
656
|
+
type: "timeline",
|
|
657
|
+
provider: "opencode",
|
|
658
|
+
item: params.item,
|
|
659
|
+
...(timestamp ? { timestamp } : {}),
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
function buildOpenCodeReplayPartTimelineEvent(params) {
|
|
663
|
+
const { part, message } = params;
|
|
664
|
+
if (part.type === "text" && part.text) {
|
|
665
|
+
return buildOpenCodeReplayTimelineEvent({
|
|
666
|
+
item: { type: "assistant_message", text: part.text },
|
|
667
|
+
message,
|
|
668
|
+
part,
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
if (part.type === "reasoning" && part.text) {
|
|
672
|
+
return buildOpenCodeReplayTimelineEvent({
|
|
673
|
+
item: { type: "reasoning", text: part.text },
|
|
674
|
+
message,
|
|
675
|
+
part,
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
if (part.type !== "tool") {
|
|
679
|
+
return null;
|
|
680
|
+
}
|
|
681
|
+
const parsedToolPart = OpencodeToolPartToTimelineItemSchema.safeParse(part);
|
|
682
|
+
if (!parsedToolPart.success || !parsedToolPart.data) {
|
|
683
|
+
return null;
|
|
684
|
+
}
|
|
685
|
+
return buildOpenCodeReplayTimelineEvent({
|
|
686
|
+
item: parsedToolPart.data,
|
|
687
|
+
message,
|
|
688
|
+
part,
|
|
689
|
+
});
|
|
690
|
+
}
|
|
640
691
|
export const __openCodeInternals = {
|
|
641
692
|
buildOpenCodePromptParts,
|
|
642
693
|
buildOpenCodeModelContextWindowLookup,
|
|
@@ -752,17 +803,21 @@ export class OpenCodeAgentClient {
|
|
|
752
803
|
if (!providers) {
|
|
753
804
|
return [];
|
|
754
805
|
}
|
|
755
|
-
// Only include models from connected providers (ones that are actually available)
|
|
756
806
|
const connectedProviderIds = new Set(providers.connected);
|
|
757
|
-
//
|
|
758
|
-
|
|
759
|
-
|
|
807
|
+
// Providers with source "api" are managed by the OpenCode console/subscription (e.g. Pi
|
|
808
|
+
// coding agent). They do not appear in `connected` (which only lists env/config providers)
|
|
809
|
+
// but are fully usable — OpenCode authenticates them internally via the console session.
|
|
810
|
+
const isAccessible = (provider) => connectedProviderIds.has(provider.id) || provider.source === "api";
|
|
811
|
+
// Fail fast if no providers are accessible at all
|
|
812
|
+
if (!providers.all.some(isAccessible)) {
|
|
813
|
+
throw new Error("OpenCode has no connected providers. Please authenticate with at least one provider " +
|
|
814
|
+
"(e.g., openai, anthropic), set appropriate environment variables (e.g., OPENAI_API_KEY), " +
|
|
815
|
+
"or log in to OpenCode Go via the console.");
|
|
760
816
|
}
|
|
761
817
|
const models = [];
|
|
762
818
|
this.modelContextWindows.clear();
|
|
763
819
|
for (const provider of providers.all) {
|
|
764
|
-
|
|
765
|
-
if (!connectedProviderIds.has(provider.id)) {
|
|
820
|
+
if (!isAccessible(provider)) {
|
|
766
821
|
continue;
|
|
767
822
|
}
|
|
768
823
|
for (const [modelId, model] of Object.entries(provider.models)) {
|
|
@@ -1607,7 +1662,6 @@ class OpenCodeAgentSession {
|
|
|
1607
1662
|
this.subAgentCallIdByChildSessionId = new Map();
|
|
1608
1663
|
this.pendingChildToolPartsBySessionId = new Map();
|
|
1609
1664
|
this.deletedFromProvider = false;
|
|
1610
|
-
this.retryFailureTimer = null;
|
|
1611
1665
|
this.config = config;
|
|
1612
1666
|
this.client = client;
|
|
1613
1667
|
this.sessionId = sessionId;
|
|
@@ -1703,7 +1757,6 @@ class OpenCodeAgentSession {
|
|
|
1703
1757
|
this.subAgentsByCallId.clear();
|
|
1704
1758
|
this.subAgentCallIdByChildSessionId.clear();
|
|
1705
1759
|
this.pendingChildToolPartsBySessionId.clear();
|
|
1706
|
-
this.clearRetryFailureTimer();
|
|
1707
1760
|
const turnAbortController = new AbortController();
|
|
1708
1761
|
this.abortController = turnAbortController;
|
|
1709
1762
|
await this.ensureMcpServersConfigured();
|
|
@@ -1730,6 +1783,7 @@ class OpenCodeAgentSession {
|
|
|
1730
1783
|
// consumeEventStream already finished the turn with the subscription error.
|
|
1731
1784
|
return { turnId };
|
|
1732
1785
|
}
|
|
1786
|
+
this.notifySubscribers({ type: "turn_started", provider: "opencode" }, turnId);
|
|
1733
1787
|
const slashCommand = await this.resolveSlashCommandInvocation(prompt);
|
|
1734
1788
|
if (slashCommand) {
|
|
1735
1789
|
if (slashCommand.commandName === "compact" || slashCommand.commandName === "summarize") {
|
|
@@ -1977,7 +2031,6 @@ class OpenCodeAgentSession {
|
|
|
1977
2031
|
});
|
|
1978
2032
|
return false;
|
|
1979
2033
|
}
|
|
1980
|
-
this.armRetryFailureTimerForStatus(event, turnId);
|
|
1981
2034
|
const translated = await this.translateEvent(event);
|
|
1982
2035
|
this.traceOpenCode("provider.opencode.parsed_event", {
|
|
1983
2036
|
turnId,
|
|
@@ -2024,7 +2077,6 @@ class OpenCodeAgentSession {
|
|
|
2024
2077
|
else {
|
|
2025
2078
|
this.runningToolCalls.clear();
|
|
2026
2079
|
}
|
|
2027
|
-
this.clearRetryFailureTimer();
|
|
2028
2080
|
this.activeForegroundTurnId = null;
|
|
2029
2081
|
// Abort the SSE connection so the SDK tears down the underlying fetch.
|
|
2030
2082
|
this.abortController?.abort();
|
|
@@ -2038,37 +2090,6 @@ class OpenCodeAgentSession {
|
|
|
2038
2090
|
}
|
|
2039
2091
|
this.runningToolCalls.delete(item.callId);
|
|
2040
2092
|
}
|
|
2041
|
-
armRetryFailureTimerForStatus(event, turnId) {
|
|
2042
|
-
if (this.retryFailureTimer || event.type !== "session.status") {
|
|
2043
|
-
return;
|
|
2044
|
-
}
|
|
2045
|
-
if (event.properties.sessionID !== this.sessionId || event.properties.status.type !== "retry") {
|
|
2046
|
-
return;
|
|
2047
|
-
}
|
|
2048
|
-
const retry = event.properties.status;
|
|
2049
|
-
const message = typeof retry.message === "string" ? retry.message.trim() : "";
|
|
2050
|
-
const error = message
|
|
2051
|
-
? `OpenCode provider retry did not recover: ${message}`
|
|
2052
|
-
: "OpenCode provider retry did not recover";
|
|
2053
|
-
this.retryFailureTimer = setTimeout(() => {
|
|
2054
|
-
this.retryFailureTimer = null;
|
|
2055
|
-
if (this.activeForegroundTurnId !== turnId) {
|
|
2056
|
-
return;
|
|
2057
|
-
}
|
|
2058
|
-
this.finishForegroundTurn({
|
|
2059
|
-
type: "turn_failed",
|
|
2060
|
-
provider: "opencode",
|
|
2061
|
-
error,
|
|
2062
|
-
}, turnId);
|
|
2063
|
-
}, OPENCODE_RETRY_STATUS_FAILURE_MS);
|
|
2064
|
-
}
|
|
2065
|
-
clearRetryFailureTimer() {
|
|
2066
|
-
if (!this.retryFailureTimer) {
|
|
2067
|
-
return;
|
|
2068
|
-
}
|
|
2069
|
-
clearTimeout(this.retryFailureTimer);
|
|
2070
|
-
this.retryFailureTimer = null;
|
|
2071
|
-
}
|
|
2072
2093
|
synthesizeInterruptedToolCalls(turnId) {
|
|
2073
2094
|
for (const item of this.runningToolCalls.values()) {
|
|
2074
2095
|
const error = { message: "Tool execution aborted" };
|
|
@@ -2135,11 +2156,10 @@ class OpenCodeAgentSession {
|
|
|
2135
2156
|
.map((p) => p.text)
|
|
2136
2157
|
.join("");
|
|
2137
2158
|
if (text) {
|
|
2138
|
-
yield {
|
|
2139
|
-
type: "timeline",
|
|
2140
|
-
provider: "opencode",
|
|
2159
|
+
yield buildOpenCodeReplayTimelineEvent({
|
|
2141
2160
|
item: { type: "user_message", text },
|
|
2142
|
-
|
|
2161
|
+
message: info,
|
|
2162
|
+
});
|
|
2143
2163
|
}
|
|
2144
2164
|
}
|
|
2145
2165
|
else {
|
|
@@ -2147,41 +2167,19 @@ class OpenCodeAgentSession {
|
|
|
2147
2167
|
for (const part of parts) {
|
|
2148
2168
|
if (part.type === "text" && part.text) {
|
|
2149
2169
|
emittedAssistantText = true;
|
|
2150
|
-
yield {
|
|
2151
|
-
type: "timeline",
|
|
2152
|
-
provider: "opencode",
|
|
2153
|
-
item: { type: "assistant_message", text: part.text },
|
|
2154
|
-
};
|
|
2155
|
-
continue;
|
|
2156
|
-
}
|
|
2157
|
-
if (part.type === "reasoning" && part.text) {
|
|
2158
|
-
yield {
|
|
2159
|
-
type: "timeline",
|
|
2160
|
-
provider: "opencode",
|
|
2161
|
-
item: { type: "reasoning", text: part.text },
|
|
2162
|
-
};
|
|
2163
|
-
continue;
|
|
2164
|
-
}
|
|
2165
|
-
if (part.type !== "tool") {
|
|
2166
|
-
continue;
|
|
2167
2170
|
}
|
|
2168
|
-
const
|
|
2169
|
-
if (
|
|
2170
|
-
yield
|
|
2171
|
-
type: "timeline",
|
|
2172
|
-
provider: "opencode",
|
|
2173
|
-
item: parsedToolPart.data,
|
|
2174
|
-
};
|
|
2171
|
+
const event = buildOpenCodeReplayPartTimelineEvent({ part, message: info });
|
|
2172
|
+
if (event) {
|
|
2173
|
+
yield event;
|
|
2175
2174
|
}
|
|
2176
2175
|
}
|
|
2177
2176
|
if (!emittedAssistantText) {
|
|
2178
2177
|
const text = stringifyStructuredAssistantMessage(info.structured);
|
|
2179
2178
|
if (text) {
|
|
2180
|
-
yield {
|
|
2181
|
-
type: "timeline",
|
|
2182
|
-
provider: "opencode",
|
|
2179
|
+
yield buildOpenCodeReplayTimelineEvent({
|
|
2183
2180
|
item: { type: "assistant_message", text },
|
|
2184
|
-
|
|
2181
|
+
message: info,
|
|
2182
|
+
});
|
|
2185
2183
|
}
|
|
2186
2184
|
}
|
|
2187
2185
|
}
|