- e68a84f: Add configurable child model defaults via
~/.pi/agent/configs/codemode.json(childModel,childThinkingLevel), falling back to the session's current model and thinking level. Raise child spawn concurrency from 4 to 6 (workflow default too; process-wide ceiling stays 8). Stream live progress into the tool row while a codemode run executes: running/done/failed spawn counts plus recent log lines viaonUpdatepartials. Fix a duplicated line in the tool description.
- 44a6aad: Add configurable child model defaults via
~/.pi/agent/configs/codemode.json(childModel,childThinkingLevel), falling back to the session's current model and thinking level. Raise child spawn concurrency from 4 to 6 (workflow default too; process-wide ceiling stays 8). Stream live progress into the tool row while a codemode run executes: running/done/failed spawn counts plus recent log lines viaonUpdatepartials. Fix a duplicated line in the tool description.
- Updated dependencies [7c6a68d]
- @nicknisi/pi-shared@0.5.1
- 4fff6f8: Scope the default fleet command, shortcut, tool list, and footer indicator to active subagents owned by the current Pi session, with explicit
allaccess to persisted machine-wide history. Propagate owner-session metadata through codemode and workflows without enabling session mirrors. Add a global statuslinehiddenStatusesdenylist for suppressing extension-provided footer segments. - Updated dependencies [4fff6f8]
- @nicknisi/pi-shared@0.5.0
-
bfd02d7: Fix
Dynamic require of "node:fs" is not supportederrors in codemode snippets.Snippets that used CJS
require('node:...')(which the tool description advertises as reachable) failed at runtime: esbuild bundles to ESM and rewrites those calls to a__requireshim that throws whenrequireis undefined in ESM scope. Inject a real CJSrequire(viacreateRequire(import.meta.url)) as an esbuild banner so the shim resolves to the genuine Node built-in instead of throwing.
- Updated dependencies [9cd49ce]
- @nicknisi/pi-shared@0.4.0
- 484672a: codemode joins pi's editor prefix grammar (
!bash,!!silent bash,@files) as the=member.=<snippet>at position zero runs the snippet through the codemode runtime inline, devtools-console style — the snippet executes with the samespawn/log/runWorkflowbindings as thecodemodetool, the result renders as a collapsible block (toggled with the sameapp.tools.expandkey as tool output), and the returned value binds to$1,$2, … for later console snippets in the session. Each run is persisted as a session custom entry (customType: 'codemode-console') so the console history survives reload;$1…are rebuilt from those entries on session start. The=prefix is intercepted viaon("input")with{ action: "handled" }(TUI only; extension-injected and non-tui inputs pass through) and respects the schema-or-nothing spawn contract. - 484672a:
/cx <name> [args...]runs a named codemode snippet discovered from plain TS/JS files in~/.pi/agent/snippets/(global) and.pi/snippets/(project, trusted only), mirroring pi's prompt-template discovery. Files carry optional frontmatter (description) for the autocomplete dropdown./cxexpands{{args}}-style substitution —{{args}}/{{@}}(all args),{{N}}(positional, 1-indexed),{{N:-default}}— then runs the snippet via the codemode runtime, binding the result to the next$Nand persisting it as acodemode-consolecustom entry. This is a directory convention ONLY: no registry, no index, no config keys — the registry isls, the package manager isgit, the search engine isgrep. Snippets are read on demand each invocation, so discovery rides/reloadwith no snippet-specific wiring. - 9245fdc: codemode spawn() now requires an explicit output contract. A spawn with neither
outputSchemanortext: truethrows immediately instead of returning unparsed text. This prevents the silent failure mode where reading a field off unparsed text yieldsundefinedwhile the run reports success. A schema-validating spawn that fails validation after its bounded repair attempt still returns{ ok: false, kind: 'schema_invalid' }— never a silently-empty string. Migration: addtext: trueto existing text-mode spawns, or define anoutputSchema. - 9245fdc: codemode now writes a runscope orchestration ledger into the parent session. Every
spawnandrunWorkflowlifecycle event —spawn_start,spawn_end,stage_start,stage_end,gate_result— is appended as a typed custom entry (customType: 'codemode-runscope') viapi.appendEntry, each carrying{ runId, spanId, parentSpanId, kind, ts }. Custom entries persist to the session JSONL without entering LLM context. StageparentSpanIdis derived fromneedsedges so the trace tree mirrors the workflow DAG; spawns inside a workflow are parented to their stage viaAsyncLocalStorage. Dependency-free — no OpenTelemetry.
- 6172976: Add a "Recipes" section to the codemode README with the Adversarial Gauntlet recipe: a
sharesTreebuilder stage with a synchronous critic gate over the realgit diff HEAD(revise loop,maxGateAttempts: 3) plus an independent downstream critic stage over the capturedtreeDiffs. Docs-only; no runtime change. - Updated dependencies [00958ee]
- Updated dependencies [1f032e3]
- Updated dependencies [00958ee]
- Updated dependencies [efef393]
- @nicknisi/pi-shared@0.3.0
- aa583e4: The
codemodetool gains a third injected binding:runWorkflow(spec, opts?)— the shared declarative workflow engine (needs/foreach/gates/retries, sharesTree tree-diff handoff, control artifacts + resume), bound to the codemode runtime with the tool's abort signals threaded into every stage spawn. - aa583e4: New package: codemode rebuilt on the first-party subagent platform. The
codemodetool executes model-written TypeScript in-process (via bundle-require) with an injectedspawnbinding over the shared in-process runtime — compositional orchestration (Promise.all fan-out, pipelines, map/reduce) with typed SpawnResults, bounded results/logs, timeout with child abort, and no pi-subagents dependency. - 29eaae8: TUI surfaces for the platform: dispatch gets live per-task progress (renderCall/renderResult with council-style status trees) plus a background-runs widget;
/fleetis now an interactive overlay with drill-down run details (text fallback when headless); intercom deliveries render as styled peer-mail cards with an aligned/intercomlisting; codemode gets renderCall/renderResult with collapsed output, log tree, and error states.
- Updated dependencies [cacb4cc]
- Updated dependencies [121a19d]
- Updated dependencies [c60bd34]
- Updated dependencies [0aabf31]
- Updated dependencies [0aabf31]
- Updated dependencies [cacb4cc]
- Updated dependencies [73c772e]
- @nicknisi/pi-shared@0.2.0