Repository navigation
v1.0.0-alpha.9
·
513 commits
to main
since this release
What's Changed
- Fix TypeScript build errors and add npm publishing configuration by @LinuxDevil with @Copilot in #1
- LOU-A: Security & correctness fixes by @LinuxDevil in #2
- LOU-B: Engineering foundations by @LinuxDevil in #3
- LOU-C: Human-in-the-loop & durable execution by @LinuxDevil in #4
- LOU-D: Multi-agent delegation by @LinuxDevil in #5
- LOU-E: Observability, tracing & guardrails by @LinuxDevil in #6
- LOU-F: MCP, sandboxing & provider expansion by @LinuxDevil in #7
- LOU-G: Evals harness by @LinuxDevil in #8
- LOU-H: DX — zero-config, CLI scaffold & playground by @LinuxDevil in #9
- LOU-I: Deploy portability & documentation by @LinuxDevil in #10
- LOU-J: Cross-harness spec & flagship pipeline by @LinuxDevil in #11
- LOU-K1: export MCP client on public API surface by @LinuxDevil in #12
- LOU-K5: restore checkpointing for the remainder of a run after resumeAfterApproval() by @LinuxDevil in #13
- LOU-K4: ship a bundled, opt-in OpenTelemetry TraceExporter by @LinuxDevil in #14
- LOU-K3: support a real LLM provider on Cloudflare Worker deploy target by @LinuxDevil in #15
- LOU-K2: opt built-in I/O tools into the sandbox seam by @LinuxDevil in #16
- LOU-L: Agent Forge app shell & data model by @LinuxDevil in #17
- LOU-M: real ReactFlow canvas for the agent graph editor by @LinuxDevil in #18
- LOU-N: runtime control server for Agent Forge (run/stop/status/approve) by @LinuxDevil in #19
- LOU-O: debug & observability console by @LinuxDevil in #20
- LOU-P: chat with agents by @LinuxDevil in #21
- LOU-Q: agent hooks (pre/post) with sandboxed hook execution by @LinuxDevil in #22
- LOU-S: packaging & distribution (loushy studio ships in the npm package) by @LinuxDevil in #24
- LOU-R: settings & config (secrets store, deploy, profiles) by @LinuxDevil in #23
- LOU-T1: business-state attachment on checkpoints by @LinuxDevil in #25
- LOU-T2: durable checkpoint store for the Cloudflare Worker deploy target by @LinuxDevil in #26
- LOU-T3: real branching on the Agent Forge canvas (router nodes -> FlowExecutor) by @LinuxDevil in #27
- LOU-T4: unified provider-call failure compaction (Factor 9) by @LinuxDevil in #28
- LOU-T5: real trigger registry (closes Factor 11) by @LinuxDevil in #29
- Add fallow gate and clear all findings (health 63 C -> 97 A) by @LinuxDevil in #30
- LOU-U1: honor the configured model (no hard-coded gpt-4) by @LinuxDevil in #31
- LOU-U4: validate tool arguments against the tool schema before executing by @LinuxDevil in #32
- LOU-U2: keep assistant tool-call turns in provider message conversion by @LinuxDevil in #33
- LOU-U3: remove eval() from FlowExecutor by @LinuxDevil in #34
- LOU-U10, LOU-U11: fix Agent Forge stop/run resume and run Forge suites in CI by @LinuxDevil in #35
- Fix tool-failure payload regression on main; ignore agent worktrees by @LinuxDevil in #38
- LOU-U12: send a structured error to the model when a tool throws by @LinuxDevil in #37
- Fix contract test after LOU-U12 changed the tool-error shape by @LinuxDevil in #41
- LOU-U5, LOU-U6: README/docs accuracy and correct Node engines by @LinuxDevil in #36
- LOU-X1: defineTool with inferred types by @LinuxDevil in #39
- LOU-D5: scripted mockModel for deterministic agent tests by @LinuxDevil in #40
- LOU-V1: cancel a run with an AbortSignal by @LinuxDevil in #42
- docs: ticket status after waves 1-2 by @LinuxDevil in #43
- LOU-Y2: skills (progressive disclosure of instructions) by @LinuxDevil in #44
- LOU-W1: token estimation and a model registry (context window + pricing) by @LinuxDevil in #45
- LOU-Z1, LOU-Z2: robust MCP schema conversion and result handling by @LinuxDevil in #46
- LOU-D13: Trigger hardening: webhook authentication and real cron expressions by @LinuxDevil in #47
- LOU-U13, LOU-U16: bind flow placeholders as values; flow and adapter types match the runtime by @LinuxDevil in #48
- Restore LOU-Y2 skills (accidentally deleted by #46) by @LinuxDevil in #53
- LOU-D1: five-line hello world by @LinuxDevil in #50
- LOU-V3: run a turn's tool calls in parallel (toolConcurrency) by @LinuxDevil in #49
- LOU-Z3: expose an agent (and its tools) as an MCP server by @LinuxDevil in #52
- LOU-D18, LOU-X7: verify Slack request signatures; built-in todo tools by @LinuxDevil in #55
- LOU-D12: llms.txt, llms-full.txt and docs shipped in the npm package by @LinuxDevil in #51
- ci: run type tests (LOU-U18); ticket status after wave 3 by @LinuxDevil in #56
- LOU-D4: loushy doctor first-run diagnostic by @LinuxDevil in #54
- LOU-D9: OpenTelemetry GenAI semantic conventions and traced flows by @LinuxDevil in #57
- LOU-X6: workspace tools (file system and shell) over pluggable providers by @LinuxDevil in #58
- LOU-W4, LOU-W7: sessions for createAgent; AGENTS.md auto-loading by @LinuxDevil in #59
- LOU-D10, LOU-D19: lazy provider loading (importing the SDK never loads or requires a provider peer) by @LinuxDevil in #60
- LOU-D3: loushy init scaffolds a runnable project in one command by @LinuxDevil in #61
- LOU-V2: typed, versioned event stream (agent.stream()) by @LinuxDevil in #64
- LOU-D7, LOU-D8: trajectory evals and the loushy eval command by @LinuxDevil in #63
- LOU-W5: SQLite store for sessions, checkpoints and approvals by @LinuxDevil in #65
- LOU-Y5: filesystem agent loader (loadAgentDir) by @LinuxDevil in #66
- LOU-D6: record/replay provider for deterministic tests against real model behavior by @LinuxDevil in #67
- LOU-V5: usage and cost accounting on every run by @LinuxDevil in #62
- docs: remove stray merge-conflict markers from README by @LinuxDevil in #69
- Fix Agent Forge server after usage accounting (#62) by @LinuxDevil in #70
- LOU-Y1, LOU-Y3: sub-agents inherit the parent runtime; subagents option with a task tool by @LinuxDevil in #71
- LOU-U7, LOU-U8, LOU-U9: durable execution gaps (approval mid-batch, resume with new input, checkpoint after each LLM turn) by @LinuxDevil in #68
- [EPIC-U][LOU-U17] Sandboxed HTTP honors cancellation by @LinuxDevil in #72
- [EPIC-D][LOU-D21] createAgent agents can pause for approval and resume by @LinuxDevil in #75
- [EPIC-V][LOU-V7.1] Provider retry policy and model fallback wrappers by @LinuxDevil in #74
- [EPIC-D][LOU-D20] mcpServers is a first-class, validated AgentSpec field by @LinuxDevil in #73
- [EPIC-U][LOU-U22] Resumed sub-agent that pauses again keeps the session awaiting approval by @LinuxDevil in #77
- [EPIC-V][LOU-V8] AgentSession.stream() streams a session turn and persists it on done by @LinuxDevil in #78
- [EPIC-D][LOU-D34] AgentType is optional and deprecated by @LinuxDevil in #76
- [EPIC-D][LOU-D22] Tools carry their own inputSchema and execute; defineTool no longer wraps ai.tool() by @LinuxDevil in #79
- [EPIC-W][LOU-W2] Context compaction: prune old tool results behind a pluggable strategy by @LinuxDevil in #80
- [EPIC-D][LOU-D52] Revamp the README into a short, structured front page by @LinuxDevil in #81
- [EPIC-U][LOU-U19] Hitting maxSteps yields finishReason 'max-steps' by @LinuxDevil in #83
- [EPIC-V][LOU-V7.2] createAgent retry policy, fallbackModels and typed retry/fallback events by @LinuxDevil in #86
- [EPIC-W][LOU-W3] Summarize compaction strategy with pinned messages by @LinuxDevil in #84
- [EPIC-D][LOU-D15] useLoushyAgent React hook over the typed event stream by @LinuxDevil in #85
- [EPIC-D][LOU-D35] Remove flows-ai converters and the nanoid dependency by @LinuxDevil in #82
- [EPIC-D][LOU-D36] Remove unused SaaS-era utilities (quotas, ConfigManager, formatters, json-path, file-extractor) by @LinuxDevil in #87
- [EPIC-D][LOU-D40] dockerode, MCP SDK and prompts become optional peers with install hints by @LinuxDevil in #88
- [EPIC-Y][LOU-Y4] Background sub-agents: task background:true with agent_status, agent_await and agent_cancel by @LinuxDevil in #91
- [EPIC-V][LOU-V4] Structured output: createAgent({ output: zodSchema }) yields a typed, validated result.object by @LinuxDevil in #90
- [EPIC-W][LOU-W9] Sessions checkpoint every step and resume a crashed turn by @LinuxDevil in #89
- [EPIC-Y][LOU-Y4.2] Background sub-agents are cancelled or awaited when the lead run ends by @LinuxDevil in #92
- [EPIC-U][LOU-U14] One structured tool-error shape on every tool failure path by @LinuxDevil in #93
- [EPIC-D][LOU-D30] createAgent({ store }) wires sessions, checkpoints and approvals from one store by @LinuxDevil in #94
- [EPIC-D][LOU-D48] OpenTelemetry GenAI metrics and a loushy.cost_usd span attribute by @LinuxDevil in #95
- [EPIC-D][LOU-D46] loushy eval records cassettes, replays them in CI and reports trajectory drift by @LinuxDevil in #96
- [EPIC-D][LOU-D34.2] Apps, examples and tests stop calling the deprecated setType() by @LinuxDevil in #97
- [EPIC-D][LOU-D43] Stores keep a bounded checkpoint history per session by @LinuxDevil in #98
- [EPIC-U][LOU-U15] Tools always receive a real execute context (toolCallId, messages, abortSignal), sandbox path included by @LinuxDevil in #99
- [EPIC-D][LOU-D2] Every SDK error has a stable code, a fix hint and a docs link by @LinuxDevil in #101
- [EPIC-Z][LOU-Z4] connectMcp() and createAgent({ mcpServers }) connect MCP servers from config by @LinuxDevil in #100
- [EPIC-U][LOU-HEALTH] No node:crypto import in toolRunContext; keep the Worker bundle loadable by @LinuxDevil in #107
- [EPIC-D][LOU-D23] ToolExecutionContext replaces ai's ToolExecutionOptions in the public types by @LinuxDevil in #103
- [EPIC-W][LOU-W3.2] compaction.start/compaction.done stream events and createAgent({ compaction }) by @LinuxDevil in #102
- [EPIC-X][LOU-X2] Declarative permission policies evaluated before needsApproval, with an audit log by @LinuxDevil in #105
- [EPIC-V][LOU-V11] Message.content accepts text, image and file parts; providers convert them by @LinuxDevil in #106
- [EPIC-D][LOU-D44] AgentExecutor.fork() creates a runnable session from a historical checkpoint by @LinuxDevil in #104
- [EPIC-D][LOU-D45.1] Agent Forge time-travel API: checkpoint history, fork from a step, compare trajectories by @LinuxDevil in #112
- [EPIC-D][LOU-D24] Built-in tools are defined with defineTool; no ai.tool() in http, slack, email, date, delegation and MCP loader by @LinuxDevil in #108
- [EPIC-X][LOU-X9] Built-in ask_question tool pauses durably until a human answers by @LinuxDevil in #111
- [EPIC-V][LOU-V12] agent.send(), session.send(), evals and the React hook accept content parts by @LinuxDevil in #109
- [EPIC-D][LOU-D31] loushy dev serves agent directories, TS agents and specs with hot reload by @LinuxDevil in #110
- [EPIC-D][LOU-D45.2] Agent Forge History tab: step list, edit-and-replay, side-by-side trajectories by @LinuxDevil in #113
- [EPIC-D][LOU-D25] github and jira tools are defined with defineTool; src/tools has no ai import by @LinuxDevil in #114
- [EPIC-Z][LOU-Z5] MCP tool annotations set approval defaults: destructiveHint asks, readOnlyHint runs by @LinuxDevil in #115
- [EPIC-D][LOU-D32] loushy dev: a session per browser tab, streamed events over SSE, approval and question buttons by @LinuxDevil in #116
- [EPIC-V][LOU-V6] limits: maxTokens, maxCostUsd, maxDurationMs and maxSteps stop a run with finishReason 'budget-exceeded' by @LinuxDevil in #118
- [EPIC-W][LOU-W6] defineMemory: scoped memory slots with recall on session start and remember/recall tools by @LinuxDevil in #117
- [EPIC-D][LOU-D33] loushy chat: a terminal REPL that streams replies, prompts for approvals and questions by @LinuxDevil in #120
- [EPIC-D][LOU-D14] Deployed node server: sessions, SSE streaming and bearer auth by @LinuxDevil in #119
- [EPIC-X][LOU-X4] Input and output guardrails on any agent, tripping a run with finishReason 'guardrail' by @LinuxDevil in #121
- [EPIC-V][LOU-V9] run.enqueue() and session turnPolicy 'queue' append user input before the next model call by @LinuxDevil in #122
- [EPIC-D][LOU-D26] aiSdkProvider.generate() works on ai v4 and ai v6/v7 through one compatibility layer by @LinuxDevil in #123
- [EPIC-X][LOU-X5] spec.policy is compiled into permissions, guardrails and limits at specToAgent time by @LinuxDevil in #124
- [EPIC-D][LOU-D27] aiSdkProvider.stream() works on ai v4 and v6/v7 through the compatibility layer by @LinuxDevil in #127
- [EPIC-V][LOU-V10] run.steer(): redirect a running turn by aborting the in-flight model call and continuing with the new input by @LinuxDevil in #128
- [EPIC-D][LOU-D51] Cloudflare Worker target: sessions over KV, SSE streaming and bearer auth by @LinuxDevil in #125
- [EPIC-P][LOU-P7] defineChannel: inbound events map to sessions, replies go back to the surface, with an auth hook by @LinuxDevil in #126
- [EPIC-U][HEALTH] loushy chat: piped input no longer fails with 'readline was closed' on Node 26 by @LinuxDevil in #129
- [EPIC-P][LOU-P8] Schedules in agent directories: defineSchedule files loaded by loadAgentDir and run by the node server by @LinuxDevil in #130
- [EPIC-D][LOU-D47] loushy eval --url: run the same eval file against a deployed agent by @LinuxDevil in #131
- [EPIC-Y][LOU-Y7] remoteAgent(): use a deployed agent as a sub-agent over the session API by @LinuxDevil in #132
- [EPIC-P][LOU-P5] Slack channel: a session per thread, in-thread replies and approval buttons by @LinuxDevil in #133
- [EPIC-U][HEALTH] Agent Forge: approval node policy reuses the SDK spec policy type by @LinuxDevil in #135
- [EPIC-D][LOU-D28a] SDK source type-checks against ai v4 and ai v7 by @LinuxDevil in #134
- [EPIC-W][LOU-W6.2] sqliteMemory: cross-session memory slots in the SQLite store by @LinuxDevil in #136
- [EPIC-U][LOU-U21] loushy CLI parses flags with node:util parseArgs by @LinuxDevil in #137
- [EPIC-P][LOU-P2] useLoushyAgent for Vue: a composable over the typed event stream by @LinuxDevil in #138
- [EPIC-V][LOU-V15] Per-run dynamic config: model, instructions and tools as functions of the run by @LinuxDevil in #139
- [EPIC-D][LOU-D28b] Test suite passes with ai v4 or ai v7 installed by @LinuxDevil in #140
- [EPIC-P][LOU-P3] loushyAgent store for Svelte over the typed event stream by @LinuxDevil in #141
- [EPIC-Z][LOU-Z5.2] serveMcp advertises readOnlyHint and destructiveHint from each tool's approval setting by @LinuxDevil in #142
- [EPIC-X][LOU-X11] Sandboxed commands get an allowlisted environment; Docker sandbox supports a network allowlist by @LinuxDevil in #143
- [EPIC-P][LOU-P7.2] Agent directories load channels/*.ts and the node server mounts them by @LinuxDevil in #144
- [EPIC-D][LOU-D28c] Cloudflare Worker bundle has no Node built-ins with ai v7 installed by @LinuxDevil in #145
- [EPIC-D][LOU-D53] One session-API client behind remoteAgent() and remoteTarget() by @LinuxDevil in #146
- [EPIC-W][LOU-W6.3] Agent directories load memory/*.ts slots by @LinuxDevil in #147
- [EPIC-X][LOU-X12] Credential broker: a host-side proxy adds auth for allowed hosts so secrets never enter the sandbox by @LinuxDevil in #149
- [EPIC-V][LOU-V14] Resuming after an approval streams: streamResume() returns an AgentRun by @LinuxDevil in #148
- [EPIC-P][LOU-P6] Discord channel: slash-command interactions mapped to sessions, with approval buttons by @LinuxDevil in #150
- [EPIC-W][LOU-W8] session.compact() and session.clear() by @LinuxDevil in #151
- [EPIC-D][LOU-D32.2] Approval and answer continuations stream over the session API, the dev chat and the UI bindings by @LinuxDevil in #152
- [EPIC-X][LOU-X8] needsApproval can approve, deny or ask; helpers always(), never() and once() by @LinuxDevil in #153
- [EPIC-P][LOU-P1] toUIMessageStream() and toUIMessageStreamResponse(): render a Loushy run with the AI SDK's useChat by @LinuxDevil in #154
- [EPIC-P][LOU-P4] createRouteHandler(agent): serve an agent from a Next.js App Router route by @LinuxDevil in #155
- [EPIC-P][LOU-P8.2] loushy build and loushy dev serve agent directories with their schedules and channels by @LinuxDevil in #156
- [EPIC-Z][LOU-Z6] loushy acp: serve an agent over the Agent Client Protocol on stdio by @LinuxDevil in #157
- [EPIC-X][LOU-X3] Hooks can deny a tool call, replace its result or modify its input by @LinuxDevil in #158
- [EPIC-D][LOU-D43.2] Checkpoint history for the KV checkpoint store and Agent Forge's file store by @LinuxDevil in #159
- [EPIC-D][LOU-D50] loushy add: install items from a JSON registry into an agent directory, showing their permission manifest first by @LinuxDevil in #161
- [EPIC-D][LOU-D28d] Accept ai v4, v6 and v7 as peers; install hints, doctor and the scaffold follow the installed major by @LinuxDevil in #160
- [EPIC-P][LOU-P9] Cloudflare Worker target runs schedules through cron triggers by @LinuxDevil in #162
- [EPIC-U][HEALTH] Agent Forge typechecks include the optional-peer type stubs by @LinuxDevil in #164
- [EPIC-U][LOU-U23] Docker sandbox stops the container when the run is cancelled; cancelled tool results use the shared error shape by @LinuxDevil in #163
- [EPIC-W][LOU-W9.2] Resuming with a changed agent warns or refuses: checkpoints carry an agent fingerprint by @LinuxDevil in #165
- [EPIC-P][LOU-P8.3] Agent-directory builds keep optional peers external; the node server runs a spec's cron triggers by @LinuxDevil in #166
- [EPIC-D][LOU-D28f] OpenRouter works on ai v6/v7; Ollama base URL fixed; provider contract tests run on both ai majors by @LinuxDevil in #167
- [EPIC-X][LOU-X12.2] Docker sandbox egress goes through the credential broker: network allowlists are enforced by @LinuxDevil in #168
- [EPIC-D][LOU-D38] Remove unwired memory/context/retry modules; /testing exports only test utilities; data and templates leave the root entry by @LinuxDevil in #169
- [EPIC-Y][LOU-Y6] The task tool can continue a sub-agent: new, resume and fork modes by @LinuxDevil in #170
- [EPIC-D][LOU-D42] Package entries share one copy of each module (tsup code splitting for ESM) by @LinuxDevil in #171
- [EPIC-D][LOU-D46.2] Eval cassettes record and replay through a provider wrapper; remaining plain Errors get SDK error codes by @LinuxDevil in #172
- [EPIC-P][LOU-P5.2] Slack and Discord channels: approver allowlists, delivery-error reporting, durable pending state, Slack DMs by @LinuxDevil in #173
- [EPIC-D][LOU-D29] Accept zod 3 or zod 4: tool schemas, structured output and spec validation work on both by @LinuxDevil in #174
- [EPIC-D][LOU-D49] Publish readiness: pack-and-install smoke test in CI; docs say truthfully how to install today by @LinuxDevil in #175
- [EPIC-V][LOU-V13] reasoning option and reasoning events; sessionId on the tool execute context by @LinuxDevil in #176
- [EPIC-V][LOU-V4.2] Structured output: typed session.send() object, sub-agent output schemas, and output schemas from either zod major by @LinuxDevil in #177
- [EPIC-D][LOU-D2.3] Remaining user-reachable plain Errors carry SDK error codes by @LinuxDevil in #178
- [EPIC-Y][LOU-Y7.3] Remote sub-agents: approval pauses surface on the lead run, and the remote object result passes through by @LinuxDevil in #179
- [EPIC-D][LOU-D41] One event system: onEvent/ExecutionEvent deprecated in favor of AgentEvent listeners; dead streaming controller removed by @LinuxDevil in #180
- [EPIC-D][LOU-D16] ESLint ratchet: zero warnings, and the warning rules become errors by @LinuxDevil in #181
- Rename loushy to lousho (package, CLI, exports, error codes, env vars, docs) by @LinuxDevil in #182
- Docs and init hint: the package is on npm by @LinuxDevil in #183
- Docs truth pass: align README and guides with the code by @LinuxDevil in #184
- README and homepage point to lousho.com by @LinuxDevil in #185
- create-lousho-agent README; pack-smoke accepts an already-published version by @LinuxDevil in #186
- R1a: lousho studio uses the installed Agent Forge outside the SDK repo by @LinuxDevil in #210
- G1: quick start around createAgent(); executor API on its own page by @LinuxDevil in #259
- R3: build lock in tests detects a dead owner by PID, not by age by @LinuxDevil in #261
- Docs: Build a coding agent guide (G3) by @LinuxDevil in #262
- G5b: Troubleshooting page by @LinuxDevil in #264
- G2a: durable-execution and workspace-tools lead with createAgent() by @LinuxDevil in #263
- G4a: new docs/mcp.md page; MCP sections moved out of configuration.md by @LinuxDevil in #265
- G8: remove the remaining stale statements by @LinuxDevil in #266
- G2b: guides lead with createAgent(); executor snippets under Advanced: the executor API by @LinuxDevil in #267
- [G4b] New page: Hooks, out of the API overview by @LinuxDevil in #268
- [R1b] registry-smoke: test the published packages from the npm registry by @LinuxDevil in #270
- G5a: migrating from AgentBuilder / AgentExecutor to createAgent() by @LinuxDevil in #269
- [M1] Send PDF file parts through the built-in providers on ai 6 and 7 by @LinuxDevil in #273
- Docs: new Triggers page (webhook, Slack, cron adapters), out of the API overview by @LinuxDevil in #274
- Docs: seven guides teach createAgent() first (G2c) by @LinuxDevil in #276
- Docs: split api-overview, streaming and configuration; errors index table (G7) by @LinuxDevil in #278
- N8: openApiTools(document, options): an OpenAPI document becomes tools by @LinuxDevil in #283
- [M6] Linux Docker CI job: real-daemon tests for sandbox egress and credential broker by @LinuxDevil in #271
- [M7a] lousho add: enforce the permission manifest at install by @LinuxDevil in #284
- Fix multimodal contract test on ai 7 (file part mimeType) by @LinuxDevil in #290
- [M5a] lousho traces: file trace exporter, createAgent exporter, terminal viewer by @LinuxDevil in #286
- [M10a] Slack and Discord: a pending ask_question survives a restart by @LinuxDevil in #285
- [N13a] web_fetch built-in with pinned-DNS SSRF checks; http_request no longer open to DNS rebinding by @LinuxDevil in #277
- [R2] Export KVStore from a /kv subpath and add fileStore(dir) by @LinuxDevil in #292
- G6: Cloudflare Workers page with the limits first; dead links (#288); fileStore in approvals by @LinuxDevil in #294
- [M2] fromAiSdk(model): use any AI SDK LanguageModel as the provider by @LinuxDevil in #287
- [M3a] Cloudflare Worker target: OpenRouter provider and an allowlisted http tool by @LinuxDevil in #295
- [M10b] Add remote sub-agent token usage to the lead's totals by @LinuxDevil in #297
- [M8] CI peer matrix: real ai 6, ai 6/7 with zod 4, and Ollama on ai 6/7 by @LinuxDevil in #293
- [N12] todo.updated stream event and useTodos() for React, Vue and Svelte by @LinuxDevil in #299
- M10c: compare a paused sub-agent's fingerprint fully on resume by @LinuxDevil in #300
- [M5b] Agent Forge: persisted trace history in the Trace tab by @LinuxDevil in #301
- [N11a] telegramChannel(): Telegram bot webhooks, inline-keyboard approvals by @LinuxDevil in #302
- [N5a] Guardrail starter set: PII, secrets, prompt injection, moderation by @LinuxDevil in #304
- [M4] Background sub-agents that need approval pause the lead at agent_await and resume by @LinuxDevil in #305
- [N11b] githubChannel(): the agent answers issue and pull-request comments by @LinuxDevil in #306
- Tidy CHANGELOG [Unreleased] and a stray line in docs/channels.md by @LinuxDevil in #308
- [N10a] Route auth: jwt(), oidc(), basic() in an ordered list, principal per run by @LinuxDevil in #307
- N7: workspace rewind - snapshot files before write_file / edit_file, rewind by turn by @LinuxDevil in #309
- [M3b] Cloudflare Worker target: build an agent directory with TypeScript tools by @LinuxDevil in #303
- [M9] send() and execute() with a listener stream model calls like stream() (breaking) by @LinuxDevil in #310
- [N11c] teamsChannel(): Microsoft Teams bots with Adaptive Card approvals by @LinuxDevil in #313
- [N9a] OAuth token store on the AgentStore, encrypted, with credential owners by @LinuxDevil in #312
- [N15] Semantic recall: an embedding provider and a SQLite vector memory by @LinuxDevil in #314
- [N4] Permission modes: plan, acceptEdits and dontAsk, switchable mid-session by @LinuxDevil in #315
- [N3a] session.history() and session.fork({ fromStep }) on agent sessions by @LinuxDevil in #319
- CHANGELOG: split Unreleased into published alpha.8 and post-release by @LinuxDevil in #320
- [N1a] Hosted provider tools: webSearch(), codeInterpreter(), fileSearch(), hostedTool() on OpenAI by @LinuxDevil in #318
- CHANGELOG: remove the duplicate telegramChannel entry by @LinuxDevil in #321
- [A4] Deprecate the Slack, cron and webhook trigger adapters by @LinuxDevil in #322
- Record live-model cassettes and add CI replay tests (#260) by @LinuxDevil in #323
- Make the http timeout test deterministic with a fake clock (#324) by @LinuxDevil in #325
- [N10b] Principal in tools, approval policies and permissions, kept on pause by @LinuxDevil in #327
- Fix SubprocessSandbox 404 race on fast commands; checkpoints rewind test timeout (#326) by @LinuxDevil in #329
- N1b: hosted tools on Anthropic and OpenRouter, with a live web search cassette by @LinuxDevil in #328
- Fix two load-sensitive tests: SandboxShell timeout, backgroundSubagents fixed sleep (#330) by @LinuxDevil in #331
- [N9b] OAuth sign-in for tools: ctx.getToken() pauses the run until sign-in by @LinuxDevil in #332
- [N5b] Run input guardrails in parallel with the first model call by @LinuxDevil in #334
- recordReplay: zod 4 tool schemas fingerprint like zod 3, so cassettes replay under either (#333) by @LinuxDevil in #335
- [N9c] OAuth for HTTP MCP servers per the MCP authorization spec by @LinuxDevil in #336
- CI: larger heap for the peers build step (ai7-zod4 OOM) by @LinuxDevil in #337
- [N6] Handoffs: transfer the conversation to another agent by @LinuxDevil in #338
- [N2] Tool search: deferLoading on tools and MCP servers, and a tool_search tool by @LinuxDevil in #339
- [N13b] Stream partial tool results: async generator execute, tool.partial event by @LinuxDevil in #340
- [N14] Code mode: a run_code tool where one sandboxed script calls several tools by @LinuxDevil in #342
- A6a: type-check test files (tsconfig.tests.json) and fix the run-loop tests by @LinuxDevil in #343
- LOU-341: a tool that returns nothing has the result null, never content: undefined by @LinuxDevil in #344
- lousho dev / lousho chat: --traces[=dir] writes local traces (#282) by @LinuxDevil in #345
- Approved tool calls continued by approvals.resolve() get an execute_tool span (#281) by @LinuxDevil in #347
- LOU-R9: LocalStorageCheckpointStore works on a fresh directory by @LinuxDevil in #351
- LOU-R10: recordReplay is ESM-safe by @LinuxDevil in #354
- secret-scan guardrail no longer embeds matched secrets (LOU-R2) by @LinuxDevil in #348
- LOU-R5: provider error bodies reach the caller by @LinuxDevil in #353
- LOU-R4: plain JSON-Schema tool params no longer crash on ai 4 by @LinuxDevil in #349
- LOU-R6: stream() honors retry and fallbacks by @LinuxDevil in #356
- LOU-R14: reject createAgent() agents passed to flows by @LinuxDevil in #364
- LOU-R16: send(x, { metadata }) reaches hook contexts as ctx.metadata by @LinuxDevil in #368
- LOU-R19: lousho CLI surface fixes by @LinuxDevil in #367
- LOU-R20: docker builds emit a usable dependency manifest by @LinuxDevil in #369
- LOU-R15: schedule session ids pass the server session-id regex by @LinuxDevil in #373
- LOU-R22: docs note the vendor/ model prefix chooses the provider; refresh stale model ids by @LinuxDevil in #350
- LOU-R25: UI and server example docs by @LinuxDevil in #359
- LOU-R11: reject summaries that do not compact below the threshold by @LinuxDevil in #357
- LOU-R7: strict structured-output schemas by @LinuxDevil in #358
- LOU-R17: one tool.start per tool call; approval continuations emit tool.resume by @LinuxDevil in #370
- LOU-R8: OpenRouter reasoning is surfaced by @LinuxDevil in #362
- LOU-R13: cassette errors keep their type; export setProviderInterceptor by @LinuxDevil in #361
- LOU-R18: session.on() receives the turn's events by @LinuxDevil in #371
- LOU-R1: lazy provider registration by @LinuxDevil in #360
- LOU-R23: docs corrections for errors/troubleshooting/testing by @LinuxDevil in #363
- LOU-R21: runnable examples - ops-pipeline entry point, OpenRouter refresh, ESM imports by @LinuxDevil in #372
- createAgent forwards redactContent; fix double-encoded input messages (LOU-R3) by @LinuxDevil in #352
- LOU-R12: createAgent({ tools }) accepts mixed record + array tool lists by @LinuxDevil in #365
- LOU-R24: document agent.drift and the missing event fields by @LinuxDevil in #355
- LOU-R26: docs long-tail corrections by @LinuxDevil in #366
- docs: mark Epic R complete in tickets.md by @LinuxDevil in #374
- docs: file LOU-R27 (provider import cycle + source-barrel ESM edge) by @LinuxDevil in #375
- docs: file LOU-R28..R30 tickets by @LinuxDevil in #376
- LOU-R28: errors.md — cassette error type + uncoded-error list by @LinuxDevil in #377
- LOU-R29: stale-residue doc corrections by @LinuxDevil in #378
- LOU-R30: long-tail doc corrections + stale code comments by @LinuxDevil in #379
- docs: mark LOU-R28..R30 merged by @LinuxDevil in #380
- Release @lousho/build-ai-agent 1.0.0-alpha.9, create-lousho-ag… by @LinuxDevil in #381
New Contributors
- @LinuxDevil with @Copilot made their first contribution in #1
- @LinuxDevil made their first contribution in #2
Full Changelog: https://github.com/LinuxDevil/agent-sdk/commits/v1.0.0-alpha.9