feat(durable): extensions and per-conversation agents (Package 21)

- Registry of named extensions (tools, sections, hooks, wraps, tasks) with install/uninstall;
  defineExtension, defineTool, section, hook, wrapTool, wrapSection
- pi.agent document (model, thinking level, extensions, tools filter, instructions, cwd),
  configure(), Conversation.agent()/configure(), agent option on root/createConversation/fork,
  task-owned conversations copy their owner's agent
- Harness-wide HarnessSettings read at every use; env function built per use
- Hooks and the agent resolved per task phase; tool calls resolved with the tools filter applied
- ToolRegistration<TParameters, TDetails> types execute() args from parameters
- HarnessOptions.conversationCreated; Tx.submissionByRequest() and Tx.createSubmission()
- FileSystem.id; edit/write serialize per file system id and canonical path
- CodingTools extension (read, write, edit, bash)
- Examples 06-31 on the new API, README and CHANGELOG
This commit is contained in:
Mario Zechner 2026-10-01 01:28:04 +02:00
parent 4bae867759
commit b56702ad34
77 changed files with 3917 additions and 2558 deletions

View file

@ -44,7 +44,7 @@ const BUDGETS = {
"packages/durable": {
".": {
// The built-in tool task validates arguments with pi-ai's TypeBox-based validation, so TypeBox is allowed.
maxFiles: 58,
maxFiles: 59,
forbid: ["packages/ai/src/index.ts", "packages/ai/src/utils/typebox-helpers.ts"],
},
},