1319 Commits
Author SHA1 Message Date
Mario Zechner 7fd478a2e8 feat(agent): remove the experimental harness from pi-agent-core
pi-agent-core now contains only Agent, the agent loop, the proxy stream, and
their types. Removed the harness, sessions and session storage, pico3, harness
tools, compaction, skills, prompt templates, telemetry schemas, search types,
and the uuidv7 and pi-telemetry re-exports, plus the ./node, ./harness/* and
./experimental/pico3 subpath exports. Durable sessions live in
@earendil-works/pi-durable.

Also removed packages/session-backends and the experimental mini and micro
coding-agent frontends, with their scripts and build configuration.
2026-10-01 14:45:01 +02:00
Armin Ronacher 955cc6665e Add [Unreleased] section for next cycle 2026-09-30 21:12:42 +02:00
Armin Ronacher 005af57d88 Release v0.99.2 2026-09-30 21:12:28 +02:00
Armin Ronacher 6a4af07d61 Add [Unreleased] section for next cycle 2026-09-29 20:07:07 +02:00
Armin Ronacher d86654abb8 Release v0.99.1 2026-09-29 20:06:55 +02:00
Armin Ronacher 312184edb6 Add [Unreleased] section for next cycle 2026-09-29 19:04:43 +02:00
Armin Ronacher 4b060d3a98 Release v0.99.0 2026-09-29 19:04:28 +02:00
Armin Ronacher f81cf5520d docs: audit changelogs for 0.99.0 2026-09-29 19:01:43 +02:00
Armin Ronacher 8eb2bccf26 fix: bump vitest to 4.1.11 and gondolin's undici to 6.29.0
Addresses GHSA-82fw-gwwq-j7x9 (vitest mocker path traversal) and
GHSA-3wwx-pv8p-q78v (undici 6.x permessage-deflate DoS). Both are
dev/example-only; the shipped coding-agent shrinkwrap is unchanged.
2026-09-29 18:38:07 +02:00
Armin Ronacher 8562bcf66a feat(coding-agent): codemode and MCP
This adds codemode and MCP support to pi. Codemode (packages/codemode) runs
model-written JavaScript in a QuickJS wasm VM inside a worker. From there the
script calls pi's tools as async functions, uses a per-session store, and can
read the model catalog and run classifiers. The codemode tool in coding-agent
is compatible with Codex's exec tool, and codemode.mode works like Codex's
tool modes (on or only). Large results are written to a JSON temp file. MCP
(packages/mcp) is a standalone client for stdio and streamable HTTP servers,
with OAuth.

The core only gets general mechanisms; codemode, tool_search and MCP are
built-in extensions that use them. Other extensions can replace these
built-ins. Tools declare an exposure: direct, model-only, codemode, deferred
or hidden. prepareLoadout() lets an orchestrating tool change which tool
declarations the model sees. ctx.executeTool() runs nested calls through
validation and the tool_call/tool_result hooks. Those calls emit events with
parentToolCallId and are recorded as bounded nestedCalls on the parent
result, which compaction and HTML export use. Tools can also return
structuredContent with an outputSchema, and can report errors with isError
instead of throwing. MCP servers come from mcp.json (global, or per project
after the project is trusted) or from pi.registerMcpServer(). They are
managed with /mcp and pi mcp list|login|logout, and their runtimes load on
first use.

Closes #10040
2026-09-29 09:12:50 +02:00
Armin Ronacher 540e174c72 feat(coding-agent): Virtual models (#10035)
This adds experimental support for virtual models. A virtual model is a catalog entry that an extension registers with pi.registerVirtualModel(). It does not talk to a provider itself; for every request it picks a physical model and thinking level. The motivation is to make routing policies pluggable: plan on a strong model and implement on a cheap one, pick a model with a classifier, or move to a larger window when the context grows. Today this needs model switching by hand or hacks in prepareRequest.

The selection stays virtual: model_change records it, resume restores it, and each response records the physical model and thinking level that produced it. Router state can be stored on the session branch, so it follows /tree and forks and survives compaction. Context limits, compaction and image sizing use the physical model a request was routed to. examples/extensions/jev-router.ts shows a full router that uses the Jev classifier to pick Sol or Terra for planning and hands off to Luna after the first edit. docs/virtual-models.md describes the API.
2026-09-28 23:30:45 +02:00
Armin Ronacher ca7460d16b feat: build with TypeScript 7 and run sources with plain node
Replace the tsgo native preview with typescript@7.0.2 and port the check scripts to the TS 7 API. Target ES2024, drop useDefineForClassFields: false and unused decorator options, and enable verbatimModuleSyntax. Replace tsx with node plus the source resolver hook, passed to --import as a file URL.

closes #9965
2026-09-25 13:14:33 +02:00
Mario Zechner d5cba1d97c feat(chord): make immutable delta tracker canonical
Replace the alternate tracker implementations with the optimized immutable overlay, validate draft placements as strict JSON, and document the ownership contract. Consolidate tracker tests and benchmarks around the canonical implementation.
2026-09-24 15:07:12 +02:00
David Brailovsky 002fc83852 feat: expose provider stream events to extensions (#9901)
Add onProviderStreamEvent through pi-ai and agent core, and surface
provider_stream_event to coding-agent extensions.

Closes #9784
2026-09-23 16:03:30 +02:00
Mario Zechner 9a139c62bf feat(chord): consolidate immutable delta tracking 2026-09-23 02:22:52 +02:00
Armin Ronacher a8ed497713 Add [Unreleased] section for next cycle 2026-09-22 21:28:09 +02:00
Armin Ronacher f07218c4d4 Release v0.87.1 2026-09-22 21:28:02 +02:00
Armin Ronacher 4c8eb393c7 Add [Unreleased] section for next cycle 2026-09-21 18:31:58 +02:00
Armin Ronacher 16787ad5b2 Release v0.87.0 2026-09-21 18:31:52 +02:00
Mario Zechner 466db0fecd feat: add canonical session context boundaries
Make SessionManager projections authoritative for provider requests, add append-only context edits and actionable turn boundaries, and preserve existing queue scheduling during continuation and recovery.
2026-09-21 16:59:20 +02:00
Mario Zechner 10d1ad621f feat: add transactional replicated state 2026-09-21 16:07:59 +02:00
David Brailovsky 47a18e37b1 fix: require complete GIF image signatures
Require GIF87a or GIF89a headers to avoid classifying text files beginning with GIF as images.

Fixes #9755
2026-09-21 10:30:42 +02:00
Armin Ronacher 19451accde Add [Unreleased] section for next cycle 2026-09-20 13:04:18 +02:00
Armin Ronacher 13cbf77df2 Release v0.86.1 2026-09-20 13:04:11 +02:00
Armin Ronacher 50d766cba2 Add [Unreleased] section for next cycle 2026-09-20 01:00:48 +02:00
Armin Ronacher ecac0a9c4e Release v0.86.0 2026-09-20 01:00:41 +02:00
Mario Zechner b5ef419d5b docs(agent): restore non-Pico5 documentation 2026-09-18 13:48:19 +02:00
Mario Zechner 0801601621 feat(durable): move Pico into dedicated package 2026-09-18 13:39:09 +02:00
Mario Zechner cf8d5fac30 feat(agent): add Pico storage foundation 2026-09-18 12:32:00 +02:00
Mario Zechner 729d5cb74d docs(agent): finalize Pico5 specification set 2026-09-17 14:57:03 +02:00
Mario Zechner 2b04ce27fb docs(agent): refine Pico5 plugin state API 2026-09-17 11:24:54 +02:00
Mario Zechner 01528e2094 Merge remote-tracking branch 'origin/main' into pico 2026-09-16 17:58:54 +02:00
Armin Ronacher 9e05370b29 Mid conversation system messages (#9548)
This change makes system prompt text and tool changes part of the transcript rather than silently rewriting its starting conditions. This lets Pi record when instructions changed or tools became available, restore that state after resuming or navigating branches, and preserve cached prompt prefixes where the upstream supports it.
2026-09-16 15:54:07 +02:00
Mario Zechner b02eef4186 docs(agent): specify Pico5 harness API 2026-09-15 19:27:23 +02:00
Mario Zechner c8e4a5a552 docs(agent): finalize Pico5 architecture and presentation 2026-09-15 17:36:13 +02:00
Mario Zechner 56cd5989ea docs(agent): replace obsolete Pico prototypes with Pico5 design 2026-09-15 11:27:53 +02:00
Mario Zechner 46b66c59af feat(agent): add hardened pico3 kernel 2026-09-14 11:17:04 +02:00
Mario Zechner 9b2aff2c5b docs(agent): pico3: forbid AsyncLocalStorage; nested-line detection via Chord context key 2026-09-13 23:02:38 +02:00
Mario Zechner 09b031600d docs(agent): pico3 review decisions: revision, visibility, memos, waiting, reload
- Envelope carries a contiguous per-watch revision; storage Seq stays internal;
  Chord bridge publishes off the line through a bounded ordered adapter
- Namespaces reach the view only through a declared view projection; memos and
  slot working state are never in the view
- memoOnce uses property presence; memos are coordination/evidence, not
  exactly-once; idempotency key before the effect
- Hooks bound to their namespace token; BeforeToolApi.waiting(ctx) is async;
  memo keys are (task, namespace, name)
- Reload: quiescent hold/reload/release, otherwise suspend/reopen; no handler
  withdrawal machinery in v1; Namespace.unregister
- pi.* entry names reject except pi.notice; config reset is an operation;
  generation failures run the final boundary and start successors
2026-09-13 22:49:14 +02:00
Mario Zechner fd3b009d9f docs(agent): add pico3 view/events, plugins and hardening handoff
Canonical pico3 material under packages/agent/docs/pico/v3/:
- hardening-handoff.md: V3 hardening handoff with supersession table
- view-and-events.md: single view document, ops by path, named events,
  commit-by-commit mapping, Codex mapping, watchers and late joiners
- plugins.md: harness registration surface, durable primitives, extension
  points with examples, reload contract, Chord facet layer
- harness-v3.zip: baseline sketch backup (sha256 1c69c5c5...fbe7)
2026-09-13 22:38:07 +02:00
Mario Zechner a9930d2857 docs(agent): correct pico v2 foundation contracts 2026-09-13 04:01:44 +02:00
Mario Zechner 51f3090790 feat(agent): align pico foundation with v2 contract 2026-09-13 04:00:27 +02:00
Mario Zechner 99a3948c4c docs(agent): define pico v2 kernel contract 2026-09-13 02:20:26 +02:00
Mario Zechner df484f2775 feat(agent): add pico memory storage foundation 2026-09-12 22:31:41 +02:00
Mario Zechner 1915b35a9b feat(agent): refine pico core task capabilities 2026-09-12 22:31:16 +02:00
Mario Zechner d11c4b7281 docs(agent): simplify pico scheduling and core task model 2026-09-12 22:31:03 +02:00
Mario Zechner 7a2647f32a docs(agent): define pico state tasks and tool boundaries 2026-09-12 01:20:49 +02:00
Mario Zechner f467cf7068 feat(agent): add pico compile-time foundation 2026-09-12 00:02:58 +02:00
Mario Zechner 4819cc877e docs(agent): add approved pico implementation handoff 2026-09-11 21:49:53 +02:00
Mario Zechner f3c672245d docs(agent): require typed status payloads for pico task writes 2026-09-11 12:57:47 +02:00