@hachej/boring-agent 0.1.65 → 0.1.67
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/{chunk-HHW2UNBK.js → chunk-EOCQDZNW.js} +8 -4
- package/dist/{chunk-NKP5AR4C.js → chunk-XCVKR75A.js} +1 -1
- package/dist/core/index.js +1 -1
- package/dist/{createHarness-LA2OO2DL.js → createHarness-6E3ASNU6.js} +1 -1
- package/dist/front/index.d.ts +34 -1
- package/dist/front/index.js +59 -0
- package/dist/server/index.js +2 -2
- package/package.json +2 -2
|
@@ -1387,7 +1387,10 @@ function resolveDefaultModel(modelRegistry) {
|
|
|
1387
1387
|
const configured = readConfiguredDefaultModel();
|
|
1388
1388
|
if (configured) {
|
|
1389
1389
|
const model = modelRegistry.find(configured.provider, configured.id);
|
|
1390
|
-
|
|
1390
|
+
const getAvailable = modelRegistry.getAvailable;
|
|
1391
|
+
if (!model || typeof getAvailable !== "function") return model;
|
|
1392
|
+
const available = getAvailable.call(modelRegistry);
|
|
1393
|
+
if (available.some((m) => m.provider === model.provider && m.id === model.id)) return model;
|
|
1391
1394
|
}
|
|
1392
1395
|
return void 0;
|
|
1393
1396
|
}
|
|
@@ -1441,10 +1444,11 @@ function createResourceSettingsManager(cwd, agentDir, piPackages) {
|
|
|
1441
1444
|
}
|
|
1442
1445
|
async function applyRequestedSessionOptions(handle, input, options = {}) {
|
|
1443
1446
|
const requestedModel = resolveRequestedModel(handle.modelRegistry, input, { strict: options.strictModelResolution });
|
|
1444
|
-
|
|
1447
|
+
const nextModel = requestedModel ?? resolveDefaultModel(handle.modelRegistry);
|
|
1448
|
+
if (nextModel) {
|
|
1445
1449
|
const current = handle.piSession.model;
|
|
1446
|
-
if (!current || current.provider !==
|
|
1447
|
-
await handle.piSession.setModel(
|
|
1450
|
+
if (!current || current.provider !== nextModel.provider || current.id !== nextModel.id) {
|
|
1451
|
+
await handle.piSession.setModel(nextModel);
|
|
1448
1452
|
}
|
|
1449
1453
|
}
|
|
1450
1454
|
if (input.thinkingLevel) {
|
|
@@ -2453,7 +2453,7 @@ function createRuntimeLoader(config, options) {
|
|
|
2453
2453
|
};
|
|
2454
2454
|
}
|
|
2455
2455
|
async function createRuntime(config, options) {
|
|
2456
|
-
const harnessFactory = config.harnessFactory ?? (await import("./createHarness-
|
|
2456
|
+
const harnessFactory = config.harnessFactory ?? (await import("./createHarness-6E3ASNU6.js")).createPiCodingAgentHarness;
|
|
2457
2457
|
const harnessInput = {
|
|
2458
2458
|
tools: config.tools ?? [],
|
|
2459
2459
|
cwd: config.workdir ?? DEFAULT_WORKDIR,
|
package/dist/core/index.js
CHANGED
package/dist/front/index.d.ts
CHANGED
|
@@ -690,6 +690,39 @@ interface ArtifactOpenProviderProps {
|
|
|
690
690
|
declare function ArtifactOpenProvider({ onOpenArtifact, children }: ArtifactOpenProviderProps): react.JSX.Element;
|
|
691
691
|
declare function useOpenArtifact(): OpenArtifactHandler | null;
|
|
692
692
|
|
|
693
|
+
type SelectorTrigger = 'button' | 'slash';
|
|
694
|
+
declare const ModelSelectTrigger: react.ForwardRefExoticComponent<Omit<Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "value"> & {
|
|
695
|
+
value: ModelSelection | null;
|
|
696
|
+
options: AvailableModel[];
|
|
697
|
+
disabled?: boolean;
|
|
698
|
+
trigger?: SelectorTrigger;
|
|
699
|
+
open?: boolean;
|
|
700
|
+
} & react.RefAttributes<HTMLButtonElement>>;
|
|
701
|
+
declare function ModelPickerMenu({ value, onChange, options, disabled, hideDefaultOption, onClose, className, }: {
|
|
702
|
+
value: ModelSelection | null;
|
|
703
|
+
onChange: (next: ModelSelection | null) => void;
|
|
704
|
+
options: AvailableModel[];
|
|
705
|
+
disabled?: boolean;
|
|
706
|
+
hideDefaultOption?: boolean;
|
|
707
|
+
onClose?: () => void;
|
|
708
|
+
className?: string;
|
|
709
|
+
}): react.JSX.Element;
|
|
710
|
+
/**
|
|
711
|
+
* Model picker whose options are pi-coding-agent's actual available
|
|
712
|
+
* models (fetched from /api/v1/agent/models). Groups by provider and
|
|
713
|
+
* shows a concise human-friendly label with the raw pi id as the
|
|
714
|
+
* option's stored value, encoded as "{provider}:{id}" to keep
|
|
715
|
+
* ids stable across providers.
|
|
716
|
+
*/
|
|
717
|
+
declare function ModelSelect({ value, onChange, options, disabled, trigger, openSignal, }: {
|
|
718
|
+
value: ModelSelection | null;
|
|
719
|
+
onChange: (next: ModelSelection | null) => void;
|
|
720
|
+
options: AvailableModel[];
|
|
721
|
+
disabled?: boolean;
|
|
722
|
+
trigger?: SelectorTrigger;
|
|
723
|
+
openSignal?: unknown;
|
|
724
|
+
}): react.JSX.Element;
|
|
725
|
+
|
|
693
726
|
interface AgentCommandContribution {
|
|
694
727
|
id: string;
|
|
695
728
|
title: string;
|
|
@@ -771,4 +804,4 @@ declare const CodeBlock: ({ code, language, showLineNumbers, className, children
|
|
|
771
804
|
|
|
772
805
|
declare function cn(...inputs: ClassValue[]): string;
|
|
773
806
|
|
|
774
|
-
export { type AgentCommandContribution, type AgentCommandOptions, ArtifactOpenProvider, ChatEmptyState, type ChatEmptyStateProps, PiChatPanel as ChatPanel, type PiChatPanelProps as ChatPanelProps, type ChatSuggestion, CodeBlock, type CommandRegistry, type ComposerBlocker, type ComposerBlockerAction, Conversation, ConversationContent, ConversationScrollButton, DebugDrawer, type GroupedToolEntry, Message, MessageAction, MessageActions, MessageContent, MessageResponse, type OpenArtifactHandler, type ParsedCommand, PiChatPanel, type PiChatPanelProps, SessionBrowser as PiSessionBrowser, type PiSessionCreateInit, SessionList as PiSessionList, type PiSessionSearchItem, type PiSessionSearchOptions, type PiSessionSearchSortMode, PromptInput, PromptInputFooter, PromptInputSubmit, PromptInputTextarea, Reasoning, ReasoningContent, ReasoningTrigger, type SessionListProps, type SlashCommand, type SlashCommandContext, ToolCallGroup, type ToolPart, type ToolRenderer, type ToolRendererOverrides, type UploadFileOptions, type UploadFileResult, type UsePiSessionsOptions, type UsePiSessionsResult, activeSessionStorageKey, builtinCommands, clearActiveSessionId, cn, createCommandRegistry, defaultChatSuggestions, defaultToolRenderers, getAgentCommands, matchPiSessionSearch, mergeShadcnToolRenderers, mergeToolRenderers, parsePiSessionSearchQuery, parseSlashCommand, readActiveSessionId, resolveToolRenderer, searchPiSessions, uploadFile, useOpenArtifact, usePiSessions, writeActiveSessionId };
|
|
807
|
+
export { type AgentCommandContribution, type AgentCommandOptions, ArtifactOpenProvider, type AvailableModel, ChatEmptyState, type ChatEmptyStateProps, PiChatPanel as ChatPanel, type PiChatPanelProps as ChatPanelProps, type ChatSuggestion, CodeBlock, type CommandRegistry, type ComposerBlocker, type ComposerBlockerAction, Conversation, ConversationContent, ConversationScrollButton, DebugDrawer, type GroupedToolEntry, Message, MessageAction, MessageActions, MessageContent, MessageResponse, ModelPickerMenu, ModelSelect, ModelSelectTrigger, type ModelSelection, type OpenArtifactHandler, type ParsedCommand, PiChatPanel, type PiChatPanelProps, SessionBrowser as PiSessionBrowser, type PiSessionCreateInit, SessionList as PiSessionList, type PiSessionSearchItem, type PiSessionSearchOptions, type PiSessionSearchSortMode, PromptInput, PromptInputFooter, PromptInputSubmit, PromptInputTextarea, Reasoning, ReasoningContent, ReasoningTrigger, type SessionListProps, type SlashCommand, type SlashCommandContext, ToolCallGroup, type ToolPart, type ToolRenderer, type ToolRendererOverrides, type UploadFileOptions, type UploadFileResult, type UsePiSessionsOptions, type UsePiSessionsResult, activeSessionStorageKey, builtinCommands, clearActiveSessionId, cn, createCommandRegistry, defaultChatSuggestions, defaultToolRenderers, getAgentCommands, matchPiSessionSearch, mergeShadcnToolRenderers, mergeToolRenderers, parsePiSessionSearchQuery, parseSlashCommand, readActiveSessionId, resolveToolRenderer, searchPiSessions, uploadFile, useOpenArtifact, usePiSessions, writeActiveSessionId };
|
package/dist/front/index.js
CHANGED
|
@@ -8192,6 +8192,62 @@ function ModelPickerMenu({
|
|
|
8192
8192
|
] })
|
|
8193
8193
|
] }) });
|
|
8194
8194
|
}
|
|
8195
|
+
function ModelSelect({
|
|
8196
|
+
value,
|
|
8197
|
+
onChange,
|
|
8198
|
+
options,
|
|
8199
|
+
disabled,
|
|
8200
|
+
trigger = "button",
|
|
8201
|
+
openSignal
|
|
8202
|
+
}) {
|
|
8203
|
+
const [open, setOpen] = useState16(false);
|
|
8204
|
+
const previousOpenSignalRef = useRef13(openSignal);
|
|
8205
|
+
useEffect17(() => {
|
|
8206
|
+
if (disabled) setOpen(false);
|
|
8207
|
+
}, [disabled]);
|
|
8208
|
+
useEffect17(() => {
|
|
8209
|
+
if (disabled || openSignal === void 0) {
|
|
8210
|
+
previousOpenSignalRef.current = openSignal;
|
|
8211
|
+
return;
|
|
8212
|
+
}
|
|
8213
|
+
if (previousOpenSignalRef.current !== openSignal) setOpen(true);
|
|
8214
|
+
previousOpenSignalRef.current = openSignal;
|
|
8215
|
+
}, [disabled, openSignal]);
|
|
8216
|
+
return /* @__PURE__ */ jsxs25(Popover, { open, onOpenChange: disabled ? void 0 : setOpen, children: [
|
|
8217
|
+
/* @__PURE__ */ jsx27(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx27(
|
|
8218
|
+
ModelSelectTrigger,
|
|
8219
|
+
{
|
|
8220
|
+
value,
|
|
8221
|
+
options,
|
|
8222
|
+
disabled,
|
|
8223
|
+
trigger,
|
|
8224
|
+
open
|
|
8225
|
+
}
|
|
8226
|
+
) }),
|
|
8227
|
+
/* @__PURE__ */ jsx27(
|
|
8228
|
+
PopoverContent,
|
|
8229
|
+
{
|
|
8230
|
+
align: trigger === "slash" ? "center" : "start",
|
|
8231
|
+
side: "top",
|
|
8232
|
+
sideOffset: trigger === "slash" ? 54 : 6,
|
|
8233
|
+
collisionPadding: 12,
|
|
8234
|
+
"data-boring-agent": "",
|
|
8235
|
+
className: cn("w-[min(92vw,340px)]", selectorContentClass),
|
|
8236
|
+
children: /* @__PURE__ */ jsx27(
|
|
8237
|
+
ModelPickerMenu,
|
|
8238
|
+
{
|
|
8239
|
+
value,
|
|
8240
|
+
onChange,
|
|
8241
|
+
options,
|
|
8242
|
+
disabled,
|
|
8243
|
+
onClose: () => setOpen(false),
|
|
8244
|
+
className: "mb-0 rounded-none border-0 bg-transparent shadow-none"
|
|
8245
|
+
}
|
|
8246
|
+
)
|
|
8247
|
+
}
|
|
8248
|
+
)
|
|
8249
|
+
] });
|
|
8250
|
+
}
|
|
8195
8251
|
var ThinkingSelectTrigger = forwardRef(function ThinkingSelectTrigger2({
|
|
8196
8252
|
value,
|
|
8197
8253
|
disabled,
|
|
@@ -10577,6 +10633,9 @@ export {
|
|
|
10577
10633
|
MessageActions,
|
|
10578
10634
|
MessageContent,
|
|
10579
10635
|
MessageResponse,
|
|
10636
|
+
ModelPickerMenu,
|
|
10637
|
+
ModelSelect,
|
|
10638
|
+
ModelSelectTrigger,
|
|
10580
10639
|
PiChatPanel,
|
|
10581
10640
|
SessionBrowser as PiSessionBrowser,
|
|
10582
10641
|
SessionList as PiSessionList,
|
package/dist/server/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
createAgent,
|
|
8
8
|
createAgentRuntimeBridge,
|
|
9
9
|
normalizeMeteringUsage
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-XCVKR75A.js";
|
|
11
11
|
import "../chunk-WSQ5QNIY.js";
|
|
12
12
|
import {
|
|
13
13
|
FollowUpPayloadSchema,
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
registerConfiguredModelProviders,
|
|
32
32
|
setEnvDefault,
|
|
33
33
|
withPiHarnessDefaults
|
|
34
|
-
} from "../chunk-
|
|
34
|
+
} from "../chunk-EOCQDZNW.js";
|
|
35
35
|
import {
|
|
36
36
|
safeCapture
|
|
37
37
|
} from "../chunk-AQBXNPMD.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.67",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Pane-embeddable coding agent. Ships direct/local/vercel-sandbox execution modes behind one interface.",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"use-stick-to-bottom": "^1.1.6",
|
|
80
80
|
"yaml": "^2.9.0",
|
|
81
81
|
"zod": "^3.25.76",
|
|
82
|
-
"@hachej/boring-ui-kit": "0.1.
|
|
82
|
+
"@hachej/boring-ui-kit": "0.1.67"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
85
|
"@antithesishq/bombadil": "0.6.1",
|