chore(deps): update dependency can1357/oh-my-pi to v15.13.2 #70
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/can1357-oh-my-pi-15.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
15.13.1→15.13.2Release Notes
can1357/oh-my-pi (can1357/oh-my-pi)
v15.13.2Compare Source
@oh-my-pi/pi-agent-core
Breaking Changes
harmony-leakexports from the@oh-my-pi/pi-agent-corepackage entrypointpromptToolCallsagent/loop option withtoolCallSyntax, selecting an explicit in-band tool-call grammar instead of a boolean GLM-only mode.Added
PI_OWNED_TOOLS=<syntax>(for examplehermesorqwen3) while preserving legacyPI_OWNED_TOOLS=1/trueas GLM modeglm,hermes,kimi,xml,anthropic,deepseek,harmony,pi-native,qwen3). Owned mode sends no native provider tools, appends a syntax-specific prompt/catalog, re-encodes prior tool calls/results as grammar-owned text, and parses streamed model output back into canonical tool calls.normalizeTools: when given a model's affinity syntax (resolved viapreferredToolSyntax), it renders each tool'sexamplesinto an<examples>block in that native syntax and appends it to the wire description. Wired through both context paths (fresh build and append-onlytakeSnapshot/buildvia a newexampleSyntaxbuild option), with the_iintent-field placeholder added to examples when intent tracing injects it.abortOnFabricatedToolResultoption toAgentOptions/AgentLoopConfig(defaulttrue): when owned tool calling is active and the model fabricates a tool result mid-turn,trueaborts the provider request immediately whilefalselets it finish and discards the fabricated continuation.Changed
Agentloop configuration resolution by selecting syntax fromtoolCallSyntaxorPI_OWNED_TOOLSwhen presentFixed
exampleSyntax, so switching tool-call syntax rebuilds cached prompts with the correct injected tool examplestoolChoiceafter stripping native tools, preventing invalid tool-choice requests@oh-my-pi/pi-ai
Added
jsonSchemaToTypeScriptto@oh-my-pi/pi-ai/utils/schemato render JSON Schema argument shapes as compact, human-readable TypeScript-style signaturesToolExampletype (ToolCallExample/ToolCompareExample/ToolNoteExample, parameterized over a tool's argument shape) and anexamplesproperty on theToolinterface for defining tool-call examples once as data.renderToolExamples(via@oh-my-pi/pi-ai/grammar) to render a tool's examples into an<examples>block in the model's native tool-call syntax, with an optional_iintent-field placeholder injected when intent tracing is active.renderToolCallrendering of a single tool-call invocation (the inner element only, without the parallel-call block envelope), distinct fromrenderAssistantToolCallswhich renders a complete block of one or more parallel calls.GrammarRenderOptions.exampleflag torenderToolCall: when set, the invocation renders as the bare payload — Harmony emits just the JSON arguments, dropping the verbose<|start|>…<|message|>…<|call|>envelope — sorenderToolExampleskeeps<examples>blocks legible.abortOnFabricationparameter towrapInbandToolStream(defaulttrue): whenfalse, a fabricated in-band tool-result continuation is discarded without aborting the provider request instead of cutting the turn short.@oh-my-pi/pi-ai/utils/harmony-leakexport with helpers to detect, audit, and recover GPT-5 Harmony tool-call header leaks@oh-my-pi/pi-ai/grammarpublic entrypoint for grammar factories, prompt/call rendering, in-band scanning, history encoding, and related typed utilitiesChanged
<|constrain|>jsonmarker before the payload incommentarychannel callsParameterssection as a simplified TypeScript-style signature derived from its wire schemaToolCallSyntaxunion to@oh-my-pi/pi-catalog/identityand re-exported it from@oh-my-pi/pi-ai/grammarso the catalog can own the syntax vocabulary without an@oh-my-pi/pi-airuntime import; all existing import paths are unchanged.renderToolInventory(the verbose system-prompt inventory and/dump) to render each tool as a# Tool: <name>markdown section instead of a<tool name="…">…</tool>wrapper.Fixed
recoverHarmonyToolCallplus leak-detection workflows for contaminated assistant messages so recoverable tool-call arguments can be safely truncated and retriedto=functions...is not treated as leaked tool-call markupcursor-agentAPI) streaming dropping large MCP tool-call arguments — most visibly the built-intasktool'stasksarray on multi-subagent dispatches, which failed downstream schema validation withtasks: Invalid input: expected array, received undefined. Two upstream behaviors were fighting the stream handler inpackages/ai/src/providers/cursor.ts: (1)args_text_deltacarries the cumulative args text so far peragent.proto, but the handler concatenated each snapshot onto the buffer, garbling the JSON; (2)tool_call_completedcarries anMcpArgsmap that omits oversized parameters entirely and downgrades unparsable values to their raw string fallback, but the handler unconditionally overwrote the streamed args with that map. The handler now strips the already-buffered prefix from eachargs_text_deltasnapshot (falling back to append when the snapshot doesn't extend the buffer) and merges the decodedMcpArgsmap into the streamed args — preserving streamed keys the completion frame omits and the structured value when the completion frame downgrades to a string. (#2615)function_call_arguments.deltaevents when more than one tool call was open concurrently. The runtime tracked a singletoncurrentItem/currentBlock, so every delta — regardless ofitem_id— was appended to whichever item was most recently added, andoutput_item.donefor the earlier call then overwrote a sibling's stored arguments (visible astasks: Invalid input: expected array, received undefinedon thetasktool). Open items are now keyed byitem_idwithoutput_indexfallback; deltas/done events route to the matching block, late deltas whose item already closed are dropped instead of corrupting a sibling, andtoolcall_*stream events emit the rightcontentIndexper call (#2619).@oh-my-pi/pi-catalog
Added
ToolCallSyntaxunion andFALLBACK_TOOL_SYNTAXconstant to@oh-my-pi/pi-catalog/identity(re-exported from@oh-my-pi/pi-ai/grammar).preferredToolSyntax(modelId)to@oh-my-pi/pi-catalog/identity, resolving a model's native tool-call syntax affinity from its family token (Claude→anthropic, GLM→glm, Kimi→kimi, Qwen→qwen3, DeepSeek→deepseek, OpenAI/gpt-oss→harmony, else thexmlfallback).flux-1-schnell-fp8to the Fireworks serverless model cataloggpt-oss-20bto the Fireworks model catalogqwen3-embedding-8bto the Fireworks model catalogqwen3-reranker-8bto the Fireworks model catalogGemma 4 E2B ITandGemma 4 E4B ITto the Google model catalogqwen/qwen3-asr-flashto the Zenmux model catalogsupportsToolsmodel metadata so providers can mark models that require in-band tool-call formatting.Changed
supportsTools: falsefor fallback-aware handlingmodelFamilyToken(modelId)to classify Claude/OpenAI ids the structured parser misses (older dated forms such asclaude-3-5-sonnet-20241022andgpt-4o), returninganthropic/openaiinstead of an empty token.@oh-my-pi/pi-coding-agent
Added
supportsToolsto model definitions and overrides so custom model configs can declare whether a model supports native tool callstools.formatfor choosing native tool calling or a specific owned in-band format (glm,hermes,kimi,xml), withautofalling back to GLM only for models marked as not supporting native tools.tools.abortOnFabricatedResultsetting (default on): with in-band tool calls, stop the model the moment it starts hallucinating a tool result mid-turn, or disable it to let the model finish and discard the fabricated continuation instead.Changed
/dumptool catalog output to render tools through the shared inventory renderer with readable TypeScript-style signatures and native-syntax<examples>blockstools.formatto support additional in-band tool-call syntaxes, includinganthropic,deepseek,harmony,pi, andqwen3<examples>blocks (eval,browser,todo,irc,ssh,ast_edit,ast_grep,debug,find,inspect_image,ask, plus thepatch/apply_patchedit modes) to define examples as typedexamplesdata on the tool (ToolExample<z.input<typeof schema>>); the AI layer now renders them in the model's native tool-call syntax and the markdown<examples>blocks were removed.PI_OWNED_TOOLS=1still forces GLM;PI_OWNED_TOOLS=<syntax>forces that syntax.<attachment>), local-file attachments, or inline paste as explicit actions.# Inventoryblock to the bottom of the TOOLS section, and it now renders a compact tool-name list only when native tool calling is active and tool descriptions are not repeated; otherwise it emits full# Tool: <name>sections.Fixed
evalJS cells intermittently failing after ~15s with exit code 1 under load (e.g.bun test --parallel, where each file runs in a worker subprocess and the eval worker is nested). The host swallowed asynchronous worker spawn/load/crash failures —new Workerreports module-load errors via an asyncerrorevent, not a synchronous throw, so the spawntry/catch(and its inline-worker fallback) never fired, and noerror/messageerrorlistener was wired — leaving a dead worker indistinguishable from a slow one and blocking the full worker-init timeout. The init handshake now rejects immediately on a workererror/messageerrorevent and falls back to the inline worker, and thereadylistener is attached synchronously afternew Worker(Bun does not buffer messages posted before a listener exists) so a fast worker'sreadycan no longer be dropped.@oh-my-pi/hashline
Breaking Changes
replace->SWAPdelete->DELinsert before/after/head/tail->INS.PRE/POST/HEAD/TAILreplace_block->SWAP.BLKdelete_block->DEL.BLKinsert_after_block->INS.BLK.POSTWhat's Changed
Full Changelog: https://github.com/can1357/oh-my-pi/compare/v15.13.1...v15.13.2
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.