@tutti-os/agent-gui 0.0.114 → 0.0.116

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