Repository navigation
v2026.10.9
·
450 commits
to main
since this release
@code-yeongyu/senpi
Breaking Changes
Added
- A permission prompt sent to RPC clients now names the tool call it approves (
toolCallId, plusparentToolCallIdfor a call another tool issued), and so does the feedbackinputafter "Deny with feedback". The engine raises the prompts for every call of a message before any of them runs, so a client could not tell which of several calls of the same tool a prompt was for; an app can now show each prompt with its own call's input (#2710).
Changed
Fixed
- A reply that only answers a question is now the answer itself: the prompt no longer requires every final message to open with the Ask / For you / Now / Next block, which put one-line answers inside a status block ending
Now: none. Next: none.The block stays for turns that did work (#2723). - Replies no longer arrive wrapped in a blockquote: the handoff template and the routing line in the system prompt were written as markdown quote lines, the model copied the
>, and the desktop and the TUI drew the whole answer as a grey quoted aside that read as if the turn had paused (#2714).
Removed
@code-yeongyu/senpi-ai
Breaking Changes
Added
Changed
Fixed
Removed
@code-yeongyu/senpi-agent-core
Breaking Changes
Added
Changed
Fixed
Removed
@code-yeongyu/senpi-codemode
Breaking Changes
Added
- Python
agent(prompt, tools=[...])grants the child the cell's@toolfunctions by name, like JavaScript'sagent(prompt, { tools }); anything other than a list of names is refused withinvalid_tools(#2731). workpool(agent, name, {mode, tools})forwardstools, a list of kernel-tool names the cell defined, to the host workpool unchanged in all four languages, so pool workers can call them; anything other than a list of names is refused withinvalid_toolsbefore reaching the host. Which kernels' tools a host accepts is the host's call: JavaScripttool(fn)tools work on omo today, while Python@tooltools need omo#9529 (#2452).- A Python or JavaScript cell that is only
%load <path>runs that local file as the cell: its definitions persist, Python tracebacks name the file and its sibling modules import, and JavaScript resolves the file's relative imports from its directory; remote URLs are refused (#2452). - A Python cell that is only
%pip install <requirements>installs packages without restarting the kernel; the next cell imports them. Packages go into the session's own environment (or<cwd>/.senpi/python-packagesafter%environment project), never the interpreter's site-packages or the user site, and a failed or cancelled install leaves the previous packages active (#2452).
Changed
Fixed
- A Python cell can now grant its
@toolfunctions to a child (#2731). Host calls from Python cells (tool.task(..., tools=[...]),agent(..., tools=[...]),workpool(..., tools=[...])) reached the host with no kernel-tools capability, so every such grant was refused as unavailable. Each call now carries its cell, and the host gives it that cell's capability while the cell runs; a call from another, unknown or finished cell gets none. %pipparsing follow-ups (#2689): a%pipor%environmentline after code now says to put it on its own cell instead of "Unsupported line magic"; a comment line ending in a backslash no longer swallows the%pipline after it; inside double quotes a backslash is kept unless it escapes a quote, backslash,$or a backtick, as a POSIX shell does.
Removed
@code-yeongyu/senpi-tui
Breaking Changes
Added
Changed
Fixed
- Accepting an
@path suggestion with Tab or Enter while the picker still showed a list computed for earlier text no longer splices the stale item into the prompt (@~/Devbecame@~/De@go/); the editor re-queries for the current token and accepts its best match (#2735; #2736 by @trac3r00).