@tutti-os/agent-gui 0.0.14 → 0.0.15
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/agent-conversation/index.d.ts +1 -1
- package/dist/agent-conversation/index.js +4 -4
- package/dist/agent-message-center/index.d.ts +1 -1
- package/dist/agent-message-center/index.js +4 -4
- package/dist/agentFileMentionExtension-CM1c9bqk.d.ts +86 -0
- package/dist/app/renderer/agentactivity.css +33 -9
- package/dist/{chunk-WME2V26J.js → chunk-2CA4NPP3.js} +15 -33
- package/dist/chunk-2CA4NPP3.js.map +1 -0
- package/dist/{chunk-ZO3SZCIX.js → chunk-7CBJJNX6.js} +5 -2
- package/dist/chunk-7CBJJNX6.js.map +1 -0
- package/dist/{chunk-ASAZDEQE.js → chunk-EK5RDKG7.js} +54 -14
- package/dist/chunk-EK5RDKG7.js.map +1 -0
- package/dist/{chunk-GZHQPPK2.js → chunk-H4HT3FE6.js} +113 -36
- package/dist/chunk-H4HT3FE6.js.map +1 -0
- package/dist/{chunk-YXSO4ITT.js → chunk-HIREVEZM.js} +1 -1
- package/dist/chunk-HIREVEZM.js.map +1 -0
- package/dist/{chunk-VDNMTW2E.js → chunk-IXIGWLQY.js} +1 -1
- package/dist/chunk-IXIGWLQY.js.map +1 -0
- package/dist/{chunk-FSTZDNRM.js → chunk-KJPMZ7G5.js} +243 -167
- package/dist/chunk-KJPMZ7G5.js.map +1 -0
- package/dist/{chunk-GEXHKJK5.js → chunk-MUZMBEFO.js} +35 -17
- package/dist/chunk-MUZMBEFO.js.map +1 -0
- package/dist/{chunk-HSXDSFKB.js → chunk-OFGXNXYT.js} +2 -2
- package/dist/{chunk-3YZX5EUC.js → chunk-SVOGXWFJ.js} +53 -17
- package/dist/{chunk-3YZX5EUC.js.map → chunk-SVOGXWFJ.js.map} +1 -1
- package/dist/{chunk-MU2LODEV.js → chunk-U4F3COKL.js} +160 -10
- package/dist/chunk-U4F3COKL.js.map +1 -0
- package/dist/{chunk-KEKPOVQD.js → chunk-XHQGCP7A.js} +2 -2
- package/dist/{chunk-RLPVFX7V.js → chunk-YKDFQADM.js} +36 -7
- package/dist/chunk-YKDFQADM.js.map +1 -0
- package/dist/context-mention-palette/index.d.ts +8 -68
- package/dist/context-mention-palette/index.js +6 -6
- package/dist/context-mention-provider.d.ts +6 -1
- package/dist/context-mention-provider.js +1 -1
- package/dist/i18n/index.d.ts +239 -163
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +35 -2
- package/dist/index.js +1481 -997
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.d.ts +7 -1
- package/dist/workbench/contribution.js +6 -4
- package/dist/workbench/index.d.ts +4 -2
- package/dist/workbench/index.js +6 -4
- package/dist/workbench/launch.d.ts +2 -0
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/state.d.ts +3 -2
- package/dist/workbench/state.js +1 -1
- package/dist/workbench/types.d.ts +3 -0
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/dist/{workspaceLinkActions-BlLN8Pvz.d.ts → workspaceLinkActions-Mjktl_Be.d.ts} +3 -0
- package/package.json +15 -13
- package/dist/chunk-ASAZDEQE.js.map +0 -1
- package/dist/chunk-FSTZDNRM.js.map +0 -1
- package/dist/chunk-GEXHKJK5.js.map +0 -1
- package/dist/chunk-GZHQPPK2.js.map +0 -1
- package/dist/chunk-MU2LODEV.js.map +0 -1
- package/dist/chunk-RLPVFX7V.js.map +0 -1
- package/dist/chunk-VDNMTW2E.js.map +0 -1
- package/dist/chunk-WME2V26J.js.map +0 -1
- package/dist/chunk-YXSO4ITT.js.map +0 -1
- package/dist/chunk-ZO3SZCIX.js.map +0 -1
- /package/dist/{chunk-HSXDSFKB.js.map → chunk-OFGXNXYT.js.map} +0 -0
- /package/dist/{chunk-KEKPOVQD.js.map → chunk-XHQGCP7A.js.map} +0 -0
|
@@ -31,8 +31,7 @@ function normalizeAgentGuiWorkbenchState(state) {
|
|
|
31
31
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
32
32
|
state.conversationRailWidthPx
|
|
33
33
|
),
|
|
34
|
-
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
35
|
-
lastActiveConversationTitle: typeof state.lastActiveConversationTitle === "string" ? state.lastActiveConversationTitle : null
|
|
34
|
+
lastActiveAgentSessionId: typeof state.lastActiveAgentSessionId === "string" ? state.lastActiveAgentSessionId : null
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
37
|
function projectAgentGuiWorkbenchState(state) {
|
|
@@ -47,15 +46,14 @@ function projectAgentGuiWorkbenchState(state) {
|
|
|
47
46
|
conversationRailWidthPx: normalizeOptionalPositiveNumber(
|
|
48
47
|
state.conversationRailWidthPx
|
|
49
48
|
),
|
|
50
|
-
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
51
|
-
lastActiveConversationTitle: state.lastActiveConversationTitle ?? null
|
|
49
|
+
lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null
|
|
52
50
|
};
|
|
53
51
|
}
|
|
54
52
|
function areAgentGuiWorkbenchStatesEqual(left, right) {
|
|
55
53
|
return composerOverridesEqual(left.composerOverrides, right.composerOverrides) && composerOverridesByProviderEqual(
|
|
56
54
|
left.composerOverridesByProvider,
|
|
57
55
|
right.composerOverridesByProvider
|
|
58
|
-
) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId
|
|
56
|
+
) && left.conversationRailCollapsed === right.conversationRailCollapsed && left.conversationRailWidthPx === right.conversationRailWidthPx && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId;
|
|
59
57
|
}
|
|
60
58
|
function normalizeAgentGuiWorkbenchNodeState(state, fallbackProvider = "codex") {
|
|
61
59
|
const provider = normalizeAgentGuiWorkbenchProvider(
|
|
@@ -98,8 +96,13 @@ function agentGuiWorkbenchProviderFromInstanceId(instanceId) {
|
|
|
98
96
|
}
|
|
99
97
|
function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
100
98
|
const typeId = input.typeId ?? "agent-gui";
|
|
101
|
-
const
|
|
99
|
+
const nodeStateByKey = /* @__PURE__ */ new Map();
|
|
102
100
|
const listeners = /* @__PURE__ */ new Set();
|
|
101
|
+
const lookupState = (request) => {
|
|
102
|
+
const nodeState = request.nodeId ? nodeStateByKey.get(agentGuiWorkbenchNodeStateKey(request)) : null;
|
|
103
|
+
const state = nodeState ?? nodeStateByKey.get(agentGuiWorkbenchInstanceStateKey(request));
|
|
104
|
+
return state ? { ...state } : null;
|
|
105
|
+
};
|
|
103
106
|
const notify = () => {
|
|
104
107
|
for (const listener of listeners) {
|
|
105
108
|
listener();
|
|
@@ -111,15 +114,13 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
|
111
114
|
if (request.typeId !== typeId) {
|
|
112
115
|
return null;
|
|
113
116
|
}
|
|
114
|
-
|
|
115
|
-
return state ? { ...state } : null;
|
|
117
|
+
return lookupState(request);
|
|
116
118
|
},
|
|
117
119
|
getSnapshotNodeState(request) {
|
|
118
120
|
if (request.typeId !== typeId) {
|
|
119
121
|
return null;
|
|
120
122
|
}
|
|
121
|
-
|
|
122
|
-
return state ? { ...state } : null;
|
|
123
|
+
return lookupState(request);
|
|
123
124
|
},
|
|
124
125
|
getWorkspaceState() {
|
|
125
126
|
return {
|
|
@@ -137,28 +138,45 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
|
|
|
137
138
|
if (request.typeId !== typeId) {
|
|
138
139
|
return null;
|
|
139
140
|
}
|
|
140
|
-
|
|
141
|
-
return state ? { ...state } : null;
|
|
141
|
+
return lookupState(request);
|
|
142
142
|
},
|
|
143
143
|
writeNodeState(request) {
|
|
144
144
|
if (request.typeId !== typeId) {
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
147
|
-
|
|
147
|
+
const key = agentGuiWorkbenchNodeStateKey(request);
|
|
148
|
+
const previous = nodeStateByKey.get(key);
|
|
149
|
+
const clearedInstanceSeed = request.nodeId ? nodeStateByKey.delete(agentGuiWorkbenchInstanceStateKey(request)) : false;
|
|
150
|
+
const next = {
|
|
148
151
|
...normalizeAgentGuiWorkbenchState(request.state)
|
|
149
|
-
}
|
|
152
|
+
};
|
|
153
|
+
if (request.nodeId && typeof request.state.lastActiveConversationTitle === "string") {
|
|
154
|
+
next.lastActiveConversationTitle = request.state.lastActiveConversationTitle;
|
|
155
|
+
}
|
|
156
|
+
nodeStateByKey.set(key, next);
|
|
157
|
+
if (!clearedInstanceSeed && previous && areAgentGuiWorkbenchMemoryStatesEqual(previous, next)) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
150
160
|
notify();
|
|
151
161
|
}
|
|
152
162
|
};
|
|
153
163
|
}
|
|
164
|
+
function areAgentGuiWorkbenchMemoryStatesEqual(left, right) {
|
|
165
|
+
return areAgentGuiWorkbenchStatesEqual(left, right) && (left.lastActiveConversationTitle ?? null) === (right.lastActiveConversationTitle ?? null);
|
|
166
|
+
}
|
|
167
|
+
function agentGuiWorkbenchNodeStateKey(request) {
|
|
168
|
+
return request.nodeId ? `node:${request.nodeId}` : agentGuiWorkbenchInstanceStateKey(request);
|
|
169
|
+
}
|
|
170
|
+
function agentGuiWorkbenchInstanceStateKey(request) {
|
|
171
|
+
return `instance:${request.instanceId}`;
|
|
172
|
+
}
|
|
154
173
|
function createDefaultAgentGuiWorkbenchState() {
|
|
155
174
|
return {
|
|
156
175
|
composerOverrides: null,
|
|
157
176
|
composerOverridesByProvider: null,
|
|
158
177
|
conversationRailCollapsed: false,
|
|
159
178
|
conversationRailWidthPx: null,
|
|
160
|
-
lastActiveAgentSessionId: null
|
|
161
|
-
lastActiveConversationTitle: null
|
|
179
|
+
lastActiveAgentSessionId: null
|
|
162
180
|
};
|
|
163
181
|
}
|
|
164
182
|
function normalizeAgentGuiWorkbenchComposerOverrides(value) {
|
|
@@ -226,4 +244,4 @@ export {
|
|
|
226
244
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
227
245
|
createAgentGuiWorkbenchNodeStateSource
|
|
228
246
|
};
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
247
|
+
//# sourceMappingURL=chunk-MUZMBEFO.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 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 composerOverrides: null,\n composerOverridesByProvider: null,\n conversationCount: null,\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null,\n lastActiveConversationTitle: null,\n provider\n };\n}\n\nexport function normalizeAgentGuiWorkbenchState(\n state: unknown\n): AgentGuiWorkbenchState {\n if (!isRecord(state)) {\n return createDefaultAgentGuiWorkbenchState();\n }\n return {\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state.composerOverridesByProvider\n ),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null\n };\n}\n\nexport function projectAgentGuiWorkbenchState(\n state: AgentGuiWorkbenchNodeState\n): AgentGuiWorkbenchState {\n return {\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state.composerOverridesByProvider\n ),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null\n };\n}\n\nexport function areAgentGuiWorkbenchStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByProviderEqual(\n left.composerOverridesByProvider,\n right.composerOverridesByProvider\n ) &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId\n );\n}\n\nexport function normalizeAgentGuiWorkbenchNodeState(\n state: Partial<AgentGuiWorkbenchNodeState> | null | undefined,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n const provider = normalizeAgentGuiWorkbenchProvider(\n state?.provider,\n fallbackProvider\n );\n return {\n ...createDefaultAgentGuiWorkbenchNodeState(provider),\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state?.composerOverrides\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state?.composerOverridesByProvider\n ),\n conversationCount: normalizeOptionalNonNegativeNumber(\n state?.conversationCount\n ),\n conversationRailCollapsed: state?.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state?.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state?.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null,\n lastActiveConversationTitle:\n typeof state?.lastActiveConversationTitle === \"string\"\n ? state.lastActiveConversationTitle\n : null,\n provider\n };\n}\n\nexport function areAgentGuiWorkbenchNodeStatesEqual(\n left: AgentGuiWorkbenchNodeState,\n right: AgentGuiWorkbenchNodeState\n): boolean {\n return (\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByProviderEqual(\n left.composerOverridesByProvider,\n right.composerOverridesByProvider\n ) &&\n left.conversationCount === right.conversationCount &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n left.lastActiveConversationTitle === right.lastActiveConversationTitle &&\n left.provider === right.provider\n );\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 const typeId = input.typeId ?? \"agent-gui\";\n const nodeStateByKey = new Map<string, AgentGuiWorkbenchState>();\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 writeNodeState(request) {\n if (request.typeId !== typeId) {\n return;\n }\n const key = agentGuiWorkbenchNodeStateKey(request);\n const previous = nodeStateByKey.get(key);\n const clearedInstanceSeed = request.nodeId\n ? nodeStateByKey.delete(agentGuiWorkbenchInstanceStateKey(request))\n : false;\n const next = {\n ...normalizeAgentGuiWorkbenchState(request.state)\n };\n if (\n request.nodeId &&\n typeof request.state.lastActiveConversationTitle === \"string\"\n ) {\n next.lastActiveConversationTitle =\n request.state.lastActiveConversationTitle;\n }\n nodeStateByKey.set(key, next);\n if (\n !clearedInstanceSeed &&\n previous &&\n areAgentGuiWorkbenchMemoryStatesEqual(previous, next)\n ) {\n return;\n }\n notify();\n }\n };\n}\n\nfunction areAgentGuiWorkbenchMemoryStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n areAgentGuiWorkbenchStatesEqual(left, right) &&\n (left.lastActiveConversationTitle ?? null) ===\n (right.lastActiveConversationTitle ?? null)\n );\n}\n\nfunction agentGuiWorkbenchNodeStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\"> &\n Partial<Pick<WorkbenchHostExternalStateLookupInput, \"nodeId\">>\n): string {\n return request.nodeId\n ? `node:${request.nodeId}`\n : agentGuiWorkbenchInstanceStateKey(request);\n}\n\nfunction agentGuiWorkbenchInstanceStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\">\n): string {\n return `instance:${request.instanceId}`;\n}\n\nfunction createDefaultAgentGuiWorkbenchState(): AgentGuiWorkbenchState {\n return {\n composerOverrides: null,\n composerOverridesByProvider: null,\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null\n };\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverrides(\n value: unknown\n): AgentGuiWorkbenchComposerOverrides | null {\n if (!isRecord(value)) {\n return null;\n }\n const composerOverrides: AgentGuiWorkbenchComposerOverrides = {};\n if (typeof value.model === \"string\" && value.model.trim()) {\n composerOverrides.model = value.model.trim();\n }\n if (\n typeof value.reasoningEffort === \"string\" &&\n value.reasoningEffort.trim()\n ) {\n composerOverrides.reasoningEffort = value.reasoningEffort.trim();\n }\n if (\n typeof value.permissionModeId === \"string\" &&\n value.permissionModeId.trim()\n ) {\n composerOverrides.permissionModeId = value.permissionModeId.trim();\n }\n if (typeof value.planMode === \"boolean\") {\n composerOverrides.planMode = value.planMode;\n }\n return Object.keys(composerOverrides).length > 0 ? composerOverrides : null;\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n value: unknown\n): AgentGuiWorkbenchComposerOverridesByProvider | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: AgentGuiWorkbenchComposerOverridesByProvider = {};\n for (const provider of agentGuiWorkbenchProviders) {\n const overrides = normalizeAgentGuiWorkbenchComposerOverrides(\n value[provider]\n );\n if (overrides) {\n result[provider] = overrides;\n }\n }\n return Object.keys(result).length > 0 ? result : null;\n}\n\nfunction normalizeOptionalPositiveNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value > 0\n ? Math.round(value)\n : null;\n}\n\nfunction normalizeOptionalNonNegativeNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? Math.round(value)\n : null;\n}\n\nfunction composerOverridesEqual(\n left: AgentGuiWorkbenchComposerOverrides | null | undefined,\n right: AgentGuiWorkbenchComposerOverrides | null | undefined\n): boolean {\n return (\n (left?.model ?? null) === (right?.model ?? null) &&\n (left?.permissionModeId ?? null) === (right?.permissionModeId ?? null) &&\n (left?.planMode ?? null) === (right?.planMode ?? null) &&\n (left?.reasoningEffort ?? null) === (right?.reasoningEffort ?? null)\n );\n}\n\nfunction composerOverridesByProviderEqual(\n left: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined,\n right: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined\n): boolean {\n for (const provider of agentGuiWorkbenchProviders) {\n if (!composerOverridesEqual(left?.[provider], right?.[provider])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-MTFSQWZ6.js";
|
|
15
15
|
import {
|
|
16
16
|
translate
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-KJPMZ7G5.js";
|
|
18
18
|
|
|
19
19
|
// shared/managedAgentProviders.ts
|
|
20
20
|
function normalizeManagedAgentProvider(provider) {
|
|
@@ -113,4 +113,4 @@ export {
|
|
|
113
113
|
userAvatarPlaceholderUrl,
|
|
114
114
|
workspaceAgentActivityStatusLabel
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-OFGXNXYT.js.map
|
|
@@ -3,20 +3,20 @@ import {
|
|
|
3
3
|
managedAgentRoundedIconUrl,
|
|
4
4
|
userAvatarPlaceholderUrl,
|
|
5
5
|
workspaceAgentActivityStatusLabel
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OFGXNXYT.js";
|
|
7
7
|
import {
|
|
8
8
|
buildAgentGenericMentionHref,
|
|
9
9
|
buildAgentSessionMentionHref,
|
|
10
10
|
buildAgentWorkspaceAppMentionHref,
|
|
11
11
|
buildAgentWorkspaceIssueMentionHref,
|
|
12
12
|
normalizeAgentSessionMentionTitle
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-U4F3COKL.js";
|
|
14
14
|
import {
|
|
15
15
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-HIREVEZM.js";
|
|
17
17
|
import {
|
|
18
18
|
translate
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-KJPMZ7G5.js";
|
|
20
20
|
import {
|
|
21
21
|
resolveAgentMentionFileThumbnailUrl,
|
|
22
22
|
resolveAgentMentionFileVisualKind
|
|
@@ -1181,12 +1181,12 @@ var AgentMentionSearchController = class {
|
|
|
1181
1181
|
if (!mentionItem || mentionItem.kind !== "file") {
|
|
1182
1182
|
return mentionItem;
|
|
1183
1183
|
}
|
|
1184
|
-
const
|
|
1185
|
-
input.provider.
|
|
1184
|
+
const iconUrl = await Promise.resolve(
|
|
1185
|
+
input.provider.getItemIconUrl?.(item) ?? null
|
|
1186
1186
|
).catch(() => null);
|
|
1187
1187
|
const resolvedThumbnailUrl = resolveAgentMentionFileThumbnailUrl({
|
|
1188
1188
|
...mentionItem,
|
|
1189
|
-
thumbnailUrl
|
|
1189
|
+
thumbnailUrl: iconUrl
|
|
1190
1190
|
});
|
|
1191
1191
|
if (!resolvedThumbnailUrl) {
|
|
1192
1192
|
return mentionItem;
|
|
@@ -1492,7 +1492,8 @@ function providerItemToAgentMentionItem(input) {
|
|
|
1492
1492
|
appId,
|
|
1493
1493
|
name: label,
|
|
1494
1494
|
description: compactText(presentation.description) || compactText(presentation.subtitle) || compactText(input.subtitle) || void 0,
|
|
1495
|
-
iconUrl: presentation.iconUrl?.trim() || void 0
|
|
1495
|
+
iconUrl: presentation.iconUrl?.trim() || void 0,
|
|
1496
|
+
referencesListSupported: presentation.referencesListSupported === "true"
|
|
1496
1497
|
};
|
|
1497
1498
|
}
|
|
1498
1499
|
if (input.providerId === AGENT_SESSION_PROVIDER_ID2) {
|
|
@@ -1531,7 +1532,12 @@ function mentionSessionScope(input) {
|
|
|
1531
1532
|
if (rawScope === "my_sessions" || rawScope === "collab_sessions") {
|
|
1532
1533
|
return rawScope;
|
|
1533
1534
|
}
|
|
1534
|
-
|
|
1535
|
+
const userId = input.userId?.trim() ?? "";
|
|
1536
|
+
const currentUserId = input.currentUserId.trim();
|
|
1537
|
+
if (!userId || !currentUserId || userId === "local" || currentUserId === "local") {
|
|
1538
|
+
return "my_sessions";
|
|
1539
|
+
}
|
|
1540
|
+
return userId === currentUserId ? "my_sessions" : "collab_sessions";
|
|
1535
1541
|
}
|
|
1536
1542
|
function dirnameFromProviderWorkspaceFileHref(href) {
|
|
1537
1543
|
const normalized = href.replace(/\/+$/, "");
|
|
@@ -1668,12 +1674,15 @@ function AgentFileMentionPalette({
|
|
|
1668
1674
|
onSelectFilter,
|
|
1669
1675
|
onExpandGroup,
|
|
1670
1676
|
onCycleFilter,
|
|
1671
|
-
onMoveSelection
|
|
1677
|
+
onMoveSelection,
|
|
1678
|
+
onOpenReferences
|
|
1672
1679
|
}) {
|
|
1673
1680
|
"use memo";
|
|
1681
|
+
const openReferencesLabel = translate(
|
|
1682
|
+
"agentHost.agentGui.mentionOpenReferences"
|
|
1683
|
+
);
|
|
1674
1684
|
const filter = state.filter;
|
|
1675
1685
|
const highlightedBrowseCategory = highlightedKey?.startsWith("category:") ? highlightedKey.slice("category:".length) : null;
|
|
1676
|
-
const browseDisplayFilter = isBrowseCategoryId(highlightedBrowseCategory) ? highlightedBrowseCategory : filter;
|
|
1677
1686
|
const showBrowseHint = shouldShowBrowseSearchHint({
|
|
1678
1687
|
browseFilter: filter,
|
|
1679
1688
|
groups: state.groups,
|
|
@@ -1697,7 +1706,7 @@ function AgentFileMentionPalette({
|
|
|
1697
1706
|
)
|
|
1698
1707
|
)
|
|
1699
1708
|
};
|
|
1700
|
-
const emptyLabelForShell = showBrowseHint ? browseHintForFilter(
|
|
1709
|
+
const emptyLabelForShell = showBrowseHint ? browseHintForFilter(filter) : resolveMentionPaletteEmptyLabel({
|
|
1701
1710
|
emptyLabel,
|
|
1702
1711
|
filter,
|
|
1703
1712
|
mode: state.mode,
|
|
@@ -1717,7 +1726,11 @@ function AgentFileMentionPalette({
|
|
|
1717
1726
|
getItemKey: agentMentionItemKey,
|
|
1718
1727
|
renderItem: (item) => renderMentionRow(agentMentionItemToRowItem(item), {
|
|
1719
1728
|
classNames: AGENT_MENTION_ROW_CLASS_NAMES,
|
|
1720
|
-
dataAttributeMode: "agent"
|
|
1729
|
+
dataAttributeMode: "agent",
|
|
1730
|
+
...onOpenReferences && isReferenceableMentionItem(item) ? {
|
|
1731
|
+
onOpenReferences: () => onOpenReferences(item),
|
|
1732
|
+
openReferencesLabel
|
|
1733
|
+
} : {}
|
|
1721
1734
|
}),
|
|
1722
1735
|
labels: {
|
|
1723
1736
|
loading: loadingLabel,
|
|
@@ -1810,6 +1823,15 @@ function resolveMentionPaletteEmptyLabel(input) {
|
|
|
1810
1823
|
if (input.mode === "results" && input.filter === "file" && input.query.trim().length > 0) {
|
|
1811
1824
|
return translate("agentHost.agentGui.mentionNoMatchingFiles");
|
|
1812
1825
|
}
|
|
1826
|
+
if (input.filter === "session") {
|
|
1827
|
+
return agentMentionEmptyGroupLabel("my_sessions", input.query);
|
|
1828
|
+
}
|
|
1829
|
+
if (input.filter === "app") {
|
|
1830
|
+
return agentMentionEmptyGroupLabel("apps", input.query);
|
|
1831
|
+
}
|
|
1832
|
+
if (input.filter === "issue") {
|
|
1833
|
+
return agentMentionEmptyGroupLabel("issues", input.query);
|
|
1834
|
+
}
|
|
1813
1835
|
return input.emptyLabel;
|
|
1814
1836
|
}
|
|
1815
1837
|
function shouldRenderMentionGroupLabel(input) {
|
|
@@ -1864,6 +1886,14 @@ function agentMentionItemToRowItem(item) {
|
|
|
1864
1886
|
iconUrl: item.iconUrl ?? null
|
|
1865
1887
|
};
|
|
1866
1888
|
}
|
|
1889
|
+
if (item.kind === "workspace-app-bundle") {
|
|
1890
|
+
return {
|
|
1891
|
+
kind: "app",
|
|
1892
|
+
name: item.name,
|
|
1893
|
+
description: null,
|
|
1894
|
+
iconUrl: item.iconUrl ?? null
|
|
1895
|
+
};
|
|
1896
|
+
}
|
|
1867
1897
|
if (item.kind === "workspace-app-factory") {
|
|
1868
1898
|
return {
|
|
1869
1899
|
kind: "app-factory",
|
|
@@ -1877,6 +1907,15 @@ function agentMentionItemToRowItem(item) {
|
|
|
1877
1907
|
statusTag: agentIssueStatusTag(item.status)
|
|
1878
1908
|
};
|
|
1879
1909
|
}
|
|
1910
|
+
function isReferenceableMentionItem(item) {
|
|
1911
|
+
if (item.kind === "workspace-issue") {
|
|
1912
|
+
return true;
|
|
1913
|
+
}
|
|
1914
|
+
if (item.kind === "workspace-app") {
|
|
1915
|
+
return item.referencesListSupported === true;
|
|
1916
|
+
}
|
|
1917
|
+
return false;
|
|
1918
|
+
}
|
|
1880
1919
|
function mentionSessionAgentProvider(item) {
|
|
1881
1920
|
const queryStart = item.href.indexOf("?");
|
|
1882
1921
|
if (queryStart < 0) {
|
|
@@ -1938,9 +1977,6 @@ function browseHintForFilter(filter) {
|
|
|
1938
1977
|
return translate("agentHost.agentGui.contextPickerBrowseIssueHint");
|
|
1939
1978
|
}
|
|
1940
1979
|
}
|
|
1941
|
-
function isBrowseCategoryId(value) {
|
|
1942
|
-
return value === "all" || value === "app" || value === "file" || value === "session" || value === "issue";
|
|
1943
|
-
}
|
|
1944
1980
|
function hasInteractiveGroupEntries(groups) {
|
|
1945
1981
|
return groups.some((group) => group.items.length > 0 || group.hasMore);
|
|
1946
1982
|
}
|
|
@@ -1990,4 +2026,4 @@ export {
|
|
|
1990
2026
|
AgentFileMentionPalette,
|
|
1991
2027
|
AgentContextMentionPalette
|
|
1992
2028
|
};
|
|
1993
|
-
//# sourceMappingURL=chunk-
|
|
2029
|
+
//# sourceMappingURL=chunk-SVOGXWFJ.js.map
|