@tutti-os/agent-gui 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-message-center/index.d.ts +1 -0
- package/dist/agent-message-center/index.js +23 -9
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +11 -0
- package/dist/app/renderer/assets/icons/arrow-left-filled.svg +1 -0
- package/dist/{chunk-RORLLV27.js → chunk-3735XYFZ.js} +2 -40
- package/dist/chunk-3735XYFZ.js.map +1 -0
- package/dist/{chunk-IVPB4MLI.js → chunk-6AZ2KF6R.js} +1 -1
- package/dist/chunk-6AZ2KF6R.js.map +1 -0
- package/dist/{chunk-ZX5PDYAS.js → chunk-C63Z2JWT.js} +8 -10
- package/dist/chunk-C63Z2JWT.js.map +1 -0
- package/dist/chunk-FKCXHCPO.js +3478 -0
- package/dist/chunk-FKCXHCPO.js.map +1 -0
- package/dist/{chunk-ZP7P7DYO.js → chunk-GEXHKJK5.js} +6 -47
- package/dist/chunk-GEXHKJK5.js.map +1 -0
- package/dist/{chunk-UJWUGMWC.js → chunk-GYG57VTA.js} +17 -32
- package/dist/{chunk-UJWUGMWC.js.map → chunk-GYG57VTA.js.map} +1 -1
- package/dist/{chunk-HSR5DI6O.js → chunk-JWVLIF5R.js} +5 -1
- package/dist/chunk-JWVLIF5R.js.map +1 -0
- package/dist/{chunk-UKQIGNN3.js → chunk-KGFWU4FL.js} +2 -2
- package/dist/{chunk-BABBC24I.js → chunk-LUGELG5V.js} +4 -1
- package/dist/chunk-LUGELG5V.js.map +1 -0
- package/dist/chunk-ZU3FKYMG.js +47 -0
- package/dist/chunk-ZU3FKYMG.js.map +1 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +2 -11
- package/dist/index.js +176 -60
- package/dist/index.js.map +1 -1
- package/dist/mention-file-presentation.d.ts +2 -1
- package/dist/mention-file-presentation.js +1 -1
- package/dist/workbench/contribution.js +6 -5
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.js +6 -5
- package/dist/workbench/launch.d.ts +1 -7
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/state.js +1 -1
- package/dist/workbench/types.d.ts +1 -12
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +10 -10
- package/dist/chunk-5Q36BEUM.js +0 -3478
- package/dist/chunk-5Q36BEUM.js.map +0 -1
- package/dist/chunk-BABBC24I.js.map +0 -1
- package/dist/chunk-HSR5DI6O.js.map +0 -1
- package/dist/chunk-IVPB4MLI.js.map +0 -1
- package/dist/chunk-RORLLV27.js.map +0 -1
- package/dist/chunk-ZP7P7DYO.js.map +0 -1
- package/dist/chunk-ZX5PDYAS.js.map +0 -1
- package/dist/user-avatar-placeholder-WP2373TS.png +0 -0
- /package/dist/{chunk-UKQIGNN3.js.map → chunk-KGFWU4FL.js.map} +0 -0
|
@@ -2256,6 +2256,13 @@ aside.workspace-agents-status-panel
|
|
|
2256
2256
|
-webkit-mask-image: url("./assets/icons/doc-filled.svg");
|
|
2257
2257
|
}
|
|
2258
2258
|
|
|
2259
|
+
[data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="back"]
|
|
2260
|
+
.agent-gui-node__mention-file-icon {
|
|
2261
|
+
background-color: var(--text-secondary);
|
|
2262
|
+
mask-image: url("./assets/icons/arrow-left-filled.svg");
|
|
2263
|
+
-webkit-mask-image: url("./assets/icons/arrow-left-filled.svg");
|
|
2264
|
+
}
|
|
2265
|
+
|
|
2259
2266
|
.agent-gui-chrome__session-chrome {
|
|
2260
2267
|
display: grid;
|
|
2261
2268
|
justify-self: stretch;
|
|
@@ -3645,6 +3652,7 @@ aside.workspace-agents-status-panel
|
|
|
3645
3652
|
--agent-conversation-user-text: var(--text-primary);
|
|
3646
3653
|
--agent-conversation-user-bg: var(--agent-gui-surface-muted);
|
|
3647
3654
|
--agent-gui-detail-padding-x: 28px;
|
|
3655
|
+
--agent-gui-detail-flow-max-width: 1280px;
|
|
3648
3656
|
width: 100%;
|
|
3649
3657
|
height: 100%;
|
|
3650
3658
|
container: agent-gui-node / inline-size;
|
|
@@ -4986,7 +4994,10 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
4986
4994
|
bottom: 0;
|
|
4987
4995
|
z-index: 4;
|
|
4988
4996
|
display: grid;
|
|
4997
|
+
align-self: center;
|
|
4998
|
+
box-sizing: border-box;
|
|
4989
4999
|
gap: 0;
|
|
5000
|
+
width: min(100%, var(--agent-gui-detail-flow-max-width));
|
|
4990
5001
|
margin-top: auto;
|
|
4991
5002
|
padding-top: 0;
|
|
4992
5003
|
background: transparent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M14.293 5.293a3 3 0 0 1 0 4.243L10.414 12l3.879 3.464a3 3 0 1 1-4 4.464l-6-5.354a3 3 0 0 1 0-4.464l6-5.354a3 3 0 0 1 4 0"/></svg>
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-22L4VWUR.js";
|
|
5
5
|
import {
|
|
6
6
|
agentGuiWorkbenchOpenSessionActivationType
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6AZ2KF6R.js";
|
|
8
8
|
|
|
9
9
|
// workbench/launch.ts
|
|
10
10
|
var agentGuiWorkbenchTypeId = "agent-gui";
|
|
@@ -24,12 +24,6 @@ function createAgentGuiWorkbenchInstanceId(input) {
|
|
|
24
24
|
agentSessionId
|
|
25
25
|
)}`;
|
|
26
26
|
}
|
|
27
|
-
const handoffRequestId = input.pendingHandoff?.requestId?.trim();
|
|
28
|
-
if (handoffRequestId) {
|
|
29
|
-
return `${prefix}:handoff:${encodeAgentGuiWorkbenchInstanceSegment(
|
|
30
|
-
handoffRequestId
|
|
31
|
-
)}`;
|
|
32
|
-
}
|
|
33
27
|
agentGuiWorkbenchInstanceSequence += 1;
|
|
34
28
|
return [
|
|
35
29
|
prefix,
|
|
@@ -61,7 +55,6 @@ function createAgentGuiWorkbenchSessionLaunchRequest(input) {
|
|
|
61
55
|
dockEntryId: agentGuiWorkbenchDockEntryId(provider),
|
|
62
56
|
payload: {
|
|
63
57
|
...input.agentSessionId ? { agentSessionId: input.agentSessionId } : {},
|
|
64
|
-
...input.pendingHandoff ? { pendingHandoff: input.pendingHandoff } : {},
|
|
65
58
|
provider
|
|
66
59
|
},
|
|
67
60
|
reason: "host",
|
|
@@ -71,10 +64,8 @@ function createAgentGuiWorkbenchSessionLaunchRequest(input) {
|
|
|
71
64
|
function createAgentGuiWorkbenchLaunchDescriptor(request) {
|
|
72
65
|
const provider = agentGuiWorkbenchProviderFromLaunchRequest(request);
|
|
73
66
|
const targetAgentSessionId = agentSessionIdFromLaunchPayload(request.payload);
|
|
74
|
-
const pendingHandoff = pendingHandoffFromLaunchPayload(request.payload);
|
|
75
67
|
const instanceId = createAgentGuiWorkbenchInstanceId({
|
|
76
68
|
agentSessionId: targetAgentSessionId,
|
|
77
|
-
pendingHandoff,
|
|
78
69
|
provider
|
|
79
70
|
});
|
|
80
71
|
return {
|
|
@@ -86,7 +77,6 @@ function createAgentGuiWorkbenchLaunchDescriptor(request) {
|
|
|
86
77
|
} : null,
|
|
87
78
|
dockEntryId: request.dockEntryId ?? agentGuiWorkbenchDockEntryId(provider),
|
|
88
79
|
instanceId,
|
|
89
|
-
pendingHandoff,
|
|
90
80
|
provider,
|
|
91
81
|
reuseDockEntryNode: Boolean(targetAgentSessionId),
|
|
92
82
|
targetAgentSessionId
|
|
@@ -102,34 +92,6 @@ function agentSessionIdFromLaunchPayload(payload) {
|
|
|
102
92
|
const agentSessionId = payload.agentSessionId;
|
|
103
93
|
return typeof agentSessionId === "string" && agentSessionId.trim() ? agentSessionId.trim() : null;
|
|
104
94
|
}
|
|
105
|
-
function pendingHandoffFromLaunchPayload(payload) {
|
|
106
|
-
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
const pendingHandoff = payload.pendingHandoff;
|
|
110
|
-
if (!pendingHandoff || typeof pendingHandoff !== "object" || Array.isArray(pendingHandoff)) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
const requestId = pendingHandoff.requestId;
|
|
114
|
-
const prompt = pendingHandoff.prompt;
|
|
115
|
-
const title = pendingHandoff.title;
|
|
116
|
-
const taskTitle = pendingHandoff.taskTitle;
|
|
117
|
-
if (typeof requestId !== "string" || typeof prompt !== "string" || typeof title !== "string" || typeof taskTitle !== "string") {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
const issueId = pendingHandoff.issueId;
|
|
121
|
-
const issueTitle = pendingHandoff.issueTitle;
|
|
122
|
-
const taskId = pendingHandoff.taskId;
|
|
123
|
-
return {
|
|
124
|
-
issueId: typeof issueId === "string" ? issueId : null,
|
|
125
|
-
issueTitle: typeof issueTitle === "string" ? issueTitle : null,
|
|
126
|
-
prompt,
|
|
127
|
-
requestId,
|
|
128
|
-
taskId: typeof taskId === "string" ? taskId : null,
|
|
129
|
-
taskTitle,
|
|
130
|
-
title
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
95
|
|
|
134
96
|
export {
|
|
135
97
|
agentGuiWorkbenchTypeId,
|
|
@@ -141,4 +103,4 @@ export {
|
|
|
141
103
|
createAgentGuiWorkbenchSessionLaunchRequest,
|
|
142
104
|
createAgentGuiWorkbenchLaunchDescriptor
|
|
143
105
|
};
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-3735XYFZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../workbench/launch.ts"],"sourcesContent":["import type { WorkbenchHostLaunchRequest } from \"@tutti-os/workbench-surface\";\nimport {\n isAgentGuiWorkbenchProvider,\n normalizeAgentGuiWorkbenchProvider\n} from \"./providerCatalog.ts\";\nimport {\n agentGuiWorkbenchOpenSessionActivationType,\n type AgentGuiWorkbenchProvider\n} from \"./types.ts\";\n\ntype AgentGuiWorkbenchLaunchRequestInput = Pick<\n WorkbenchHostLaunchRequest,\n \"payload\" | \"typeId\"\n> & {\n dockEntryId?: string | null;\n};\n\nexport const agentGuiWorkbenchTypeId = \"agent-gui\";\n\nconst agentGuiWorkbenchDockEntryPrefix = \"agent-gui:\";\nlet agentGuiWorkbenchInstanceSequence = 0;\n\nexport function agentGuiWorkbenchDockEntryId(\n provider: AgentGuiWorkbenchProvider\n): string {\n return provider === \"codex\"\n ? agentGuiWorkbenchTypeId\n : `${agentGuiWorkbenchDockEntryPrefix}${provider}`;\n}\n\nexport function agentGuiWorkbenchInstanceId(\n provider: AgentGuiWorkbenchProvider\n): string {\n return `${agentGuiWorkbenchDockEntryPrefix}${provider}`;\n}\n\nexport function createAgentGuiWorkbenchInstanceId(input: {\n agentSessionId?: string | null;\n provider: AgentGuiWorkbenchProvider;\n}): string {\n const prefix = agentGuiWorkbenchInstanceId(input.provider);\n const agentSessionId = input.agentSessionId?.trim();\n if (agentSessionId) {\n return `${prefix}:session:${encodeAgentGuiWorkbenchInstanceSegment(\n agentSessionId\n )}`;\n }\n\n agentGuiWorkbenchInstanceSequence += 1;\n return [\n prefix,\n \"panel\",\n `${Date.now().toString(36)}-${agentGuiWorkbenchInstanceSequence.toString(36)}`\n ].join(\":\");\n}\n\nexport function agentGuiWorkbenchProviderFromIdentifier(\n value: string | null | undefined\n): AgentGuiWorkbenchProvider | null {\n const normalized = value?.trim();\n if (!normalized || normalized === agentGuiWorkbenchTypeId) {\n return normalized === agentGuiWorkbenchTypeId ? \"codex\" : null;\n }\n if (!normalized.startsWith(agentGuiWorkbenchDockEntryPrefix)) {\n return null;\n }\n const provider = normalized\n .slice(agentGuiWorkbenchDockEntryPrefix.length)\n .split(\":\", 1)[0];\n return isAgentGuiWorkbenchProvider(provider) ? provider : null;\n}\n\nexport function agentGuiWorkbenchProviderFromLaunchRequest(\n request: AgentGuiWorkbenchLaunchRequestInput\n): AgentGuiWorkbenchProvider {\n const payloadProvider =\n request.payload &&\n typeof request.payload === \"object\" &&\n !Array.isArray(request.payload)\n ? (request.payload as { provider?: unknown }).provider\n : null;\n if (isAgentGuiWorkbenchProvider(payloadProvider)) {\n return payloadProvider;\n }\n return (\n agentGuiWorkbenchProviderFromIdentifier(request.dockEntryId) ??\n agentGuiWorkbenchProviderFromIdentifier(request.typeId) ??\n \"codex\"\n );\n}\n\nexport function createAgentGuiWorkbenchSessionLaunchRequest(input: {\n agentSessionId?: string;\n provider: unknown;\n}) {\n const provider = normalizeAgentGuiWorkbenchProvider(input.provider);\n return {\n dockEntryId: agentGuiWorkbenchDockEntryId(provider),\n payload: {\n ...(input.agentSessionId ? { agentSessionId: input.agentSessionId } : {}),\n provider\n },\n reason: \"host\" as const,\n typeId: agentGuiWorkbenchTypeId\n };\n}\n\nexport interface AgentGuiWorkbenchLaunchDescriptor {\n activation: {\n payload: {\n agentSessionId: string;\n };\n type: typeof agentGuiWorkbenchOpenSessionActivationType;\n } | null;\n dockEntryId: string;\n instanceId: string;\n provider: AgentGuiWorkbenchProvider;\n reuseDockEntryNode: boolean;\n targetAgentSessionId: string | null;\n}\n\nexport function createAgentGuiWorkbenchLaunchDescriptor(\n request: AgentGuiWorkbenchLaunchRequestInput\n): AgentGuiWorkbenchLaunchDescriptor {\n const provider = agentGuiWorkbenchProviderFromLaunchRequest(request);\n const targetAgentSessionId = agentSessionIdFromLaunchPayload(request.payload);\n const instanceId = createAgentGuiWorkbenchInstanceId({\n agentSessionId: targetAgentSessionId,\n provider\n });\n\n return {\n activation: targetAgentSessionId\n ? {\n payload: {\n agentSessionId: targetAgentSessionId\n },\n type: agentGuiWorkbenchOpenSessionActivationType\n }\n : null,\n dockEntryId: request.dockEntryId ?? agentGuiWorkbenchDockEntryId(provider),\n instanceId,\n provider,\n reuseDockEntryNode: Boolean(targetAgentSessionId),\n targetAgentSessionId\n };\n}\n\nfunction encodeAgentGuiWorkbenchInstanceSegment(value: string): string {\n return encodeURIComponent(value.trim());\n}\n\nfunction agentSessionIdFromLaunchPayload(payload: unknown): string | null {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return null;\n }\n const agentSessionId = (payload as { agentSessionId?: unknown })\n .agentSessionId;\n return typeof agentSessionId === \"string\" && agentSessionId.trim()\n ? agentSessionId.trim()\n : null;\n}\n"],"mappings":";;;;;;;;;AAiBO,IAAM,0BAA0B;AAEvC,IAAM,mCAAmC;AACzC,IAAI,oCAAoC;AAEjC,SAAS,6BACd,UACQ;AACR,SAAO,aAAa,UAChB,0BACA,GAAG,gCAAgC,GAAG,QAAQ;AACpD;AAEO,SAAS,4BACd,UACQ;AACR,SAAO,GAAG,gCAAgC,GAAG,QAAQ;AACvD;AAEO,SAAS,kCAAkC,OAGvC;AACT,QAAM,SAAS,4BAA4B,MAAM,QAAQ;AACzD,QAAM,iBAAiB,MAAM,gBAAgB,KAAK;AAClD,MAAI,gBAAgB;AAClB,WAAO,GAAG,MAAM,YAAY;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,uCAAqC;AACrC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAG,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,kCAAkC,SAAS,EAAE,CAAC;AAAA,EAC9E,EAAE,KAAK,GAAG;AACZ;AAEO,SAAS,wCACd,OACkC;AAClC,QAAM,aAAa,OAAO,KAAK;AAC/B,MAAI,CAAC,cAAc,eAAe,yBAAyB;AACzD,WAAO,eAAe,0BAA0B,UAAU;AAAA,EAC5D;AACA,MAAI,CAAC,WAAW,WAAW,gCAAgC,GAAG;AAC5D,WAAO;AAAA,EACT;AACA,QAAM,WAAW,WACd,MAAM,iCAAiC,MAAM,EAC7C,MAAM,KAAK,CAAC,EAAE,CAAC;AAClB,SAAO,4BAA4B,QAAQ,IAAI,WAAW;AAC5D;AAEO,SAAS,2CACd,SAC2B;AAC3B,QAAM,kBACJ,QAAQ,WACR,OAAO,QAAQ,YAAY,YAC3B,CAAC,MAAM,QAAQ,QAAQ,OAAO,IACzB,QAAQ,QAAmC,WAC5C;AACN,MAAI,4BAA4B,eAAe,GAAG;AAChD,WAAO;AAAA,EACT;AACA,SACE,wCAAwC,QAAQ,WAAW,KAC3D,wCAAwC,QAAQ,MAAM,KACtD;AAEJ;AAEO,SAAS,4CAA4C,OAGzD;AACD,QAAM,WAAW,mCAAmC,MAAM,QAAQ;AAClE,SAAO;AAAA,IACL,aAAa,6BAA6B,QAAQ;AAAA,IAClD,SAAS;AAAA,MACP,GAAI,MAAM,iBAAiB,EAAE,gBAAgB,MAAM,eAAe,IAAI,CAAC;AAAA,MACvE;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AACF;AAgBO,SAAS,wCACd,SACmC;AACnC,QAAM,WAAW,2CAA2C,OAAO;AACnE,QAAM,uBAAuB,gCAAgC,QAAQ,OAAO;AAC5E,QAAM,aAAa,kCAAkC;AAAA,IACnD,gBAAgB;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,YAAY,uBACR;AAAA,MACE,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,IACR,IACA;AAAA,IACJ,aAAa,QAAQ,eAAe,6BAA6B,QAAQ;AAAA,IACzE;AAAA,IACA;AAAA,IACA,oBAAoB,QAAQ,oBAAoB;AAAA,IAChD;AAAA,EACF;AACF;AAEA,SAAS,uCAAuC,OAAuB;AACrE,SAAO,mBAAmB,MAAM,KAAK,CAAC;AACxC;AAEA,SAAS,gCAAgC,SAAiC;AACxE,MAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AACrE,WAAO;AAAA,EACT;AACA,QAAM,iBAAkB,QACrB;AACH,SAAO,OAAO,mBAAmB,YAAY,eAAe,KAAK,IAC7D,eAAe,KAAK,IACpB;AACN;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../workbench/types.ts"],"sourcesContent":["export type AgentGuiWorkbenchProvider =\n | \"claude-code\"\n | \"codex\"\n | \"nexight\"\n | \"gemini\"\n | \"hermes\"\n | \"openclaw\";\n\nexport const agentGuiWorkbenchOpenSessionActivationType =\n \"agent-gui:open-session\";\n\nexport interface AgentGuiWorkbenchComposerOverrides {\n model?: string | null;\n permissionModeId?: string | null;\n planMode?: boolean;\n reasoningEffort?: string | null;\n}\n\nexport type AgentGuiWorkbenchComposerOverridesByProvider = Partial<\n Record<AgentGuiWorkbenchProvider, AgentGuiWorkbenchComposerOverrides | null>\n>;\n\nexport interface AgentGuiWorkbenchNodeState {\n composerOverrides?: AgentGuiWorkbenchComposerOverrides | null;\n composerOverridesByProvider?: AgentGuiWorkbenchComposerOverridesByProvider | null;\n conversationCount?: number | null;\n conversationRailCollapsed?: boolean | null;\n conversationRailWidthPx?: number | null;\n lastActiveAgentSessionId: string | null;\n lastActiveConversationTitle?: string | null;\n provider: AgentGuiWorkbenchProvider;\n}\n\nexport interface AgentGuiWorkbenchState {\n composerOverrides?: AgentGuiWorkbenchComposerOverrides | null;\n composerOverridesByProvider?: AgentGuiWorkbenchComposerOverridesByProvider | null;\n conversationRailCollapsed?: boolean | null;\n conversationRailWidthPx?: number | null;\n lastActiveAgentSessionId: string | null;\n lastActiveConversationTitle?: string | null;\n}\n\nexport interface AgentGuiWorkbenchWorkspaceState {\n workspaceId: string;\n}\n"],"mappings":";AAQO,IAAM,6CACX;","names":[]}
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
agentGuiWorkbenchProviderFromIdentifier,
|
|
4
4
|
agentGuiWorkbenchTypeId,
|
|
5
5
|
createAgentGuiWorkbenchLaunchDescriptor
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3735XYFZ.js";
|
|
7
7
|
import {
|
|
8
8
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
9
9
|
createAgentGuiWorkbenchNodeStateSource,
|
|
10
10
|
normalizeAgentGuiWorkbenchNodeState,
|
|
11
11
|
normalizeAgentGuiWorkbenchState
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GEXHKJK5.js";
|
|
13
13
|
import {
|
|
14
14
|
agentGuiWorkbenchProviderLabels,
|
|
15
15
|
agentGuiWorkbenchProviders,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
agentGuiDockIconUrls,
|
|
21
21
|
resolveAgentGUIExpandedWindowFrame,
|
|
22
22
|
shouldAutoCollapseAgentGUIConversationRail
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-GYG57VTA.js";
|
|
24
24
|
|
|
25
25
|
// workbench/contribution.ts
|
|
26
26
|
import { createElement as createElement2 } from "react";
|
|
@@ -120,7 +120,7 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
120
120
|
dockEntries: agentGuiWorkbenchProviders.map(
|
|
121
121
|
(provider, index) => createAgentGuiWorkbenchDockEntry({
|
|
122
122
|
label: agentGuiWorkbenchProviderLabels[provider],
|
|
123
|
-
iconUrl: input.dockIconUrls?.[provider],
|
|
123
|
+
iconUrl: input.dockIconUrls?.[provider] ?? agentGuiDockIconUrls[provider],
|
|
124
124
|
order: index,
|
|
125
125
|
provider,
|
|
126
126
|
sectionId: input.dockSectionId ?? "agents",
|
|
@@ -251,13 +251,12 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
251
251
|
activation,
|
|
252
252
|
dockEntryId,
|
|
253
253
|
instanceId,
|
|
254
|
-
pendingHandoff,
|
|
255
254
|
provider,
|
|
256
255
|
reuseDockEntryNode,
|
|
257
256
|
targetAgentSessionId
|
|
258
257
|
} = createAgentGuiWorkbenchLaunchDescriptor(request);
|
|
259
258
|
const title = resolveAgentGuiWorkbenchProviderLabel(provider);
|
|
260
|
-
if (targetAgentSessionId
|
|
259
|
+
if (targetAgentSessionId) {
|
|
261
260
|
const previousState = nodeStateSource.readNodeState({
|
|
262
261
|
instanceId,
|
|
263
262
|
typeId: agentGuiWorkbenchTypeId
|
|
@@ -266,8 +265,7 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
266
265
|
instanceId,
|
|
267
266
|
state: {
|
|
268
267
|
...previousState ?? normalizeAgentGuiWorkbenchState(null),
|
|
269
|
-
...targetAgentSessionId ? { lastActiveAgentSessionId: targetAgentSessionId } : {}
|
|
270
|
-
...pendingHandoff ? { pendingHandoff } : {}
|
|
268
|
+
...targetAgentSessionId ? { lastActiveAgentSessionId: targetAgentSessionId } : {}
|
|
271
269
|
},
|
|
272
270
|
typeId: agentGuiWorkbenchTypeId
|
|
273
271
|
});
|
|
@@ -311,7 +309,7 @@ function createAgentGuiWorkbenchDockEntry(input) {
|
|
|
311
309
|
icon: createElement2("img", {
|
|
312
310
|
alt: "",
|
|
313
311
|
draggable: false,
|
|
314
|
-
src: input.iconUrl
|
|
312
|
+
src: input.iconUrl
|
|
315
313
|
}),
|
|
316
314
|
iconSize: "large",
|
|
317
315
|
id: agentGuiWorkbenchDockEntryId(input.provider),
|
|
@@ -343,4 +341,4 @@ export {
|
|
|
343
341
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
344
342
|
resolveAgentGuiWorkbenchContributionCopy
|
|
345
343
|
};
|
|
346
|
-
//# sourceMappingURL=chunk-
|
|
344
|
+
//# sourceMappingURL=chunk-C63Z2JWT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../workbench/contribution.ts","../workbench/header.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport {\n getWorkbenchLayoutFrame,\n type WorkbenchContribution,\n type WorkbenchFrame,\n type WorkbenchHostDockEntry,\n type WorkbenchHostLaunchRequest,\n type WorkbenchHostNodeBodyContext\n} from \"@tutti-os/workbench-surface\";\nimport {\n resolveAgentGUIExpandedWindowFrame,\n shouldAutoCollapseAgentGUIConversationRail\n} from \"../agent-gui/agentGuiNode/model/agentGuiRailLayout.ts\";\nimport { agentGuiDockIconUrls } from \"../dockIcons.ts\";\nimport { AgentGuiWorkbenchHeader } from \"./header.ts\";\nimport {\n agentGuiWorkbenchDockEntryId,\n agentGuiWorkbenchProviderFromIdentifier,\n agentGuiWorkbenchTypeId,\n createAgentGuiWorkbenchLaunchDescriptor\n} from \"./launch.ts\";\nimport {\n agentGuiWorkbenchProviderFromInstanceId,\n createAgentGuiWorkbenchNodeStateSource,\n normalizeAgentGuiWorkbenchNodeState,\n normalizeAgentGuiWorkbenchState\n} from \"./state.ts\";\nimport {\n agentGuiWorkbenchProviderLabels,\n agentGuiWorkbenchProviders,\n isAgentGuiWorkbenchDefaultDockProvider,\n resolveAgentGuiWorkbenchProviderLabel\n} from \"./providerCatalog.ts\";\nimport type {\n AgentGuiWorkbenchProvider,\n AgentGuiWorkbenchState\n} from \"./types.ts\";\n\nexport const agentGuiWorkbenchDefaultNodeFrame: WorkbenchFrame = {\n height: 560,\n width: 1040,\n x: 140,\n y: 48\n};\n\nexport const agentGuiWorkbenchDefaultUsableHeightRatio = 0.7;\n\nexport const AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT =\n \"nextop:agent-gui-workbench-conversation-rail-toggle\";\n\nexport interface AgentGuiWorkbenchConversationRailToggleDetail {\n conversationRailCollapsed: boolean;\n instanceId: string;\n}\n\nexport interface AgentGuiWorkbenchContributionCopy {\n collapseConversationRail: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n nodeTitle: string;\n}\n\nexport type AgentGuiWorkbenchContributionCopyOverrides =\n Partial<AgentGuiWorkbenchContributionCopy>;\n\nexport const agentGuiWorkbenchDefaultCopy: AgentGuiWorkbenchContributionCopy = {\n collapseConversationRail: \"Collapse conversation rail\",\n expandConversationRail: \"Expand conversation rail\",\n fallbackAgentLabel: \"Agent\",\n nodeTitle: \"Agent\"\n};\n\nexport interface AgentGuiWorkbenchRenderBodyHelpers {\n nodeTypeId: string;\n onStateChange(state: AgentGuiWorkbenchState): void;\n provider: AgentGuiWorkbenchProvider;\n}\n\nexport interface CreateAgentGuiWorkbenchContributionInput {\n copy?: AgentGuiWorkbenchContributionCopyOverrides;\n dockIconUrls?: Partial<Record<AgentGuiWorkbenchProvider, string>>;\n dockSectionId?: string;\n frame?: WorkbenchFrame;\n id?: string;\n renderBody(\n context: WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n helpers: AgentGuiWorkbenchRenderBodyHelpers\n ): ReactNode;\n resolveDockEntryVisibility?: (\n provider: AgentGuiWorkbenchProvider\n ) => WorkbenchHostDockEntry[\"visibility\"];\n workspaceId: string;\n}\n\nexport function createAgentGuiWorkbenchContribution(\n input: CreateAgentGuiWorkbenchContributionInput\n): WorkbenchContribution {\n const nodeStateSource = createAgentGuiWorkbenchNodeStateSource({\n workspaceId: input.workspaceId\n });\n const frame = input.frame ?? agentGuiWorkbenchDefaultNodeFrame;\n const copy = resolveAgentGuiWorkbenchContributionCopy(input.copy);\n\n return {\n dockEntries: agentGuiWorkbenchProviders.map((provider, index) =>\n createAgentGuiWorkbenchDockEntry({\n label: agentGuiWorkbenchProviderLabels[provider],\n iconUrl:\n input.dockIconUrls?.[provider] ?? agentGuiDockIconUrls[provider],\n order: index,\n provider,\n sectionId: input.dockSectionId ?? \"agents\",\n visibility:\n input.resolveDockEntryVisibility?.(provider) ??\n (isAgentGuiWorkbenchDefaultDockProvider(provider)\n ? \"always\"\n : \"never\")\n })\n ),\n externalStateSource: nodeStateSource.externalStateSource,\n id: input.id ?? \"workspace-agent-gui\",\n nodes: [\n {\n frame,\n instance: { mode: \"multi\" },\n renderBody: (context) =>\n input.renderBody(\n context as WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n {\n nodeTypeId: agentGuiWorkbenchTypeId,\n onStateChange: (state) => {\n nodeStateSource.writeNodeState({\n instanceId: context.instanceId,\n state,\n typeId: agentGuiWorkbenchTypeId\n });\n },\n provider: agentGuiWorkbenchProviderFromInstanceId(\n context.instanceId\n )\n }\n ),\n renderHeader: ({\n defaultActions,\n dragHandleProps,\n externalNodeState,\n instanceId,\n isFocused,\n node,\n surfaceSize,\n windowActions\n }) => {\n const provider = agentGuiWorkbenchProviderFromInstanceId(instanceId);\n const title = resolveAgentGuiWorkbenchProviderLabel(provider);\n const workbenchState = normalizeAgentGuiWorkbenchState(\n externalNodeState ?? node.data.runtimeNodeState\n );\n const nodeState = normalizeAgentGuiWorkbenchNodeState(\n workbenchState,\n provider\n );\n const isConversationRailAutoCollapsed =\n shouldAutoCollapseAgentGUIConversationRail(node.frame.width);\n const isConversationRailCollapsed =\n nodeState.conversationRailCollapsed === true ||\n isConversationRailAutoCollapsed;\n const persistConversationRailCollapsed = (collapsed: boolean) => {\n nodeStateSource.writeNodeState({\n instanceId,\n state: {\n ...workbenchState,\n conversationRailCollapsed: collapsed\n },\n typeId: agentGuiWorkbenchTypeId\n });\n };\n const announceConversationRailCollapsed = (collapsed: boolean) => {\n window.dispatchEvent(\n new CustomEvent<AgentGuiWorkbenchConversationRailToggleDetail>(\n AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,\n {\n detail: {\n conversationRailCollapsed: collapsed,\n instanceId\n }\n }\n )\n );\n };\n\n return createElement(AgentGuiWorkbenchHeader, {\n copy,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n title,\n ...dragHandleProps,\n onPointerDown: (event) => {\n dragHandleProps.onPointerDown?.(event);\n if (!isFocused) {\n windowActions.focus();\n }\n },\n onToggleConversationRail: (nextCollapsed) => {\n announceConversationRailCollapsed(nextCollapsed);\n if (\n isConversationRailCollapsed &&\n nextCollapsed === false &&\n node.displayMode !== \"fullscreen\"\n ) {\n const expandedFrame = resolveAgentGUIExpandedWindowFrame({\n conversationRailWidthPx: nodeState.conversationRailWidthPx,\n desktopSize: surfaceSize,\n height: node.frame.height,\n position: {\n x: node.frame.x,\n y: node.frame.y\n },\n width: node.frame.width\n });\n\n windowActions.resize({\n ...node.frame,\n height: expandedFrame.size.height,\n width: expandedFrame.size.width,\n x: expandedFrame.position.x,\n y: expandedFrame.position.y\n });\n }\n\n persistConversationRailCollapsed(nextCollapsed);\n }\n });\n },\n title: copy.nodeTitle,\n typeId: agentGuiWorkbenchTypeId,\n window: {\n closable: true,\n defaultOpen: false,\n minimizedDock: {\n kind: \"snapshot\"\n },\n minimizable: true\n }\n }\n ],\n onLaunchRequest: (request) => {\n if (request.typeId !== agentGuiWorkbenchTypeId) {\n return null;\n }\n\n const {\n activation,\n dockEntryId,\n instanceId,\n provider,\n reuseDockEntryNode,\n targetAgentSessionId\n } = createAgentGuiWorkbenchLaunchDescriptor(request);\n const title = resolveAgentGuiWorkbenchProviderLabel(provider);\n if (targetAgentSessionId) {\n const previousState = nodeStateSource.readNodeState({\n instanceId,\n typeId: agentGuiWorkbenchTypeId\n });\n nodeStateSource.writeNodeState({\n instanceId,\n state: {\n ...(previousState ?? normalizeAgentGuiWorkbenchState(null)),\n ...(targetAgentSessionId\n ? { lastActiveAgentSessionId: targetAgentSessionId }\n : {})\n },\n typeId: agentGuiWorkbenchTypeId\n });\n }\n return {\n activation,\n defaultFrame: resolveAgentGuiWorkbenchDefaultLaunchFrame({\n frame,\n request\n }),\n dockEntryId,\n framePolicy: \"cascade-same-type-centered\",\n instanceId,\n reuseDockEntryNode,\n title,\n typeId: agentGuiWorkbenchTypeId\n };\n }\n };\n}\n\nexport function resolveAgentGuiWorkbenchDefaultLaunchFrame(input: {\n frame: WorkbenchFrame;\n request: Pick<\n WorkbenchHostLaunchRequest,\n \"layoutConstraints\" | \"surfaceSize\"\n >;\n}): WorkbenchFrame {\n const layoutFrame = getWorkbenchLayoutFrame(\n input.request.surfaceSize,\n input.request.layoutConstraints\n );\n\n return {\n ...input.frame,\n height: Math.round(\n layoutFrame.height * agentGuiWorkbenchDefaultUsableHeightRatio\n )\n };\n}\n\nexport function resolveAgentGuiWorkbenchContributionCopy(\n copy?: AgentGuiWorkbenchContributionCopyOverrides\n): AgentGuiWorkbenchContributionCopy {\n return {\n ...agentGuiWorkbenchDefaultCopy,\n ...copy\n };\n}\n\nfunction createAgentGuiWorkbenchDockEntry(input: {\n iconUrl?: string;\n label: string;\n order: number;\n provider: AgentGuiWorkbenchProvider;\n sectionId: string;\n visibility: WorkbenchHostDockEntry[\"visibility\"];\n}): WorkbenchHostDockEntry {\n return {\n icon: createElement(\"img\", {\n alt: \"\",\n draggable: false,\n src: input.iconUrl\n }),\n iconSize: \"large\",\n id: agentGuiWorkbenchDockEntryId(input.provider),\n label: input.label,\n launchBehavior: \"enabled\",\n launchPayload: { provider: input.provider },\n matchNode: (node) =>\n node.data.typeId === agentGuiWorkbenchTypeId &&\n agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) ===\n input.provider,\n order: input.order,\n resolvePopupItem: ({ externalNodeState }) => ({\n title: resolveAgentGuiWorkbenchDockPopupTitle(externalNodeState)\n }),\n sectionId: input.sectionId,\n typeId: agentGuiWorkbenchTypeId,\n visibility: input.visibility\n };\n}\n\nfunction resolveAgentGuiWorkbenchDockPopupTitle(state: unknown): string | null {\n const title = (state as Partial<AgentGuiWorkbenchState> | null)\n ?.lastActiveConversationTitle;\n return typeof title === \"string\" && title.trim() ? title.trim() : null;\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from \"react\";\nimport { Button, PanelIcon, cn } from \"@tutti-os/ui-system\";\n\nexport interface AgentGuiWorkbenchHeaderCopy {\n collapseConversationRail: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n}\n\nexport interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {\n copy: AgentGuiWorkbenchHeaderCopy;\n defaultActions?: ReactNode;\n isConversationRailAutoCollapsed: boolean;\n isConversationRailCollapsed: boolean;\n onToggleConversationRail: (nextCollapsed: boolean) => void;\n title?: string;\n}\n\nexport function AgentGuiWorkbenchHeader({\n className,\n copy,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n onToggleConversationRail,\n title,\n ...headerProps\n}: AgentGuiWorkbenchHeaderProps): ReactNode {\n const toggleLabel = isConversationRailCollapsed\n ? copy.expandConversationRail\n : copy.collapseConversationRail;\n\n return createElement(\n \"header\",\n {\n ...headerProps,\n className: cn(\n \"flex h-full min-h-0 items-center justify-between gap-3 bg-[var(--background-panel)] px-2 pl-3\",\n className\n )\n },\n createElement(\n \"div\",\n { className: \"flex min-w-0 items-center gap-2\" },\n createElement(\n \"span\",\n {\n className:\n \"min-w-0 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]\"\n },\n title?.trim() || copy.fallbackAgentLabel\n ),\n createElement(\n Button as never,\n {\n \"aria-label\": toggleLabel,\n className: \"cursor-pointer rounded-md\",\n \"data-agent-gui-conversation-rail-auto-collapsed\":\n isConversationRailAutoCollapsed ? \"true\" : undefined,\n \"data-agent-gui-conversation-rail-collapsed\":\n isConversationRailCollapsed ? \"true\" : undefined,\n \"data-testid\": \"agent-gui-toggle-conversation-rail\",\n size: \"icon-sm\",\n title: toggleLabel,\n type: \"button\",\n variant: \"ghost\",\n onClick: (event) => {\n event.stopPropagation();\n onToggleConversationRail(!isConversationRailCollapsed);\n },\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n createElement(PanelIcon, { className: \"size-[18px]\" })\n )\n ),\n createElement(\n \"div\",\n {\n className: \"flex flex-none items-center gap-1\",\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n defaultActions\n )\n );\n}\n"],"mappings":"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","names":["createElement","createElement"]}
|