@xenosystem/agent-conversation 0.1.82 → 0.1.84
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/components/agent/AgentView.d.ts +9 -0
- package/dist/components/agent/AgentView.d.ts.map +1 -1
- package/dist/components/agent/AgentView.js +40 -2
- package/dist/components/agent/AgentView.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/stores/agentChatStore.d.ts +19 -0
- package/dist/stores/agentChatStore.d.ts.map +1 -1
- package/dist/stores/agentChatStore.js +21 -0
- package/dist/stores/agentChatStore.js.map +1 -1
- package/package.json +6 -6
|
@@ -57,6 +57,15 @@ export interface AgentViewProps {
|
|
|
57
57
|
* surface as an app's own panel (`surfaceApplication` on the bridge), else all three.
|
|
58
58
|
*/
|
|
59
59
|
modes?: ReadonlyArray<'chat' | 'agent' | 'machine'>;
|
|
60
|
+
/**
|
|
61
|
+
* The app document this panel is showing (an app's own panel only). New conversations are
|
|
62
|
+
* stamped with it and the strip lists that document's conversations to resume — one history per
|
|
63
|
+
* file, as Figma and Cursor keep theirs. Absent: conversations are not tied to a document.
|
|
64
|
+
*/
|
|
65
|
+
surfaceDocument?: {
|
|
66
|
+
id: string;
|
|
67
|
+
name?: string;
|
|
68
|
+
};
|
|
60
69
|
permissionProfile?: AgentPermissionProfileName;
|
|
61
70
|
runtimeSelection?: HubAgentRuntimeSelection;
|
|
62
71
|
allowedDirectories?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentView.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentView.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAMhF,OAAO,
|
|
1
|
+
{"version":3,"file":"AgentView.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ import { AppWindow, ArrowUp, Square, X, Check, Cloud, Monitor, ChevronDown, Chev
|
|
|
17
17
|
import ReactMarkdown, { defaultUrlTransform } from 'react-markdown';
|
|
18
18
|
import remarkGfm from 'remark-gfm';
|
|
19
19
|
import CodeBlock from '../ui/CodeBlock.js';
|
|
20
|
-
import { useAgentChatStore, setupAgentChatListeners, projectConversationRuntimeState, resolveConversationWorkspaceBinding, resetAcpContinuationForWorkspaceChange } from '../../stores/agentChatStore.js';
|
|
20
|
+
import { useAgentChatStore, setupAgentChatListeners, conversationsForSurfaceDocument, projectConversationRuntimeState, resolveConversationWorkspaceBinding, resetAcpContinuationForWorkspaceChange } from '../../stores/agentChatStore.js';
|
|
21
21
|
import { useAcpAgentStore } from '../../stores/acpAgentStore.js';
|
|
22
22
|
import { useTabStore } from '../../stores/tabStore.js';
|
|
23
23
|
import { useAuthStore } from '../../stores/authStore.js';
|
|
@@ -4357,6 +4357,22 @@ export function AgentView(props) {
|
|
|
4357
4357
|
window.requestAnimationFrame(keepVisible);
|
|
4358
4358
|
}, []);
|
|
4359
4359
|
// Assistant text is display-only. SDK runtime events are the only tool execution authority.
|
|
4360
|
+
/*
|
|
4361
|
+
* The open document, stamped on every conversation this panel starts — the key the per-document
|
|
4362
|
+
* history reads. Only in an app panel: nowhere else is there a document to belong to.
|
|
4363
|
+
*/
|
|
4364
|
+
const surfaceDocumentId = props.surfaceDocument?.id;
|
|
4365
|
+
const surfaceDocumentName = props.surfaceDocument?.name;
|
|
4366
|
+
const documentStamp = useCallback(() => (surfaceApplication && surfaceDocumentId
|
|
4367
|
+
? { surfaceDocument: { app: surfaceApplication.app, id: surfaceDocumentId, ...(surfaceDocumentName ? { name: surfaceDocumentName } : {}) } }
|
|
4368
|
+
: {}), [surfaceApplication, surfaceDocumentId, surfaceDocumentName]);
|
|
4369
|
+
const startNewConversation = useCallback(() => {
|
|
4370
|
+
const id = useAgentChatStore.getState().createConversation(agentId);
|
|
4371
|
+
const stamp = documentStamp();
|
|
4372
|
+
if (stamp.surfaceDocument)
|
|
4373
|
+
updateConversation(id, stamp);
|
|
4374
|
+
props.onNavigateConversation?.(id);
|
|
4375
|
+
}, [agentId, documentStamp, props.onNavigateConversation, updateConversation]);
|
|
4360
4376
|
const ensureConversationId = useCallback((existingConversationId) => {
|
|
4361
4377
|
const currentConversationId = existingConversationId ?? conversationId;
|
|
4362
4378
|
if (currentConversationId)
|
|
@@ -4376,6 +4392,7 @@ export function AgentView(props) {
|
|
|
4376
4392
|
grantedDirectories: workspaceBinding.mode === 'agent'
|
|
4377
4393
|
? workspaceBinding.allowedDirectories
|
|
4378
4394
|
: [],
|
|
4395
|
+
...documentStamp(),
|
|
4379
4396
|
});
|
|
4380
4397
|
onConversationCreated?.(createdConversationId);
|
|
4381
4398
|
return createdConversationId;
|
|
@@ -4383,6 +4400,7 @@ export function AgentView(props) {
|
|
|
4383
4400
|
agentId,
|
|
4384
4401
|
conversationId,
|
|
4385
4402
|
createConversation,
|
|
4403
|
+
documentStamp,
|
|
4386
4404
|
currentRuntimeBinding,
|
|
4387
4405
|
onConversationCreated,
|
|
4388
4406
|
selectedModel,
|
|
@@ -6406,6 +6424,23 @@ export function AgentView(props) {
|
|
|
6406
6424
|
const [laneOpen, setLaneOpen] = useState(false);
|
|
6407
6425
|
const [moreOpen, setMoreOpen] = useState(false);
|
|
6408
6426
|
const [branchMoreOpen, setBranchMoreOpen] = useState(false);
|
|
6427
|
+
const [documentHistoryOpen, setDocumentHistoryOpen] = useState(false);
|
|
6428
|
+
/*
|
|
6429
|
+
* 🔴 Stamp the document on WHATEVER created the conversation. Measured on Canvas 0.42.2 with a real
|
|
6430
|
+
* account: every conversation reached the store without `surfaceDocument`, because a send creates
|
|
6431
|
+
* its conversation on a path that never passes `ensureConversationId` — so the document's history
|
|
6432
|
+
* read "No conversations yet" after three turns. Tagging the conversation this panel SHOWS covers
|
|
6433
|
+
* every creation path at once. Never re-tags one that already belongs to a document.
|
|
6434
|
+
*/
|
|
6435
|
+
useEffect(() => {
|
|
6436
|
+
if (!conversationId || !conversation || conversation.surfaceDocument)
|
|
6437
|
+
return;
|
|
6438
|
+
const stamp = documentStamp();
|
|
6439
|
+
if (stamp.surfaceDocument)
|
|
6440
|
+
updateConversation(conversationId, stamp);
|
|
6441
|
+
}, [conversationId, conversation, documentStamp, updateConversation]);
|
|
6442
|
+
const allConversations = useAgentChatStore((state) => state.conversations);
|
|
6443
|
+
const documentConversations = useMemo(() => (surfaceApplication && surfaceDocumentId ? conversationsForSurfaceDocument(allConversations, surfaceApplication.app, surfaceDocumentId) : []), [allConversations, surfaceApplication, surfaceDocumentId]);
|
|
6409
6444
|
const [backgroundRunsOpen, setBackgroundRunsOpen] = useState(false);
|
|
6410
6445
|
const dockRef = useRef(null);
|
|
6411
6446
|
const boxRef = useRef(null);
|
|
@@ -7591,7 +7626,10 @@ export function AgentView(props) {
|
|
|
7591
7626
|
? 'tools…'
|
|
7592
7627
|
: surfaceToolCount.count > 0
|
|
7593
7628
|
? `${surfaceToolCount.count} ${workspaceBinding.mode === 'agent' ? 'tools' : 'read tools'}`
|
|
7594
|
-
: 'no tools' }), _jsx(CtxGrow, {})
|
|
7629
|
+
: 'no tools' }), _jsx(CtxGrow, {}), surfaceDocumentId && props.onNavigateConversation && (_jsxs(_Fragment, { children: [_jsx(CtxSplit, { label: "New chat", title: `Start a new conversation about this ${surfaceLabel} document`, disabled: controlsLocked, onClick: startNewConversation, moreMenu: "document-history", moreOpen: documentHistoryOpen, onMore: () => setDocumentHistoryOpen((open) => !open) }), _jsx(XaMenu, { open: documentHistoryOpen, onClose: () => setDocumentHistoryOpen(false), menu: "document-history", width: 300, header: `${documentConversations.length} conversation${documentConversations.length === 1 ? '' : 's'} on this document`, children: documentConversations.length === 0
|
|
7630
|
+
? _jsx(XaRow, { label: "No conversations yet", sub: "Ask something below and it is kept with this document", disabled: true, onClick: () => { } })
|
|
7631
|
+
: documentConversations.map((entry) => (_jsx(XaRow, { label: entry.title || 'New conversation', sub: `${entry.messages.length} message${entry.messages.length === 1 ? '' : 's'} · ${new Date(entry.lastMessageAt || entry.createdAt).toLocaleString()}`, selected: entry.id === conversationId, onClick: () => { setDocumentHistoryOpen(false); if (entry.id !== conversationId)
|
|
7632
|
+
props.onNavigateConversation?.(entry.id); } }, entry.id))) })] }))] })) : workspaceBinding.mode === 'agent' ? (_jsxs(_Fragment, { children: [_jsx(CtxSeg, { glyph: "folder", name: true, title: workspaceBinding.rootDirectory || workspaceBinding.allowedDirectories[0], children: projectDisplayName(workspaceBinding.rootDirectory || workspaceBinding.allowedDirectories[0]) }), _jsx(CtxVr, {}), _jsx(CtxSeg, { glyph: cloudRunEnabled && isAuthenticatedForCloud ? 'box' : 'monitor', dim: true, title: !isAuthenticatedForCloud
|
|
7595
7633
|
? 'The agent works on this computer. Sign in to move it into a sandbox on XENO’s servers.'
|
|
7596
7634
|
: cloudRunEnabled
|
|
7597
7635
|
? 'The agent works inside a sandbox on XENO’s servers (billed via credits). Click to work on this computer instead.'
|