@ai-agent-forge/agent-forge 0.85.17 → 0.85.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -6
- package/dist/bundle/.build-manifest.json +3 -3
- package/dist/bundle/chunks/{chunk-2I2FZ6F3.js → chunk-NMLW4KE7.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/http-dispatcher.d.ts +10 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +21 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
## [0.85.19] - 2026-09-30
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- A `socks://` proxy URL in `HTTP(S)_PROXY` killed model traffic with an opaque `Connection error` (undici's EnvHttpProxyAgent treats it as an http proxy; seat-verified: two retries then the session dies). The host now drops unsupported socks entries before installing the global dispatcher, warns once with the fix (the VPN client's http/mixed port), and falls back to direct connectivity; deterministic coverage in `test/http-dispatcher-socks-env.test.ts`. The image-generation plugin keeps its own fail-closed socks rejection.
|
|
10
|
+
- Restored the lost `0.85.13`–`0.85.18` sections in both `packages/agent-forge/CHANGELOG.md` and `plugins/image-generation/CHANGELOG.md`: the local release helper inserted each new version ahead of `[Unreleased]`, so the following promote step sliced off the previous version's section. Sections recovered from the release tags; the helper now keeps `[Unreleased]` first and preserves the full version chain.
|
|
11
|
+
|
|
12
|
+
## [0.85.18] - 2026-09-30
|
|
13
|
+
|
|
3
14
|
## [0.85.17] - 2026-09-30
|
|
4
15
|
|
|
16
|
+
## [0.85.16] - 2026-09-30
|
|
5
17
|
|
|
6
|
-
## [
|
|
18
|
+
## [0.85.15] - 2026-09-30
|
|
19
|
+
|
|
20
|
+
## [0.85.14] - 2026-09-30
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Install-store plugin loads resolve a plugin's bare `undici` import through the host's jiti `virtualModules` channel (same pattern as plugin-sdk/typebox). 0.85.13's image-generation plugin failed to load from a real installation with `Cannot find module 'undici'` because npm tarballs carry no node_modules and the channel was not extended; regression test `test/plugin-virtual-undici.test.ts` freezes the install-store shape (red/green verified).
|
|
25
|
+
|
|
26
|
+
## [0.85.13] - 2026-09-30
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Empty or description-less `SKILL.md` now warns with an actionable message (`description is required in the frontmatter; the skill was not loaded`) instead of a bare `description is required`, and a zero-byte SKILL.md regression test freezes the skip behavior (the file never reaches the model, so it cannot improvise content for it).
|
|
7
31
|
|
|
8
32
|
## [0.85.12] - 2026-09-30
|
|
9
33
|
|
|
@@ -101,7 +125,6 @@
|
|
|
101
125
|
- B-class capability split batch 1 (D-075 S4): the embedded `builtin.goal`/`builtin.plan`/`builtin.todo-set` capability plugins are removed from the host — `BUILTIN_CAPABILITY_PLUGINS` no longer carries them, `resolveBuiltinCapabilities` silently skips their suite short ids (no embedded registration and no dangling diagnostic), and the capability factories ship as the independent packages `plugins/goal`, `plugins/plan`, and `plugins/todo-set` (`@agent-forge/plugin-goal|plan|todo-set`, manifest ids `agent-forge.plugin.goal|plan|todo-set`, dual manifests, jiti-loadable `dist/entry.js`). Suites declaring those short ids assemble the tools from the install store: the sdk installed-plugin membership set now also accepts the ids mapped through the new `BUILTIN_CAPABILITY_PACKAGE_IDS` export (explicit `disabledPluginIds` still win), and the bootstrap factory manifest ships the three packages (`@ai-agent-forge/plugin-*` `^0.84.4`) so a default install auto-installs them on first startup. With an empty install store the default session tool surface drops from 11 to 8 tools (`goal_set`/`plan_set`/`todo_update` absent, no dangling diagnostic). The source modules `src/capabilities/{goal,plan,todo-set}.ts` are gone; behavior is preserved verbatim in the packages (including the D-071 `TASK_TOOLS_GUIDE` on `goal_set` and the #10 soft-reference response warnings).
|
|
102
126
|
- B-class capability split batch 2 (D-075 S4): the embedded `builtin.session-share` capability and the inlined observability plugin leave the host source tree. `src/capabilities/session-share.ts` is deleted (the capability ships as `plugins/session-share`, `@agent-forge/plugin-session-share`, manifest id `agent-forge.plugin.session-share`; the `builtin.session-share` short id joins `BUILTIN_CAPABILITY_PACKAGE_IDS` and the `resolveBuiltinCapabilities` registry no longer carries it), and `src/plugins/observability.ts`/`otlp-exporter.ts` are deleted (the plugin ships as `plugins/observability`, `@agent-forge/plugin-observability`, manifest id `agent-forge.plugin.observability`). The default `traceEnabled` assembly no longer pushes an embedded plugin: the installed observability package joins the installed-plugin membership set when tracing is on, and the host trace adapter rides the new `CapabilityAPI.trace`/`traceSinkOptions` service face; the assembly refs (provider payload capture, plugin.log mirror, /metrics source) keep their semantics through the adapter's optional `registerFacade` channel. Observability event definitions are host-owned (the bootstrap lifecycle plugin defines every catalog event before plugins load); the package holds `{id, version}` references only. The user config channel for `/share` moves to the public face: `HostCapabilities` gains an optional `agentDir`, and the package entry reads `<agentDir>/capabilities/builtin.session-share.json` (missing = unconfigured, invalid = explicit plugin-load failure, merged over the manifest config — the embedded `withCapabilityConfig` semantics). Both packages join the bootstrap factory manifest (`@ai-agent-forge/plugin-*` `^0.84.4`). With an empty install store the default session loses the `/share` command and trace files are not produced; install the packages (or run one bootstrap startup) to restore the face.
|
|
103
127
|
|
|
104
|
-
|
|
105
128
|
- Host package renamed (D-075 S0): the npm workspace package name changes from `@agent-forge/coding-agent` to `@agent-forge/agent-forge` (publish name `@ai-agent-forge/coding-agent` → `@ai-agent-forge/agent-forge`), and the package directory moves from `packages/coding-agent` to `packages/agent-forge`. SDK imports must use `@agent-forge/agent-forge`; user install commands become `npm install -g --ignore-scripts @ai-agent-forge/agent-forge`. The `agent-forge` bin, the `.agent-forge` config dir, and the product name are unchanged, and the frozen semantic profile ids (`coding-agent`/`coding-agent.root`) are intentionally untouched.
|
|
106
129
|
- Multi-tenant durable machinery removed (D-068 增补 1 removal completed under the user's 2026-09-25 authorization; supersedes the keep-list of the first-wave multi-tenant removal in the Removed section below): `DurableServiceV1` records (`DurableSessionRecordV1`/`DurableOperationRecordV1`/`DurableArtifactRecordV1`) lose the `tenantId` field, `createDurableService` loses the `tenantId` option, `listSessions()` takes no argument and returns all session records, and `DurableServiceErrorCodeV1` shrinks to `"not_writer"` (`tenant_mismatch` is gone; legacy durable log lines and snapshots carrying a `tenantId` key still load — the extra key is ignored, and regression tests pin that tolerance). The conduction surface goes with it: the serve default durable construction drops `tenantId: "default"`, the server-assembly and `startCodingAgentRemoteServer` options lose `defaultTenantId`, the `agentTaskResults` (session source/session/SDK) and `agentResults` (capability runtime) and subagent-runtime `results` options lose `tenantId`, `MemoryAtomV1` loses the `tenantId` field (the key stays tolerated-and-ignored on read for legacy atoms) and the memory scheduler lease no longer carries one, and the subagent terminal record loses its `tenantId` field with the same read tolerance. `PrincipalContext.tenantId` in `@agent-forge/server` is unchanged (workspace-grant consumer, kept per D-068 增补 1). Covered by the durable/memory/subagent/remote suites.
|
|
107
130
|
- Built-in connectors family removed (`http-api`, `web-search-fetch`, `ocr-and-layout`, `database-query`, `github-connector`, `knowledge-retrieval`) together with the bundled `secrets-credentials` credential broker, the `research`/`document-analysis`/`data-analysis`/`github-review`/`secure-connectors` plugin profiles, and the `ConnectorPluginV1`/`SecretsPluginV1` barrel exports. These were thin wrappers over external APIs whose official MCP servers (fetch, Brave/Tavily, GitHub, Postgres/SQLite, RAG) are maintained by the API vendors themselves and supersede them; per the architecture constitution's technology-isolation rule, external-API adapters belong behind MCP rather than in the first-party plugin set. `BuiltinPluginRuntimeContextV1` loses the `httpFetcher`/`webSearchEndpoint`/`ocrRunner`/`databaseRunner`/`githubRunner`/`knowledgeRunner`/`credentialBroker` members (none had a production injection point — the credential broker was permanently `credential_broker_required`). Wire the same capabilities through project `.agent-forge/mcp.json` entries instead. Dogfood ruling 2026-09-25.
|
|
@@ -397,11 +420,9 @@
|
|
|
397
420
|
- Extension tools whose `parameters` is not a plain object are now rejected at registration with a visible load error (extension discarded, error in `loadExtensions` result) instead of breaking provider request serialization later (upstream pi `acaa253cc`, #9300).
|
|
398
421
|
- Tree navigation is now rejected while a compaction is running ("Wait for the current compaction or tree navigation to finish before navigating the session tree.") instead of racing the compaction and corrupting session state; navigation works again once it finishes (upstream pi `e687434a6`).
|
|
399
422
|
|
|
400
|
-
|
|
401
423
|
- Fixed direct `steer`/`followUp` calls (including RPC `steer`/`follow_up` commands) bypassing extension `input` handlers: queued messages now run the same input transform/handled chain as direct prompts, with `steer`/`followUp` accepting an optional `{ source }` option (RPC passes `rpc`; default stays `interactive`) (upstream pi `faa9863cb`).
|
|
402
424
|
- Added the `retry.maxAgentDelayMs` setting (default 60000): the session retry path clamps the exponential backoff (including custom retry-policy hook delays) to the cap before applying the existing ±10% jitter, so long outages no longer grow the delay without bound (upstream pi `c37b0e03b`). Also fixed a settings-doc drift: `retry.maxRetries` default is 5, not 3.
|
|
403
425
|
|
|
404
|
-
|
|
405
426
|
- Durable memory ledger: `rewrite` now holds the same cross-process append lock as `append` (identical timeout, polling, and stale-lock-stealing semantics), and both write paths fsync before close — a hard crash can no longer lose acknowledged appends or rewrite results, and concurrent appends can no longer be dropped inside a rewrite window. Remaining boundaries are declared in the ledger header (local-filesystem mutex, stale-view rewrite reconciliation owned by the forget caller, no directory-entry fsync). Covered by the lock/fsync tests in `test/memory-ledger.test.ts`; callers (`src/capabilities/memory.ts`) are unchanged.
|
|
406
427
|
- Fixed resumed sessions failing their first `memory_write` calls with "Memory already committed": the builtin memory capability's write-sequence counter is capability-instance-local, so after dispose/resume it restarted at 0 and regenerated observationIds (`memory_write:<sessionId>:<n>`) whose deterministic memoryIds the resumed session's ledger replay had already committed to the immutable store; every write at a replayed sequence threw out of the tool call. The lazy per-domain ledger load now raises the write-sequence floor from persisted observationIds of the same session before any new write, keeping memory id generation deterministic (forgotten/purged sequences stay reusable because their atoms leave both the ledger and the store). Covered by the write → dispose → resume → write → recall test in `test/memory-sdk-e2e.test.ts`.
|
|
407
428
|
- Fixed Playwright navigation/action/postcondition results returning synthetic `playwright://` artifact references that were never persisted; those operations now return evidence only until a host sink stores a real artifact. Browser driver error text also redacts Windows/file paths before crossing the model boundary.
|
|
@@ -498,8 +519,6 @@
|
|
|
498
519
|
- Added optional routing session IDs to exported compaction summary helpers so callers can preserve provider routing without enabling prompt cache writes.
|
|
499
520
|
- Added
|
|
500
521
|
|
|
501
|
-
|
|
502
|
-
|
|
503
522
|
usage notices for compaction and branch summaries when cache miss notices are enabled.
|
|
504
523
|
- Added `session_compact_failed` extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers ([#8175](https://github.com/earendil-works/pi/issues/8175)).
|
|
505
524
|
- Added inherited provider-neutral `toolChoice` support to simple stream requests.
|
|
@@ -3174,6 +3193,7 @@ Examples:
|
|
|
3174
3193
|
- Fixed Bedrock `AWS_PROFILE` region resolution by honoring profile `region` values ([#1800](https://github.com/badlogic/pi-mono/issues/1800)).
|
|
3175
3194
|
- Fixed Gemini 3.1 thinking-level detection for `google` and `google-vertex` providers ([#1785](https://github.com/badlogic/pi-mono/issues/1785)).
|
|
3176
3195
|
- Fixed browser bundling compatibility for `@mariozechner/pi-ai` by removing Node-only side effects from default browser import paths ([#1814](https://github.com/badlogic/pi-mono/issues/1814)).
|
|
3196
|
+
|
|
3177
3197
|
## [0.55.4] - 2026-03-02
|
|
3178
3198
|
|
|
3179
3199
|
### New Features
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-
|
|
2
|
+
"generatedAt": "2026-09-30T07:44:48.591Z",
|
|
3
3
|
"inputCount": 3560,
|
|
4
4
|
"inputs": {
|
|
5
5
|
"node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs": "717f9403f2d3ee0f2077aeb7f0ca7eaff7cc9bcdbb054ac23c6c0361fa03cd1f",
|
|
@@ -2164,7 +2164,7 @@
|
|
|
2164
2164
|
"packages/agent-forge/dist/core/facade/coding-agent-runtime-facade.js": "b302a88bce92ca58e85dbbc3133551eafc3b247834f76bd72901b53d40b3409f",
|
|
2165
2165
|
"packages/agent-forge/dist/core/facade/index.js": "53343f30b62b5cad3b4cea5a4b0d3d8e1cf2e6b22f9368df2dbfb0f2c4c1acf7",
|
|
2166
2166
|
"packages/agent-forge/dist/core/footer-data-provider.js": "9f21fcadce2d591a31b500ace873529598ef5a68b8f9afb93a09ccb500c4f6f8",
|
|
2167
|
-
"packages/agent-forge/dist/core/http-dispatcher.js": "
|
|
2167
|
+
"packages/agent-forge/dist/core/http-dispatcher.js": "9e2b334d9898ce6e07f764f9f7c0515f54a7ac7fee4d522f9fae772f97429fe2",
|
|
2168
2168
|
"packages/agent-forge/dist/core/keybindings.js": "f4407df761c8d2ca27786d7c17b6fa854792a2d1fd9ffada75efd74f540cb268",
|
|
2169
2169
|
"packages/agent-forge/dist/core/logger.js": "69e0f9f0c23b288dc959a060e6413da66456360a7f0d56beb380b0ea05914b5b",
|
|
2170
2170
|
"packages/agent-forge/dist/core/messages.js": "8aa3d1955345f96f760235b79ee0bb74cde2cc71ec377233474f9c4f48ef27f8",
|
|
@@ -2513,7 +2513,7 @@
|
|
|
2513
2513
|
"packages/agent-forge/src/core/facade/coding-agent-runtime-facade.ts": "f83d7a8e6f5aca55a8074e66b4164edd4d50dcc38aff02d90e1358f7c7b25769",
|
|
2514
2514
|
"packages/agent-forge/src/core/facade/index.ts": "2905696136ff59526e0299c776dd29a30b504bed74e406ade6ff2ab8e873b1f9",
|
|
2515
2515
|
"packages/agent-forge/src/core/footer-data-provider.ts": "09c0b7d2141d5dd8b4f481acf067546f7e0bd8636b7696b796e2b18c8bdd4a14",
|
|
2516
|
-
"packages/agent-forge/src/core/http-dispatcher.ts": "
|
|
2516
|
+
"packages/agent-forge/src/core/http-dispatcher.ts": "3d64a69d8f816c7e7322e65566e83cb1d7ef10c3d140f8766ac820fc87336f9a",
|
|
2517
2517
|
"packages/agent-forge/src/core/index.ts": "7adc846efab8a3c828c8fdf0571739c265c55ad72b61577946d9e32de1af3e44",
|
|
2518
2518
|
"packages/agent-forge/src/core/input-source.ts": "4b8065e146fdddfd8b12f807d474f01de9f1312997a9c05db7d03d06907d9f03",
|
|
2519
2519
|
"packages/agent-forge/src/core/keybindings.ts": "328ec15978920824c9e79c6087f956e6164a22096ec9d645601c0de8ea12f138",
|