@tutti-os/agent-gui 0.0.39 → 0.0.40
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/README.md +40 -0
- package/dist/{AgentMessageMarkdown-BVeh06AJ.d.ts → AgentMessageMarkdown-GDgLA-im.d.ts} +3 -156
- package/dist/agent-conversation/index.d.ts +2 -1
- package/dist/agent-conversation/index.js +3 -3
- package/dist/agent-message-center/index.js +3 -3
- package/dist/chunk-4K22O34C.js +123 -0
- package/dist/chunk-4K22O34C.js.map +1 -0
- package/dist/{chunk-3AXEEQMV.js → chunk-DO7D7OOL.js} +3 -3
- package/dist/{chunk-ZWJBG2JM.js → chunk-EFDGMXTB.js} +62 -7
- package/dist/chunk-EFDGMXTB.js.map +1 -0
- package/dist/{chunk-C7ZZZXKB.js → chunk-EQ4RSPQE.js} +2 -2
- package/dist/{chunk-JNGYJ7GM.js → chunk-EU7RWKHE.js} +2 -2
- package/dist/{chunk-IXIGWLQY.js → chunk-F5DYXCY3.js} +1 -1
- package/dist/{chunk-IXIGWLQY.js.map → chunk-F5DYXCY3.js.map} +1 -1
- package/dist/{chunk-XL2EKJTQ.js → chunk-R7XH3C4Y.js} +3 -3
- package/dist/{chunk-B2JKDZSR.js → chunk-TXXWUG2J.js} +1 -1
- package/dist/chunk-TXXWUG2J.js.map +1 -0
- package/dist/{chunk-46IYJEZX.js → chunk-UUM2GZXH.js} +3 -3
- package/dist/{chunk-5HQDW73P.js → chunk-WC34LVH6.js} +2 -2
- package/dist/context-mention-palette/index.js +2 -2
- package/dist/index.d.ts +124 -102
- package/dist/index.js +243 -57
- package/dist/index.js.map +1 -1
- package/dist/types-xMz0lJWt.d.ts +173 -0
- package/dist/workbench/contribution.d.ts +1 -0
- package/dist/workbench/contribution.js +5 -4
- package/dist/workbench/index.d.ts +1 -0
- package/dist/workbench/index.js +5 -4
- package/dist/workbench/launch.d.ts +1 -0
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/providerCatalog.d.ts +1 -0
- package/dist/workbench/state.d.ts +1 -0
- package/dist/workbench/state.js +2 -1
- package/dist/workbench/types.d.ts +6 -0
- package/dist/workbench/types.js +1 -1
- package/package.json +12 -12
- package/dist/chunk-B2JKDZSR.js.map +0 -1
- package/dist/chunk-ZWJBG2JM.js.map +0 -1
- /package/dist/{chunk-3AXEEQMV.js.map → chunk-DO7D7OOL.js.map} +0 -0
- /package/dist/{chunk-C7ZZZXKB.js.map → chunk-EQ4RSPQE.js.map} +0 -0
- /package/dist/{chunk-JNGYJ7GM.js.map → chunk-EU7RWKHE.js.map} +0 -0
- /package/dist/{chunk-XL2EKJTQ.js.map → chunk-R7XH3C4Y.js.map} +0 -0
- /package/dist/{chunk-46IYJEZX.js.map → chunk-UUM2GZXH.js.map} +0 -0
- /package/dist/{chunk-5HQDW73P.js.map → chunk-WC34LVH6.js.map} +0 -0
package/README.md
CHANGED
|
@@ -59,3 +59,43 @@ Run this boundary check after changing AgentGUI data flow:
|
|
|
59
59
|
```sh
|
|
60
60
|
pnpm check:agent-activity-runtime-boundaries
|
|
61
61
|
```
|
|
62
|
+
|
|
63
|
+
## Provider Targets
|
|
64
|
+
|
|
65
|
+
`provider` remains the real provider identity, such as `codex`,
|
|
66
|
+
`claude-code`, or `nexight`. AgentGUI uses that identity for composer options,
|
|
67
|
+
settings, icons, probes, status, and provider-specific UI policy.
|
|
68
|
+
|
|
69
|
+
Hosts may pass `providerTargets` when a real provider has multiple launch
|
|
70
|
+
targets. A target has display metadata plus an opaque `ref`:
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
export interface AgentGUIProviderTargetRef {
|
|
74
|
+
kind: string;
|
|
75
|
+
provider: AgentGUIProvider;
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface AgentGUIProviderTarget {
|
|
80
|
+
targetId: string;
|
|
81
|
+
provider: AgentGUIProvider;
|
|
82
|
+
ref: AgentGUIProviderTargetRef;
|
|
83
|
+
label: string;
|
|
84
|
+
description?: string;
|
|
85
|
+
ownerLabel?: string;
|
|
86
|
+
disabled?: boolean;
|
|
87
|
+
unavailableReason?: string;
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
AgentGUI does not interpret `ref.kind` and does not treat `targetId` or `ref`
|
|
92
|
+
as authority. It displays `target.label`, keeps provider logic keyed by the
|
|
93
|
+
real `target.provider`, and passes `providerTargetRef` through activation.
|
|
94
|
+
Trusted host code must re-authenticate the current user/workspace and resolve
|
|
95
|
+
any invocation plan before launching.
|
|
96
|
+
|
|
97
|
+
If `providerTargets` is omitted or empty, AgentGUI creates local targets such as
|
|
98
|
+
`local:codex` and `local:claude-code` from the static provider catalog for
|
|
99
|
+
display/backward compatibility. Those fallback local targets are not persisted
|
|
100
|
+
or sent as `providerTargetRef`; legacy hosts continue to receive only the real
|
|
101
|
+
`provider`.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
|
|
2
|
+
import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, A as AgentGUINodeData, b as AgentGUIProviderTarget, m as AgentPromptContentBlock } from './types-xMz0lJWt.js';
|
|
2
3
|
import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-DLnMBMoh.js';
|
|
3
4
|
import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-1QgRwvwZ.js';
|
|
4
5
|
import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
|
|
@@ -13,134 +14,6 @@ interface AppErrorDescriptor {
|
|
|
13
14
|
debugMessage?: string;
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
type AgentHostAgentSessionProvider = "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw";
|
|
17
|
-
type AgentHostAgentSessionPermissionModeSemantic = "ask-before-write" | "accept-edits" | "locked-down" | "auto" | "full-access" | "unconfigurable";
|
|
18
|
-
type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
|
|
19
|
-
type AgentHostAgentSessionSpeed = "standard" | "fast" | string;
|
|
20
|
-
interface AgentHostAgentSessionPermissionModeOption {
|
|
21
|
-
id: string;
|
|
22
|
-
label?: string;
|
|
23
|
-
description?: string;
|
|
24
|
-
semantic: AgentHostAgentSessionPermissionModeSemantic;
|
|
25
|
-
}
|
|
26
|
-
interface AgentHostAgentSessionPermissionConfig {
|
|
27
|
-
configurable: boolean;
|
|
28
|
-
defaultValue?: string | null;
|
|
29
|
-
modes: AgentHostAgentSessionPermissionModeOption[];
|
|
30
|
-
}
|
|
31
|
-
interface AgentHostAgentSessionComposerSettings {
|
|
32
|
-
model?: string | null;
|
|
33
|
-
reasoningEffort?: AgentHostAgentSessionReasoningEffort | null;
|
|
34
|
-
speed?: AgentHostAgentSessionSpeed | null;
|
|
35
|
-
planMode?: boolean;
|
|
36
|
-
browserUse?: boolean;
|
|
37
|
-
computerUse?: boolean;
|
|
38
|
-
permissionModeId?: string | null;
|
|
39
|
-
}
|
|
40
|
-
interface AgentHostAgentSession {
|
|
41
|
-
workspaceId: string;
|
|
42
|
-
agentSessionId: string;
|
|
43
|
-
provider: AgentHostAgentSessionProvider;
|
|
44
|
-
providerSessionId: string;
|
|
45
|
-
resumable?: boolean;
|
|
46
|
-
cwd?: string;
|
|
47
|
-
status: "ready" | "working" | "canceled" | "failed" | "completed" | string;
|
|
48
|
-
title?: string;
|
|
49
|
-
pinnedAtUnixMs?: number | null;
|
|
50
|
-
visible?: boolean;
|
|
51
|
-
permissionModeId?: string;
|
|
52
|
-
permissionConfig?: AgentHostAgentSessionPermissionConfig;
|
|
53
|
-
settings?: AgentHostAgentSessionComposerSettings;
|
|
54
|
-
createdAtUnixMs: number;
|
|
55
|
-
updatedAtUnixMs: number;
|
|
56
|
-
}
|
|
57
|
-
interface AgentHostAgentSessionInteractivePrompt {
|
|
58
|
-
kind: string;
|
|
59
|
-
requestId?: string;
|
|
60
|
-
toolName?: string;
|
|
61
|
-
status?: string;
|
|
62
|
-
input?: Record<string, unknown>;
|
|
63
|
-
output?: Record<string, unknown>;
|
|
64
|
-
error?: Record<string, unknown>;
|
|
65
|
-
metadata?: Record<string, unknown>;
|
|
66
|
-
}
|
|
67
|
-
interface AgentHostAgentSessionState {
|
|
68
|
-
workspaceId: string;
|
|
69
|
-
agentSessionId: string;
|
|
70
|
-
provider: AgentHostAgentSessionProvider;
|
|
71
|
-
providerSessionId?: string;
|
|
72
|
-
resumable?: boolean;
|
|
73
|
-
status: AgentHostAgentSession["status"];
|
|
74
|
-
turnLifecycle?: AgentHostAgentActivityTurnLifecycle | null;
|
|
75
|
-
submitAvailability?: AgentHostAgentActivitySubmitAvailability | null;
|
|
76
|
-
permissionModeId?: string;
|
|
77
|
-
permissionConfig?: AgentHostAgentSessionPermissionConfig;
|
|
78
|
-
settings?: AgentHostAgentSessionComposerSettings;
|
|
79
|
-
authState?: string;
|
|
80
|
-
runtimeContext?: Record<string, unknown>;
|
|
81
|
-
pinnedAtUnixMs?: number | null;
|
|
82
|
-
pendingInteractive?: AgentHostAgentSessionInteractivePrompt | null;
|
|
83
|
-
updatedAtUnixMs: number;
|
|
84
|
-
}
|
|
85
|
-
interface AgentHostAgentActivityCompletedCommand {
|
|
86
|
-
kind: string;
|
|
87
|
-
status: string;
|
|
88
|
-
}
|
|
89
|
-
interface AgentHostAgentActivityTurnLifecycle {
|
|
90
|
-
activeTurnId: string | null;
|
|
91
|
-
phase: string;
|
|
92
|
-
settling?: boolean;
|
|
93
|
-
outcome?: string | null;
|
|
94
|
-
completedCommand?: AgentHostAgentActivityCompletedCommand | null;
|
|
95
|
-
}
|
|
96
|
-
interface AgentHostAgentActivitySubmitAvailability {
|
|
97
|
-
state: string;
|
|
98
|
-
reason?: string;
|
|
99
|
-
}
|
|
100
|
-
type AgentHostAgentSessionActivationMode = "new" | "existing";
|
|
101
|
-
type AgentHostAgentSessionActivationStatus = "attached" | "already_attached" | "failed";
|
|
102
|
-
interface AgentHostActivateAgentSessionResult {
|
|
103
|
-
session: AgentHostAgentSession;
|
|
104
|
-
activation: {
|
|
105
|
-
mode: AgentHostAgentSessionActivationMode;
|
|
106
|
-
status: AgentHostAgentSessionActivationStatus;
|
|
107
|
-
};
|
|
108
|
-
error?: {
|
|
109
|
-
code: string;
|
|
110
|
-
message: string;
|
|
111
|
-
debugMessage?: string;
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
interface AgentHostUnactivateAgentSessionResult {
|
|
115
|
-
agentSessionId: string;
|
|
116
|
-
buffered: boolean;
|
|
117
|
-
}
|
|
118
|
-
interface AgentPromptContentBlock {
|
|
119
|
-
type: "text" | "image" | "file" | "skill" | "mention";
|
|
120
|
-
text?: string;
|
|
121
|
-
mimeType?: "image/png" | "image/jpeg" | "image/webp" | string;
|
|
122
|
-
data?: string;
|
|
123
|
-
url?: string;
|
|
124
|
-
attachmentId?: string;
|
|
125
|
-
name?: string;
|
|
126
|
-
path?: string;
|
|
127
|
-
uri?: string;
|
|
128
|
-
hostPath?: string;
|
|
129
|
-
uploadStatus?: string;
|
|
130
|
-
assetId?: string;
|
|
131
|
-
kind?: string;
|
|
132
|
-
sizeBytes?: number;
|
|
133
|
-
}
|
|
134
|
-
interface AgentHostUpdateAgentSessionSettingsResult {
|
|
135
|
-
agentSessionId: string;
|
|
136
|
-
settings: AgentHostAgentSessionComposerSettings;
|
|
137
|
-
}
|
|
138
|
-
interface AgentHostAgentSessionCommand {
|
|
139
|
-
name: string;
|
|
140
|
-
description?: string;
|
|
141
|
-
inputHint?: string;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
17
|
type AgentAvailabilityStatus = "available" | "unavailable" | "unknown";
|
|
145
18
|
type AgentQuotaType = "session" | "weekly" | "monthly" | "daily" | "model" | "cost";
|
|
146
19
|
interface AgentAvailabilityCheck {
|
|
@@ -481,33 +354,6 @@ interface AgentHostRuntimeApi {
|
|
|
481
354
|
workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;
|
|
482
355
|
}
|
|
483
356
|
|
|
484
|
-
declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "nexight", "opencode", "gemini", "openclaw", "hermes"];
|
|
485
|
-
type AgentProvider = (typeof AGENT_PROVIDERS)[number];
|
|
486
|
-
|
|
487
|
-
interface AgentGUINodeData {
|
|
488
|
-
provider: AgentGUIProvider;
|
|
489
|
-
lastActiveAgentSessionId: string | null;
|
|
490
|
-
lastActiveConversationTitle?: string | null;
|
|
491
|
-
conversationCount?: number | null;
|
|
492
|
-
conversationRailWidthPx?: number | null;
|
|
493
|
-
conversationRailCollapsed?: boolean | null;
|
|
494
|
-
composerOverrides?: AgentHostAgentSessionComposerSettings | null;
|
|
495
|
-
composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
|
|
496
|
-
}
|
|
497
|
-
type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw">;
|
|
498
|
-
interface Size {
|
|
499
|
-
width: number;
|
|
500
|
-
height: number;
|
|
501
|
-
}
|
|
502
|
-
interface Point {
|
|
503
|
-
x: number;
|
|
504
|
-
y: number;
|
|
505
|
-
}
|
|
506
|
-
interface NodeFrame {
|
|
507
|
-
position: Point;
|
|
508
|
-
size: Size;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
357
|
type AgentSessionCommand = AgentHostAgentSessionCommand;
|
|
512
358
|
type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
|
|
513
359
|
type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
|
|
@@ -679,6 +525,7 @@ interface AgentGUINodeViewModel {
|
|
|
679
525
|
workspacePath?: string | null;
|
|
680
526
|
currentUserId?: string | null;
|
|
681
527
|
data: AgentGUINodeData;
|
|
528
|
+
selectedProviderTarget: AgentGUIProviderTarget;
|
|
682
529
|
conversations: AgentGUIConversationSummary[];
|
|
683
530
|
userProjects: AgentGUIConversationUserProject[];
|
|
684
531
|
activeConversation: AgentGUIConversationSummary | null;
|
|
@@ -729,4 +576,4 @@ interface AgentMessageMarkdownWorkspaceAppIcon {
|
|
|
729
576
|
workspaceId?: string | null;
|
|
730
577
|
}
|
|
731
578
|
|
|
732
|
-
export type {
|
|
579
|
+
export type { AgentGUINodeViewModel as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIProviderSkillOption as a, AgentHostApi as b, AgentHostInputApi as c, AgentHostRuntimeApi as d, AgentHostSelectFilesInput as e, AgentMessageMarkdownWorkspaceAppIcon as f, AgentProbeProvider as g, AgentProbeSnapshot as h, AgentProviderProbeListInput as i, AgentProviderProbeListResult as j, AgentUsageQuota as k, AgentUsageSnapshot as l, WriteWorkspaceAgentReadStateInput as m };
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, JSX } from 'react';
|
|
3
3
|
import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
|
|
4
|
-
import {
|
|
4
|
+
import { a as AgentGUIProviderSkillOption, f as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-GDgLA-im.js';
|
|
5
5
|
import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
|
|
6
6
|
export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
|
|
7
7
|
export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, q as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-DLnMBMoh.js';
|
|
8
8
|
import '@tutti-os/workspace-issue-manager/core';
|
|
9
9
|
import '@tutti-os/agent-activity-core';
|
|
10
|
+
import '../types-xMz0lJWt.js';
|
|
10
11
|
import '@tutti-os/workspace-user-project/contracts';
|
|
11
12
|
|
|
12
13
|
interface AgentConversationFlowProps {
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
projectAgentConversationVM,
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
8
|
useProjectedAgentConversation
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-DO7D7OOL.js";
|
|
10
|
+
import "../chunk-WC34LVH6.js";
|
|
11
11
|
import "../chunk-RE3AHBX6.js";
|
|
12
12
|
import "../chunk-Y35GDLP2.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-TXXWUG2J.js";
|
|
14
14
|
import "../chunk-TYGL25EL.js";
|
|
15
15
|
import {
|
|
16
16
|
translate
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
formatAgentSessionMentionText,
|
|
5
5
|
getPromptToolDetails,
|
|
6
6
|
isPromptRequestIdTitle
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-UUM2GZXH.js";
|
|
8
8
|
import {
|
|
9
9
|
PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
|
|
10
10
|
PLAN_IMPLEMENTATION_PROMPT,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
cn,
|
|
18
18
|
extractAgentMcpToolTarget,
|
|
19
19
|
normalizeAskUserQuestions
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-WC34LVH6.js";
|
|
21
21
|
import {
|
|
22
22
|
managedAgentRoundedIconUrl,
|
|
23
23
|
userAvatarPlaceholderUrl,
|
|
@@ -27,7 +27,7 @@ import "../chunk-MTFSQWZ6.js";
|
|
|
27
27
|
import {
|
|
28
28
|
resolveWorkspaceAgentSessionSortTimeUnixMs
|
|
29
29
|
} from "../chunk-IBIMGLCD.js";
|
|
30
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-TXXWUG2J.js";
|
|
31
31
|
import {
|
|
32
32
|
workspaceAgentProviderLabel
|
|
33
33
|
} from "../chunk-TYGL25EL.js";
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// providerTargets.ts
|
|
2
|
+
var agentGUIProviderTargetFallbackLabels = {
|
|
3
|
+
"claude-code": "Claude Code",
|
|
4
|
+
codex: "Codex",
|
|
5
|
+
gemini: "Gemini",
|
|
6
|
+
hermes: "Hermes",
|
|
7
|
+
nexight: "Nexight",
|
|
8
|
+
openclaw: "OpenClaw"
|
|
9
|
+
};
|
|
10
|
+
var agentGUIDefaultTargetProviders = [
|
|
11
|
+
"codex",
|
|
12
|
+
"claude-code",
|
|
13
|
+
"nexight",
|
|
14
|
+
"hermes",
|
|
15
|
+
"gemini",
|
|
16
|
+
"openclaw"
|
|
17
|
+
];
|
|
18
|
+
function createLocalAgentGUIProviderTarget(provider) {
|
|
19
|
+
return {
|
|
20
|
+
targetId: localAgentGUIProviderTargetId(provider),
|
|
21
|
+
provider,
|
|
22
|
+
ref: {
|
|
23
|
+
kind: "local",
|
|
24
|
+
provider
|
|
25
|
+
},
|
|
26
|
+
label: agentGUIProviderTargetFallbackLabels[provider] ?? provider
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function createLocalAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders) {
|
|
30
|
+
return providers.map(
|
|
31
|
+
(provider) => createLocalAgentGUIProviderTarget(provider)
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
function localAgentGUIProviderTargetId(provider) {
|
|
35
|
+
return `local:${provider}`;
|
|
36
|
+
}
|
|
37
|
+
function normalizeAgentGUIProviderTargets(targets, options) {
|
|
38
|
+
const fallbackToLocal = options?.fallbackToLocal !== false;
|
|
39
|
+
const source = targets && targets.length > 0 ? targets : [];
|
|
40
|
+
const normalizedTargets = [];
|
|
41
|
+
const seenTargetKeys = /* @__PURE__ */ new Set();
|
|
42
|
+
for (const target of source) {
|
|
43
|
+
const normalized = normalizeAgentGUIProviderTarget(target);
|
|
44
|
+
if (!normalized) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const dedupeKey = `${normalized.provider}\0${normalized.targetId}`;
|
|
48
|
+
if (seenTargetKeys.has(dedupeKey)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
seenTargetKeys.add(dedupeKey);
|
|
52
|
+
normalizedTargets.push(normalized);
|
|
53
|
+
}
|
|
54
|
+
return normalizedTargets.length > 0 || !fallbackToLocal ? normalizedTargets : createLocalAgentGUIProviderTargets();
|
|
55
|
+
}
|
|
56
|
+
function resolveAgentGUIProviderTarget(input) {
|
|
57
|
+
const providerTargets = input.providerTargets.filter(
|
|
58
|
+
(target) => target.provider === input.provider
|
|
59
|
+
);
|
|
60
|
+
const targetById = new Map(
|
|
61
|
+
providerTargets.map((target) => [target.targetId, target])
|
|
62
|
+
);
|
|
63
|
+
return targetById.get(input.providerTargetId?.trim() ?? "") ?? targetById.get(input.defaultProviderTargetId?.trim() ?? "") ?? targetById.get(localAgentGUIProviderTargetId(input.provider)) ?? providerTargets.find((target) => target.disabled !== true) ?? providerTargets[0] ?? createLocalAgentGUIProviderTarget(input.provider);
|
|
64
|
+
}
|
|
65
|
+
function agentGUIProviderTargetRefsEqual(left, right) {
|
|
66
|
+
if (left === right) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
if (!left && !right) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
if (!left || !right) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);
|
|
76
|
+
}
|
|
77
|
+
function normalizeAgentGUIProviderTarget(target) {
|
|
78
|
+
const targetId = target.targetId.trim();
|
|
79
|
+
const label = target.label.trim();
|
|
80
|
+
const kind = typeof target.ref.kind === "string" ? target.ref.kind.trim() : "";
|
|
81
|
+
if (!targetId || !label || !kind || target.ref.provider !== target.provider) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
...target,
|
|
86
|
+
targetId,
|
|
87
|
+
provider: target.provider,
|
|
88
|
+
ref: {
|
|
89
|
+
...target.ref,
|
|
90
|
+
kind,
|
|
91
|
+
provider: target.provider
|
|
92
|
+
},
|
|
93
|
+
label,
|
|
94
|
+
...target.description?.trim() ? { description: target.description.trim() } : {},
|
|
95
|
+
...target.ownerLabel?.trim() ? { ownerLabel: target.ownerLabel.trim() } : {},
|
|
96
|
+
...target.unavailableReason?.trim() ? { unavailableReason: target.unavailableReason.trim() } : {}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function stableProviderTargetRefKey(ref) {
|
|
100
|
+
return JSON.stringify(sortProviderTargetRefValue(ref));
|
|
101
|
+
}
|
|
102
|
+
function sortProviderTargetRefValue(value) {
|
|
103
|
+
if (Array.isArray(value)) {
|
|
104
|
+
return value.map(sortProviderTargetRefValue);
|
|
105
|
+
}
|
|
106
|
+
if (!value || typeof value !== "object") {
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
return Object.fromEntries(
|
|
110
|
+
Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export {
|
|
115
|
+
agentGUIDefaultTargetProviders,
|
|
116
|
+
createLocalAgentGUIProviderTarget,
|
|
117
|
+
createLocalAgentGUIProviderTargets,
|
|
118
|
+
localAgentGUIProviderTargetId,
|
|
119
|
+
normalizeAgentGUIProviderTargets,
|
|
120
|
+
resolveAgentGUIProviderTarget,
|
|
121
|
+
agentGUIProviderTargetRefsEqual
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=chunk-4K22O34C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../providerTargets.ts"],"sourcesContent":["import type {\n AgentGUIProvider,\n AgentGUIProviderTarget,\n AgentGUIProviderTargetRef\n} from \"./types.ts\";\n\nconst agentGUIProviderTargetFallbackLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Nexight\",\n openclaw: \"OpenClaw\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"nexight\",\n \"hermes\",\n \"gemini\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nexport function createLocalAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n return {\n targetId: localAgentGUIProviderTargetId(provider),\n provider,\n ref: {\n kind: \"local\",\n provider\n },\n label: agentGUIProviderTargetFallbackLabels[provider] ?? provider\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((provider) =>\n createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nexport function localAgentGUIProviderTargetId(\n provider: AgentGUIProvider\n): string {\n return `local:${provider}`;\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: { fallbackToLocal?: boolean }\n): AgentGUIProviderTarget[] {\n const fallbackToLocal = options?.fallbackToLocal !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\n for (const target of source) {\n const normalized = normalizeAgentGUIProviderTarget(target);\n if (!normalized) {\n continue;\n }\n const dedupeKey = `${normalized.provider}\\u0000${normalized.targetId}`;\n if (seenTargetKeys.has(dedupeKey)) {\n continue;\n }\n seenTargetKeys.add(dedupeKey);\n normalizedTargets.push(normalized);\n }\n return normalizedTargets.length > 0 || !fallbackToLocal\n ? normalizedTargets\n : createLocalAgentGUIProviderTargets();\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n defaultProviderTargetId?: string | null;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\n}): AgentGUIProviderTarget {\n const providerTargets = input.providerTargets.filter(\n (target) => target.provider === input.provider\n );\n const targetById = new Map(\n providerTargets.map((target) => [target.targetId, target])\n );\n return (\n targetById.get(input.providerTargetId?.trim() ?? \"\") ??\n targetById.get(input.defaultProviderTargetId?.trim() ?? \"\") ??\n targetById.get(localAgentGUIProviderTargetId(input.provider)) ??\n providerTargets.find((target) => target.disabled !== true) ??\n providerTargets[0] ??\n createLocalAgentGUIProviderTarget(input.provider)\n );\n}\n\nexport function agentGUIProviderTargetRefsEqual(\n left: AgentGUIProviderTargetRef | null | undefined,\n right: AgentGUIProviderTargetRef | null | undefined\n): boolean {\n if (left === right) {\n return true;\n }\n if (!left && !right) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);\n}\n\nfunction normalizeAgentGUIProviderTarget(\n target: AgentGUIProviderTarget\n): AgentGUIProviderTarget | null {\n const targetId = target.targetId.trim();\n const label = target.label.trim();\n const kind =\n typeof target.ref.kind === \"string\" ? target.ref.kind.trim() : \"\";\n if (!targetId || !label || !kind || target.ref.provider !== target.provider) {\n return null;\n }\n return {\n ...target,\n targetId,\n provider: target.provider,\n ref: {\n ...target.ref,\n kind,\n provider: target.provider\n },\n label,\n ...(target.description?.trim()\n ? { description: target.description.trim() }\n : {}),\n ...(target.ownerLabel?.trim()\n ? { ownerLabel: target.ownerLabel.trim() }\n : {}),\n ...(target.unavailableReason?.trim()\n ? { unavailableReason: target.unavailableReason.trim() }\n : {})\n };\n}\n\nfunction stableProviderTargetRefKey(ref: AgentGUIProviderTargetRef): string {\n return JSON.stringify(sortProviderTargetRefValue(ref));\n}\n\nfunction sortProviderTargetRefValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortProviderTargetRefValue);\n }\n if (!value || typeof value !== \"object\") {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
resolveWorkspaceFileLinkAction,
|
|
12
12
|
resolveWorkspaceFilePathCandidate,
|
|
13
13
|
resolveWorkspaceLinkAction
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WC34LVH6.js";
|
|
15
15
|
import {
|
|
16
16
|
attrsToMentionItem,
|
|
17
17
|
createAgentFileMentionExtension,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import {
|
|
29
29
|
getOptionalAgentActivityRuntime,
|
|
30
30
|
useOptionalAgentHostApi
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-TXXWUG2J.js";
|
|
32
32
|
import {
|
|
33
33
|
workspaceAgentProviderLabel
|
|
34
34
|
} from "./chunk-TYGL25EL.js";
|
|
@@ -12732,4 +12732,4 @@ export {
|
|
|
12732
12732
|
AgentConversationFlow,
|
|
12733
12733
|
useProjectedAgentConversation
|
|
12734
12734
|
};
|
|
12735
|
-
//# sourceMappingURL=chunk-
|
|
12735
|
+
//# sourceMappingURL=chunk-DO7D7OOL.js.map
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
agentGuiWorkbenchProviders,
|
|
3
|
+
isAgentGuiWorkbenchProvider,
|
|
3
4
|
normalizeAgentGuiWorkbenchProvider
|
|
4
5
|
} from "./chunk-22L4VWUR.js";
|
|
6
|
+
import {
|
|
7
|
+
agentGUIProviderTargetRefsEqual
|
|
8
|
+
} from "./chunk-4K22O34C.js";
|
|
5
9
|
|
|
6
10
|
// workbench/state.ts
|
|
7
11
|
function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
@@ -13,13 +17,21 @@ function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
|
13
17
|
conversationRailWidthPx: null,
|
|
14
18
|
lastActiveAgentSessionId: null,
|
|
15
19
|
lastActiveConversationTitle: null,
|
|
16
|
-
provider
|
|
20
|
+
provider,
|
|
21
|
+
providerTargetId: null,
|
|
22
|
+
providerTargetRef: null
|
|
17
23
|
};
|
|
18
24
|
}
|
|
19
25
|
function normalizeAgentGuiWorkbenchState(state) {
|
|
20
26
|
if (!isRecord(state)) {
|
|
21
27
|
return createDefaultAgentGuiWorkbenchState();
|
|
22
28
|
}
|
|
29
|
+
const providerTargetId = normalizeOptionalNonEmptyString(
|
|
30
|
+
state.providerTargetId
|
|
31
|
+
);
|
|
32
|
+
const providerTargetRef = normalizeAgentGuiProviderTargetRef(
|
|
33
|
+
state.providerTargetRef
|
|
34
|
+
);
|
|
23
35
|
return {
|
|
24
36
|
composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(
|
|
25
37
|
state.composerOverrides
|
|
@@ -31,10 +43,19 @@ function normalizeAgentGuiWorkbenchState(state) {
|
|
|
31
43
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
32
44
|
state.conversationRailWidthPx
|
|
33
45
|
),
|
|
34
|
-
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
46
|
+
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null,
|
|
47
|
+
...providerTargetId ? { providerTargetId } : {},
|
|
48
|
+
...providerTargetRef ? { providerTargetRef } : {}
|
|
35
49
|
};
|
|
36
50
|
}
|
|
37
51
|
function projectAgentGuiWorkbenchState(state) {
|
|
52
|
+
const providerTargetId = normalizeOptionalNonEmptyString(
|
|
53
|
+
state.providerTargetId
|
|
54
|
+
);
|
|
55
|
+
const providerTargetRef = normalizeAgentGuiProviderTargetRef(
|
|
56
|
+
state.providerTargetRef,
|
|
57
|
+
state.provider
|
|
58
|
+
);
|
|
38
59
|
return {
|
|
39
60
|
composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(
|
|
40
61
|
state.composerOverrides
|
|
@@ -46,14 +67,19 @@ function projectAgentGuiWorkbenchState(state) {
|
|
|
46
67
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
47
68
|
state.conversationRailWidthPx
|
|
48
69
|
),
|
|
49
|
-
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
70
|
+
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,
|
|
71
|
+
...providerTargetId ? { providerTargetId } : {},
|
|
72
|
+
...providerTargetRef ? { providerTargetRef } : {}
|
|
50
73
|
};
|
|
51
74
|
}
|
|
52
75
|
function areAgentGuiWorkbenchStatesEqual(left, right) {
|
|
53
76
|
return composerOverridesEqual(left.composerOverrides, right.composerOverrides) && composerOverridesByProviderEqual(
|
|
54
77
|
left.composerOverridesByProvider,
|
|
55
78
|
right.composerOverridesByProvider
|
|
56
|
-
) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId
|
|
79
|
+
) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && (left.providerTargetId ?? null) === (right.providerTargetId ?? null) && agentGUIProviderTargetRefsEqual(
|
|
80
|
+
left.providerTargetRef,
|
|
81
|
+
right.providerTargetRef
|
|
82
|
+
);
|
|
57
83
|
}
|
|
58
84
|
function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex") {
|
|
59
85
|
const provider = normalizeAgentGuiWorkbenchProvider(
|
|
@@ -77,14 +103,22 @@ function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex")
|
|
|
77
103
|
),
|
|
78
104
|
lastActiveAgentSessionId: typeof state?.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null,
|
|
79
105
|
lastActiveConversationTitle: typeof state?.lastActiveConversationTitle === "string" ? state.lastActiveConversationTitle : null,
|
|
80
|
-
provider
|
|
106
|
+
provider,
|
|
107
|
+
providerTargetId: normalizeOptionalNonEmptyString(state?.providerTargetId),
|
|
108
|
+
providerTargetRef: normalizeAgentGuiProviderTargetRef(
|
|
109
|
+
state?.providerTargetRef,
|
|
110
|
+
provider
|
|
111
|
+
)
|
|
81
112
|
};
|
|
82
113
|
}
|
|
83
114
|
function areAgentGuiWorkbenchNodeStatesEqual(left, right) {
|
|
84
115
|
return composerOverridesEqual(left.composerOverrides, right.composerOverrides) && composerOverridesByProviderEqual(
|
|
85
116
|
left.composerOverridesByProvider,
|
|
86
117
|
right.composerOverridesByProvider
|
|
87
|
-
) && left.conversationCount === right.conversationCount && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && left.lastActiveConversationTitle === right.lastActiveConversationTitle && left.provider === right.provider
|
|
118
|
+
) && left.conversationCount === right.conversationCount && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && left.lastActiveConversationTitle === right.lastActiveConversationTitle && left.provider === right.provider && (left.providerTargetId ?? null) === (right.providerTargetId ?? null) && agentGUIProviderTargetRefsEqual(
|
|
119
|
+
left.providerTargetRef,
|
|
120
|
+
right.providerTargetRef
|
|
121
|
+
);
|
|
88
122
|
}
|
|
89
123
|
function agentGuiWorkbenchProviderFromInstanceId(instanceId) {
|
|
90
124
|
const normalized = instanceId?.trim();
|
|
@@ -198,6 +232,27 @@ function createDefaultAgentGuiWorkbenchState() {
|
|
|
198
232
|
lastActiveAgentSessionId: null
|
|
199
233
|
};
|
|
200
234
|
}
|
|
235
|
+
function normalizeOptionalNonEmptyString(value) {
|
|
236
|
+
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
237
|
+
}
|
|
238
|
+
function normalizeAgentGuiProviderTargetRef(value, expectedProvider) {
|
|
239
|
+
if (!isRecord(value)) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
const kind = normalizeOptionalNonEmptyString(value.kind);
|
|
243
|
+
const provider = value.provider;
|
|
244
|
+
if (!kind || !isAgentGuiWorkbenchProvider(provider)) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
if (expectedProvider && provider !== expectedProvider) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
...value,
|
|
252
|
+
kind,
|
|
253
|
+
provider
|
|
254
|
+
};
|
|
255
|
+
}
|
|
201
256
|
function normalizeAgentGuiWorkbenchComposerOverrides(value) {
|
|
202
257
|
if (!isRecord(value)) {
|
|
203
258
|
return null;
|
|
@@ -263,4 +318,4 @@ export {
|
|
|
263
318
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
264
319
|
createAgentGuiWorkbenchNodeStateSource
|
|
265
320
|
};
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
321
|
+
//# sourceMappingURL=chunk-EFDGMXTB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../workbench/state.ts"],"sourcesContent":["import type {\n WorkbenchHostExternalStateLookupInput,\n WorkbenchHostExternalStateSource\n} from \"@tutti-os/workbench-surface\";\nimport {\n agentGuiWorkbenchProviders,\n isAgentGuiWorkbenchProvider,\n normalizeAgentGuiWorkbenchProvider\n} from \"./providerCatalog.ts\";\nimport { agentGUIProviderTargetRefsEqual } from \"../providerTargets.ts\";\nimport type {\n AgentGuiWorkbenchComposerOverrides,\n AgentGuiWorkbenchComposerOverridesByProvider,\n AgentGuiWorkbenchNodeState,\n AgentGuiWorkbenchProvider,\n AgentGuiWorkbenchState,\n AgentGuiWorkbenchWorkspaceState\n} from \"./types.ts\";\nimport type { AgentGUIProviderTargetRef } from \"../types.ts\";\n\ntype AgentGuiWorkbenchStateLookupRequest = Pick<\n WorkbenchHostExternalStateLookupInput,\n \"instanceId\" | \"typeId\"\n> &\n Partial<Pick<WorkbenchHostExternalStateLookupInput, \"nodeId\">>;\n\nexport function createDefaultAgentGuiWorkbenchNodeState(\n provider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n return {\n composerOverrides: null,\n composerOverridesByProvider: null,\n conversationCount: null,\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null,\n lastActiveConversationTitle: null,\n provider,\n providerTargetId: null,\n providerTargetRef: null\n };\n}\n\nexport function normalizeAgentGuiWorkbenchState(\n state: unknown\n): AgentGuiWorkbenchState {\n if (!isRecord(state)) {\n return createDefaultAgentGuiWorkbenchState();\n }\n const providerTargetId = normalizeOptionalNonEmptyString(\n state.providerTargetId\n );\n const providerTargetRef = normalizeAgentGuiProviderTargetRef(\n state.providerTargetRef\n );\n return {\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state.composerOverridesByProvider\n ),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null,\n ...(providerTargetId ? { providerTargetId } : {}),\n ...(providerTargetRef ? { providerTargetRef } : {})\n };\n}\n\nexport function projectAgentGuiWorkbenchState(\n state: AgentGuiWorkbenchNodeState\n): AgentGuiWorkbenchState {\n const providerTargetId = normalizeOptionalNonEmptyString(\n state.providerTargetId\n );\n const providerTargetRef = normalizeAgentGuiProviderTargetRef(\n state.providerTargetRef,\n state.provider\n );\n return {\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state.composerOverridesByProvider\n ),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,\n ...(providerTargetId ? { providerTargetId } : {}),\n ...(providerTargetRef ? { providerTargetRef } : {})\n };\n}\n\nexport function areAgentGuiWorkbenchStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByProviderEqual(\n left.composerOverridesByProvider,\n right.composerOverridesByProvider\n ) &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n (left.providerTargetId ?? null) === (right.providerTargetId ?? null) &&\n agentGUIProviderTargetRefsEqual(\n left.providerTargetRef,\n right.providerTargetRef\n )\n );\n}\n\nexport function normalizeAgentGuiWorkbenchNodeState(\n state: Partial<AgentGuiWorkbenchNodeState> | null | undefined,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n const provider = normalizeAgentGuiWorkbenchProvider(\n state?.provider,\n fallbackProvider\n );\n return {\n ...createDefaultAgentGuiWorkbenchNodeState(provider),\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state?.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state?.composerOverridesByProvider\n ),\n conversationCount: normalizeOptionalNonNegativeNumber(\n state?.conversationCount\n ),\n conversationRailCollapsed: state?.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state?.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state?.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null,\n lastActiveConversationTitle:\n typeof state?.lastActiveConversationTitle === \"string\"\n ? state.lastActiveConversationTitle\n : null,\n provider,\n providerTargetId: normalizeOptionalNonEmptyString(state?.providerTargetId),\n providerTargetRef: normalizeAgentGuiProviderTargetRef(\n state?.providerTargetRef,\n provider\n )\n };\n}\n\nexport function areAgentGuiWorkbenchNodeStatesEqual(\n left: AgentGuiWorkbenchNodeState,\n right: AgentGuiWorkbenchNodeState\n): boolean {\n return (\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByProviderEqual(\n left.composerOverridesByProvider,\n right.composerOverridesByProvider\n ) &&\n left.conversationCount === right.conversationCount &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n left.lastActiveConversationTitle === right.lastActiveConversationTitle &&\n left.provider === right.provider &&\n (left.providerTargetId ?? null) === (right.providerTargetId ?? null) &&\n agentGUIProviderTargetRefsEqual(\n left.providerTargetRef,\n right.providerTargetRef\n )\n );\n}\n\nexport function agentGuiWorkbenchProviderFromInstanceId(\n instanceId: string | null | undefined\n): AgentGuiWorkbenchProvider {\n const normalized = instanceId?.trim();\n if (!normalized || normalized === \"agent-gui\") {\n return \"codex\";\n }\n const [, provider] = normalized.split(\":\", 3);\n return normalizeAgentGuiWorkbenchProvider(provider);\n}\n\nexport function createAgentGuiWorkbenchNodeStateSource(input: {\n typeId?: string;\n workspaceId: string;\n}): {\n externalStateSource: WorkbenchHostExternalStateSource<\n AgentGuiWorkbenchState | null,\n AgentGuiWorkbenchWorkspaceState\n >;\n readNodeState: (\n request: AgentGuiWorkbenchStateLookupRequest\n ) => AgentGuiWorkbenchState | null;\n writeNodeState: (\n request: AgentGuiWorkbenchStateLookupRequest & {\n state: AgentGuiWorkbenchState;\n }\n ) => void;\n /**\n * Returns the launch instanceId of an open node currently showing the given\n * agent session, or null when none is found. Used to focus an existing\n * conversation instead of launching a duplicate node.\n */\n findInstanceIdByAgentSessionId: (agentSessionId: string) => string | null;\n} {\n const typeId = input.typeId ?? \"agent-gui\";\n const nodeStateByKey = new Map<string, AgentGuiWorkbenchState>();\n // Tracks the launch instanceId behind each state key so a node can be located\n // by the session it is currently showing, even when its key is node-scoped.\n const instanceIdByKey = new Map<string, string>();\n const listeners = new Set<() => void>();\n\n const lookupState = (request: AgentGuiWorkbenchStateLookupRequest) => {\n const nodeState = request.nodeId\n ? nodeStateByKey.get(agentGuiWorkbenchNodeStateKey(request))\n : null;\n const state =\n nodeState ??\n nodeStateByKey.get(agentGuiWorkbenchInstanceStateKey(request));\n return state ? { ...state } : null;\n };\n\n const notify = () => {\n for (const listener of listeners) {\n listener();\n }\n };\n\n return {\n externalStateSource: {\n getNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n getSnapshotNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n getWorkspaceState() {\n return {\n workspaceId: input.workspaceId\n };\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n }\n },\n readNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n findInstanceIdByAgentSessionId(agentSessionId) {\n const target = agentSessionId.trim();\n if (!target) {\n return null;\n }\n for (const [key, state] of nodeStateByKey) {\n if (state.lastActiveAgentSessionId?.trim() === target) {\n return instanceIdByKey.get(key) ?? null;\n }\n }\n return null;\n },\n writeNodeState(request) {\n if (request.typeId !== typeId) {\n return;\n }\n const key = agentGuiWorkbenchNodeStateKey(request);\n instanceIdByKey.set(key, request.instanceId);\n const previous = nodeStateByKey.get(key);\n let clearedInstanceSeed = false;\n if (request.nodeId) {\n const instanceKey = agentGuiWorkbenchInstanceStateKey(request);\n instanceIdByKey.delete(instanceKey);\n clearedInstanceSeed = nodeStateByKey.delete(instanceKey);\n }\n const next = {\n ...normalizeAgentGuiWorkbenchState(request.state)\n };\n if (\n request.nodeId &&\n typeof request.state.lastActiveConversationTitle === \"string\"\n ) {\n next.lastActiveConversationTitle =\n request.state.lastActiveConversationTitle;\n }\n nodeStateByKey.set(key, next);\n if (\n !clearedInstanceSeed &&\n previous &&\n areAgentGuiWorkbenchMemoryStatesEqual(previous, next)\n ) {\n return;\n }\n notify();\n }\n };\n}\n\nfunction areAgentGuiWorkbenchMemoryStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n areAgentGuiWorkbenchStatesEqual(left, right) &&\n (left.lastActiveConversationTitle ?? null) ===\n (right.lastActiveConversationTitle ?? null)\n );\n}\n\nfunction agentGuiWorkbenchNodeStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\"> &\n Partial<Pick<WorkbenchHostExternalStateLookupInput, \"nodeId\">>\n): string {\n return request.nodeId\n ? `node:${request.nodeId}`\n : agentGuiWorkbenchInstanceStateKey(request);\n}\n\nfunction agentGuiWorkbenchInstanceStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\">\n): string {\n return `instance:${request.instanceId}`;\n}\n\nfunction createDefaultAgentGuiWorkbenchState(): AgentGuiWorkbenchState {\n return {\n composerOverrides: null,\n composerOverridesByProvider: null,\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null\n };\n}\n\nfunction normalizeOptionalNonEmptyString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim() ? value.trim() : null;\n}\n\nfunction normalizeAgentGuiProviderTargetRef(\n value: unknown,\n expectedProvider?: AgentGuiWorkbenchProvider\n): AgentGUIProviderTargetRef | null {\n if (!isRecord(value)) {\n return null;\n }\n const kind = normalizeOptionalNonEmptyString(value.kind);\n const provider = value.provider;\n if (!kind || !isAgentGuiWorkbenchProvider(provider)) {\n return null;\n }\n if (expectedProvider && provider !== expectedProvider) {\n return null;\n }\n return {\n ...value,\n kind,\n provider\n };\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverrides(\n value: unknown\n): AgentGuiWorkbenchComposerOverrides | null {\n if (!isRecord(value)) {\n return null;\n }\n const composerOverrides: AgentGuiWorkbenchComposerOverrides = {};\n if (typeof value.model === \"string\" && value.model.trim()) {\n composerOverrides.model = value.model.trim();\n }\n if (\n typeof value.reasoningEffort === \"string\" &&\n value.reasoningEffort.trim()\n ) {\n composerOverrides.reasoningEffort = value.reasoningEffort.trim();\n }\n if (\n typeof value.permissionModeId === \"string\" &&\n value.permissionModeId.trim()\n ) {\n composerOverrides.permissionModeId = value.permissionModeId.trim();\n }\n if (typeof value.planMode === \"boolean\") {\n composerOverrides.planMode = value.planMode;\n }\n return Object.keys(composerOverrides).length > 0 ? composerOverrides : null;\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n value: unknown\n): AgentGuiWorkbenchComposerOverridesByProvider | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: AgentGuiWorkbenchComposerOverridesByProvider = {};\n for (const provider of agentGuiWorkbenchProviders) {\n const overrides = normalizeAgentGuiWorkbenchComposerOverrides(\n value[provider]\n );\n if (overrides) {\n result[provider] = overrides;\n }\n }\n return Object.keys(result).length > 0 ? result : null;\n}\n\nfunction normalizeOptionalPositiveNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value > 0\n ? Math.round(value)\n : null;\n}\n\nfunction normalizeOptionalNonNegativeNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? Math.round(value)\n : null;\n}\n\nfunction composerOverridesEqual(\n left: AgentGuiWorkbenchComposerOverrides | null | undefined,\n right: AgentGuiWorkbenchComposerOverrides | null | undefined\n): boolean {\n return (\n (left?.model ?? null) === (right?.model ?? null) &&\n (left?.permissionModeId ?? null) === (right?.permissionModeId ?? null) &&\n (left?.planMode ?? null) === (right?.planMode ?? null) &&\n (left?.reasoningEffort ?? null) === (right?.reasoningEffort ?? null)\n );\n}\n\nfunction composerOverridesByProviderEqual(\n left: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined,\n right: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined\n): boolean {\n for (const provider of agentGuiWorkbenchProviders) {\n if (!composerOverridesEqual(left?.[provider], right?.[provider])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-RE3AHBX6.js";
|
|
10
10
|
import {
|
|
11
11
|
getOptionalAgentHostApi
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TXXWUG2J.js";
|
|
13
13
|
import {
|
|
14
14
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
15
15
|
} from "./chunk-JM24HADP.js";
|
|
@@ -2123,4 +2123,4 @@ export {
|
|
|
2123
2123
|
AgentFileMentionPalette,
|
|
2124
2124
|
AgentContextMentionPalette
|
|
2125
2125
|
};
|
|
2126
|
-
//# sourceMappingURL=chunk-
|
|
2126
|
+
//# sourceMappingURL=chunk-EQ4RSPQE.js.map
|