@agent-native/core 0.12.15 → 0.12.17
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/agent/production-agent.d.ts +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +1 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +56 -42
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/cli/create.js +1 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +13 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts +40 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +506 -363
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +16 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +30 -9
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +4 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +49 -14
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +17 -3
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +4 -1
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/agent-chat.d.ts +1 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts +3 -2
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +4 -3
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts +2 -0
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +2 -2
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +6 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +21 -12
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +3 -0
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/sharing/ShareButton.js +6 -1
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareButton.spec.d.ts +2 -0
- package/dist/client/sharing/ShareButton.spec.d.ts.map +1 -0
- package/dist/client/sharing/ShareButton.spec.js +90 -0
- package/dist/client/sharing/ShareButton.spec.js.map +1 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +10 -2
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +19 -2
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-send-to-agent-chat.d.ts +3 -3
- package/dist/client/use-send-to-agent-chat.js +3 -3
- package/dist/client/use-send-to-agent-chat.js.map +1 -1
- package/dist/deploy/workspace-deploy.js +4 -1
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +11 -7
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/templates/default/AGENTS.md +7 -1
- package/dist/templates/default/DEVELOPING.md +12 -0
- package/dist/templates/default/app/hooks/use-navigation-state.ts +81 -0
- package/dist/templates/default/app/root.tsx +11 -5
- package/dist/templates/workspace-root/AGENTS.md +3 -1
- package/dist/templates/workspace-root/README.md +4 -4
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +34 -6
- package/dist/vite/client.js.map +1 -1
- package/docs/content/multi-app-workspace.md +1 -1
- package/package.json +1 -1
- package/src/templates/default/AGENTS.md +7 -1
- package/src/templates/default/DEVELOPING.md +12 -0
- package/src/templates/default/app/hooks/use-navigation-state.ts +81 -0
- package/src/templates/default/app/root.tsx +11 -5
- package/src/templates/workspace-root/AGENTS.md +3 -1
- package/src/templates/workspace-root/README.md +4 -4
- package/dist/templates/workspace-root/netlify.toml +0 -11
- package/src/templates/workspace-root/netlify.toml +0 -11
|
@@ -40,6 +40,10 @@ export interface AssistantChatProps {
|
|
|
40
40
|
onGenerateTitle?: (threadId: string, message: string) => void;
|
|
41
41
|
/** Optional content rendered just above the composer input */
|
|
42
42
|
composerSlot?: React.ReactNode;
|
|
43
|
+
/** Disable the composer for capability-gated surfaces while still showing history. */
|
|
44
|
+
composerDisabled?: boolean;
|
|
45
|
+
/** Placeholder to show while the composer is disabled by the host surface. */
|
|
46
|
+
composerDisabledPlaceholder?: string;
|
|
43
47
|
/** When true, skip the restore skeleton (used for freshly created threads with no messages) */
|
|
44
48
|
isNewThread?: boolean;
|
|
45
49
|
/** Called when a slash command (e.g. /clear, /help) is executed */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AA6Bf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -807,7 +807,15 @@ function AssistantMessage() {
|
|
|
807
807
|
"");
|
|
808
808
|
})(), messageSeq: thread.messages.findIndex((m) => m.id === msg.id) }) }))] }))] }));
|
|
809
809
|
}
|
|
810
|
-
|
|
810
|
+
function ActivitySteps({ steps }) {
|
|
811
|
+
if (steps.length === 0)
|
|
812
|
+
return null;
|
|
813
|
+
const visibleSteps = steps.slice(-4);
|
|
814
|
+
return (_jsx("div", { className: "max-w-[85%] rounded-md border border-border/60 bg-muted/30 px-2.5 py-2 text-xs text-muted-foreground", "aria-live": "polite", children: _jsx("div", { className: "space-y-1", children: visibleSteps.map((step, index) => {
|
|
815
|
+
const isCurrent = index === visibleSteps.length - 1;
|
|
816
|
+
return (_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [isCurrent ? (_jsx(IconLoader2, { className: "h-3 w-3 shrink-0 animate-spin" })) : (_jsx(IconCheck, { className: "h-3 w-3 shrink-0 text-emerald-500" })), _jsx("span", { className: "truncate", children: step.label })] }, step.id));
|
|
817
|
+
}) }) }));
|
|
818
|
+
}
|
|
811
819
|
function ThinkingIndicator({ label = "Thinking" } = {}) {
|
|
812
820
|
const [dots, setDots] = useState(0);
|
|
813
821
|
useEffect(() => {
|
|
@@ -846,6 +854,10 @@ function BuilderConnectCta({ variant = "primary", onConnected, }) {
|
|
|
846
854
|
// ─── Builder Setup Card ─────────────────────────────────────────────────────
|
|
847
855
|
function BuilderSetupCard({ onConnected, bouncePulse, }) {
|
|
848
856
|
const openSettings = useCallback(() => {
|
|
857
|
+
try {
|
|
858
|
+
window.location.hash = "llm";
|
|
859
|
+
}
|
|
860
|
+
catch { }
|
|
849
861
|
window.dispatchEvent(new CustomEvent("agent-panel:open-settings"));
|
|
850
862
|
}, []);
|
|
851
863
|
const cardRef = useRef(null);
|
|
@@ -1064,13 +1076,14 @@ function ensureMessageMetadata(repo) {
|
|
|
1064
1076
|
// Re-export for backwards compatibility
|
|
1065
1077
|
import { extractThreadMeta } from "../agent/thread-data-builder.js";
|
|
1066
1078
|
export { extractThreadMeta };
|
|
1067
|
-
const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, showHeader = true, onSwitchToCli, className, apiUrl, tabId, threadId, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, isNewThread, onSlashCommand, execMode, onExecModeChange, selectedModel, defaultModel, selectedEngine, selectedEffort, availableModels, onModelChange, onEffortChange, onForkChat, }, ref) {
|
|
1079
|
+
const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, showHeader = true, onSwitchToCli, className, apiUrl, tabId, threadId, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, composerDisabled = false, composerDisabledPlaceholder, isNewThread, onSlashCommand, execMode, onExecModeChange, selectedModel, defaultModel, selectedEngine, selectedEffort, availableModels, onModelChange, onEffortChange, onForkChat, }, ref) {
|
|
1068
1080
|
const scrollRef = useRef(null);
|
|
1069
1081
|
const thread = useThread();
|
|
1070
1082
|
const threadRuntime = useThreadRuntime();
|
|
1071
1083
|
const isRuntimeRunning = thread.isRunning;
|
|
1072
1084
|
const messages = thread.messages;
|
|
1073
1085
|
const [missingApiKey, setMissingApiKey] = useState(false);
|
|
1086
|
+
const isComposerDisabled = missingApiKey || composerDisabled;
|
|
1074
1087
|
// Increments each time the user clicks the (disabled) composer while no LLM
|
|
1075
1088
|
// is connected — `BuilderSetupCard` watches this to replay a one-shot bounce.
|
|
1076
1089
|
const [missingKeyBouncePulse, setMissingKeyBouncePulse] = useState(0);
|
|
@@ -1106,6 +1119,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1106
1119
|
const wasRunningRef = useRef(false);
|
|
1107
1120
|
const lastBroadcastRunningRef = useRef(isRunning);
|
|
1108
1121
|
const tiptapRef = useRef(null);
|
|
1122
|
+
const [activitySteps, setActivitySteps] = useState([]);
|
|
1109
1123
|
useEffect(() => {
|
|
1110
1124
|
if (lastBroadcastRunningRef.current === isRunning)
|
|
1111
1125
|
return;
|
|
@@ -1623,15 +1637,32 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1623
1637
|
if (tabId && detail?.tabId && detail.tabId !== tabId)
|
|
1624
1638
|
return;
|
|
1625
1639
|
if (typeof detail?.label === "string" && detail.label.trim()) {
|
|
1626
|
-
|
|
1640
|
+
const label = detail.label.trim();
|
|
1641
|
+
const tool = detail.tool?.trim() || undefined;
|
|
1642
|
+
setActivityLabel(label);
|
|
1643
|
+
setActivitySteps((prev) => {
|
|
1644
|
+
const last = prev[prev.length - 1];
|
|
1645
|
+
if (last?.label === label && last.tool === tool)
|
|
1646
|
+
return prev;
|
|
1647
|
+
return [
|
|
1648
|
+
...prev,
|
|
1649
|
+
{
|
|
1650
|
+
id: `${Date.now()}-${prev.length}`,
|
|
1651
|
+
label,
|
|
1652
|
+
...(tool ? { tool } : {}),
|
|
1653
|
+
},
|
|
1654
|
+
].slice(-6);
|
|
1655
|
+
});
|
|
1627
1656
|
}
|
|
1628
1657
|
};
|
|
1629
1658
|
window.addEventListener("agent-chat:activity", handler);
|
|
1630
1659
|
return () => window.removeEventListener("agent-chat:activity", handler);
|
|
1631
1660
|
}, [tabId]);
|
|
1632
1661
|
useEffect(() => {
|
|
1633
|
-
if (!showRunningInUI)
|
|
1662
|
+
if (!showRunningInUI) {
|
|
1634
1663
|
setActivityLabel(null);
|
|
1664
|
+
setActivitySteps([]);
|
|
1665
|
+
}
|
|
1635
1666
|
}, [showRunningInUI]);
|
|
1636
1667
|
// Auto-dequeue: when agent finishes running, send the next queued message
|
|
1637
1668
|
useEffect(() => {
|
|
@@ -1699,6 +1730,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1699
1730
|
setRunErrorInfo(null);
|
|
1700
1731
|
setDismissedRunErrorKey(null);
|
|
1701
1732
|
setActivityLabel(null);
|
|
1733
|
+
setActivitySteps([]);
|
|
1702
1734
|
userStoppedRunRef.current = null;
|
|
1703
1735
|
// Selection context attached via Cmd+I is one-shot — clear it as soon
|
|
1704
1736
|
// as the user actually sends a message so it can't be re-used.
|
|
@@ -1915,23 +1947,26 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
1915
1947
|
}
|
|
1916
1948
|
setRunErrorInfo(null);
|
|
1917
1949
|
} })), (isReconnecting || reconnectFrozen) &&
|
|
1918
|
-
reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsx(ThinkingIndicator, { label: isReconnecting
|
|
1919
|
-
|
|
1920
|
-
|
|
1950
|
+
reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsxs(_Fragment, { children: [_jsx(ActivitySteps, { steps: activitySteps }), _jsx(ThinkingIndicator, { label: isReconnecting
|
|
1951
|
+
? "Reconnecting"
|
|
1952
|
+
: (activityLabel ?? "Thinking") })] })), queuedMessages.map((msg) => {
|
|
1921
1953
|
const displayText = msg.text
|
|
1922
1954
|
.replace(/<context>[\s\S]*?<\/context>\n?/g, "")
|
|
1923
1955
|
.trim();
|
|
1924
1956
|
return (_jsx("div", { className: "flex justify-end group", children: _jsxs("div", { className: "relative max-w-[85%] rounded-lg bg-accent/50 text-foreground/60 px-3 py-2 text-sm leading-relaxed whitespace-pre-wrap break-words", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: [_jsx(IconClock, { className: "h-3 w-3" }), "Queued"] }), displayText, msg.images && msg.images.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-1.5", children: msg.images.map((img, j) => (_jsx("img", { src: img, alt: "", className: "h-12 w-12 rounded object-cover border border-border/50" }, j))) })), _jsx("button", { type: "button", onClick: () => setQueuedMessages((prev) => prev.filter((m) => m.id !== msg.id)), "aria-label": "Remove from queue", className: "absolute -top-2 -right-2 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:text-foreground hover:bg-accent shadow-sm", children: _jsx(IconX, { className: "h-3 w-3" }) })] }) }, msg.id));
|
|
1925
|
-
})] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), composerSlot, _jsx(SelectionAttachedPill, {}), _jsx("div", { className: cn("agent-composer-area shrink-0 px-3 py-2", missingApiKey && "cursor-pointer opacity-70"), onClick: missingApiKey
|
|
1957
|
+
})] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), composerSlot, _jsx(SelectionAttachedPill, {}), _jsx("div", { className: cn("agent-composer-area shrink-0 px-3 py-2", missingApiKey && "cursor-pointer", isComposerDisabled && "opacity-70"), onClick: missingApiKey
|
|
1926
1958
|
? () => setMissingKeyBouncePulse((p) => p + 1)
|
|
1927
1959
|
: undefined, children: _jsxs(ComposerPrimitive.Root, { className: cn("flex flex-col rounded-lg border border-input bg-background focus-within:ring-1 focus-within:ring-ring", execMode === "plan" &&
|
|
1928
|
-
"border-amber-500/50 bg-amber-500/[0.03] focus-within:ring-amber-500/30"), children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled:
|
|
1960
|
+
"border-amber-500/50 bg-amber-500/[0.03] focus-within:ring-amber-500/30"), children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled: isComposerDisabled, placeholder: missingApiKey
|
|
1929
1961
|
? "Connect an AI engine above to start chatting…"
|
|
1930
|
-
:
|
|
1931
|
-
?
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1962
|
+
: composerDisabled
|
|
1963
|
+
? (composerDisabledPlaceholder ??
|
|
1964
|
+
"Open Desktop to use this chat.")
|
|
1965
|
+
: isRunning
|
|
1966
|
+
? queuedMessages.length > 0
|
|
1967
|
+
? `${queuedMessages.length} queued — type another...`
|
|
1968
|
+
: "Queue a message..."
|
|
1969
|
+
: undefined, onSubmit: isRunning
|
|
1935
1970
|
? (text, references) => addToQueue(text, undefined, references.length > 0 ? references : undefined)
|
|
1936
1971
|
: undefined, onSlashCommand: onSlashCommand, execMode: execMode, onExecModeChange: onExecModeChange, selectedModel: selectedModel ?? defaultModel, selectedEffort: selectedEffort, availableModels: availableModels, onModelChange: onModelChange, onEffortChange: onEffortChange, draftScope: threadId || tabId, interceptBuildRequestsForBuilder: true, extraActionButton: showRunningInUI ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => {
|
|
1937
1972
|
// Nuclear stop: flip forceStopped so isRunning is false
|