- Exported
CustomProviderDialogfrom@mariozechner/pi-web-ui(#2267)
onModelSelectcallback onAgentInterfaceandChatPanel.setAgentconfigallowedProvidersfilter onModelSelector.open()to restrict visible modelsonClosecallback onSettingsDialog.open()state_changeevent emitted by Agent onsetModel()andsetThinkingLevel()- Subsequence-based fuzzy search in model selector (replaces substring matching)
openai-codexandgithub-copilottoshouldUseProxyForProvider
- Anthropic test model updated from
claude-3-5-haiku-20241022toclaude-haiku-4-5
AgentInterfaceclears streaming container onmessage_endto prevent duplicate tool rendering
- Build
@mariozechner/pi-web-uiwithtscinstead oftsgoso Lit decorator-based state updates rerender correctly.
- Made model selector search case-insensitive by normalizing query tokens, fixing auto-capitalized mobile input filtering (#1443)
- Exported
CustomProviderCard,ProviderKeyInput,AbortedMessage, andToolMessageDebugViewcomponents for custom UIs (#1015)
- Updated tsgo to 7.0.0-dev.20260120.1 for decorator support (#873)
-
Agent class moved to
@mariozechner/pi-agent-core: TheAgentclass,AgentState, and related types are no longer exported from this package. Import them from@mariozechner/pi-agent-coreinstead. -
Transport abstraction removed:
ProviderTransport,AppTransport,AgentTransportinterface, and related types have been removed. TheAgentclass now usesstreamFnfor custom streaming. -
AppMessagerenamed toAgentMessage: Now imported from@mariozechner/pi-agent-core. Custom message types use declaration merging onCustomAgentMessagesinterface. -
UserMessageWithAttachmentsis now a custom message type: Hasrole: "user-with-attachments"instead ofrole: "user". UseisUserMessageWithAttachments()type guard. -
CustomMessagesinterface removed: Use declaration merging onCustomAgentMessagesfrom@mariozechner/pi-agent-coreinstead. -
agent.appendMessage()removed: Useagent.queueMessage()instead. -
Agent event types changed:
AgentInterfacenow handles new event types from@mariozechner/pi-agent-core:message_start,message_end,message_update,turn_start,turn_end,agent_start,agent_end.
-
defaultConvertToLlm: Default message transformer that handlesUserMessageWithAttachmentsandArtifactMessage. Apps can extend this for custom message types. -
convertAttachments: Utility to convertAttachment[]to LLM content blocks (images and extracted document text). -
isUserMessageWithAttachments/isArtifactMessage: Type guard functions for custom message types. -
createStreamFn: Creates a stream function with CORS proxy support. Reads proxy settings on each call for dynamic configuration. -
Default
streamFnandgetApiKey:AgentInterfacenow sets sensible defaults if not provided:streamFn: UsescreateStreamFnwith proxy settings from storagegetApiKey: Reads fromproviderKeysstorage
-
Proxy utilities exported:
applyProxyIfNeeded,shouldUseProxyForProvider,isCorsError,createStreamFn
Agentclass (moved to@mariozechner/pi-agent-core)ProviderTransportclassAppTransportclassAgentTransportinterfaceAgentRunConfigtypeProxyAssistantMessageEventtypetest-sessions.tsexample file
Before (0.30.x):
import { Agent, ProviderTransport, type AppMessage } from '@mariozechner/pi-web-ui';
const agent = new Agent({
transport: new ProviderTransport(),
messageTransformer: (messages: AppMessage[]) => messages.filter(...)
});After:
import { Agent, type AgentMessage } from '@mariozechner/pi-agent-core';
import { defaultConvertToLlm } from '@mariozechner/pi-web-ui';
const agent = new Agent({
convertToLlm: (messages: AgentMessage[]) => {
// Extend defaultConvertToLlm for custom types
return defaultConvertToLlm(messages);
}
});
// AgentInterface will set streamFn and getApiKey defaults automaticallyCustom message types:
// Before: declaration merging on CustomMessages
declare module "@mariozechner/pi-web-ui" {
interface CustomMessages {
"my-message": MyMessage;
}
}
// After: declaration merging on CustomAgentMessages
declare module "@mariozechner/pi-agent-core" {
interface CustomAgentMessages {
"my-message": MyMessage;
}
}