@tutti-os/agent-gui 0.0.152 → 0.0.154

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.
Files changed (53) hide show
  1. package/dist/{AgentRichTextReadonly-WVZ65VON.js → AgentRichTextReadonly-J5GZIS7X.js} +5 -5
  2. package/dist/agent-conversation/index.d.ts +1 -1
  3. package/dist/agent-conversation/index.js +7 -7
  4. package/dist/agent-gui.d.ts +49 -2
  5. package/dist/agent-gui.js +15 -15
  6. package/dist/agent-message-center/index.js +6 -6
  7. package/dist/{agentGuiNodeTypes-D3f1yiEL.d.ts → agentGuiNodeTypes-2xRyhPBD.d.ts} +39 -1
  8. package/dist/{chunk-ZVD6KIXC.js → chunk-3VKRWAKQ.js} +4 -4
  9. package/dist/{chunk-XSW565MM.js → chunk-BHB457ZP.js} +2 -2
  10. package/dist/{chunk-VI6H5PTQ.js → chunk-DB3PHOZC.js} +127 -3
  11. package/dist/chunk-DB3PHOZC.js.map +1 -0
  12. package/dist/{chunk-XZUMGJ67.js → chunk-EFEOPMIV.js} +4 -4
  13. package/dist/{chunk-YNF74LPO.js → chunk-EITAGUEN.js} +2 -2
  14. package/dist/{chunk-3IOQ3IOJ.js → chunk-ESJWSRFD.js} +3 -2
  15. package/dist/{chunk-3IOQ3IOJ.js.map → chunk-ESJWSRFD.js.map} +1 -1
  16. package/dist/{chunk-MVXJDVDT.js → chunk-FGAKY5YL.js} +1915 -821
  17. package/dist/chunk-FGAKY5YL.js.map +1 -0
  18. package/dist/{chunk-O2P5ODPK.js → chunk-GBTKLNMX.js} +6 -6
  19. package/dist/{chunk-BCIAEN7N.js → chunk-GTSKTVVB.js} +2 -2
  20. package/dist/{chunk-5HIF53K5.js → chunk-HBJJY2AC.js} +10 -7
  21. package/dist/chunk-HBJJY2AC.js.map +1 -0
  22. package/dist/{chunk-PRFWB2BT.js → chunk-OSOJX2OE.js} +4 -4
  23. package/dist/{chunk-6R2UNGNY.js → chunk-SFRFW3GC.js} +4 -4
  24. package/dist/{chunk-5D7HTLUA.js → chunk-WNGTC3Y2.js} +3 -3
  25. package/dist/{chunk-UMTEWNPP.js → chunk-XYKQJMVT.js} +2 -2
  26. package/dist/{chunk-RD4EDLVU.js → chunk-ZCBP5VTT.js} +2 -2
  27. package/dist/context-mention-palette/index.js +7 -7
  28. package/dist/i18n/index.d.ts +120 -2
  29. package/dist/i18n/index.js +2 -2
  30. package/dist/index.d.ts +830 -626
  31. package/dist/index.js +15 -15
  32. package/dist/index.js.map +1 -1
  33. package/dist/mention-search.js +5 -5
  34. package/dist/workbench/contribution.js +4 -4
  35. package/dist/workbench/index.js +4 -4
  36. package/dist/workbench/sessionTitle.js +2 -2
  37. package/dist/workbench/state.js +1 -1
  38. package/package.json +13 -13
  39. package/dist/chunk-5HIF53K5.js.map +0 -1
  40. package/dist/chunk-MVXJDVDT.js.map +0 -1
  41. package/dist/chunk-VI6H5PTQ.js.map +0 -1
  42. /package/dist/{AgentRichTextReadonly-WVZ65VON.js.map → AgentRichTextReadonly-J5GZIS7X.js.map} +0 -0
  43. /package/dist/{chunk-ZVD6KIXC.js.map → chunk-3VKRWAKQ.js.map} +0 -0
  44. /package/dist/{chunk-XSW565MM.js.map → chunk-BHB457ZP.js.map} +0 -0
  45. /package/dist/{chunk-XZUMGJ67.js.map → chunk-EFEOPMIV.js.map} +0 -0
  46. /package/dist/{chunk-YNF74LPO.js.map → chunk-EITAGUEN.js.map} +0 -0
  47. /package/dist/{chunk-O2P5ODPK.js.map → chunk-GBTKLNMX.js.map} +0 -0
  48. /package/dist/{chunk-BCIAEN7N.js.map → chunk-GTSKTVVB.js.map} +0 -0
  49. /package/dist/{chunk-PRFWB2BT.js.map → chunk-OSOJX2OE.js.map} +0 -0
  50. /package/dist/{chunk-6R2UNGNY.js.map → chunk-SFRFW3GC.js.map} +0 -0
  51. /package/dist/{chunk-5D7HTLUA.js.map → chunk-WNGTC3Y2.js.map} +0 -0
  52. /package/dist/{chunk-UMTEWNPP.js.map → chunk-XYKQJMVT.js.map} +0 -0
  53. /package/dist/{chunk-RD4EDLVU.js.map → chunk-ZCBP5VTT.js.map} +0 -0
@@ -114,10 +114,11 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
114
114
  const nodeStateByKey = /* @__PURE__ */ new Map();
115
115
  const instanceIdByKey = /* @__PURE__ */ new Map();
116
116
  const listeners = /* @__PURE__ */ new Set();
117
+ const workspaceState = { workspaceId: input.workspaceId };
117
118
  const lookupState = (request) => {
118
119
  const nodeState = request.nodeId ? nodeStateByKey.get(agentGuiWorkbenchNodeStateKey(request)) : null;
119
120
  const state = nodeState ?? nodeStateByKey.get(agentGuiWorkbenchInstanceStateKey(request));
120
- return state ? { ...state } : null;
121
+ return state ?? null;
121
122
  };
122
123
  const notify = () => {
123
124
  for (const listener of listeners) {
@@ -139,11 +140,13 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
139
140
  return lookupState(request);
140
141
  },
141
142
  getWorkspaceState() {
142
- return {
143
- workspaceId: input.workspaceId
144
- };
143
+ return workspaceState;
145
144
  },
146
- subscribe(listener) {
145
+ subscribeNodeState(request, listener) {
146
+ if (request.typeId !== typeId) {
147
+ return () => {
148
+ };
149
+ }
147
150
  listeners.add(listener);
148
151
  return () => {
149
152
  listeners.delete(listener);
@@ -184,10 +187,10 @@ function createAgentGuiWorkbenchNodeStateSource(input) {
184
187
  const next = {
185
188
  ...normalizeAgentGuiWorkbenchState(request.state)
186
189
  };
187
- nodeStateByKey.set(key, next);
188
190
  if (!clearedInstanceSeed && previous && areAgentGuiWorkbenchMemoryStatesEqual(previous, next)) {
189
191
  return;
190
192
  }
193
+ nodeStateByKey.set(key, next);
191
194
  notify();
192
195
  }
193
196
  };
@@ -324,4 +327,4 @@ export {
324
327
  areAgentGuiWorkbenchNodeStatesEqual,
325
328
  createAgentGuiWorkbenchNodeStateSource
326
329
  };
327
- //# sourceMappingURL=chunk-5HIF53K5.js.map
330
+ //# sourceMappingURL=chunk-HBJJY2AC.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 const workspaceState = { workspaceId: input.workspaceId };\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 ?? 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 workspaceState;\n },\n subscribeNodeState(request, listener) {\n if (request.typeId !== typeId) {\n return () => {};\n }\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 if (\n !clearedInstanceSeed &&\n previous &&\n areAgentGuiWorkbenchMemoryStatesEqual(previous, next)\n ) {\n return;\n }\n nodeStateByKey.set(key, next);\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":[]}
@@ -3,7 +3,7 @@ import {
3
3
  migrateLegacyAgentGuiWorkbenchState,
4
4
  normalizeAgentGuiWorkbenchNodeState,
5
5
  normalizeAgentGuiWorkbenchState
6
- } from "./chunk-5HIF53K5.js";
6
+ } from "./chunk-HBJJY2AC.js";
7
7
  import {
8
8
  agentGuiWorkbenchDockIdentityFromIdentifier,
9
9
  agentGuiWorkbenchTypeId,
@@ -20,7 +20,7 @@ import {
20
20
  resolveAgentGUIConversationTitleDisplayPrompt,
21
21
  resolveAgentGuiWorkbenchHeaderTitle,
22
22
  resolveAgentGuiWorkbenchSessionTitle
23
- } from "./chunk-XSW565MM.js";
23
+ } from "./chunk-BHB457ZP.js";
24
24
  import {
25
25
  normalizeAgentGUIAgents,
26
26
  projectAgentGUIAgentsToTargets
@@ -396,7 +396,7 @@ function stopPointerPropagation(event) {
396
396
 
397
397
  // workbench/header.ts
398
398
  var LazyAgentRichTextReadonly = lazy(
399
- () => import("./AgentRichTextReadonly-WVZ65VON.js").then((module) => ({
399
+ () => import("./AgentRichTextReadonly-J5GZIS7X.js").then((module) => ({
400
400
  default: module.AgentRichTextReadonly
401
401
  }))
402
402
  );
@@ -1639,4 +1639,4 @@ export {
1639
1639
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
1640
1640
  createAgentGuiWorkbenchContribution
1641
1641
  };
1642
- //# sourceMappingURL=chunk-PRFWB2BT.js.map
1642
+ //# sourceMappingURL=chunk-OSOJX2OE.js.map
@@ -5,7 +5,7 @@ import {
5
5
  agentMentionFilterLabel,
6
6
  agentMentionGroupLabel,
7
7
  mentionGroupExpandCount
8
- } from "./chunk-ZVD6KIXC.js";
8
+ } from "./chunk-3VKRWAKQ.js";
9
9
  import {
10
10
  resolveAgentMentionFileThumbnailUrl,
11
11
  resolveAgentMentionFileVisualKind
@@ -13,13 +13,13 @@ import {
13
13
  import {
14
14
  userAvatarPlaceholderUrl,
15
15
  workspaceAgentActivityStatusLabel
16
- } from "./chunk-BCIAEN7N.js";
16
+ } from "./chunk-GTSKTVVB.js";
17
17
  import {
18
18
  managedAgentRoundedIconUrl
19
19
  } from "./chunk-UTJKC2LY.js";
20
20
  import {
21
21
  translate
22
- } from "./chunk-YNF74LPO.js";
22
+ } from "./chunk-EITAGUEN.js";
23
23
 
24
24
  // agent-gui/agentGuiNode/AgentFileMentionPalette.tsx
25
25
  import {
@@ -517,4 +517,4 @@ export {
517
517
  AgentFileMentionPalette,
518
518
  AgentContextMentionPalette
519
519
  };
520
- //# sourceMappingURL=chunk-6R2UNGNY.js.map
520
+ //# sourceMappingURL=chunk-SFRFW3GC.js.map
@@ -6,14 +6,14 @@ import {
6
6
  import {
7
7
  getOptionalAgentHostApi,
8
8
  useOptionalAgentHostApi
9
- } from "./chunk-3IOQ3IOJ.js";
9
+ } from "./chunk-ESJWSRFD.js";
10
10
  import {
11
11
  managedAgentRoundedIconUrl
12
12
  } from "./chunk-UTJKC2LY.js";
13
13
  import {
14
14
  translate,
15
15
  useTranslation
16
- } from "./chunk-YNF74LPO.js";
16
+ } from "./chunk-EITAGUEN.js";
17
17
  import {
18
18
  resolveAgentWorkspaceFileVisualKind
19
19
  } from "./chunk-PJP5BUU6.js";
@@ -3730,4 +3730,4 @@ export {
3730
3730
  AgentMessageMarkdown,
3731
3731
  CustomScrollArea
3732
3732
  };
3733
- //# sourceMappingURL=chunk-5D7HTLUA.js.map
3733
+ //# sourceMappingURL=chunk-WNGTC3Y2.js.map
@@ -5,7 +5,7 @@ import {
5
5
  formatAgentMentionMarkdown,
6
6
  mentionItemToAttrs,
7
7
  parseAgentMentionMarkdown
8
- } from "./chunk-RD4EDLVU.js";
8
+ } from "./chunk-ZCBP5VTT.js";
9
9
  import {
10
10
  cn,
11
11
  resolveAgentTargetPresentation,
@@ -753,4 +753,4 @@ export {
753
753
  agentRichTextContentToPromptText,
754
754
  AgentRichTextReadonly
755
755
  };
756
- //# sourceMappingURL=chunk-UMTEWNPP.js.map
756
+ //# sourceMappingURL=chunk-XYKQJMVT.js.map
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  translate,
13
13
  useTranslation
14
- } from "./chunk-YNF74LPO.js";
14
+ } from "./chunk-EITAGUEN.js";
15
15
  import {
16
16
  getAgentCustomMentionKind
17
17
  } from "./chunk-D2JUDUYY.js";
@@ -1810,4 +1810,4 @@ export {
1810
1810
  exitAgentFileMentionSuggestion,
1811
1811
  createAgentFileMentionExtension
1812
1812
  };
1813
- //# sourceMappingURL=chunk-RD4EDLVU.js.map
1813
+ //# sourceMappingURL=chunk-ZCBP5VTT.js.map
@@ -3,28 +3,28 @@ import {
3
3
  AgentFileMentionPalette,
4
4
  flattenAgentMentionPaletteEntries,
5
5
  groupStartKeys
6
- } from "../chunk-6R2UNGNY.js";
6
+ } from "../chunk-SFRFW3GC.js";
7
7
  import {
8
8
  AgentMentionSearchController
9
- } from "../chunk-ZVD6KIXC.js";
9
+ } from "../chunk-3VKRWAKQ.js";
10
10
  import "../chunk-VMPA46ET.js";
11
11
  import "../chunk-XJ34OIEQ.js";
12
12
  import "../chunk-JDVP33S5.js";
13
- import "../chunk-RD4EDLVU.js";
13
+ import "../chunk-ZCBP5VTT.js";
14
14
  import "../chunk-5QPOMKMQ.js";
15
15
  import {
16
16
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
17
17
  } from "../chunk-RMQREVJY.js";
18
18
  import "../chunk-FGLQZ6I4.js";
19
- import "../chunk-BCIAEN7N.js";
19
+ import "../chunk-GTSKTVVB.js";
20
20
  import "../chunk-YMXYBG7U.js";
21
- import "../chunk-3IOQ3IOJ.js";
21
+ import "../chunk-ESJWSRFD.js";
22
22
  import "../chunk-F5UR6EJG.js";
23
23
  import "../chunk-UTJKC2LY.js";
24
- import "../chunk-YNF74LPO.js";
24
+ import "../chunk-EITAGUEN.js";
25
25
  import "../chunk-PJP5BUU6.js";
26
26
  import "../chunk-7KVZPJ3O.js";
27
- import "../chunk-VI6H5PTQ.js";
27
+ import "../chunk-DB3PHOZC.js";
28
28
  import "../chunk-MIJXEELH.js";
29
29
  import "../chunk-D2JUDUYY.js";
30
30
  import "../chunk-QMMWKQOT.js";
@@ -376,6 +376,65 @@ declare const agentGuiI18nResources: {
376
376
  readonly mentionPalette: "Mention context";
377
377
  readonly addReference: "Add reference";
378
378
  readonly addContent: "Add files and more";
379
+ readonly quickPrompts: {
380
+ readonly add: "New prompt";
381
+ readonly conflict: "This prompt changed in another window. Refresh it and review your draft before saving again.";
382
+ readonly contentLabel: "Prompt";
383
+ readonly contentPlaceholder: "Write the reusable prompt text";
384
+ readonly contentTooLarge: "Prompt text must be 32 KiB or less";
385
+ readonly createTitle: "New quick prompt";
386
+ readonly createFromTemplate: "Create from a recommended template";
387
+ readonly delete: "Delete";
388
+ readonly deleteConfirm: "Delete prompt";
389
+ readonly deleteDescription: "Delete \"{{title}}\"? This cannot be undone.";
390
+ readonly deleteTitle: "Delete quick prompt?";
391
+ readonly deleting: "Deleting…";
392
+ readonly edit: "Edit";
393
+ readonly editTitle: "Edit quick prompt";
394
+ readonly empty: "No quick prompts yet";
395
+ readonly loadError: "Quick prompts could not be loaded";
396
+ readonly loading: "Loading quick prompts…";
397
+ readonly moreActions: "More prompt actions";
398
+ readonly mutationError: "The prompt could not be saved. Try again.";
399
+ readonly noResults: "No matching quick prompts";
400
+ readonly required: "Title and prompt text are required";
401
+ readonly retry: "Try again";
402
+ readonly recommendedTemplates: {
403
+ readonly understandContext: {
404
+ readonly title: "Understand the situation";
405
+ readonly description: "Summarize context, constraints, risks, and next steps";
406
+ readonly content: "First summarize the current context, confirmed facts, constraints, risks, and open questions. Separate facts from assumptions, then recommend the smallest useful next step.";
407
+ };
408
+ readonly createActionPlan: {
409
+ readonly title: "Create an action plan";
410
+ readonly description: "Break a goal into prioritized, verifiable steps";
411
+ readonly content: "Break this goal into prioritized, verifiable steps. Identify dependencies, risks, and acceptance criteria for each step, then recommend the best place to begin.";
412
+ };
413
+ readonly reviewAndImprove: {
414
+ readonly title: "Review and improve";
415
+ readonly description: "Find gaps, risks, and practical improvements";
416
+ readonly content: "Review the following work. Identify what is good, what is missing, the important risks, and practical improvements. Prioritize the recommendations by impact and effort.";
417
+ };
418
+ readonly draftClearUpdate: {
419
+ readonly title: "Draft a clear update";
420
+ readonly description: "Write a concise explanation for the intended audience";
421
+ readonly content: "Draft a concise update for the intended audience. State the key message first, include only the necessary context, make the requested decision or next action explicit, and use clear language.";
422
+ };
423
+ };
424
+ readonly recommendedTemplatesDescription: "Choose one to prefill the editor. It will not be saved or sent until you choose Save.";
425
+ readonly recommendedTemplatesTitle: "Recommended templates";
426
+ readonly returnToPrompts: "My prompts";
427
+ readonly save: "Save";
428
+ readonly saving: "Saving…";
429
+ readonly searchPlaceholder: "Search quick prompts";
430
+ readonly title: "Quick prompts";
431
+ readonly titleLabel: "Title";
432
+ readonly titlePlaceholder: "Give this prompt a short name";
433
+ readonly titleTooLong: "Title must be 80 characters or less";
434
+ readonly trigger: "Prompts";
435
+ readonly triggerTooltip: "Choose a quick prompt";
436
+ readonly useTemplate: "Use template";
437
+ };
379
438
  readonly referenceWorkspaceFiles: "Reference workspace files";
380
439
  readonly referencePicker: {
381
440
  readonly clearFilter: "Clear filter";
@@ -762,7 +821,7 @@ declare const agentGuiI18nResources: {
762
821
  readonly providerGatePendingLogin: "Opening sign in…";
763
822
  readonly providerGatePendingRefresh: "Checking…";
764
823
  readonly targetSetupTitle: "Set up {{provider}}";
765
- readonly targetSetupDescription: "Use a compatible local runtime, or let Tutti install the pinned runtime.";
824
+ readonly targetSetupDescription: "Use a compatible local runtime, or let Tutti install and verify the pinned runtime.";
766
825
  readonly targetSetupAuthRequired: "Runtime is installed and responds over ACP, but authentication is required.";
767
826
  readonly targetSetupReady: "Runtime detected. You can check it again or sign in again.";
768
827
  readonly targetSetupOpen: "Open setup";
@@ -2981,6 +3040,65 @@ declare const agentGuiI18nResources: {
2981
3040
  readonly mentionPalette: "提及上下文";
2982
3041
  readonly addReference: "添加引用";
2983
3042
  readonly addContent: "添加文件等内容";
3043
+ readonly quickPrompts: {
3044
+ readonly add: "新增提示词";
3045
+ readonly conflict: "该提示词已在其他窗口发生变化,请刷新后检查草稿再保存";
3046
+ readonly contentLabel: "提示词";
3047
+ readonly contentPlaceholder: "输入可重复使用的提示词内容";
3048
+ readonly contentTooLarge: "提示词内容不能超过 32 KiB";
3049
+ readonly createTitle: "新增快捷提示词";
3050
+ readonly createFromTemplate: "从推荐模板创建";
3051
+ readonly delete: "删除";
3052
+ readonly deleteConfirm: "删除提示词";
3053
+ readonly deleteDescription: "确定删除「{{title}}」吗?删除后无法恢复";
3054
+ readonly deleteTitle: "删除快捷提示词?";
3055
+ readonly deleting: "正在删除…";
3056
+ readonly edit: "编辑";
3057
+ readonly editTitle: "编辑快捷提示词";
3058
+ readonly empty: "暂无快捷提示词";
3059
+ readonly loadError: "快捷提示词加载失败";
3060
+ readonly loading: "正在加载快捷提示词…";
3061
+ readonly moreActions: "更多提示词操作";
3062
+ readonly mutationError: "提示词保存失败,请重试";
3063
+ readonly noResults: "没有匹配的快捷提示词";
3064
+ readonly required: "标题和提示词内容不能为空";
3065
+ readonly retry: "重试";
3066
+ readonly recommendedTemplates: {
3067
+ readonly understandContext: {
3068
+ readonly title: "梳理现状";
3069
+ readonly description: "总结上下文、约束、风险与下一步";
3070
+ readonly content: "请先总结当前上下文、已确认的事实、约束、风险和待确认问题,区分事实与假设,再给出最小且有价值的下一步建议";
3071
+ };
3072
+ readonly createActionPlan: {
3073
+ readonly title: "制定行动计划";
3074
+ readonly description: "拆分优先级、依赖与验收标准";
3075
+ readonly content: "请把这个目标拆成按优先级排序且可验证的步骤,列出每一步的依赖、风险和验收标准,并建议从哪里开始";
3076
+ };
3077
+ readonly reviewAndImprove: {
3078
+ readonly title: "审阅与改进";
3079
+ readonly description: "找出缺口、风险和可执行的优化建议";
3080
+ readonly content: "请审阅以下内容,说明做得好的部分、缺失的信息、重要风险和可执行的改进建议,并按影响与投入排序";
3081
+ };
3082
+ readonly draftClearUpdate: {
3083
+ readonly title: "生成清晰说明";
3084
+ readonly description: "面向目标受众生成简洁表达";
3085
+ readonly content: "请为目标受众生成一段简洁说明,先表达核心信息,只补充必要上下文,明确需要对方做出的决策或下一步行动,并使用清晰直接的语言";
3086
+ };
3087
+ };
3088
+ readonly recommendedTemplatesDescription: "选择后会预填到编辑窗口,保存前不会创建或发送提示词";
3089
+ readonly recommendedTemplatesTitle: "推荐模板";
3090
+ readonly returnToPrompts: "我的提示词";
3091
+ readonly save: "保存";
3092
+ readonly saving: "正在保存…";
3093
+ readonly searchPlaceholder: "搜索快捷提示词";
3094
+ readonly title: "快捷提示词";
3095
+ readonly titleLabel: "标题";
3096
+ readonly titlePlaceholder: "输入简短易识别的名称";
3097
+ readonly titleTooLong: "标题不能超过 80 个字符";
3098
+ readonly trigger: "提示词";
3099
+ readonly triggerTooltip: "选择快捷提示词";
3100
+ readonly useTemplate: "使用模板";
3101
+ };
2984
3102
  readonly referenceWorkspaceFiles: "引用空间文件";
2985
3103
  readonly referencePicker: {
2986
3104
  readonly clearFilter: "清除筛选";
@@ -3367,7 +3485,7 @@ declare const agentGuiI18nResources: {
3367
3485
  readonly providerGatePendingLogin: "正在打开登录…";
3368
3486
  readonly providerGatePendingRefresh: "正在检测…";
3369
3487
  readonly targetSetupTitle: "设置 {{provider}}";
3370
- readonly targetSetupDescription: "优先使用兼容的本地运行时,也可由 Tutti 安装固定版本";
3488
+ readonly targetSetupDescription: "优先使用兼容的本地运行时,也可由 Tutti 安装并验证固定版本";
3371
3489
  readonly targetSetupAuthRequired: "运行时已安装并通过 ACP 检测,但仍需完成登录";
3372
3490
  readonly targetSetupReady: "已检测到运行时,可重新检测或重新登录";
3373
3491
  readonly targetSetupOpen: "打开设置";
@@ -6,8 +6,8 @@ import {
6
6
  translate,
7
7
  translateInUiLanguage,
8
8
  useTranslation
9
- } from "../chunk-YNF74LPO.js";
10
- import "../chunk-VI6H5PTQ.js";
9
+ } from "../chunk-EITAGUEN.js";
10
+ import "../chunk-DB3PHOZC.js";
11
11
  export {
12
12
  AgentGuiI18nProvider,
13
13
  agentGuiI18nModule,