@tutti-os/agent-gui 0.0.52 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AgentMentionSearchController-CExFPobz.d.ts → AgentMentionSearchController-DzhWr0PN.d.ts} +13 -3
- package/dist/agent-conversation/index.d.ts +2 -2
- package/dist/agent-conversation/index.js +7 -6
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-message-center/index.js +33 -12
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/{agentGuiNodeTypes-wzOITHRW.d.ts → agentGuiNodeTypes-DCnsaqJr.d.ts} +16 -2
- package/dist/app/renderer/agentactivity.css +136 -2
- package/dist/{chunk-ZTSS2NU2.js → chunk-2XVECUTU.js} +25 -1
- package/dist/chunk-2XVECUTU.js.map +1 -0
- package/dist/{chunk-OBFDA7RG.js → chunk-4PSDYKZQ.js} +20 -3
- package/dist/chunk-4PSDYKZQ.js.map +1 -0
- package/dist/{chunk-BFIYBPFD.js → chunk-6AXH2BOD.js} +5 -5
- package/dist/{chunk-4K22O34C.js → chunk-7GM7UQXD.js} +29 -3
- package/dist/chunk-7GM7UQXD.js.map +1 -0
- package/dist/{chunk-2OLYX32K.js → chunk-7ZDLFTVL.js} +76 -7
- package/dist/chunk-7ZDLFTVL.js.map +1 -0
- package/dist/{chunk-FYVVHRLZ.js → chunk-BGZ2OSDQ.js} +2 -2
- package/dist/{chunk-DPG2J7N5.js → chunk-CMOGPJ23.js} +2 -2
- package/dist/{chunk-3ZVVFQH5.js → chunk-EXZH66UE.js} +180 -88
- package/dist/chunk-EXZH66UE.js.map +1 -0
- package/dist/{chunk-66EQ6EQO.js → chunk-GL54NRMB.js} +59 -2
- package/dist/chunk-GL54NRMB.js.map +1 -0
- package/dist/{chunk-Y7ZVTWMZ.js → chunk-H2YWXFYX.js} +2 -2
- package/dist/{chunk-UKDC63WG.js → chunk-JRA44NYI.js} +78 -4
- package/dist/chunk-JRA44NYI.js.map +1 -0
- package/dist/{chunk-EFDGMXTB.js → chunk-OQJSZSYB.js} +48 -48
- package/dist/chunk-OQJSZSYB.js.map +1 -0
- package/dist/{chunk-ARCM7YB2.js → chunk-PBHTLI3E.js} +13 -3
- package/dist/{chunk-ARCM7YB2.js.map → chunk-PBHTLI3E.js.map} +1 -1
- package/dist/{chunk-5Y3PC7HP.js → chunk-VOXUYDQF.js} +238 -25
- package/dist/chunk-VOXUYDQF.js.map +1 -0
- package/dist/{chunk-HDBKB5RA.js → chunk-WMQN7SZC.js} +2 -58
- package/dist/chunk-WMQN7SZC.js.map +1 -0
- package/dist/{chunk-F5DYXCY3.js → chunk-Z2BTIAOC.js} +1 -1
- package/dist/chunk-Z2BTIAOC.js.map +1 -0
- package/dist/{chunk-PIKG746A.js → chunk-ZFDO72FE.js} +132 -67
- package/dist/chunk-ZFDO72FE.js.map +1 -0
- package/dist/context-mention-palette/index.d.ts +2 -2
- package/dist/context-mention-palette/index.js +8 -8
- package/dist/context-mention-provider.d.ts +1 -0
- package/dist/i18n/index.d.ts +24 -0
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +23 -53
- package/dist/index.js +945 -665
- package/dist/index.js.map +1 -1
- package/dist/queued-prompt-runtime.d.ts +2 -2
- package/dist/{types-xMz0lJWt.d.ts → types-B2m7UcBb.d.ts} +8 -0
- package/dist/workbench/contribution.d.ts +43 -4
- package/dist/workbench/contribution.js +9 -5
- package/dist/workbench/index.d.ts +3 -3
- package/dist/workbench/index.js +18 -8
- package/dist/workbench/launch.d.ts +2 -1
- package/dist/workbench/launch.js +2 -2
- 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 +2 -2
- package/dist/workbench/types.d.ts +8 -8
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +3 -3
- package/package.json +14 -14
- package/dist/chunk-2OLYX32K.js.map +0 -1
- package/dist/chunk-3ZVVFQH5.js.map +0 -1
- package/dist/chunk-4K22O34C.js.map +0 -1
- package/dist/chunk-5Y3PC7HP.js.map +0 -1
- package/dist/chunk-66EQ6EQO.js.map +0 -1
- package/dist/chunk-EFDGMXTB.js.map +0 -1
- package/dist/chunk-F5DYXCY3.js.map +0 -1
- package/dist/chunk-HDBKB5RA.js.map +0 -1
- package/dist/chunk-OBFDA7RG.js.map +0 -1
- package/dist/chunk-PIKG746A.js.map +0 -1
- package/dist/chunk-UKDC63WG.js.map +0 -1
- package/dist/chunk-ZTSS2NU2.js.map +0 -1
- /package/dist/{chunk-BFIYBPFD.js.map → chunk-6AXH2BOD.js.map} +0 -0
- /package/dist/{chunk-FYVVHRLZ.js.map → chunk-BGZ2OSDQ.js.map} +0 -0
- /package/dist/{chunk-DPG2J7N5.js.map → chunk-CMOGPJ23.js.map} +0 -0
- /package/dist/{chunk-Y7ZVTWMZ.js.map → chunk-H2YWXFYX.js.map} +0 -0
|
@@ -5,12 +5,14 @@ import {
|
|
|
5
5
|
} from "./chunk-22L4VWUR.js";
|
|
6
6
|
import {
|
|
7
7
|
agentGUIProviderTargetRefsEqual
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7GM7UQXD.js";
|
|
9
9
|
|
|
10
10
|
// workbench/state.ts
|
|
11
11
|
function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
12
12
|
return {
|
|
13
|
+
agentTargetId: null,
|
|
13
14
|
composerOverrides: null,
|
|
15
|
+
composerOverridesByAgentTargetId: null,
|
|
14
16
|
composerOverridesByProvider: null,
|
|
15
17
|
conversationCount: null,
|
|
16
18
|
conversationRailCollapsed: false,
|
|
@@ -26,60 +28,29 @@ function normalizeAgentGuiWorkbenchState(state) {
|
|
|
26
28
|
if (!isRecord(state)) {
|
|
27
29
|
return createDefaultAgentGuiWorkbenchState();
|
|
28
30
|
}
|
|
29
|
-
const
|
|
30
|
-
state.providerTargetId
|
|
31
|
-
);
|
|
32
|
-
const providerTargetRef = normalizeAgentGuiProviderTargetRef(
|
|
33
|
-
state.providerTargetRef
|
|
34
|
-
);
|
|
31
|
+
const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId) ?? normalizeOptionalNonEmptyString(state.providerTargetId);
|
|
35
32
|
return {
|
|
36
|
-
|
|
37
|
-
state.composerOverrides
|
|
38
|
-
),
|
|
39
|
-
composerOverridesByProvider: normalizeAgentGuiWorkbenchComposerOverridesByProvider(
|
|
40
|
-
state.composerOverridesByProvider
|
|
41
|
-
),
|
|
33
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
42
34
|
conversationRailCollapsed: state.conversationRailCollapsed === true,
|
|
43
35
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
44
36
|
state.conversationRailWidthPx
|
|
45
37
|
),
|
|
46
|
-
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
47
|
-
...providerTargetId ? { providerTargetId } : {},
|
|
48
|
-
...providerTargetRef ? { providerTargetRef } : {}
|
|
38
|
+
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
49
39
|
};
|
|
50
40
|
}
|
|
51
41
|
function projectAgentGuiWorkbenchState(state) {
|
|
52
|
-
const
|
|
53
|
-
state.providerTargetId
|
|
54
|
-
);
|
|
55
|
-
const providerTargetRef = normalizeAgentGuiProviderTargetRef(
|
|
56
|
-
state.providerTargetRef,
|
|
57
|
-
state.provider
|
|
58
|
-
);
|
|
42
|
+
const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId) ?? normalizeOptionalNonEmptyString(state.providerTargetId);
|
|
59
43
|
return {
|
|
60
|
-
|
|
61
|
-
state.composerOverrides
|
|
62
|
-
),
|
|
63
|
-
composerOverridesByProvider: normalizeAgentGuiWorkbenchComposerOverridesByProvider(
|
|
64
|
-
state.composerOverridesByProvider
|
|
65
|
-
),
|
|
44
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
66
45
|
conversationRailCollapsed: state.conversationRailCollapsed === true,
|
|
67
46
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
68
47
|
state.conversationRailWidthPx
|
|
69
48
|
),
|
|
70
|
-
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
71
|
-
...providerTargetId ? { providerTargetId } : {},
|
|
72
|
-
...providerTargetRef ? { providerTargetRef } : {}
|
|
49
|
+
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
73
50
|
};
|
|
74
51
|
}
|
|
75
52
|
function areAgentGuiWorkbenchStatesEqual(left, right) {
|
|
76
|
-
return
|
|
77
|
-
left.composerOverridesByProvider,
|
|
78
|
-
right.composerOverridesByProvider
|
|
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
|
-
);
|
|
53
|
+
return (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId;
|
|
83
54
|
}
|
|
84
55
|
function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex") {
|
|
85
56
|
const provider = normalizeAgentGuiWorkbenchProvider(
|
|
@@ -88,9 +59,13 @@ function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex")
|
|
|
88
59
|
);
|
|
89
60
|
return {
|
|
90
61
|
...createDefaultAgentGuiWorkbenchNodeState(provider),
|
|
62
|
+
agentTargetId: normalizeOptionalNonEmptyString(state?.agentTargetId) ?? normalizeOptionalNonEmptyString(state?.providerTargetId),
|
|
91
63
|
composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(
|
|
92
64
|
state?.composerOverrides
|
|
93
65
|
),
|
|
66
|
+
composerOverridesByAgentTargetId: normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(
|
|
67
|
+
state?.composerOverridesByAgentTargetId
|
|
68
|
+
),
|
|
94
69
|
composerOverridesByProvider: normalizeAgentGuiWorkbenchComposerOverridesByProvider(
|
|
95
70
|
state?.composerOverridesByProvider
|
|
96
71
|
),
|
|
@@ -112,10 +87,13 @@ function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex")
|
|
|
112
87
|
};
|
|
113
88
|
}
|
|
114
89
|
function areAgentGuiWorkbenchNodeStatesEqual(left, right) {
|
|
115
|
-
return composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&
|
|
90
|
+
return (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && composerOverridesEqual(left.composerOverrides, right.composerOverrides) && composerOverridesByAgentTargetIdEqual(
|
|
91
|
+
left.composerOverridesByAgentTargetId,
|
|
92
|
+
right.composerOverridesByAgentTargetId
|
|
93
|
+
) && composerOverridesByProviderEqual(
|
|
116
94
|
left.composerOverridesByProvider,
|
|
117
95
|
right.composerOverridesByProvider
|
|
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(
|
|
96
|
+
) && 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.agentTargetId ?? null) === (right.agentTargetId ?? null) && (left.providerTargetId ?? null) === (right.providerTargetId ?? null) && agentGUIProviderTargetRefsEqual(
|
|
119
97
|
left.providerTargetRef,
|
|
120
98
|
right.providerTargetRef
|
|
121
99
|
);
|
|
@@ -203,9 +181,6 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
|
203
181
|
const next = {
|
|
204
182
|
...normalizeAgentGuiWorkbenchState(request.state)
|
|
205
183
|
};
|
|
206
|
-
if (request.nodeId && typeof request.state.lastActiveConversationTitle === "string") {
|
|
207
|
-
next.lastActiveConversationTitle = request.state.lastActiveConversationTitle;
|
|
208
|
-
}
|
|
209
184
|
nodeStateByKey.set(key, next);
|
|
210
185
|
if (!clearedInstanceSeed && previous && areAgentGuiWorkbenchMemoryStatesEqual(previous, next)) {
|
|
211
186
|
return;
|
|
@@ -215,7 +190,7 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
|
215
190
|
};
|
|
216
191
|
}
|
|
217
192
|
function areAgentGuiWorkbenchMemoryStatesEqual(left, right) {
|
|
218
|
-
return areAgentGuiWorkbenchStatesEqual(left, right)
|
|
193
|
+
return areAgentGuiWorkbenchStatesEqual(left, right);
|
|
219
194
|
}
|
|
220
195
|
function agentGuiWorkbenchNodeStateKey(request) {
|
|
221
196
|
return request.nodeId ? `node:${request.nodeId}` : agentGuiWorkbenchInstanceStateKey(request);
|
|
@@ -225,8 +200,6 @@ function agentGuiWorkbenchInstanceStateKey(request) {
|
|
|
225
200
|
}
|
|
226
201
|
function createDefaultAgentGuiWorkbenchState() {
|
|
227
202
|
return {
|
|
228
|
-
composerOverrides: null,
|
|
229
|
-
composerOverridesByProvider: null,
|
|
230
203
|
conversationRailCollapsed: false,
|
|
231
204
|
conversationRailWidthPx: null,
|
|
232
205
|
lastActiveAgentSessionId: null
|
|
@@ -287,6 +260,23 @@ function normalizeAgentGuiWorkbenchComposerOverridesByProvider(value) {
|
|
|
287
260
|
}
|
|
288
261
|
return Object.keys(result).length > 0 ? result : null;
|
|
289
262
|
}
|
|
263
|
+
function normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(value) {
|
|
264
|
+
if (!isRecord(value)) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
const result = {};
|
|
268
|
+
for (const [rawAgentTargetId, rawOverrides] of Object.entries(value)) {
|
|
269
|
+
const agentTargetId = normalizeOptionalNonEmptyString(rawAgentTargetId);
|
|
270
|
+
if (!agentTargetId) {
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
const overrides = normalizeAgentGuiWorkbenchComposerOverrides(rawOverrides);
|
|
274
|
+
if (overrides) {
|
|
275
|
+
result[agentTargetId] = overrides;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
279
|
+
}
|
|
290
280
|
function normalizeOptionalPositiveNumber(value) {
|
|
291
281
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.round(value) : null;
|
|
292
282
|
}
|
|
@@ -304,6 +294,16 @@ function composerOverridesByProviderEqual(left, right) {
|
|
|
304
294
|
}
|
|
305
295
|
return true;
|
|
306
296
|
}
|
|
297
|
+
function composerOverridesByAgentTargetIdEqual(left, right) {
|
|
298
|
+
const leftKeys = Object.keys(left ?? {}).sort();
|
|
299
|
+
const rightKeys = Object.keys(right ?? {}).sort();
|
|
300
|
+
if (leftKeys.length !== rightKeys.length) {
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
return leftKeys.every(
|
|
304
|
+
(key, index) => key === rightKeys[index] && composerOverridesEqual(left?.[key], right?.[key])
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
307
|
function isRecord(value) {
|
|
308
308
|
return typeof value === "object" && value !== null;
|
|
309
309
|
}
|
|
@@ -318,4 +318,4 @@ export {
|
|
|
318
318
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
319
319
|
createAgentGuiWorkbenchNodeStateSource
|
|
320
320
|
};
|
|
321
|
-
//# sourceMappingURL=chunk-
|
|
321
|
+
//# sourceMappingURL=chunk-OQJSZSYB.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 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 };\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 };\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 );\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\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":[]}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
translate,
|
|
16
16
|
translateInUiLanguage
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-H2YWXFYX.js";
|
|
18
18
|
|
|
19
19
|
// shared/workspaceAgentActivityListViewModel.ts
|
|
20
20
|
import {
|
|
@@ -120,7 +120,17 @@ function selectWorkspaceAgentActivityOverlayMessages(input) {
|
|
|
120
120
|
function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input) {
|
|
121
121
|
const durableMessages = input.durableMessages ?? [];
|
|
122
122
|
const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);
|
|
123
|
-
|
|
123
|
+
if (overlayMessages.length === 0) {
|
|
124
|
+
return [...durableMessages];
|
|
125
|
+
}
|
|
126
|
+
const overlayDurableMessages = overlayMessages.filter(
|
|
127
|
+
(message) => !isWorkspaceAgentActivityOptimisticMessage(message)
|
|
128
|
+
);
|
|
129
|
+
const optimisticMessages = overlayMessages.filter(isWorkspaceAgentActivityOptimisticMessage).slice().sort(
|
|
130
|
+
(left, right) => left.occurredAtUnixMs - right.occurredAtUnixMs || left.messageId.localeCompare(right.messageId)
|
|
131
|
+
);
|
|
132
|
+
const merged = overlayDurableMessages.length === 0 ? [...durableMessages] : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);
|
|
133
|
+
return optimisticMessages.length === 0 ? merged : [...merged, ...optimisticMessages];
|
|
124
134
|
}
|
|
125
135
|
function workspaceAgentActivityMessageIdentity(message) {
|
|
126
136
|
const messageId = message.messageId?.trim() ?? "";
|
|
@@ -997,4 +1007,4 @@ export {
|
|
|
997
1007
|
resolveWorkspaceAgentActivityStatus,
|
|
998
1008
|
resolveWorkspaceAgentActivityTitle
|
|
999
1009
|
};
|
|
1000
|
-
//# sourceMappingURL=chunk-
|
|
1010
|
+
//# sourceMappingURL=chunk-PBHTLI3E.js.map
|