@tutti-os/agent-gui 0.0.70 → 0.0.72
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 +4 -0
- package/dist/{AgentMentionSearchController-Po0KQLcL.d.ts → AgentMentionSearchController-DD_WOred.d.ts} +1 -0
- package/dist/agent-conversation/index.d.ts +3 -3
- package/dist/agent-conversation/index.js +6 -6
- package/dist/agent-message-center/index.d.ts +2 -1
- package/dist/agent-message-center/index.js +12 -10
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/{agentGuiNodeTypes-CmLUy5Jt.d.ts → agentGuiNodeTypes-aJ3AX7u2.d.ts} +40 -19
- package/dist/app/renderer/agentactivity.css +156 -1
- package/dist/{chunk-KTIHLBCN.js → chunk-2I2WRI4F.js} +248 -4
- package/dist/chunk-2I2WRI4F.js.map +1 -0
- package/dist/{chunk-DXENDZEF.js → chunk-3PKRGSMH.js} +2 -2
- package/dist/{chunk-QDWV5VTD.js → chunk-466AWJTS.js} +6 -31
- package/dist/chunk-466AWJTS.js.map +1 -0
- package/dist/{chunk-SG6A35BU.js → chunk-5H6NINJY.js} +2 -2
- package/dist/{chunk-SC3PS7AT.js → chunk-C7K3EFGI.js} +2 -2
- package/dist/{chunk-DGNKXT3Q.js → chunk-G6BVEY7I.js} +69 -3
- package/dist/chunk-G6BVEY7I.js.map +1 -0
- package/dist/{chunk-KS35VKHM.js → chunk-GDFQXJMG.js} +1 -1
- package/dist/chunk-GDFQXJMG.js.map +1 -0
- package/dist/{chunk-WWY6MYMU.js → chunk-IVIXKAEH.js} +19 -9
- package/dist/chunk-IVIXKAEH.js.map +1 -0
- package/dist/{chunk-IZX2YQXY.js → chunk-KWQ4N4IZ.js} +117 -8
- package/dist/chunk-KWQ4N4IZ.js.map +1 -0
- package/dist/{chunk-ISQCYEUJ.js → chunk-OBJRIQPX.js} +411 -62
- package/dist/chunk-OBJRIQPX.js.map +1 -0
- package/dist/{chunk-QJ42HQ24.js → chunk-Q6AWM3RH.js} +4 -4
- package/dist/{chunk-MVPSFOJZ.js → chunk-SVGIWXNK.js} +2 -2
- package/dist/{chunk-Y3C5EHSW.js → chunk-SZF52NMJ.js} +173 -12
- package/dist/chunk-SZF52NMJ.js.map +1 -0
- package/dist/{chunk-FTSEVC6O.js → chunk-XZF4QNT4.js} +2 -2
- package/dist/context-mention-palette/index.d.ts +2 -2
- package/dist/context-mention-palette/index.js +7 -7
- package/dist/i18n/index.d.ts +68 -2
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +106 -103
- package/dist/index.js +2216 -1322
- package/dist/index.js.map +1 -1
- package/dist/queued-prompt-runtime.d.ts +2 -2
- package/dist/{types-DZ79b8Zn.d.ts → types-CrwMqBm1.d.ts} +4 -1
- package/dist/workbench/contribution.d.ts +8 -2
- package/dist/workbench/contribution.js +4 -4
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.js +5 -7
- package/dist/workbench/launch.d.ts +1 -1
- package/dist/workbench/providerCatalog.d.ts +1 -1
- package/dist/workbench/sessionTitle.d.ts +1 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.d.ts +1 -1
- package/dist/workbench/state.js +1 -2
- package/dist/workbench/types.d.ts +1 -1
- package/dist/workspace-agent-generated-files.js +3 -3
- package/dist/{workspaceLinkActions-Bjy_XfBm.d.ts → workspaceLinkActions-DS9LWqzI.d.ts} +1 -1
- package/package.json +12 -12
- package/dist/chunk-DGNKXT3Q.js.map +0 -1
- package/dist/chunk-ISQCYEUJ.js.map +0 -1
- package/dist/chunk-IZX2YQXY.js.map +0 -1
- package/dist/chunk-KS35VKHM.js.map +0 -1
- package/dist/chunk-KTIHLBCN.js.map +0 -1
- package/dist/chunk-N37A62BK.js +0 -250
- package/dist/chunk-N37A62BK.js.map +0 -1
- package/dist/chunk-NROZAN34.js +0 -173
- package/dist/chunk-NROZAN34.js.map +0 -1
- package/dist/chunk-QDWV5VTD.js.map +0 -1
- package/dist/chunk-WWY6MYMU.js.map +0 -1
- package/dist/chunk-Y3C5EHSW.js.map +0 -1
- /package/dist/{chunk-DXENDZEF.js.map → chunk-3PKRGSMH.js.map} +0 -0
- /package/dist/{chunk-SG6A35BU.js.map → chunk-5H6NINJY.js.map} +0 -0
- /package/dist/{chunk-SC3PS7AT.js.map → chunk-C7K3EFGI.js.map} +0 -0
- /package/dist/{chunk-QJ42HQ24.js.map → chunk-Q6AWM3RH.js.map} +0 -0
- /package/dist/{chunk-MVPSFOJZ.js.map → chunk-SVGIWXNK.js.map} +0 -0
- /package/dist/{chunk-FTSEVC6O.js.map → chunk-XZF4QNT4.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
|
|
2
|
-
import {
|
|
2
|
+
import { k as AgentHostAgentSessionCommand, l as AgentHostAgentSessionComposerSettings, n as AgentHostAgentSessionReasoningEffort, o as AgentHostAgentSessionSpeed, m as AgentHostAgentSessionPermissionConfig, p as AgentHostAgentSessionState, a as AgentGUIProvider, s as AgentPromptContentBlock, A as AgentGUINodeData, g as AgentGUIProviderTarget, c as AgentGUIProviderRailMode, d as AgentGUIProviderReadinessGate } from './types-CrwMqBm1.js';
|
|
3
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-DJvAqZso.js';
|
|
4
4
|
import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-DPAgUJlR.js';
|
|
5
5
|
import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
|
|
@@ -112,6 +112,23 @@ interface ReadWorkspaceFileResult {
|
|
|
112
112
|
bytes: Uint8Array;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
type AgentSessionCommand = AgentHostAgentSessionCommand;
|
|
116
|
+
type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
|
|
117
|
+
type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
|
|
118
|
+
type AgentSessionReasoningEffort = AgentHostAgentSessionReasoningEffort;
|
|
119
|
+
type AgentSessionSpeed = AgentHostAgentSessionSpeed;
|
|
120
|
+
type AgentSessionState = AgentHostAgentSessionState;
|
|
121
|
+
|
|
122
|
+
type AgentGUIConversationFilter = {
|
|
123
|
+
kind: "all";
|
|
124
|
+
} | {
|
|
125
|
+
kind: "agentTarget";
|
|
126
|
+
agentTargetId: string;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
type AgentGUIResolvedProvider = AgentGUIProvider | "unknown";
|
|
130
|
+
type AgentGUIConversationTitleFallback = "generic-agent" | null;
|
|
131
|
+
|
|
115
132
|
type AgentHostAsyncResult<T = any> = Promise<T>;
|
|
116
133
|
type AgentHostRecord = Record<string, unknown>;
|
|
117
134
|
type AgentHostUnsubscribe = () => void;
|
|
@@ -389,23 +406,6 @@ interface AgentHostRuntimeApi {
|
|
|
389
406
|
workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;
|
|
390
407
|
}
|
|
391
408
|
|
|
392
|
-
type AgentSessionCommand = AgentHostAgentSessionCommand;
|
|
393
|
-
type AgentSessionComposerSettings = AgentHostAgentSessionComposerSettings;
|
|
394
|
-
type AgentSessionPermissionConfig = AgentHostAgentSessionPermissionConfig;
|
|
395
|
-
type AgentSessionReasoningEffort = AgentHostAgentSessionReasoningEffort;
|
|
396
|
-
type AgentSessionSpeed = AgentHostAgentSessionSpeed;
|
|
397
|
-
type AgentSessionState = AgentHostAgentSessionState;
|
|
398
|
-
|
|
399
|
-
type AgentGUIConversationFilter = {
|
|
400
|
-
kind: "all";
|
|
401
|
-
} | {
|
|
402
|
-
kind: "agentTarget";
|
|
403
|
-
agentTargetId: string;
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
type AgentGUIResolvedProvider = AgentGUIProvider | "unknown";
|
|
407
|
-
type AgentGUIConversationTitleFallback = "generic-agent" | null;
|
|
408
|
-
|
|
409
409
|
interface AgentGUIConversationProjectSummary {
|
|
410
410
|
id: string;
|
|
411
411
|
path: string;
|
|
@@ -484,6 +484,7 @@ interface AgentGUIComposerSettingOption {
|
|
|
484
484
|
value: string;
|
|
485
485
|
label: string;
|
|
486
486
|
description?: string;
|
|
487
|
+
supportsImageInput?: boolean;
|
|
487
488
|
}
|
|
488
489
|
interface AgentGUIProviderSkillOption {
|
|
489
490
|
name: string;
|
|
@@ -498,6 +499,7 @@ interface AgentComposerDraftImage {
|
|
|
498
499
|
id: string;
|
|
499
500
|
name: string;
|
|
500
501
|
mimeType: "image/png" | "image/jpeg" | "image/webp";
|
|
502
|
+
attachmentId?: string;
|
|
501
503
|
data?: string;
|
|
502
504
|
path?: string;
|
|
503
505
|
previewUrl: string;
|
|
@@ -520,7 +522,25 @@ interface AgentComposerDraftLargeText {
|
|
|
520
522
|
name: string;
|
|
521
523
|
text: string;
|
|
522
524
|
sizeBytes?: number;
|
|
525
|
+
path?: string;
|
|
526
|
+
uploading?: boolean;
|
|
527
|
+
uploadError?: string;
|
|
523
528
|
}
|
|
529
|
+
/**
|
|
530
|
+
* Marks a prompt `file` content block as a pasted-text attachment (as opposed
|
|
531
|
+
* to a user-attached file). Carried on the block `kind` so the round-trip
|
|
532
|
+
* (submit → queue → edit-restore) can rebuild a large-text chip instead of a
|
|
533
|
+
* regular file chip, and so the codex-style "read this file" instruction is
|
|
534
|
+
* materialized only for these blocks at send time.
|
|
535
|
+
*/
|
|
536
|
+
declare const AGENT_PASTED_TEXT_BLOCK_KIND = "pasted-text";
|
|
537
|
+
/**
|
|
538
|
+
* Provider id of the custom mention kind used to render a pasted-text chip in
|
|
539
|
+
* the conversation flow. The mention href (`mention://pasted-text/...`) carries
|
|
540
|
+
* the landed archive path + size so the host can render the chip and open a
|
|
541
|
+
* preview on click. Registered via registerAgentCustomMentionKind.
|
|
542
|
+
*/
|
|
543
|
+
declare const AGENT_PASTED_TEXT_MENTION_KIND = "pasted-text";
|
|
524
544
|
interface AgentComposerDraft {
|
|
525
545
|
prompt: string;
|
|
526
546
|
images: AgentComposerDraftImage[];
|
|
@@ -580,6 +600,7 @@ interface AgentGUINodeViewModel {
|
|
|
580
600
|
data: AgentGUINodeData;
|
|
581
601
|
selectedProviderTarget: AgentGUIProviderTarget;
|
|
582
602
|
providerTargets: readonly AgentGUIProviderTarget[];
|
|
603
|
+
handoffProviderTargets: readonly AgentGUIProviderTarget[];
|
|
583
604
|
providerTargetsLoading: boolean;
|
|
584
605
|
/** How the rail composes its list — "exact" renders targets verbatim with no static injection. */
|
|
585
606
|
providerRailMode: AgentGUIProviderRailMode;
|
|
@@ -637,4 +658,4 @@ interface AgentGUINodeViewModel {
|
|
|
637
658
|
providerReadinessGate: AgentGUIProviderReadinessGate | null;
|
|
638
659
|
}
|
|
639
660
|
|
|
640
|
-
export
|
|
661
|
+
export { AGENT_PASTED_TEXT_BLOCK_KIND as A, type PersistWriteResult as P, type ReadWorkspaceAgentReadStateInput as R, type WorkspaceAgentReadStateSnapshot as W, AGENT_PASTED_TEXT_MENTION_KIND as a, type AgentComposerDraft as b, type AgentGUIComposerSettingsVM as c, type AgentGUINodeViewModel as d, type AgentGUIProviderSkillOption as e, type AgentGUIQueuedPromptVM as f, type AgentHostApi as g, type AgentHostApplyWorkspaceGitPatchInput as h, type AgentHostInputApi as i, type AgentHostRuntimeApi as j, type AgentHostSelectFilesInput as k, type AgentProbeProvider as l, type AgentProbeSnapshot as m, type AgentProviderProbeListInput as n, type AgentProviderProbeListResult as o, type AgentSessionCommand as p, type AgentUsageQuota as q, type AgentUsageSnapshot as r, type WriteWorkspaceAgentReadStateInput as s };
|
|
@@ -4547,6 +4547,18 @@ aside.workspace-agents-status-panel
|
|
|
4547
4547
|
background: transparent;
|
|
4548
4548
|
}
|
|
4549
4549
|
|
|
4550
|
+
/*
|
|
4551
|
+
* In the collapsed empty state there is no session title to anchor the control
|
|
4552
|
+
* cluster, so the detached-window button's margin-left:auto would strand the
|
|
4553
|
+
* icons (in the middle of the 720px content cap, or at the far window edge).
|
|
4554
|
+
* Drop the auto push so the controls sit as a compact group right after the
|
|
4555
|
+
* traffic lights instead.
|
|
4556
|
+
*/
|
|
4557
|
+
.agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"][data-agent-gui-workbench-header-has-session="false"]
|
|
4558
|
+
.agent-gui-workbench-header__detached-window {
|
|
4559
|
+
margin-left: 0;
|
|
4560
|
+
}
|
|
4561
|
+
|
|
4550
4562
|
.agent-gui-workbench-header__traffic-lights {
|
|
4551
4563
|
display: inline-flex;
|
|
4552
4564
|
flex: 0 0 auto;
|
|
@@ -9145,6 +9157,148 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9145
9157
|
180ms both;
|
|
9146
9158
|
}
|
|
9147
9159
|
|
|
9160
|
+
.agent-gui-node__empty-hero-suggestions {
|
|
9161
|
+
position: relative;
|
|
9162
|
+
display: grid;
|
|
9163
|
+
width: min(760px, 100%);
|
|
9164
|
+
margin: 0 auto;
|
|
9165
|
+
gap: 12px;
|
|
9166
|
+
justify-items: stretch;
|
|
9167
|
+
animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
9168
|
+
240ms both;
|
|
9169
|
+
}
|
|
9170
|
+
|
|
9171
|
+
.agent-gui-node__empty-hero-suggestions-chips {
|
|
9172
|
+
display: flex;
|
|
9173
|
+
flex-wrap: wrap;
|
|
9174
|
+
justify-content: center;
|
|
9175
|
+
gap: 8px;
|
|
9176
|
+
}
|
|
9177
|
+
|
|
9178
|
+
.agent-gui-node__empty-hero-suggestions-chip {
|
|
9179
|
+
display: inline-flex;
|
|
9180
|
+
align-items: center;
|
|
9181
|
+
gap: 6px;
|
|
9182
|
+
border: 1px solid var(--line-2, var(--nexight-line-2));
|
|
9183
|
+
border-radius: 999px;
|
|
9184
|
+
background: transparent;
|
|
9185
|
+
padding: 6px 14px;
|
|
9186
|
+
color: var(--text-secondary);
|
|
9187
|
+
font: inherit;
|
|
9188
|
+
font-size: 13px;
|
|
9189
|
+
line-height: 1.2;
|
|
9190
|
+
cursor: pointer;
|
|
9191
|
+
transition:
|
|
9192
|
+
background 120ms ease,
|
|
9193
|
+
border-color 120ms ease,
|
|
9194
|
+
color 120ms ease;
|
|
9195
|
+
}
|
|
9196
|
+
|
|
9197
|
+
.agent-gui-node__empty-hero-suggestions-chip:hover {
|
|
9198
|
+
border-color: var(--line-1, var(--nexight-line-1));
|
|
9199
|
+
background: var(--background-fronted);
|
|
9200
|
+
color: var(--text-primary);
|
|
9201
|
+
}
|
|
9202
|
+
|
|
9203
|
+
.agent-gui-node__empty-hero-suggestions-chip[aria-pressed="true"] {
|
|
9204
|
+
border-color: var(--line-1, var(--nexight-line-1));
|
|
9205
|
+
background: color-mix(in srgb, var(--text-tertiary) 12%, transparent);
|
|
9206
|
+
color: var(--text-primary);
|
|
9207
|
+
}
|
|
9208
|
+
|
|
9209
|
+
.agent-gui-node__empty-hero-suggestions-chip-icon {
|
|
9210
|
+
width: 15px;
|
|
9211
|
+
height: 15px;
|
|
9212
|
+
flex: 0 0 auto;
|
|
9213
|
+
opacity: 0.8;
|
|
9214
|
+
}
|
|
9215
|
+
|
|
9216
|
+
.agent-gui-node__empty-hero-suggestions-card {
|
|
9217
|
+
position: absolute;
|
|
9218
|
+
top: 0;
|
|
9219
|
+
right: 0;
|
|
9220
|
+
left: 0;
|
|
9221
|
+
z-index: 5;
|
|
9222
|
+
display: grid;
|
|
9223
|
+
gap: 2px;
|
|
9224
|
+
border: 1px solid var(--line-2, var(--nexight-line-2));
|
|
9225
|
+
border-radius: 16px;
|
|
9226
|
+
background: var(--background-fronted);
|
|
9227
|
+
padding: 8px;
|
|
9228
|
+
box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.28);
|
|
9229
|
+
animation: agent-gui-empty-hero-enter 220ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
9230
|
+
}
|
|
9231
|
+
|
|
9232
|
+
.agent-gui-node__empty-hero-suggestions-card-header {
|
|
9233
|
+
display: flex;
|
|
9234
|
+
align-items: center;
|
|
9235
|
+
justify-content: space-between;
|
|
9236
|
+
gap: 8px;
|
|
9237
|
+
padding: 8px 10px 4px;
|
|
9238
|
+
}
|
|
9239
|
+
|
|
9240
|
+
.agent-gui-node__empty-hero-suggestions-card-title {
|
|
9241
|
+
display: inline-flex;
|
|
9242
|
+
align-items: center;
|
|
9243
|
+
gap: 8px;
|
|
9244
|
+
color: var(--text-tertiary);
|
|
9245
|
+
font-size: 13px;
|
|
9246
|
+
line-height: 1.2;
|
|
9247
|
+
}
|
|
9248
|
+
|
|
9249
|
+
.agent-gui-node__empty-hero-suggestions-card-close {
|
|
9250
|
+
display: inline-flex;
|
|
9251
|
+
align-items: center;
|
|
9252
|
+
justify-content: center;
|
|
9253
|
+
width: 24px;
|
|
9254
|
+
height: 24px;
|
|
9255
|
+
flex: 0 0 auto;
|
|
9256
|
+
border: 0;
|
|
9257
|
+
border-radius: 8px;
|
|
9258
|
+
background: transparent;
|
|
9259
|
+
padding: 0;
|
|
9260
|
+
color: var(--text-tertiary);
|
|
9261
|
+
cursor: pointer;
|
|
9262
|
+
transition:
|
|
9263
|
+
background 120ms ease,
|
|
9264
|
+
color 120ms ease;
|
|
9265
|
+
}
|
|
9266
|
+
|
|
9267
|
+
.agent-gui-node__empty-hero-suggestions-card-close:hover {
|
|
9268
|
+
background: color-mix(in srgb, var(--text-tertiary) 10%, transparent);
|
|
9269
|
+
color: var(--text-primary);
|
|
9270
|
+
}
|
|
9271
|
+
|
|
9272
|
+
.agent-gui-node__empty-hero-suggestions-card-close > svg {
|
|
9273
|
+
width: 16px;
|
|
9274
|
+
height: 16px;
|
|
9275
|
+
}
|
|
9276
|
+
|
|
9277
|
+
.agent-gui-node__empty-hero-suggestions-item {
|
|
9278
|
+
display: flex;
|
|
9279
|
+
align-items: center;
|
|
9280
|
+
width: 100%;
|
|
9281
|
+
height: 32px;
|
|
9282
|
+
border: 0;
|
|
9283
|
+
border-radius: 6px;
|
|
9284
|
+
background: transparent;
|
|
9285
|
+
padding: 0 14px;
|
|
9286
|
+
color: var(--text-secondary);
|
|
9287
|
+
font: inherit;
|
|
9288
|
+
font-size: 13px;
|
|
9289
|
+
line-height: 1.2;
|
|
9290
|
+
text-align: left;
|
|
9291
|
+
cursor: pointer;
|
|
9292
|
+
transition:
|
|
9293
|
+
background 120ms ease,
|
|
9294
|
+
color 120ms ease;
|
|
9295
|
+
}
|
|
9296
|
+
|
|
9297
|
+
.agent-gui-node__empty-hero-suggestions-item:hover {
|
|
9298
|
+
background: color-mix(in srgb, var(--text-tertiary) 8%, transparent);
|
|
9299
|
+
color: var(--text-primary);
|
|
9300
|
+
}
|
|
9301
|
+
|
|
9148
9302
|
@container agent-gui-node (max-width: 900px) {
|
|
9149
9303
|
.agent-gui-node__empty-hero {
|
|
9150
9304
|
padding-right: 32px;
|
|
@@ -9152,7 +9306,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9152
9306
|
}
|
|
9153
9307
|
|
|
9154
9308
|
.agent-gui-node__empty-hero-body,
|
|
9155
|
-
.agent-gui-node__empty-hero-body > .agent-gui-node__composer-hero
|
|
9309
|
+
.agent-gui-node__empty-hero-body > .agent-gui-node__composer-hero,
|
|
9310
|
+
.agent-gui-node__empty-hero-body > .agent-gui-node__empty-hero-suggestions {
|
|
9156
9311
|
width: 100%;
|
|
9157
9312
|
}
|
|
9158
9313
|
}
|
|
@@ -3,9 +3,243 @@ import {
|
|
|
3
3
|
isAgentGuiWorkbenchProvider,
|
|
4
4
|
normalizeAgentGuiWorkbenchProvider
|
|
5
5
|
} from "./chunk-BHNJN2TR.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
|
|
7
|
+
// providerTargets.ts
|
|
8
|
+
var agentGUIProviderTargetStaticLabels = {
|
|
9
|
+
"claude-code": "Claude Code",
|
|
10
|
+
codex: "Codex",
|
|
11
|
+
cursor: "Cursor",
|
|
12
|
+
gemini: "Gemini",
|
|
13
|
+
hermes: "Hermes",
|
|
14
|
+
nexight: "Tutti Agent",
|
|
15
|
+
openclaw: "OpenClaw",
|
|
16
|
+
opencode: "OpenCode",
|
|
17
|
+
"tutti-agent": "Tutti Agent"
|
|
18
|
+
};
|
|
19
|
+
var agentGUIDefaultTargetProviders = [
|
|
20
|
+
"codex",
|
|
21
|
+
"claude-code",
|
|
22
|
+
"cursor",
|
|
23
|
+
"tutti-agent",
|
|
24
|
+
"opencode",
|
|
25
|
+
"hermes",
|
|
26
|
+
"openclaw"
|
|
27
|
+
];
|
|
28
|
+
var agentGUIDisabledPlaceholderProviders = [
|
|
29
|
+
"hermes",
|
|
30
|
+
"openclaw"
|
|
31
|
+
];
|
|
32
|
+
function createLocalAgentGUIProviderTarget(provider) {
|
|
33
|
+
const targetId = localAgentGUIProviderTargetId(provider);
|
|
34
|
+
const agentTargetId = localAgentGUIAgentTargetId(provider);
|
|
35
|
+
return {
|
|
36
|
+
targetId,
|
|
37
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
38
|
+
provider,
|
|
39
|
+
ref: {
|
|
40
|
+
kind: "local",
|
|
41
|
+
provider
|
|
42
|
+
},
|
|
43
|
+
label: agentGUIProviderTargetStaticLabels[provider] ?? provider
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function createDisabledPlaceholderAgentGUIProviderTarget(provider) {
|
|
47
|
+
return {
|
|
48
|
+
...createLocalAgentGUIProviderTarget(provider),
|
|
49
|
+
disabled: true
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createSharedAgentGUIProviderTarget(input) {
|
|
53
|
+
const sharedAgentId = input.sharedAgentId.trim();
|
|
54
|
+
const targetId = `shared-agent:${sharedAgentId}`;
|
|
55
|
+
const badge = normalizeAgentGUIProviderTargetBadge(input.badge);
|
|
56
|
+
return {
|
|
57
|
+
targetId,
|
|
58
|
+
...input.agentTargetId?.trim() ? { agentTargetId: input.agentTargetId.trim() } : {},
|
|
59
|
+
provider: input.provider,
|
|
60
|
+
ref: {
|
|
61
|
+
...input.ref ?? {},
|
|
62
|
+
kind: "shared-agent",
|
|
63
|
+
provider: input.provider,
|
|
64
|
+
sharedAgentId
|
|
65
|
+
},
|
|
66
|
+
label: input.label,
|
|
67
|
+
...badge ? { badge } : {},
|
|
68
|
+
...input.ownerLabel?.trim() ? { ownerLabel: input.ownerLabel.trim() } : {},
|
|
69
|
+
...input.iconUrl?.trim() ? { iconUrl: input.iconUrl.trim() } : {},
|
|
70
|
+
...input.unavailableReason?.trim() ? { unavailableReason: input.unavailableReason.trim() } : {},
|
|
71
|
+
...input.disabled === true ? { disabled: true } : {}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function createLocalAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders) {
|
|
75
|
+
return providers.map(
|
|
76
|
+
(provider) => createLocalAgentGUIProviderTarget(provider)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
function createStaticAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders, options) {
|
|
80
|
+
const disabledProviders = new Set(
|
|
81
|
+
options?.includeDisabledPlaceholders === true ? agentGUIDisabledPlaceholderProviders : []
|
|
82
|
+
);
|
|
83
|
+
return providers.map(
|
|
84
|
+
(provider) => disabledProviders.has(provider) ? createDisabledPlaceholderAgentGUIProviderTarget(provider) : createLocalAgentGUIProviderTarget(provider)
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
function localAgentGUIProviderTargetId(provider) {
|
|
88
|
+
return `local:${provider}`;
|
|
89
|
+
}
|
|
90
|
+
function localAgentGUIAgentTargetId(provider) {
|
|
91
|
+
switch (provider) {
|
|
92
|
+
case "codex":
|
|
93
|
+
return "local:codex";
|
|
94
|
+
case "claude-code":
|
|
95
|
+
return "local:claude-code";
|
|
96
|
+
case "tutti-agent":
|
|
97
|
+
return "local:tutti-agent";
|
|
98
|
+
case "cursor":
|
|
99
|
+
return "local:cursor";
|
|
100
|
+
case "hermes":
|
|
101
|
+
return "local:hermes";
|
|
102
|
+
case "nexight":
|
|
103
|
+
return "local:nexight";
|
|
104
|
+
case "openclaw":
|
|
105
|
+
return "local:openclaw";
|
|
106
|
+
case "opencode":
|
|
107
|
+
return "local:opencode";
|
|
108
|
+
default:
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function normalizeAgentGUIProviderTargets(targets, options) {
|
|
113
|
+
const includeDisabledPlaceholders = options?.includeDisabledPlaceholders === true;
|
|
114
|
+
const useStaticCatalog = options?.useStaticCatalog !== false;
|
|
115
|
+
const source = targets && targets.length > 0 ? targets : [];
|
|
116
|
+
const normalizedTargets = [];
|
|
117
|
+
const seenTargetKeys = /* @__PURE__ */ new Set();
|
|
118
|
+
const seenProviders = /* @__PURE__ */ new Set();
|
|
119
|
+
for (const target of source) {
|
|
120
|
+
const normalized = normalizeAgentGUIProviderTarget(target);
|
|
121
|
+
if (!normalized) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const dedupeKey = `${normalized.provider}\0${normalized.targetId}`;
|
|
125
|
+
if (seenTargetKeys.has(dedupeKey)) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
seenTargetKeys.add(dedupeKey);
|
|
129
|
+
seenProviders.add(normalized.provider);
|
|
130
|
+
normalizedTargets.push(normalized);
|
|
131
|
+
}
|
|
132
|
+
if (includeDisabledPlaceholders && normalizedTargets.length > 0) {
|
|
133
|
+
for (const provider of agentGUIDisabledPlaceholderProviders) {
|
|
134
|
+
if (seenProviders.has(provider)) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
normalizedTargets.push(
|
|
138
|
+
createDisabledPlaceholderAgentGUIProviderTarget(provider)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return normalizedTargets.length > 0 || !useStaticCatalog ? normalizedTargets : createStaticAgentGUIProviderTargets(void 0, {
|
|
143
|
+
includeDisabledPlaceholders
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
function resolveAgentGUIProviderTarget(input) {
|
|
147
|
+
const targetByAgentTargetId = new Map(
|
|
148
|
+
input.providerTargets.flatMap(
|
|
149
|
+
(target) => target.agentTargetId ? [[target.agentTargetId, target]] : []
|
|
150
|
+
)
|
|
151
|
+
);
|
|
152
|
+
const agentTarget = targetByAgentTargetId.get(
|
|
153
|
+
input.agentTargetId?.trim() ?? ""
|
|
154
|
+
);
|
|
155
|
+
if (agentTarget) {
|
|
156
|
+
return agentTarget;
|
|
157
|
+
}
|
|
158
|
+
const providerTargets = input.providerTargets.filter(
|
|
159
|
+
(target) => target.provider === input.provider
|
|
160
|
+
);
|
|
161
|
+
const targetById = new Map(
|
|
162
|
+
providerTargets.map((target) => [target.targetId, target])
|
|
163
|
+
);
|
|
164
|
+
return targetById.get(input.providerTargetId?.trim() ?? "") ?? targetById.get(input.defaultProviderTargetId?.trim() ?? "") ?? targetById.get(localAgentGUIProviderTargetId(input.provider)) ?? providerTargets.find((target) => target.disabled !== true) ?? providerTargets[0] ?? (input.useStaticCatalog === false ? null : createLocalAgentGUIProviderTarget(input.provider));
|
|
165
|
+
}
|
|
166
|
+
function agentGUIProviderTargetRefsEqual(left, right) {
|
|
167
|
+
if (left === right) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
if (!left && !right) {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
if (!left || !right) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);
|
|
177
|
+
}
|
|
178
|
+
function normalizeAgentGUIProviderTarget(target) {
|
|
179
|
+
const {
|
|
180
|
+
targetId: _targetId,
|
|
181
|
+
agentTargetId: _agentTargetId,
|
|
182
|
+
provider: _provider,
|
|
183
|
+
ref: _ref,
|
|
184
|
+
label: _label,
|
|
185
|
+
badge,
|
|
186
|
+
description,
|
|
187
|
+
iconUrl,
|
|
188
|
+
ownerLabel,
|
|
189
|
+
unavailableReason,
|
|
190
|
+
...rest
|
|
191
|
+
} = target;
|
|
192
|
+
const targetId = target.targetId.trim();
|
|
193
|
+
const agentTargetId = target.agentTargetId?.trim();
|
|
194
|
+
const label = target.label.trim();
|
|
195
|
+
const kind = typeof target.ref.kind === "string" ? target.ref.kind.trim() : "";
|
|
196
|
+
if (!targetId || !label || !kind || target.ref.provider !== target.provider) {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
const normalizedBadge = normalizeAgentGUIProviderTargetBadge(badge);
|
|
200
|
+
return {
|
|
201
|
+
...rest,
|
|
202
|
+
targetId,
|
|
203
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
204
|
+
provider: target.provider,
|
|
205
|
+
ref: {
|
|
206
|
+
...target.ref,
|
|
207
|
+
kind,
|
|
208
|
+
provider: target.provider
|
|
209
|
+
},
|
|
210
|
+
label,
|
|
211
|
+
...normalizedBadge ? { badge: normalizedBadge } : {},
|
|
212
|
+
...description?.trim() ? { description: description.trim() } : {},
|
|
213
|
+
...iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {},
|
|
214
|
+
...ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {},
|
|
215
|
+
...unavailableReason?.trim() ? { unavailableReason: unavailableReason.trim() } : {}
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function normalizeAgentGUIProviderTargetBadge(badge) {
|
|
219
|
+
const iconUrl = badge?.iconUrl?.trim() ?? "";
|
|
220
|
+
if (!iconUrl) {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
const label = badge?.label?.trim() ?? "";
|
|
224
|
+
return {
|
|
225
|
+
iconUrl,
|
|
226
|
+
...label ? { label } : {}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
function stableProviderTargetRefKey(ref) {
|
|
230
|
+
return JSON.stringify(sortProviderTargetRefValue(ref));
|
|
231
|
+
}
|
|
232
|
+
function sortProviderTargetRefValue(value) {
|
|
233
|
+
if (Array.isArray(value)) {
|
|
234
|
+
return value.map(sortProviderTargetRefValue);
|
|
235
|
+
}
|
|
236
|
+
if (!value || typeof value !== "object") {
|
|
237
|
+
return value;
|
|
238
|
+
}
|
|
239
|
+
return Object.fromEntries(
|
|
240
|
+
Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])
|
|
241
|
+
);
|
|
242
|
+
}
|
|
9
243
|
|
|
10
244
|
// workbench/state.ts
|
|
11
245
|
function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
@@ -319,6 +553,16 @@ function isRecord(value) {
|
|
|
319
553
|
}
|
|
320
554
|
|
|
321
555
|
export {
|
|
556
|
+
agentGUIDefaultTargetProviders,
|
|
557
|
+
createLocalAgentGUIProviderTarget,
|
|
558
|
+
createDisabledPlaceholderAgentGUIProviderTarget,
|
|
559
|
+
createSharedAgentGUIProviderTarget,
|
|
560
|
+
createLocalAgentGUIProviderTargets,
|
|
561
|
+
localAgentGUIProviderTargetId,
|
|
562
|
+
localAgentGUIAgentTargetId,
|
|
563
|
+
normalizeAgentGUIProviderTargets,
|
|
564
|
+
resolveAgentGUIProviderTarget,
|
|
565
|
+
agentGUIProviderTargetRefsEqual,
|
|
322
566
|
createDefaultAgentGuiWorkbenchNodeState,
|
|
323
567
|
normalizeAgentGuiWorkbenchState,
|
|
324
568
|
projectAgentGuiWorkbenchState,
|
|
@@ -329,4 +573,4 @@ export {
|
|
|
329
573
|
agentGuiWorkbenchProviderFromInstanceIdOrNull,
|
|
330
574
|
createAgentGuiWorkbenchNodeStateSource
|
|
331
575
|
};
|
|
332
|
-
//# sourceMappingURL=chunk-
|
|
576
|
+
//# sourceMappingURL=chunk-2I2WRI4F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../providerTargets.ts","../workbench/state.ts"],"sourcesContent":["import type {\n AgentGUIProvider,\n AgentGUIProviderTarget,\n AgentGUIProviderTargetBadge,\n AgentGUIProviderTargetRef\n} from \"./types.ts\";\n\nconst agentGUIProviderTargetStaticLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n cursor: \"Cursor\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Tutti Agent\",\n openclaw: \"OpenClaw\",\n opencode: \"OpenCode\",\n \"tutti-agent\": \"Tutti Agent\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"cursor\",\n \"tutti-agent\",\n \"opencode\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nconst agentGUIDisabledPlaceholderProviders = [\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nexport function createLocalAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n const targetId = localAgentGUIProviderTargetId(provider);\n const agentTargetId = localAgentGUIAgentTargetId(provider);\n return {\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider,\n ref: {\n kind: \"local\",\n provider\n },\n label: agentGUIProviderTargetStaticLabels[provider] ?? provider\n };\n}\n\nexport function createDisabledPlaceholderAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n return {\n ...createLocalAgentGUIProviderTarget(provider),\n disabled: true\n };\n}\n\nexport function createSharedAgentGUIProviderTarget(input: {\n provider: AgentGUIProvider;\n sharedAgentId: string;\n label: string;\n agentTargetId?: string | null;\n badge?: AgentGUIProviderTargetBadge | null;\n ownerLabel?: string | null;\n iconUrl?: string | null;\n unavailableReason?: string | null;\n disabled?: boolean;\n ref?: Record<string, unknown> | null;\n}): AgentGUIProviderTarget {\n const sharedAgentId = input.sharedAgentId.trim();\n const targetId = `shared-agent:${sharedAgentId}`;\n const badge = normalizeAgentGUIProviderTargetBadge(input.badge);\n return {\n targetId,\n ...(input.agentTargetId?.trim()\n ? { agentTargetId: input.agentTargetId.trim() }\n : {}),\n provider: input.provider,\n ref: {\n ...(input.ref ?? {}),\n kind: \"shared-agent\",\n provider: input.provider,\n sharedAgentId\n },\n label: input.label,\n ...(badge ? { badge } : {}),\n ...(input.ownerLabel?.trim()\n ? { ownerLabel: input.ownerLabel.trim() }\n : {}),\n ...(input.iconUrl?.trim() ? { iconUrl: input.iconUrl.trim() } : {}),\n ...(input.unavailableReason?.trim()\n ? { unavailableReason: input.unavailableReason.trim() }\n : {}),\n ...(input.disabled === true ? { disabled: true } : {})\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((provider) =>\n createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nfunction createStaticAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders,\n options?: { includeDisabledPlaceholders?: boolean }\n): AgentGUIProviderTarget[] {\n const disabledProviders = new Set<AgentGUIProvider>(\n options?.includeDisabledPlaceholders === true\n ? agentGUIDisabledPlaceholderProviders\n : []\n );\n return providers.map((provider) =>\n disabledProviders.has(provider)\n ? createDisabledPlaceholderAgentGUIProviderTarget(provider)\n : createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nexport function localAgentGUIProviderTargetId(\n provider: AgentGUIProvider\n): string {\n return `local:${provider}`;\n}\n\nexport function localAgentGUIAgentTargetId(\n provider: AgentGUIProvider\n): string | null {\n switch (provider) {\n case \"codex\":\n return \"local:codex\";\n case \"claude-code\":\n return \"local:claude-code\";\n case \"tutti-agent\":\n return \"local:tutti-agent\";\n case \"cursor\":\n return \"local:cursor\";\n case \"hermes\":\n return \"local:hermes\";\n case \"nexight\":\n return \"local:nexight\";\n case \"openclaw\":\n return \"local:openclaw\";\n case \"opencode\":\n return \"local:opencode\";\n default:\n return null;\n }\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: {\n includeDisabledPlaceholders?: boolean;\n useStaticCatalog?: boolean;\n }\n): AgentGUIProviderTarget[] {\n const includeDisabledPlaceholders =\n options?.includeDisabledPlaceholders === true;\n const useStaticCatalog = options?.useStaticCatalog !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\n const seenProviders = new Set<AgentGUIProvider>();\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 seenProviders.add(normalized.provider);\n normalizedTargets.push(normalized);\n }\n if (includeDisabledPlaceholders && normalizedTargets.length > 0) {\n for (const provider of agentGUIDisabledPlaceholderProviders) {\n if (seenProviders.has(provider)) {\n continue;\n }\n normalizedTargets.push(\n createDisabledPlaceholderAgentGUIProviderTarget(provider)\n );\n }\n }\n return normalizedTargets.length > 0 || !useStaticCatalog\n ? normalizedTargets\n : createStaticAgentGUIProviderTargets(undefined, {\n includeDisabledPlaceholders\n });\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n agentTargetId?: string | null;\n defaultProviderTargetId?: string | null;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\n useStaticCatalog?: boolean;\n}): AgentGUIProviderTarget | null {\n const targetByAgentTargetId = new Map(\n input.providerTargets.flatMap((target) =>\n target.agentTargetId ? [[target.agentTargetId, target] as const] : []\n )\n );\n const agentTarget = targetByAgentTargetId.get(\n input.agentTargetId?.trim() ?? \"\"\n );\n if (agentTarget) {\n return agentTarget;\n }\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 (input.useStaticCatalog === false\n ? null\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 {\n targetId: _targetId,\n agentTargetId: _agentTargetId,\n provider: _provider,\n ref: _ref,\n label: _label,\n badge,\n description,\n iconUrl,\n ownerLabel,\n unavailableReason,\n ...rest\n } = target;\n const targetId = target.targetId.trim();\n const agentTargetId = target.agentTargetId?.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 const normalizedBadge = normalizeAgentGUIProviderTargetBadge(badge);\n return {\n ...rest,\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider: target.provider,\n ref: {\n ...target.ref,\n kind,\n provider: target.provider\n },\n label,\n ...(normalizedBadge ? { badge: normalizedBadge } : {}),\n ...(description?.trim() ? { description: description.trim() } : {}),\n ...(iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {}),\n ...(ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {}),\n ...(unavailableReason?.trim()\n ? { unavailableReason: unavailableReason.trim() }\n : {})\n };\n}\n\nfunction normalizeAgentGUIProviderTargetBadge(\n badge: AgentGUIProviderTargetBadge | null | undefined\n): AgentGUIProviderTargetBadge | null {\n const iconUrl = badge?.iconUrl?.trim() ?? \"\";\n if (!iconUrl) {\n return null;\n }\n const label = badge?.label?.trim() ?? \"\";\n return {\n iconUrl,\n ...(label ? { label } : {})\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","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 AgentGuiWorkbenchComposerOverridesByAgentTargetId,\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 agentTargetId: null,\n composerOverrides: null,\n composerOverridesByAgentTargetId: 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 agentTargetId =\n normalizeOptionalNonEmptyString(state.agentTargetId) ??\n normalizeOptionalNonEmptyString(state.providerTargetId);\n return {\n ...(agentTargetId ? { agentTargetId } : {}),\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 ...(typeof state.lastActiveConversationTitle === \"string\"\n ? { lastActiveConversationTitle: state.lastActiveConversationTitle }\n : {})\n };\n}\n\nexport function projectAgentGuiWorkbenchState(\n state: AgentGuiWorkbenchNodeState\n): AgentGuiWorkbenchState {\n const agentTargetId =\n normalizeOptionalNonEmptyString(state.agentTargetId) ??\n normalizeOptionalNonEmptyString(state.providerTargetId);\n return {\n ...(agentTargetId ? { agentTargetId } : {}),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,\n ...(typeof state.lastActiveConversationTitle === \"string\"\n ? { lastActiveConversationTitle: state.lastActiveConversationTitle }\n : {})\n };\n}\n\nexport function areAgentGuiWorkbenchStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n (left.lastActiveConversationTitle ?? null) ===\n (right.lastActiveConversationTitle ?? null)\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 agentTargetId:\n normalizeOptionalNonEmptyString(state?.agentTargetId) ??\n normalizeOptionalNonEmptyString(state?.providerTargetId),\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state?.composerOverrides\n ),\n composerOverridesByAgentTargetId:\n normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(\n state?.composerOverridesByAgentTargetId\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 (left.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByAgentTargetIdEqual(\n left.composerOverridesByAgentTargetId,\n right.composerOverridesByAgentTargetId\n ) &&\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.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\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\n/**\n * Like {@link agentGuiWorkbenchProviderFromInstanceId} but returns `null`\n * instead of defaulting to `\"codex\"` when the provider cannot be determined\n * yet (e.g. a freshly created session whose instanceId does not encode a\n * provider). Callers that render a provider icon use this so they can show a\n * neutral placeholder during that transient window instead of flashing the\n * wrong provider's icon.\n */\nexport function agentGuiWorkbenchProviderFromInstanceIdOrNull(\n instanceId: string | null | undefined\n): AgentGuiWorkbenchProvider | null {\n const normalized = instanceId?.trim();\n if (!normalized || normalized === \"agent-gui\") {\n return null;\n }\n const [, provider] = normalized.split(\":\", 3);\n return isAgentGuiWorkbenchProvider(provider) ? provider : null;\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 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 areAgentGuiWorkbenchStatesEqual(left, right);\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 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 normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(\n value: unknown\n): AgentGuiWorkbenchComposerOverridesByAgentTargetId | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: AgentGuiWorkbenchComposerOverridesByAgentTargetId = {};\n for (const [rawAgentTargetId, rawOverrides] of Object.entries(value)) {\n const agentTargetId = normalizeOptionalNonEmptyString(rawAgentTargetId);\n if (!agentTargetId) {\n continue;\n }\n const overrides = normalizeAgentGuiWorkbenchComposerOverrides(rawOverrides);\n if (overrides) {\n result[agentTargetId] = 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 composerOverridesByAgentTargetIdEqual(\n left: AgentGuiWorkbenchComposerOverridesByAgentTargetId | null | undefined,\n right: AgentGuiWorkbenchComposerOverridesByAgentTargetId | null | undefined\n): boolean {\n const leftKeys = Object.keys(left ?? {}).sort();\n const rightKeys = Object.keys(right ?? {}).sort();\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n return leftKeys.every(\n (key, index) =>\n key === rightKeys[index] &&\n composerOverridesEqual(left?.[key], right?.[key])\n );\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":[]}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
translate,
|
|
14
14
|
translateInUiLanguage
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-C7K3EFGI.js";
|
|
16
16
|
import {
|
|
17
17
|
normalizeAgentTitleText
|
|
18
18
|
} from "./chunk-GCBDIQDX.js";
|
|
@@ -845,4 +845,4 @@ export {
|
|
|
845
845
|
resolveWorkspaceAgentActivityStatus,
|
|
846
846
|
resolveWorkspaceAgentActivityTitle
|
|
847
847
|
};
|
|
848
|
-
//# sourceMappingURL=chunk-
|
|
848
|
+
//# sourceMappingURL=chunk-3PKRGSMH.js.map
|