@tutti-os/agent-gui 0.0.141 → 0.0.143
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/README.md +6 -0
- package/dist/agent-gui.js +3 -3
- package/dist/agents.d.ts +3 -3
- package/dist/agents.js +3 -3
- package/dist/app/renderer/agentactivity.css +23 -2
- package/dist/{chunk-C4ACYHOY.js → chunk-66JZ7BQM.js} +3 -3
- package/dist/chunk-66JZ7BQM.js.map +1 -0
- package/dist/{chunk-LIQWMDME.js → chunk-JME2T7T7.js} +4 -4
- package/dist/{chunk-LIQWMDME.js.map → chunk-JME2T7T7.js.map} +1 -1
- package/dist/{chunk-VF5HD6RF.js → chunk-Z2J3NPPX.js} +829 -739
- package/dist/chunk-Z2J3NPPX.js.map +1 -0
- package/dist/index.d.ts +30 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.js +2 -2
- package/dist/workbench/index.js +2 -2
- package/dist/workbench/tool-sidebar/index.d.ts +4 -2
- package/dist/workbench/tool-sidebar/index.js +9 -2
- package/dist/workbench/tool-sidebar/index.js.map +1 -1
- package/package.json +15 -15
- package/dist/chunk-C4ACYHOY.js.map +0 -1
- package/dist/chunk-VF5HD6RF.js.map +0 -1
package/README.md
CHANGED
|
@@ -265,6 +265,12 @@ owner identity. Entries without explicit ownership remain unclassified; AgentGUI
|
|
|
265
265
|
does not infer ownership from `owner.name`, `owner.avatarUrl`, or other
|
|
266
266
|
presentation metadata.
|
|
267
267
|
|
|
268
|
+
Host-owned task or activity surfaces can render the same target picker with
|
|
269
|
+
`AgentHandoffMenu`. Pass the authoritative ready `AgentGUIAgentTarget` entries
|
|
270
|
+
and keep launch orchestration in the host's `onSelect` callback; the shared
|
|
271
|
+
component owns only menu disclosure, ownership presentation, and handoff-icon
|
|
272
|
+
motion.
|
|
273
|
+
|
|
268
274
|
The old public `providerTargets`, `providerRailMode`, provider-target renderers,
|
|
269
275
|
and `defaultProviderTargetId` contract is intentionally unsupported. Workbench
|
|
270
276
|
state hydration performs a one-time read of legacy `providerTargetId` into
|
package/dist/agent-gui.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentGUI
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Z2J3NPPX.js";
|
|
4
4
|
import "./chunk-A4WCTHWS.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-JME2T7T7.js";
|
|
6
6
|
import "./chunk-TUWQV2MC.js";
|
|
7
7
|
import "./chunk-MHOYBRCY.js";
|
|
8
8
|
import "./chunk-Q2WMHYIB.js";
|
|
@@ -13,7 +13,7 @@ import "./chunk-N2NZASIS.js";
|
|
|
13
13
|
import "./chunk-FM42UN2J.js";
|
|
14
14
|
import "./chunk-UP3ZDYTN.js";
|
|
15
15
|
import "./chunk-TJW5NWWH.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-66JZ7BQM.js";
|
|
17
17
|
import "./chunk-DXT4W2SU.js";
|
|
18
18
|
import "./chunk-5ZZMG4ZB.js";
|
|
19
19
|
import "./chunk-VMPA46ET.js";
|
package/dist/agents.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ declare function resolveAgentGUISelectedDirectoryAgent(input: {
|
|
|
7
7
|
agentTargetId?: string | null;
|
|
8
8
|
defaultAgentTargetId?: string | null;
|
|
9
9
|
}): AgentGUIAgent | null;
|
|
10
|
-
/**
|
|
11
|
-
declare function
|
|
10
|
+
/** Projects the canonical Agent directory into target rows for selection menus. */
|
|
11
|
+
declare function projectAgentGUIAgentsToTargets(agents: readonly AgentGUIAgent[]): AgentGUIAgentTarget[];
|
|
12
12
|
|
|
13
|
-
export { agentGUIAgentIsReady, normalizeAgentGUIAgents,
|
|
13
|
+
export { agentGUIAgentIsReady, normalizeAgentGUIAgents, projectAgentGUIAgentsToTargets, resolveAgentGUISelectedDirectoryAgent };
|
package/dist/agents.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
agentGUIAgentIsReady,
|
|
3
3
|
normalizeAgentGUIAgents,
|
|
4
|
-
|
|
4
|
+
projectAgentGUIAgentsToTargets,
|
|
5
5
|
resolveAgentGUISelectedDirectoryAgent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-66JZ7BQM.js";
|
|
7
7
|
export {
|
|
8
8
|
agentGUIAgentIsReady,
|
|
9
9
|
normalizeAgentGUIAgents,
|
|
10
|
-
|
|
10
|
+
projectAgentGUIAgentsToTargets,
|
|
11
11
|
resolveAgentGUISelectedDirectoryAgent
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=agents.js.map
|
|
@@ -6565,10 +6565,18 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
6565
6565
|
}
|
|
6566
6566
|
|
|
6567
6567
|
.agent-gui-node__conversation-provider-icon {
|
|
6568
|
-
display: inline-block;
|
|
6569
6568
|
flex: 0 0 14px;
|
|
6570
6569
|
width: 14px;
|
|
6571
6570
|
height: 14px;
|
|
6571
|
+
}
|
|
6572
|
+
|
|
6573
|
+
.agent-gui-node__conversation-provider-image {
|
|
6574
|
+
display: block;
|
|
6575
|
+
object-fit: contain;
|
|
6576
|
+
}
|
|
6577
|
+
|
|
6578
|
+
.agent-gui-node__conversation-provider-mask-icon {
|
|
6579
|
+
display: inline-block;
|
|
6572
6580
|
color: var(--text-tertiary);
|
|
6573
6581
|
background-color: currentColor;
|
|
6574
6582
|
mask-position: center;
|
|
@@ -8729,6 +8737,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8729
8737
|
align-items: center;
|
|
8730
8738
|
justify-content: center;
|
|
8731
8739
|
color: var(--text-secondary);
|
|
8740
|
+
contain: layout paint;
|
|
8732
8741
|
}
|
|
8733
8742
|
|
|
8734
8743
|
.agent-gui-node__composer-handoff-icon[data-playing="true"] {
|
|
@@ -8762,10 +8771,12 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8762
8771
|
position: absolute;
|
|
8763
8772
|
inset: 0;
|
|
8764
8773
|
/* Match the APNG's padded 44px canvas to the static icon's visual size. */
|
|
8765
|
-
transform: scale(1.3);
|
|
8774
|
+
transform: translateZ(0) scale(1.3);
|
|
8766
8775
|
filter: var(--agent-gui-handoff-animation-filter, none);
|
|
8767
8776
|
opacity: 0;
|
|
8768
8777
|
pointer-events: none;
|
|
8778
|
+
backface-visibility: hidden;
|
|
8779
|
+
will-change: opacity, transform;
|
|
8769
8780
|
}
|
|
8770
8781
|
|
|
8771
8782
|
.agent-gui-node__composer-handoff-icon-animated[data-active="true"] {
|
|
@@ -8777,6 +8788,16 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8777
8788
|
opacity: 0;
|
|
8778
8789
|
}
|
|
8779
8790
|
|
|
8791
|
+
@media (prefers-reduced-motion: reduce) {
|
|
8792
|
+
.agent-gui-node__composer-handoff-icon-animated {
|
|
8793
|
+
display: none;
|
|
8794
|
+
}
|
|
8795
|
+
|
|
8796
|
+
.agent-gui-node__composer-handoff-icon-static {
|
|
8797
|
+
opacity: 1 !important;
|
|
8798
|
+
}
|
|
8799
|
+
}
|
|
8800
|
+
|
|
8780
8801
|
:root[data-theme="dark"] .agent-gui-node__composer-handoff-icon-animated {
|
|
8781
8802
|
--agent-gui-handoff-animation-filter: brightness(0) invert(1);
|
|
8782
8803
|
}
|
|
@@ -54,7 +54,7 @@ function resolveAgentGUISelectedDirectoryAgent(input) {
|
|
|
54
54
|
}
|
|
55
55
|
return input.agents.find((agent) => agentGUIAgentIsReady(agent)) ?? input.agents[0] ?? null;
|
|
56
56
|
}
|
|
57
|
-
function
|
|
57
|
+
function projectAgentGUIAgentsToTargets(agents) {
|
|
58
58
|
return agents.map((agent) => ({
|
|
59
59
|
targetId: agent.agentTargetId,
|
|
60
60
|
agentTargetId: agent.agentTargetId,
|
|
@@ -99,6 +99,6 @@ export {
|
|
|
99
99
|
normalizeAgentGUIAgents,
|
|
100
100
|
agentGUIAgentIsReady,
|
|
101
101
|
resolveAgentGUISelectedDirectoryAgent,
|
|
102
|
-
|
|
102
|
+
projectAgentGUIAgentsToTargets
|
|
103
103
|
};
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-66JZ7BQM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../agents.ts"],"sourcesContent":["import type {\n AgentGUIAgent,\n AgentGUIAgentAvailabilityStatus,\n AgentGUIAgentTarget\n} from \"./types.ts\";\n\nexport function normalizeAgentGUIAgents(\n agents: readonly AgentGUIAgent[] | null | undefined\n): AgentGUIAgent[] {\n const normalized: AgentGUIAgent[] = [];\n const seenAgentTargetIds = new Set<string>();\n for (const agent of agents ?? []) {\n const agentTargetId = agent.agentTargetId.trim();\n const name = agent.name.trim();\n const iconUrl = agent.iconUrl.trim();\n const maskIconUrl = agent.maskIconUrl?.trim() ?? \"\";\n const heroImageUrl = agent.heroImageUrl?.trim() ?? \"\";\n if (\n !agentTargetId ||\n !name ||\n !iconUrl ||\n seenAgentTargetIds.has(agentTargetId)\n ) {\n continue;\n }\n seenAgentTargetIds.add(agentTargetId);\n const ownerName = agent.owner?.name?.trim() ?? \"\";\n const ownerAvatarUrl = agent.owner?.avatarUrl?.trim() ?? \"\";\n const reason = agent.availability.reason?.trim() ?? \"\";\n normalized.push({\n agentTargetId,\n name,\n iconUrl,\n ...(maskIconUrl ? { maskIconUrl } : {}),\n ...(heroImageUrl ? { heroImageUrl } : {}),\n ...(agent.description?.trim()\n ? { description: agent.description.trim() }\n : {}),\n ...(ownerName || ownerAvatarUrl\n ? {\n owner: {\n ...(ownerName ? { name: ownerName } : {}),\n ...(ownerAvatarUrl ? { avatarUrl: ownerAvatarUrl } : {})\n }\n }\n : {}),\n ...(agent.ownership === \"self\" || agent.ownership === \"shared\"\n ? { ownership: agent.ownership }\n : {}),\n availability: {\n status: normalizeAgentGUIAgentAvailabilityStatus(\n agent.availability.status\n ),\n ...(reason ? { reason } : {}),\n ...(agent.availability.pendingAction\n ? { pendingAction: agent.availability.pendingAction }\n : {})\n },\n provider: agent.provider,\n ...(agent.setupKind === \"target_runtime\"\n ? { setupKind: \"target_runtime\" as const }\n : {})\n });\n }\n return normalized;\n}\n\nexport function agentGUIAgentIsReady(agent: AgentGUIAgent): boolean {\n return agent.availability.status === \"ready\";\n}\n\nexport function resolveAgentGUISelectedDirectoryAgent(input: {\n agents: readonly AgentGUIAgent[];\n agentTargetId?: string | null;\n defaultAgentTargetId?: string | null;\n}): AgentGUIAgent | null {\n const explicitAgentTargetId =\n input.agentTargetId?.trim() || input.defaultAgentTargetId?.trim() || \"\";\n if (explicitAgentTargetId) {\n return (\n input.agents.find(\n (agent) => agent.agentTargetId === explicitAgentTargetId\n ) ?? null\n );\n }\n return (\n input.agents.find((agent) => agentGUIAgentIsReady(agent)) ??\n input.agents[0] ??\n null\n );\n}\n\n/** Projects the canonical Agent directory into target rows for selection menus. */\nexport function projectAgentGUIAgentsToTargets(\n agents: readonly AgentGUIAgent[]\n): AgentGUIAgentTarget[] {\n return agents.map((agent) => ({\n targetId: agent.agentTargetId,\n agentTargetId: agent.agentTargetId,\n provider: agent.provider,\n ref: {\n kind: \"agent-directory\",\n provider: agent.provider,\n agentTargetId: agent.agentTargetId,\n ...(agent.setupKind ? { setupKind: agent.setupKind } : {})\n },\n label: agent.name,\n availability: agent.availability,\n ...(agent.description ? { description: agent.description } : {}),\n iconUrl: agent.iconUrl,\n ...(agent.maskIconUrl ? { maskIconUrl: agent.maskIconUrl } : {}),\n ...(agent.heroImageUrl ? { heroImageUrl: agent.heroImageUrl } : {}),\n ...(agent.owner?.avatarUrl\n ? {\n badge: {\n iconUrl: agent.owner.avatarUrl,\n ...(agent.owner.name ? { label: agent.owner.name } : {})\n }\n }\n : {}),\n ...(agent.owner?.name ? { ownerLabel: agent.owner.name } : {}),\n ...(agent.ownership ? { ownership: agent.ownership } : {}),\n ...(agent.availability.status !== \"ready\" && !agent.setupKind\n ? { disabled: true }\n : {}),\n ...(agent.availability.reason\n ? { unavailableReason: agent.availability.reason }\n : {})\n }));\n}\n\nfunction normalizeAgentGUIAgentAvailabilityStatus(\n status: AgentGUIAgentAvailabilityStatus\n): AgentGUIAgentAvailabilityStatus {\n switch (status) {\n case \"ready\":\n case \"checking\":\n case \"coming_soon\":\n case \"not_installed\":\n case \"auth_required\":\n case \"unavailable\":\n return status;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -23,8 +23,8 @@ import {
|
|
|
23
23
|
} from "./chunk-R2ZADXRB.js";
|
|
24
24
|
import {
|
|
25
25
|
normalizeAgentGUIAgents,
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
26
|
+
projectAgentGUIAgentsToTargets
|
|
27
|
+
} from "./chunk-66JZ7BQM.js";
|
|
28
28
|
import {
|
|
29
29
|
agentGuiDockIconUrls
|
|
30
30
|
} from "./chunk-DXT4W2SU.js";
|
|
@@ -1131,7 +1131,7 @@ function readTrimmedString(value) {
|
|
|
1131
1131
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
1132
1132
|
}
|
|
1133
1133
|
function resolveUnifiedAgentGuiDockTarget(input) {
|
|
1134
|
-
const targets =
|
|
1134
|
+
const targets = projectAgentGUIAgentsToTargets(
|
|
1135
1135
|
normalizeAgentGUIAgents(input.agentDirectory.getSnapshot().agents)
|
|
1136
1136
|
).filter(
|
|
1137
1137
|
(target) => isAgentGuiWorkbenchProvider(target.provider) && isUnifiedAgentGuiDockProvider(target.provider) && target.disabled !== true && isAgentGuiProviderAvailable(target.provider, input.providerAvailability)
|
|
@@ -1632,4 +1632,4 @@ export {
|
|
|
1632
1632
|
AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
|
|
1633
1633
|
createAgentGuiWorkbenchContribution
|
|
1634
1634
|
};
|
|
1635
|
-
//# sourceMappingURL=chunk-
|
|
1635
|
+
//# sourceMappingURL=chunk-JME2T7T7.js.map
|