@agent-native/core 0.28.4 → 0.29.0
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/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +53 -15
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +2 -1
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +19 -1
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/coding-tools/index.d.ts.map +1 -1
- package/dist/coding-tools/index.js +18 -18
- package/dist/coding-tools/index.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +184 -160
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +47 -28
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +47 -29
- package/docs/content/creating-templates.md +1 -1
- package/docs/content/external-agents.md +1 -1
- package/docs/content/skills-guide.md +2 -0
- package/docs/content/template-assets.md +5 -1
- package/docs/content/writing-agent-instructions.md +130 -0
- package/package.json +1 -1
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +47 -28
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +47 -29
|
@@ -21,6 +21,7 @@ import { useBuilderConnectFlow } from "./settings/useBuilderStatus.js";
|
|
|
21
21
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "./components/ui/tooltip.js";
|
|
22
22
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "./components/ui/dropdown-menu.js";
|
|
23
23
|
import { IframeEmbed, parseEmbedBody } from "./IframeEmbed.js";
|
|
24
|
+
import { GuidedQuestionFlow, useGuidedQuestionFlow, } from "./guided-questions.js";
|
|
24
25
|
import { useDevMode } from "./use-dev-mode.js";
|
|
25
26
|
import { agentNativePath } from "./api-path.js";
|
|
26
27
|
import { BUILDER_SPACE_SETTINGS_URL, NEW_CHAT_ACTION_HREF, } from "./error-format.js";
|
|
@@ -2969,6 +2970,15 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
2969
2970
|
!authError &&
|
|
2970
2971
|
!missingApiKey;
|
|
2971
2972
|
const centeredEmptyState = centerComposerWhenEmpty && isFreshEmptyChat;
|
|
2973
|
+
// Clarifying-question surface: the `ask-question` action writes a
|
|
2974
|
+
// GuidedQuestionPayload to application_state under "guided-questions". The
|
|
2975
|
+
// hook polls that key, and on submit/skip composes the answer as a normal
|
|
2976
|
+
// user turn (via the shared sendToAgentChat) and clears the persisted key so
|
|
2977
|
+
// the question does not reappear.
|
|
2978
|
+
const { questions: guidedQuestions, title: guidedQuestionsTitle, description: guidedQuestionsDescription, skipLabel: guidedQuestionsSkipLabel, submitLabel: guidedQuestionsSubmitLabel, handleSubmit: handleGuidedQuestionsSubmit, handleSkip: handleGuidedQuestionsSkip, } = useGuidedQuestionFlow({
|
|
2979
|
+
stateKey: "guided-questions",
|
|
2980
|
+
queryKey: ["guided-questions"],
|
|
2981
|
+
});
|
|
2972
2982
|
return (_jsx(CheckpointContext.Provider, { value: checkpointCtx, children: _jsx(MessageActionsContext.Provider, { value: messageActionsCtx, children: _jsx(ChatRunningContext.Provider, { value: isRunning, children: _jsxs("div", { "data-agent-empty-state": centeredEmptyState ? "centered" : undefined, className: cn("relative flex flex-1 flex-col h-full min-h-0 text-foreground", className), onDragEnter: handleChatDragEnter, onDragOver: handleChatDragOver, onDragLeave: handleChatDragLeave, onDropCapture: handleChatDropCapture, onDrop: handleChatDrop, children: [dropActive && (_jsx("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 z-50 flex items-center justify-center rounded-md border-2 border-dashed border-primary/70 bg-primary/5 backdrop-blur-[1px]", children: _jsx("span", { className: "rounded-md bg-background/90 px-3 py-1.5 text-xs font-medium text-foreground shadow-sm", children: "Drop to attach" }) })), showHeader && (_jsxs("div", { className: "flex h-11 shrink-0 items-center justify-between border-b border-border px-4", children: [_jsx("span", { className: "text-[13px] font-medium text-muted-foreground", children: "Agent" }), _jsx("div", { className: "flex items-center gap-1", children: onSwitchToCli && (_jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("button", { onClick: onSwitchToCli, "aria-label": "Switch to CLI", className: "flex items-center gap-1 text-[12px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-accent", children: [_jsx(IconTerminal, { className: "h-3.5 w-3.5" }), "CLI"] }) }), _jsx(TooltipContent, { children: "Switch to CLI" })] }) })) })] })), _jsx("div", { ref: scrollRef, className: "agent-chat-scroll flex-1 overflow-y-auto overflow-x-hidden min-h-0", children: authError ? (_jsxs("div", { className: "flex flex-col items-center justify-center h-full px-4 gap-3", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-destructive/10", children: _jsx(IconLock, { className: "h-5 w-5 text-destructive" }) }), _jsxs("div", { className: "text-center max-w-[280px]", children: [_jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: authSessionAvailable
|
|
2973
2983
|
? "Chat session needs refresh"
|
|
2974
2984
|
: authError.sessionExpired
|
|
@@ -3028,7 +3038,15 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
|
|
|
3028
3038
|
.replace(/<context>[\s\S]*?<\/context>\n?/g, "")
|
|
3029
3039
|
.trim();
|
|
3030
3040
|
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));
|
|
3031
|
-
})] })) }), 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,
|
|
3041
|
+
})] })) }), 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, guidedQuestions && guidedQuestions.length > 0 && (_jsx("div", { className: "shrink-0 px-3 pb-2 pt-1", children: _jsx("div", { className: "rounded-lg border border-border bg-card/60 shadow-sm", children: _jsx(GuidedQuestionFlow, { questions: guidedQuestions, onSubmit: handleGuidedQuestionsSubmit, onSkip: handleGuidedQuestionsSkip, ...(guidedQuestionsTitle
|
|
3042
|
+
? { title: guidedQuestionsTitle }
|
|
3043
|
+
: {}), ...(guidedQuestionsDescription
|
|
3044
|
+
? { description: guidedQuestionsDescription }
|
|
3045
|
+
: {}), ...(guidedQuestionsSkipLabel
|
|
3046
|
+
? { skipLabel: guidedQuestionsSkipLabel }
|
|
3047
|
+
: {}), ...(guidedQuestionsSubmitLabel
|
|
3048
|
+
? { submitLabel: guidedQuestionsSubmitLabel }
|
|
3049
|
+
: {}), className: "h-auto items-stretch justify-stretch bg-transparent" }) }) })), showPlanModeCallout && (_jsx(PlanModeCallout, { canImplementPlan: canImplementPlan, onImplementPlan: handleImplementPlan, onSwitchToAct: handleSwitchToAct })), _jsx(SelectionAttachedPill, {}), showRunningInUI && (_jsx(RunningActivityStatus, { steps: activitySteps, label: isReconnecting
|
|
3032
3050
|
? "Reconnecting"
|
|
3033
3051
|
: (activityLabel ?? "Thinking") })), _jsxs(AgentComposerFrame, { layoutVariant: composerLayoutVariant, className: cn(composerAreaClassName, missingApiKey && "cursor-pointer", isComposerDisabled && "opacity-70"), onClick: missingApiKey
|
|
3034
3052
|
? () => setMissingKeyBouncePulse((p) => p + 1)
|