@tutti-os/agent-gui 0.0.115 → 0.0.116
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/{AgentGUI-D4jgPDg0.d.ts → AgentGUI-Be6O5di1.d.ts} +2 -2
- package/dist/{AgentRichTextReadonly-KNPDB5ZJ.js → AgentRichTextReadonly-AY36C7TV.js} +5 -5
- package/dist/agent-conversation/index.d.ts +2 -2
- package/dist/agent-conversation/index.js +9 -9
- package/dist/agent-env/ui.d.ts +19 -0
- package/dist/agent-env/ui.js +9 -0
- package/dist/agent-env/ui.js.map +1 -0
- package/dist/agent-gui.d.ts +3 -3
- package/dist/agent-gui.js +19 -18
- package/dist/agent-message-center/index.js +10 -10
- package/dist/{agentGuiNodeTypes-BebhwDeE.d.ts → agentGuiNodeTypes-C_H3DbXt.d.ts} +78 -2
- package/dist/agents.d.ts +1 -1
- package/dist/agents.js +1 -1
- package/dist/app/renderer/agentactivity.css +79 -3
- package/dist/{chunk-CTSKSYMM.js → chunk-5G3OFCWH.js} +2 -2
- package/dist/{chunk-JLRPIEIE.js → chunk-5HIF53K5.js} +44 -5
- package/dist/chunk-5HIF53K5.js.map +1 -0
- package/dist/{chunk-CY45OZEY.js → chunk-AMO3EB7V.js} +4 -4
- package/dist/{chunk-W4KHK5HK.js → chunk-DVXXZWYX.js} +95 -1
- package/dist/chunk-DVXXZWYX.js.map +1 -0
- package/dist/{chunk-FBPZXKQC.js → chunk-DXXKHL4G.js} +2 -2
- package/dist/{chunk-SFYWL6FT.js → chunk-EPNL55ZQ.js} +2 -2
- package/dist/{chunk-EM4RD5FQ.js → chunk-EYZSEPL7.js} +9 -9
- package/dist/chunk-EYZSEPL7.js.map +1 -0
- package/dist/{chunk-YKQAOIF2.js → chunk-I6Y4XQVR.js} +119 -8
- package/dist/chunk-I6Y4XQVR.js.map +1 -0
- package/dist/{chunk-ATDAII35.js → chunk-IIQSQNS4.js} +2960 -1527
- package/dist/chunk-IIQSQNS4.js.map +1 -0
- package/dist/{chunk-RATBQN2V.js → chunk-J26ZYCAH.js} +3 -2
- package/dist/{chunk-RATBQN2V.js.map → chunk-J26ZYCAH.js.map} +1 -1
- package/dist/{chunk-HFU3FYXP.js → chunk-JEXYDXFW.js} +4 -4
- package/dist/{chunk-MWN3AIQJ.js → chunk-LQJBDDZG.js} +4 -4
- package/dist/{chunk-UHBCM6RO.js → chunk-MHOYBRCY.js} +1 -1
- package/dist/{chunk-UHBCM6RO.js.map → chunk-MHOYBRCY.js.map} +1 -1
- package/dist/{chunk-BYE5CKEU.js → chunk-NNIXG27Q.js} +6 -6
- package/dist/{chunk-FRCZZ7ON.js → chunk-OXC5CPW7.js} +7 -7
- package/dist/{chunk-AY5AFMT2.js → chunk-TUWQV2MC.js} +5 -5
- package/dist/chunk-UP3ZDYTN.js +64 -0
- package/dist/chunk-UP3ZDYTN.js.map +1 -0
- package/dist/{chunk-7OYHDOGG.js → chunk-UV3UQAS2.js} +6 -4
- package/dist/chunk-UV3UQAS2.js.map +1 -0
- package/dist/{chunk-455YDWMS.js → chunk-VLPWO73G.js} +2 -2
- package/dist/context-mention-palette/index.js +7 -7
- package/dist/{contribution-C2LDwLA7.d.ts → contribution-BlemXneM.d.ts} +1 -1
- package/dist/i18n/index.d.ts +94 -0
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +6 -6
- package/dist/index.js +22 -21
- package/dist/index.js.map +1 -1
- package/dist/mention-search.js +5 -5
- package/dist/{types-yF_0mrNS.d.ts → types-COIp0SYP.d.ts} +2 -0
- package/dist/workbench/contribution.d.ts +2 -2
- package/dist/workbench/contribution.js +7 -7
- package/dist/workbench/index.d.ts +2 -2
- package/dist/workbench/index.js +10 -10
- package/dist/workbench/launch.js +3 -3
- package/dist/workbench/sessionTitle.js +2 -2
- package/dist/workbench/state.js +1 -1
- package/dist/workbench/types.d.ts +2 -0
- package/dist/workbench/types.js +1 -1
- package/package.json +19 -12
- package/dist/chunk-7OYHDOGG.js.map +0 -1
- package/dist/chunk-ATDAII35.js.map +0 -1
- package/dist/chunk-EM4RD5FQ.js.map +0 -1
- package/dist/chunk-JLRPIEIE.js.map +0 -1
- package/dist/chunk-W4KHK5HK.js.map +0 -1
- package/dist/chunk-YKQAOIF2.js.map +0 -1
- /package/dist/{AgentRichTextReadonly-KNPDB5ZJ.js.map → AgentRichTextReadonly-AY36C7TV.js.map} +0 -0
- /package/dist/{chunk-CTSKSYMM.js.map → chunk-5G3OFCWH.js.map} +0 -0
- /package/dist/{chunk-CY45OZEY.js.map → chunk-AMO3EB7V.js.map} +0 -0
- /package/dist/{chunk-FBPZXKQC.js.map → chunk-DXXKHL4G.js.map} +0 -0
- /package/dist/{chunk-SFYWL6FT.js.map → chunk-EPNL55ZQ.js.map} +0 -0
- /package/dist/{chunk-HFU3FYXP.js.map → chunk-JEXYDXFW.js.map} +0 -0
- /package/dist/{chunk-MWN3AIQJ.js.map → chunk-LQJBDDZG.js.map} +0 -0
- /package/dist/{chunk-BYE5CKEU.js.map → chunk-NNIXG27Q.js.map} +0 -0
- /package/dist/{chunk-FRCZZ7ON.js.map → chunk-OXC5CPW7.js.map} +0 -0
- /package/dist/{chunk-AY5AFMT2.js.map → chunk-TUWQV2MC.js.map} +0 -0
- /package/dist/{chunk-455YDWMS.js.map → chunk-VLPWO73G.js.map} +0 -0
|
@@ -14,6 +14,7 @@ function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
|
14
14
|
conversationRailCollapsed: false,
|
|
15
15
|
conversationRailWidthPx: null,
|
|
16
16
|
lastActiveAgentSessionId: null,
|
|
17
|
+
lastActiveAgentSessionIdByAgentTargetId: null,
|
|
17
18
|
provider
|
|
18
19
|
};
|
|
19
20
|
}
|
|
@@ -22,13 +23,17 @@ function normalizeAgentGuiWorkbenchState(state) {
|
|
|
22
23
|
return createDefaultAgentGuiWorkbenchState();
|
|
23
24
|
}
|
|
24
25
|
const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId);
|
|
26
|
+
const lastActiveAgentSessionIdByAgentTargetId = normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(
|
|
27
|
+
state.lastActiveAgentSessionIdByAgentTargetId
|
|
28
|
+
);
|
|
25
29
|
return {
|
|
26
30
|
...agentTargetId ? { agentTargetId } : {},
|
|
27
31
|
conversationRailCollapsed: state.conversationRailCollapsed === true,
|
|
28
32
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
29
33
|
state.conversationRailWidthPx
|
|
30
34
|
),
|
|
31
|
-
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
35
|
+
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null,
|
|
36
|
+
...lastActiveAgentSessionIdByAgentTargetId ? { lastActiveAgentSessionIdByAgentTargetId } : {}
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
function migrateLegacyAgentGuiWorkbenchState(state) {
|
|
@@ -42,17 +47,24 @@ function migrateLegacyAgentGuiWorkbenchState(state) {
|
|
|
42
47
|
}
|
|
43
48
|
function projectAgentGuiWorkbenchState(state) {
|
|
44
49
|
const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId);
|
|
50
|
+
const lastActiveAgentSessionIdByAgentTargetId = normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(
|
|
51
|
+
state.lastActiveAgentSessionIdByAgentTargetId
|
|
52
|
+
);
|
|
45
53
|
return {
|
|
46
54
|
...agentTargetId ? { agentTargetId } : {},
|
|
47
55
|
conversationRailCollapsed: state.conversationRailCollapsed === true,
|
|
48
56
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
49
57
|
state.conversationRailWidthPx
|
|
50
58
|
),
|
|
51
|
-
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
59
|
+
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,
|
|
60
|
+
...lastActiveAgentSessionIdByAgentTargetId ? { lastActiveAgentSessionIdByAgentTargetId } : {}
|
|
52
61
|
};
|
|
53
62
|
}
|
|
54
63
|
function areAgentGuiWorkbenchStatesEqual(left, right) {
|
|
55
|
-
return (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId
|
|
64
|
+
return (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && stringRecordsEqual(
|
|
65
|
+
left.lastActiveAgentSessionIdByAgentTargetId,
|
|
66
|
+
right.lastActiveAgentSessionIdByAgentTargetId
|
|
67
|
+
);
|
|
56
68
|
}
|
|
57
69
|
function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex") {
|
|
58
70
|
const persistedState = isRecord(state) ? state : {};
|
|
@@ -79,6 +91,9 @@ function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex")
|
|
|
79
91
|
persistedState.conversationRailWidthPx
|
|
80
92
|
),
|
|
81
93
|
lastActiveAgentSessionId: typeof persistedState.lastActiveAgentSessionId === "string" ? persistedState.lastActiveAgentSessionId : null,
|
|
94
|
+
lastActiveAgentSessionIdByAgentTargetId: normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(
|
|
95
|
+
persistedState.lastActiveAgentSessionIdByAgentTargetId
|
|
96
|
+
),
|
|
82
97
|
provider
|
|
83
98
|
};
|
|
84
99
|
}
|
|
@@ -89,7 +104,10 @@ function areAgentGuiWorkbenchNodeStatesEqual(left, right) {
|
|
|
89
104
|
) && composerOverridesByProviderEqual(
|
|
90
105
|
left.composerOverridesByProvider,
|
|
91
106
|
right.composerOverridesByProvider
|
|
92
|
-
) && left.conversationCount === right.conversationCount && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&
|
|
107
|
+
) && left.conversationCount === right.conversationCount && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && stringRecordsEqual(
|
|
108
|
+
left.lastActiveAgentSessionIdByAgentTargetId,
|
|
109
|
+
right.lastActiveAgentSessionIdByAgentTargetId
|
|
110
|
+
) && left.provider === right.provider && (left.agentTargetId ?? null) === (right.agentTargetId ?? null);
|
|
93
111
|
}
|
|
94
112
|
function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
95
113
|
const typeId = input.typeId ?? "agent-gui";
|
|
@@ -244,6 +262,20 @@ function normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(value) {
|
|
|
244
262
|
}
|
|
245
263
|
return Object.keys(result).length > 0 ? result : null;
|
|
246
264
|
}
|
|
265
|
+
function normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(value) {
|
|
266
|
+
if (!isRecord(value)) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
const result = {};
|
|
270
|
+
for (const [rawAgentTargetId, rawAgentSessionId] of Object.entries(value)) {
|
|
271
|
+
const agentTargetId = normalizeOptionalNonEmptyString(rawAgentTargetId);
|
|
272
|
+
const agentSessionId = normalizeOptionalNonEmptyString(rawAgentSessionId);
|
|
273
|
+
if (agentTargetId && agentSessionId) {
|
|
274
|
+
result[agentTargetId] = agentSessionId;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
278
|
+
}
|
|
247
279
|
function normalizeOptionalPositiveNumber(value) {
|
|
248
280
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.round(value) : null;
|
|
249
281
|
}
|
|
@@ -271,6 +303,13 @@ function composerOverridesByAgentTargetIdEqual(left, right) {
|
|
|
271
303
|
(key, index) => key === rightKeys[index] && composerOverridesEqual(left?.[key], right?.[key])
|
|
272
304
|
);
|
|
273
305
|
}
|
|
306
|
+
function stringRecordsEqual(left, right) {
|
|
307
|
+
const leftKeys = Object.keys(left ?? {}).sort();
|
|
308
|
+
const rightKeys = Object.keys(right ?? {}).sort();
|
|
309
|
+
return leftKeys.length === rightKeys.length && leftKeys.every(
|
|
310
|
+
(key, index) => key === rightKeys[index] && left?.[key] === right?.[key]
|
|
311
|
+
);
|
|
312
|
+
}
|
|
274
313
|
function isRecord(value) {
|
|
275
314
|
return typeof value === "object" && value !== null;
|
|
276
315
|
}
|
|
@@ -285,4 +324,4 @@ export {
|
|
|
285
324
|
areAgentGuiWorkbenchNodeStatesEqual,
|
|
286
325
|
createAgentGuiWorkbenchNodeStateSource
|
|
287
326
|
};
|
|
288
|
-
//# sourceMappingURL=chunk-
|
|
327
|
+
//# sourceMappingURL=chunk-5HIF53K5.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 normalizeAgentGuiWorkbenchProvider\n} from \"./providerCatalog.ts\";\nimport type {\n AgentGuiWorkbenchComposerOverrides,\n AgentGuiWorkbenchComposerOverridesByAgentTargetId,\n AgentGuiWorkbenchComposerOverridesByProvider,\n AgentGuiWorkbenchNodeState,\n AgentGuiWorkbenchProvider,\n AgentGuiWorkbenchState,\n AgentGuiWorkbenchWorkspaceState\n} 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 lastActiveAgentSessionIdByAgentTargetId: null,\n provider\n };\n}\n\nexport function normalizeAgentGuiWorkbenchState(\n state: unknown\n): AgentGuiWorkbenchState {\n if (!isRecord(state)) {\n return createDefaultAgentGuiWorkbenchState();\n }\n const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId);\n const lastActiveAgentSessionIdByAgentTargetId =\n normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(\n state.lastActiveAgentSessionIdByAgentTargetId\n );\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 ...(lastActiveAgentSessionIdByAgentTargetId\n ? { lastActiveAgentSessionIdByAgentTargetId }\n : {})\n };\n}\n\n/**\n * One-time persisted-state reader for snapshots written before agentTargetId\n * became the canonical AgentGUI selection key. Current-state normalizers stay\n * strict so live callers cannot continue using the removed alias.\n */\nexport function migrateLegacyAgentGuiWorkbenchState(state: unknown): unknown {\n if (\n !isRecord(state) ||\n normalizeOptionalNonEmptyString(state.agentTargetId)\n ) {\n return state;\n }\n const legacyAgentTargetId = normalizeOptionalNonEmptyString(\n state.providerTargetId\n );\n return legacyAgentTargetId\n ? { ...state, agentTargetId: legacyAgentTargetId }\n : state;\n}\n\nexport function projectAgentGuiWorkbenchState(\n state: AgentGuiWorkbenchNodeState\n): AgentGuiWorkbenchState {\n const agentTargetId = normalizeOptionalNonEmptyString(state.agentTargetId);\n const lastActiveAgentSessionIdByAgentTargetId =\n normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(\n state.lastActiveAgentSessionIdByAgentTargetId\n );\n return {\n ...(agentTargetId ? { agentTargetId } : {}),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,\n ...(lastActiveAgentSessionIdByAgentTargetId\n ? { lastActiveAgentSessionIdByAgentTargetId }\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 stringRecordsEqual(\n left.lastActiveAgentSessionIdByAgentTargetId,\n right.lastActiveAgentSessionIdByAgentTargetId\n )\n );\n}\n\nexport function normalizeAgentGuiWorkbenchNodeState(\n state: unknown,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n const persistedState = isRecord(state) ? state : {};\n const provider =\n persistedState.provider === undefined || persistedState.provider === null\n ? fallbackProvider\n : normalizeAgentGuiWorkbenchProvider(persistedState.provider);\n return {\n ...createDefaultAgentGuiWorkbenchNodeState(provider),\n agentTargetId: normalizeOptionalNonEmptyString(\n persistedState.agentTargetId\n ),\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n persistedState.composerOverrides\n ),\n composerOverridesByAgentTargetId:\n normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(\n persistedState.composerOverridesByAgentTargetId\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n persistedState.composerOverridesByProvider\n ),\n conversationCount: normalizeOptionalNonNegativeNumber(\n persistedState.conversationCount\n ),\n conversationRailCollapsed:\n persistedState.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n persistedState.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof persistedState.lastActiveAgentSessionId === \"string\"\n ? persistedState.lastActiveAgentSessionId\n : null,\n lastActiveAgentSessionIdByAgentTargetId:\n normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(\n persistedState.lastActiveAgentSessionIdByAgentTargetId\n ),\n provider\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 stringRecordsEqual(\n left.lastActiveAgentSessionIdByAgentTargetId,\n right.lastActiveAgentSessionIdByAgentTargetId\n ) &&\n left.provider === right.provider &&\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null)\n );\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 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 normalizeAgentGuiWorkbenchLastActiveSessionByAgentTargetId(\n value: unknown\n): Record<string, string> | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: Record<string, string> = {};\n for (const [rawAgentTargetId, rawAgentSessionId] of Object.entries(value)) {\n const agentTargetId = normalizeOptionalNonEmptyString(rawAgentTargetId);\n const agentSessionId = normalizeOptionalNonEmptyString(rawAgentSessionId);\n if (agentTargetId && agentSessionId) {\n result[agentTargetId] = agentSessionId;\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 stringRecordsEqual(\n left: Record<string, string> | null | undefined,\n right: Record<string, string> | null | undefined\n): boolean {\n const leftKeys = Object.keys(left ?? {}).sort();\n const rightKeys = Object.keys(right ?? {}).sort();\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every(\n (key, index) => key === rightKeys[index] && left?.[key] === right?.[key]\n )\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":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
translateInUiLanguage
|
|
3
|
+
} from "./chunk-DVXXZWYX.js";
|
|
1
4
|
import {
|
|
2
5
|
normalizeAgentTitleText
|
|
3
6
|
} from "./chunk-MIJXEELH.js";
|
|
4
|
-
import {
|
|
5
|
-
translateInUiLanguage
|
|
6
|
-
} from "./chunk-W4KHK5HK.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveAgentGUIProviderCatalogIdentity
|
|
9
9
|
} from "./chunk-6CUELYIF.js";
|
|
@@ -376,4 +376,4 @@ export {
|
|
|
376
376
|
resolveAgentGuiWorkbenchHeaderTitle,
|
|
377
377
|
resolveAgentGuiWorkbenchSessionTitle
|
|
378
378
|
};
|
|
379
|
-
//# sourceMappingURL=chunk-
|
|
379
|
+
//# sourceMappingURL=chunk-AMO3EB7V.js.map
|
|
@@ -96,6 +96,39 @@ var enAgentGui = {
|
|
|
96
96
|
providerGatePendingInstall: "Connecting\u2026",
|
|
97
97
|
providerGatePendingLogin: "Opening sign in\u2026",
|
|
98
98
|
providerGatePendingRefresh: "Checking\u2026",
|
|
99
|
+
targetSetupTitle: "Set up {{provider}}",
|
|
100
|
+
targetSetupDescription: "Use a compatible local runtime, or let Tutti install the pinned runtime.",
|
|
101
|
+
targetSetupAuthRequired: "Runtime is installed and responds over ACP, but authentication is required.",
|
|
102
|
+
targetSetupReady: "Runtime detected. You can check it again or sign in again.",
|
|
103
|
+
targetSetupOpen: "Open setup",
|
|
104
|
+
targetSetupRemaining: "Complete the remaining steps to use {{provider}}.",
|
|
105
|
+
targetSetupComplete: "{{provider}} is ready.",
|
|
106
|
+
targetSetupLoggedInAccount: "Signed-in account",
|
|
107
|
+
targetSetupStage: {
|
|
108
|
+
detect: "Detect runtime",
|
|
109
|
+
install: "Install runtime",
|
|
110
|
+
login: "Sign in"
|
|
111
|
+
},
|
|
112
|
+
targetSetupChecking: "Checking local and Tutti-managed runtimes\u2026",
|
|
113
|
+
targetSetupInstall: "Install runtime",
|
|
114
|
+
targetSetupStarting: "Starting installation\u2026",
|
|
115
|
+
targetSetupAuthMethod: "Sign-in method",
|
|
116
|
+
targetSetupAuthenticate: "Continue to sign in",
|
|
117
|
+
targetSetupReauthenticate: "Sign in again",
|
|
118
|
+
targetSetupAuthStarting: "Opening sign in\u2026",
|
|
119
|
+
targetSetupAuthFailed: "Authentication did not complete",
|
|
120
|
+
targetSetupNoAuthMethods: "No supported sign-in method was reported. Check the runtime again.",
|
|
121
|
+
targetSetupRetry: "Check again",
|
|
122
|
+
targetSetupFailed: "Runtime setup failed",
|
|
123
|
+
targetSetupPhase: {
|
|
124
|
+
preparing: "Preparing installation\u2026",
|
|
125
|
+
installing: "Installing pinned runtime\u2026",
|
|
126
|
+
verifying: "Verifying runtime version\u2026",
|
|
127
|
+
probing: "Checking ACP compatibility\u2026",
|
|
128
|
+
activating: "Activating managed runtime\u2026",
|
|
129
|
+
authenticating: "Waiting for authentication\u2026",
|
|
130
|
+
complete: "Installation complete"
|
|
131
|
+
},
|
|
99
132
|
collaboratorSessionReadOnlyPlaceholder: "This session belongs to another user and cannot be replied to directly",
|
|
100
133
|
send: "Send",
|
|
101
134
|
modelLabel: "Model",
|
|
@@ -122,6 +155,20 @@ var enAgentGui = {
|
|
|
122
155
|
permissionModeReadOnly: "Ask for approval",
|
|
123
156
|
permissionModeAuto: "Approve for me",
|
|
124
157
|
permissionModeFullAccess: "Full access",
|
|
158
|
+
fullAccessWarning: {
|
|
159
|
+
title: "Enable full access?",
|
|
160
|
+
description: "Full access lets Codex act on your computer without asking for approval.",
|
|
161
|
+
filesTitle: "Files and folders",
|
|
162
|
+
filesDescription: "Read, create, modify, or delete files anywhere on this computer.",
|
|
163
|
+
commandsTitle: "Terminal commands",
|
|
164
|
+
commandsDescription: "Run commands and change system settings.",
|
|
165
|
+
internetTitle: "Internet access",
|
|
166
|
+
internetDescription: "Access websites and send data over the internet.",
|
|
167
|
+
riskDescription: "Recent Codex releases, especially when using GPT-5.6 models, may go beyond your intent and accidentally delete or overwrite files. Only continue if you understand and accept this risk.",
|
|
168
|
+
learnMore: "Learn more",
|
|
169
|
+
cancel: "Cancel",
|
|
170
|
+
confirm: "Enable full access"
|
|
171
|
+
},
|
|
125
172
|
permissionSemantics: {
|
|
126
173
|
"ask-before-write": {
|
|
127
174
|
label: "Ask for approval",
|
|
@@ -2656,6 +2703,39 @@ var zhCNAgentGui = {
|
|
|
2656
2703
|
providerGatePendingInstall: "\u6B63\u5728\u8FDE\u63A5\u2026",
|
|
2657
2704
|
providerGatePendingLogin: "\u6B63\u5728\u6253\u5F00\u767B\u5F55\u2026",
|
|
2658
2705
|
providerGatePendingRefresh: "\u6B63\u5728\u68C0\u6D4B\u2026",
|
|
2706
|
+
targetSetupTitle: "\u8BBE\u7F6E {{provider}}",
|
|
2707
|
+
targetSetupDescription: "\u4F18\u5148\u4F7F\u7528\u517C\u5BB9\u7684\u672C\u5730\u8FD0\u884C\u65F6\uFF0C\u4E5F\u53EF\u7531 Tutti \u5B89\u88C5\u56FA\u5B9A\u7248\u672C",
|
|
2708
|
+
targetSetupAuthRequired: "\u8FD0\u884C\u65F6\u5DF2\u5B89\u88C5\u5E76\u901A\u8FC7 ACP \u68C0\u6D4B\uFF0C\u4F46\u4ECD\u9700\u5B8C\u6210\u767B\u5F55",
|
|
2709
|
+
targetSetupReady: "\u5DF2\u68C0\u6D4B\u5230\u8FD0\u884C\u65F6\uFF0C\u53EF\u91CD\u65B0\u68C0\u6D4B\u6216\u91CD\u65B0\u767B\u5F55",
|
|
2710
|
+
targetSetupOpen: "\u6253\u5F00\u8BBE\u7F6E",
|
|
2711
|
+
targetSetupRemaining: "\u5B8C\u6210\u4EE5\u4E0B\u6B65\u9AA4\u540E\u5373\u53EF\u4F7F\u7528 {{provider}}",
|
|
2712
|
+
targetSetupComplete: "{{provider}} \u5DF2\u5C31\u7EEA",
|
|
2713
|
+
targetSetupLoggedInAccount: "\u5DF2\u767B\u5F55\u8D26\u53F7",
|
|
2714
|
+
targetSetupStage: {
|
|
2715
|
+
detect: "\u68C0\u6D4B\u8FD0\u884C\u65F6",
|
|
2716
|
+
install: "\u5B89\u88C5\u8FD0\u884C\u65F6",
|
|
2717
|
+
login: "\u767B\u5F55"
|
|
2718
|
+
},
|
|
2719
|
+
targetSetupChecking: "\u6B63\u5728\u68C0\u6D4B\u672C\u5730\u548C Tutti \u6258\u7BA1\u8FD0\u884C\u65F6\u2026",
|
|
2720
|
+
targetSetupInstall: "\u5B89\u88C5\u8FD0\u884C\u65F6",
|
|
2721
|
+
targetSetupStarting: "\u6B63\u5728\u542F\u52A8\u5B89\u88C5\u2026",
|
|
2722
|
+
targetSetupAuthMethod: "\u767B\u5F55\u65B9\u5F0F",
|
|
2723
|
+
targetSetupAuthenticate: "\u7EE7\u7EED\u767B\u5F55",
|
|
2724
|
+
targetSetupReauthenticate: "\u91CD\u65B0\u767B\u5F55",
|
|
2725
|
+
targetSetupAuthStarting: "\u6B63\u5728\u6253\u5F00\u767B\u5F55\u2026",
|
|
2726
|
+
targetSetupAuthFailed: "\u767B\u5F55\u672A\u5B8C\u6210",
|
|
2727
|
+
targetSetupNoAuthMethods: "\u8FD0\u884C\u65F6\u672A\u8FD4\u56DE\u652F\u6301\u7684\u767B\u5F55\u65B9\u5F0F\uFF0C\u8BF7\u91CD\u65B0\u68C0\u6D4B",
|
|
2728
|
+
targetSetupRetry: "\u91CD\u65B0\u68C0\u6D4B",
|
|
2729
|
+
targetSetupFailed: "\u8FD0\u884C\u65F6\u8BBE\u7F6E\u5931\u8D25",
|
|
2730
|
+
targetSetupPhase: {
|
|
2731
|
+
preparing: "\u6B63\u5728\u51C6\u5907\u5B89\u88C5\u2026",
|
|
2732
|
+
installing: "\u6B63\u5728\u5B89\u88C5\u56FA\u5B9A\u7248\u672C\u2026",
|
|
2733
|
+
verifying: "\u6B63\u5728\u9A8C\u8BC1\u8FD0\u884C\u65F6\u7248\u672C\u2026",
|
|
2734
|
+
probing: "\u6B63\u5728\u68C0\u6D4B ACP \u517C\u5BB9\u6027\u2026",
|
|
2735
|
+
activating: "\u6B63\u5728\u542F\u7528\u6258\u7BA1\u8FD0\u884C\u65F6\u2026",
|
|
2736
|
+
authenticating: "\u6B63\u5728\u7B49\u5F85\u767B\u5F55\u5B8C\u6210\u2026",
|
|
2737
|
+
complete: "\u5B89\u88C5\u5B8C\u6210"
|
|
2738
|
+
},
|
|
2659
2739
|
collaboratorSessionReadOnlyPlaceholder: "\u975E\u5F53\u524D\u7528\u6237\u4F1A\u8BDD\uFF0C\u4E0D\u53EF\u76F4\u63A5\u5BF9\u8BDD",
|
|
2660
2740
|
send: "\u53D1\u9001",
|
|
2661
2741
|
modelLabel: "\u6A21\u578B",
|
|
@@ -2682,6 +2762,20 @@ var zhCNAgentGui = {
|
|
|
2682
2762
|
permissionModeReadOnly: "\u8BF7\u6C42\u6279\u51C6",
|
|
2683
2763
|
permissionModeAuto: "\u66FF\u6211\u5BA1\u6279",
|
|
2684
2764
|
permissionModeFullAccess: "\u5B8C\u5168\u8BBF\u95EE\u6743\u9650",
|
|
2765
|
+
fullAccessWarning: {
|
|
2766
|
+
title: "\u786E\u5B9A\u542F\u7528\u5B8C\u5168\u8BBF\u95EE\u6743\u9650\u5417\uFF1F",
|
|
2767
|
+
description: "\u5B8C\u5168\u8BBF\u95EE\u6743\u9650\u5141\u8BB8 Codex \u65E0\u9700\u4F60\u7684\u6279\u51C6\u5373\u53EF\u64CD\u4F5C\u8FD9\u53F0\u7535\u8111\u3002",
|
|
2768
|
+
filesTitle: "\u6587\u4EF6\u548C\u6587\u4EF6\u5939",
|
|
2769
|
+
filesDescription: "\u8BFB\u53D6\u3001\u521B\u5EFA\u3001\u4FEE\u6539\u6216\u5220\u9664\u8FD9\u53F0\u7535\u8111\u4E0A\u4EFB\u610F\u4F4D\u7F6E\u7684\u6587\u4EF6\u3002",
|
|
2770
|
+
commandsTitle: "\u7EC8\u7AEF\u547D\u4EE4",
|
|
2771
|
+
commandsDescription: "\u8FD0\u884C\u547D\u4EE4\u5E76\u66F4\u6539\u7CFB\u7EDF\u8BBE\u7F6E\u3002",
|
|
2772
|
+
internetTitle: "\u4E92\u8054\u7F51\u8BBF\u95EE",
|
|
2773
|
+
internetDescription: "\u8BBF\u95EE\u7F51\u7AD9\u5E76\u901A\u8FC7\u4E92\u8054\u7F51\u53D1\u9001\u6570\u636E\u3002",
|
|
2774
|
+
riskDescription: "\u8FD1\u671F\u7248\u672C\u7684 Codex\uFF0C\u5C24\u5176\u5728\u4F7F\u7528 GPT-5.6 \u7CFB\u5217\u6A21\u578B\u65F6\uFF0C\u53EF\u80FD\u4F1A\u8D85\u51FA\u4F60\u7684\u610F\u56FE\uFF0C\u8BEF\u5220\u6216\u8986\u76D6\u6587\u4EF6\u3002\u4EC5\u5728\u4F60\u7406\u89E3\u5E76\u63A5\u53D7\u6B64\u98CE\u9669\u65F6\u7EE7\u7EED\u3002",
|
|
2775
|
+
learnMore: "\u4E86\u89E3\u8BE6\u60C5",
|
|
2776
|
+
cancel: "\u53D6\u6D88",
|
|
2777
|
+
confirm: "\u542F\u7528\u5B8C\u5168\u8BBF\u95EE\u6743\u9650"
|
|
2778
|
+
},
|
|
2685
2779
|
permissionSemantics: {
|
|
2686
2780
|
"ask-before-write": {
|
|
2687
2781
|
label: "\u8BF7\u6C42\u6279\u51C6",
|
|
@@ -5182,4 +5276,4 @@ export {
|
|
|
5182
5276
|
translateInUiLanguage,
|
|
5183
5277
|
getActiveUiLanguage
|
|
5184
5278
|
};
|
|
5185
|
-
//# sourceMappingURL=chunk-
|
|
5279
|
+
//# sourceMappingURL=chunk-DVXXZWYX.js.map
|