@agent-native/toolkit 0.198.4 → 0.198.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/app/agentkit/react/components.d.ts +6 -3
- package/dist/app/agentkit/react/components.d.ts.map +1 -1
- package/dist/app/agentkit/react/components.js +98 -68
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/agentkit/react/styles.css +36 -24
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +32 -15
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts +1 -1
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +11 -38
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/AgentSidebar.d.ts.map +1 -1
- package/dist/app/chat/AgentSidebar.js +3 -11
- package/dist/app/chat/AgentSidebar.js.map +1 -1
- package/dist/app/chat/chat/tool-call-display.d.ts +2 -1
- package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -1
- package/dist/app/chat/chat/tool-call-display.js +83 -55
- package/dist/app/chat/chat/tool-call-display.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +1 -0
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +1 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +1 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +1 -0
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +1 -0
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +1 -0
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +1 -0
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +1 -0
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +1 -0
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +1 -0
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +1 -0
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +1 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/composer/PromptComposer.d.ts +3 -0
- package/dist/composer/PromptComposer.d.ts.map +1 -1
- package/dist/composer/PromptComposer.js +2 -2
- package/dist/composer/PromptComposer.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts +4 -1
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +32 -25
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/ui/sonner.js +1 -1
- package/dist/ui/sonner.js.map +1 -1
- package/package.json +3 -3
- package/src/app/agentkit/react/components.interaction.spec.tsx +93 -0
- package/src/app/agentkit/react/components.spec.tsx +1 -2
- package/src/app/agentkit/react/components.tsx +185 -132
- package/src/app/agentkit/react/composer-context.spec.tsx +7 -0
- package/src/app/agentkit/react/lifecycle.spec.tsx +556 -39
- package/src/app/agentkit/react/styles.css +36 -24
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +60 -1
- package/src/app/chat/AgentKitAssistantChat.tsx +45 -14
- package/src/app/chat/AgentPanel.overlay.spec.tsx +28 -4
- package/src/app/chat/AgentPanel.tsx +51 -168
- package/src/app/chat/AgentSidebar.spec.tsx +19 -19
- package/src/app/chat/AgentSidebar.tsx +59 -94
- package/src/app/chat/chat/tool-call-display.spec.tsx +371 -15
- package/src/app/chat/chat/tool-call-display.tsx +154 -80
- package/src/app/i18n/catalogs/ar-SA.ts +1 -0
- package/src/app/i18n/catalogs/de-DE.ts +1 -0
- package/src/app/i18n/catalogs/en-US.ts +1 -0
- package/src/app/i18n/catalogs/es-ES.ts +1 -0
- package/src/app/i18n/catalogs/fr-FR.ts +1 -0
- package/src/app/i18n/catalogs/hi-IN.ts +1 -0
- package/src/app/i18n/catalogs/ja-JP.ts +1 -0
- package/src/app/i18n/catalogs/ko-KR.ts +1 -0
- package/src/app/i18n/catalogs/pt-BR.ts +1 -0
- package/src/app/i18n/catalogs/zh-CN.ts +1 -0
- package/src/app/i18n/catalogs/zh-TW.ts +1 -0
- package/src/app-shell/sidebar-overflow.spec.tsx +2 -1
- package/src/composer/PromptComposer.context.spec.tsx +28 -15
- package/src/composer/PromptComposer.tsx +7 -0
- package/src/composer/TiptapComposer.spec.ts +40 -6
- package/src/composer/TiptapComposer.tsx +89 -89
- package/src/ui/sonner.spec.ts +15 -0
- package/src/ui/sonner.tsx +1 -1
|
@@ -40,11 +40,12 @@ export declare function formatAgentKitDuration(ms: number, units?: {
|
|
|
40
40
|
minute?: string;
|
|
41
41
|
second?: string;
|
|
42
42
|
}): string;
|
|
43
|
-
export declare function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities, }: {
|
|
43
|
+
export declare function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities, isCurrentSegment, }: {
|
|
44
44
|
runId?: RunId;
|
|
45
45
|
afterSequence?: number;
|
|
46
46
|
throughSequence?: number;
|
|
47
47
|
excludeAgentActivities?: boolean;
|
|
48
|
+
isCurrentSegment?: boolean;
|
|
48
49
|
}): import("react").JSX.Element | null;
|
|
49
50
|
export declare function AgentCollaborationFeed({ runId, afterSequence, throughSequence, }: AgentEventRange): import("react").JSX.Element | null;
|
|
50
51
|
export declare function AgentTaskItem({ value: task, threadId, }: AgentKitRenderProps<AgentTask>): import("react").JSX.Element;
|
|
@@ -73,7 +74,7 @@ export declare function AgentMessageActions({ value: message, threadId, }: Agent
|
|
|
73
74
|
export declare function AgentMessageView({ value: message, threadId, }: AgentKitRenderProps<AgentMessage>): import("react").JSX.Element | null;
|
|
74
75
|
export declare function AgentRunFailure({ error, runId, threadId, }: AgentRunFailureRenderProps): import("react").JSX.Element;
|
|
75
76
|
export declare function AgentConnectionErrorView({ error, threadId, recover, recovering, recoveryError, }: AgentConnectionErrorRenderProps): import("react").JSX.Element;
|
|
76
|
-
export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "slashCommands" | "slashSkills" | "includeDefaultSlashCommands" | "includeDefaultSlashSkills" | "onSlashCommand" | "plusMenuMode" | "voiceEnabled" | "autoFocus" | "disabled" | "submissionDisabled" | "onDisabledClick" | "initialText" | "initialTextKey" | "layoutVariant" | "availableModels" | "modelListLoading" | "selectedModel" | "selectedEngine" | "selectedEffort" | "placeholder" | "onConnectProvider" | "onConnectLocalRuntime" | "imageModelMenu" | "onModelChange" | "onEffortChange" | "availableAgents" | "selectedAgent" | "agentOnly" | "onAgentChange" | "onModelSelectorOpenChange" | "modelStatusChecksEnabled" | "requireAgentEngine" | "attachmentsEnabled" | "onAttachmentRequest" | "contextButtonTooltipDisabled" | "onTextChange" | "contextItems" | "onRemoveContextItem" | "onInspectContextItem" | "onRetryContextItem" | "contextMenuItems" | "attachmentAdapter" | "inlineTextAttachments" | "extraActionButton" | "onSubmit" | "onBeforeSubmit" | "onAttachmentError" | "interceptBuildRequestsForBuilder" | "planModeDisabled" | "planModeDisabledReason" | "stopButton">, "onSubmit"> {
|
|
77
|
+
export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "slashCommands" | "slashSkills" | "includeDefaultSlashCommands" | "includeDefaultSlashSkills" | "onSlashCommand" | "plusMenuMode" | "voiceEnabled" | "autoFocus" | "disabled" | "submissionDisabled" | "onDisabledClick" | "initialText" | "initialTextKey" | "layoutVariant" | "availableModels" | "modelListLoading" | "selectedModel" | "selectedEngine" | "selectedEffort" | "placeholder" | "onConnectProvider" | "onConnectLocalRuntime" | "imageModelMenu" | "onModelChange" | "onEffortChange" | "availableAgents" | "selectedAgent" | "agentOnly" | "onAgentChange" | "onModelSelectorOpenChange" | "modelStatusChecksEnabled" | "requireAgentEngine" | "attachmentsEnabled" | "onAttachmentRequest" | "contextButtonTooltipDisabled" | "onTextChange" | "contextItems" | "onRemoveContextItem" | "onInspectContextItem" | "onRetryContextItem" | "contextMenuItems" | "attachmentAdapter" | "inlineTextAttachments" | "extraActionButton" | "onSubmit" | "onBeforeSubmit" | "onSubmissionPendingChange" | "onAttachmentError" | "interceptBuildRequestsForBuilder" | "planModeDisabled" | "planModeDisabledReason" | "stopButton">, "onSubmit"> {
|
|
77
78
|
/** Override the default AgentKit submit path when the host owns send options. */
|
|
78
79
|
onSubmit?: PromptComposerProps["onSubmit"];
|
|
79
80
|
beforeSend?: (submission: AgentKitComposerSubmission) => void | Promise<void>;
|
|
@@ -82,6 +83,8 @@ export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "s
|
|
|
82
83
|
};
|
|
83
84
|
threadId?: string;
|
|
84
85
|
className?: string;
|
|
86
|
+
/** The host transcript renders its own accessible submission status. */
|
|
87
|
+
announcePendingSubmission?: boolean;
|
|
85
88
|
queueWhileRunning?: boolean;
|
|
86
89
|
showModelSelector?: boolean;
|
|
87
90
|
/** Controlled execution mode for agent-native act/plan workflows. */
|
|
@@ -93,7 +96,7 @@ export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "s
|
|
|
93
96
|
/** Shared host toolbar controls shown above the composer. */
|
|
94
97
|
toolbarSlot?: ReactNode;
|
|
95
98
|
}
|
|
96
|
-
export declare function AgentKitComposer({ threadId: requestedThreadId, className, queueWhileRunning, showModelSelector, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled, autoFocus, mode, defaultMode, onModeChange, toolbarSlot, disabled, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onBeforeSubmit, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, planModeDisabledReason, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }: AgentKitComposerProps): import("react").JSX.Element;
|
|
99
|
+
export declare function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission, queueWhileRunning, showModelSelector, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled, autoFocus, mode, defaultMode, onModeChange, toolbarSlot, disabled, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onBeforeSubmit, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, planModeDisabledReason, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }: AgentKitComposerProps): import("react").JSX.Element;
|
|
97
100
|
export interface AgentKitChatProps {
|
|
98
101
|
title?: ReactNode;
|
|
99
102
|
toolbar?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/app/agentkit/react/components.tsx"],"names":[],"mappings":"AAuCA,OAAO,EAEL,SAAS,EAUT,KAAK,SAAS,EAKd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAUL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAG1B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAS3E,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAE3B,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAErB,KAAK,SAAS,EAGd,KAAK,WAAW,EAChB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAOL,KAAK,+BAA+B,EAEpC,KAAK,mBAAmB,EAGxB,KAAK,0BAA0B,EAChC,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACnD;AAED,UAAU,0BAA0B;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,4EAA4E;AAC5E,qBAAa,qBAAsB,SAAQ,SAAS,CAClD,0BAA0B,EAC1B,0BAA0B,CAC3B;IACQ,KAAK,EAAE,0BAA0B,CAEtC;IAEF,OAAc,wBAAwB,CACpC,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,0BAA0B,CAAC,CAErC;IAED,OAAc,wBAAwB,CACpC,KAAK,EAAE,0BAA0B,EACjC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAI5C;IAEM,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAU5D;IAEM,MAAM,IAAI,SAAS,CAKzB;CACF;AA6HD,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS/D;AA+CD,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASlE;AAiED,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EAAE,MAAM,GACd,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,+BA0B3C;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EAAE,KAAK,GACb,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,+BASvC;AAoDD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EAAE,WAAW,EAClB,QAAQ,GACT,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,+BAsDvC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EAAE,QAAQ,EACf,QAAQ,GACT,EAAE,mBAAmB,CAAC,aAAa,CAAC,+BA+DpC;
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/app/agentkit/react/components.tsx"],"names":[],"mappings":"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"}
|
|
@@ -331,7 +331,25 @@ function RepeatedActivityCluster({ activities, threadId, }) {
|
|
|
331
331
|
setOpen((current) => !current);
|
|
332
332
|
}, children: [_jsx(ActivitySourceIcon, { activity: activity, threadId: threadId }), agent && AgentRenderer ? (_jsx(AgentRenderer, { value: agent, threadId: threadId })) : activity.agentId ? (_jsx(AgentIdentityChip, { id: activity.agentId, name: activity.agentId })) : null, _jsx("span", { className: "agentkit-activity-label", children: activity.label }), activity.object ? (_jsx(ObjectRenderer, { value: activity.object, threadId: threadId })) : null, !activity.object && activity.source ? (_jsx(ObjectRenderer, { value: activity.source, threadId: threadId })) : null, _jsxs("span", { className: "agentkit-activity-cluster-count", children: ["\u00D7", activities.length] }), _jsx(IconChevronRight, { "aria-hidden": "true", className: "agentkit-icon agentkit-disclosure-icon", "data-open": open ? "true" : "false" })] }), _jsx("div", { className: "agentkit-activity-cluster-items", children: activities.map((item) => (_jsx(AgentActivityItem, { value: item, threadId: threadId }, item.id))) })] }));
|
|
333
333
|
}
|
|
334
|
+
function formatToolDiagnostic(value) {
|
|
335
|
+
if (value === undefined)
|
|
336
|
+
return undefined;
|
|
337
|
+
if (typeof value === "string")
|
|
338
|
+
return value || undefined;
|
|
339
|
+
try {
|
|
340
|
+
return JSON.stringify(value, null, 2) ?? String(value);
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
return String(value);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
334
346
|
function toolToActivity(tool) {
|
|
347
|
+
const failed = tool.status === "failed";
|
|
348
|
+
const errorMessage = failed
|
|
349
|
+
? ((tool.error?.message?.trim() ? tool.error.message : undefined) ??
|
|
350
|
+
formatToolDiagnostic(tool.output) ??
|
|
351
|
+
formatToolDiagnostic(tool.error?.details))
|
|
352
|
+
: undefined;
|
|
335
353
|
return {
|
|
336
354
|
id: tool.id,
|
|
337
355
|
kind: inferAgentActivityKind(tool.name),
|
|
@@ -341,11 +359,16 @@ function toolToActivity(tool) {
|
|
|
341
359
|
: tool.status === "running"
|
|
342
360
|
? "running"
|
|
343
361
|
: tool.status,
|
|
344
|
-
detail:
|
|
345
|
-
?
|
|
346
|
-
: typeof tool.
|
|
347
|
-
? tool.
|
|
348
|
-
:
|
|
362
|
+
detail: failed
|
|
363
|
+
? undefined
|
|
364
|
+
: typeof tool.output === "string"
|
|
365
|
+
? tool.output
|
|
366
|
+
: typeof tool.input === "string"
|
|
367
|
+
? tool.input
|
|
368
|
+
: undefined,
|
|
369
|
+
summary: failed && errorMessage
|
|
370
|
+
? [{ type: "text", text: errorMessage }]
|
|
371
|
+
: undefined,
|
|
349
372
|
};
|
|
350
373
|
}
|
|
351
374
|
function sequenceInRange(sequence, { afterSequence, throughSequence }) {
|
|
@@ -436,7 +459,7 @@ function messageEventHasVisibleAssistantOutput(event, assistantMessageIds) {
|
|
|
436
459
|
return true;
|
|
437
460
|
}));
|
|
438
461
|
}
|
|
439
|
-
export function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities = false, }) {
|
|
462
|
+
export function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities = false, isCurrentSegment = true, }) {
|
|
440
463
|
const { threadId, slots, registry, labels } = useAgentKit();
|
|
441
464
|
const thread = useAgentThread();
|
|
442
465
|
const runEvents = runId
|
|
@@ -523,7 +546,7 @@ export function AgentActivityGroup({ runId, afterSequence, throughSequence, excl
|
|
|
523
546
|
});
|
|
524
547
|
const durableToolResultIds = new Set(durableToolResults.map(({ tool }) => tool.id));
|
|
525
548
|
const activityItems = items.filter((activity) => !durableToolResultIds.has(activity.id));
|
|
526
|
-
const
|
|
549
|
+
const latestRunningActivity = items.reduce((current, activity) => {
|
|
527
550
|
if (activity.status !== "running")
|
|
528
551
|
return current;
|
|
529
552
|
if (!current)
|
|
@@ -552,33 +575,32 @@ export function AgentActivityGroup({ runId, afterSequence, throughSequence, excl
|
|
|
552
575
|
const durationMs = Number.isFinite(startedAt) && Number.isFinite(completedAt)
|
|
553
576
|
? Math.max(0, completedAt - startedAt)
|
|
554
577
|
: undefined;
|
|
555
|
-
const
|
|
556
|
-
(
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
const
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
? Math.max(0, elapsedAt - startedAt)
|
|
570
|
-
: undefined;
|
|
571
|
-
const completedRunSummary = throughSequence !== undefined ||
|
|
572
|
-
(items.length > 0 && !running) ||
|
|
573
|
-
runEvents.some((event) => event.runId === runId &&
|
|
574
|
-
(event.type === "run.completed" ||
|
|
575
|
-
event.type === "run.failed" ||
|
|
576
|
-
event.type === "run.cancelled")) ||
|
|
577
|
-
(afterSequence === undefined &&
|
|
578
|
-
run !== undefined &&
|
|
579
|
-
["completed", "failed", "cancelled"].includes(run.status));
|
|
580
|
-
if (items.length === 0)
|
|
578
|
+
const hasTerminalRunEvent = runEvents.some((event) => event.runId === runId &&
|
|
579
|
+
(event.type === "run.completed" ||
|
|
580
|
+
event.type === "run.failed" ||
|
|
581
|
+
event.type === "run.cancelled"));
|
|
582
|
+
const activelyWorking = isCurrentSegment &&
|
|
583
|
+
(run ? run.status === "running" : running && !hasTerminalRunEvent);
|
|
584
|
+
const completedRunSummary = !activelyWorking &&
|
|
585
|
+
(throughSequence !== undefined ||
|
|
586
|
+
(items.length > 0 && !running) ||
|
|
587
|
+
hasTerminalRunEvent ||
|
|
588
|
+
(afterSequence === undefined &&
|
|
589
|
+
run !== undefined &&
|
|
590
|
+
["completed", "failed", "cancelled"].includes(run.status)));
|
|
591
|
+
if (items.length === 0 && !activelyWorking)
|
|
581
592
|
return null;
|
|
593
|
+
const currentActivity = activelyWorking
|
|
594
|
+
? (latestRunningActivity ?? {
|
|
595
|
+
id: `thinking:${runId ?? thread.id}`,
|
|
596
|
+
kind: "model",
|
|
597
|
+
label: labels.reasoning,
|
|
598
|
+
status: "running",
|
|
599
|
+
})
|
|
600
|
+
: undefined;
|
|
601
|
+
const currentActivityLabel = currentActivity?.label === "Contacting model"
|
|
602
|
+
? labels.reasoning
|
|
603
|
+
: currentActivity?.label;
|
|
582
604
|
const displayGroups = new Map(ACTIVITY_BUCKET_ORDER.map((bucket) => [bucket, []]));
|
|
583
605
|
const clusterIdentity = (activity) => {
|
|
584
606
|
const tool = toolMap.get(activity.id);
|
|
@@ -604,7 +626,8 @@ export function AgentActivityGroup({ runId, afterSequence, throughSequence, excl
|
|
|
604
626
|
bucketGroups.push([activity]);
|
|
605
627
|
}
|
|
606
628
|
}
|
|
607
|
-
const hasExpandableActivity = ACTIVITY_BUCKET_ORDER.some((bucket) =>
|
|
629
|
+
const hasExpandableActivity = ACTIVITY_BUCKET_ORDER.some((bucket) => (!completedRunSummary || bucket !== "thinking") &&
|
|
630
|
+
displayGroups.get(bucket).length > 0);
|
|
608
631
|
const activityBucketLabels = {
|
|
609
632
|
thinking: "Thinking",
|
|
610
633
|
research: "Research",
|
|
@@ -618,19 +641,16 @@ export function AgentActivityGroup({ runId, afterSequence, throughSequence, excl
|
|
|
618
641
|
second: labels.durationSecondShort,
|
|
619
642
|
});
|
|
620
643
|
const summaryLabel = activelyWorking
|
|
621
|
-
?
|
|
622
|
-
? labels.workingFor.replace("{{duration}}", formatDuration(activeDurationMs))
|
|
623
|
-
: labels.working
|
|
644
|
+
? ""
|
|
624
645
|
: completedRunSummary
|
|
625
646
|
? durationMs !== undefined && durationMs >= 1_000
|
|
626
647
|
? labels.workedFor.replace("{{duration}}", formatDuration(durationMs))
|
|
627
648
|
: labels.worked
|
|
628
649
|
: labels.activities;
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
labels.error })] })] }, activity.id))), durableToolResults.length ? (_jsx("div", { "data-agentkit-tool-results": "true", children: durableToolResults.map(({ tool, Renderer }) => (_jsx(Renderer, { value: tool, threadId: threadId }, tool.id))) })) : null, hasExpandableActivity ? (_jsx(AgentWorkDisclosure, { label: summaryLabel, running: visiblyRunning, current: currentActivity ? (_jsxs("span", { className: "agentkit-activities-current", "data-running": "true", "data-agentkit-current-activity": "true", "aria-live": "polite", children: [_jsx(ActivitySourceIcon, { activity: currentActivity, threadId: threadId, compact: true }), _jsx("span", { className: "agentkit-activities-current-label", children: currentActivity.label })] })) : null, children: _jsx("div", { className: "agentkit-activities-list", children: ACTIVITY_BUCKET_ORDER.map((bucket) => {
|
|
650
|
+
const visiblyRunning = activelyWorking;
|
|
651
|
+
return (_jsxs(_Fragment, { children: [durableToolResults.length ? (_jsx("div", { "data-agentkit-tool-results": "true", children: durableToolResults.map(({ tool, Renderer }) => (_jsx(Renderer, { value: tool, threadId: threadId }, tool.id))) })) : null, hasExpandableActivity || activelyWorking ? (_jsx(AgentWorkDisclosure, { label: summaryLabel, running: visiblyRunning, expandable: hasExpandableActivity, current: currentActivity ? (_jsxs("span", { className: "agentkit-activities-current", "data-running": "true", "data-agentkit-current-activity": "true", "aria-live": "polite", children: [_jsx(ActivitySourceIcon, { activity: currentActivity, threadId: threadId, compact: true }), _jsx("span", { className: "agentkit-activities-current-label agent-running-shimmer", children: currentActivityLabel })] })) : null, children: _jsx("div", { className: "agentkit-activities-list", children: ACTIVITY_BUCKET_ORDER.map((bucket) => {
|
|
652
|
+
if (completedRunSummary && bucket === "thinking")
|
|
653
|
+
return null;
|
|
634
654
|
const groups = displayGroups.get(bucket);
|
|
635
655
|
if (groups.length === 0)
|
|
636
656
|
return null;
|
|
@@ -656,14 +676,16 @@ export function AgentActivityGroup({ runId, afterSequence, throughSequence, excl
|
|
|
656
676
|
AgentActivityItem;
|
|
657
677
|
return (_jsx(Renderer, { value: activity, threadId: threadId }, activity.id));
|
|
658
678
|
}) })] }, bucket));
|
|
659
|
-
}) }) })) : (_jsxs("div", { className: "agentkit-activities-static", children: [_jsx("span", { className: "agentkit-activities-label", children: summaryLabel }), currentActivity ? (_jsxs("span", { className: "agentkit-activities-current", "data-running": "true", "data-agentkit-current-activity": "true", "aria-live": "polite", children: [_jsx(ActivitySourceIcon, { activity: currentActivity, threadId: threadId, compact: true }), _jsx("span", { className: "agentkit-activities-current-label", children:
|
|
679
|
+
}) }) })) : (_jsxs("div", { className: "agentkit-activities-static", children: [summaryLabel ? (_jsx("span", { className: "agentkit-activities-label", children: summaryLabel })) : null, currentActivity ? (_jsxs("span", { className: "agentkit-activities-current", "data-running": "true", "data-agentkit-current-activity": "true", "aria-live": "polite", children: [_jsx(ActivitySourceIcon, { activity: currentActivity, threadId: threadId, compact: true }), _jsx("span", { className: "agentkit-activities-current-label agent-running-shimmer", children: currentActivityLabel })] })) : null] }))] }));
|
|
660
680
|
}
|
|
661
|
-
function AgentWorkDisclosure({ label, running, current, children, }) {
|
|
681
|
+
function AgentWorkDisclosure({ label, running, expandable = true, current, children, }) {
|
|
662
682
|
const [open, setOpen] = useState(false);
|
|
663
|
-
return (_jsxs("details", { className: "agentkit-activities", "data-running": running ? "true" : undefined, open: open, children: [_jsxs("summary", { className: "agentkit-activities-summary", onClick: (event) => {
|
|
683
|
+
return (_jsxs("details", { className: "agentkit-activities", "data-running": running ? "true" : undefined, "data-expandable": expandable ? "true" : "false", open: open, children: [_jsxs("summary", { className: "agentkit-activities-summary", "aria-disabled": !expandable, onClick: (event) => {
|
|
664
684
|
event.preventDefault();
|
|
685
|
+
if (!expandable)
|
|
686
|
+
return;
|
|
665
687
|
setOpen((value) => !value);
|
|
666
|
-
}, children: [_jsxs("span", { className: "agentkit-activities-
|
|
688
|
+
}, children: [_jsxs("span", { className: "agentkit-activities-summary-content", children: [label ? (_jsx("span", { className: "agentkit-activities-heading", children: _jsx("span", { className: "agentkit-activities-label", children: label }) })) : null, current] }), _jsx(IconChevronRight, { "aria-hidden": "true", className: "agentkit-icon agentkit-summary-chevron" })] }), children] }));
|
|
667
689
|
}
|
|
668
690
|
function AgentReasoningParts({ message, threadId, active, }) {
|
|
669
691
|
return message.parts.map((part, index) => part.type === "reasoning" &&
|
|
@@ -677,9 +699,8 @@ const ACTIVITY_BUCKET_ORDER = [
|
|
|
677
699
|
"other",
|
|
678
700
|
];
|
|
679
701
|
function activityBucketForKind(kind) {
|
|
680
|
-
if (kind === "reasoning"
|
|
702
|
+
if (kind === "reasoning")
|
|
681
703
|
return "thinking";
|
|
682
|
-
}
|
|
683
704
|
if (kind === "search" || kind === "read")
|
|
684
705
|
return "research";
|
|
685
706
|
if (kind === "write" ||
|
|
@@ -1171,6 +1192,7 @@ export function AgentMessageActions({ value: message, threadId, }) {
|
|
|
1171
1192
|
const [actionsMenuOpen, setActionsMenuOpen] = useState(false);
|
|
1172
1193
|
const requestIdCopiedTimer = useRef(null);
|
|
1173
1194
|
const requestId = useMemo(() => resolveAgentMessageRequestId(message, thread.events), [message, thread.events]);
|
|
1195
|
+
const hasMessageMenuActions = Boolean(requestId || (forkingCapability.visible && onThreadForked));
|
|
1174
1196
|
const runId = useMemo(() => resolveAgentMessageRunId(message, thread.events), [message, thread.events]);
|
|
1175
1197
|
const messageSeq = thread.messages.findIndex((item) => item.id === message.id);
|
|
1176
1198
|
useEffect(() => () => {
|
|
@@ -1271,7 +1293,7 @@ export function AgentMessageActions({ value: message, threadId, }) {
|
|
|
1271
1293
|
requestIdAction.error ??
|
|
1272
1294
|
forkAction.error ??
|
|
1273
1295
|
regenerateAction.error;
|
|
1274
|
-
return (_jsxs("div", { className: "agentkit-message-actions", "data-role": message.role, children: [message.role === "assistant" ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "agentkit-message-actions-leading", children: [_jsx(IconButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }), feedbackCapability.visible ? (_jsxs(_Fragment, { children: [_jsx(IconButton, { label: labels.positiveFeedback, icon: _jsx(IconThumbUp, { "aria-hidden": "true" }), size: "compact", "aria-pressed": feedback === "positive", pending: feedbackAction.pending && feedback === "positive", disabled: feedbackAction.pending || !feedbackCapability.enabled, title: feedbackCapability.reason, onPress: () => void updateFeedback("positive") }), _jsx(Popover, { open: feedbackReasonOpen, onOpenChange: (open) => {
|
|
1296
|
+
return (_jsxs("div", { className: "agentkit-message-actions", "data-role": message.role, "data-streaming": message.status === "streaming" ? "true" : undefined, children: [message.role === "assistant" ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "agentkit-message-actions-leading", children: [_jsx(IconButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }), feedbackCapability.visible ? (_jsxs(_Fragment, { children: [_jsx(IconButton, { label: labels.positiveFeedback, icon: _jsx(IconThumbUp, { "aria-hidden": "true" }), size: "compact", "aria-pressed": feedback === "positive", pending: feedbackAction.pending && feedback === "positive", disabled: feedbackAction.pending || !feedbackCapability.enabled, title: feedbackCapability.reason, onPress: () => void updateFeedback("positive") }), _jsx(Popover, { open: feedbackReasonOpen, onOpenChange: (open) => {
|
|
1275
1297
|
setFeedbackReasonOpen(open);
|
|
1276
1298
|
if (open)
|
|
1277
1299
|
setFeedbackReasonSubmitted(false);
|
|
@@ -1297,21 +1319,23 @@ export function AgentMessageActions({ value: message, threadId, }) {
|
|
|
1297
1319
|
new Date(message.createdAt).toLocaleTimeString([], {
|
|
1298
1320
|
hour: "numeric",
|
|
1299
1321
|
minute: "2-digit",
|
|
1300
|
-
}) })) : null, slots.messageActionsTrailing ? (_jsx(slots.messageActionsTrailing, { value: message, threadId: threadId })) : null, _jsx(Menu, { open: actionsMenuOpen, onOpenChange: (open) => {
|
|
1322
|
+
}) })) : null, slots.messageActionsTrailing ? (_jsx(slots.messageActionsTrailing, { value: message, threadId: threadId })) : null, hasMessageMenuActions ? (_jsx(Menu, { open: actionsMenuOpen, onOpenChange: (open) => {
|
|
1301
1323
|
setActionsMenuOpen(open);
|
|
1302
1324
|
if (!open)
|
|
1303
1325
|
setRequestIdCopied(false);
|
|
1304
1326
|
}, placement: "bottom", align: "end", className: "agentkit-message-menu w-48", trigger: _jsx(IconButton, { label: labels.messageActions, icon: _jsx(IconDotsVertical, { "aria-hidden": "true" }), size: "compact", "aria-expanded": actionsMenuOpen, title: labels.messageActions }), items: [
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1327
|
+
...(requestId
|
|
1328
|
+
? [
|
|
1329
|
+
{
|
|
1330
|
+
id: "copy-request-id",
|
|
1331
|
+
label: requestIdCopied
|
|
1332
|
+
? labels.copied
|
|
1333
|
+
: labels.copyRequestId,
|
|
1334
|
+
icon: requestIdCopied ? (_jsx(IconCircleCheck, { size: 14, "aria-hidden": "true" })) : (_jsx(IconId, { size: 14, "aria-hidden": "true" })),
|
|
1335
|
+
disabled: requestIdAction.pending,
|
|
1336
|
+
},
|
|
1337
|
+
]
|
|
1338
|
+
: []),
|
|
1315
1339
|
...(forkingCapability.visible && onThreadForked
|
|
1316
1340
|
? [
|
|
1317
1341
|
{
|
|
@@ -1329,7 +1353,7 @@ export function AgentMessageActions({ value: message, threadId, }) {
|
|
|
1329
1353
|
else if (id === "fork-chat") {
|
|
1330
1354
|
void forkAction.execute().catch(() => undefined);
|
|
1331
1355
|
}
|
|
1332
|
-
} })] })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "agentkit-message-actions-leading", children: [_jsx(IconButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }), editContext?.enabled &&
|
|
1356
|
+
} })) : null] })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "agentkit-message-actions-leading", children: [_jsx(IconButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }), editContext?.enabled &&
|
|
1333
1357
|
forkingCapability.visible &&
|
|
1334
1358
|
text.trim() ? (_jsx(IconButton, { label: labels.editMessage, icon: _jsx(IconPencil, { "aria-hidden": "true" }), size: "compact", disabled: hasActiveAgentRuns(thread) || !forkingCapability.enabled, title: forkingCapability.reason, "aria-pressed": editContext.message?.id === message.id, onPress: () => editContext.setMessage(message) })) : null] }), _jsx("div", { className: "agentkit-message-actions-trailing", children: message.createdAt ? (_jsx("time", { dateTime: message.createdAt, children: labels.formatTimestamp?.(message.createdAt) ??
|
|
1335
1359
|
new Date(message.createdAt).toLocaleTimeString([], {
|
|
@@ -1366,7 +1390,7 @@ export function AgentConnectionErrorView({ error, threadId, recover, recovering,
|
|
|
1366
1390
|
function hasActiveRuns(thread) {
|
|
1367
1391
|
return hasActiveAgentRuns(thread);
|
|
1368
1392
|
}
|
|
1369
|
-
export function AgentKitComposer({ threadId: requestedThreadId, className, queueWhileRunning = true, showModelSelector = true, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled = false, autoFocus = true, mode, defaultMode = "act", onModeChange, toolbarSlot, disabled, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onBeforeSubmit, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, planModeDisabledReason, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }) {
|
|
1393
|
+
export function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission = true, queueWhileRunning = true, showModelSelector = true, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled = false, autoFocus = true, mode, defaultMode = "act", onModeChange, toolbarSlot, disabled, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onBeforeSubmit, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, planModeDisabledReason, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }) {
|
|
1370
1394
|
const { threadId: contextThreadId, controller, labels, onThreadForked, registerComposerFocus, slots, } = useAgentKit();
|
|
1371
1395
|
const editContext = useContext(AgentMessageEditContext);
|
|
1372
1396
|
const editingMessage = editContext?.message ?? null;
|
|
@@ -1400,6 +1424,12 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, queue
|
|
|
1400
1424
|
const thread = useAgentThread(threadId);
|
|
1401
1425
|
const command = useAgentKitMutation((execute) => execute(), threadId);
|
|
1402
1426
|
const submissionBlocked = Boolean(submissionDisabled) || command.pending;
|
|
1427
|
+
const [submissionPending, setSubmissionPending] = useState(false);
|
|
1428
|
+
const handleSubmissionPendingChange = useCallback((pending) => {
|
|
1429
|
+
setSubmissionPending(pending);
|
|
1430
|
+
onSubmissionPendingChange?.(pending);
|
|
1431
|
+
}, [onSubmissionPendingChange]);
|
|
1432
|
+
const suggestionSubmitBlocked = submissionBlocked || submissionPending;
|
|
1403
1433
|
const localComposerRef = useRef(null);
|
|
1404
1434
|
const composerRef = hostComposerRef ?? localComposerRef;
|
|
1405
1435
|
const selectedSuggestionRef = useRef(undefined);
|
|
@@ -1668,7 +1698,7 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, queue
|
|
|
1668
1698
|
.finally(focusComposer);
|
|
1669
1699
|
const selectSuggestion = (suggestion) => {
|
|
1670
1700
|
if (disabled ||
|
|
1671
|
-
|
|
1701
|
+
suggestionSubmitBlocked ||
|
|
1672
1702
|
!suggestionsCapability.enabled ||
|
|
1673
1703
|
selectedSuggestionRef.current ||
|
|
1674
1704
|
!isCurrentAgentSuggestion(controller.getThread(threadId), suggestion))
|
|
@@ -1689,7 +1719,7 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, queue
|
|
|
1689
1719
|
const Queue = slots.queue;
|
|
1690
1720
|
const Suggestions = slots.suggestions;
|
|
1691
1721
|
const suggestions = selectAgentSuggestions(thread);
|
|
1692
|
-
return (_jsxs("div", { className: `agentkit-composer-stack ${className ?? ""}`, children: [queueCapability.visible ? (Queue ? (_jsx(Queue, { items: thread.queuedMessages, threadId: threadId, active: active, pending: command.pending || Boolean(disabled), onSteer: steerQueued, onRemove: removeQueued })) : (_jsx(MessageQueueDrawer, { variant: "recessed", items: thread.queuedMessages.map((message) => ({
|
|
1722
|
+
return (_jsxs("div", { className: `agentkit-composer-stack ${className ?? ""}`, children: [announcePendingSubmission && submissionPending ? (_jsx("span", { className: "agentkit-visually-hidden", role: "status", "aria-live": "polite", children: labels.activityBuckets?.thinking ?? "Thinking" })) : null, queueCapability.visible ? (Queue ? (_jsx(Queue, { items: thread.queuedMessages, threadId: threadId, active: active, pending: command.pending || Boolean(disabled), onSteer: steerQueued, onRemove: removeQueued })) : (_jsx(MessageQueueDrawer, { variant: "recessed", items: thread.queuedMessages.map((message) => ({
|
|
1693
1723
|
id: message.id,
|
|
1694
1724
|
text: message.text,
|
|
1695
1725
|
images: (message.attachments ?? []).flatMap((attachment) => {
|
|
@@ -1730,10 +1760,10 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, queue
|
|
|
1730
1760
|
: undefined }))) : null, suggestionsCapability.enabled &&
|
|
1731
1761
|
!disabled &&
|
|
1732
1762
|
!editingMessage &&
|
|
1733
|
-
suggestions.length ? (Suggestions ? (_jsx(Suggestions, { suggestions: suggestions, threadId: threadId, pending:
|
|
1763
|
+
suggestions.length ? (Suggestions ? (_jsx(Suggestions, { suggestions: suggestions, threadId: threadId, pending: suggestionSubmitBlocked, onSelect: selectSuggestion })) : (_jsx(AgentSuggestionBar, { suggestions: suggestions.map((suggestion) => ({
|
|
1734
1764
|
...suggestion,
|
|
1735
|
-
disabled:
|
|
1736
|
-
})), ariaLabel: labels.suggestions, onSelect: selectSuggestion, className: "agentkit-suggestions" }))) : null, _jsx(PromptComposer, { contextItems: contextItems, onRemoveContextItem: onRemoveContextItem, onInspectContextItem: onInspectContextItem, onRetryContextItem: onRetryContextItem, contextMenuItems: contextMenuItems, attachmentAdapter: attachmentAdapter, inlineTextAttachments: inlineTextAttachments, rootClassName: "agentkit-composer", draftScope: `agentkit:${threadId}${editingMessage ? `:edit:${editingMessage.id}` : ""}`, ariaLabel: labels.composerLabel, placeholder: placeholder ?? labels.composerPlaceholder, disabled: disabled, submissionDisabled: submissionBlocked, onDisabledClick: onDisabledClick, onConnectProvider: onConnectProvider, onConnectLocalRuntime: onConnectLocalRuntime, imageModelMenu: imageModelMenu, autoFocus: autoFocus, composerRef: composerRef,
|
|
1765
|
+
disabled: suggestionSubmitBlocked || Boolean(disabled),
|
|
1766
|
+
})), ariaLabel: labels.suggestions, onSelect: selectSuggestion, className: "agentkit-suggestions" }))) : null, _jsx(PromptComposer, { contextItems: contextItems, onRemoveContextItem: onRemoveContextItem, onInspectContextItem: onInspectContextItem, onRetryContextItem: onRetryContextItem, contextMenuItems: contextMenuItems, attachmentAdapter: attachmentAdapter, inlineTextAttachments: inlineTextAttachments, rootClassName: "agentkit-composer", draftScope: `agentkit:${threadId}${editingMessage ? `:edit:${editingMessage.id}` : ""}`, ariaLabel: labels.composerLabel, placeholder: placeholder ?? labels.composerPlaceholder, disabled: disabled, submissionDisabled: submissionBlocked, onDisabledClick: onDisabledClick, onConnectProvider: onConnectProvider, onConnectLocalRuntime: onConnectLocalRuntime, imageModelMenu: imageModelMenu, autoFocus: autoFocus, composerRef: composerRef, willQueue: active && queueWhileRunning && canQueue, showModelSelector: showModelSelector && canSelectModel, availableModels: availableModels, modelListLoading: modelListLoading, selectedModel: selectedModel, selectedEngine: selectedEngine, selectedEffort: selectedEffort, onModelChange: onModelChange, onEffortChange: onEffortChange, availableAgents: availableAgents, selectedAgent: selectedAgent, agentOnly: agentOnly, onAgentChange: onAgentChange, onModelSelectorOpenChange: onModelSelectorOpenChange, modelStatusChecksEnabled: modelStatusChecksEnabled, requireAgentEngine: requireAgentEngine, layoutVariant: layoutVariant, toolbarSlot: composerToolbarSlot, initialText: composerInitialText, initialTextKey: composerInitialTextKey, onTextChange: onTextChange, extraActionButton: extraActionButton, sendButtonDisabled: submissionPending, onBeforeSubmit: onBeforeSubmit, onSubmissionPendingChange: handleSubmissionPendingChange, getSubmitFailureDraftScope: getSubmitFailureDraftScope, clearOnSubmitImmediately: true, onAttachmentError: reportAttachmentError, interceptBuildRequestsForBuilder: interceptBuildRequestsForBuilder, planModeDisabled: planModeDisabled, planModeDisabledReason: planModeDisabledReason, stopButton: stopButton, attachmentsEnabled: canUpload, onAttachmentRequest: onAttachmentRequest, contextButtonTooltipDisabled: contextButtonTooltipDisabled, slashCommands: slashCommands, slashSkills: slashSkills, includeDefaultSlashCommands: includeDefaultSlashCommands ?? false, includeDefaultSlashSkills: includeDefaultSlashSkills ?? false, onSlashCommand: onSlashCommand, plusMenuMode: plusMenuMode ?? "full", voiceEnabled: voiceEnabled, execMode: executionMode === "plan" ? "plan" : "build", onExecModeChange: (nextMode) => {
|
|
1737
1767
|
const next = nextMode === "plan" ? "plan" : "act";
|
|
1738
1768
|
if (mode === undefined)
|
|
1739
1769
|
setUncontrolledMode(next);
|
|
@@ -2086,7 +2116,7 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
|
|
|
2086
2116
|
const error = failedRuns.get(runId);
|
|
2087
2117
|
return error ? (_jsx(RunFailure, { error: error, runId: runId, threadId: threadId })) : null;
|
|
2088
2118
|
};
|
|
2089
|
-
const renderRunWork = ({ runId, anchor, afterSequence, throughSequence, }) => (_jsxs(AgentKitSurfaceBoundary, { surface: "activity", resetKey: `${runId}:${anchor}:${thread.events.length}`, children: [_jsx(AgentCollaborationFeed, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentTaskGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentActivityGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence, excludeAgentActivities: true })] }, `run-work:${threadId}:${runId}:${anchor}`));
|
|
2119
|
+
const renderRunWork = ({ runId, anchor, afterSequence, throughSequence, }) => (_jsxs(AgentKitSurfaceBoundary, { surface: "activity", resetKey: `${runId}:${anchor}:${thread.events.length}`, children: [_jsx(AgentCollaborationFeed, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentTaskGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentActivityGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence, excludeAgentActivities: true, isCurrentSegment: throughSequence === undefined })] }, `run-work:${threadId}:${runId}:${anchor}`));
|
|
2090
2120
|
const transcriptItems = [];
|
|
2091
2121
|
const previousAssistantByRun = new Map();
|
|
2092
2122
|
for (const message of thread.messages) {
|