@tutti-os/agent-gui 0.0.65 → 0.0.67
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/LICENSE +1 -2
- package/README.md +1 -1
- package/dist/agent-conversation/index.d.ts +2 -2
- package/dist/agent-conversation/index.js +8 -8
- package/dist/agent-message-center/index.js +10 -10
- package/dist/{agentGuiNodeTypes-CCjzXdTe.d.ts → agentGuiNodeTypes-DNXndXhV.d.ts} +3 -1
- package/dist/app/renderer/agentactivity.css +109 -0
- package/dist/app/renderer/assets/icons/agents/tutti-flat-filled.svg +12 -0
- package/dist/{chunk-N4I3TD4G.js → chunk-BX4UBTOI.js} +70 -2
- package/dist/chunk-BX4UBTOI.js.map +1 -0
- package/dist/{chunk-IDTB6OID.js → chunk-CTYXJGSW.js} +50 -12
- package/dist/chunk-CTYXJGSW.js.map +1 -0
- package/dist/{chunk-P5C3ED3V.js → chunk-DP2X4J2D.js} +3 -3
- package/dist/{chunk-LJE2W4EM.js → chunk-DQTBWOIK.js} +27 -4
- package/dist/chunk-DQTBWOIK.js.map +1 -0
- package/dist/chunk-IL2ORY23.js +193 -0
- package/dist/chunk-IL2ORY23.js.map +1 -0
- package/dist/{chunk-XZPAU7FC.js → chunk-JGU2VMDA.js} +3 -3
- package/dist/{chunk-DL6BMEHI.js → chunk-JWWHS34V.js} +3 -3
- package/dist/{chunk-UWBX3DZK.js → chunk-KS4ULVGM.js} +2 -2
- package/dist/{chunk-XLBJHHDX.js → chunk-MA254MXR.js} +51 -7
- package/dist/chunk-MA254MXR.js.map +1 -0
- package/dist/{chunk-TG3ZXLPM.js → chunk-MYD37I32.js} +27 -3
- package/dist/chunk-MYD37I32.js.map +1 -0
- package/dist/{chunk-2IMBPRKV.js → chunk-NCAVJEHI.js} +1 -1
- package/dist/chunk-NCAVJEHI.js.map +1 -0
- package/dist/{chunk-R2NGSPQS.js → chunk-OEJQJP65.js} +3 -1
- package/dist/{chunk-R2NGSPQS.js.map → chunk-OEJQJP65.js.map} +1 -1
- package/dist/{chunk-6OYLLPPN.js → chunk-PFKY5W76.js} +17 -13
- package/dist/chunk-PFKY5W76.js.map +1 -0
- package/dist/{chunk-N7BGNAA2.js → chunk-QZYGCZNQ.js} +7 -9
- package/dist/chunk-QZYGCZNQ.js.map +1 -0
- package/dist/{chunk-CKCUEHBW.js → chunk-RNFP7CUO.js} +9 -8
- package/dist/chunk-RNFP7CUO.js.map +1 -0
- package/dist/{chunk-UI3YDJTC.js → chunk-SKWDZTEV.js} +6 -4
- package/dist/chunk-SKWDZTEV.js.map +1 -0
- package/dist/{chunk-LQHYHF36.js → chunk-UAXKJNM2.js} +14 -7
- package/dist/chunk-UAXKJNM2.js.map +1 -0
- package/dist/{chunk-HKKC2U6J.js → chunk-VIJQ5C33.js} +6 -6
- package/dist/{chunk-HKKC2U6J.js.map → chunk-VIJQ5C33.js.map} +1 -1
- package/dist/{chunk-EIPQGFAE.js → chunk-XBR7D7X2.js} +2 -2
- package/dist/{chunk-R7PSPKBD.js → chunk-YU3XLPLC.js} +2 -6
- package/dist/chunk-YU3XLPLC.js.map +1 -0
- package/dist/{chunk-QULZNKPA.js → chunk-YYAP6IK7.js} +4 -166
- package/dist/chunk-YYAP6IK7.js.map +1 -0
- package/dist/{chunk-W3Q7B3DV.js → chunk-ZABN3POD.js} +6 -2
- package/dist/chunk-ZABN3POD.js.map +1 -0
- package/dist/context-mention-palette/index.js +9 -9
- package/dist/cursor-flat-filled-CL7N3BTZ.svg +3 -0
- package/dist/i18n/index.d.ts +50 -6
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +63 -6
- package/dist/index.js +1654 -1395
- package/dist/index.js.map +1 -1
- package/dist/queued-prompt-runtime.d.ts +22 -3
- package/dist/queued-prompt-runtime.js +1 -1
- package/dist/tutti-flat-filled-K32QBTZE.svg +12 -0
- package/dist/{types-BAPEle8b.d.ts → types-BxOwnK7K.d.ts} +17 -4
- package/dist/workbench/contribution.d.ts +1 -1
- package/dist/workbench/contribution.js +8 -8
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.js +11 -11
- package/dist/workbench/launch.d.ts +1 -1
- package/dist/workbench/launch.js +3 -3
- package/dist/workbench/providerCatalog.d.ts +4 -4
- package/dist/workbench/providerCatalog.js +1 -1
- package/dist/workbench/sessionTitle.d.ts +1 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.d.ts +1 -1
- package/dist/workbench/state.js +3 -3
- package/dist/workbench/types.d.ts +2 -2
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +4 -4
- package/package.json +12 -12
- package/dist/app/renderer/assets/icons/@-lined-14px.svg +0 -3
- package/dist/app/renderer/assets/icons/agents/manage-agent-claude-code.png +0 -0
- package/dist/app/renderer/assets/icons/agents/manage-agent-codex.png +0 -0
- package/dist/app/renderer/assets/icons/agents/manage-agent-gemini.png +0 -0
- package/dist/app/renderer/assets/icons/agents/manage-agent-hermes.png +0 -0
- package/dist/app/renderer/assets/icons/agents/manage-agent-openclaw.png +0 -0
- package/dist/app/renderer/assets/icons/agents/tutti-doc-rounded.png +0 -0
- package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-claude-code.png +0 -0
- package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-codex.png +0 -0
- package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-gemini.png +0 -0
- package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-nexight.png +0 -0
- package/dist/app/renderer/assets/icons/agents/workspace-dock-agent-openclaw.png +0 -0
- package/dist/app/renderer/assets/icons/arrow-left-filled.svg +0 -1
- package/dist/chunk-2IMBPRKV.js.map +0 -1
- package/dist/chunk-6OYLLPPN.js.map +0 -1
- package/dist/chunk-CKCUEHBW.js.map +0 -1
- package/dist/chunk-IDTB6OID.js.map +0 -1
- package/dist/chunk-LJE2W4EM.js.map +0 -1
- package/dist/chunk-LQHYHF36.js.map +0 -1
- package/dist/chunk-N4I3TD4G.js.map +0 -1
- package/dist/chunk-N7BGNAA2.js.map +0 -1
- package/dist/chunk-QULZNKPA.js.map +0 -1
- package/dist/chunk-R7PSPKBD.js.map +0 -1
- package/dist/chunk-TG3ZXLPM.js.map +0 -1
- package/dist/chunk-TYGL25EL.js +0 -30
- package/dist/chunk-TYGL25EL.js.map +0 -1
- package/dist/chunk-UI3YDJTC.js.map +0 -1
- package/dist/chunk-W3Q7B3DV.js.map +0 -1
- package/dist/chunk-XLBJHHDX.js.map +0 -1
- /package/dist/{chunk-P5C3ED3V.js.map → chunk-DP2X4J2D.js.map} +0 -0
- /package/dist/{chunk-XZPAU7FC.js.map → chunk-JGU2VMDA.js.map} +0 -0
- /package/dist/{chunk-DL6BMEHI.js.map → chunk-JWWHS34V.js.map} +0 -0
- /package/dist/{chunk-UWBX3DZK.js.map → chunk-KS4ULVGM.js.map} +0 -0
- /package/dist/{chunk-EIPQGFAE.js.map → chunk-XBR7D7X2.js.map} +0 -0
|
@@ -7,8 +7,9 @@ import {
|
|
|
7
7
|
manageAgentClaudeCodeUrl,
|
|
8
8
|
manageAgentTuttiUrl,
|
|
9
9
|
normalizeManagedAgentProvider,
|
|
10
|
-
openclawRoundedUrl
|
|
11
|
-
|
|
10
|
+
openclawRoundedUrl,
|
|
11
|
+
tuttiAgentRoundedUrl
|
|
12
|
+
} from "./chunk-OEJQJP65.js";
|
|
12
13
|
|
|
13
14
|
// app/renderer/assets/icons/agents/claudecode-flat-filled.svg
|
|
14
15
|
var claudecode_flat_filled_default = "./claudecode-flat-filled-NHO4JCVK.svg";
|
|
@@ -16,6 +17,12 @@ var claudecode_flat_filled_default = "./claudecode-flat-filled-NHO4JCVK.svg";
|
|
|
16
17
|
// app/renderer/assets/icons/agents/codex-flat-filled.svg
|
|
17
18
|
var codex_flat_filled_default = "./codex-flat-filled-WYHCF5VR.svg";
|
|
18
19
|
|
|
20
|
+
// app/renderer/assets/icons/agents/cursor-flat-filled.svg
|
|
21
|
+
var cursor_flat_filled_default = "./cursor-flat-filled-CL7N3BTZ.svg";
|
|
22
|
+
|
|
23
|
+
// app/renderer/assets/icons/agents/tutti-flat-filled.svg
|
|
24
|
+
var tutti_flat_filled_default = "./tutti-flat-filled-K32QBTZE.svg";
|
|
25
|
+
|
|
19
26
|
// agentGuiSessionProviderIconUrls.ts
|
|
20
27
|
function resolveAgentGuiSessionProviderIconUrl(provider) {
|
|
21
28
|
switch (normalizeManagedAgentProvider(provider)) {
|
|
@@ -29,6 +36,20 @@ function resolveAgentGuiSessionProviderIconUrl(provider) {
|
|
|
29
36
|
return null;
|
|
30
37
|
}
|
|
31
38
|
}
|
|
39
|
+
function resolveAgentGuiSessionProviderFlatIconUrl(provider) {
|
|
40
|
+
switch (normalizeManagedAgentProvider(provider)) {
|
|
41
|
+
case "claude-code":
|
|
42
|
+
return claudecode_flat_filled_default;
|
|
43
|
+
case "codex":
|
|
44
|
+
return codex_flat_filled_default;
|
|
45
|
+
case "cursor":
|
|
46
|
+
return cursor_flat_filled_default;
|
|
47
|
+
case "tutti":
|
|
48
|
+
return tutti_flat_filled_default;
|
|
49
|
+
default:
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
32
53
|
|
|
33
54
|
// agent-gui/agentGuiNode/model/agentGuiRailLayout.ts
|
|
34
55
|
function clamp(value, min, max) {
|
|
@@ -119,11 +140,13 @@ var agentGuiDockIconUrls = {
|
|
|
119
140
|
gemini: geminiRoundedUrl,
|
|
120
141
|
hermes: hermesRoundedUrl,
|
|
121
142
|
nexight: manageAgentTuttiUrl,
|
|
122
|
-
openclaw: openclawRoundedUrl
|
|
143
|
+
openclaw: openclawRoundedUrl,
|
|
144
|
+
"tutti-agent": tuttiAgentRoundedUrl
|
|
123
145
|
};
|
|
124
146
|
|
|
125
147
|
export {
|
|
126
148
|
resolveAgentGuiSessionProviderIconUrl,
|
|
149
|
+
resolveAgentGuiSessionProviderFlatIconUrl,
|
|
127
150
|
AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,
|
|
128
151
|
AGENT_GUI_DETAIL_MIN_WIDTH_PX,
|
|
129
152
|
AGENT_GUI_COLLAPSED_MIN_WIDTH_PX,
|
|
@@ -135,4 +158,4 @@ export {
|
|
|
135
158
|
agentGuiDockIconUrl,
|
|
136
159
|
agentGuiDockIconUrls
|
|
137
160
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-DQTBWOIK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../agentGuiSessionProviderIconUrls.ts","../agent-gui/agentGuiNode/model/agentGuiRailLayout.ts","../dockIcons.ts"],"sourcesContent":["import claudeCodeFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/claudecode-flat-filled.svg\";\nimport codexFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/codex-flat-filled.svg\";\nimport cursorFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/cursor-flat-filled.svg\";\nimport tuttiFlatFilledIconUrl from \"./app/renderer/assets/icons/agents/tutti-flat-filled.svg\";\nimport { cursorColorfulUrl } from \"./managedAgentIconAssets\";\nimport { normalizeManagedAgentProvider } from \"./shared/managedAgentProviders\";\n\nexport {\n claudeCodeFlatFilledIconUrl,\n codexFlatFilledIconUrl,\n cursorColorfulUrl,\n cursorFlatFilledIconUrl,\n tuttiFlatFilledIconUrl\n};\n\n/**\n * Colorful session icons, used where the icon renders as a real <img> avatar\n * (collapsed workbench header, dock popup). Colorful assets keep their fill.\n */\nexport function resolveAgentGuiSessionProviderIconUrl(\n provider: string | undefined\n): string | null {\n switch (normalizeManagedAgentProvider(provider)) {\n case \"claude-code\":\n return claudeCodeFlatFilledIconUrl;\n case \"codex\":\n return codexFlatFilledIconUrl;\n case \"cursor\":\n return cursorColorfulUrl;\n default:\n return null;\n }\n}\n\n/**\n * Flat monochrome session icons, used where the icon renders through a CSS\n * mask (e.g. the conversation rail rows). Colorful assets would collapse to a\n * solid square under a mask, so these must be single-color glyphs with a\n * transparent background.\n */\nexport function resolveAgentGuiSessionProviderFlatIconUrl(\n provider: string | undefined\n): string | null {\n switch (normalizeManagedAgentProvider(provider)) {\n case \"claude-code\":\n return claudeCodeFlatFilledIconUrl;\n case \"codex\":\n return codexFlatFilledIconUrl;\n case \"cursor\":\n return cursorFlatFilledIconUrl;\n case \"tutti\":\n return tuttiFlatFilledIconUrl;\n default:\n return null;\n }\n}\n","function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n// Keep aligned with the issue manager task-list rail dimensions.\nexport const AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX = 280;\nexport const AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX = 248;\nexport const AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX = 520;\nexport const AGENT_GUI_DETAIL_MIN_WIDTH_PX = 220;\nexport const AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX = 10;\nexport const AGENT_GUI_COLLAPSED_MIN_WIDTH_PX = 460;\nexport const AGENT_GUI_EXPANDED_MIN_WIDTH_PX =\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\nexport const AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX = 610;\nexport const AGENT_GUI_EXPANDED_TARGET_WIDTH_PX = 800;\n\nexport interface AgentGUIExpandedWindowFrameInput {\n position: { x: number; y: number };\n width: number;\n height: number;\n desktopSize: { width: number; height: number };\n conversationRailWidthPx: number | null | undefined;\n}\n\nexport function shouldAutoCollapseAgentGUIConversationRail(\n containerWidthPx: number\n): boolean {\n return (\n Number.isFinite(containerWidthPx) &&\n containerWidthPx > 0 &&\n containerWidthPx <= AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX\n );\n}\n\nexport function resolveAgentGUIConversationRailMaxWidthPx(\n containerWidthPx: number\n): number {\n const safeContainerWidth =\n Number.isFinite(containerWidthPx) && containerWidthPx > 0\n ? containerWidthPx\n : AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\n\n return Math.max(\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n Math.min(\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX,\n safeContainerWidth -\n AGENT_GUI_DETAIL_MIN_WIDTH_PX -\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n )\n );\n}\n\nexport function clampAgentGUIConversationRailWidthPx(\n widthPx: number | null | undefined,\n containerWidthPx: number\n): number {\n const preferredWidthPx =\n typeof widthPx === \"number\" && Number.isFinite(widthPx)\n ? Math.round(widthPx)\n : null;\n\n return clamp(\n preferredWidthPx ?? AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX,\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n resolveAgentGUIConversationRailMaxWidthPx(containerWidthPx)\n );\n}\n\nexport function resolveNextAgentGUIConversationRailWidthPx(input: {\n currentWidthPx: number | null | undefined;\n requestedWidthPx: number;\n containerWidthPx: number;\n}): number | null {\n const nextWidthPx = clampAgentGUIConversationRailWidthPx(\n input.requestedWidthPx,\n input.containerWidthPx\n );\n if (input.currentWidthPx === nextWidthPx) {\n return input.currentWidthPx;\n }\n\n if (input.currentWidthPx === null || input.currentWidthPx === undefined) {\n const defaultWidthPx = clampAgentGUIConversationRailWidthPx(\n null,\n input.containerWidthPx\n );\n if (nextWidthPx === defaultWidthPx) {\n return null;\n }\n }\n\n return nextWidthPx;\n}\n\nexport function resolveAgentGUIExpandedWindowFrame(\n input: AgentGUIExpandedWindowFrameInput\n): {\n position: { x: number; y: number };\n size: { width: number; height: number };\n} {\n const desiredRailWidthPx = clampAgentGUIConversationRailWidthPx(\n input.conversationRailWidthPx,\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n );\n const desiredWidthPx = Math.max(\n Math.round(input.width),\n desiredRailWidthPx +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX,\n AGENT_GUI_EXPANDED_MIN_WIDTH_PX,\n AGENT_GUI_EXPANDED_TARGET_WIDTH_PX\n );\n const desktopWidthPx =\n Number.isFinite(input.desktopSize.width) && input.desktopSize.width > 0\n ? Math.round(input.desktopSize.width)\n : desiredWidthPx;\n const nextWidthPx = Math.min(desiredWidthPx, desktopWidthPx);\n const maxX = Math.max(0, desktopWidthPx - nextWidthPx);\n const nextX = clamp(Math.round(input.position.x), 0, maxX);\n\n return {\n position: {\n x: nextX,\n y: input.position.y\n },\n size: {\n width: nextWidthPx,\n height: input.height\n }\n };\n}\n","import {\n codexRoundedUrl,\n cursorRoundedUrl,\n geminiRoundedUrl,\n hermesRoundedUrl,\n manageAgentClaudeCodeUrl,\n manageAgentTuttiUrl,\n openclawRoundedUrl,\n tuttiAgentRoundedUrl\n} from \"./managedAgentIconAssets.ts\";\n\nexport const agentGuiDockIconUrl = codexRoundedUrl;\n\nexport const agentGuiDockIconUrls = {\n \"claude-code\": manageAgentClaudeCodeUrl,\n codex: codexRoundedUrl,\n cursor: cursorRoundedUrl,\n gemini: geminiRoundedUrl,\n hermes: hermesRoundedUrl,\n nexight: manageAgentTuttiUrl,\n openclaw: openclawRoundedUrl,\n \"tutti-agent\": tuttiAgentRoundedUrl\n} as const;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// shared/workspaceAgentProviderLabel.ts
|
|
2
|
+
function workspaceAgentProviderLabel(provider) {
|
|
3
|
+
const normalized = provider.trim().toLowerCase();
|
|
4
|
+
switch (normalized) {
|
|
5
|
+
case "codex":
|
|
6
|
+
return "Codex";
|
|
7
|
+
case "claude-code":
|
|
8
|
+
return "Claude Code";
|
|
9
|
+
case "gemini":
|
|
10
|
+
return "Gemini";
|
|
11
|
+
case "openclaw":
|
|
12
|
+
return "OpenClaw";
|
|
13
|
+
case "hermes":
|
|
14
|
+
return "Hermes";
|
|
15
|
+
case "nexight":
|
|
16
|
+
return "Nexight";
|
|
17
|
+
case "unknown":
|
|
18
|
+
return "Unknown";
|
|
19
|
+
default:
|
|
20
|
+
return titleCase(provider);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function titleCase(value) {
|
|
24
|
+
return value.split(/[-_\s]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// shared/workspaceAgentActivityTypes.ts
|
|
28
|
+
import {
|
|
29
|
+
mergeAgentActivityMessages
|
|
30
|
+
} from "@tutti-os/agent-activity-core";
|
|
31
|
+
var WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN = "WORKSPACE_AGENT_SESSION_ORIGIN_RUNTIME";
|
|
32
|
+
function isWorkspaceAgentActivityRuntimeSessionOrigin(sessionOrigin) {
|
|
33
|
+
const normalized = sessionOrigin?.trim() ?? "";
|
|
34
|
+
return normalized === "" || normalized === WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN;
|
|
35
|
+
}
|
|
36
|
+
function createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(clientSubmitId) {
|
|
37
|
+
const normalized = clientSubmitId.trim();
|
|
38
|
+
return normalized ? `client-submit:user:${normalized}` : null;
|
|
39
|
+
}
|
|
40
|
+
function isWorkspaceAgentActivityOptimisticMessage(message) {
|
|
41
|
+
return message.payload?.__agentGuiOptimisticPrompt === true;
|
|
42
|
+
}
|
|
43
|
+
function selectWorkspaceAgentActivityOverlayMessages(input) {
|
|
44
|
+
const durableMessages = input.durableMessages ?? [];
|
|
45
|
+
const localMessages = input.localMessages ?? [];
|
|
46
|
+
if (localMessages.length === 0) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
const durableIdentities = new Set(
|
|
50
|
+
durableMessages.map(workspaceAgentActivityMessageIdentity).filter((identity) => identity !== null)
|
|
51
|
+
);
|
|
52
|
+
const durableClientSubmitIds = new Set(
|
|
53
|
+
durableMessages.map(workspaceAgentActivityClientSubmitId).filter(
|
|
54
|
+
(clientSubmitId) => clientSubmitId !== null
|
|
55
|
+
)
|
|
56
|
+
);
|
|
57
|
+
const durableUserPromptSignatures = new Set(
|
|
58
|
+
durableMessages.map(workspaceAgentActivityUserPromptSignature).filter((signature) => signature !== null)
|
|
59
|
+
);
|
|
60
|
+
return localMessages.filter((message) => {
|
|
61
|
+
const identity = workspaceAgentActivityMessageIdentity(message);
|
|
62
|
+
if (identity !== null && durableIdentities.has(identity)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (isWorkspaceAgentActivityOptimisticMessage(message)) {
|
|
66
|
+
const clientSubmitId = workspaceAgentActivityClientSubmitId(message);
|
|
67
|
+
if (clientSubmitId !== null && durableClientSubmitIds.has(clientSubmitId)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (clientSubmitId !== null) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
const signature = workspaceAgentActivityUserPromptSignature(message);
|
|
74
|
+
return signature === null || !durableUserPromptSignatures.has(signature);
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input) {
|
|
80
|
+
const durableMessages = input.durableMessages ?? [];
|
|
81
|
+
const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);
|
|
82
|
+
if (overlayMessages.length === 0) {
|
|
83
|
+
return [...durableMessages];
|
|
84
|
+
}
|
|
85
|
+
const overlayDurableMessages = overlayMessages.filter(
|
|
86
|
+
(message) => !isWorkspaceAgentActivityOptimisticMessage(message)
|
|
87
|
+
);
|
|
88
|
+
const optimisticMessages = overlayMessages.filter(isWorkspaceAgentActivityOptimisticMessage).slice().sort(
|
|
89
|
+
(left, right) => left.occurredAtUnixMs - right.occurredAtUnixMs || left.messageId.localeCompare(right.messageId)
|
|
90
|
+
);
|
|
91
|
+
const merged = overlayDurableMessages.length === 0 ? [...durableMessages] : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);
|
|
92
|
+
return optimisticMessages.length === 0 ? merged : [...merged, ...optimisticMessages];
|
|
93
|
+
}
|
|
94
|
+
function workspaceAgentActivityMessageIdentity(message) {
|
|
95
|
+
const messageId = message.messageId?.trim() ?? "";
|
|
96
|
+
if (messageId) {
|
|
97
|
+
return `message:${messageId}`;
|
|
98
|
+
}
|
|
99
|
+
if (typeof message.version === "number" && Number.isFinite(message.version)) {
|
|
100
|
+
return `version:${message.version}`;
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
function workspaceAgentActivityClientSubmitId(message) {
|
|
105
|
+
const clientSubmitId = message.payload?.clientSubmitId;
|
|
106
|
+
return typeof clientSubmitId === "string" && clientSubmitId.trim() ? `${message.agentSessionId}\0${clientSubmitId.trim()}` : null;
|
|
107
|
+
}
|
|
108
|
+
function workspaceAgentActivityUserPromptSignature(message) {
|
|
109
|
+
if (message.role !== "user") {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const text = workspaceAgentActivityPayloadText(message.payload).trim();
|
|
113
|
+
const content = workspaceAgentActivityPayloadContentSignature(
|
|
114
|
+
message.payload
|
|
115
|
+
);
|
|
116
|
+
if (!text && content === null) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return [message.agentSessionId, text, content ?? ""].join("\0");
|
|
120
|
+
}
|
|
121
|
+
function workspaceAgentActivityPayloadText(payload) {
|
|
122
|
+
const text = payload?.text;
|
|
123
|
+
return typeof text === "string" ? text : "";
|
|
124
|
+
}
|
|
125
|
+
function workspaceAgentActivityPayloadContentSignature(payload) {
|
|
126
|
+
if (!payload || !Object.prototype.hasOwnProperty.call(payload, "content")) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const content = payload.content;
|
|
130
|
+
if (!Array.isArray(content)) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
const parts = [];
|
|
134
|
+
for (const block of content) {
|
|
135
|
+
const signature = workspaceAgentActivityPromptBlockSignature(block);
|
|
136
|
+
if (signature === null) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
parts.push(signature);
|
|
140
|
+
}
|
|
141
|
+
return parts.join("");
|
|
142
|
+
}
|
|
143
|
+
function workspaceAgentActivityPromptBlockSignature(block) {
|
|
144
|
+
if (!block || typeof block !== "object") {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const record = block;
|
|
148
|
+
const type = workspaceAgentActivityStringField(record, "type");
|
|
149
|
+
if (!type) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const fields = [
|
|
153
|
+
"text",
|
|
154
|
+
"mimeType",
|
|
155
|
+
"data",
|
|
156
|
+
"url",
|
|
157
|
+
"attachmentId",
|
|
158
|
+
"name",
|
|
159
|
+
"path",
|
|
160
|
+
"uri",
|
|
161
|
+
"hostPath",
|
|
162
|
+
"uploadStatus",
|
|
163
|
+
"assetId",
|
|
164
|
+
"kind"
|
|
165
|
+
];
|
|
166
|
+
const parts = [`type=${type}`];
|
|
167
|
+
for (const field of fields) {
|
|
168
|
+
const value = workspaceAgentActivityStringField(record, field);
|
|
169
|
+
if (value) {
|
|
170
|
+
parts.push(`${field}=${value}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const sizeBytes = record.sizeBytes;
|
|
174
|
+
if (typeof sizeBytes === "number" && Number.isFinite(sizeBytes)) {
|
|
175
|
+
parts.push(`sizeBytes=${sizeBytes}`);
|
|
176
|
+
}
|
|
177
|
+
return parts.join("");
|
|
178
|
+
}
|
|
179
|
+
function workspaceAgentActivityStringField(record, field) {
|
|
180
|
+
const value = record[field];
|
|
181
|
+
return typeof value === "string" ? value.trim() : "";
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export {
|
|
185
|
+
workspaceAgentProviderLabel,
|
|
186
|
+
WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN,
|
|
187
|
+
isWorkspaceAgentActivityRuntimeSessionOrigin,
|
|
188
|
+
createWorkspaceAgentActivityUserMessageIdFromClientSubmitId,
|
|
189
|
+
isWorkspaceAgentActivityOptimisticMessage,
|
|
190
|
+
selectWorkspaceAgentActivityOverlayMessages,
|
|
191
|
+
mergeWorkspaceAgentActivityDurableAndOverlayMessages
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=chunk-IL2ORY23.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../shared/workspaceAgentProviderLabel.ts","../shared/workspaceAgentActivityTypes.ts"],"sourcesContent":["export function workspaceAgentProviderLabel(provider: string): string {\n const normalized = provider.trim().toLowerCase();\n switch (normalized) {\n case \"codex\":\n return \"Codex\";\n case \"claude-code\":\n return \"Claude Code\";\n case \"gemini\":\n return \"Gemini\";\n case \"openclaw\":\n return \"OpenClaw\";\n case \"hermes\":\n return \"Hermes\";\n case \"nexight\":\n return \"Nexight\";\n case \"unknown\":\n return \"Unknown\";\n default:\n return titleCase(provider);\n }\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n","import {\n mergeAgentActivityMessages,\n AgentActivityMessage,\n AgentActivityMessageSemantics,\n AgentActivityPresence,\n AgentActivitySession,\n AgentActivitySnapshot,\n AgentActivitySubmitAvailability,\n AgentActivityTurnLifecycle\n} from \"@tutti-os/agent-activity-core\";\n\nexport type WorkspaceAgentActivityProvider = \"codex\" | \"claude-code\" | string;\n\nexport interface WorkspaceAgentActivityComposerSettings {\n model?: string | null;\n reasoningEffort?: string | null;\n speed?: string | null;\n planMode?: boolean;\n browserUse?: boolean;\n computerUse?: boolean;\n permissionModeId?: string | null;\n}\n\nexport const WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN =\n \"WORKSPACE_AGENT_SESSION_ORIGIN_RUNTIME\";\n\nexport type WorkspaceAgentActivitySessionOrigin =\n | typeof WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n | string;\n\nexport function isWorkspaceAgentActivityRuntimeSessionOrigin(\n sessionOrigin: string | null | undefined\n): boolean {\n const normalized = sessionOrigin?.trim() ?? \"\";\n // Core-native AgentActivitySession does not carry the legacy host origin DTO.\n return (\n normalized === \"\" ||\n normalized === WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n );\n}\n\nexport function createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(\n clientSubmitId: string\n): string | null {\n const normalized = clientSubmitId.trim();\n return normalized ? `client-submit:user:${normalized}` : null;\n}\n\nexport type WorkspaceAgentActivitySyncStatus =\n | \"pending\"\n | \"synced\"\n | \"failed\"\n | string;\n\nexport interface WorkspaceAgentActivitySyncState {\n workspaceId?: string;\n agentSessionId?: string;\n status: WorkspaceAgentActivitySyncStatus;\n pendingTimelineItemCount?: number;\n pendingStatePatchCount?: number;\n attemptCount?: number;\n failedReportCount?: number;\n lastError?: string;\n lastAttemptAtUnixMs?: number;\n lastSyncedAtUnixMs?: number;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityPresence extends Omit<\n AgentActivityPresence,\n \"id\" | \"provider\" | \"status\"\n> {\n id: string | number;\n provider: WorkspaceAgentActivityProvider;\n status: string;\n userId?: string | null;\n}\n\nexport interface WorkspaceAgentActivitySession extends Omit<\n AgentActivitySession,\n | \"provider\"\n | \"providerSessionId\"\n | \"pinnedAtUnixMs\"\n | \"status\"\n | \"title\"\n | \"workspaceId\"\n> {\n id?: number;\n workspaceId?: string;\n presenceId?: string | number;\n userId?: string;\n provider?: WorkspaceAgentActivityProvider;\n providerSessionId?: string | null;\n resumable?: boolean;\n sessionOrigin?: WorkspaceAgentActivitySessionOrigin;\n lifecycleStatus?: string;\n turnPhase?: string;\n endedAtUnixMs?: number;\n effectiveStatus?: string;\n status?: string;\n turnLifecycle?: AgentActivityTurnLifecycle | null;\n submitAvailability?: AgentActivitySubmitAvailability | null;\n title?: string;\n pinnedAtUnixMs?: number | null;\n syncState?: WorkspaceAgentActivitySyncState;\n}\n\nexport interface WorkspaceAgentActivityFileChange {\n path: string;\n change?: \"added\" | \"modified\" | \"deleted\" | \"moved\" | string;\n tools?: string[];\n}\n\nexport interface WorkspaceAgentActivityFileChanges {\n coverage?: string;\n files?: WorkspaceAgentActivityFileChange[];\n}\n\nexport interface WorkspaceAgentActivityTimelineItem {\n id: number;\n workspaceId?: string;\n agentSessionId: string;\n seq?: number;\n turnId?: string;\n eventSource?: string;\n eventId: string;\n actorType: string;\n actorId: string;\n itemType: \"message\" | \"call\" | \"event\" | \"error\" | \"lifecycle\" | string;\n role?: string;\n callType?: \"tool\" | \"skill\" | \"subagent\" | \"approval\" | \"workflow\" | string;\n callId?: string;\n name?: string;\n status?: string | null;\n content?: string;\n payload?: Record<string, unknown> & {\n content?: unknown;\n text?: unknown;\n fileChanges?: WorkspaceAgentActivityFileChanges;\n };\n occurredAtUnixMs?: number;\n createdAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityMessage extends Omit<\n AgentActivityMessage,\n \"id\" | \"status\"\n> {\n id?: number;\n status?: string | null;\n semantics?: AgentActivityMessageSemantics;\n}\n\nexport interface WorkspaceAgentActivitySnapshot extends Omit<\n AgentActivitySnapshot,\n \"sessions\" | \"presences\" | \"sessionMessagesById\" | \"workspaceId\"\n> {\n workspaceId?: string;\n presences: WorkspaceAgentActivityPresence[];\n sessions: WorkspaceAgentActivitySession[];\n sessionMessagesById?: Record<string, WorkspaceAgentActivityMessage[]>;\n}\n\nexport interface WorkspaceAgentActivityTurnStatePatch {\n turnId: string;\n phase?: string;\n outcome?: string;\n fileChanges?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n activeTurnId?: string | null;\n settling?: boolean;\n completedCommand?: {\n kind: string;\n status: string;\n } | null;\n submitAvailability?: AgentActivitySubmitAvailability;\n}\n\nexport interface WorkspaceAgentActivityEntityStatePatch {\n callId: string;\n turnId?: string;\n callType?: string;\n name?: string;\n status?: string;\n input?: Record<string, unknown>;\n output?: Record<string, unknown>;\n error?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityStatePatch {\n workspaceId?: string;\n agentSessionId: string;\n provider?: string;\n providerSessionId?: string;\n model?: string;\n permissionModeId?: string;\n settings?: WorkspaceAgentActivityComposerSettings;\n runtimeContext?: Record<string, unknown>;\n pendingInteractive?: AgentActivitySession[\"pendingInteractive\"];\n cwd?: string;\n title?: string;\n lifecycleStatus?: string;\n currentPhase?: string;\n lastError?: string;\n occurredAtUnixMs?: number;\n submitAvailability?: AgentActivitySubmitAvailability;\n turn?: WorkspaceAgentActivityTurnStatePatch;\n entities?: WorkspaceAgentActivityEntityStatePatch[];\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryItem {\n id?: number;\n turnId?: string;\n actorType?: string;\n actorId?: string;\n itemType?: string;\n role?: string;\n content?: string;\n title?: string;\n status?: string;\n callType?: string;\n name?: string;\n payload?: Record<string, unknown>;\n occurredAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryTurn {\n turnId: string;\n userItems?: WorkspaceAgentActivitySessionSummaryItem[];\n agentItems?: WorkspaceAgentActivitySessionSummaryItem[];\n}\n\nexport interface WorkspaceAgentActivitySessionExecutionStatus {\n currentOrFinalStatus?: string;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummary {\n agentSessionId: string;\n latestUserRequirement?: string;\n initialUserRequirement?: string;\n latestTurn?: WorkspaceAgentActivitySessionSummaryTurn;\n recentAgentReplies?: string[];\n recentTurns?: WorkspaceAgentActivitySessionSummaryTurn[];\n currentOrFinalStatus?: string;\n executionStatus?: WorkspaceAgentActivitySessionExecutionStatus;\n}\n\nexport function isWorkspaceAgentActivityOptimisticMessage(\n message: WorkspaceAgentActivityMessage\n): boolean {\n return message.payload?.__agentGuiOptimisticPrompt === true;\n}\n\nexport function selectWorkspaceAgentActivityOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const localMessages = input.localMessages ?? [];\n if (localMessages.length === 0) {\n return [];\n }\n const durableIdentities = new Set(\n durableMessages\n .map(workspaceAgentActivityMessageIdentity)\n .filter((identity): identity is string => identity !== null)\n );\n const durableClientSubmitIds = new Set(\n durableMessages\n .map(workspaceAgentActivityClientSubmitId)\n .filter(\n (clientSubmitId): clientSubmitId is string => clientSubmitId !== null\n )\n );\n const durableUserPromptSignatures = new Set(\n durableMessages\n .map(workspaceAgentActivityUserPromptSignature)\n .filter((signature): signature is string => signature !== null)\n );\n return localMessages.filter((message) => {\n const identity = workspaceAgentActivityMessageIdentity(message);\n if (identity !== null && durableIdentities.has(identity)) {\n return false;\n }\n if (isWorkspaceAgentActivityOptimisticMessage(message)) {\n const clientSubmitId = workspaceAgentActivityClientSubmitId(message);\n if (\n clientSubmitId !== null &&\n durableClientSubmitIds.has(clientSubmitId)\n ) {\n return false;\n }\n if (clientSubmitId !== null) {\n return true;\n }\n const signature = workspaceAgentActivityUserPromptSignature(message);\n return signature === null || !durableUserPromptSignatures.has(signature);\n }\n return true;\n });\n}\n\nexport function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);\n if (overlayMessages.length === 0) {\n return [...durableMessages];\n }\n // Optimistic echoes carry version 0 (outside the durable version domain),\n // so they cannot participate in a version sort. Durable-domain overlay rows\n // merge by version as usual; surviving echoes append after all durable\n // rows, ordered among themselves by when the user submitted.\n const overlayDurableMessages = overlayMessages.filter(\n (message) => !isWorkspaceAgentActivityOptimisticMessage(message)\n );\n const optimisticMessages = overlayMessages\n .filter(isWorkspaceAgentActivityOptimisticMessage)\n .slice()\n .sort(\n (left, right) =>\n left.occurredAtUnixMs - right.occurredAtUnixMs ||\n left.messageId.localeCompare(right.messageId)\n );\n const merged =\n overlayDurableMessages.length === 0\n ? [...durableMessages]\n : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);\n return optimisticMessages.length === 0\n ? merged\n : [...merged, ...optimisticMessages];\n}\n\nfunction workspaceAgentActivityMessageIdentity(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const messageId = message.messageId?.trim() ?? \"\";\n if (messageId) {\n return `message:${messageId}`;\n }\n if (typeof message.version === \"number\" && Number.isFinite(message.version)) {\n return `version:${message.version}`;\n }\n return null;\n}\n\nfunction workspaceAgentActivityClientSubmitId(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const clientSubmitId = message.payload?.clientSubmitId;\n return typeof clientSubmitId === \"string\" && clientSubmitId.trim()\n ? `${message.agentSessionId}\\u0000${clientSubmitId.trim()}`\n : null;\n}\n\nfunction workspaceAgentActivityUserPromptSignature(\n message: WorkspaceAgentActivityMessage\n): string | null {\n if (message.role !== \"user\") {\n return null;\n }\n const text = workspaceAgentActivityPayloadText(message.payload).trim();\n const content = workspaceAgentActivityPayloadContentSignature(\n message.payload\n );\n if (!text && content === null) {\n return null;\n }\n return [message.agentSessionId, text, content ?? \"\"].join(\"\\u0000\");\n}\n\nfunction workspaceAgentActivityPayloadText(\n payload: Record<string, unknown> | undefined\n): string {\n const text = payload?.text;\n return typeof text === \"string\" ? text : \"\";\n}\n\nfunction workspaceAgentActivityPayloadContentSignature(\n payload: Record<string, unknown> | undefined\n): string | null {\n if (!payload || !Object.prototype.hasOwnProperty.call(payload, \"content\")) {\n return null;\n }\n const content = payload.content;\n if (!Array.isArray(content)) {\n return null;\n }\n const parts: string[] = [];\n for (const block of content) {\n const signature = workspaceAgentActivityPromptBlockSignature(block);\n if (signature === null) {\n return null;\n }\n parts.push(signature);\n }\n return parts.join(\"\\u0001\");\n}\n\nfunction workspaceAgentActivityPromptBlockSignature(\n block: unknown\n): string | null {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n const record = block as Record<string, unknown>;\n const type = workspaceAgentActivityStringField(record, \"type\");\n if (!type) {\n return null;\n }\n const fields = [\n \"text\",\n \"mimeType\",\n \"data\",\n \"url\",\n \"attachmentId\",\n \"name\",\n \"path\",\n \"uri\",\n \"hostPath\",\n \"uploadStatus\",\n \"assetId\",\n \"kind\"\n ];\n const parts = [`type=${type}`];\n for (const field of fields) {\n const value = workspaceAgentActivityStringField(record, field);\n if (value) {\n parts.push(`${field}=${value}`);\n }\n }\n const sizeBytes = record.sizeBytes;\n if (typeof sizeBytes === \"number\" && Number.isFinite(sizeBytes)) {\n parts.push(`sizeBytes=${sizeBytes}`);\n }\n return parts.join(\"\\u0002\");\n}\n\nfunction workspaceAgentActivityStringField(\n record: Record<string, unknown>,\n field: string\n): string {\n const value = record[field];\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n"],"mappings":"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","names":[]}
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
getAgentCustomMentionKind,
|
|
7
7
|
managedAgentRoundedIconUrl
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-BX4UBTOI.js";
|
|
9
9
|
import {
|
|
10
10
|
translate,
|
|
11
11
|
useTranslation
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KS4ULVGM.js";
|
|
13
13
|
|
|
14
14
|
// agent-gui/agentGuiNode/agentRichText/agentFileMentionExtension.ts
|
|
15
15
|
import { mergeAttributes, Node } from "@tiptap/core";
|
|
@@ -1437,4 +1437,4 @@ export {
|
|
|
1437
1437
|
mentionItemToAttrs,
|
|
1438
1438
|
attrsToMentionItem
|
|
1439
1439
|
};
|
|
1440
|
-
//# sourceMappingURL=chunk-
|
|
1440
|
+
//# sourceMappingURL=chunk-JGU2VMDA.js.map
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
agentGuiWorkbenchProviders,
|
|
3
3
|
isAgentGuiWorkbenchProvider,
|
|
4
4
|
normalizeAgentGuiWorkbenchProvider
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RNFP7CUO.js";
|
|
6
6
|
import {
|
|
7
7
|
agentGUIProviderTargetRefsEqual
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SKWDZTEV.js";
|
|
9
9
|
|
|
10
10
|
// workbench/state.ts
|
|
11
11
|
function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
|
|
@@ -320,4 +320,4 @@ export {
|
|
|
320
320
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
321
321
|
createAgentGuiWorkbenchNodeStateSource
|
|
322
322
|
};
|
|
323
|
-
//# sourceMappingURL=chunk-
|
|
323
|
+
//# sourceMappingURL=chunk-JWWHS34V.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
setCurrentAgentGuiI18nRuntime,
|
|
7
7
|
translate,
|
|
8
8
|
translateInUiLanguage
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MA254MXR.js";
|
|
10
10
|
|
|
11
11
|
// i18n/index.ts
|
|
12
12
|
import React, {
|
|
@@ -68,4 +68,4 @@ export {
|
|
|
68
68
|
AgentGuiI18nProvider,
|
|
69
69
|
useTranslation
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-KS4ULVGM.js.map
|
|
@@ -460,9 +460,9 @@ var en = {
|
|
|
460
460
|
providerGateInstallTitle: "Install {{provider}} first",
|
|
461
461
|
providerGateInstallDescription: "{{provider}} needs to be installed before you can start a new chat here.",
|
|
462
462
|
providerGateInstallAction: "Install",
|
|
463
|
-
providerGateLoginTitle: "
|
|
464
|
-
providerGateLoginDescription: "
|
|
465
|
-
providerGateLoginAction: "
|
|
463
|
+
providerGateLoginTitle: "Log in to {{provider}}",
|
|
464
|
+
providerGateLoginDescription: "Log in with your account to start chatting with {{provider}}.",
|
|
465
|
+
providerGateLoginAction: "Log in",
|
|
466
466
|
providerGateComingSoonTitle: "{{provider}} is coming soon",
|
|
467
467
|
providerGateComingSoonDescription: "{{provider}} is not available yet. We will enable this agent when it is ready.",
|
|
468
468
|
providerGateComingSoonAction: "coming soon",
|
|
@@ -641,6 +641,7 @@ var en = {
|
|
|
641
641
|
usageCompactAction: "Compact",
|
|
642
642
|
planCardTitle: "Plan",
|
|
643
643
|
planCardCopy: "Copy plan",
|
|
644
|
+
copyCode: "Copy code",
|
|
644
645
|
planCardExpand: "Expand plan",
|
|
645
646
|
planCardCollapse: "Collapse plan",
|
|
646
647
|
planImplementationLead: "Implement this plan?",
|
|
@@ -701,6 +702,22 @@ var en = {
|
|
|
701
702
|
empty: "What can {{provider}} help you with?",
|
|
702
703
|
conversations: "Sessions",
|
|
703
704
|
newConversation: "New session",
|
|
705
|
+
accountMenuTitle: "Tutti Agent",
|
|
706
|
+
accountMenuMember: "Membership",
|
|
707
|
+
accountMenuUpgrade: "Upgrade",
|
|
708
|
+
accountMenuCreditsBalance: "Credits",
|
|
709
|
+
accountMenuAccountCenter: "Account center",
|
|
710
|
+
accountMenuSettings: "Settings",
|
|
711
|
+
accountMenuFree: "Free",
|
|
712
|
+
accountMenuSignIn: "Sign in",
|
|
713
|
+
accountMenuSignOut: "Sign out",
|
|
714
|
+
accountMenuLoading: "Loading",
|
|
715
|
+
accountMenuUnavailable: "--",
|
|
716
|
+
accountMenuDataUnavailable: "Some account data is unavailable",
|
|
717
|
+
accountRewardToastTitle: "New user credits",
|
|
718
|
+
accountRewardToastCreditsUnit: "credits",
|
|
719
|
+
accountRewardToastDescription: "Added to account balance",
|
|
720
|
+
accountRewardToastClose: "Close credits reward notification",
|
|
704
721
|
agentConfig: "Check & Settings",
|
|
705
722
|
agentSettingsMenu: "Settings",
|
|
706
723
|
agentEnvSetup: "Environment Check",
|
|
@@ -725,6 +742,7 @@ var en = {
|
|
|
725
742
|
batchRunnerProviderHermes: "Hermes",
|
|
726
743
|
batchRunnerProviderNexight: "Nexight",
|
|
727
744
|
batchRunnerProviderOpenClaw: "OpenClaw",
|
|
745
|
+
batchRunnerProviderTuttiAgent: "Tutti Agent",
|
|
728
746
|
batchRunnerRun: "Run",
|
|
729
747
|
batchRunnerRunning: "Running...",
|
|
730
748
|
batchRunnerExport: "Export",
|
|
@@ -1408,6 +1426,10 @@ var en = {
|
|
|
1408
1426
|
todos: "Todos",
|
|
1409
1427
|
skill: "Skill",
|
|
1410
1428
|
mcp: "MCP",
|
|
1429
|
+
mcpServer: "Server",
|
|
1430
|
+
mcpTool: "Tool",
|
|
1431
|
+
mcpItem: "Item {{index}}",
|
|
1432
|
+
mcpDoc: "Doc {{index}}",
|
|
1411
1433
|
approvalOptions: "Approval options",
|
|
1412
1434
|
answerPrefix: "Answer: {{answer}}",
|
|
1413
1435
|
waitingForAnswer: "Waiting for answer\u2026",
|
|
@@ -2984,9 +3006,9 @@ var zhCN = {
|
|
|
2984
3006
|
providerGateInstallTitle: "\u5148\u5B89\u88C5 {{provider}}",
|
|
2985
3007
|
providerGateInstallDescription: "\u9700\u8981\u5148\u5B89\u88C5 {{provider}}\uFF0C\u624D\u80FD\u5728\u8FD9\u91CC\u5F00\u59CB\u65B0\u7684\u5BF9\u8BDD\u3002",
|
|
2986
3008
|
providerGateInstallAction: "\u5B89\u88C5",
|
|
2987
|
-
providerGateLoginTitle: "\
|
|
2988
|
-
providerGateLoginDescription: "
|
|
2989
|
-
providerGateLoginAction: "\
|
|
3009
|
+
providerGateLoginTitle: "\u767B\u5F55 {{provider}}",
|
|
3010
|
+
providerGateLoginDescription: "\u4F7F\u7528\u8D26\u53F7\u767B\u5F55\u540E\u5373\u53EF\u5F00\u59CB\u4F7F\u7528 {{provider}} \u5BF9\u8BDD\u3002",
|
|
3011
|
+
providerGateLoginAction: "\u767B\u5F55",
|
|
2990
3012
|
providerGateComingSoonTitle: "{{provider}} \u5373\u5C06\u4E0A\u7EBF",
|
|
2991
3013
|
providerGateComingSoonDescription: "{{provider}} \u6682\u672A\u5F00\u653E\u3002\u51C6\u5907\u597D\u540E\u5373\u53EF\u5728\u8FD9\u91CC\u4F7F\u7528\u8FD9\u4E2A Agent\u3002",
|
|
2992
3014
|
providerGateComingSoonAction: "coming soon",
|
|
@@ -3165,6 +3187,7 @@ var zhCN = {
|
|
|
3165
3187
|
usageCompactAction: "\u538B\u7F29",
|
|
3166
3188
|
planCardTitle: "\u8BA1\u5212",
|
|
3167
3189
|
planCardCopy: "\u590D\u5236\u8BA1\u5212",
|
|
3190
|
+
copyCode: "\u590D\u5236\u4EE3\u7801",
|
|
3168
3191
|
planCardExpand: "\u5C55\u5F00\u65B9\u6848",
|
|
3169
3192
|
planCardCollapse: "\u6536\u8D77\u65B9\u6848",
|
|
3170
3193
|
planImplementationLead: "\u662F\u5426\u5B9E\u4F5C\u6B64\u65B9\u6848\uFF1F",
|
|
@@ -3225,6 +3248,22 @@ var zhCN = {
|
|
|
3225
3248
|
empty: "\u9700\u8981 {{provider}} \u5E2E\u4F60\u505A\u4E9B\u4EC0\u4E48\uFF1F",
|
|
3226
3249
|
conversations: "\u4F1A\u8BDD",
|
|
3227
3250
|
newConversation: "\u65B0\u5EFA\u4F1A\u8BDD",
|
|
3251
|
+
accountMenuTitle: "Tutti Agent",
|
|
3252
|
+
accountMenuMember: "\u4F1A\u5458",
|
|
3253
|
+
accountMenuUpgrade: "\u5347\u7EA7",
|
|
3254
|
+
accountMenuCreditsBalance: "\u79EF\u5206\u4F59\u989D",
|
|
3255
|
+
accountMenuAccountCenter: "\u8D26\u53F7\u4E2D\u5FC3",
|
|
3256
|
+
accountMenuSettings: "\u8BBE\u7F6E",
|
|
3257
|
+
accountMenuFree: "Free",
|
|
3258
|
+
accountMenuSignIn: "\u767B\u5F55",
|
|
3259
|
+
accountMenuSignOut: "\u9000\u51FA\u767B\u5F55",
|
|
3260
|
+
accountMenuLoading: "\u52A0\u8F7D\u4E2D",
|
|
3261
|
+
accountMenuUnavailable: "--",
|
|
3262
|
+
accountMenuDataUnavailable: "\u90E8\u5206\u8D26\u53F7\u6570\u636E\u6682\u4E0D\u53EF\u7528",
|
|
3263
|
+
accountRewardToastTitle: "\u65B0\u7528\u6237\u79EF\u5206\u5230\u8D26",
|
|
3264
|
+
accountRewardToastCreditsUnit: "\u79EF\u5206",
|
|
3265
|
+
accountRewardToastDescription: "\u5DF2\u52A0\u5165\u8D26\u6237\u4F59\u989D",
|
|
3266
|
+
accountRewardToastClose: "\u5173\u95ED\u79EF\u5206\u5230\u8D26\u63D0\u793A",
|
|
3228
3267
|
agentConfig: "\u68C0\u6D4B\u4E0E\u8BBE\u7F6E",
|
|
3229
3268
|
agentSettingsMenu: "\u8BBE\u7F6E",
|
|
3230
3269
|
agentEnvSetup: "\u73AF\u5883\u68C0\u6D4B",
|
|
@@ -3249,6 +3288,7 @@ var zhCN = {
|
|
|
3249
3288
|
batchRunnerProviderHermes: "Hermes",
|
|
3250
3289
|
batchRunnerProviderNexight: "Nexight",
|
|
3251
3290
|
batchRunnerProviderOpenClaw: "OpenClaw",
|
|
3291
|
+
batchRunnerProviderTuttiAgent: "Tutti Agent",
|
|
3252
3292
|
batchRunnerRun: "\u6267\u884C",
|
|
3253
3293
|
batchRunnerRunning: "\u6267\u884C\u4E2D...",
|
|
3254
3294
|
batchRunnerExport: "\u5BFC\u51FA",
|
|
@@ -3933,6 +3973,10 @@ var zhCN = {
|
|
|
3933
3973
|
todos: "\u5F85\u529E",
|
|
3934
3974
|
skill: "\u6280\u80FD",
|
|
3935
3975
|
mcp: "MCP",
|
|
3976
|
+
mcpServer: "\u670D\u52A1\u5668",
|
|
3977
|
+
mcpTool: "\u5DE5\u5177",
|
|
3978
|
+
mcpItem: "\u6761\u76EE {{index}}",
|
|
3979
|
+
mcpDoc: "\u6587\u6863 {{index}}",
|
|
3936
3980
|
approvalOptions: "\u5BA1\u6279\u9009\u9879",
|
|
3937
3981
|
answerPrefix: "\u56DE\u7B54\uFF1A{{answer}}",
|
|
3938
3982
|
waitingForAnswer: "\u7B49\u5F85\u7528\u6237\u56DE\u7B54\u2026",
|
|
@@ -5109,4 +5153,4 @@ export {
|
|
|
5109
5153
|
translateInUiLanguage,
|
|
5110
5154
|
getActiveUiLanguage
|
|
5111
5155
|
};
|
|
5112
|
-
//# sourceMappingURL=chunk-
|
|
5156
|
+
//# sourceMappingURL=chunk-MA254MXR.js.map
|