@xenosystem/agent-interface-ui 0.1.19 → 0.1.21
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/adapters/agentHostPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/agentHostPlatformBridge.js +21 -0
- package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
- package/dist/components/agent/AgentInterface.d.ts.map +1 -1
- package/dist/components/agent/AgentInterface.js +33 -19
- package/dist/components/agent/AgentInterface.js.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.js +5 -2
- package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts +5 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.d.ts.map +1 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.js +73 -0
- package/dist/components/agent/DevelopmentCoordinationPanel.js.map +1 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts +53 -0
- package/dist/components/agent/developmentCoordinationProjection.d.ts.map +1 -0
- package/dist/components/agent/developmentCoordinationProjection.js +102 -0
- package/dist/components/agent/developmentCoordinationProjection.js.map +1 -0
- package/dist/components/agent/subagentConversationProjection.d.ts +4 -0
- package/dist/components/agent/subagentConversationProjection.d.ts.map +1 -0
- package/dist/components/agent/subagentConversationProjection.js +76 -0
- package/dist/components/agent/subagentConversationProjection.js.map +1 -0
- package/dist/platformApiTypes.d.ts +24 -0
- package/dist/platformApiTypes.d.ts.map +1 -1
- package/dist/stores/agentChatStore.d.ts +2 -1
- package/dist/stores/agentChatStore.d.ts.map +1 -1
- package/dist/stores/agentChatStore.js +5 -3
- package/dist/stores/agentChatStore.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { ArrowRightLeft, RefreshCw, Repeat2, Target } from 'lucide-react';
|
|
4
|
+
import { getAgentPlatformBridge } from '../../platformBridge.js';
|
|
5
|
+
import { projectDevelopmentCoordinationState } from './developmentCoordinationProjection.js';
|
|
6
|
+
function tryBridge() {
|
|
7
|
+
try {
|
|
8
|
+
return getAgentPlatformBridge();
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function DevelopmentCoordinationPanel({ sessionId }) {
|
|
15
|
+
const ownerId = useMemo(() => tryBridge()?.developmentCoordination?.ownerId ?? 'interface:unavailable', []);
|
|
16
|
+
const [state, setState] = useState(null);
|
|
17
|
+
const [unreachable, setUnreachable] = useState(false);
|
|
18
|
+
const [busy, setBusy] = useState(false);
|
|
19
|
+
const [error, setError] = useState(null);
|
|
20
|
+
const [objective, setObjective] = useState('');
|
|
21
|
+
const [steering, setSteering] = useState('');
|
|
22
|
+
const [targetOwner, setTargetOwner] = useState('');
|
|
23
|
+
const refresh = useCallback(async () => {
|
|
24
|
+
const api = tryBridge()?.developmentCoordination;
|
|
25
|
+
if (!api || !sessionId) {
|
|
26
|
+
setUnreachable(true);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const response = await api.getState({ sessionId });
|
|
31
|
+
setState(projectDevelopmentCoordinationState(response.state));
|
|
32
|
+
setUnreachable(false);
|
|
33
|
+
setError(null);
|
|
34
|
+
}
|
|
35
|
+
catch (cause) {
|
|
36
|
+
setError(cause instanceof Error ? cause.message : 'Coordination state could not be read.');
|
|
37
|
+
}
|
|
38
|
+
}, [sessionId]);
|
|
39
|
+
const act = useCallback(async (action, payload) => {
|
|
40
|
+
const api = tryBridge()?.developmentCoordination;
|
|
41
|
+
if (!api)
|
|
42
|
+
return;
|
|
43
|
+
setBusy(true);
|
|
44
|
+
try {
|
|
45
|
+
const response = await api.action({ sessionId, action, payload });
|
|
46
|
+
setState(projectDevelopmentCoordinationState(response.state));
|
|
47
|
+
setError(null);
|
|
48
|
+
}
|
|
49
|
+
catch (cause) {
|
|
50
|
+
setError(cause instanceof Error ? cause.message : 'Coordination action failed.');
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
setBusy(false);
|
|
54
|
+
}
|
|
55
|
+
}, [sessionId]);
|
|
56
|
+
useEffect(() => { void refresh(); }, [refresh]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
const subscribe = tryBridge()?.developmentCoordination?.subscribeChanged;
|
|
59
|
+
return subscribe?.(() => { void refresh(); });
|
|
60
|
+
}, [refresh]);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
// Host events cover mutations made through this process. The CLI owns the
|
|
63
|
+
// same durable store from a separate process, so those writes cannot reach
|
|
64
|
+
// this in-memory subscription. Refresh while the panel is mounted to keep
|
|
65
|
+
// the two frontends coherent without requiring a desktop restart.
|
|
66
|
+
const timer = window.setInterval(() => { void refresh(); }, 2_000);
|
|
67
|
+
return () => window.clearInterval(timer);
|
|
68
|
+
}, [refresh]);
|
|
69
|
+
if (unreachable)
|
|
70
|
+
return _jsx("p", { className: "px-3 py-3 text-[11px] text-white/32", children: "This surface cannot reach durable Goal / Loop / Handoff state." });
|
|
71
|
+
return (_jsxs("div", { className: "h-full overflow-y-auto px-3 py-3 space-y-3", "data-testid": "development-coordination-panel", children: [_jsxs("header", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-[11px] uppercase tracking-[0.12em] text-white/65", children: "Development lifecycle" }), _jsx("p", { className: "text-[10px] text-white/28", children: sessionId || 'No active session' })] }), _jsx("button", { type: "button", onClick: () => void refresh(), "aria-label": "Refresh development lifecycle", className: "text-white/36 hover:text-white/72", children: _jsx(RefreshCw, { size: 14, "aria-hidden": true }) })] }), error && _jsx("p", { className: "rounded border border-red-400/20 bg-red-400/5 px-2.5 py-2 text-[10px] text-red-200/70", children: error }), _jsxs("section", { className: "rounded border border-white/[0.06] bg-black/20 px-3 py-2.5", "data-testid": "coordination-goal", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "flex items-center gap-1.5 text-[10px] uppercase tracking-[0.12em] text-white/46", children: [_jsx(Target, { size: 13 }), " Goal"] }), _jsx("span", { className: "text-[10px] text-white/28", children: state?.goal?.status ?? 'none' })] }), state?.goal ? _jsxs(_Fragment, { children: [_jsx("p", { className: "mt-2 text-[12px] text-white/72", children: state.goal.objective }), _jsx("p", { className: "mt-1 text-[10px] text-white/36", children: state.goal.progress }), _jsxs("p", { className: "mt-1 text-[10px] text-white/24", children: [state.goal.completedTasks, "/", state.goal.totalTasks, " tasks \u00B7 ", state.goal.criteria.length, " criteria"] }), state.goal.currentMilestone && _jsxs("p", { className: "mt-1.5 text-[10px] text-white/42", children: ["Milestone: ", _jsx("span", { className: "text-white/62", children: state.goal.currentMilestone.title }), " \u00B7 ", state.goal.currentMilestone.status] }), state.goal.currentTask && _jsxs("p", { className: "mt-1 text-[10px] text-white/42", children: ["Current: ", _jsx("span", { className: "text-white/62", children: state.goal.currentTask.title }), state.goal.currentTask.assignedAgentId ? ` · ${state.goal.currentTask.assignedAgentId}` : ''] }), state.goal.outstanding.length > 0 && _jsxs("div", { className: "mt-2", children: [_jsx("p", { className: "text-[9px] uppercase tracking-[0.1em] text-white/24", children: "Outstanding" }), _jsx("ul", { className: "mt-1 space-y-0.5", children: state.goal.outstanding.slice(0, 5).map((item) => _jsxs("li", { className: "text-[10px] text-white/38", children: ["\u2022 ", item] }, item)) })] }), state.goal.decisions.length > 0 && _jsxs("p", { className: "mt-1.5 text-[10px] text-white/30", children: ["Latest decision: ", state.goal.decisions.at(-1)] }), _jsxs("div", { className: "mt-2 flex gap-1.5", children: [_jsx("input", { value: steering, onChange: (event) => setSteering(event.target.value), placeholder: "Steer the active goal", className: "min-w-0 flex-1 rounded border border-white/[0.08] bg-black/30 px-2 py-1 text-[10px] text-white/62" }), _jsx("button", { disabled: busy || !steering.trim(), onClick: () => { void act('goal.steer', { goalId: state.goal.id, expectedVersion: state.goal.version, instruction: steering.trim() }); setSteering(''); }, className: "rounded bg-white/[0.07] px-2 text-[10px] text-white/55 disabled:opacity-30", children: "Send" })] })] }) : _jsxs("div", { className: "mt-2 flex gap-1.5", children: [_jsx("input", { value: objective, onChange: (event) => setObjective(event.target.value), placeholder: "Define a durable goal", className: "min-w-0 flex-1 rounded border border-white/[0.08] bg-black/30 px-2 py-1 text-[10px] text-white/62" }), _jsx("button", { disabled: busy || !objective.trim(), onClick: () => { void act('goal.create', { objective: objective.trim() }); setObjective(''); }, className: "rounded bg-white/[0.07] px-2 text-[10px] text-white/55 disabled:opacity-30", children: "Create" })] })] }), _jsxs("section", { className: "rounded border border-white/[0.06] bg-black/20 px-3 py-2.5", "data-testid": "coordination-loop", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "flex items-center gap-1.5 text-[10px] uppercase tracking-[0.12em] text-white/46", children: [_jsx(Repeat2, { size: 13 }), " Loop"] }), _jsx("span", { className: "text-[10px] text-white/28", children: state?.loop?.status ?? 'none' })] }), state?.loop ? _jsxs(_Fragment, { children: [_jsxs("p", { className: "mt-2 text-[11px] text-white/62", children: [state.loop.kind, " \u00B7 ", state.loop.iterations, " iterations"] }), state.loop.activity && _jsx("p", { className: "mt-1 text-[10px] text-white/32", children: state.loop.activity }), _jsxs("div", { className: "mt-2 flex gap-1.5", children: [state.loop.status === 'paused' ? _jsx("button", { disabled: busy, onClick: () => void act('loop.set_status', { loopId: state.loop.id, expectedVersion: state.loop.version, status: 'running' }), className: "rounded bg-white/[0.07] px-2 py-1 text-[10px] text-white/55", children: "Resume" }) : _jsx("button", { disabled: busy, onClick: () => void act('loop.set_status', { loopId: state.loop.id, expectedVersion: state.loop.version, status: 'paused' }), className: "rounded bg-white/[0.07] px-2 py-1 text-[10px] text-white/55", children: "Pause" }), _jsx("button", { disabled: busy, onClick: () => void act('loop.set_status', { loopId: state.loop.id, expectedVersion: state.loop.version, status: 'stopped', reason: 'Stopped from Agent Interface' }), className: "rounded border border-white/[0.07] px-2 py-1 text-[10px] text-white/42", children: "Stop" })] })] }) : _jsx("button", { disabled: busy || !state?.goal, onClick: () => void act('loop.start', { kind: 'goal-continuation', ...(state?.goal ? { goalId: state.goal.id } : {}) }), className: "mt-2 rounded bg-white/[0.07] px-2 py-1 text-[10px] text-white/55 disabled:opacity-30", children: "Start goal continuation" })] }), _jsxs("section", { className: "rounded border border-white/[0.06] bg-black/20 px-3 py-2.5", "data-testid": "coordination-handoff", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "flex items-center gap-1.5 text-[10px] uppercase tracking-[0.12em] text-white/46", children: [_jsx(ArrowRightLeft, { size: 13 }), " Handoff"] }), _jsxs("span", { className: "text-[10px] text-white/28", children: ["epoch ", state?.owner?.epoch ?? '—'] })] }), _jsxs("p", { className: "mt-2 text-[10px] text-white/36", children: ["Owner: ", state?.owner?.ownerId ?? 'unclaimed'] }), !state?.owner && _jsx("button", { disabled: busy, onClick: () => void act('ownership.acquire', {}), className: "mt-2 rounded bg-white/[0.07] px-2 py-1 text-[10px] text-white/55", children: "Acquire this session" }), state?.owner?.ownerId === ownerId && _jsxs("div", { className: "mt-2 flex gap-1.5", children: [_jsx("input", { value: targetOwner, onChange: (event) => setTargetOwner(event.target.value), placeholder: "Target owner id", className: "min-w-0 flex-1 rounded border border-white/[0.08] bg-black/30 px-2 py-1 text-[10px] text-white/62" }), _jsx("button", { disabled: busy || !targetOwner.trim(), onClick: () => void act('handoff.create', { targetOwnerId: targetOwner.trim(), ...(state.goal ? { goalId: state.goal.id } : {}), ...(state.loop ? { loopId: state.loop.id } : {}) }), className: "rounded bg-white/[0.07] px-2 text-[10px] text-white/55 disabled:opacity-30", children: "Prepare" })] }), state?.handoffs.map((handoff) => _jsxs("div", { className: "mt-2 border-t border-white/[0.05] pt-2 text-[10px] text-white/34", children: [_jsx("span", { className: "text-white/55", children: handoff.status }), " \u00B7 ", handoff.sourceOwnerId, handoff.targetOwnerId ? ` → ${handoff.targetOwnerId}` : '', handoff.status === 'available' && (!handoff.targetOwnerId || handoff.targetOwnerId === ownerId) && _jsx("button", { disabled: busy, onClick: () => void act('handoff.claim', { handoffId: handoff.id }), className: "ml-2 rounded bg-white/[0.07] px-1.5 py-0.5 text-white/55", children: "Claim here" })] }, handoff.id))] })] }));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=DevelopmentCoordinationPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevelopmentCoordinationPanel.js","sourceRoot":"","sources":["../../../src/components/agent/DevelopmentCoordinationPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface DevelopmentCoordinationProjection {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
owner?: {
|
|
4
|
+
ownerId: string;
|
|
5
|
+
leaseId: string;
|
|
6
|
+
epoch: number;
|
|
7
|
+
expiresAt: string;
|
|
8
|
+
};
|
|
9
|
+
goal?: {
|
|
10
|
+
id: string;
|
|
11
|
+
version: number;
|
|
12
|
+
objective: string;
|
|
13
|
+
status: string;
|
|
14
|
+
progress: string;
|
|
15
|
+
completedTasks: number;
|
|
16
|
+
totalTasks: number;
|
|
17
|
+
currentMilestone?: {
|
|
18
|
+
title: string;
|
|
19
|
+
status: string;
|
|
20
|
+
};
|
|
21
|
+
currentTask?: {
|
|
22
|
+
title: string;
|
|
23
|
+
status: string;
|
|
24
|
+
assignedAgentId?: string;
|
|
25
|
+
};
|
|
26
|
+
outstanding: string[];
|
|
27
|
+
decisions: string[];
|
|
28
|
+
criteria: Array<{
|
|
29
|
+
description: string;
|
|
30
|
+
required: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
loop?: {
|
|
34
|
+
id: string;
|
|
35
|
+
version: number;
|
|
36
|
+
kind: string;
|
|
37
|
+
status: string;
|
|
38
|
+
activity?: string;
|
|
39
|
+
iterations: number;
|
|
40
|
+
};
|
|
41
|
+
handoffs: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
version: number;
|
|
44
|
+
status: string;
|
|
45
|
+
sourceOwnerId: string;
|
|
46
|
+
targetOwnerId?: string;
|
|
47
|
+
claimedBy?: string;
|
|
48
|
+
updatedAt: string;
|
|
49
|
+
}>;
|
|
50
|
+
}
|
|
51
|
+
/** Runtime validation at the UI boundary; persisted state is not trusted JSX input. */
|
|
52
|
+
export declare function projectDevelopmentCoordinationState(value: unknown): DevelopmentCoordinationProjection | null;
|
|
53
|
+
//# sourceMappingURL=developmentCoordinationProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"developmentCoordinationProjection.d.ts","sourceRoot":"","sources":["../../../src/components/agent/developmentCoordinationProjection.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;QACpD,WAAW,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QACzE,WAAW,EAAE,MAAM,EAAE,CAAA;QACrB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,EAAE,KAAK,CAAC;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAC,CAAA;KAC5D,CAAA;IACD,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AAkBD,uFAAuF;AACvF,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,iCAAiC,GAAG,IAAI,CAyF5G"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
function record(value) {
|
|
2
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
3
|
+
}
|
|
4
|
+
function text(value) {
|
|
5
|
+
return typeof value === 'string' && value.trim() ? value : undefined;
|
|
6
|
+
}
|
|
7
|
+
function integer(value) {
|
|
8
|
+
return typeof value === 'number' && Number.isInteger(value) ? value : undefined;
|
|
9
|
+
}
|
|
10
|
+
function records(value) {
|
|
11
|
+
return Array.isArray(value) ? value.map(record).filter((entry) => !!entry) : [];
|
|
12
|
+
}
|
|
13
|
+
/** Runtime validation at the UI boundary; persisted state is not trusted JSX input. */
|
|
14
|
+
export function projectDevelopmentCoordinationState(value) {
|
|
15
|
+
const state = record(value);
|
|
16
|
+
const sessionId = text(state?.sessionId);
|
|
17
|
+
if (!state || !sessionId)
|
|
18
|
+
return null;
|
|
19
|
+
const ownerRecord = record(state.owner);
|
|
20
|
+
const ownerId = text(ownerRecord?.ownerId);
|
|
21
|
+
const leaseId = text(ownerRecord?.leaseId);
|
|
22
|
+
const epoch = integer(ownerRecord?.epoch);
|
|
23
|
+
const expiresAt = text(ownerRecord?.expiresAt);
|
|
24
|
+
const goals = records(state.goals);
|
|
25
|
+
const goalRecord = [...goals].reverse().find((candidate) => !['completed', 'failed', 'cancelled'].includes(text(candidate.status) ?? '')) ?? goals.at(-1);
|
|
26
|
+
const progressRecord = record(goalRecord?.progress);
|
|
27
|
+
const criteria = records(goalRecord?.successCriteria)
|
|
28
|
+
.flatMap((criterion) => {
|
|
29
|
+
const description = text(criterion.description);
|
|
30
|
+
return description ? [{ description, required: criterion.required !== false }] : [];
|
|
31
|
+
});
|
|
32
|
+
const milestones = records(goalRecord?.milestones);
|
|
33
|
+
const tasks = records(goalRecord?.tasks);
|
|
34
|
+
const currentMilestoneId = text(progressRecord?.currentMilestoneId);
|
|
35
|
+
const currentTaskId = text(progressRecord?.currentTaskId);
|
|
36
|
+
const milestoneRecord = milestones.find((entry) => text(entry.id) === currentMilestoneId)
|
|
37
|
+
?? milestones.find((entry) => text(entry.status) === 'active');
|
|
38
|
+
const taskRecord = tasks.find((entry) => text(entry.id) === currentTaskId)
|
|
39
|
+
?? tasks.find((entry) => text(entry.status) === 'running');
|
|
40
|
+
const stringList = (input) => Array.isArray(input)
|
|
41
|
+
? input.map(text).filter((entry) => !!entry)
|
|
42
|
+
: [];
|
|
43
|
+
const loops = records(state.loops);
|
|
44
|
+
const loopRecord = [...loops].reverse().find((candidate) => !['stopped', 'completed', 'failed'].includes(text(candidate.status) ?? '')) ?? loops.at(-1);
|
|
45
|
+
return {
|
|
46
|
+
sessionId,
|
|
47
|
+
...(ownerId && leaseId && epoch !== undefined && expiresAt ? { owner: { ownerId, leaseId, epoch, expiresAt } } : {}),
|
|
48
|
+
...(goalRecord && text(goalRecord.id) && integer(goalRecord.version) !== undefined && text(goalRecord.objective) && text(goalRecord.status)
|
|
49
|
+
? {
|
|
50
|
+
goal: {
|
|
51
|
+
id: text(goalRecord.id),
|
|
52
|
+
version: integer(goalRecord.version),
|
|
53
|
+
objective: text(goalRecord.objective),
|
|
54
|
+
status: text(goalRecord.status),
|
|
55
|
+
progress: text(progressRecord?.summary) ?? 'No progress update yet.',
|
|
56
|
+
completedTasks: integer(progressRecord?.completedTaskCount) ?? 0,
|
|
57
|
+
totalTasks: integer(progressRecord?.totalTaskCount) ?? 0,
|
|
58
|
+
...(milestoneRecord && text(milestoneRecord.title) && text(milestoneRecord.status)
|
|
59
|
+
? { currentMilestone: { title: text(milestoneRecord.title), status: text(milestoneRecord.status) } }
|
|
60
|
+
: {}),
|
|
61
|
+
...(taskRecord && text(taskRecord.title) && text(taskRecord.status)
|
|
62
|
+
? { currentTask: { title: text(taskRecord.title), status: text(taskRecord.status), ...(text(taskRecord.assignedAgentId) ? { assignedAgentId: text(taskRecord.assignedAgentId) } : {}) } }
|
|
63
|
+
: {}),
|
|
64
|
+
outstanding: stringList(progressRecord?.outstanding),
|
|
65
|
+
decisions: stringList(progressRecord?.decisions),
|
|
66
|
+
criteria,
|
|
67
|
+
},
|
|
68
|
+
}
|
|
69
|
+
: {}),
|
|
70
|
+
...(loopRecord && text(loopRecord.id) && integer(loopRecord.version) !== undefined && text(loopRecord.kind) && text(loopRecord.status)
|
|
71
|
+
? {
|
|
72
|
+
loop: {
|
|
73
|
+
id: text(loopRecord.id),
|
|
74
|
+
version: integer(loopRecord.version),
|
|
75
|
+
kind: text(loopRecord.kind),
|
|
76
|
+
status: text(loopRecord.status),
|
|
77
|
+
...(text(loopRecord.currentActivity) ? { activity: text(loopRecord.currentActivity) } : {}),
|
|
78
|
+
iterations: records(loopRecord.iterations).length,
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
: {}),
|
|
82
|
+
handoffs: records(state.handoffs).flatMap((handoff) => {
|
|
83
|
+
const id = text(handoff.id);
|
|
84
|
+
const version = integer(handoff.version);
|
|
85
|
+
const status = text(handoff.status);
|
|
86
|
+
const sourceOwnerId = text(handoff.sourceOwnerId);
|
|
87
|
+
const updatedAt = text(handoff.updatedAt);
|
|
88
|
+
if (!id || version === undefined || !status || !sourceOwnerId || !updatedAt)
|
|
89
|
+
return [];
|
|
90
|
+
return [{
|
|
91
|
+
id,
|
|
92
|
+
version,
|
|
93
|
+
status,
|
|
94
|
+
sourceOwnerId,
|
|
95
|
+
...(text(handoff.targetOwnerId) ? { targetOwnerId: text(handoff.targetOwnerId) } : {}),
|
|
96
|
+
...(text(handoff.claimedBy) ? { claimedBy: text(handoff.claimedBy) } : {}),
|
|
97
|
+
updatedAt,
|
|
98
|
+
}];
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=developmentCoordinationProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"developmentCoordinationProjection.js","sourceRoot":"","sources":["../../../src/components/agent/developmentCoordinationProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Conversation } from '../../stores/agentChatStore.js';
|
|
2
|
+
import type { SubagentWorkbenchRun, SubagentWorkbenchRuntimeEvent } from './AgentWorkbenchPanel.js';
|
|
3
|
+
export declare function buildSubagentConversationProjection(run: SubagentWorkbenchRun, runtimeEvents: SubagentWorkbenchRuntimeEvent[], agentId: string, parentConversationId?: string): Partial<Conversation>;
|
|
4
|
+
//# sourceMappingURL=subagentConversationProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagentConversationProjection.d.ts","sourceRoot":"","sources":["../../../src/components/agent/subagentConversationProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EACV,oBAAoB,EACpB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAA;AAEjC,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,oBAAoB,EACzB,aAAa,EAAE,6BAA6B,EAAE,EAC9C,OAAO,EAAE,MAAM,EACf,oBAAoB,SAA2B,GAC9C,OAAO,CAAC,YAAY,CAAC,CA2EvB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export function buildSubagentConversationProjection(run, runtimeEvents, agentId, parentConversationId = run.parentConversationId) {
|
|
2
|
+
const createdAt = run.createdAt || Date.now();
|
|
3
|
+
const completedAt = run.endedAt || run.updatedAt || createdAt;
|
|
4
|
+
const workspaceIdIsPath = /^[A-Za-z]:[\\/]/.test(run.workspaceId) || run.workspaceId.startsWith('/');
|
|
5
|
+
const rootDirectory = run.toolPolicy.allowedDirectories[0] || (workspaceIdIsPath ? run.workspaceId : undefined);
|
|
6
|
+
const grantedDirectories = Array.from(new Set([
|
|
7
|
+
...(rootDirectory ? [rootDirectory] : []),
|
|
8
|
+
...run.toolPolicy.allowedDirectories,
|
|
9
|
+
]));
|
|
10
|
+
const result = run.summary || run.error || `Subagent status: ${run.status}`;
|
|
11
|
+
const messages = [
|
|
12
|
+
{
|
|
13
|
+
id: `${run.id}:objective`,
|
|
14
|
+
role: 'user',
|
|
15
|
+
content: run.objective,
|
|
16
|
+
timestamp: createdAt,
|
|
17
|
+
runtimeKind: 'agent',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: `${run.id}:result`,
|
|
21
|
+
role: 'assistant',
|
|
22
|
+
content: result,
|
|
23
|
+
timestamp: completedAt,
|
|
24
|
+
runtimeKind: 'agent',
|
|
25
|
+
...(run.error ? { error: run.error } : {}),
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
const projectedRuntimeEvents = runtimeEvents.map((event) => ({
|
|
29
|
+
id: event.id,
|
|
30
|
+
sequence: event.sequence,
|
|
31
|
+
conversationId: run.childConversationId,
|
|
32
|
+
source: event.source,
|
|
33
|
+
type: event.type,
|
|
34
|
+
timestamp: event.timestamp,
|
|
35
|
+
...(event.summary ? { summary: event.summary } : {}),
|
|
36
|
+
}));
|
|
37
|
+
const latestRuntimeEvent = projectedRuntimeEvents.at(-1);
|
|
38
|
+
return {
|
|
39
|
+
schemaVersion: 3,
|
|
40
|
+
agentId,
|
|
41
|
+
workspaceId: run.workspaceId,
|
|
42
|
+
teamId: run.teamId,
|
|
43
|
+
workspaceMode: rootDirectory ? 'workspace' : 'chat-only',
|
|
44
|
+
...(rootDirectory ? { rootDirectory, grantedDirectories } : {}),
|
|
45
|
+
messages,
|
|
46
|
+
title: run.childAgentName || run.childAgentId,
|
|
47
|
+
createdAt,
|
|
48
|
+
lastMessageAt: completedAt,
|
|
49
|
+
pendingTurns: [],
|
|
50
|
+
checkpoints: [],
|
|
51
|
+
tasks: [],
|
|
52
|
+
sessionUi: {
|
|
53
|
+
coordinationSessionId: run.childConversationId,
|
|
54
|
+
subagentRunId: run.id,
|
|
55
|
+
parentConversationId,
|
|
56
|
+
parentAgentId: run.parentAgentId,
|
|
57
|
+
childAgentId: run.childAgentId,
|
|
58
|
+
panelOpen: true,
|
|
59
|
+
panelTab: 'trace',
|
|
60
|
+
runtimeEvents: projectedRuntimeEvents,
|
|
61
|
+
...(latestRuntimeEvent?.type ? { lastRuntimeEventType: latestRuntimeEvent.type } : {}),
|
|
62
|
+
...(latestRuntimeEvent?.timestamp
|
|
63
|
+
? { lastRuntimeEventAt: Date.parse(latestRuntimeEvent.timestamp) || completedAt }
|
|
64
|
+
: {}),
|
|
65
|
+
...(run.tokenUsage ? { runtimeTokenUsage: { ...run.tokenUsage } } : {}),
|
|
66
|
+
sessionTab: {
|
|
67
|
+
schemaVersion: 1,
|
|
68
|
+
open: true,
|
|
69
|
+
order: 0,
|
|
70
|
+
lastActiveAt: Date.now(),
|
|
71
|
+
lastViewedAt: Date.now(),
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=subagentConversationProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagentConversationProjection.js","sourceRoot":"","sources":["../../../src/components/agent/subagentConversationProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1146,6 +1146,7 @@ export interface XenoAPI {
|
|
|
1146
1146
|
session?: unknown;
|
|
1147
1147
|
sessionDir?: string;
|
|
1148
1148
|
sessionHistoryPath?: string;
|
|
1149
|
+
coordinationSessionId?: string;
|
|
1149
1150
|
checkpoints?: unknown[];
|
|
1150
1151
|
error?: string;
|
|
1151
1152
|
}>;
|
|
@@ -2603,6 +2604,29 @@ export interface XenoAPI {
|
|
|
2603
2604
|
*/
|
|
2604
2605
|
subscribeChanged?: (listener: (payload: unknown) => void) => () => void;
|
|
2605
2606
|
};
|
|
2607
|
+
developmentCoordination?: {
|
|
2608
|
+
/** Stable identity whose lease is owned and heartbeated by the host client. */
|
|
2609
|
+
ownerId: string;
|
|
2610
|
+
getState: (params: {
|
|
2611
|
+
sessionId: string;
|
|
2612
|
+
}) => Promise<{
|
|
2613
|
+
schemaVersion: 1;
|
|
2614
|
+
sessionId: string;
|
|
2615
|
+
result: unknown;
|
|
2616
|
+
state: object;
|
|
2617
|
+
}>;
|
|
2618
|
+
action: (params: {
|
|
2619
|
+
sessionId: string;
|
|
2620
|
+
action: 'goal.create' | 'goal.update' | 'goal.complete' | 'goal.cancel' | 'goal.steer' | 'loop.start' | 'loop.get' | 'loop.begin' | 'loop.finish' | 'loop.set_status' | 'ownership.acquire' | 'ownership.renew' | 'ownership.release' | 'handoff.create' | 'handoff.claim' | 'handoff.complete' | 'handoff.fail';
|
|
2621
|
+
payload?: Record<string, unknown>;
|
|
2622
|
+
}) => Promise<{
|
|
2623
|
+
schemaVersion: 1;
|
|
2624
|
+
sessionId: string;
|
|
2625
|
+
result: unknown;
|
|
2626
|
+
state: object;
|
|
2627
|
+
}>;
|
|
2628
|
+
subscribeChanged?: (listener: (payload: unknown) => void) => () => void;
|
|
2629
|
+
};
|
|
2606
2630
|
review: {
|
|
2607
2631
|
snapshot: (params: {
|
|
2608
2632
|
runId: string;
|