@tutti-os/agent-gui 0.0.142 → 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 +14 -1
- 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-QRBQ6OHG.js → chunk-Z2J3NPPX.js} +797 -732
- 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 +13 -13
- package/dist/chunk-C4ACYHOY.js.map +0 -1
- package/dist/chunk-QRBQ6OHG.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
|
|
@@ -8737,6 +8737,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8737
8737
|
align-items: center;
|
|
8738
8738
|
justify-content: center;
|
|
8739
8739
|
color: var(--text-secondary);
|
|
8740
|
+
contain: layout paint;
|
|
8740
8741
|
}
|
|
8741
8742
|
|
|
8742
8743
|
.agent-gui-node__composer-handoff-icon[data-playing="true"] {
|
|
@@ -8770,10 +8771,12 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8770
8771
|
position: absolute;
|
|
8771
8772
|
inset: 0;
|
|
8772
8773
|
/* Match the APNG's padded 44px canvas to the static icon's visual size. */
|
|
8773
|
-
transform: scale(1.3);
|
|
8774
|
+
transform: translateZ(0) scale(1.3);
|
|
8774
8775
|
filter: var(--agent-gui-handoff-animation-filter, none);
|
|
8775
8776
|
opacity: 0;
|
|
8776
8777
|
pointer-events: none;
|
|
8778
|
+
backface-visibility: hidden;
|
|
8779
|
+
will-change: opacity, transform;
|
|
8777
8780
|
}
|
|
8778
8781
|
|
|
8779
8782
|
.agent-gui-node__composer-handoff-icon-animated[data-active="true"] {
|
|
@@ -8785,6 +8788,16 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8785
8788
|
opacity: 0;
|
|
8786
8789
|
}
|
|
8787
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
|
+
|
|
8788
8801
|
:root[data-theme="dark"] .agent-gui-node__composer-handoff-icon-animated {
|
|
8789
8802
|
--agent-gui-handoff-animation-filter: brightness(0) invert(1);
|
|
8790
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
|