@tutti-os/agent-gui 0.0.95 → 0.0.97
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 +38 -6
- package/dist/{AgentGUI-CwBLYtv-.d.ts → AgentGUI-DWdvUV4x.d.ts} +64 -18
- package/dist/agent-conversation/index.d.ts +3 -2
- package/dist/agent-conversation/index.js +10 -9
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-env/index.js +1 -1
- package/dist/agent-gui.d.ts +5 -5
- package/dist/agent-gui.js +26 -26
- package/dist/agent-message-center/index.d.ts +14 -3
- package/dist/agent-message-center/index.js +182 -47
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/{agentFileMentionContracts-Czvz6YMI.d.ts → agentFileMentionContracts-58IjMU-u.d.ts} +1 -0
- package/dist/{agentGuiNodeTypes-DppADPHW.d.ts → agentGuiNodeTypes-B9X4aWfv.d.ts} +30 -18
- package/dist/agents.d.ts +1 -1
- package/dist/agents.js +1 -1
- package/dist/app/renderer/agentactivity.css +150 -10
- package/dist/{chunk-BIHBXWK5.js → chunk-3EAANCKF.js} +2 -2
- package/dist/{chunk-LQVXBT65.js → chunk-3RYZYA72.js} +9 -9
- package/dist/{chunk-LQVXBT65.js.map → chunk-3RYZYA72.js.map} +1 -1
- package/dist/{chunk-BFNJKTDV.js → chunk-4VBKQY24.js} +11 -16
- package/dist/chunk-4VBKQY24.js.map +1 -0
- package/dist/{chunk-7PFDA2HQ.js → chunk-4YVGHJIE.js} +8 -116
- package/dist/chunk-4YVGHJIE.js.map +1 -0
- package/dist/{chunk-NITOD7WF.js → chunk-74CPYRWJ.js} +2 -2
- package/dist/{chunk-R2EWECUP.js → chunk-7BXWPI4F.js} +17 -2
- package/dist/{chunk-R2EWECUP.js.map → chunk-7BXWPI4F.js.map} +1 -1
- package/dist/{chunk-3R2D4E57.js → chunk-AAFTWZV7.js} +933 -844
- package/dist/chunk-AAFTWZV7.js.map +1 -0
- package/dist/{chunk-JX2SIXNL.js → chunk-AO2FDYAL.js} +8 -7
- package/dist/{chunk-JX2SIXNL.js.map → chunk-AO2FDYAL.js.map} +1 -1
- package/dist/{chunk-RY6GIO3K.js → chunk-BIS4QRX7.js} +5744 -4357
- package/dist/chunk-BIS4QRX7.js.map +1 -0
- package/dist/{chunk-O6W72SEP.js → chunk-C35SNDVZ.js} +4 -1
- package/dist/chunk-C35SNDVZ.js.map +1 -0
- package/dist/{chunk-WEDMAVX2.js → chunk-IYEXLOUE.js} +3 -6
- package/dist/chunk-IYEXLOUE.js.map +1 -0
- package/dist/{chunk-AOS2VWU6.js → chunk-K2NURZ7V.js} +37 -3
- package/dist/chunk-K2NURZ7V.js.map +1 -0
- package/dist/{chunk-UQJPV6HP.js → chunk-L3GMMGRS.js} +8 -6
- package/dist/chunk-L3GMMGRS.js.map +1 -0
- package/dist/{chunk-KAL4XZMA.js → chunk-MASXZENX.js} +1 -1
- package/dist/chunk-MASXZENX.js.map +1 -0
- package/dist/{chunk-YE25HN6T.js → chunk-NRJEKWLY.js} +17 -25
- package/dist/chunk-NRJEKWLY.js.map +1 -0
- package/dist/{chunk-XMO45GKA.js → chunk-P2BCMPTX.js} +14 -4
- package/dist/chunk-P2BCMPTX.js.map +1 -0
- package/dist/{chunk-7RDD3EWP.js → chunk-RE4AXS27.js} +24 -15
- package/dist/chunk-RE4AXS27.js.map +1 -0
- package/dist/{chunk-C5FV4UGI.js → chunk-SQTSLCMV.js} +22 -44
- package/dist/chunk-SQTSLCMV.js.map +1 -0
- package/dist/{chunk-NJAZ7LQM.js → chunk-TVIGLNNI.js} +3 -3
- package/dist/{chunk-VF22EG3F.js → chunk-UHBCM6RO.js} +1 -1
- package/dist/chunk-UHBCM6RO.js.map +1 -0
- package/dist/{chunk-CRO2MV2Y.js → chunk-XGGKHIQA.js} +21 -116
- package/dist/chunk-XGGKHIQA.js.map +1 -0
- package/dist/{chunk-NX3CZJXW.js → chunk-Y57VNTVM.js} +2 -2
- package/dist/chunk-YMXYBG7U.js +12 -0
- package/dist/chunk-YMXYBG7U.js.map +1 -0
- package/dist/context-mention-palette/index.d.ts +1 -1
- package/dist/context-mention-palette/index.js +14 -14
- package/dist/custom-mention.d.ts +2 -4
- package/dist/dock-icons.d.ts +2 -4
- package/dist/i18n/index.d.ts +34 -0
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +14 -12
- package/dist/index.js +34 -30
- package/dist/index.js.map +1 -1
- package/dist/mention-search.d.ts +1 -1
- package/dist/mention-search.js +11 -11
- package/dist/pastedTextKinds-D-XuInaS.d.ts +4 -0
- package/dist/startup-shell.d.ts +8 -0
- package/dist/startup-shell.js +184 -0
- package/dist/startup-shell.js.map +1 -0
- package/dist/{types-DX2bxgB8.d.ts → types-CnT8rNUI.d.ts} +16 -5
- package/dist/workbench/contribution.d.ts +3 -2
- package/dist/workbench/contribution.js +6 -6
- package/dist/workbench/index.d.ts +4 -4
- package/dist/workbench/index.js +14 -16
- package/dist/workbench/launch.d.ts +2 -2
- package/dist/workbench/launch.js +3 -3
- package/dist/workbench/providerCatalog.d.ts +2 -2
- package/dist/workbench/providerCatalog.js +1 -1
- package/dist/workbench/sessionTitle.d.ts +8 -12
- package/dist/workbench/sessionTitle.js +5 -7
- package/dist/workbench/state.js +2 -2
- package/dist/workbench/types.d.ts +2 -1
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +6 -6
- package/package.json +21 -14
- package/dist/chunk-3R2D4E57.js.map +0 -1
- package/dist/chunk-7J4K6WKB.js +0 -66
- package/dist/chunk-7J4K6WKB.js.map +0 -1
- package/dist/chunk-7PFDA2HQ.js.map +0 -1
- package/dist/chunk-7RDD3EWP.js.map +0 -1
- package/dist/chunk-AOS2VWU6.js.map +0 -1
- package/dist/chunk-BFNJKTDV.js.map +0 -1
- package/dist/chunk-C5FV4UGI.js.map +0 -1
- package/dist/chunk-CRO2MV2Y.js.map +0 -1
- package/dist/chunk-KAL4XZMA.js.map +0 -1
- package/dist/chunk-O6W72SEP.js.map +0 -1
- package/dist/chunk-RY6GIO3K.js.map +0 -1
- package/dist/chunk-UQJPV6HP.js.map +0 -1
- package/dist/chunk-VF22EG3F.js.map +0 -1
- package/dist/chunk-WEDMAVX2.js.map +0 -1
- package/dist/chunk-XMO45GKA.js.map +0 -1
- package/dist/chunk-YE25HN6T.js.map +0 -1
- package/dist/uiSettings-BQS9r2eo.d.ts +0 -6
- /package/dist/{chunk-BIHBXWK5.js.map → chunk-3EAANCKF.js.map} +0 -0
- /package/dist/{chunk-NITOD7WF.js.map → chunk-74CPYRWJ.js.map} +0 -0
- /package/dist/{chunk-NJAZ7LQM.js.map → chunk-TVIGLNNI.js.map} +0 -0
- /package/dist/{chunk-NX3CZJXW.js.map → chunk-Y57VNTVM.js.map} +0 -0
|
@@ -6,6 +6,7 @@ function normalizeAgentGUIAgents(agents) {
|
|
|
6
6
|
const agentTargetId = agent.agentTargetId.trim();
|
|
7
7
|
const name = agent.name.trim();
|
|
8
8
|
const iconUrl = agent.iconUrl.trim();
|
|
9
|
+
const heroImageUrl = agent.heroImageUrl?.trim() ?? "";
|
|
9
10
|
if (!agentTargetId || !name || !iconUrl || seenAgentTargetIds.has(agentTargetId)) {
|
|
10
11
|
continue;
|
|
11
12
|
}
|
|
@@ -17,6 +18,7 @@ function normalizeAgentGUIAgents(agents) {
|
|
|
17
18
|
agentTargetId,
|
|
18
19
|
name,
|
|
19
20
|
iconUrl,
|
|
21
|
+
...heroImageUrl ? { heroImageUrl } : {},
|
|
20
22
|
...agent.description?.trim() ? { description: agent.description.trim() } : {},
|
|
21
23
|
...ownerName || ownerAvatarUrl ? {
|
|
22
24
|
owner: {
|
|
@@ -61,6 +63,7 @@ function projectAgentGUIAgentsToInternalTargets(agents) {
|
|
|
61
63
|
label: agent.name,
|
|
62
64
|
...agent.description ? { description: agent.description } : {},
|
|
63
65
|
iconUrl: agent.iconUrl,
|
|
66
|
+
...agent.heroImageUrl ? { heroImageUrl: agent.heroImageUrl } : {},
|
|
64
67
|
...agent.owner?.avatarUrl ? {
|
|
65
68
|
badge: {
|
|
66
69
|
iconUrl: agent.owner.avatarUrl,
|
|
@@ -90,4 +93,4 @@ export {
|
|
|
90
93
|
resolveAgentGUISelectedDirectoryAgent,
|
|
91
94
|
projectAgentGUIAgentsToInternalTargets
|
|
92
95
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-C35SNDVZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../agents.ts"],"sourcesContent":["import type {\n AgentGUIAgent,\n AgentGUIAgentAvailabilityStatus,\n AgentGUIAgentTarget\n} from \"./types.ts\";\n\nexport function normalizeAgentGUIAgents(\n agents: readonly AgentGUIAgent[] | null | undefined\n): AgentGUIAgent[] {\n const normalized: AgentGUIAgent[] = [];\n const seenAgentTargetIds = new Set<string>();\n for (const agent of agents ?? []) {\n const agentTargetId = agent.agentTargetId.trim();\n const name = agent.name.trim();\n const iconUrl = agent.iconUrl.trim();\n const heroImageUrl = agent.heroImageUrl?.trim() ?? \"\";\n if (\n !agentTargetId ||\n !name ||\n !iconUrl ||\n seenAgentTargetIds.has(agentTargetId)\n ) {\n continue;\n }\n seenAgentTargetIds.add(agentTargetId);\n const ownerName = agent.owner?.name?.trim() ?? \"\";\n const ownerAvatarUrl = agent.owner?.avatarUrl?.trim() ?? \"\";\n const reason = agent.availability.reason?.trim() ?? \"\";\n normalized.push({\n agentTargetId,\n name,\n iconUrl,\n ...(heroImageUrl ? { heroImageUrl } : {}),\n ...(agent.description?.trim()\n ? { description: agent.description.trim() }\n : {}),\n ...(ownerName || ownerAvatarUrl\n ? {\n owner: {\n ...(ownerName ? { name: ownerName } : {}),\n ...(ownerAvatarUrl ? { avatarUrl: ownerAvatarUrl } : {})\n }\n }\n : {}),\n availability: {\n status: normalizeAgentGUIAgentAvailabilityStatus(\n agent.availability.status\n ),\n ...(reason ? { reason } : {}),\n ...(agent.availability.pendingAction\n ? { pendingAction: agent.availability.pendingAction }\n : {})\n },\n provider: agent.provider\n });\n }\n return normalized;\n}\n\nexport function agentGUIAgentIsReady(agent: AgentGUIAgent): boolean {\n return agent.availability.status === \"ready\";\n}\n\nexport function resolveAgentGUISelectedDirectoryAgent(input: {\n agents: readonly AgentGUIAgent[];\n agentTargetId?: string | null;\n defaultAgentTargetId?: string | null;\n}): AgentGUIAgent | null {\n const explicitAgentTargetId =\n input.agentTargetId?.trim() || input.defaultAgentTargetId?.trim() || \"\";\n if (explicitAgentTargetId) {\n return (\n input.agents.find(\n (agent) => agent.agentTargetId === explicitAgentTargetId\n ) ?? null\n );\n }\n return (\n input.agents.find((agent) => agentGUIAgentIsReady(agent)) ??\n input.agents[0] ??\n null\n );\n}\n\n/** Package-internal bridge while the carried node is migrated to agent names. */\nexport function projectAgentGUIAgentsToInternalTargets(\n agents: readonly AgentGUIAgent[]\n): AgentGUIAgentTarget[] {\n return agents.map((agent) => ({\n targetId: agent.agentTargetId,\n agentTargetId: agent.agentTargetId,\n provider: agent.provider,\n ref: {\n kind: \"agent-directory\",\n provider: agent.provider,\n agentTargetId: agent.agentTargetId\n },\n label: agent.name,\n ...(agent.description ? { description: agent.description } : {}),\n iconUrl: agent.iconUrl,\n ...(agent.heroImageUrl ? { heroImageUrl: agent.heroImageUrl } : {}),\n ...(agent.owner?.avatarUrl\n ? {\n badge: {\n iconUrl: agent.owner.avatarUrl,\n ...(agent.owner.name ? { label: agent.owner.name } : {})\n }\n }\n : {}),\n ...(agent.owner?.name ? { ownerLabel: agent.owner.name } : {}),\n ...(agent.availability.status !== \"ready\" ? { disabled: true } : {}),\n ...(agent.availability.reason\n ? { unavailableReason: agent.availability.reason }\n : {})\n }));\n}\n\nfunction normalizeAgentGUIAgentAvailabilityStatus(\n status: AgentGUIAgentAvailabilityStatus\n): AgentGUIAgentAvailabilityStatus {\n switch (status) {\n case \"ready\":\n case \"checking\":\n case \"coming_soon\":\n case \"not_installed\":\n case \"auth_required\":\n case \"unavailable\":\n return status;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
agentGuiWorkbenchProviders,
|
|
3
3
|
isAgentGuiWorkbenchProvider,
|
|
4
4
|
normalizeAgentGuiWorkbenchProvider
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-L3GMMGRS.js";
|
|
6
6
|
|
|
7
7
|
// workbench/state.ts
|
|
8
8
|
function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
@@ -57,10 +57,7 @@ function areAgentGuiWorkbenchStatesEqual(left, right) {
|
|
|
57
57
|
}
|
|
58
58
|
function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex") {
|
|
59
59
|
const persistedState = isRecord(state) ? state : {};
|
|
60
|
-
const provider = normalizeAgentGuiWorkbenchProvider(
|
|
61
|
-
persistedState.provider,
|
|
62
|
-
fallbackProvider
|
|
63
|
-
);
|
|
60
|
+
const provider = persistedState.provider === void 0 || persistedState.provider === null ? fallbackProvider : normalizeAgentGuiWorkbenchProvider(persistedState.provider);
|
|
64
61
|
return {
|
|
65
62
|
...createDefaultAgentGuiWorkbenchNodeState(provider),
|
|
66
63
|
agentTargetId: normalizeOptionalNonEmptyString(
|
|
@@ -306,4 +303,4 @@ export {
|
|
|
306
303
|
agentGuiWorkbenchProviderFromInstanceIdOrNull,
|
|
307
304
|
createAgentGuiWorkbenchNodeStateSource
|
|
308
305
|
};
|
|
309
|
-
//# sourceMappingURL=chunk-
|
|
306
|
+
//# sourceMappingURL=chunk-IYEXLOUE.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 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 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 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\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 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: 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 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 left.provider === right.provider &&\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null)\n );\n}\n\nexport function agentGuiWorkbenchProviderFromInstanceId(\n instanceId: string | null | undefined\n): AgentGuiWorkbenchProvider {\n const provider = agentGuiWorkbenchProviderFromInstanceIdOrNull(instanceId);\n if (!provider) {\n throw new Error(\"agent_gui_workbench.instance_provider_required\");\n }\n return 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 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,19 @@ var enAgentGuiProviderIdentity = {
|
|
|
12
12
|
conversationFilterCursor: "Cursor",
|
|
13
13
|
conversationFilterNexight: "Nexight",
|
|
14
14
|
conversationFilterHermes: "Hermes Agent",
|
|
15
|
-
conversationFilterOpenClaw: "OpenClaw"
|
|
15
|
+
conversationFilterOpenClaw: "OpenClaw",
|
|
16
|
+
manageAgents: "Agent Sidebar Display Settings",
|
|
17
|
+
manageAgentsTitle: "Agent Sidebar Display Settings",
|
|
18
|
+
manageAgentsDescription: "Drag to reorder or move agents between the available and disabled groups. Press and hold an agent to edit.",
|
|
19
|
+
manageAgentsAvailable: "Available Agents",
|
|
20
|
+
manageAgentsDisabled: "Disabled Agents",
|
|
21
|
+
manageAgentsNoAvailable: "Add an agent from the disabled list below.",
|
|
22
|
+
manageAgentsNoDisabled: "Drag agents you don\u2019t want to show in the sidebar here.",
|
|
23
|
+
manageAgentsKeepOneAvailable: "Keep at least one agent available.",
|
|
24
|
+
manageAgentsRunningBlocked: "{{agent}} is running and can't be disabled. Wait for it to finish and try again.",
|
|
25
|
+
removeAgentFromSidebar: "Remove {{agent}} from sidebar",
|
|
26
|
+
addAgentToSidebar: "Add {{agent}} to sidebar",
|
|
27
|
+
dragAgentToReorder: "Drag {{agent}} to reorder"
|
|
16
28
|
};
|
|
17
29
|
|
|
18
30
|
// app/renderer/i18n/locales/en.agentGuiRuntimeNotices.ts
|
|
@@ -220,6 +232,7 @@ var enAgentGui = {
|
|
|
220
232
|
planModeOffLabel: "Off",
|
|
221
233
|
planUnavailable: "Plan unavailable",
|
|
222
234
|
queuedLabel: "Queued",
|
|
235
|
+
queuePausedByUserLabel: "The queue is paused because you interrupted the current response.",
|
|
223
236
|
sendQueuedPromptNext: "Send next",
|
|
224
237
|
editQueuedPrompt: "Edit",
|
|
225
238
|
deleteQueuedPrompt: "Delete",
|
|
@@ -268,6 +281,7 @@ var enAgentGui = {
|
|
|
268
281
|
pastedTextFilesHeader: "Referenced pasted text files:",
|
|
269
282
|
pastedTextFileLine: '- pasted text file "{{preview}}": {{path}}. Read this file before continuing.',
|
|
270
283
|
pastedTextAttachmentTitle: "Pasted text",
|
|
284
|
+
pastedTextAttachmentFailed: "Pasted text couldn't be saved",
|
|
271
285
|
pastedTextRestoreToComposer: "Show in text field",
|
|
272
286
|
copyMessage: "Copy message",
|
|
273
287
|
copyImage: "Copy image",
|
|
@@ -377,6 +391,8 @@ var enAgentGui = {
|
|
|
377
391
|
loadingConversation: "Loading session...",
|
|
378
392
|
scrollToBottom: "Scroll to bottom",
|
|
379
393
|
searchNoConversations: "No related sessions",
|
|
394
|
+
searchFailed: "Could not search sessions",
|
|
395
|
+
retrySearch: "Retry search",
|
|
380
396
|
conversationUnavailable: "Session unavailable.",
|
|
381
397
|
contextPickerBrowseHint: "Search workspace files based on your input",
|
|
382
398
|
contextPickerBrowseFileHint: "No opened or Agent-generated files yet. Type a file name to search your computer.",
|
|
@@ -597,6 +613,7 @@ var enAgentGui = {
|
|
|
597
613
|
loadMore: "Load more",
|
|
598
614
|
loadMoreGroups: "Load more",
|
|
599
615
|
loading: "Loading...",
|
|
616
|
+
loadError: "Couldn't load this content. Try again later.",
|
|
600
617
|
previewBinary: "This file looks like binary content.",
|
|
601
618
|
previewDecodeFailed: "This file couldn't be decoded as UTF-8 text.",
|
|
602
619
|
previewError: "Couldn't load a preview.",
|
|
@@ -2519,7 +2536,19 @@ var zhCNAgentGuiProviderIdentity = {
|
|
|
2519
2536
|
conversationFilterCursor: "Cursor",
|
|
2520
2537
|
conversationFilterNexight: "Nexight",
|
|
2521
2538
|
conversationFilterHermes: "Hermes Agent",
|
|
2522
|
-
conversationFilterOpenClaw: "OpenClaw"
|
|
2539
|
+
conversationFilterOpenClaw: "OpenClaw",
|
|
2540
|
+
manageAgents: "Agent \u680F\u5C55\u793A\u8BBE\u7F6E",
|
|
2541
|
+
manageAgentsTitle: "Agent \u680F\u5C55\u793A\u8BBE\u7F6E",
|
|
2542
|
+
manageAgentsDescription: "\u62D6\u62FD\u8C03\u6574\u987A\u5E8F\u6216\u5728\u53EF\u7528\u4E0E\u505C\u7528\u5206\u7EC4\u95F4\u79FB\u52A8\uFF0C\u957F\u6309 Agent \u53EF\u8FDB\u5165\u7F16\u8F91\u3002",
|
|
2543
|
+
manageAgentsAvailable: "\u53EF\u7528 Agent",
|
|
2544
|
+
manageAgentsDisabled: "\u505C\u7528 Agent",
|
|
2545
|
+
manageAgentsNoAvailable: "\u53EF\u4ECE\u4E0B\u65B9\u505C\u7528\u5217\u8868\u6DFB\u52A0 Agent\u3002",
|
|
2546
|
+
manageAgentsNoDisabled: "\u53EF\u4EE5\u628A\u4E0D\u5E0C\u671B\u5C55\u793A\u5728\u4FA7\u8FB9\u680F\u7684agent\u62D6\u5230\u8FD9\u91CC",
|
|
2547
|
+
manageAgentsKeepOneAvailable: "\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A\u53EF\u7528 Agent\u3002",
|
|
2548
|
+
manageAgentsRunningBlocked: "{{agent}} \u6B63\u5728\u8FD0\u884C\uFF0C\u6682\u65F6\u65E0\u6CD5\u505C\u7528\u3002\u8BF7\u7B49\u5F85\u4EFB\u52A1\u7ED3\u675F\u540E\u518D\u8BD5\u3002",
|
|
2549
|
+
removeAgentFromSidebar: "\u4ECE\u5DE6\u4FA7\u680F\u79FB\u9664 {{agent}}",
|
|
2550
|
+
addAgentToSidebar: "\u5C06 {{agent}} \u6DFB\u52A0\u5230\u5DE6\u4FA7\u680F",
|
|
2551
|
+
dragAgentToReorder: "\u62D6\u62FD {{agent}} \u8C03\u6574\u987A\u5E8F"
|
|
2523
2552
|
};
|
|
2524
2553
|
|
|
2525
2554
|
// app/renderer/i18n/locales/zh-CN.agentGuiRuntimeNotices.ts
|
|
@@ -2727,6 +2756,7 @@ var zhCNAgentGui = {
|
|
|
2727
2756
|
planModeOffLabel: "\u5173\u95ED",
|
|
2728
2757
|
planUnavailable: "\u89C4\u5212\u6A21\u5F0F\u4E0D\u53EF\u7528",
|
|
2729
2758
|
queuedLabel: "\u6392\u961F\u4E2D",
|
|
2759
|
+
queuePausedByUserLabel: "\u7531\u4E8E\u4F60\u4E2D\u65AD\u4E86\u5F53\u524D\u54CD\u5E94\uFF0C\u961F\u5217\u5DF2\u6682\u505C",
|
|
2730
2760
|
sendQueuedPromptNext: "\u76F4\u63A5\u53D1\u9001",
|
|
2731
2761
|
editQueuedPrompt: "\u7F16\u8F91",
|
|
2732
2762
|
deleteQueuedPrompt: "\u5220\u9664",
|
|
@@ -2775,6 +2805,7 @@ var zhCNAgentGui = {
|
|
|
2775
2805
|
pastedTextFilesHeader: "\u5F15\u7528\u7684\u7C98\u8D34\u6587\u672C\u6587\u4EF6\uFF1A",
|
|
2776
2806
|
pastedTextFileLine: '- \u7C98\u8D34\u7684\u6587\u672C\u6587\u4EF6 "{{preview}}"\uFF1A{{path}}\uFF0C\u7EE7\u7EED\u524D\u8BF7\u5148\u9605\u8BFB\u6B64\u6587\u4EF6\u3002',
|
|
2777
2807
|
pastedTextAttachmentTitle: "\u7C98\u8D34\u7684\u6587\u672C",
|
|
2808
|
+
pastedTextAttachmentFailed: "\u65E0\u6CD5\u4FDD\u5B58\u7C98\u8D34\u7684\u6587\u672C",
|
|
2778
2809
|
pastedTextRestoreToComposer: "\u5728\u6587\u672C\u6846\u4E2D\u663E\u793A",
|
|
2779
2810
|
copyMessage: "\u590D\u5236\u6D88\u606F",
|
|
2780
2811
|
copyImage: "\u590D\u5236\u56FE\u7247",
|
|
@@ -2884,6 +2915,8 @@ var zhCNAgentGui = {
|
|
|
2884
2915
|
loadingConversation: "\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD...",
|
|
2885
2916
|
scrollToBottom: "\u6EDA\u52A8\u81F3\u5E95\u90E8",
|
|
2886
2917
|
searchNoConversations: "\u6682\u65E0\u76F8\u5173\u4F1A\u8BDD",
|
|
2918
|
+
searchFailed: "\u65E0\u6CD5\u641C\u7D22\u4F1A\u8BDD",
|
|
2919
|
+
retrySearch: "\u91CD\u8BD5\u641C\u7D22",
|
|
2887
2920
|
conversationUnavailable: "\u4F1A\u8BDD\u4E0D\u53EF\u7528\u3002",
|
|
2888
2921
|
contextPickerBrowseHint: "\u6839\u636E\u4F60\u8F93\u5165\u7684\u5185\u5BB9\u641C\u7D22\u5DE5\u4F5C\u533A\u6587\u4EF6",
|
|
2889
2922
|
contextPickerBrowseFileHint: "\u6682\u65E0\u5DF2\u6253\u5F00\u6216 Agent \u751F\u6210\u7684\u6587\u4EF6\uFF0C\u7EE7\u7EED\u8F93\u5165\u6587\u4EF6\u540D\u53EF\u641C\u7D22\u672C\u673A\u6587\u4EF6",
|
|
@@ -3104,6 +3137,7 @@ var zhCNAgentGui = {
|
|
|
3104
3137
|
loadMore: "\u52A0\u8F7D\u66F4\u591A",
|
|
3105
3138
|
loadMoreGroups: "\u62C9\u53D6\u66F4\u591A",
|
|
3106
3139
|
loading: "\u6B63\u5728\u52A0\u8F7D",
|
|
3140
|
+
loadError: "\u52A0\u8F7D\u5185\u5BB9\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
|
|
3107
3141
|
previewBinary: "\u8FD9\u4E2A\u6587\u4EF6\u66F4\u50CF\u4E8C\u8FDB\u5236\u5185\u5BB9",
|
|
3108
3142
|
previewDecodeFailed: "\u6682\u65F6\u65E0\u6CD5\u6309 UTF-8 \u6587\u672C\u89E3\u7801\u8FD9\u4E2A\u6587\u4EF6",
|
|
3109
3143
|
previewError: "\u52A0\u8F7D\u9884\u89C8\u5931\u8D25",
|
|
@@ -5076,4 +5110,4 @@ export {
|
|
|
5076
5110
|
translateInUiLanguage,
|
|
5077
5111
|
getActiveUiLanguage
|
|
5078
5112
|
};
|
|
5079
|
-
//# sourceMappingURL=chunk-
|
|
5113
|
+
//# sourceMappingURL=chunk-K2NURZ7V.js.map
|