Changelog
All notable changes to AgentForge will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.16.62] - 2026-06-29
Added
@agentforge/patterns - ReAct Detection Hardening Coverage
- Added focused ReAct detection regression coverage in
packages/patterns/tests/multi-agent/utils/detection.suite.ts, including a real compiled agent fixture with a masked constructor name plus compatibility coverage for lightweight constructor-name-only fixtures - Added story documentation in
docs/st09075-react-agent-detection-hardening.mdcapturing the structural runtime-shape detection strategy, compatibility fallback, and validation evidence
Changed
Workspace - Release Validation Path Hardening
- Added the canonical
pnpm release:validatemaintainer path and aligned the release guide, helper script, and root documentation around it so daily patch releases no longer rely on ad hoc direct build/test fallbacks - Committed the required
pnpm-workspace.yamlbuild approvals, added a shared approval-check guard, and switched the roottestscript tovitest runso release-time validation stays deterministic in a normal maintainer workspace
@agentforge/patterns - ReAct Agent Detection
- Hardened
packages/patterns/src/multi-agent/utils-react-detection.tsto prefer stable LangGraph runtime-shape checks over constructor-name matching while preserving the existingCompiledGraphandCompiledStateGraphfallback for compatibility
Fixed
Workspace - Release Process Follow-Through
- Removed the release-time drift that previously forced maintainers to improvise direct
tsupandvitestinvocations whenpnpmpreflight or build-approval checks interrupted the documented validation flow
@agentforge/patterns - Minification Fragility Risk
- Reduced the latent risk that minified or wrapped compiled LangGraph agents would fail ReAct detection by no longer relying solely on constructor names
Published
- All packages published to npm registry at version 0.16.62:
- @agentforge/core@0.16.62
- @agentforge/skills@0.16.62
- @agentforge/patterns@0.16.62
- @agentforge/tools@0.16.62
- @agentforge/testing@0.16.62
- @agentforge/cli@0.16.62
[0.16.61] - 2026-06-28
Added
@agentforge/tools - Relational Delete Executor Modularization Coverage
- Added focused relational delete executor coverage in
packages/tools/tests/data/relational/tools/delete-executor/result-shaping.suite.ts,batch-mode.suite.ts, anderror-handling.suite.tsbehind the stablepackages/tools/tests/data/relational/tools/delete-executor.test.tspublic entrypoint - Added story documentation in
docs/st09074-relational-delete-executor-modularization.mdcapturing the executor split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Delete Executor Runtime Modularization
- Split
packages/tools/src/data/relational/tools/relational-delete/executor.tsinto a smaller stable facade with focusedexecutor-shared.ts,executor-single.ts, andexecutor-batch.tshelper modules - Preserved the public
executeDelete(...)surface, soft-delete behavior, batch semantics, transaction-context routing, foreign-key cascade hinting, and synthetic benchmark metadata while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/tools - Relational Delete Executor Review Follow-Ups
- Kept the focused executor extraction aligned with the stable delete-tool and relational-index surfaces while preserving the explicit-
anybaseline atworkspace 80/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.61:
- @agentforge/core@0.16.61
- @agentforge/skills@0.16.61
- @agentforge/patterns@0.16.61
- @agentforge/tools@0.16.61
- @agentforge/testing@0.16.61
- @agentforge/cli@0.16.61
[0.16.60] - 2026-06-27
Added
@agentforge/tools - Relational Update Executor Modularization Coverage
- Added focused relational update executor coverage in
packages/tools/tests/data/relational/tools/update-executor/result-shaping.suite.ts,batch-mode.suite.ts, anderror-handling.suite.tsbehind the stablepackages/tools/tests/data/relational/tools/update-executor.test.tspublic entrypoint - Added story documentation in
docs/st09073-relational-update-executor-modularization.mdcapturing the executor split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Update Executor Runtime Modularization
- Split
packages/tools/src/data/relational/tools/relational-update/executor.tsinto a smaller stable facade with focusedexecutor-shared.ts,executor-single.ts, andexecutor-batch.tshelper modules - Preserved the public
executeUpdate(...)surface, optimistic-lock behavior, batch semantics, transaction-context routing, and synthetic benchmark metadata while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/tools - Relational Update Executor Review Follow-Ups
- Kept the focused executor extraction aligned with the stable update-tool and relational-index surfaces while preserving the explicit-
anybaseline atworkspace 80/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.60:
- @agentforge/core@0.16.60
- @agentforge/skills@0.16.60
- @agentforge/patterns@0.16.60
- @agentforge/tools@0.16.60
- @agentforge/testing@0.16.60
- @agentforge/cli@0.16.60
[0.16.59] - 2026-06-25
Added
@agentforge/tools - Relational Insert Executor Modularization Coverage
- Added focused relational insert executor coverage in
packages/tools/tests/data/relational/tools/insert-executor/result-shaping.suite.ts,batch-mode.suite.ts, anderror-handling.suite.tsbehind the stablepackages/tools/tests/data/relational/tools/insert-executor.test.tspublic entrypoint - Added story documentation in
docs/st09072-relational-insert-executor-modularization.mdcapturing the executor split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Insert Executor Runtime Modularization
- Split
packages/tools/src/data/relational/tools/relational-insert/executor.tsinto a smaller stable facade with focusedexecutor-shared.ts,executor-single.ts, andexecutor-batch.tshelper modules - Preserved the public
executeInsert(...)surface, inserted-id derivation, batch semantics, transaction-context routing, constraint wrapping, and synthetic benchmark metadata while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/tools - Relational Insert Executor Review Follow-Ups
- Kept the focused executor extraction aligned with the stable insert-tool and relational-index surfaces while preserving the explicit-
anybaseline atworkspace 80/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.59:
- @agentforge/core@0.16.59
- @agentforge/skills@0.16.59
- @agentforge/patterns@0.16.59
- @agentforge/tools@0.16.59
- @agentforge/testing@0.16.59
- @agentforge/cli@0.16.59
[0.16.58] - 2026-06-24
Added
@agentforge/skills - Skill Activation Modularization Coverage
- Added focused skill-activation coverage in
packages/skills/tests/activation/activation-tools.suite.ts,activate-skill.suite.ts,read-skill-resource.suite.ts, andresolve-resource-path.suite.tsbehind the stablepackages/skills/tests/activation.test.tspublic entrypoint - Added story documentation in
docs/st09071-skill-activation-modularization.mdcapturing the activation-runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/skills - Skill Activation Runtime Modularization
- Split
packages/skills/src/activation.tsinto a smaller stable facade with focusedactivation-activate-tool.ts,activation-resource-tool.ts,activation-path.ts,activation-content.ts,activation-shared.ts, andactivation-schemas.tshelper modules - Preserved
createActivateSkillTool,createReadSkillResourceTool,createSkillActivationTools,resolveResourcePath, trust-policy decisions, emitted events, and public imports while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/skills - Skill Activation Review Follow-Ups
- Guaranteed symlink-fixture cleanup in the focused path-guard coverage and kept the explicit-
anybaseline stable atworkspace 80/289andskills 0/0
Published
- All packages published to npm registry at version 0.16.58:
- @agentforge/core@0.16.58
- @agentforge/skills@0.16.58
- @agentforge/patterns@0.16.58
- @agentforge/tools@0.16.58
- @agentforge/testing@0.16.58
- @agentforge/cli@0.16.58
[0.16.57] - 2026-06-23
Added
@agentforge/patterns - Multi-Agent Utility Modularization Coverage
- Added focused multi-agent utility coverage in
packages/patterns/tests/multi-agent/utils/detection.suite.ts,wrap-react-agent.suite.ts, andshared.tsbehind the stablepackages/patterns/tests/multi-agent/utils.test.tspublic entrypoint - Added story documentation in
docs/st09070-multi-agent-utils-modularization.mdcapturing the utility split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - Multi-Agent Utility Runtime Modularization
- Split
packages/patterns/src/multi-agent/utils.tsinto a smaller stable facade with focusedutils-shared.ts,utils-react-detection.ts,utils-react-result.ts, andutils-react-wrapper.tshelper modules - Preserved the public
isReActAgent(...)andwrapReActAgent(...)surface, assignment selection, worker-specific checkpoint namespaces, structured response serialization, and wrapped ReAct error handling while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/patterns - Multi-Agent Utility Review Follow-Ups
- Corrected the characterization fixture used to validate the public ReAct-agent detection guard during the suite split while keeping the explicit-
anybaseline stable atworkspace 80/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.57:
- @agentforge/core@0.16.57
- @agentforge/skills@0.16.57
- @agentforge/patterns@0.16.57
- @agentforge/tools@0.16.57
- @agentforge/testing@0.16.57
- @agentforge/cli@0.16.57
[0.16.56] - 2026-06-18
Added
@agentforge/tools - Neo4j Embedding Manager Modularization Coverage
- Added focused embedding-manager coverage in
packages/tools/tests/data/neo4j/embedding-manager/initialization.suite.ts,provider-selection.suite.ts,generation.suite.ts, andshared.tsbehind the stablepackages/tools/tests/data/neo4j/embedding-manager.test.tspublic entrypoint - Added story documentation in
docs/st09069-neo4j-embedding-manager-modularization.mdcapturing the embedding-manager split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Neo4j Embedding Manager Runtime Modularization
- Split
packages/tools/src/data/neo4j/embeddings/embedding-manager.tsinto a smaller stable facade with focusedembedding-manager-shared.ts,embedding-provider-factory.ts,embedding-environment.ts, andembedding-generation.tshelper modules - Preserved the public
EmbeddingManagersurface, singleton initialization helpers, provider defaults, environment variable semantics, and single/batch generation behavior while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/tools - Neo4j Embedding Manager Review Follow-Ups
- Tightened provider validation during initialization, preserved empty-string environment model fallback semantics, and narrowed extracted helper responsibilities while keeping the explicit-
anybaseline stable atworkspace 80/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.56:
- @agentforge/core@0.16.56
- @agentforge/skills@0.16.56
- @agentforge/patterns@0.16.56
- @agentforge/tools@0.16.56
- @agentforge/testing@0.16.56
- @agentforge/cli@0.16.56
[0.16.55] - 2026-06-17
Added
@agentforge/core - Caching Middleware Modularization Coverage
- Added focused caching middleware coverage in
packages/core/src/langgraph/middleware/__tests__/caching/with-cache.suite.ts,shared-cache.suite.ts, andshared.tsbehind the stablepackages/core/src/langgraph/middleware/__tests__/caching.test.tspublic entrypoint - Added story documentation in
docs/st09068-middleware-caching-modularization.mdcapturing the caching split, validation evidence, and explicit-anybaseline improvement
Changed
@agentforge/core - Caching Middleware Runtime Modularization
- Split
packages/core/src/langgraph/middleware/caching.tsinto a smaller stable facade with focusedcaching-types.ts,caching-options.ts,caching-store.ts,caching-entry.ts,caching-wrapper.ts, andcaching-shared.tshelper modules - Preserved the public
withCache(...)andcreateSharedCache(...)surface, callback hooks, eviction strategies, TTL behavior, and shared-cache semantics while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/core - Caching Middleware Review Follow-Ups
- Restored public middleware documentation, corrected planner and story-doc evidence, completed public option-field JSDoc, made the focused TTL and LRU eviction tests deterministic with fake timers, fixed eviction for empty-string cache keys, and tightened cached error helper typing while improving the explicit-
anybaseline from84/289overall and23/119incoreto80/289overall and19/119incore
Published
- All packages published to npm registry at version 0.16.55:
- @agentforge/core@0.16.55
- @agentforge/skills@0.16.55
- @agentforge/patterns@0.16.55
- @agentforge/tools@0.16.55
- @agentforge/testing@0.16.55
- @agentforge/cli@0.16.55
[0.16.54] - 2026-06-16
Added
@agentforge/tools - Batch Executor Modularization Coverage
- Added focused relational batch-executor coverage in
packages/tools/tests/data/relational/query/batch-executor/chunking.suite.ts,retry.suite.ts,failure.suite.ts,benchmark.suite.ts, andshared.tsbehind the stablepackages/tools/tests/data/relational/query/batch-executor.test.tspublic entrypoint - Added story documentation in
docs/st09067-batch-executor-modularization.mdcapturing the batch-executor split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Batch Executor Runtime Modularization
- Split
packages/tools/src/data/relational/query/batch-executor.tsinto a smaller stable facade with focusedbatch-executor-types.ts,batch-executor-options.ts,batch-executor-runtime.ts,batch-executor-execution.ts, andbatch-executor-benchmark.tshelper modules - Preserved the public batch execution imports, progress callbacks, retry and failure semantics, benchmark behavior, and query entrypoint compatibility while reducing maintenance pressure on the old monolithic runtime and test file
Fixed
@agentforge/tools - Batch Executor Review Follow-Ups
- Renamed focused batch-executor suites to non-discovered
*.suite.tsmodules to avoid duplicate Vitest execution, aligned the.rejectsassertion style with the rest of the test suite, and corrected the published story-doc file-size evidence while keeping the explicit-anybaseline stable atworkspace 84/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.54:
- @agentforge/core@0.16.54
- @agentforge/skills@0.16.54
- @agentforge/patterns@0.16.54
- @agentforge/tools@0.16.54
- @agentforge/testing@0.16.54
- @agentforge/cli@0.16.54
[0.16.53] - 2026-06-16
Added
@agentforge/core - Resource Pool Modularization Coverage
- Added focused shared resource-pool coverage in
packages/core/tests/resources/pool/acquisition.ts,eviction.ts,lifecycle.ts, andshared.tsbehind the stablepackages/core/tests/resources/pool.test.tspublic entrypoint - Added story documentation in
docs/st09066-resource-pool-modularization.mdcapturing the pool split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - Resource Pool Runtime Modularization
- Split
packages/core/src/resources/pool.tsinto a smaller stable facade with focusedpool-types.ts,pool-runtime.ts,pool-acquisition.ts,pool-eviction.ts,pool-health.ts, andpool-lifecycle.tshelper modules - Preserved the public
ConnectionPoolandcreateConnectionPool(...)surface, wrapper compatibility, and existing pool behavior while reducing maintenance pressure on the old monolithic runtime and test files
Fixed
@agentforge/core - Resource Pool Review Follow-Ups
- Hardened concurrent create/max enforcement, draining and clear races, eviction and health-check interleavings, structured pool logging, and health-check callback error normalization while keeping the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.53:
- @agentforge/core@0.16.53
- @agentforge/skills@0.16.53
- @agentforge/patterns@0.16.53
- @agentforge/tools@0.16.53
- @agentforge/testing@0.16.53
- @agentforge/cli@0.16.53
[0.16.52] - 2026-06-14
Added
@agentforge/core - LangGraph State Helper Modularization Coverage
- Added focused LangGraph state-helper coverage in
packages/core/tests/langgraph/state-annotation.test.ts,state-validation.test.ts,state-merge.test.ts, andstate-workflows.test.tsbehind the stablepackages/core/tests/langgraph/state.test.tspublic entrypoint - Added story documentation in
docs/st09065-langgraph-state-modularization.mdcapturing the state-helper split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - LangGraph State Helper Runtime Modularization
- Split
packages/core/src/langgraph/state.tsinto a smaller stable facade with focusedstate-annotation.ts,state-validation.ts,state-merge.ts,state-shared.ts, and reducer/default helper modules - Preserved the public state-helper imports, reducer semantics, and existing
state.test.tsentrypoint while reducing maintenance pressure on the old monolithic runtime and test files
Fixed
@agentforge/core - LangGraph State Helper Review Follow-Ups
- Aligned the split state test suites with the public
packages/core/src/langgraph/state.jsentrypoint imports and kept the explicit-anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.52:
- @agentforge/core@0.16.52
- @agentforge/skills@0.16.52
- @agentforge/patterns@0.16.52
- @agentforge/tools@0.16.52
- @agentforge/testing@0.16.52
- @agentforge/cli@0.16.52
[0.16.51] - 2026-06-13
Added
@agentforge/core - Middleware Preset Modularization Coverage
- Added focused middleware preset coverage in
packages/core/src/langgraph/middleware/__tests__/presets/production.ts,development.ts,testing.ts, andexports.tsbehind the stablepackages/core/src/langgraph/middleware/__tests__/presets.test.tspublic entrypoint - Added story documentation in
docs/st09064-middleware-presets-modularization.mdcapturing the preset split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - Middleware Preset Runtime Modularization
- Split
packages/core/src/langgraph/middleware/presets.tsinto a smaller stable facade with focusedpreset-production.ts,preset-development.ts,preset-testing.ts,preset-collection.ts,preset-adapters.ts, andpreset-types.tshelper modules - Preserved the public middleware preset imports, preset ordering, and runtime behavior while reducing maintenance pressure on the old monolithic runtime and test files
Fixed
@agentforge/core - Middleware Preset Review Follow-Ups
- Folded in the final review-driven follow-ups before merge while keeping the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.51:
- @agentforge/core@0.16.51
- @agentforge/skills@0.16.51
- @agentforge/patterns@0.16.51
- @agentforge/tools@0.16.51
- @agentforge/testing@0.16.51
- @agentforge/cli@0.16.51
[0.16.50] - 2026-06-12
Added
@agentforge/patterns - Multi-Agent Worker Modularization Coverage
- Added focused multi-agent node coverage in
packages/patterns/tests/multi-agent/nodes/supervisor-routing.ts,supervisor-workload.ts,worker-core.ts,worker-workload.ts,worker-overrides.ts, andaggregator-node.tsbehind the stablepackages/patterns/tests/multi-agent/nodes.test.tspublic entrypoint - Added story documentation in
docs/st09063-multi-agent-worker-node-modularization.mdcapturing the worker-node split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - Multi-Agent Worker Runtime Modularization
- Split
packages/patterns/src/multi-agent/nodes/worker.tsinto a smaller stable worker facade with focusedworker-model.ts,worker-workload.ts, andworker-types.tshelper modules - Preserved the public
createWorkerNode(...)surface, worker handoff propagation, framework-owned workload handling, and the existing multi-agent node test entrypoint while reducing maintenance pressure on the old monolithic runtime and test files
Fixed
@agentforge/patterns - Multi-Agent Worker Review Follow-Ups
- Corrected split test imports so
MultiAgentStateTyperesolves fromsrc/multi-agent/state.jsin the extracted worker and aggregator suites - Removed a flaky aggregator assertion by capturing the generated state instance once before asserting the custom aggregate callback arguments
- Removed a redundant worker-model type cast in the public worker facade and kept the explicit-
anybaseline stable atworkspace 84/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.50:
- @agentforge/core@0.16.50
- @agentforge/skills@0.16.50
- @agentforge/patterns@0.16.50
- @agentforge/tools@0.16.50
- @agentforge/testing@0.16.50
- @agentforge/cli@0.16.50
[0.16.49] - 2026-06-11
Added
@agentforge/core - Tool Executor Modularization Coverage
- Added focused executor coverage in
packages/core/tests/tools/executor/method-handling.ts,retry-policy.ts, andmetrics.tsbehind the stablepackages/core/tests/tools/executor.test.tspublic entrypoint - Added story documentation in
docs/st09062-tool-executor-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - Tool Executor Runtime Modularization
- Split
packages/core/src/tools/executor.tsinto a smaller stable facade with focusedexecutor-types.ts,executor-retry.ts, andexecutor-metrics.tshelper modules - Preserved the public
./executor.jsimport surface and existing executor behavior while reducing the maintenance pressure on the old monolithic runtime and test files
Fixed
@agentforge/core - Tool Executor Review Follow-Ups
- Hardened executor timeout cleanup so finished executions do not leave a trailing timeout rejection behind
- Restored tool-name compatibility for deprecation logging and aligned the executor logger name with the
agentforge:core:...convention - Converted the internal queue pump to a synchronous helper so queue processing does not return an ignored Promise, and corrected the final tracker and documentation evidence after the modularized files settled into their merged shape
- Kept the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.49:
- @agentforge/core@0.16.49
- @agentforge/skills@0.16.49
- @agentforge/patterns@0.16.49
- @agentforge/tools@0.16.49
- @agentforge/testing@0.16.49
- @agentforge/cli@0.16.49
[0.16.48] - 2026-06-10
Added
@agentforge/core - Tool Types Modularization Coverage
- Added focused tool-types coverage in
packages/core/tests/tools/types/tool-category.ts,tool-name-and-example.ts,tool-metadata.ts,tool-interface.ts, andtool-relations.tsbehind the stablepackages/core/tests/tools/types.test.tspublic entrypoint - Added story documentation in
docs/st09061-tool-types-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - Tool Type Contract Modularization
- Split
packages/core/src/tools/types.tsinto a small stable facade that re-exports focused category, example, relations, metadata, and core-tool contract modules - Preserved the public
./types.jsimport surface and the existing public tool-types test entrypoint while reducing review and maintenance pressure on the old monolithic files
Fixed
@agentforge/core - Tool Type Review Follow-Ups
- Restored the deprecated
Tool.executetyping annotation so downstream TypeScript consumers continue seeing the existing deprecation guidance - Switched the Zod dependency in the extracted tool contract module to a type-only import so compiled output does not carry an unnecessary runtime import
- Corrected the final line-count evidence in the story documentation and planning checklist after the modularized files settled into their merged shape
- Kept the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.48:
- @agentforge/core@0.16.48
- @agentforge/skills@0.16.48
- @agentforge/patterns@0.16.48
- @agentforge/tools@0.16.48
- @agentforge/testing@0.16.48
- @agentforge/cli@0.16.48
[0.16.47] - 2026-06-09
Added
@agentforge/patterns - Multi-Agent Schema Contract Coverage
- Added focused multi-agent schema contract coverage in
packages/patterns/tests/multi-agent/state.test.tsfor JSON-safe metadata acceptance and rejection boundaries, including null-prototype JSON-map compatibility - Added
packages/patterns/tests/multi-agent/contracts.typecheck.tsand wired it into package typecheck validation so multi-agent metadata and handoff context contract assertions compile during release verification - Added story documentation in
docs/st09060-multi-agent-schema-payload-contracts.mdcapturing the contract changes, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - Multi-Agent Schema Payload Hardening
- Tightened
packages/patterns/src/multi-agent/schemas.tsso message and task-result metadata now use shared JSON-safe object contracts while handoff context stays unknown-first - Extracted
packages/patterns/src/shared/json-schemas.tsso the JSON-safe object contract is shared between multi-agent and ReAct schemas instead of duplicated - Preserved multi-agent routing, worker handoff, execution metadata, and runtime context-passing behavior while making metadata boundaries safer for downstream serialization and validation consumers
Fixed
@agentforge/patterns - Multi-Agent Schema Review Follow-Ups
- Rejected non-plain runtime objects such as
DateandMapfrom the shared JSON-safe object branch during review follow-up - Restored compatibility for
Object.create(null)JSON maps so null-prototype objects that are still JSON-serializable remain valid metadata payloads - Clarified the release documentation and story notes to call out the shared helper extraction and the resulting ReAct metadata validation tightening
- Kept the explicit-
anybaseline stable atworkspace 84/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.47:
- @agentforge/core@0.16.47
- @agentforge/skills@0.16.47
- @agentforge/patterns@0.16.47
- @agentforge/tools@0.16.47
- @agentforge/testing@0.16.47
- @agentforge/cli@0.16.47
[0.16.46] - 2026-06-08
Added
@agentforge/patterns - ReAct Schema Contract Coverage
- Added focused ReAct schema contract coverage in
packages/patterns/tests/react/state.test.tsfor JSON-safe metadata acceptance and rejection boundaries - Added
packages/patterns/tests/react/contracts.typecheck.tsand wired it into package typecheck validation so ReAct metadata and tool payload contract assertions are compiled during release verification - Added story documentation in
docs/st09059-react-schema-payload-contracts.mdcapturing the contract changes, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - ReAct Schema Payload Hardening
- Tightened
packages/patterns/src/react/schemas.tsso message and thought metadata now use JSON-safe object contracts while tool-call arguments and tool-result payloads stay unknown-first - Preserved ReAct reasoning, action, observation, and prompt behavior while making metadata boundaries safer for downstream serialization and validation consumers
Fixed
@agentforge/patterns - ReAct Schema Review Follow-Ups
- Rejected non-finite metadata numbers such as
Infinityand-Infinityfrom the JSON-safe metadata branch during review follow-up - Corrected the package typecheck wiring and release documentation so the new compile-time contract assertions are actually enforced and the story notes no longer overstate validation coverage
- Kept the explicit-
anybaseline stable atworkspace 84/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.46:
- @agentforge/core@0.16.46
- @agentforge/skills@0.16.46
- @agentforge/patterns@0.16.46
- @agentforge/tools@0.16.46
- @agentforge/testing@0.16.46
- @agentforge/cli@0.16.46
[0.16.45] - 2026-06-07
Added
@agentforge/core - Tool Lifecycle Modularization Coverage
- Added focused managed-tool lifecycle coverage in
packages/core/tests/tools/lifecycle-initialization.test.ts,lifecycle-execution.test.ts,lifecycle-cleanup.test.ts, andlifecycle-health.test.ts - Added story documentation in
docs/st09058-tool-lifecycle-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/core - Managed Tool Lifecycle Modularization
- Reduced
packages/core/src/tools/lifecycle.tsfrom a mixed-responsibility405line implementation to an11line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/core/src/tools/lifecycle-managed-tool.ts,lifecycle-types.ts,lifecycle-health.ts,lifecycle-hooks.ts,lifecycle-internal-types.ts, andlifecycle-error.ts - Preserved
ManagedToolinitialization, execution, cleanup, health-check, auto-cleanup, and public import behavior while making lifecycle orchestration boundaries smaller and easier to review
Fixed
@agentforge/core - Lifecycle Modularization Review Follow-Ups
- Replaced the old lifecycle test monolith with focused suites that mirror initialization, execution, cleanup, and health boundaries
- Removed the extracted lifecycle type-cycle through the public facade and tightened the internal initialize dependency shape during review follow-up
- Kept the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.45:
- @agentforge/core@0.16.45
- @agentforge/skills@0.16.45
- @agentforge/patterns@0.16.45
- @agentforge/tools@0.16.45
- @agentforge/testing@0.16.45
- @agentforge/cli@0.16.45
[0.16.44] - 2026-06-06
Added
@agentforge/tools - Transaction Flow Modularization Coverage
- Added focused relational transaction coverage in
packages/tools/tests/data/relational/query/transaction-lifecycle.test.ts,transaction-options.test.ts, andtransaction-savepoints.test.ts - Added shared transaction test utilities in
packages/tools/tests/data/relational/query/transaction.test-utils.ts - Added story documentation in
docs/st09057-transaction-flow-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Transaction Flow Modularization
- Reduced
packages/tools/src/data/relational/query/transaction.tsfrom a mixed-responsibility419line implementation to a14line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/tools/src/data/relational/query/transaction-types.ts,transaction-options.ts,transaction-managed.ts, andtransaction-runner.ts - Preserved
withTransaction()behavior, savepoint flow, timeout cancellation, vendor-specific isolation handling, and public imports while making transaction orchestration boundaries smaller and easier to review
Fixed
@agentforge/tools - Transaction Modularization Review Follow-Ups
- Replaced the old query transaction test monolith with focused lifecycle, options, and savepoint suites that mirror the extracted runtime boundaries
- Tightened the shared transaction test helper to the production
SQLcallback shape and refreshed story evidence counts during review follow-up - Kept the explicit-
anybaseline stable atworkspace 84/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.44:
- @agentforge/core@0.16.44
- @agentforge/skills@0.16.44
- @agentforge/patterns@0.16.44
- @agentforge/tools@0.16.44
- @agentforge/testing@0.16.44
- @agentforge/cli@0.16.44
[0.16.43] - 2026-06-05
Added
@agentforge/skills - Skills Registry Modularization Coverage
- Added focused skills-registry coverage in
packages/skills/tests/registry-discovery.test.ts,registry-query.test.ts,registry-events.test.ts, andregistry-rescan.test.ts - Added shared registry test utilities in
packages/skills/tests/registry.test-utils.ts - Added story documentation in
docs/st09056-skills-registry-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/skills - Skills Registry Modularization
- Reduced
packages/skills/src/registry.tsfrom a mixed-responsibility506line implementation to a101line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/skills/src/registry-discovery.ts,registry-events.ts,registry-prompt.ts,registry-query-api.ts, andregistry-internal.ts - Preserved
SkillRegistrydiscovery order, duplicate precedence, prompt output, event semantics, and public imports while making discovery, prompt rendering, and event/reporting boundaries smaller and easier to review
Fixed
@agentforge/skills - Registry Review Follow-Ups
- Replaced the
419linepackages/skills/tests/registry.test.tsmonolith with focused suites that mirror discovery, query, event, and rescan boundaries - Aligned the extracted discovery helper with shared public config and trust types, corrected story evidence counts, and moved query-suite temp directories to per-test setup/cleanup
- Kept the explicit-
anybaseline stable atworkspace 84/289andskills 0/0
Published
- All packages published to npm registry at version 0.16.43:
- @agentforge/core@0.16.43
- @agentforge/skills@0.16.43
- @agentforge/patterns@0.16.43
- @agentforge/tools@0.16.43
- @agentforge/testing@0.16.43
- @agentforge/cli@0.16.43
[0.16.42] - 2026-06-04
Added
@agentforge/tools - Schema Inspector Modularization Coverage
- Added focused relational schema-inspector coverage in
packages/tools/tests/data/relational/schema-inspector-postgresql.test.ts,schema-inspector-cache.test.ts, andschema-inspector-filters.test.ts - Added shared schema-inspector test utilities in
packages/tools/tests/data/relational/schema-inspector.test-utils.ts - Added story documentation in
docs/st09055-schema-inspector-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Schema Inspector Modularization
- Reduced
packages/tools/src/data/relational/schema/schema-inspector.tsfrom a mixed-responsibility725line implementation to a126line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/tools/src/data/relational/schema/schema-inspector-shared.ts,schema-inspector-postgresql.ts,schema-inspector-mysql.ts, andschema-inspector-sqlite.ts - Preserved schema metadata shape, cache invalidation flow, vendor-specific inspection behavior, and public imports while making vendor adapters and shared normalization logic easier to review in smaller seams
Fixed
@agentforge/tools - Schema Inspector Review Follow-Ups
- Replaced the old schema-inspector monolith with focused PostgreSQL, cache, and filter suites that mirror the extracted runtime boundaries
- Hardened unsupported-vendor failure handling and made SQLite column assembly safer during modularization follow-up review
- Kept the explicit-
anybaseline stable atworkspace 84/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.42:
- @agentforge/core@0.16.42
- @agentforge/skills@0.16.42
- @agentforge/patterns@0.16.42
- @agentforge/tools@0.16.42
- @agentforge/testing@0.16.42
- @agentforge/cli@0.16.42
[0.16.41] - 2026-05-29
Added
@agentforge/patterns - Reflection Node Modularization Coverage
- Added focused reflection-node coverage in
packages/patterns/tests/reflection/generator-node.test.ts,reflector-node.test.ts,reviser-node.test.ts, andfinisher-node.test.ts - Added story documentation in
docs/st09054-reflection-node-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - Reflection Node Modularization
- Reduced
packages/patterns/src/reflection/nodes.tsfrom a mixed-responsibility350line implementation to a13line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/patterns/src/reflection/generator-node.ts,reflector-node.ts,reviser-node.ts,finisher-node.ts, andnode-shared.ts - Preserved public reflection node exports, generation/review/revision flow, and shared state handling while making each node boundary easier to review and evolve in smaller seams
Fixed
@agentforge/patterns - Reflection Node Test Boundaries
- Replaced the
298linepackages/patterns/tests/reflection/nodes.test.tsmonolith with focused suites that mirror generator, reflector, reviser, and finisher boundaries - Kept the explicit-
anybaseline stable atworkspace 84/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.41:
- @agentforge/core@0.16.41
- @agentforge/skills@0.16.41
- @agentforge/patterns@0.16.41
- @agentforge/tools@0.16.41
- @agentforge/testing@0.16.41
- @agentforge/cli@0.16.41
[0.16.40] - 2026-05-28
Added
@agentforge/tools - Connection Manager Modularization Coverage
- Added focused connection-manager coverage in
packages/tools/tests/data/relational/connection/connection-manager-config.test.ts,connection-manager-lifecycle.mocked.test.ts,connection-manager-operations.mocked.test.ts,connection-manager-sqlite-runtime.test.ts,connection-lifecycle-state.test.ts,connection-lifecycle-events.test.ts,connection-lifecycle-behavior.test.ts,connection-lifecycle-reconnection.test.ts, andconnection-lifecycle-edge-cases.test.ts - Added story documentation in
docs/st09053-connection-manager-modularization.mdcapturing the final runtime split, focused validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Connection Manager Modularization
- Reduced
packages/tools/src/data/relational/connection/connection-manager.tsfrom a mixed-responsibility640line implementation to a255line public facade below the300line planning cutoff - Split the extracted runtime logic into focused modules in
packages/tools/src/data/relational/connection/connection-initialization.ts,connection-cleanup.ts,connection-health.ts, andconnection-manager-runtime-types.ts, leavingconnection-manager-runtime.tsas a small export barrel - Preserved public
ConnectionManagerimports, lifecycle semantics, session behavior, vendor-specific handling, and health/metrics behavior while making the runtime easier to review and evolve in smaller seams
Fixed
@agentforge/tools - Connection Manager Runtime and Test Boundaries
- Replaced the
465linepackages/tools/tests/data/relational/connection-manager.test.ts, the525linepackages/tools/tests/data/relational/connection-lifecycle.test.ts, and the695linepackages/tools/tests/data/relational/connection/connection-manager.test.tsmonoliths with focused suites that mirror config, lifecycle, operations, SQLite runtime, and reconnection boundaries - Decoupled PostgreSQL pool-configuration coverage from unrelated SQLite native-binding availability by moving that assertion onto the mocked PostgreSQL harness
- Hardened the reconnection fake-timer test cleanup so timers are always restored with
try/finally - Kept the explicit-
anybaseline stable atworkspace 84/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.40:
- @agentforge/core@0.16.40
- @agentforge/skills@0.16.40
- @agentforge/patterns@0.16.40
- @agentforge/tools@0.16.40
- @agentforge/testing@0.16.40
- @agentforge/cli@0.16.40
[0.16.39] - 2026-05-27
Added
@agentforge/tools - Relational Query Builder Modularization Coverage
- Added focused relational query-builder coverage in
packages/tools/tests/data/relational/query/query-builder-insert.test.ts,query-builder-update.test.ts,query-builder-delete.test.ts, andquery-builder-select.test.ts - Added story documentation in
docs/st09052-relational-query-builder-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/tools - Relational Query Builder Modularization
- Reduced
packages/tools/src/data/relational/query/query-builder.tsfrom a mixed-responsibility731line implementation to a43line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/tools/src/data/relational/query/query-builder-types.ts,query-builder-conditions.ts,query-builder-insert.ts,query-builder-mutation.ts, andquery-builder-select.ts - Preserved public query-builder exports, SQL output, parameter ordering, identifier quoting, and vendor-specific query behavior while making insert, mutation, select, and shared WHERE-clause logic reviewable in smaller seams
Fixed
@agentforge/tools - Query Builder Test and Contract Boundaries
- Replaced the
688linepackages/tools/tests/data/relational/query/query-builder.test.tsmonolith with focused suites that mirror insert, update, delete, and select query-construction boundaries - Kept the explicit-
anybaseline stable atworkspace 84/289andtools 53/67while modularizing both runtime and tests
Published
- All packages published to npm registry at version 0.16.39:
- @agentforge/core@0.16.39
- @agentforge/skills@0.16.39
- @agentforge/patterns@0.16.39
- @agentforge/tools@0.16.39
- @agentforge/testing@0.16.39
- @agentforge/cli@0.16.39
[0.16.38] - 2026-05-26
Added
@agentforge/patterns - Multi-Agent Agent Modularization Coverage
- Added focused multi-agent orchestration coverage in
packages/patterns/tests/multi-agent/agent-system.test.ts,agent-register-workers.test.ts,agent-tools.test.ts, andagent-builder.test.ts - Added story documentation in
docs/st09051-multi-agent-agent-modularization.mdcapturing the runtime split, validation evidence, and no-regression explicit-anyoutcome
Changed
@agentforge/patterns - Multi-Agent Orchestration Modularization
- Reduced
packages/patterns/src/multi-agent/agent.tsfrom a mixed-responsibility535line implementation to a155line public facade below the300line planning cutoff - Extracted focused internal modules in
packages/patterns/src/multi-agent/agent-graph.ts,agent-runtime.ts,agent-workers.ts,agent-builder.ts, andagent-types.ts - Preserved
createMultiAgentSystem,registerWorkers,createWorkersRegistry, andMultiAgentSystemBuilderbehavior and export paths while making graph assembly, worker normalization, and runtime injection reviewable in smaller seams
Fixed
@agentforge/patterns - Multi-Agent Review and Logging Follow-Up
- Replaced the
655linepackages/patterns/tests/multi-agent/agent.test.tsmonolith with focused suites that mirror system creation, compiled-system registration, tool-name mapping, stream wrapping, and builder registration boundaries - Routed the deprecated compiled-system
registerWorkers()warning through the shared patterns logger instead ofconsole.warnso framework logging stays filterable and consistent with repo standards - Kept multi-agent behavior and the explicit-
anybaseline stable atworkspace 84/289andpatterns 2/28
Published
- All packages published to npm registry at version 0.16.38:
- @agentforge/core@0.16.38
- @agentforge/skills@0.16.38
- @agentforge/patterns@0.16.38
- @agentforge/tools@0.16.38
- @agentforge/testing@0.16.38
- @agentforge/cli@0.16.38
[0.16.37] - 2026-05-23
Added
@agentforge/core - Tool Builder Modularization Coverage
- Added focused builder public-behavior coverage in
packages/core/tests/tools/builder-basic.test.ts,builder-metadata.test.ts,builder-validation.test.ts,builder-typing.test.ts,builder-safe.test.ts, andbuilder-relations.test.ts - Added story documentation in
docs/st09050-tool-builder-modularization.mdcapturing the file split, validation evidence, and no-regression baseline outcome - Added targeted metadata regressions covering
.tags(...).tag(...),.limitations(...).limitation(...), and repeated.example(...)accumulation so builder append semantics stay stable after the modularization split
Changed
@agentforge/core - Tool Builder Modularization
- Reduced
packages/core/src/tools/builder.tsfrom a mixed-responsibility434line implementation to a small public facade below the300line planning cutoff - Extracted focused internal builder modules in
packages/core/src/tools/builder-metadata.ts,builder-implementation.ts, andbuilder-finalize.ts - Preserved the public
ToolBuilderandtoolBuilderexport surface while making metadata cloning, invoke wrapping, and build-time validation easier to review and evolve in smaller slices
Fixed
@agentforge/core - Builder Follow-Up Contract Preservation
- Replaced the
697linepackages/core/tests/tools/builder.test.tsmonolith with focused suites that mirror builder metadata, validation, typing, safe execution, and relation boundaries - Switched the new builder internals to explicit type-only imports to keep the module boundaries aligned with the rest of
packages/core/src/tools - Removed brittle hard-coded line counts from the story evidence doc and restored in-place append semantics for tags, limitations, and examples in the extracted metadata helpers
- Kept builder behavior and the explicit-
anybaseline stable atworkspace 84/289andcore 23/119
Published
- All packages published to npm registry at version 0.16.37:
- @agentforge/core@0.16.37
- @agentforge/skills@0.16.37
- @agentforge/patterns@0.16.37
- @agentforge/tools@0.16.37
- @agentforge/testing@0.16.37
- @agentforge/cli@0.16.37
[0.16.36] - 2026-05-22
Added
@agentforge/core - Tool Registry Modularization Coverage
- Added focused registry public-API coverage in
packages/core/tests/tools/registry-crud.test.ts,registry-query-api.test.ts,registry-bulk-api.test.ts,registry-events-api.test.ts,registry-langchain-api.test.ts, andregistry-prompt-api.test.ts - Added story documentation in
docs/st09049-tool-registry-modularization.mdcapturing the file-size reduction, validation evidence, and no-regression baseline outcome
Changed
@agentforge/core - Tool Registry Modularization
- Reduced
packages/core/src/tools/registry.tsfrom a mixed-responsibility446line implementation to a107line public facade - Extracted focused internal registry query, mutation, and public-type modules in
packages/core/src/tools/registry-query-api.ts,packages/core/src/tools/registry-mutation-api.ts, andpackages/core/src/tools/registry-types.ts - Preserved the public
ToolRegistry,RegistryEvent,EventHandler, andPromptOptionsexport surface while making the registry easier to review and evolve in smaller slices
Fixed
@agentforge/core - Registry Test and Maintenance Boundaries
- Replaced the
832linepackages/core/tests/tools/registry.test.tsmonolith with focused suites that mirror CRUD, query, bulk mutation, event, LangChain, and prompt boundaries - Kept registry behavior, emitted events, mutation semantics, and explicit-
anybaseline stable atworkspace 84/289andcore 23/119while modularizing both runtime and tests
Published
- All packages published to npm registry at version 0.16.36:
- @agentforge/core@0.16.36
- @agentforge/skills@0.16.36
- @agentforge/patterns@0.16.36
- @agentforge/tools@0.16.36
- @agentforge/testing@0.16.36
- @agentforge/cli@0.16.36
[0.16.35] - 2026-05-21
Added
@agentforge/tools - JSON and HTTP Contract Regression Coverage
- Added focused schema coverage in
packages/tools/tests/data/json/json-types.test.tsandpackages/tools/tests/web/http-types.test.tsto verify JSON and HTTP payload boundaries no longer rely on broadZodAnyseams - Added direct JSON query and merge regressions covering array-traversal rejection plus shallow/deep special-key merge hardening for
__proto__,constructor, andprototype - Added story documentation in
docs/st09047-json-http-payload-schema-contracts.mdcapturing the contract tightening, validation evidence, and review-driven hardening follow-up
Changed
@agentforge/tools - JSON and HTTP Payload Boundary Hardening
- Tightened
packages/tools/src/data/json/types.tsandpackages/tools/src/web/http/types.tsso JSON payloads, HTTP request bodies, andHttpResponse.datause unknown-first contracts instead of broadany - Updated
packages/tools/src/data/json/tools/json-query.tsandpackages/tools/src/data/json/tools/json-merge.tsto narrow and merge unknown values explicitly while preserving JSON query/merge and HTTP helper runtime behavior
Fixed
@agentforge/tools - Merge Key and Traversal Safety
- Corrected the JSON query record guard so arrays are no longer narrowed as
Record<string, unknown>during path traversal - Hardened both deep and shallow JSON merge paths against prototype-mutation-sensitive keys using explicit property definition, keeping special keys as data without mutating object prototypes
- Lowered the explicit-
anybaseline fromworkspace 90/289andtools 59/67toworkspace 84/289andtools 53/67
Published
- All packages published to npm registry at version 0.16.35:
- @agentforge/core@0.16.35
- @agentforge/skills@0.16.35
- @agentforge/patterns@0.16.35
- @agentforge/tools@0.16.35
- @agentforge/testing@0.16.35
- @agentforge/cli@0.16.35
[0.16.34] - 2026-05-20
Added
@agentforge/tools - Transformer Schema Contract Regression Coverage
- Added focused schema coverage in
packages/tools/tests/data/transformer/transformer-types.test.tsto verify transformer schemas no longer depend on blanketZodAnyboundaries - Extended
packages/tools/tests/data/transformer/transformer-helpers.test.tswith regressions for nested mapping/grouping behavior, special-key safety, preserved nullish failure semantics, and public output-shape compatibility - Added story documentation in
docs/st09046-transformer-schema-value-contracts.mdcapturing the schema tightening, review follow-ups, validation evidence, and explicit-anyoutcome
Changed
@agentforge/tools - Transformer Schema Value Hardening
- Tightened
packages/tools/src/data/transformer/types.tsby replacing blanketz.any()seams with shared unknown-first transformer value, array, and object schemas - Updated
array-mapandarray-group-byto use explicit unknown-first narrowing exposed by the schema tightening while preserving existing transformer behavior - Preserved normal object output shape for mapped entries and group buckets while still safely handling special keys like
__proto__
Fixed
@agentforge/tools - Transformer Special-Key and Contract Safety
- Hardened
array-mapandarray-group-byagainst prototype-mutation hazards from user-controlled property keys without changing the public prototype contract of returned objects - Kept the explicit-
anybaseline flat atworkspace 90/289andtools 59/67while tightening transformer schema boundaries and adding focused regression coverage
Published
- All packages published to npm registry at version 0.16.34:
- @agentforge/core@0.16.34
- @agentforge/skills@0.16.34
- @agentforge/patterns@0.16.34
- @agentforge/tools@0.16.34
- @agentforge/testing@0.16.34
- @agentforge/cli@0.16.34
[0.16.33] - 2026-05-19
Added
@agentforge/patterns - Modular Routing Regression Coverage
- Added focused routing coverage in
packages/patterns/tests/multi-agent/routing-worker-selection.test.ts,routing-rule-based.test.ts,routing-llm.test.ts, androuting-registry.test.ts, with shared fixture support inrouting.fixtures.ts - Kept combined routing and node-path verification green in
packages/patterns/tests/multi-agent/nodes.test.ts, validating the modularized strategy split against the surrounding multi-agent flow - Added story documentation in
docs/st09048-modularize-multi-agent-routing-strategies-and-tests.mdcapturing the modularization scope, file-size reduction, validation evidence, and review-driven hardening follow-ups
Changed
@agentforge/patterns - Multi-Agent Routing Modularization
- Reduced
packages/patterns/src/multi-agent/routing.tsfrom a mixed-responsibility373line implementation to a51line public facade - Extracted focused internal routing modules for LLM, round-robin, skill-based, load-balanced, and rule-based strategies plus shared worker-selection helpers under
packages/patterns/src/multi-agent/routing-internal/ - Preserved public routing exports and existing runtime behavior while making the routing layer easier to review, extend, and test in smaller slices
Fixed
@agentforge/patterns - Routing Registry and Test Contract Hardening
- Hardened routing strategy lookup so inherited object keys such as
toStringand__proto__cannot bypass the unknown-strategy guard - Aligned shared routing test fixtures with schema-required message
idfields and kept tracker/checklist state consistent through the modularization review cycle - Kept the explicit-
anybaseline flat atworkspace 90/289andpatterns 2/28while modularizing both production and test code
Published
- All packages published to npm registry at version 0.16.33:
- @agentforge/core@0.16.33
- @agentforge/skills@0.16.33
- @agentforge/patterns@0.16.33
- @agentforge/tools@0.16.33
- @agentforge/testing@0.16.33
- @agentforge/cli@0.16.33
[0.16.32] - 2026-05-17
Added
@agentforge/patterns - Multi-Agent Routing Regression Coverage
- Added focused routing coverage in
packages/patterns/tests/multi-agent/routing.test.tsfor structured-output setup failure fallback, direct-content JSON fallback, mixed content arrays, routing-specific fallback diagnostics, and invalid structured-response hard failures - Kept combined multi-agent routing and node coverage green in
packages/patterns/tests/multi-agent/nodes.test.ts, validating the tightened routing boundary against the surrounding supervisor flow - Added story documentation in
docs/st09045-multi-agent-routing-decision-contracts.mdcapturing the contract hardening, review-driven fallback refinements, validation evidence, and explicit-anydelta
Changed
@agentforge/patterns - Multi-Agent Routing Decision Hardening
- Tightened
packages/patterns/src/multi-agent/routing.tsso LLM routing decisions are parsed throughRoutingDecisionSchemainstead of a broad cast frommodel.invoke(...) - Centralized the structured-output decision boundary inside the routing module, preferring
withStructuredOutput(RoutingDecisionSchema)when supported and using direct-output parsing only as a compatibility fallback for structured-output setup failures - Preserved existing routing behavior for valid decisions while adding routing-specific warning logs and clearer invalid-decision errors for unsupported or malformed model output
Fixed
@agentforge/patterns - Routing Fallback Contract Safety
- Removed the remaining explicit
anyseam frompackages/patterns/src/multi-agent/routing.ts, reducing thepatternsbaseline from3/28to2/28and the workspace baseline from91/289to90/289 - Corrected fallback behavior so mixed content arrays ignore non-text blocks for JSON parsing, invalid structured responses fail fast instead of silently retrying unstructured routing, and only structured-output setup failures trigger direct-output fallback
[0.16.31] - 2026-05-16
Added
@agentforge/testing - Mock Tool Contract Regression Coverage
- Added a source-included typecheck regression fixture in
packages/testing/src/mocks/mock-tool.typecheck.tscovering schema-driven input inference, no-schema behavior, and the tightened overload boundary - Added focused runtime coverage in
packages/testing/tests/mock-tool.test.tsfor delayed execution, forced errors, helper defaults, and custom implementation semantics - Added story documentation in
docs/st09044-mock-tool-factory-contracts.mdcapturing the contract tightening, review follow-ups, validation evidence, and explicit-anydelta
Changed
@agentforge/testing - Mock Tool Factory Contract Hardening
- Tightened
packages/testing/src/mocks/mock-tool.tsso schema-driven mock-tool helpers infer input types safely without relying on broadany - Preserved mock tool defaults, echo/error/delayed helper behavior, and custom implementation support while routing delayed/error semantics consistently through the helper prelude
Fixed
@agentforge/testing - Mock Helper Type and Metadata Safety
- Removed the remaining explicit-
anyseams frompackages/testing/src/mocks/mock-tool.ts, reducing the touched file from3explicitanyuses to0 - Corrected built-in helper default names to valid kebab-case and lowered the
testingexplicit-anybaseline from3/51to0/51, with the workspace baseline improving from94/289to91/289
Published
- All packages published to npm registry at version 0.16.31:
- @agentforge/core@0.16.31
- @agentforge/skills@0.16.31
- @agentforge/patterns@0.16.31
- @agentforge/tools@0.16.31
- @agentforge/testing@0.16.31
- @agentforge/cli@0.16.31
[0.16.30] - 2026-05-15
Added
@agentforge/core - Error Reporter Contract Regression Coverage
- Added a source-included typecheck regression fixture in
packages/core/src/langgraph/observability/errors.contracts.typecheck.tscovering unknown-firststate, JSON-safemetadata, and typed serialized error payload access - Kept focused runtime coverage in
packages/core/tests/langgraph/observability/errors.test.tsvalidating serialized payloads, optional state inclusion, wrapped-node propagation, async error paths, and manual reporting - Added story documentation in
docs/st09043-error-reporter-context-contracts.mdcapturing the contract tightening, review follow-ups, validation evidence, and explicit-anydelta
Changed
@agentforge/core - Error Reporter Context Hardening
- Tightened
packages/core/src/langgraph/observability/errors.tsso error reporter state, metadata, andtoJSON()payload contracts use unknown-first and JSON-safe aliases instead of broadany - Preserved
AgentError,createErrorReporter(...), wrapped-node reporting, optional state inclusion, and fallback reporting behavior while keeping serialized optional keys present for runtime compatibility
Fixed
@agentforge/core - Error Payload Type Safety
- Removed the remaining broad explicit-
anyseams frompackages/core/src/langgraph/observability/errors.ts, reducing the touched file from5explicitanyuses to0 - Lowered the
coreexplicit-anybaseline from28/119to23/119and the workspace baseline from99/289to94/289without expanding scope beyond the shared observability error boundary
[0.16.29] - 2026-05-13
Added
@agentforge/core - SSE Formatter Contract Regression Coverage
- Added focused typed runtime coverage in
packages/core/src/streaming/__tests__/sse.test.tsfor explicit event-mapper payload typing, default JSON serialization, retry prelude emission, and multi-line SSE formatting - Added a standalone typecheck regression fixture in
packages/core/tests/streaming/sse.typecheck.tscovering unknown-first mapper input and rejection of direct property access without an explicit payload type - Added story documentation in
docs/st09042-sse-formatter-generic-contracts.mdcapturing the contract tightening, validation evidence, and explicit-anydelta
Changed
@agentforge/core - SSE Formatter Generic Hardening
- Tightened
packages/core/src/streaming/types.tsandpackages/core/src/streaming/sse.tssoSSEFormatterOptions,SSEFormatter, andcreateSSEFormatter(...)use unknown-first generic defaults instead of broadany - Preserved default JSON fallback, mapper-driven event formatting, retry prelude behavior, heartbeat timing, and event ID sequencing while making untyped mapper inputs require narrowing or explicit payload annotation
Fixed
@agentforge/core - SSE Formatter Type Safety
- Removed the remaining broad explicit-
anyseams from the shared SSE formatter source files, reducing touched SSE explicit-anyusage from3to0 - Lowered the
coreexplicit-anybaseline from33/119to28/119and the workspace baseline from104/289to99/289without changing SSE runtime semantics
Published
- All packages published to npm registry at version 0.16.29:
- @agentforge/core@0.16.29
- @agentforge/skills@0.16.29
- @agentforge/patterns@0.16.29
- @agentforge/tools@0.16.29
- @agentforge/testing@0.16.29
- @agentforge/cli@0.16.29
[0.16.28] - 2026-05-12
Added
@agentforge/testing - Structured Logger Regression Coverage
- Added focused regression coverage in
packages/testing/tests/runners/conversation-simulator.test.tsfor verbose-enabled structured logger routing, verbose-disabled silence, and preserved user/AI turn output - Added story documentation in
docs/st09041-conversation-simulator-structured-logger.mdcovering the logger verification approach, validation evidence, and explicit-anydelta
Changed
@agentforge/testing - Conversation Simulator Verbose Logging
- Replaced the verbose
console.logpath inpackages/testing/src/runners/conversation-simulator.tswith the shared structured logger from@agentforge/core - Added optional logger injection to
ConversationSimulatorConfigso verbose output can be verified directly without coupling tests to global stdout - Preserved existing verbose turn text by continuing to emit the same
User: ...andAI: ...strings through the structured logger path
Fixed
@agentforge/testing - Logger Naming and Observability Consistency
- Aligned the
ConversationSimulatorlogger name with the repo convention asagentforge:testing:runners:conversation-simulator - Kept the
testingexplicit-anybaseline stable at3/51and the workspace baseline stable at104/289while moving the verbose path onto the structured logging surface
Published
- All packages published to npm registry at version 0.16.28:
- @agentforge/core@0.16.28
- @agentforge/skills@0.16.28
- @agentforge/patterns@0.16.28
- @agentforge/tools@0.16.28
- @agentforge/testing@0.16.28
- @agentforge/cli@0.16.28
[0.16.27] - 2026-05-09
Added
@agentforge/core - Human-in-Loop Resume Contract Coverage
- Added focused runtime coverage in
packages/core/tests/streaming/human-in-loop.test.tsfor primitive and object resume payload serialization plus stableresume-<interruptId>event IDs - Added a standalone typecheck regression fixture in
packages/core/tests/streaming/human-in-loop.typecheck.tscovering JSON-safe resume payload acceptance and rejection of non-serializable values - Added story documentation in
docs/st09040-human-in-loop-streaming-resume-contracts.mdcapturing the contract tightening, validation evidence, and explicit-anydelta
Changed
@agentforge/core - Human-in-Loop Resume Boundary Hardening
- Tightened
packages/core/src/streaming/human-in-loop.tssoResumeEventDataandformatResumeEvent(...)use the shared JSON-safeInterruptPayloadcontract instead of broadany - Kept resume SSE event names, payload structure, and
resume-<interruptId>ID formatting aligned with existing human-in-loop streaming behavior while matching the interrupt resume command/options boundary already used in LangGraph helpers
Fixed
@agentforge/core - Resume Payload Type Safety
- Removed the remaining broad resume payload
anyseams from the human-in-loop streaming helper file, reducingpackages/core/src/streaming/human-in-loop.tsfrom2explicitanyuses to0 - Lowered the
coreexplicit-anybaseline from35/119to33/119and the workspace baseline from106/289to104/289without expanding scope beyond the shared resume-event helper contract
Published
- All packages published to npm registry at version 0.16.27:
- @agentforge/core@0.16.27
- @agentforge/skills@0.16.27
- @agentforge/patterns@0.16.27
- @agentforge/tools@0.16.27
- @agentforge/testing@0.16.27
- @agentforge/cli@0.16.27
[0.16.26] - 2026-05-08
Added
@agentforge/core - Mock Tool Contract Regression Coverage
- Added focused runtime coverage in
packages/core/tests/tools/testing.test.tsfor predicate response matching, configured error recording, missing-tool failures, and invocation clearing in the mock-tool helpers - Added a standalone typecheck regression fixture in
packages/core/tests/tools/testing.typecheck.tscovering genericcreateMockTool(...)usage plus named-tool simulator input/output inference - Added story documentation in
docs/st09039-core-mock-tool-testing-contracts.mdcapturing the contract hardening, validation evidence, and explicit-anydelta
Changed
@agentforge/core - Mock Tool and Simulator Contract Hardening
- Tightened
packages/core/src/tools/testing.tsso mock-tool responses, default responses, invocation records, and simulator execution boundaries use generic and unknown-first helper types instead of broadany - Preserved existing runtime behavior for exact-match responses, predicate matching, default fallback, latency simulation, random errors, invocation timing, and missing-tool errors while making named simulator execution type-safe
Fixed
@agentforge/core - Mock Tool Type Safety
- Removed the remaining broad explicit-
anyseams from the core mock-tool testing helper file, reducingpackages/core/src/tools/testing.tsfrom8explicitanyuses to0 - Lowered the
coreexplicit-anybaseline from44/119to35/119and the workspace baseline from115/289to106/289without widening runtime scope beyond the testing helper contracts
Published
- All packages published to npm registry at version 0.16.26:
- @agentforge/core@0.16.26
- @agentforge/skills@0.16.26
- @agentforge/patterns@0.16.26
- @agentforge/tools@0.16.26
- @agentforge/testing@0.16.26
- @agentforge/cli@0.16.26
[0.16.25] - 2026-05-07
Added
@agentforge/tools - Transformer Helper Regression Coverage
- Added focused regression coverage in
packages/tools/tests/data/transformer/transformer-helpers.test.tsfor shared nested lookup behavior across nested objects, callable values, primitive boxing, and special-key projection hardening - Added story documentation in
docs/st09038-transformer-object-path-helpers.mdcovering helper extraction, review-driven behavior fixes, validation evidence, and explicit-anydelta tracking
Changed
@agentforge/tools - Shared Transformer Helper Extraction
- Extracted shared helper functions into
packages/tools/src/data/transformer/tools/shared.tsfor nested path lookup plus object pick/omit behavior used byarray-filter,array-sort,object-pick, andobject-omit - Preserved existing filter and sort behavior across nested objects, callable intermediates, and primitive property boxing while replacing duplicated local helper logic
Fixed
@agentforge/tools - Transformer Helper Runtime and Type Safety
- Restored prior nested lookup semantics for callable intermediates and primitive property access after review surfaced behavior regressions from the first helper extraction pass
- Hardened
pickObjectProperties(...)so projecting special keys such as__proto__creates an own data property instead of mutating the returned object's prototype - Replaced direct relational comparison on
unknownvalues with a shared comparator helper, keeping@agentforge/toolsstrict typecheck green and lowering touched transformer helper/tool explicit-anyusage from6to0
Published
- All packages published to npm registry at version 0.16.25:
- @agentforge/core@0.16.25
- @agentforge/skills@0.16.25
- @agentforge/patterns@0.16.25
- @agentforge/tools@0.16.25
- @agentforge/testing@0.16.25
- @agentforge/cli@0.16.25
[0.16.24] - 2026-05-06
Added
@agentforge/patterns - ReAct Boundary Contract Coverage
- Added source-included typecheck regression coverage in
packages/patterns/tests/react/contracts.typecheck.tsfor builder tool-array assignability, prompt schema boundaries, checkpointer contracts, and compiled graph typing - Added focused runtime coverage in
packages/patterns/tests/react/prompts.test.tsfor prompt formatting helpers alongside expanded ReAct builder and integration validation - Added story documentation in
docs/st09037-react-builder-prompt-boundary-contracts.mdcovering the contract hardening, review follow-ups, validation record, and explicit-anydelta
Changed
@agentforge/patterns - ReAct Builder and Prompt Contract Hardening
- Tightened ReAct tool source, checkpointer, prompt descriptor, and compiled graph contracts around exported ReAct-scoped aliases and unknown-first typing
- Preserved existing ReAct builder usage including registry tools, array-provided tools, deprecated
withLLM(...), stop-condition routing, nested-graphcheckpointer: true, and prompt formatting behavior - Clarified array-tool compatibility with a compile-time-only type adaptation that keeps runtime tool identity intact
Fixed
@agentforge/patterns - ReAct Type Safety and Array Tool Compatibility
- Replaced broad ReAct boundary
anyseams intypes.ts,builder.ts,agent.ts, andprompts.tswithout introducing the array-tool regressions caught in review - Preserved assignability for heterogeneous
toolBuilder()tools passed as arrays while avoiding runtime wrappers that would alter tool identity or prototype behavior - Lowered the workspace explicit-
anybaseline from133to121and thepatternspackage baseline from15to3
Published
- All packages published to npm registry at version 0.16.24:
- @agentforge/core@0.16.24
- @agentforge/skills@0.16.24
- @agentforge/patterns@0.16.24
- @agentforge/tools@0.16.24
- @agentforge/testing@0.16.24
- @agentforge/cli@0.16.24
[0.16.23] - 2026-05-05
Added
@agentforge/testing - Conversation Simulator Contract Coverage
- Added source-included typecheck regression coverage in
packages/testing/src/runners/conversation-simulator.typecheck.tsfor typed state-generic usage ofcreateConversationSimulator(...) - Added focused runtime coverage in
packages/testing/tests/runners/conversation-simulator.test.tsfor static simulation, dynamic input generation, explicit max-turn stopping, configured stop conditions, and malformed invoke-result handling - Added story documentation in
docs/st09036-conversation-simulator-agent-contracts.mdcovering the contract tightening, validation record, and explicit-anydelta
Changed
@agentforge/testing - Conversation Simulator Contract Hardening
- Tightened
ConversationSimulatorandcreateConversationSimulator(...)to use the shared genericAgentTestAgent<ConversationSimulatorInput, TState>contract instead of broadagent: any - Reused the agent test runner's unknown-first
extractMessages(...)helper to normalize invoke-result message extraction - Preserved multi-turn flow, verbose turn logging, stop-condition routing, max-turn behavior, and captured error behavior while making downstream simulator typing safer
Fixed
@agentforge/testing - Conversation Simulator Type Safety
- Replaced broad conversation simulator agent and invoke-result
anyseams with unknown-first and generic runner contracts - Hardened malformed invoke-result handling so missing or invalid
messagespayloads surface through the existing captured simulator error path - Lowered the workspace explicit-
anybaseline from135to133and thetestingpackage baseline from5to3
Published
- All packages published to npm registry at version 0.16.23:
- @agentforge/core@0.16.23
- @agentforge/skills@0.16.23
- @agentforge/patterns@0.16.23
- @agentforge/tools@0.16.23
- @agentforge/testing@0.16.23
- @agentforge/cli@0.16.23
[0.16.22] - 2026-05-04
Added
@agentforge/testing - Agent Test Runner Contract Coverage
- Added source-included typecheck regression coverage for typed agent input, final state, validation hook, result, and step contracts in
packages/testing/src/runners/agent-test-runner.typecheck.ts - Added focused runtime coverage in
packages/testing/tests/runners/agent-test-runner.test.tsfor successful runs, timeout failures, timeout cleanup, explicit zero-timeout behavior, malformed message fallback, validation failures, andrunMany(...) - Added story documentation in
docs/st09035-agent-test-runner-state-contracts.mdcovering the runner contract changes, behavior preservation, review fixes, explicit-anydelta, and validation record
Changed
@agentforge/testing - Agent Test Runner Contract Hardening
- Added exported
AgentTestAgent<TInput, TState>andAgentTestRunnerStep<TState>contracts for downstream runner integrations - Made
AgentTestConfig,AgentTestResult,AgentTestRunner, andcreateAgentTestRunner(...)generic over agent input, final state, and step contracts - Replaced broad runner
anyseams with unknown-first generic defaults while preserving existing invocation, validation, step-capture, timeout, and multi-input behavior
Fixed
@agentforge/testing - Agent Test Runner Edge Cases
- Cleared timeout handles after runner execution settles so successful runs do not leave pending timers behind
- Guarded malformed
messagesfields in final state and safely falls back to an empty message list - Honored explicit
timeout: 0instead of treating it as an unset timeout - Clarified validation-hook documentation so it reflects that validation runs only after invocation completes
- Lowered the workspace explicit-
anybaseline from144to135and thetestingpackage baseline from14to5
Published
- All packages published to npm registry at version 0.16.22:
- @agentforge/core@0.16.22
- @agentforge/skills@0.16.22
- @agentforge/patterns@0.16.22
- @agentforge/tools@0.16.22
- @agentforge/testing@0.16.22
- @agentforge/cli@0.16.22
[0.16.21] - 2026-05-03
Added
@agentforge/core - Database Pool Adapter Contract Coverage
- Added focused runtime coverage in
packages/core/tests/resources/database-pool.test.tsfor typed readonly query parameter delegation, execute failure release behavior, and health-check validation through the database pool query contract - Added story documentation in
docs/st09033-database-pool-adapter-contracts.mdcovering the database pool adapter contract changes, behavior preservation, explicit-anydelta, and validation record
Changed
@agentforge/core - Database Pool Adapter Contract Hardening
- Added exported
DatabaseQueryParamsandDatabaseQueryResultaliases for downstream database adapter implementations - Tightened
DatabaseConnectionandDatabasePoolquery/execute parameter and result defaults around unknown-first readonly boundaries while preserving the existing pool acquire, release, query, execute, and health-check runtime behavior
Fixed
@agentforge/core - Database Adapter Type Safety
- Replaced broad database pool adapter
anyboundaries with explicit unknown-first contracts - Lowered the workspace explicit-
anybaseline from153to144and thecorepackage baseline from53to44
Published
- All packages published to npm registry at version 0.16.21:
- @agentforge/core@0.16.21
- @agentforge/skills@0.16.21
- @agentforge/patterns@0.16.21
- @agentforge/tools@0.16.21
- @agentforge/testing@0.16.21
- @agentforge/cli@0.16.21
[0.16.20] - 2026-04-25
Added
@agentforge/testing - Snapshot Runner Contract Coverage
- Added focused runtime coverage in
packages/testing/tests/runners/snapshot-testing.test.tsfor snapshot normalization, include/exclude filtering, custom normalizer ordering, state comparison, state diffs, root-level diffs, prototype-sensitive keys, non-plain object roots, and LangChain message snapshots - Added story documentation in
docs/st09034-snapshot-testing-runner-contracts.mdcovering the snapshot runner contract changes, compatibility notes, explicit-anydelta, and validation record
Changed
@agentforge/testing - Snapshot Runner Contract Hardening
- Tightened snapshot runner APIs around unknown-first state inputs, typed snapshot objects and diffs, and normalized message snapshot output
- Added exported snapshot runner contracts:
SnapshotObject,SnapshotDiff,MessageSnapshot, andROOT_SNAPSHOT_DIFF_KEY - Widened
MessageSnapshot.contenttounknownso the exported type matches normalized snapshot output after filters and custom normalizers - Preserved non-plain object roots such as
Date,Map, andRegExpinstead of rebuilding them from enumerable entries; root diffs now use the explicit$rootdiff key
Fixed
@agentforge/testing - Snapshot Diff and Normalization Safety
- Removed object coercion paths that could hide primitive, array,
null, orundefinedroot changes in state diffs - Applied custom normalizers before built-in timestamp, UUID, recursive, and field-filter normalization instead of bypassing built-in normalization
- Applied configured snapshot normalization to LangChain message content while preserving the
{ type, content }message snapshot shape - Hardened normalized snapshot objects and diff containers with null-prototype containers so prototype-sensitive keys remain data
- Replaced JSON-stringified snapshot equality with deep equality to avoid key-order false negatives and
bigintstringify failures - Lowered the workspace explicit-
anybaseline from170to153and thetestingpackage baseline from31to14
Published
- All packages published to npm registry at version 0.16.20:
- @agentforge/core@0.16.20
- @agentforge/skills@0.16.20
- @agentforge/patterns@0.16.20
- @agentforge/tools@0.16.20
- @agentforge/testing@0.16.20
- @agentforge/cli@0.16.20
[0.16.19] - 2026-04-24
Added
@agentforge/core - Managed Tool Lifecycle Coverage
- Added focused runtime coverage in
packages/core/tests/tools/lifecycle.test.tsfor managed-tool initialization, execution stats, default and periodic health checks, cleanup, process-exit cleanup registration, LangChain-style invocation, and lifecycle race handling - Added source-included type regressions in
packages/core/src/tools/lifecycle.typecheck.tsfor typed context access, execute input/output inference, JSON-safe health metadata, and unknown-first lifecycle defaults - Added story documentation in
docs/st09032-managed-tool-lifecycle-contracts.mdcovering the lifecycle contract changes, compatibility notes, explicit-anysnapshot, and validation record
Changed
@agentforge/core - Managed Tool Lifecycle Contract Hardening
- Tightened
ManagedToollifecycle generics from broadanydefaults to safer unknown-first defaults while preserving the publicManagedToolConfiginterface - Aligned health-check metadata with the shared JSON-safe payload contract and exposed managed-tool context as optionally present to match runtime behavior
- Tightened the LangChain interop return type without changing the
toLangChainTool()runtime shape
Fixed
@agentforge/core - Managed Tool Lifecycle Concurrency
- Made
initialize()andcleanup()single-flight so concurrent callers share one setup or teardown pass - Coordinated initialize/cleanup ordering so cleanup waits for in-flight initialization and initialization waits for in-flight cleanup
- Prevented stale manual and periodic health-check results from updating stats after cleanup/reinitialize lifecycle boundaries
- Prevented overlapping periodic health checks and restored process
beforeExitauto-cleanup registration across manual cleanup/reinitialize reuse cycles - Preserved the workspace explicit-
anybaseline at180and thecorepackage baseline at63
Published
- All packages published to npm registry at version 0.16.19:
- @agentforge/core@0.16.19
- @agentforge/skills@0.16.19
- @agentforge/patterns@0.16.19
- @agentforge/tools@0.16.19
- @agentforge/testing@0.16.19
- @agentforge/cli@0.16.19
[0.16.18] - 2026-04-23
Added
@agentforge/core - Registry Mutation Helper Coverage
- Added focused helper coverage in
packages/core/tests/tools/registry-mutations.test.tsfor registration conflicts, update invariants, removals, clear behavior, and bulk-registration edge cases - Added story documentation in
docs/st09031-tool-registry-registration-mutation-extraction.mdcovering the extraction, compatibility notes, explicit-anysnapshot, and validation record
Changed
@agentforge/core - Tool Registry Registration and Mutation Extraction
- Extracted register, remove, update, bulk-register, and clear mutation logic from
packages/core/src/tools/registry.tsintopackages/core/src/tools/registry-mutations.ts - Kept
ToolRegistryas the stable public facade while preserving public mutation semantics and emitted event payloads
Fixed
@agentforge/core - Registry Review Follow-Ups
- Cached the registry mutation emitter and mutation event mapping instead of re-allocating them on every mutation call
- Preserved the original repeated-name duplicate error output for bulk registration and cleaned up the affected JSDoc and validation-note wording
- Preserved the workspace explicit-
anybaseline at180and thecorepackage baseline at63
Published
- All packages published to npm registry at version 0.16.18:
- @agentforge/core@0.16.18
- @agentforge/skills@0.16.18
- @agentforge/patterns@0.16.18
- @agentforge/tools@0.16.18
- @agentforge/testing@0.16.18
- @agentforge/cli@0.16.18
[0.16.17] - 2026-04-22
Added
@agentforge/tools - Connection Manager Query/Session Extraction Coverage
- Added focused helper coverage in
packages/tools/tests/data/relational/connection/query-session-extraction.test.tsfor MySQL tuple unwrapping, SQLite non-query normalization, and dedicated PostgreSQL/MySQL session release behavior - Added story documentation in
docs/st09030-connection-manager-query-session-extraction.mdcovering the extraction, compatibility notes, explicit-anysnapshot, and validation record
Changed
@agentforge/tools - Connection Manager Query Execution and Session Adapter Extraction
- Extracted vendor-aware SQL execution from
packages/tools/src/data/relational/connection/connection-manager.tsintopackages/tools/src/data/relational/connection/query-execution.ts - Extracted dedicated PostgreSQL/MySQL session handling and direct SQLite session reuse into
packages/tools/src/data/relational/connection/session-adapters.ts - Kept
ConnectionManageras the stable public façade forexecute(...)andexecuteInConnection(...)
Fixed
@agentforge/tools - Session Adapter Review Follow-Ups
- Removed the temporary
never-cast escape hatches at the Drizzle adapter boundary and replaced them with type-only PostgreSQL and mysql2 pool-connection contracts - Preserved the workspace explicit-
anybaseline at180and thetoolspackage baseline at65
Published
- All packages published to npm registry at version 0.16.17:
- @agentforge/core@0.16.17
- @agentforge/skills@0.16.17
- @agentforge/patterns@0.16.17
- @agentforge/tools@0.16.17
- @agentforge/testing@0.16.17
- @agentforge/cli@0.16.17
[0.16.16] - 2026-04-21
Added
@agentforge/patterns - Plan-Execute Node Modularization Coverage
- Added focused node-level coverage in
packages/patterns/tests/plan-execute/nodes.test.tsfor finisher aggregation, invalid replanner JSON handling, structured and array-based model-content normalization, prompt formatting, undefined serialization semantics, and executor GraphInterrupt propagation - Added story documentation in
docs/st09029-plan-execute-node-modularization.mdcovering the module split, compatibility notes, review follow-ups, and validation record
Changed
@agentforge/patterns - Plan-Execute Node Modularization
- Split
packages/patterns/src/plan-execute/nodes.tsinto focused internal modules for planner, executor, replanner, finisher, logger setup, and serialization helpers - Kept
nodes.tsas the stable public facade while preserving the existing plan-execute entrypoint and core control flow
Fixed
@agentforge/patterns - Plan-Execute Review Follow-Ups
- Hardened planner and replanner parsing for structured and array-based LangChain message content, preserved finisher response compatibility for JSON-native and undefined-like results, documented the intentional empty-dependency prompt cleanup, and ensured executor
GraphInterruptvalues propagate instead of being downgraded to failed node state - Preserved the workspace explicit-
anybaseline at180and thepatternspackage baseline at15
Published
- All packages published to npm registry at version 0.16.16:
- @agentforge/core@0.16.16
- @agentforge/skills@0.16.16
- @agentforge/patterns@0.16.16
- @agentforge/tools@0.16.16
- @agentforge/testing@0.16.16
- @agentforge/cli@0.16.16
[0.16.15] - 2026-04-17
Added
@agentforge/tools - Connection Lifecycle Regression Coverage
- Added focused lifecycle regressions in
packages/tools/tests/data/relational/connection/connection-manager.test.tsfor disconnect-during-initialize cancellation and canceling a pending reconnection timer during close - Added story documentation in
docs/st09028-connection-manager-lifecycle-modularization.mdcovering the lifecycle extraction, compatibility notes, review fixes, and validation record
Changed
@agentforge/tools - Connection Manager Lifecycle Modularization
- Extracted connection lifecycle and reconnection orchestration from
packages/tools/src/data/relational/connection/connection-manager.tsinto the internal helper modulepackages/tools/src/data/relational/connection/lifecycle.ts - Kept
ConnectionManageras the stable public lifecycle entrypoint while preserving connect, initialize, disconnect, close, dispose, and reconnection behavior
Fixed
@agentforge/tools - Lifecycle Helper Contract and Review Follow-Ups
- Restored public
ReconnectionConfigfield documentation, tightened lifecycle logger metadata to the coreJsonValuecontract, trimmed unused scheduled-reconnection context fields, and fixed stale reconnection-attempt capture inside the timeout closure - Clarified the helper naming boundary in
connection-manager.tsso the privatescheduleReconnection()wrapper no longer reads like accidental recursion, while preserving the workspace explicit-anybaseline at180and thetoolspackage baseline at65
Published
- All packages published to npm registry at version 0.16.15:
- @agentforge/core@0.16.15
- @agentforge/skills@0.16.15
- @agentforge/patterns@0.16.15
- @agentforge/tools@0.16.15
- @agentforge/testing@0.16.15
- @agentforge/cli@0.16.15
[0.16.14] - 2026-04-16
Added
@agentforge/tools - Vendor Initialization Regression Coverage
- Added focused helper coverage in
packages/tools/tests/data/relational/connection/vendor-initialization.test.tsfor PostgreSQL/MySQL pool-config mapping, SQLite foreign-key enablement, shared pool validation, dispatcher routing, and unsupported-vendor rejection - Added story documentation in
docs/st09027-connection-manager-vendor-initialization-extraction.mdcovering the extraction, compatibility notes, warning delta, and validation record
Changed
@agentforge/tools - Connection Manager Vendor Initialization Extraction
- Extracted PostgreSQL, MySQL, and SQLite initialization plus pool-configuration normalization from
packages/tools/src/data/relational/connection/connection-manager.tsinto the internal helper modulepackages/tools/src/data/relational/connection/vendor-initialization.ts - Kept
ConnectionManageras the stable public lifecycle entrypoint while preserving connect, initialize, disconnect, close, health-check, and reconnection behavior
Fixed
@agentforge/tools - Vendor Initialization Logging and Type Pairing
- Gave the internal vendor-initialization helper its own logger namespace for clearer attribution and tightened the exported initialization helpers around vendor-specific connection types plus a discriminated
ConnectionConfigdispatcher - Reduced the workspace explicit-
anybaseline from182to180, improving thetoolspackage baseline from67to65
Published
- All packages published to npm registry at version 0.16.14:
- @agentforge/core@0.16.14
- @agentforge/skills@0.16.14
- @agentforge/patterns@0.16.14
- @agentforge/tools@0.16.14
- @agentforge/testing@0.16.14
- @agentforge/cli@0.16.14
[0.16.13] - 2026-04-09
Added
@agentforge/core - Tool Registry Prompt/Event Coverage
- Added focused helper coverage in
packages/core/tests/tools/registry-events.test.tsfor handler registration, removal, and safe event emission when listeners throw - Added focused helper coverage in
packages/core/tests/tools/registry-prompt.test.tsfor grouped prompt output, minimal supplementary content rendering, and LangChain conversion behavior - Added story documentation in
docs/st09026-tool-registry-prompt-event-modularization.mdcovering the extraction, compatibility notes, warning delta, and validation record
Changed
@agentforge/core - Tool Registry Prompt and Event Modularization
- Extracted prompt generation, relation formatting, LangChain conversion, and registry event registration/emission from
packages/core/src/tools/registry.tsinto the internal helper modulespackages/core/src/tools/registry-prompt.tsandpackages/core/src/tools/registry-events.ts - Kept
ToolRegistryas the stable public facade while preserving grouped and minimal prompt generation, safe event dispatch, andtoLangChainTools()behavior
Fixed
@agentforge/core - Registry Prompt Category Filtering
- Aligned the category filter in
generateRegistryPrompt(...)with the active working tool set so future transforms cannot be bypassed by filtering against the original array - Preserved the workspace explicit-
anybaseline at182and thecorepackage baseline at63while improving internal separation of registry responsibilities
Published
- All packages published to npm registry at version 0.16.13:
- @agentforge/core@0.16.13
- @agentforge/skills@0.16.13
- @agentforge/patterns@0.16.13
- @agentforge/tools@0.16.13
- @agentforge/testing@0.16.13
- @agentforge/cli@0.16.13
[0.16.12] - 2026-04-08
Added
@agentforge/core - Tool Registry Collection/Search Coverage
- Added focused helper coverage in
packages/core/tests/tools/registry-collection.test.tsfor ordered tool listing, category/tag filtering, and case-insensitive search behavior - Added story documentation in
docs/st09025-tool-registry-collection-search-extraction.mdcovering the extraction, compatibility notes, warning delta, and validation record
Changed
@agentforge/core - Tool Registry Collection and Search Extraction
- Extracted ordered listing, category filtering, tag filtering, tool-name listing, and case-insensitive text search from
packages/core/src/tools/registry.tsinto the internal helper modulepackages/core/src/tools/registry-collection.ts - Kept
ToolRegistryas the stable public entrypoint while preserving the existinggetAll,getByCategory,getByTag,search, andgetNamesbehavior
Fixed
@agentforge/core - Public Registry Declaration Boundary
- Kept the internal
registry-collectionhelper type out of the publicToolRegistrydeclaration surface so emitted.d.tsfiles do not expose the internal helper module path - Preserved the workspace explicit-
anybaseline at182and thecorepackage baseline at63while improving maintainability of the registry lookup/search path
Published
- All packages published to npm registry at version 0.16.12:
- @agentforge/core@0.16.12
- @agentforge/skills@0.16.12
- @agentforge/patterns@0.16.12
- @agentforge/tools@0.16.12
- @agentforge/testing@0.16.12
- @agentforge/cli@0.16.12
[0.16.11] - 2026-04-07
Added
@agentforge/core - LangGraph Interrupt Regression Coverage
- Added focused interrupt utility coverage in
packages/core/tests/langgraph/interrupts/utils.test.tsfor JSON-safe primitive and array custom interrupt payloads while preserving the existing human-request and approval helper behavior - Added source-included type regression coverage in
packages/core/src/langgraph/interrupts/contracts.typecheck.tsfor approval interrupts, generic custom interrupts, and resume command/options payload typing - Added story documentation in
docs/st09024-langgraph-interrupt-type-contracts.mdcovering the interrupt contract changes, warning delta, and validation record
Changed
@agentforge/core - LangGraph Interrupt Type Contracts
- Tightened
packages/core/src/langgraph/interrupts/types.tsaround generic interrupt contracts, JSON-safe custom payloads, JSON-object metadata, and safer resume value typing - Preserved the current human-request, approval-required, custom interrupt, and resume-command runtime flows while making the public type boundaries more precise
Fixed
@agentforge/core - Interrupt Payload and Resume Boundaries
- Replaced broad interrupt
data,metadata, and resumevalue/resumeanyseams with domain-specific and JSON-safe contracts, reducing the workspace explicit-anybaseline from195to182 - Improved the
corepackage explicit-anybaseline from76to63without changing the existing interrupt helper outputs or human-in-the-loop streaming consumers
Published
- All packages published to npm registry at version 0.16.11:
- @agentforge/core@0.16.11
- @agentforge/skills@0.16.11
- @agentforge/patterns@0.16.11
- @agentforge/tools@0.16.11
- @agentforge/testing@0.16.11
- @agentforge/cli@0.16.11
[0.16.10] - 2026-04-07
Added
@agentforge/core - Tool Builder Regression Coverage
- Added focused tool-builder runtime coverage in
packages/core/tests/tools/builder.test.tsfor branched metadata isolation, nested example payload isolation, non-cloneable example failures, andthis-binding compatibility - Added source-included type regression coverage in
packages/core/src/tools/builder.typecheck.tsfor schema-first, invoke-first, and safe-builder chaining - Added story documentation in
docs/st09023-tool-builder-fluent-typing.mdcovering the fluent builder changes, warning delta, and review-fix history
Changed
@agentforge/core - Tool Builder Fluent Typing
- Tightened
packages/core/src/tools/builder.tsby replacing the type-changing schema and implementation stage(this as any)seams with typed builder-copy transitions - Preserved schema-first, invoke-first, and
implementSafe(...)builder ergonomics while keeping built-tool validation behavior aligned withcreateTool(...)
Fixed
@agentforge/core - Tool Builder Metadata and Invoke Compatibility
- Isolated branched builder metadata by cloning tags, examples, limitations, and relations during typed builder transitions, with nested example payloads now deep-cloned
- Preserved historical
thisbinding compatibility for non-arrow implementations throughimplement(),implementSafe(), andbuild(), and wrapped non-cloneable example payload failures with a clear builder-specificTypeError - Reduced the workspace explicit-
anybaseline from201to195, improving thecorepackage from82to76
Published
- All packages published to npm registry at version 0.16.10:
- @agentforge/core@0.16.10
- @agentforge/skills@0.16.10
- @agentforge/patterns@0.16.10
- @agentforge/tools@0.16.10
- @agentforge/testing@0.16.10
- @agentforge/cli@0.16.10
[0.16.9] - 2026-04-03
Added
@agentforge/patterns - Shared Deduplication Regression Coverage
- Added focused shared-deduplication coverage in
packages/patterns/tests/shared/deduplication.test.tsfor the__proto__special-key path while retaining cache-key normalization and metrics coverage - Added story documentation in
docs/st09022-shared-deduplication-contracts.mdcovering the unknown-first deduplication boundary changes, warning delta, and validation record
Changed
@agentforge/patterns - Shared Deduplication Utility Contracts
- Tightened
packages/patterns/src/shared/deduplication.tsby replacing broad normalization and cache-keyanyseams with unknown-first contracts and explicit plain-object detection - Preserved current deduplication metrics, cache-key generation, and logging behavior across the shared helper’s ReAct and Plan-Execute consumers
Fixed
@agentforge/patterns - Deduplication Cache-Key Hardening
- Normalized sorted plain objects onto null-prototype maps so special keys such as
__proto__are handled as data instead of mutating the intermediate normalized object shape - Reduced the workspace explicit-
anybaseline from205to201, improving thepatternspackage from19to15
Published
- All packages published to npm registry at version 0.16.9:
- @agentforge/core@0.16.9
- @agentforge/skills@0.16.9
- @agentforge/patterns@0.16.9
- @agentforge/tools@0.16.9
- @agentforge/testing@0.16.9
- @agentforge/cli@0.16.9
[0.16.8] - 2026-04-03
Added
@agentforge/core - Streaming WebSocket Regression Coverage
- Added focused streaming WebSocket coverage in
packages/core/src/streaming/__tests__/websocket.test.tsfor raw non-string payload passthrough, normalized thrown errors, heartbeat capability handling, and close/broadcast behavior - Added story documentation in
docs/st09021-streaming-websocket-contracts.mdcovering the structural socket contract changes, warning delta, and review-fix history
Changed
@agentforge/core - Streaming WebSocket Contracts
- Tightened
packages/core/src/streaming/websocket.tsandpackages/core/src/streaming/types.tsby replacing broad socket, message, and close-reasonanyseams with structural and generic contracts - Preserved existing string JSON parsing behavior while forwarding non-string payloads unchanged and keeping the public streaming entrypoint aligned with the new WebSocket types
Fixed
@agentforge/core - WebSocket Runtime Boundary Hardening
- Normalized unknown thrown values before forwarding them to
onError(...), widened raw payload typing for fragmented binary frames, and made heartbeat incompatibility report viaonError(...)with early close/return semantics instead of throwing - Reduced the workspace explicit-
anybaseline from219to205, improving thecorepackage from96to82
Published
- All packages published to npm registry at version 0.16.8:
- @agentforge/core@0.16.8
- @agentforge/skills@0.16.8
- @agentforge/patterns@0.16.8
- @agentforge/tools@0.16.8
- @agentforge/testing@0.16.8
- @agentforge/cli@0.16.8
[0.16.7] - 2026-04-02
Added
@agentforge/core - Prompt Loader Regression Coverage
- Added focused prompt-loader coverage in
packages/core/tests/prompt-loader/index.test.tsfor malformed option fallback, prompt-file rendering, prototype-pollution resistance, and own-enumerable plain-object compatibility - Added story documentation in
docs/st09020-prompt-loader-variable-contracts.mdcovering the prompt-loader contract changes, warning delta, and review-fix history
Changed
@agentforge/core - Prompt Loader Variable Contracts
- Tightened
packages/core/src/prompt-loader/index.tsby replacing broad variable-mapanyseams with unknown-firstPromptVariableMapnormalization helpers - Preserved trusted-vs-untrusted rendering behavior while keeping backwards-compatible plain-object call sites for
renderTemplate(...)andloadPrompt(...)
Fixed
@agentforge/core - Prompt Variable Map Hardening
- Normalized trusted and untrusted variable maps onto null-prototype objects, switched prompt option detection to own-property checks, and documented that backwards-compatible plain variable objects are read through own enumerable properties only
- Reduced the workspace explicit-
anybaseline from229to219, improving thecorepackage from106to96
Published
- All packages published to npm registry at version 0.16.7:
- @agentforge/core@0.16.7
- @agentforge/skills@0.16.7
- @agentforge/patterns@0.16.7
- @agentforge/tools@0.16.7
- @agentforge/testing@0.16.7
- @agentforge/cli@0.16.7
[0.16.6] - 2026-03-31
Added
@agentforge/patterns - Reflection Route Regression Coverage
- Added focused reflection route coverage in
packages/patterns/tests/reflection/agent.test.tsfor direct finish when reflection already meets standards and finish after revision when max iterations are reached - Added story documentation in
docs/st09019-reflection-agent-routing-typing.mdcovering the typed route-map changes, warning delta, and validation record
Changed
@agentforge/patterns - Reflection Agent Routing Typing
- Tightened
packages/patterns/src/reflection/agent.tsby replacing conditional-edgeas anycasts with node-specific typed route maps and removing the compile-return cast - Preserved the reflection workflow behavior while aligning generator, reflector, and reviser transitions with direct compile inference
Fixed
@agentforge/patterns - Reflection Type Boundary Cleanup
- Removed the remaining explicit-
anyseams from the reflection agent factory, reducing the workspace explicit-anybaseline from233to229and thepatternspackage from23to19
Published
- All packages published to npm registry at version 0.16.6:
- @agentforge/core@0.16.6
- @agentforge/skills@0.16.6
- @agentforge/patterns@0.16.6
- @agentforge/tools@0.16.6
- @agentforge/testing@0.16.6
- @agentforge/cli@0.16.6
[0.16.5] - 2026-03-29
Added
@agentforge/testing - Helper Contract Regression Coverage
- Added source-included helper type regressions in
packages/testing/src/helpers/contracts.typecheck.tsplus focused runtime coverage inpackages/testing/tests/helpers.test.ts - Added story documentation in
docs/st09018-testing-helper-type-hardening.mdcovering the helper boundary changes, explicit-anywarning deltas, and review-fix history
Changed
@agentforge/testing - Testing Helper Type Boundaries
- Tightened
packages/testing/src/helpers/assertions.tsandpackages/testing/src/helpers/state-builder.tsaroundunknown-first and generic builder contracts, replacing broadanyhelper seams while preserving practical test ergonomics - Re-exported the new helper contract types from
packages/testing/src/index.tsso downstream tests can consume the safer shared surfaces directly
Fixed
@agentforge/testing - Testing Helper Compatibility and Defaults
- Fixed planning-state helpers to support partial results without unsound casts, initialized empty conversation state so runtime output matches
MessageState, and narrowed field-key assertions to keys the runtime can actually verify - Hardened shared message assertions for duplicate LangChain installs, broadened typed message coverage to include tool messages, and reduced the workspace explicit-
anybaseline from253to233while improving thetestingpackage from51to31
Published
- All packages published to npm registry at version 0.16.5:
- @agentforge/core@0.16.5
- @agentforge/skills@0.16.5
- @agentforge/patterns@0.16.5
- @agentforge/tools@0.16.5
- @agentforge/testing@0.16.5
- @agentforge/cli@0.16.5
[0.16.4] - 2026-03-27
Added
@agentforge/cli - Shared Command Error Helper Coverage
- Added focused CLI helper coverage in
packages/cli/tests/utils/command-errors.test.tsfor unknown error normalization, prefixed messages, spinner failure handling, and caller-managed logging - Added story documentation in
docs/st09017-cli-error-handling-centralization.mdcovering the command error boundary refactor, warning deltas, and review-fix history
Changed
@agentforge/cli - Centralized Command Error Handling
- Added
packages/cli/src/utils/command-errors.tsand migrated the CLI command layer off repeatedcatch (error: any)plusprocess.exit(1)boilerplate - Preserved existing command-level behavior across build, dev, test, lint, create, tool, and agent commands while routing generic failure formatting and exit handling through the shared helper
Fixed
@agentforge/cli - CLI Failure Output and Exit Contract
- Restored command output ordering for missing test-file and deploy guidance paths, avoided duplicate or spinner-garbled publish errors, and tightened the shared error helper to a
never-typed exit contract with deterministic test teardown - Reduced the workspace explicit-
anybaseline from271to253, improving theclipackage from24to6
Published
- All packages published to npm registry at version 0.16.4:
- @agentforge/core@0.16.4
- @agentforge/skills@0.16.4
- @agentforge/patterns@0.16.4
- @agentforge/tools@0.16.4
- @agentforge/testing@0.16.4
- @agentforge/cli@0.16.4
[0.16.3] - 2026-03-26
Added
@agentforge/core - Monitoring Regression Coverage
- Added focused monitoring regressions in
packages/core/tests/monitoring/audit-health.test.tscovering JSON-safe audit payload preservation, explicit falsy payload retention, explicit zero timestamps, health metadata handling,onCheckFailpropagation, and structured startup logger behavior - Added story documentation in
docs/st09016-monitoring-payload-type-hardening.mdcapturing the monitoring contract scope, warning deltas, and validation record
Changed
@agentforge/core - Monitoring Payload Contracts
- Tightened
packages/core/src/monitoring/audit.tsandpackages/core/src/monitoring/health.tsto replace broad payloadanyfields with the shared JSON-safe observability contracts already used elsewhere in@agentforge/core - Preserved the existing monitoring runtime behavior for JSON-safe payloads while aligning the public audit and health metadata surfaces with the observability type boundary
Fixed
@agentforge/core - Monitoring Payload and Logging Semantics
- Fixed
AuditLoggerto preserve explicit falsy JSON payloads and explicit0timestamps instead of dropping or overwriting valid values through truthy defaults - Replaced
HealthChecker.start()startup failureconsole.errorcalls with the shared structured logger and hardened the associated regression test cleanup so background intervals are always stopped - Reduced the workspace explicit-
anybaseline from276to271, improving thecorepackage from111to106
Published
- All packages published to npm registry at version 0.16.3:
- @agentforge/core@0.16.3
- @agentforge/skills@0.16.3
- @agentforge/patterns@0.16.3
- @agentforge/tools@0.16.3
- @agentforge/testing@0.16.3
- @agentforge/cli@0.16.3
[0.16.2] - 2026-03-25
Added
@agentforge/patterns - Multi-Agent Runtime Regression Coverage
- Added focused multi-agent regressions in
packages/patterns/tests/multi-agent/nodes.test.tscovering interrupt propagation from custom supervisor/aggregator logic plus invalid model-content handling for worker and aggregator model execution - Added story documentation in
docs/st09015-multi-agent-node-modularization.mdcapturing the modular split, warning delta, and the follow-up hardening fixes landed during review
Changed
@agentforge/patterns - Multi-Agent Node Modularization
- Split
packages/patterns/src/multi-agent/nodes.tsbehind the stable public entrypoint into focusednodes/supervisor.ts,nodes/worker.ts,nodes/aggregator.ts, andnodes/shared.tsmodules - Preserved the public node-creator API while restoring public JSDoc contracts on the split modules and keeping coordinator, handoff, and aggregation behavior stable
Fixed
@agentforge/patterns - Multi-Agent Safety and Contract Hardening
- Removed sensitive task/result/response preview logging from the multi-agent node runtime and kept only metadata-level logging
- Hardened worker workload decrement paths against missing workers and partial custom execution results, and rethrew LangGraph
GraphInterruptcorrectly from supervisor and aggregator catch paths - Changed multi-agent model-content serialization to fail explicitly on
undefinedor non-serializable content instead of returning placeholder success text - Reduced the workspace explicit-
anybaseline from278to276, improving thepatternspackage from25to23
Published
- All packages published to npm registry at version 0.16.2:
- @agentforge/core@0.16.2
- @agentforge/skills@0.16.2
- @agentforge/patterns@0.16.2
- @agentforge/tools@0.16.2
- @agentforge/testing@0.16.2
- @agentforge/cli@0.16.2
[0.16.1] - 2026-03-25
Added
@agentforge/patterns - Plan-Execute Type and Runtime Regression Coverage
- Added source-included contract regression coverage in
packages/patterns/src/plan-execute/contracts.typecheck.tsto lock in concrete tool preservation throughExecutorConfigandPlanExecuteAgentConfig - Added focused plan-execute regression coverage in
packages/patterns/tests/plan-execute/state.test.tsandpackages/patterns/tests/plan-execute/nodes.test.tsfor schema compatibility, unsupported-option warnings, and executor timeout cleanup
Changed
@agentforge/patterns - Plan-Execute Shared Contract Boundaries
- Reworked
packages/patterns/src/plan-execute/types.ts,schemas.ts, andagent.tsto replace broadTool<any, any>[]-style boundaries with the exportedPlanExecuteToolcontract plus generic executor and agent config typing - Preserved planner, executor, replanner, and finisher runtime behavior while tightening the public type surface and documenting unsupported forward-compatibility options explicitly
Fixed
@agentforge/patterns - Plan-Execute Invocation and Timeout Safety
- Fixed the executor tool invocation seam so bound tool methods preserve
thiscorrectly and the exported tool boundary remains callable without the oldnever-typed parameter confusion - Fixed executor timeout cleanup so successful steps clear their pending timeout handles instead of leaving timers alive until
stepTimeoutelapses - Reduced the workspace explicit-
anybaseline from289to278, improving thepatternspackage from28to25
Published
- All packages published to npm registry at version 0.16.1:
- @agentforge/core@0.16.1
- @agentforge/skills@0.16.1
- @agentforge/patterns@0.16.1
- @agentforge/tools@0.16.1
- @agentforge/testing@0.16.1
- @agentforge/cli@0.16.1
[0.16.0] - 2026-03-23
Added
@agentforge/core - Sequential Builder Typecheck and Runtime Regression Coverage
- Added source-included typecheck coverage in
packages/core/src/langgraph/builders/sequential.typecheck.tsto lock in schema-derived sequential workflow typing - Added focused sequential builder regressions in
packages/core/tests/langgraph/builders/sequential.test.tsfor invalid runtime schemas and the tightened builder contract
Changed
@agentforge/core - Sequential Workflow Builder Contract
- Tightened
createSequentialWorkflow(...)inpackages/core/src/langgraph/builders/sequential.tsso the exported type surface now requires a real LangGraphAnnotation.Root(...)schema - Removed the legacy explicit state-generic call pattern and aligned the Phase 2.2 example with schema-derived inference
Fixed
@agentforge/core - Sequential Workflow Schema Validation
- Replaced the old permissive schema typing and fragile runtime shape checks with constructor-backed validation that rethrows an explicit compatibility error for invalid sequential schemas
- Removed the remaining explicit-
anyseams in the sequential builder and reduced the workspace baseline from289to281, improving thecorepackage from119to111
Published
- All packages published to npm registry at version 0.16.0:
- @agentforge/core@0.16.0
- @agentforge/skills@0.16.0
- @agentforge/patterns@0.16.0
- @agentforge/tools@0.16.0
- @agentforge/testing@0.16.0
- @agentforge/cli@0.16.0
[0.15.15] - 2026-03-23
Changed
Published Package Metadata - Export Map Condition Ordering
- Reordered the root
exportscondition keys in@agentforge/skills,@agentforge/tools, and@agentforge/testingsotypesis evaluated beforeimportandrequire - Preserved the same published runtime and declaration entrypoints while aligning the package metadata with TypeScript/tooling conditional-resolution expectations
Fixed
Published Package Metadata - Build Warning Cleanup
- Removed the repeated
"types" condition will never be usedwarning from routine builds for@agentforge/skills,@agentforge/tools, and@agentforge/testing - Verified the touched package entrypoints through focused CJS/ESM import checks plus a Vitest-context smoke test for
@agentforge/testing
Published
- All packages published to npm registry at version 0.15.15:
- @agentforge/core@0.15.15
- @agentforge/skills@0.15.15
- @agentforge/patterns@0.15.15
- @agentforge/tools@0.15.15
- @agentforge/testing@0.15.15
- @agentforge/cli@0.15.15
[0.15.14] - 2026-03-23
Added
@agentforge/patterns - Plan-Execute Route Regression Coverage
- Added focused route-flow tests in
packages/patterns/tests/plan-execute/agent.test.tscovering both replanner outcomes: continue execution and trigger a fresh planning pass - Added story documentation in
docs/st09010-plan-execute-routing-typing.mdcovering the route hardening, validation, and warning-delta snapshot
Changed
@agentforge/patterns - Plan-Execute Agent Routing Typing
- Reworked
packages/patterns/src/plan-execute/agent.tsto replace inline conditional-edge casts with typed route maps - Preserved planner, executor, replanner, finisher, and terminal error routing behavior while letting the compiled LangGraph return type flow without a manual cast
Fixed
@agentforge/patterns - Plan-Execute Type Boundary Safety
- Removed the avoidable
anybridges from the plan-execute route and compile boundary - Reduced the workspace explicit-
anybaseline from292to289, improving thepatternspackage from31to28
Published
- All packages published to npm registry at version 0.15.14:
- @agentforge/core@0.15.14
- @agentforge/skills@0.15.14
- @agentforge/patterns@0.15.14
- @agentforge/tools@0.15.14
- @agentforge/testing@0.15.14
- @agentforge/cli@0.15.14
[0.15.13] - 2026-03-23
Added
@agentforge/tools - Ask-Human Boundary Regression Coverage
- Added focused boundary tests in
packages/tools/tests/agent/ask-human-boundary.test.tsfor missing LangGraph dependency handling, missinginterruptexport compatibility, timeout/default fallback, non-string resume rejection, and nullish resume handling - Added story documentation in
docs/st09009-ask-human-interrupt-boundary-hardening.mdcovering the interrupt-boundary hardening, validation, and warning-delta snapshot
Changed
@agentforge/tools - Ask-Human Interrupt Boundary
- Reworked
packages/tools/src/agent/ask-human/tool.tsto resolve LangGraphinterrupt()throughunknown-guarded helpers instead of broad dynamicanycasts - Preserved current ask-human runtime behavior while making dependency/version compatibility failures explicit and keeping
AskHumanOutput.responsenormalized to a string - Updated debug logging to avoid recording raw human responses while still surfacing non-sensitive response metadata
Fixed
@agentforge/tools - Ask-Human Type and Timeout Safety
- Fixed the timeout/default-response branch so empty-string defaults are honored when explicitly configured
- Removed the remaining explicit-
anyusage from the ask-human interrupt boundary and reduced the workspace baseline from295to292, improving thetoolspackage from70to67
Published
- All packages published to npm registry at version 0.15.13:
- @agentforge/core@0.15.13
- @agentforge/skills@0.15.13
- @agentforge/patterns@0.15.13
- @agentforge/tools@0.15.13
- @agentforge/testing@0.15.13
- @agentforge/cli@0.15.13
[0.15.12] - 2026-03-22
Added
@agentforge/core - Parallel Builder Regression Coverage
- Added direct edge-wiring assertions in
packages/core/tests/langgraph/builders/parallel.test.tsfor fan-out, aggregate fan-in, andautoStartEnd: false - Added story documentation in
docs/st09008-parallel-workflow-builder-typing.mdcovering the builder hardening, validation, and warning-delta snapshot
Changed
@agentforge/core - Parallel Workflow Builder Typing
- Reworked
packages/core/src/langgraph/builders/parallel.tsto derive workflow state directly from the provided LangGraph annotation schema - Tightened parallel and aggregate node update contracts to preserve excess-property checking while keeping LangGraph widening localized to the
addNode()interop boundary - Preserved backward compatibility for
ParallelWorkflowOptions.nameby retaining it as a deprecated no-op until a future major release
Fixed
@agentforge/core - Parallel Builder Type Safety
- Removed avoidable
any,@ts-expect-error, andSTART/ENDedge casts from the parallel workflow builder surface - Fixed the public builder typing so schema, state, and update shapes cannot drift independently at call sites
- Reduced the workspace explicit-
anybaseline from304to295, improving thecorepackage from128to119
Published
- All packages published to npm registry at version 0.15.12:
- @agentforge/core@0.15.12
- @agentforge/skills@0.15.12
- @agentforge/patterns@0.15.12
- @agentforge/tools@0.15.12
- @agentforge/testing@0.15.12
- @agentforge/cli@0.15.12
[0.15.11] - 2026-03-20
Added
Release Automation - Published Package Smoke Verification
- Added
scripts/smoke-test-published-packages.shto verify that all published@agentforge/*packages can be installed from npm after release - Added release verification coverage for library package loading,
@agentforge/testingusage inside Vitest, and@agentforge/clicommand execution
Changed
Release Process - Stronger Publish Verification
- Updated
scripts/publish.shto fail fast when npm reports a version different from the intended release version - Updated
scripts/publish.shto run published package smoke tests automatically after version verification so release validation covers installability as well as metadata
Fixed
@agentforge/cli - Help Command Exit Handling
- Fixed
agentforge --helpso Commander help output no longer exits through the error path withError: (outputHelp) - Added CLI regression coverage in
packages/cli/tests/index.test.tsto keep help and version exits from regressing
Published
- All packages published to npm registry at version 0.15.11:
- @agentforge/core@0.15.11
- @agentforge/skills@0.15.11
- @agentforge/patterns@0.15.11
- @agentforge/tools@0.15.11
- @agentforge/testing@0.15.11
- @agentforge/cli@0.15.11
[0.15.10] - 2026-03-18
Added
@agentforge/patterns - ReAct and Builder Regression Coverage
- Added focused regressions in
packages/patterns/tests/react/nodes.test.tscovering tool-message fallback, structured and undefined observation serialization, and scratchpad context handling - Added focused shared-builder coverage in
packages/patterns/tests/shared/agent-builder.test.tsfor mapped conditional routes, directENDtermination, and compile-time route-mapping validation
Changed
@agentforge/patterns - ReAct Node and Agent Builder Typing
- Reworked
packages/patterns/src/react/nodes.tsandpackages/patterns/src/shared/agent-builder.tsto replace broadany-driven boundaries with typed helpers and config-derived generics - Reduced explicit-
anywarnings in the touched patterns files from19to0, improving the workspace baseline from324to305and thepatternsbaseline from50to31
Fixed
@agentforge/patterns - ReAct Runtime Safety
- Fixed tool-role message normalization so missing
tool_call_idvalues fall back safely instead of producing invalidToolMessageinstances - Fixed
verbosehandling across ReAct nodes so debug logging is once again gated by the publicverboseoption - Fixed observation formatting so
undefinedtool results always serialize to strings and remain visible in tool messages and scratchpad summaries - Fixed shared builder conditional edge mappings so route keys are checked against the declared route union at compile time
Published
- All packages published to npm registry at version 0.15.10:
- @agentforge/core@0.15.10
- @agentforge/skills@0.15.10
- @agentforge/patterns@0.15.10
- @agentforge/tools@0.15.10
- @agentforge/testing@0.15.10
- @agentforge/cli@0.15.10
[0.15.9] - 2026-03-17
Added
@agentforge/core - Observability Payload Coverage
- Added shared JSON-safe payload contracts in
packages/core/src/langgraph/observability/payload.ts - Added focused observability and alert-manager regressions in
packages/core/tests/langgraph/observability/logger.test.tsandpackages/core/tests/monitoring/alerts.test.ts
Changed
@agentforge/core - Observability Boundary Hardening
- Reworked
packages/core/src/langgraph/observability/logger.tsandpackages/core/src/monitoring/alerts.tsto use typed JSON-safe payload contracts instead of broad ad-hoc structures - Strengthened alert channel and rule wiring so built-in channel configs and rule channel references are validated against declared channel keys
- Reduced explicit-
anywarnings in the touched core observability files from20to0
Fixed
@agentforge/core - Alert Runtime Resilience
- Fixed async alert callback failures so they are logged without rejecting
alert()callers or suppressing the main alert log - Fixed metrics-provider failures in interval monitoring so thrown reads are logged and monitoring continues on later ticks
- Fixed logger payload handling so JSON-safe primitives, arrays, and falsy values are preserved instead of being dropped
Published
- All packages published to npm registry at version 0.15.9:
- @agentforge/core@0.15.9
- @agentforge/skills@0.15.9
- @agentforge/patterns@0.15.9
- @agentforge/tools@0.15.9
- @agentforge/testing@0.15.9
- @agentforge/cli@0.15.9
[0.15.8] - 2026-03-13
Added
@agentforge/core - State Typing Regression Coverage
- Added focused LangGraph state tests in
packages/core/tests/langgraph/state.test.tsandpackages/core/tests/langgraph/integration.test.tscovering inferredannotation.State/annotation.Updateshapes and pre-typed reducer update contracts
Changed
@agentforge/core - LangGraph State Utility Typing
- Reworked
packages/core/src/langgraph/state.tsto derive state and update shapes from channel config instead of relying on exported explicit-anycontracts - Preserved
createStateAnnotation()inference while restoring downstream compatibility for reducer-free schema/default state channels - Reduced explicit-
anywarnings inpackages/core/src/langgraph/state.tsfrom13to0
Fixed
@agentforge/core - State Channel Contract Safety
- Fixed typed reducer channels so explicitly declared update types remain intact for pre-typed configs
- Fixed reducer-free schema-backed channels so exported
Statetypes no longer collapse to literal defaults orneverduring downstream DTS builds
Published
- All packages published to npm registry at version 0.15.8:
- @agentforge/core@0.15.8
- @agentforge/skills@0.15.8
- @agentforge/patterns@0.15.8
- @agentforge/tools@0.15.8
- @agentforge/testing@0.15.8
- @agentforge/cli@0.15.8
[0.15.7] - 2026-03-13
Added
@agentforge/core - Converter Edge-Case Coverage
- Added focused LangChain converter tests in
packages/core/tests/langchain/converter.test.tscovering array andnulltool-output serialization alongside the existing object, primitive, string, and schema assertions
Changed
@agentforge/core - LangChain Converter Runtime Boundary
- Reworked
packages/core/src/langchain/converter.tsto replace exported explicit-anysignatures with generic or runtime-erased contracts - Split converter responsibilities with focused helpers for LangChain result stringification and JSON-schema extraction
- Reduced explicit-
anywarnings inpackages/core/src/langchain/converter.tsfrom15to0
Fixed
@agentforge/core - LangChain Tool Conversion Safety
- Preserved LangChain tool behavior while hardening schema extraction and result serialization boundaries, preventing unsafe
anyleakage from the converter layer without changing the public converter API
Published
- All packages published to npm registry at version 0.15.7:
- @agentforge/core@0.15.7
- @agentforge/skills@0.15.7
- @agentforge/patterns@0.15.7
- @agentforge/tools@0.15.7
- @agentforge/testing@0.15.7
- @agentforge/cli@0.15.7
[0.15.6] - 2026-03-12
Added
@agentforge/core — Composition Test Coverage
- Added focused composition utility tests in
packages/core/tests/tools/composition.test.tscovering sequential, parallel, conditional, compose, retry, timeout, and cache behavior - Added a regression test ensuring
timeout()clears scheduled timer handles when the wrapped tool completes before the deadline
Changed
@agentforge/core — Tool Composition Contracts
- Reworked
packages/core/src/tools/composition.tsto replace broad explicit-anycontracts with genericComposedTool<TInput, TOutput>andunknown-based runtime boundaries - Split composition utility concerns with focused helpers for conditional-step detection, retry delay calculation, and error normalization
- Reduced explicit-
anywarnings inpackages/core/src/tools/composition.tsfrom13to0
Fixed
@agentforge/core — Timeout Resource Cleanup
- Fixed
timeout()to clear scheduledsetTimeouthandles afterPromise.racesettles, preventing stale timers and avoiding delayed rejected callbacks after successful tool completion
Published
- All packages published to npm registry at version 0.15.6:
- @agentforge/core@0.15.6
- @agentforge/skills@0.15.6
- @agentforge/patterns@0.15.6
- @agentforge/tools@0.15.6
- @agentforge/testing@0.15.6
- @agentforge/cli@0.15.6
[0.15.5] - 2026-03-11
Added
@agentforge/patterns — Multi-Agent Validation
- Added focused regression tests in
packages/patterns/tests/multi-agent/utils.test.tscovering structured/non-string response serialization and verbose/non-verbose error-path behavior
Changed
Type Safety Hardening — Tools and Patterns Runtime Hotspots
- Reduced explicit-
anyusage across high-warning runtime files in@agentforge/toolsand@agentforge/patterns - Hardened multi-agent runtime typing in:
packages/patterns/src/multi-agent/agent.tspackages/patterns/src/multi-agent/nodes.tspackages/patterns/src/multi-agent/types.tspackages/patterns/src/multi-agent/utils.ts
- Hardened Neo4j runtime typing in:
packages/tools/src/data/neo4j/connection.tspackages/tools/src/data/neo4j/utils/result-formatter.ts
Fixed
@agentforge/patterns — Multi-Agent Error Handling
wrapReActAgentnow correctly honors the configuredverboseflag in catch-path error handling (instead of always suppressing verbose error logging)- Improved extraction guards for multi-agent ReAct result shapes to preserve behavior while handling non-string/structured message content more safely
@agentforge/tools — Neo4j Result Formatting
- Fixed Neo4j record formatting to preserve key identity when normalizing output keys, preventing lookup mismatches when key coercion is involved
Published
- All packages published to npm registry at version 0.15.5:
- @agentforge/core@0.15.5
- @agentforge/skills@0.15.5
- @agentforge/patterns@0.15.5
- @agentforge/tools@0.15.5
- @agentforge/testing@0.15.5
- @agentforge/cli@0.15.5
[0.15.4] - 2026-03-10
Added
@agentforge/core — Test Coverage
- Added focused
HttpPoolruntime-behavior tests for request handling, pool stats, and draining behavior
Changed
@agentforge/core — Type Safety Hardening
- Reduced explicit-
anyusage in core runtime hotspots by replacing broad casts withunknown-first boundaries and narrowing - Updated tool registry bulk registration typing to support heterogeneous tool collections while preserving runtime-erased storage boundaries
Fixed
@agentforge/core — Executor Retry Safety
- Added retry policy validation so misconfigured
maxAttemptsvalues (< 1 or non-integer) fail fast with a clear error - Ensured retry execution consistently throws
Errorinstances in terminal retry paths
Published
- All packages published to npm registry at version 0.15.4:
- @agentforge/core@0.15.4
- @agentforge/skills@0.15.4
- @agentforge/patterns@0.15.4
- @agentforge/tools@0.15.4
- @agentforge/testing@0.15.4
- @agentforge/cli@0.15.4
[0.15.3] - 2026-03-09
Added
Type Safety Governance
- Added an explicit
anyno-regression baseline checker forpackages/**/src/**/*.ts - Added committed baseline snapshot at
scripts/no-explicit-any-baseline.json - Added CI workflow to enforce the baseline gate (
.github/workflows/type-safety-baseline.yml) - Added story documentation for the baseline and local verification flow
Changed
Linting Policy Alignment
- Added
lint:explicit-any:baselineandlint:ciscripts in rootpackage.json - Aligned
@typescript-eslint/no-explicit-anytowarnin@agentforge/testingand@agentforge/skillspackage ESLint configs so package lint and baseline enforcement are consistent - Tightened baseline schema validation and output behavior in
scripts/check-explicit-any-baseline.mjs:- Require matching
ruleIdandtarget - Enforce integer caps for total and per-package warning limits
- Run ESLint from repo root with explicit cache location
- Improve baseline load/parse and command execution error handling
- Remove non-actionable always-on
unknown: 0/0output row
- Require matching
Published
- All packages published to npm registry at version 0.15.3:
- @agentforge/core@0.15.3
- @agentforge/skills@0.15.3
- @agentforge/patterns@0.15.3
- @agentforge/tools@0.15.3
- @agentforge/testing@0.15.3
- @agentforge/cli@0.15.3
[0.15.2] - 2026-03-05
Added
@agentforge/patterns — Testing
- Added shared regression tests for
withErrorHandling:- GraphInterrupt passthrough behavior
- Error fallback shape behavior for states with optional
status/error
Changed
Release Tooling & Documentation
- Removed
RELEASE_CHECKLIST.mdto avoid duplicate/conflicting release guidance - Updated release references in
README.mdandscripts/release.shto use.ai/RELEASE_PROCESS.md - Updated release script messaging to reference
docs-site/changelog.mdand./scripts/publish.sh
Fixed
@agentforge/tools — Relational Insert
- Fixed strict typing mismatch in batch insert aggregation (
allRowsnow aligned withInsertResult.rowstype)
@agentforge/tools — Test Stability
- Made Docker-backed relational integration suites opt-in via
RUN_INTEGRATION_TESTS=trueto avoid failing default test runs when container runtime is unavailable - Made live web-search performance suite opt-in via
RUN_WEB_PERFORMANCE_TESTS=trueto avoid network-dependent failures in default test runs
@agentforge/patterns — Shared Utilities
- Improved
buildAgentdynamic edge wiring types for strict typecheck compatibility - Refined
withErrorHandlingfallback typing to expose explicit{ status: 'failed'; error: string }fallback shape - Fixed typecheck compatibility for package-wide strict checks
Published
- All packages published to npm registry at version 0.15.2:
- @agentforge/core@0.15.2
- @agentforge/skills@0.15.2
- @agentforge/patterns@0.15.2
- @agentforge/tools@0.15.2
- @agentforge/testing@0.15.2
- @agentforge/cli@0.15.2
[0.15.1] - 2026-02-25
Fixed
@agentforge/skills — Dependency Fix
- Moved
@agentforge/corefrompeerDependenciestodependenciesso it auto-installs for consumers (matching@agentforge/patternsconvention)
Published
- All packages published to npm registry at version 0.15.1:
- @agentforge/core@0.15.1
- @agentforge/skills@0.15.1
- @agentforge/patterns@0.15.1
- @agentforge/tools@0.15.1
- @agentforge/testing@0.15.1
- @agentforge/cli@0.15.1
[0.15.0] - 2026-02-25
Added
@agentforge/skills — New Package (EP-07)
- New
@agentforge/skillspackage — Skills source files extracted from@agentforge/coreinto a dedicated package with full public API:SkillRegistry,parseSkillContent,scanSkillRoot,scanAllSkillRootscreateActivateSkillTool,createReadSkillResourceTool,createSkillActivationToolsevaluateTrustPolicy,isScriptResource,normalizeRootConfig,resolveResourcePath- All types:
Skill,SkillMetadata,SkillRegistryConfig,TrustLevel, etc.
- Imports re-wired from relative core internals to
@agentforge/corepackage imports - Logger names updated to
agentforge:skills:*namespace - Skills test suite (215 tests) migrated from
packages/core/tests/skills/topackages/skills/tests/- 7 test files: activation, conformance, parser, prompt, registry, scanner, trust
- Fixture skill packs (valid, malformed, untrusted) moved to
packages/skills/tests/fixtures/
Documentation — Skills Package Migration (EP-07)
- All docs, guides, examples, and tutorials updated to import from
@agentforge/skills - New @agentforge/skills API Reference page (extracted from core API docs)
- Migration guide updated with Skills Package Extraction section
- Logger namespace references updated:
agentforge:core:skills:*→agentforge:skills:* - Example app
skill-aware-agentupdated to depend on@agentforge/skills - Root README package table now includes
@agentforge/skills
Release Tooling — Skills Package Support (EP-07)
scripts/release.sh— Addedpackages/skills/package.jsontoPACKAGE_FILESfor automated version bumpsscripts/publish.sh— Addedpackages/skillstoPACKAGESin correct dependency order (after core, before patterns)scripts/convert-workspace-deps.mjs— Addedskillsto workspace package name list for workspace:* → concrete version conversionRELEASE_CHECKLIST.md— Added skills to version bump, publish order (5-tier: core → skills → patterns/tools → testing (depends on core + patterns) → cli), and verify sections
Removed
@agentforge/core — Skills Extraction (Breaking Change)
- Skills source code removed from
@agentforge/coreentirely — import from@agentforge/skillsinstead gray-matterremoved from core dependencies (now only in@agentforge/skills)- Core bundle size reduced ~16% (ESM: 171.62 KB → 143.67 KB)
Breaking Changes
SkillRegistry,parseSkillContent,scanSkillRoot,evaluateTrustPolicy, and all skills-related types are no longer exported from@agentforge/core- Consumers must install
@agentforge/skillsand update imports accordingly
Published
- All packages published to npm registry at version 0.15.0:
- @agentforge/core@0.15.0
- @agentforge/skills@0.15.0
- @agentforge/patterns@0.15.0
- @agentforge/tools@0.15.0
- @agentforge/testing@0.15.0
- @agentforge/cli@0.15.0
[0.14.0] - 2026-02-24
Added
@agentforge/core — Agent Skills Compatibility Layer
- SkillRegistry — Auto-discover and manage agent skills following the Agent Skills Specification:
- Folder-config auto-discovery with YAML frontmatter parsing (via gray-matter)
- Configurable
skillRootswith multi-root support and deterministic duplicate handling - Query API:
get(),getAll(),has(),size,getNames(),getScanErrors() enabledfeature flag (default off) for zero-impact opt-inmaxDiscoveredSkillscap for token budget control- Structured logging with hierarchical logger names
generatePrompt()— System prompt integration producing<available_skills>XML:- Subset filtering via
skills?: string[]for focused agents - XML escaping and token-aware prompt composition
- Subset filtering via
- Skill Activation Tools — Two LangGraph-compatible tools for runtime skill loading:
activate-skill— Load full SKILL.md instructions by skill nameread-skill-resource— Read resource files from skill directories with path securitytoActivationTools()convenience method returning both as a tupleresolveResourcePath()with segment-based traversal detection and symlink guard (realpathSync)- Structured event emission (
SKILL_ACTIVATED,SKILL_RESOURCE_LOADED)
- Trust Policy Engine — Fine-grained access control for skill resources:
TrustLevel(workspace/trusted/untrusted) configurable per skill rootevaluateTrustPolicy()decision engine blocking scripts from untrusted roots by defaultallowUntrustedScriptsconfig override for development workflowsgetAllowedTools()API for skill-declared tool filteringTRUST_POLICY_DENIED/TRUST_POLICY_ALLOWEDevents for observability- Backward compatible — plain string roots default to
untrusted
ToolCategory.SKILLS— New tool category enum value for skill-related tools- Event System — Registry events for observability, logging, and metrics:
skill:discovered,skill:warning,skill:activated,skill:resource-loadedtrust:policy-allowed,trust:policy-denied
@agentforge/core — Testing
- 35-Test Conformance Suite — End-to-end validation covering discovery, prompt generation, tool activation, resource loading, trust policy enforcement, allowed-tools, and full pipeline
- 180+ Skill Unit Tests — Parser (34), scanner (10), registry (27), prompt (23), activation (40), trust (41), plus conformance (35)
- Fixture Skill Packs — Committed test fixtures for valid, malformed, and untrusted skill scenarios
Documentation Site
- Agent Skills Guide — Developer setup guide (
guide/agent-skills.md) covering SkillRegistry configuration, prompt integration, activation tools, and feature flags - Skill Authoring Reference — Author guide (
guide/agent-skills-authoring.md) for creating SKILL.md files with frontmatter, instructions, resources, and trust levels - Skill-Powered Agent Tutorial — Step-by-step tutorial (
tutorials/skill-powered-agent.md) building a skill-powered ReAct agent from scratch (9 steps) - Agent Skills Examples — 10 runnable integration patterns (
examples/agent-skills.md): registry setup, prompt generation, activation tools, trust policies, event monitoring, multi-root configuration, combining skills with custom tools, and more - SkillRegistry API Reference — Full API documentation in
api/core.mdcovering constructor options, query methods, event types, utility functions, and type definitions - VitePress Sidebar & Cross-links — Agent Skills section in Guide sidebar, tutorial and examples nav entries, cross-links between all related pages
Examples
skill-aware-agent— End-to-end demo application demonstrating mixed-trust skill roots with observability events
Published
- All packages published to npm registry at version 0.14.0:
- @agentforge/core@0.14.0
- @agentforge/patterns@0.14.0
- @agentforge/tools@0.14.0
- @agentforge/testing@0.14.0
- @agentforge/cli@0.14.0
[0.13.0] - 2026-02-23
Added
@agentforge/tools — Vendor-Agnostic Relational Database Tools
- 6 New Database Tools — Full CRUD and schema introspection for PostgreSQL, MySQL, and SQLite:
relationalQuery— Execute raw SQL with parameterized binding (positional and named parameters)relationalSelect— Type-safe SELECT with WHERE conditions, ORDER BY, LIMIT/OFFSET, and result streamingrelationalInsert— Single and batch insert with configurable returning modes (none,id,row)relationalUpdate— Conditional updates with optimistic locking, WHERE requirement, and batch operationsrelationalDelete— Safe deletion with WHERE requirement, soft-delete support, and cascade-aware errorsrelationalGetSchema— Schema introspection with caching (tables, columns, primary keys, foreign keys, indexes)
- ConnectionManager — Vendor-agnostic connection lifecycle management:
- Connection pooling with configurable max connections, acquire timeout, and idle timeout
- Automatic reconnection with exponential backoff
- State tracking (disconnected, connecting, connected, reconnecting, error)
- Pool metrics (totalCount, activeCount, idleCount, waitingCount) and health checks
- Event emitters for connection state changes
- Graceful shutdown with
disconnect()anddispose()
- Transaction Support — ACID transactions via
withTransaction():- Configurable isolation levels (read uncommitted, read committed, repeatable read, serializable)
- Transaction timeout with auto-rollback
- Nested savepoints with
createSavepoint(),rollbackToSavepoint(),withSavepoint()
- Batch Operations — Efficient bulk processing for insert, update, and delete:
- Configurable batch size (1–5000 items per chunk)
- Continue-on-error with partial success reporting
- Retry support with configurable delay
- Vendor-optimized recommended batch sizes
- Result Streaming — Memory-bounded query results for large datasets:
- Configurable chunk size and max rows
- Sample-based response payloads for agent consumption
- Benchmark mode for performance profiling
- SQL Security — 5-layer protection against injection and accidental data loss:
- Parameterized query enforcement
- DDL blocking (CREATE, DROP, TRUNCATE, ALTER rejected by default)
- WHERE requirement for UPDATE and DELETE (explicit opt-in for full-table operations)
- Identifier validation (qualified for table names, strict for column names)
- Error message sanitization (no connection strings or internal details)
- Schema Metadata Utilities — Schema validation and type mapping helpers
- Peer Dependency Architecture — Database drivers (
pg,mysql2,better-sqlite3) are optional peer dependencies with helpfulMissingPeerDependencyErrormessages
@agentforge/tools — Testing
- Comprehensive Unit Tests — 400+ unit tests covering all CRUD operations, connection management, schema introspection, SQL sanitization, batch operations, and streaming
- SQLite Integration Tests — End-to-end CRUD and transaction tests using in-memory SQLite
Documentation Site
- Database Tools Guide — New concept page at
guide/concepts/databasecovering ConnectionManager setup, all 6 CRUD tools, transactions, batch operations, streaming, security, and vendor differences - Database Agent Tutorial — New step-by-step tutorial at
tutorials/database-agentbuilding a database-powered ReAct agent from scratch - API Reference — Full parameter tables and response shapes for all 6 relational tools, ConnectionManager class, and
withTransactionhelper added to the tools API reference page - 9 Advanced Integration Examples — Transactions, batch insert/update, result streaming, multi-agent shared database, error handling, connection pooling, schema introspection, and performance optimization
Published
- All packages published to npm registry at version 0.13.0:
- @agentforge/core@0.13.0
- @agentforge/patterns@0.13.0
- @agentforge/tools@0.13.0
- @agentforge/testing@0.13.0
- @agentforge/cli@0.13.0
[0.12.6] - 2026-02-12
Added
@agentforge/tools
- Neo4j Integration - Complete graph database support with 7 specialized tools:
neo4jQuery- Execute Cypher queries with parameterized query supportneo4jGetSchema- Retrieve comprehensive graph schema (nodes, relationships, constraints, indexes)neo4jFindNodes- Find nodes by label and property filtersneo4jTraverse- Graph traversal with relationship type filtering and depth controlneo4jVectorSearch- Vector similarity search using existing embeddingsneo4jVectorSearchWithEmbedding- Vector search with automatic text-to-embedding conversionneo4jCreateNodeWithEmbedding- Create nodes with automatic embedding generation
- Multi-Provider Embedding System - Provider-agnostic embedding support:
- OpenAI (text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002)
- Cohere (embed-english-v3.0, embed-multilingual-v3.0, embed-english-light-v3.0)
- HuggingFace (sentence-transformers/all-MiniLM-L6-v2, BAAI/bge-small-en-v1.5)
- Voyage AI (voyage-2, voyage-code-2, voyage-large-2)
- Ollama (nomic-embed-text, mxbai-embed-large, all-minilm)
- Configurable via environment variables with per-call model overrides
- Cypher Injection Protection - Backtick escaping for safe identifier handling
- Comprehensive Documentation:
- Complete Neo4j package documentation with setup guides and examples
- GraphRAG tutorial covering knowledge graph construction and retrieval
- API reference with all tool schemas and response formats
- Integration Tests - Gated behind
RUN_INTEGRATION_TESTS=trueflag to prevent CI failures - Structured Logging - Full logging compliance using
@agentforge/corelogger
Fixed
@agentforge/tools
- TypeScript Compilation Errors in Confluence Tools - Fixed ESM import paths and return type annotations:
- Added
.jsextensions to relative imports (required bymoduleResolution: "node16") - Removed explicit
: Toolreturn type annotations to allow proper type inference - Fixed 8 files: auth.ts and 7 tool files (archive, create, get, get-space-pages, list-spaces, search, update)
- Added
- TypeScript Compilation Errors in Slack Tools - Fixed return type annotations:
- Removed explicit
: Toolreturn type annotations to allow proper type inference - Fixed 4 files: get-channels, get-messages, notify, send-message
- Removed explicit
Published
- All packages published to npm registry at version 0.12.6:
- @agentforge/core@0.12.6
- @agentforge/patterns@0.12.6
- @agentforge/tools@0.12.6
- @agentforge/testing@0.12.6
- @agentforge/cli@0.12.6
[0.12.5] - 2026-02-11
Fixed
@agentforge/cli
- Critical: Template validation issues across minimal, api, and cli templates [CRITICAL]
- Problem: Fresh projects created with
agentforge createusing v0.12.4 had multiple P1 and P2 validation failures in minimal, api, and cli templates (full template was 100% fixed) - Impact: Users couldn't run
typecheck,build, orvitest runcommands without errors in 3 out of 4 templates - Root Causes:
- P1: TypeScript type error (TS18046):
result.messagestyped as unknown in minimal/api/cli templates - P1: API template DTS build failure (TS2742): Inferred router type not portable for declaration emit
- P1: Vitest run failures:
vitest runexited with code 1 when no test files exist - P2: Package.json metadata mismatch:
mainandtypesfields didn't match actual build output - P2: Unresolved template placeholder:
remained literal when description was empty
- P1: TypeScript type error (TS18046):
- Solutions:
- Fixed
result.messagestyping - Added explicit type assertion in 4 files:templates/minimal/src/index.ts- Addedas Array<{ content: string }>templates/api/src/routes/agent.ts- Addedas Array<{ content: string }>templates/cli/src/commands/analyze.ts- Addedas Array<{ content: string }>templates/cli/src/commands/chat.ts- Addedas Array<{ content: string }>
- Fixed API template DTS build - Added explicit Router type annotations in 2 files:
templates/api/src/routes/agent.ts- Changed toconst router: Router = Router();templates/api/src/routes/health.ts- Changed toconst router: Router = Router();
- Fixed vitest run failures - Added
--passWithNoTestsflag in 3 package.json files:templates/minimal/package.json- Updated test scriptstemplates/api/package.json- Updated test scriptstemplates/cli/package.json- Updated test scripts
- Fixed package.json metadata - Corrected main/types fields in 2 files:
templates/api/package.json- Changed tomain: "dist/server.js",types: "dist/server.d.ts"templates/cli/package.json- Changed tomain: "dist/cli.js",types: "dist/cli.d.ts"
- Fixed template placeholder - Fixed scaffolder variable replacement:
src/commands/create.ts- Changed replacement key fromDESCRIPTIONtoPROJECT_DESCRIPTION
- Fixed
- Files Fixed (9 total):
- 4 template source files (minimal, api, cli)
- 3 template package.json files (minimal, api, cli)
- 2 API route files (agent.ts, health.ts)
- 1 scaffolder file (create.ts)
- Templates Affected: minimal, api, cli (full template was already 100% fixed in v0.12.4)
- Verification: All 1076 tests passing, fresh scaffold validation passes all acceptance criteria:
pnpm typecheck- PASS for all templatespnpm lint- PASS for all templatespnpm test- PASS for all templatespnpm build- PASS for all templates- No unresolved template tokens
main/typesmatch emitted artifacts
- Problem: Fresh projects created with
Published
- All packages published to npm registry at version 0.12.5:
- @agentforge/core@0.12.5
- @agentforge/patterns@0.12.5
- @agentforge/tools@0.12.5
- @agentforge/testing@0.12.5
- @agentforge/cli@0.12.5
[0.12.4] - 2026-02-11
Fixed
@agentforge/cli
- Critical: Tool metadata test failure in fresh scaffolds [CRITICAL]
- Problem: Fresh projects created with
agentforge createusing v0.12.3 had test failures - Impact:
pnpm exec vitest runfailed with "exampleTool.name is undefined" - Root Cause: Tool API changed - metadata is now under
tool.metadataproperty, but template tests were still accessingtool.namedirectly - Solution:
- Fixed test assertions to use
tool.metadata.nameinstead oftool.name - Fixed test assertions to use
tool.metadata.descriptioninstead oftool.description - Fixed test assertions to use
tool.metadata.categoryinstead oftool.category
- Fixed test assertions to use
- Files Fixed (3 total):
templates/full/tests/example.test.ts- Updated metadata accesstemplates/tool-multi/__tests__/index.test.ts- Updated metadata accesssrc/commands/tool/create.ts- Updated test generator to use correct metadata access
- Templates Affected: full, tool-multi, and all future tools created with
agentforge tool:create - Verification: All 1076 tests passing, fresh scaffold tests now pass
- Problem: Fresh projects created with
Published
- All packages published to npm registry at version 0.12.4:
- @agentforge/core@0.12.4
- @agentforge/patterns@0.12.4
- @agentforge/tools@0.12.4
- @agentforge/testing@0.12.4
- @agentforge/cli@0.12.4
[0.12.3] - 2026-02-11
Fixed
@agentforge/cli
- Critical: 4 template regressions discovered in fresh scaffold validation [CRITICAL]
- Problem: Fresh projects created with
agentforge createusing v0.12.2 had 4 validation failures - Impact: Users couldn't run
typecheck,test,build, orlintcommands without errors - Root Causes:
- TypeScript type error:
result.messagestyped as unknown in full template (index.ts line 70) - Tool naming convention: Tool name was
example_tool(snake_case) but validation requires kebab-case - Build script failure:
tsupcommand had no entry point configured, causing "No input files" error - Lint failure: ESLint v9 installed but no
eslint.config.jsfile existed in scaffolded projects
- TypeScript type error:
- Solution:
- Added explicit type assertion for
result.messages:const messages = result.messages as Array<{ content: string }>; - Changed tool name from
example_tooltoexample-tool(kebab-case) in tool definition and test - Created
tsup.config.tswith proper entry points for all 4 templates (full, minimal, api, cli) - Created
eslint.config.jswith ESLint v9 flat config for all 4 templates - Added
@eslint/jsandtypescript-eslintdependencies to all template package.json files
- Added explicit type assertion for
- Files Fixed (15 total):
templates/full/src/index.ts- type assertiontemplates/full/src/tools/example.ts- kebab-case namingtemplates/full/tests/example.test.ts- test expectationtemplates/full/package.json- ESLint dependenciestemplates/full/tsup.config.ts- NEW FILEtemplates/full/eslint.config.js- NEW FILEtemplates/minimal/package.json- ESLint dependenciestemplates/minimal/tsup.config.ts- NEW FILEtemplates/minimal/eslint.config.js- NEW FILEtemplates/api/package.json- ESLint dependenciestemplates/api/tsup.config.ts- NEW FILEtemplates/api/eslint.config.js- NEW FILEtemplates/cli/package.json- ESLint dependenciestemplates/cli/tsup.config.ts- NEW FILEtemplates/cli/eslint.config.js- NEW FILE
- Templates Affected: All 4 main templates (full, minimal, api, cli)
- Verification: All templates now pass
typecheck,test,build, andlintcommands successfully
- Problem: Fresh projects created with
Published
- All packages published to npm registry at version 0.12.3:
- @agentforge/core@0.12.3
- @agentforge/patterns@0.12.3
- @agentforge/tools@0.12.3
- @agentforge/testing@0.12.3
- @agentforge/cli@0.12.3
[0.12.2] - 2026-02-11
Fixed
@agentforge/cli
- Critical: TypeScript errors in all CLI templates [CRITICAL]
- Problem: All projects created with
agentforge createhad TypeScript compilation errors out of the box - Impact: Users couldn't run newly created projects without manually fixing type errors
- Root Causes:
- Logger initialization bug (3 files):
createLogger()expects(name: string, options?: LoggerOptions)but templates called it with just an options object{ level: 'info' } - Type assertion bug (5 files):
result.messagesarray access caused "of type 'unknown'" errors due to missing type guards - Tool builder API bug (3 files): Templates used
createTool()with builder pattern (.name().description()...) butcreateTool()is a function taking 3 parameters. Builder pattern requirestoolBuilder()
- Logger initialization bug (3 files):
- Solution:
- Fixed logger calls:
createLogger({ level: 'info' })→createLogger('name') - Added safe array access:
result.messages[i].content→const msg = result.messages[i]; msg?.content || 'No response' - Fixed tool builder:
createTool()→toolBuilder()andcategory: 'utility'→category: ToolCategory.UTILITY - Updated tool generator in
commands/tool/create.tsto use correct API - Added
TOOL_CATEGORY_ENUMplaceholder replacement for multi-file tool template
- Fixed logger calls:
- Files Fixed (9 total):
templates/full/src/index.ts- logger + result.messagestemplates/full/src/tools/example.ts- tool buildertemplates/minimal/src/index.ts- result.messagestemplates/api/src/server.ts- loggertemplates/api/src/routes/agent.ts- logger + result.messagestemplates/cli/src/commands/chat.ts- result.messagestemplates/cli/src/commands/analyze.ts- result.messagestemplates/tool-multi/index.ts- tool buildersrc/commands/tool/create.ts- tool generator
- Templates Affected: All 5 templates (full, minimal, api, cli, tool-multi)
- Total Bugs Fixed: 12 bugs across 9 files
- Verification: All templates now pass TypeScript validation with zero errors
- Problem: All projects created with
Published
- All packages published to npm registry at version 0.12.2:
- @agentforge/core@0.12.2
- @agentforge/patterns@0.12.2
- @agentforge/tools@0.12.2
- @agentforge/testing@0.12.2
- @agentforge/cli@0.12.2
[0.12.1] - 2026-02-11
Fixed
Publishing
- Critical: workspace: dependencies not converted to concrete versions* [CRITICAL]
- Problem: Published packages on npm contained
workspace:*dependencies instead of concrete version numbers (e.g.,"@agentforge/core": "workspace:*"instead of"@agentforge/core": "0.12.0") - Impact: Users running
npx @agentforge/cligotERR_PNPM_WORKSPACE_PKG_NOT_FOUNDerror when pnpm tried to install packages - Root Cause:
pnpm publishwas not automatically converting workspace protocols to concrete versions as expected - Solution:
- Created
scripts/convert-workspace-deps.mjsto manually convertworkspace:*to concrete versions before publishing - Updated
scripts/publish.shto run conversion before publishing and restore workspace protocols after - Added
.npmrcwithauto-install-peers=truesetting - Added
@pnpm/exportable-manifestand@pnpm/read-project-manifestas dev dependencies
- Created
- Reference: https://github.com/pnpm/pnpm/issues/5094
- Verification: Published packages now have concrete versions in dependencies (e.g.,
"@agentforge/core": "0.12.1")
- Problem: Published packages on npm contained
[0.12.0] - 2026-02-09
Added
@agentforge/core
- Monitoring Module Export
- Problem: Monitoring utilities (health checks, profiling, alerting, audit logging) were implemented and documented but not exported from package root
- Impact: Users couldn't access production-ready monitoring features despite documentation showing
import { ... } from '@agentforge/core' - Solution: Added
export * from './monitoring/index.js'topackages/core/src/index.ts - New Public Exports:
createHealthChecker()- Health check system with liveness/readiness probescreateProfiler()- Performance profiling with execution time and memory trackingcreateAlertManager()- Alert rules and multi-channel notificationscreateAuditLogger()- Compliance and security audit logging
- Benefits:
- Monitoring features now accessible to all consumers
- Aligns with package description and documentation
- Consistent with other module exports (resources, streaming, etc.)
Changed
@agentforge/core
- BREAKING: Renamed HealthCheckResult to ToolHealthCheckResult
- Problem: Type name conflict between
tools/lifecycle.tsandmonitoring/health.tswhen both exported from package root - Solution: Renamed the tools lifecycle type from
HealthCheckResulttoToolHealthCheckResult - Migration: If you were using
HealthCheckResultfrom the tools lifecycle module, update imports toToolHealthCheckResult - Impact: Minimal - the tools lifecycle health check is a niche feature; most users will use the monitoring module's
HealthCheckResult
- Problem: Type name conflict between
[0.11.8] - 2026-02-07
Added
@agentforge/core
- Shared Prompt Loader [REFACTOR]
- Problem: Each vertical agent example had its own copy of
prompt-loader.ts, leading to code duplication and maintenance drift (4 identical copies) - Solution: Consolidated into a single shared implementation in
@agentforge/core - New Exports:
loadPrompt(promptName, options, promptsDir?)- Load and render prompt templates from .md filesrenderTemplate(template, options)- Render template strings with variable substitutionsanitizeValue(value)- Sanitize values to prevent prompt injectionRenderTemplateOptions- TypeScript interface for security controls
- Location:
packages/core/src/prompt-loader/index.ts - Tests:
packages/core/tests/prompt-loader/index.test.ts - Migration: All vertical agents and CLI template now import from
@agentforge/core - Benefits:
- Single source of truth for prompt loading logic
- Consistent security fixes across all agents
- Easier to maintain and update
- Available to all AgentForge users
- Problem: Each vertical agent example had its own copy of
Fixed
@agentforge/core - Prompt Loader
- Critical Bugs in Prompt Injection Protection [P2] [HIGH]
- Bug 1: Header stripping ineffective after newline removal
- Problem:
sanitizeValue()removed newlines BEFORE stripping headers, so payloads like"Acme\n\n# New System Prompt"became"Acme # New System Prompt"and the header regex (/^#+\s*/gm) no longer matched - Impact: Markdown header injection protection was completely bypassed
- Solution: Swapped order - strip headers FIRST, then remove newlines
- Problem:
- Bug 2: Sanitization opt-in not used at call sites
- Problem: All
loadPrompt()call sites used plain objects (treated as trusted), so user-controlled variables bypassed sanitization entirely - Impact: The prompt injection protection was effectively unused
- Solution: Updated all call sites to explicitly use
untrustedVariablesfor user-controlled data
- Problem: All
- Bug 3: Untrusted variables stringified before conditionals, making false/0 truthy
- Problem:
renderTemplate()sanitized untrusted values into strings and then used the merged variables for{{#if ...}}conditionals. This madefalse→'false'(truthy) and0→'0'(truthy) - Impact: Untrusted boolean/numeric variables didn't work correctly in conditionals
- Solution: Evaluate conditionals against RAW values, only use sanitized values for substitution
- Problem:
- Bug 4: CLI template bypassed sanitization and used wrong promptsDir
- Problem 1: Reusable-agent template passed plain object to
loadPrompt, so user-supplied values weren't sanitized - Problem 2: Template didn't pass
promptsDir, so published packages would look for./promptsin consumer's cwd - Impact: Generated agents had prompt injection vulnerability and wouldn't work when published
- Solution: Updated template to use
trustedVariables/untrustedVariablesand passpromptsDirderived fromimport.meta.url
- Problem 1: Reusable-agent template passed plain object to
- Files Fixed:
packages/core/src/prompt-loader/index.ts- Fixed sanitizeValue order, conditional evaluation, and added testspackages/core/tests/prompt-loader/index.test.ts- Added tests for false/0 in conditionalsexamples/vertical-agents/customer-support/src/index.ts- Updated to use untrustedVariablesexamples/vertical-agents/code-review/src/index.ts- Updated to use untrustedVariablesexamples/vertical-agents/data-analyst/src/index.ts- Updated to use untrustedVariablespackages/cli/templates/reusable-agent/index.ts- Updated to use untrustedVariables and promptsDir
- Bug 1: Header stripping ineffective after newline removal
@agentforge/cli
- [P1] Reusable Agent Creation Failure [CRITICAL]
- Problem:
agent:create-reusablecommand tried to moveprompt-loader.tsfile that no longer exists in template (removed during consolidation) - Impact: CLI command would throw
fs.moveerror and fail after template copy - Solution: Removed
prompt-loader.tsmove operation from file organization step - Files Fixed:
packages/cli/src/commands/agent/create-reusable.ts- Removed obsolete file movepackages/cli/tests/commands/agent/create-reusable.test.ts- Updated test expectations
- Problem:
Documentation
Outdated Prompt Loader References [P2]
- Problem: Documentation and example READMEs still referenced deleted local
prompt-loader.tsfiles after consolidation into@agentforge/core - Impact: Users following documentation would get import errors and outdated security patterns
- Solution: Updated all documentation to use shared
loadPromptfrom@agentforge/corewith proper security API - Files Updated:
docs-site/guide/advanced/vertical-agents.md- Updated to use@agentforge/coreimport and security-aware APIexamples/vertical-agents/customer-support/README.md- Updated import and addedpromptsDirresolutionexamples/vertical-agents/code-review/README.md- Updated import and addedpromptsDirresolutionexamples/vertical-agents/data-analyst/README.md- Updated import and addedpromptsDirresolution
- Problem: Documentation and example READMEs still referenced deleted local
Outdated File Tree Documentation [P2]
- Problem: CLI README and vertical agents guide still listed
src/prompt-loader.tsin file trees and key files sections - Impact: Documentation showed files that are no longer created/present
- Solution: Removed
prompt-loader.tsreferences and updated to reflect shared@agentforge/coreloader - Files Updated:
packages/cli/README.md- Updated scaffolded file tree, added note about shared loaderdocs-site/guide/advanced/vertical-agents.md- Updated key files sections for all 3 example agents
- Problem: CLI README and vertical agents guide still listed
Example Agents
- [P2] Missing promptsDir in Example Agents
- Problem: All 3 example agents called
loadPromptwithoutpromptsDirparameter, falling back toprocess.cwd() - Impact: When consumed as published packages, prompts wouldn't resolve (would look in consumer's cwd instead of package directory)
- Solution: Added
promptsDirresolution usingimport.meta.urlpattern to all example agents - Files Fixed:
examples/vertical-agents/customer-support/src/index.ts- Added promptsDir usingjoin(__dirname, '../prompts')examples/vertical-agents/code-review/src/index.ts- Added promptsDir usingjoin(__dirname, '../prompts')examples/vertical-agents/data-analyst/src/index.ts- Added promptsDir usingjoin(__dirname, '../prompts')
- Result: Example agents now work correctly when consumed as library dependencies
- Note: Initial implementation used
'../../prompts'(wrong), corrected to'../prompts'to properly resolve fromsrc/to siblingprompts/directory
- Problem: All 3 example agents called
Published
- All packages published to npm registry at version 0.11.8:
- @agentforge/core@0.11.8
- @agentforge/patterns@0.11.8
- @agentforge/tools@0.11.8
- @agentforge/testing@0.11.8
- @agentforge/cli@0.11.8
[0.11.7] - 2026-02-07
Fixed
Vertical Agents - Prompt Injection Vulnerability [SECURITY] [HIGH]
- Vulnerability: Prompt loaders were vulnerable to prompt injection attacks when user-controlled data was passed as template variables
- Attack Vector: Malicious users could inject instructions through variables like
companyName: 'Acme\n\nIGNORE PREVIOUS INSTRUCTIONS' - Impact: Attackers could override agent behavior, potentially leading to data leaks or policy violations
- Attack Vector: Malicious users could inject instructions through variables like
- Solution: Added comprehensive prompt injection protection with trusted/untrusted variable distinction
- Security Model:
trustedVariables: From config files/hardcoded values (NOT sanitized)untrustedVariables: From user input/API calls/databases (WILL be sanitized)
- Protection Mechanisms:
sanitizeValue()function prevents:- Newline injection (prevents multi-line instruction injection)
- Markdown header injection (prevents structure hijacking)
- Excessive length (prevents prompt bloat, max 500 chars)
- New Interface:
RenderTemplateOptionsfor explicit security control - Backwards Compatible: Existing code using plain objects continues to work (treated as trusted)
- Files Updated:
examples/vertical-agents/customer-support/src/prompt-loader.tsexamples/vertical-agents/code-review/src/prompt-loader.tsexamples/vertical-agents/data-analyst/src/prompt-loader.tspackages/cli/templates/reusable-agent/prompt-loader.ts
- Tests Added:
examples/vertical-agents/customer-support/src/prompt-loader.test.ts - Migration Guide:typescript
// ✅ No changes needed - backwards compatible loadPrompt('system', { companyName: 'Acme' }); // ✅ Recommended: Explicitly mark untrusted variables loadPrompt('system', { trustedVariables: { companyName: 'Acme Corp' }, untrustedVariables: { userName: req.body.name } });
- Security Model:
@agentforge/core
- Middleware Helpers Not Exported from Package Root [P2]
- Problem: Middleware helpers (
withLogging,withCache,withRateLimit,withValidation,withConcurrency) and their factory functions (createSharedCache,createSharedRateLimiter,createSharedConcurrencyController) were defined inlanggraph/middleware/index.tsbut not re-exported fromlanggraph/index.ts, making them unavailable when importing from@agentforge/core - Impact: Users following documentation examples would get import errors when trying to use middleware helpers
- Solution: Added re-exports for all middleware helpers and their associated types to
packages/core/src/langgraph/index.ts - Location:
packages/core/src/langgraph/index.tslines 118-138
- Problem: Middleware helpers (
Documentation
- Invalid Imports in Advanced Patterns Tutorial [P2]
- Problem: Tutorial showed imports of
createReasoningNodeandcreateActionNodefrom@agentforge/patterns, but these are internal implementation details not exported from the package - Impact: Users copying the example code would get import errors
- Solution: Removed incorrect imports and improved the custom workflow example with proper model initialization and helper functions
- Location:
docs-site/tutorials/advanced-patterns.mdlines 241-295
- Problem: Tutorial showed imports of
Published
- All packages published to npm registry at version 0.11.7:
- @agentforge/core@0.11.7
- @agentforge/patterns@0.11.7
- @agentforge/tools@0.11.7
- @agentforge/testing@0.11.7
- @agentforge/cli@0.11.7
[0.11.6] - 2026-02-05
Fixed
@agentforge/cli
Tool Publish Command Skips Missing Scripts [P2]
- Problem: The
tool:publishcommand attempted to run test and build scripts even when they didn't exist in package.json, causing failures in projects without those scripts - Impact: Publishing simple tool packages without test or build scripts would fail with script execution errors
- Solution: Modified
resolveToolPath()to returnToolPathInfointerface with script availability flags; conditionally run test/build only if scripts exist; show clear skip messages - Location:
packages/cli/src/commands/tool/publish.tslines 29-60, 115-119, 183-237
- Problem: The
Scoped Package Names Misinterpreted as Paths [P2]
- Problem: Scoped package names like
@agentforge/myToolwere incorrectly treated as file paths due to the/character check - Impact: Publishing scoped packages would fail with "directory not found" errors
- Solution: Added regex check
/^@[^/]+\/[^/]+$/to distinguish scoped packages from actual file paths - Location:
packages/cli/src/commands/tool/publish.tslines 131-139
- Problem: Scoped package names like
Scoped Package Common Location Resolution [P2]
- Problem: When running
tool:publish @scope/namefrom repo root, only looked forpackages/@scope/namebut most repos store scoped packages in unscoped folders likepackages/name - Impact: Publishing scoped packages from repo root would fail unless user was in the tool directory
- Solution: Extract unscoped name from scoped packages and try both scoped and unscoped paths in common locations; prefer scoped folder if both exist
- Location:
packages/cli/src/commands/tool/publish.tslines 150-168
- Problem: When running
Tests
@agentforge/cli
- Added 6 comprehensive tests for
tool:publishcommand:- Skip build when no build script exists
- Skip test when no test script exists
- Skip both test and build when neither script exists
- Handle scoped package names correctly (not treat as paths)
- Resolve scoped package from unscoped folder in packages/
- Resolve scoped package from unscoped folder in tools/
- Prefer scoped folder if it exists over unscoped
Published
- All packages published to npm registry at version 0.11.6:
- @agentforge/core@0.11.6
- @agentforge/patterns@0.11.6
- @agentforge/tools@0.11.6
- @agentforge/testing@0.11.6
- @agentforge/cli@0.11.6
[0.11.5] - 2026-02-04
Fixed
@agentforge/core
- Tool Executor Priority Metrics Exclude Failures [P3]
- Problem: The
byPrioritymetrics inexecutor.tsonly tracked successful executions, skewing monitoring and observability stats - Impact: Failed tool executions were not counted in priority metrics, making it impossible to accurately monitor tool execution patterns
- Solution: Added
metrics.byPriority[priority]++to the error handling block so both successful and failed executions are tracked - Location:
packages/core/src/tools/executor.tsline 211
- Problem: The
@agentforge/patterns
- Tool Call Deduplication Cache Key Nested Object Handling [P3]
- Problem: The
generateToolCallCacheKeyfunction only normalized top-level argument keys, which could cause collisions or failed deduplication when nested objects had keys in different orders - Impact: Tool calls with identical nested arguments but different key orders could be treated as different calls, bypassing deduplication
- Solution: Implemented recursive
normalizeObject()function that properly sorts keys at all nesting levels, ensuring consistent cache keys - Location:
packages/patterns/src/shared/deduplication.tsline 11-40
- Problem: The
Tests
@agentforge/core
- Added 4 comprehensive tests for tool executor metrics tracking:
- Test for tracking successful executions by priority
- Test for tracking failed executions by priority
- Test for tracking mixed successful and failed executions by priority
- Test for metrics reset functionality
@agentforge/patterns
- Created new test suite
packages/patterns/tests/shared/deduplication.test.tswith 12 tests:- Top-level key order consistency
- Nested object key order consistency
- Deeply nested objects (3+ levels)
- Arrays within objects
- Null/undefined handling
- Complex nested structures with arrays and objects
Published
- All packages published to npm registry at version 0.11.5:
- @agentforge/core@0.11.5
- @agentforge/patterns@0.11.5
- @agentforge/tools@0.11.5
- @agentforge/testing@0.11.5
- @agentforge/cli@0.11.5
[0.11.4] - 2026-02-04
Fixed
@agentforge/core
Tool Registry Desync Prevention [P2]
- Problem: The
update()method allowed renaming tools by accepting a tool with a differentmetadata.namethan the registry key, causing Map key to desync from tool metadata - Impact: This broke lookups, prompts, and other methods that rely on
metadata.name - Solution: Added validation in
update()to prevent renaming - throws error iftool.metadata.namedoesn't match registry key - Guidance: Clear error message guides users to use
remove()+register()for renaming - Location:
packages/core/src/tools/registry.tsline 202
- Problem: The
State Defaults for Non-Reducer Channels [P2]
- Problem: Defaults declared in state configs were silently ignored for non-reducer channels, leaving fields like
status,shouldContinue,maxIterations, andinputundefined - Root Cause: LangGraph's
Annotation()API doesn't support defaults for LastValue channels - only for channels with reducers - Impact: Affected all patterns (ReAct, Plan-Execute, Reflection, Multi-Agent) where state fields with defaults weren't being initialized
- Solution: For non-reducer channels with defaults, use a "last value wins" reducer
(_left, right) => rightto enable default support while maintaining correct semantics - Location:
packages/core/src/langgraph/state.tsline 76 - Note: If a node explicitly returns
{ key: undefined }, it will override the default (expected behavior - nodes should omit keys instead)
- Problem: Defaults declared in state configs were silently ignored for non-reducer channels, leaving fields like
@agentforge/cli
Agent Deploy Command False Success [P2]
- Problem:
agent:deploycommand usedsetTimeoutto fake deployment and reported success without actually deploying - Impact: Incorrect behavior for a release tool - users thought agents were deployed when they weren't
- Solution: Replaced placeholder with proper error message and comprehensive deployment instructions for 4 methods (Docker, Kubernetes, Serverless, Manual)
- Location:
packages/cli/src/commands/agent/deploy.tsline 26
- Problem:
Tool Publish Command False Success [P2]
- Problem:
tool:publishcommand usedsetTimeoutto fake npm publishing and reported success without actually publishing - Impact: Critical issue for release tool - packages weren't being published to npm
- Solution: Implemented actual npm publishing using
execato runnpm publish - Added: New
publishPackage()utility function inpackages/cli/src/utils/package-manager.ts - Features: Comprehensive error handling for authentication (E401/ENEEDAUTH), permissions (E403), and version conflicts (E409/EPUBLISHCONFLICT)
- Location:
packages/cli/src/commands/tool/publish.tsline 51
- Problem:
Tests
@agentforge/core
- Added test for tool registry desync prevention
- Added 7 comprehensive tests for state defaults fix:
- Regression test verifying defaults work without
validateState() - Test showing
validateState()still works correctly - Test ensuring "last value wins" semantics (no accumulation)
- Test for backward compatibility (non-reducer channels without defaults)
- Test documenting residual risk (explicit
undefinedoverrides default) - Test showing best practice (nodes should omit keys, not write
undefined) - Edge case coverage
- Regression test verifying defaults work without
@agentforge/cli
- Updated 3
agent:deploytests to verify error message and deployment instructions - Updated to 9
tool:publishtests total:- Successful publishing
- Custom tag support
- Dry-run mode
- Test failure handling
- Build failure handling
- npm publish failure handling
- Authentication error handling
- Version conflict handling
- General error handling
- Added 5 new tests for
publishPackage()utility function
Published
- All packages published to npm registry at version 0.11.4:
- @agentforge/core@0.11.4
- @agentforge/patterns@0.11.4
- @agentforge/tools@0.11.4
- @agentforge/testing@0.11.4
- @agentforge/cli@0.11.4
[0.11.3] - 2026-02-04
Fixed
@agentforge/patterns
- CRITICAL HOTFIX: Multi-Agent Workload Tracking Completion [Multiple P1/P2 Fixes]
- Context: Version 0.11.2 fixed workload increment/decrement basics but had critical remaining bugs
- Fix 1 [P1]: Workload now decrements on both completion AND failure
- Problem: Workload was incremented on assignment but never decremented, causing load-balanced routing to become increasingly inaccurate over time
- Root Cause: The
executeWithLLM()helper function returned its own object that bypassed the workload decrement code. Additionally, the error handler didn't decrement workload on failure - Solution: Moved helper function, ensured workload decrement happens AFTER all execution paths complete, added workload decrement to error handler (catch block)
- Impact: Workload now correctly decrements on both success and failure paths
- Fix 2 [P2]: Missing worker IDs now fail fast with clear error messages
- Problem: If a worker ID was routed but missing in state.workers, workload was silently not updated, creating inconsistent state and hiding configuration errors
- Root Cause: Supervisor checked
if (worker)and silently continued if worker was undefined - Solution: Changed to
if (!worker)with error logging and exception throwing, listing available workers for debugging - Impact: Configuration errors are caught immediately instead of silently ignored
- Fix 3: Custom worker updates preserved when decrementing workload
- Problem: The workload decrement logic was overwriting worker updates returned by custom executeFn or ReAct agents
- Root Cause: Code did
workers: updatedWorkerswhich overwritesexecutionResult.workers - Solution: Merge
executionResult.workerswith workload decrement instead of overwriting - Impact: Custom execution paths can safely modify worker state (add skills, change availability, update other workers) without being overwritten
- Fix 4 [P2]: Partial executionResult.workers no longer drops other workers
- Problem: When executeFn returned only a subset of workers (e.g., just worker1), all other workers (worker2, worker3, etc.) were dropped from state
- Root Cause: Merge logic started with
executionResult.workersinstead ofstate.workers, losing all workers not in the partial update - Solution: Always start with
state.workersand merge in updates fromexecutionResult.workers - Impact: All workers are preserved in state even when custom execution paths return partial worker updates
Added
@agentforge/patterns
- Workload Management Contract Documentation
- Added comprehensive JSDoc on
createWorkerNode()explaining that framework ownscurrentWorkloadtracking - Added inline comments at workload decrement location documenting the contract
- Added code examples showing correct and incorrect usage
- Contract: Custom executeFn should NOT modify
currentWorkload(framework owns it), but CAN modify other worker properties (skills, availability, etc.) - Rationale: Workload is infrastructure concern (like React owning component lifecycle), simpler mental model, prevents bugs, consistent behavior
- Added comprehensive JSDoc on
Tests
@agentforge/patterns
- Added comprehensive workload tracking tests (6 new tests):
- Workload decrements on task failure/error
- Error when worker ID missing from state.workers
- Load-balanced routing changes after workload updates
- Custom executeFn worker updates preserved while decrementing workload
- Framework decrements workload even if executeFn modifies it (documents contract)
- Partial executionResult.workers doesn't drop other workers from state
- All 28 multi-agent node tests passing
- Total: 1011 tests passing across all packages
Published
- All packages published to npm registry at version 0.11.3:
- @agentforge/core@0.11.3
- @agentforge/patterns@0.11.3
- @agentforge/tools@0.11.3
- @agentforge/testing@0.11.3
- @agentforge/cli@0.11.3
[0.11.2] - 2026-02-04
Fixed
@agentforge/patterns
- CRITICAL: Multi-Agent Workload Tracking [P1 Priority]
- Fixed broken workload tracking that prevented load-balanced routing from reflecting in-flight work
- Problem 1: Workload never incremented on task assignment (supervisor node)
- When supervisor assigned tasks to workers, it created TaskAssignment objects but never incremented the currentWorkload counter in state
- Workers always appeared to have their initial workload (typically 0)
- Problem 2: Workload decrement used static config instead of state (worker node)
- When tasks completed, worker node decremented workload using capabilities.currentWorkload from the static config parameter
- Should have read from state.workers[id].currentWorkload instead
- This meant decrements were based on stale data, not current state
- Problem 3: Workload decrement only happened in LLM execution path
- Custom executeFn and ReAct agents returned directly without updating workload
- Only the default LLM execution path handled workload decrement
- This caused inconsistent workload tracking depending on execution method
- Solution:
- Supervisor node now increments workload for all assigned workers in state
- Worker node now reads current workload from state, not config
- Workload decrement now happens for ALL execution paths (custom executeFn, ReAct agents, and LLM execution)
- Impact:
- Load-balanced routing now correctly reflects in-flight work
- Workers with higher workload are deprioritized appropriately
- Workload tracking is consistent across all execution methods
- Fixes routing strategy that depends on accurate currentWorkload values
Published
- All packages published to npm registry at version 0.11.2:
- @agentforge/core@0.11.2
- @agentforge/patterns@0.11.2
- @agentforge/tools@0.11.2
- @agentforge/testing@0.11.2
- @agentforge/cli@0.11.2
[0.11.1] - 2026-02-04
Fixed
@agentforge/core
- Executor Contract Enforcement: Tool executor now properly enforces the
invoke()requirement to match the TypeScript type contract introduced in v0.11.0- Removed fallback to
execute()method for tools that don't implementinvoke() - Improved error message to guide developers: "Tool must implement invoke() method. Tools created with createTool() or toolBuilder automatically have this method. If you are manually constructing a tool, ensure it has an invoke() method."
- Added deprecation warning for tools that only implement
execute()(backward compatibility during migration period)
- Removed fallback to
- Consistent Logging: Replaced
console.warnwith structured logger in tool executor for consistent logging across the codebase- Deprecation warnings now appear in structured log format with timestamps and context
- Logger instance:
agentforge:tools:executor
Technical Details
- All 997 tests passing
- No breaking changes - backward compatible
- Tools created with
createTool()ortoolBuilderare unaffected - Only affects manually constructed tools that violate the type contract
[0.11.0] - 2026-02-04
Changed
@agentforge/core, @agentforge/patterns, @agentforge/tools
LangChain Compatibility: invoke() is now the primary method [Deprecation]
- What Changed:
invoke()is now the primary method for tool execution, withexecute()deprecated as an alias - Migration: Replace all
.execute(calls with.invoke(in your code - Timeline:
execute()will be removed in v1.0.0 (breaking change) - Backward Compatibility: Both methods work identically in v0.11.0 - no immediate action required
- Why: Aligns AgentForge with LangChain industry standards for better ecosystem compatibility
Implementation Details:
- Core tool interface now defines
invoke()as primary,execute()as deprecated alias - All tool helpers (
createTool(),toolBuilder()) create tools with both methods - Tool executor prefers
invoke()when available, falls back toexecute() - Updated 12 test files (core, patterns, tools) - 97 occurrences
- Updated 9 example files - 29 occurrences
- Updated 15 documentation files - 112+ occurrences
- All 997 tests passing
- Build successful
Files Modified:
packages/core/src/tools/types.ts- Updated Tool interface with deprecationpackages/core/src/tools/helpers.ts- Reversed alias directionpackages/core/src/tools/builder.ts- Updated ToolBuilderpackages/core/src/langchain/converter.ts- Uses invoke()packages/patterns/src/react/nodes.ts- Uses invoke()packages/patterns/src/plan-execute/nodes.ts- Uses invoke()- Plus 12 test files, 9 example files, and 15 documentation files
Migration Example:
typescript// Before (v0.10.x) const result = await tool.execute({ input: "test" }); // After (v0.11.0+) const result = await tool.invoke({ input: "test" });- What Changed:
Published
- All packages published to npm registry at version 0.11.0:
- @agentforge/core@0.11.0
- @agentforge/patterns@0.11.0
- @agentforge/tools@0.11.0
- @agentforge/testing@0.11.0
- @agentforge/cli@0.11.0
[0.10.7] - 2026-02-04
Fixed
@agentforge/patterns
- fix: Multi-agent iteration counter exponential growth [P1 Bug]
- Fixed iteration counter causing exponential growth (0→1→3→7→15) instead of linear increment (0→1→2→3→4)
- Problem: Supervisor node in
packages/patterns/src/multi-agent/nodes.tswas returningiteration: state.iteration + 1on line 186. Since theiterationFielduses an additive reducer(left, right) => left + right, this caused the iteration count to double each cycle instead of incrementing by 1. This caused agents to hitmaxIterationsmuch earlier than intended (e.g., after 3-4 cycles instead of 10). - Solution:
- Changed
iteration: state.iteration + 1toiteration: 1in supervisor node (line 186) - With additive reducer, returning
1means "add 1 to current iteration" - Added clarifying comment explaining the additive reducer behavior
- Changed
- Impact:
- Multi-agent workflows now correctly track iteration count
- Agents can run for the full intended number of iterations
- Prevents premature termination due to incorrect iteration counting
- Tests: Added comprehensive test in
packages/patterns/tests/multi-agent/nodes.test.tsverifying linear increment (0→1→2→3→4) with detailed comments explaining how the additive reducer works - Breaking Change: None - backward compatible bug fix
@agentforge/core
- fix: Tool executor invoke/execute compatibility [P2 Bug]
- Fixed runtime error for tools that only implement
execute()method - Problem: The executor in
packages/core/src/tools/executor.ts(lines 108-121) was always callingtool.invoke(), but according to the Tool interface,executeis required andinvokeis optional (LangChain-compatible alias). This would cause runtime errors for:- External tools (e.g., LangChain tools) that only implement
invoke - Manually created tool objects that only implement
execute
- External tools (e.g., LangChain tools) that only implement
- Solution:
- Updated
executeWithRetryfunction to check forinvokefirst (LangChain compatibility), fall back toexecute(required method) - Throws clear error if neither method exists
- Uses
.call(tool, input)to preserve correctthiscontext
- Updated
- Impact:
- Better compatibility with external tools and LangChain ecosystem
- Prevents cryptic "invoke is not a function" errors
- All AgentForge tools (created via
createTool()ortoolBuilder()) continue to work as they have both methods
- Tests: Added 8 comprehensive tests in
packages/core/tests/tools/executor.test.ts:- Tool with only
execute()method (should work) - Tool with only
invoke()method (should work for LangChain compatibility) - Tool with both methods (should prefer
invoke) - Tool with neither method (should throw clear error)
- Preserve
thiscontext when callingexecute - Preserve
thiscontext when callinginvoke - Retry logic with
executemethod - Retry logic with
invokemethod
- Tool with only
- Breaking Change: None - backward compatible bug fix
- Fixed runtime error for tools that only implement
Published
- All packages published to npm registry at version 0.10.7:
- @agentforge/core@0.10.7
- @agentforge/patterns@0.10.7
- @agentforge/tools@0.10.7
- @agentforge/testing@0.10.7
- @agentforge/cli@0.10.7
[0.10.6] - 2026-02-04
Fixed
@agentforge/patterns
fix: Tool-result messages now properly handled as ToolMessage instead of HumanMessage [P2 Bug]
- Fixed tool-result messages being treated as
HumanMessageinstead ofToolMessagein ReAct pattern - Problem: Observation nodes emitted messages with
role: 'tool'but were missingtool_call_id, and the reasoning node didn't handlerole: 'tool'case, causing tool outputs to fall back toHumanMessage. This mislabeled tool outputs and could degrade model behavior. - Solution:
- Added
tool_call_idfield to observation messages (line 336 inpackages/patterns/src/react/nodes.ts) - Added explicit handling for
role: 'tool'messages to create properToolMessageinstances (lines 63-70) - Added
tool_call_id?: stringtoMessageSchemato preserve the field during state validation (line 28 inpackages/patterns/src/react/schemas.ts)
- Added
- Impact:
- Tool outputs are now properly labeled for LLMs, improving model behavior and tool-calling accuracy
- Message flow correctly preserves the relationship between tool calls and their results via
tool_call_id - Aligns with LangChain's expected message format for tool interactions
- Tests: Added comprehensive test coverage for tool message handling and schema validation
- Breaking Change: None - backward compatible bug fix
- Fixed tool-result messages being treated as
fix: returnIntermediateSteps configuration now properly used [P3 Bug]
- Fixed
returnIntermediateStepsconfiguration parameter being accepted but never used - Problem: The scratchpad was always populated with intermediate steps regardless of the
returnIntermediateStepssetting, wasting memory and tokens when not needed. - Solution:
- Updated
createObservationNodeto acceptreturnIntermediateStepsparameter (line 299-308 inpackages/patterns/src/react/nodes.ts) - Conditionally populate scratchpad only when
returnIntermediateSteps: true(lines 340-354) - Passed flag from agent config to observation node (line 137 in
packages/patterns/src/react/agent.ts)
- Updated
- Impact:
- When
returnIntermediateSteps: false(default): Scratchpad is not populated, saving memory and tokens - When
returnIntermediateSteps: true: Scratchpad is populated with intermediate reasoning steps for debugging and observability
- When
- Tests: Added tests to verify both scenarios (scratchpad populated when true, empty when false)
- Breaking Change: None - backward compatible bug fix
- Fixed
chore: Updated confusing iteration counter comment for clarity
- Updated comment on line 110 of
packages/patterns/src/react/nodes.tsto clarify that the value1is being added to the iteration counter using an additive reducer, not setting it to 1 - Prevents confusion about how the iteration counter works
- Updated comment on line 110 of
Published
- All packages published to npm registry at version 0.10.6:
- @agentforge/core@0.10.6
- @agentforge/patterns@0.10.6
- @agentforge/tools@0.10.6
- @agentforge/testing@0.10.6
- @agentforge/cli@0.10.6
[0.10.5] - 2026-02-04
Fixed
@agentforge/patterns
- fix: Wrap stream() method in registerWorkers to inject worker registry [P2 Bug]
- Fixed stream method wrapping in standalone
registerWorkers()function - Problem:
registerWorkers()only wrapped theinvoke()method to inject worker registry, but did NOT wrap thestream()method. This meant streaming callers wouldn't see registered workers. - Solution:
- Added
_originalStreamproperty toMultiAgentSystemWithRegistryinterface (line 416) - Wrapped
stream()method inregisterWorkers()function (lines 494-510) following the same pattern asinvoke() - Ensures registered workers are merged into state for both
invoke()andstream()calls
- Added
- Impact:
- Streaming callers now see registered workers (same as invoke callers)
- Consistent behavior between
createMultiAgentSystem()andregisterWorkers() - Worker capabilities are properly injected into the initial state regardless of which method is used
- Location:
packages/patterns/src/multi-agent/agent.ts(lines 416, 494-510) - Added comprehensive test coverage:
- 2 new tests for stream method wrapping
- Tests verify that
stream()wrapper correctly merges registered workers into input - Tests verify correct tool name extraction from AgentForge Tools when using
stream() - Tests use spy/mock pattern to verify wrapper logic directly
- Breaking Change: None - backward compatible enhancement
- Fixed stream method wrapping in standalone
Published
- All packages published to npm registry at version 0.10.5:
- @agentforge/core@0.10.5
- @agentforge/patterns@0.10.5
- @agentforge/tools@0.10.5
- @agentforge/testing@0.10.5
- @agentforge/cli@0.10.5
[0.10.4] - 2026-02-04
Fixed
@agentforge/patterns
- fix: Correct tool name extraction for AgentForge Tools in Multi-Agent system [P2 Bug]
- Fixed tool name extraction in
MultiAgentSystemBuilder.registerWorkers()(line 371) - Fixed tool name extraction in standalone
registerWorkers()function (line 469) - Problem: Worker tool names were recorded as 'unknown' when using AgentForge Tools because the code read
t.nameinstead oft.metadata.name - Solution: Added
getToolName()helper function that correctly handles both AgentForge Tools (tool.metadata.name) and LangChain tools (tool.name) - Impact:
- Worker tool names are now correctly recorded in routing/tool prompts
- Runtime worker capabilities show the correct tool names
- The supervisor can make better routing decisions based on accurate tool information
- Location:
packages/patterns/src/multi-agent/agent.ts(lines 22-44, 371, 469) - Added comprehensive test coverage:
- 5 new tests for tool name extraction with both AgentForge Tools and LangChain tools
- Tests verify correct extraction from AgentForge Tools (using
metadata.name) - Tests verify correct extraction from LangChain tools (using
name) - Tests verify handling of mixed tool types
- Tests verify graceful fallback to 'unknown' for tools without name
- Updated
MultiAgentSystemBuildertest to properly assert tool name extraction
- Breaking Change: None - backward compatible with both tool types
- Fixed tool name extraction in
Published
- All packages published to npm registry at version 0.10.4:
- @agentforge/core@0.10.4
- @agentforge/patterns@0.10.4
- @agentforge/tools@0.10.4
- @agentforge/testing@0.10.4
- @agentforge/cli@0.10.4
[0.10.3] - 2026-02-04
Fixed
@agentforge/patterns
- fix: Correct task routing in wrapReActAgent for parallel execution [P1 Critical Bug]
- Fixed critical bug where
wrapReActAgent()used the most recent message from shared state instead of the worker's specific assignment - Problem: In parallel or multi-step multi-agent execution, workers could receive the wrong task (another worker's task from the most recent message)
- Solution: Changed task extraction to use
currentAssignment.taskdirectly instead ofstate.messages[state.messages.length - 1]?.content - Impact: Ensures correct task routing in parallel and multi-step scenarios
- Location:
packages/patterns/src/multi-agent/utils.ts(lines 78-103) - Added comprehensive test coverage:
- New test file:
packages/patterns/tests/multi-agent/utils.test.ts - 3 new tests specifically for parallel execution scenarios
- Tests verify correct task routing with multiple parallel assignments
- Tests verify graceful handling of missing/completed assignments
- New test file:
- Breaking Change: None - function signature and return type unchanged
- Fixed critical bug where
Published
- All packages published to npm registry at version 0.10.3:
- @agentforge/core@0.10.3
- @agentforge/patterns@0.10.3
- @agentforge/tools@0.10.3
- @agentforge/testing@0.10.3
- @agentforge/cli@0.10.3
[0.10.2] - 2026-02-04
Fixed
@agentforge/core
- fix: Move LangChain dependencies from peerDependencies to dependencies
- Moved
@langchain/coreand@langchain/langgraphfrompeerDependenciestodependencies - Moved
zodfrompeerDependenciestodependencies - Impact: Users no longer need to manually install LangChain dependencies
- Benefit: Smoother installation experience -
npm install @agentforge/corenow automatically installs all required dependencies - Breaking Change: None - this is purely a packaging improvement
- Moved
@agentforge/patterns
- fix: Remove redundant peerDependencies
- Removed duplicate
peerDependenciessection (dependencies were already correctly listed independencies) - Impact: Cleaner package.json, no functional changes
- Removed duplicate
Published
- All packages published to npm registry at version 0.10.2:
- @agentforge/core@0.10.2
- @agentforge/patterns@0.10.2
- @agentforge/tools@0.10.2
- @agentforge/testing@0.10.2
- @agentforge/cli@0.10.2
[0.10.1] - 2026-02-03
Changed
@agentforge/tools
- refactor: Complete tools directory structure migration - Internal refactoring for better maintainability
- Completed comprehensive refactoring of 72 tools across 16 monolithic files into organized directory structures
- All tool categories now follow consistent directory pattern with
index.ts,types.ts, andtools/subdirectory - Added 17 factory functions for programmatic configuration (
createSlackTools(),createHttpTools(), etc.) - No breaking changes - All public exports remain identical, fully backward compatible
- Benefits:
- Improved modularity - each tool in its own file (50-150 lines vs 100-600 lines)
- Better maintainability - changes to one tool don't affect others
- Enhanced discoverability - clear directory structure makes tools easy to find
- Consistent patterns - all 16 tool categories follow the same structure
- Type safety - shared types in
types.tsensure consistency - Testability - each tool can be tested independently
- Refactored Categories:
- Slack Tools (4 tools) -
slack.ts→slack/directory - HTTP Tools (3 tools) -
http-client.ts→http/directory - Scraper Tools (3 tools) -
scraper.ts→scraper/directory - HTML Parser Tools (3 tools) -
html-parser.ts→html-parser/directory - URL Validator Tools (3 tools) -
url-validator.ts→url-validator/directory - CSV Tools (4 tools) -
csv-parser.ts→csv/directory - JSON Tools (5 tools) -
json-processor.ts→json/directory - XML Tools (4 tools) -
xml-parser.ts→xml/directory - Transformer Tools (6 tools) -
transformer.ts→transformer/directory - File Operations (5 tools) -
file-operations.ts→operations/directory - Directory Operations (4 tools) -
directory-operations.ts→directory/directory - Path Utilities (8 tools) -
path-utilities.ts→path/directory - Date/Time Tools (5 tools) -
date-time.ts→date-time/directory - String Utilities (7 tools) -
string-utilities.ts→string/directory - Math Operations (4 tools) -
math-operations.ts→math/directory - Validation Tools (6 tools) -
validation.ts→validation/directory
- Slack Tools (4 tools) -
- Documentation: Updated README with directory structure explanation and factory function examples
- Test Results: All 975 tests passing
- Build: Successful
Published
- All packages published to npm registry at version 0.10.1:
- @agentforge/core@0.10.1
- @agentforge/patterns@0.10.1
- @agentforge/tools@0.10.1
- @agentforge/testing@0.10.1
- @agentforge/cli@0.10.1
[0.10.0] - 2026-02-03
Added
@agentforge/tools
- feat: add Confluence integration tools - Seven new tools for Atlassian Confluence integration
searchConfluence- Search for pages across all Confluence spacesgetConfluencePage- Retrieve a specific page by ID with full contentlistConfluenceSpaces- List all available Confluence spacesgetSpacePages- Get all pages within a specific spacecreateConfluencePage- Create new pages with optional parent pagesupdateConfluencePage- Update existing page content and metadataarchiveConfluencePage- Archive pages (move to trash)- Configurable via environment variables (
ATLASSIAN_API_KEY,ATLASSIAN_EMAIL,ATLASSIAN_SITE_URL) or programmatic configuration - Factory function
createConfluenceTools(config)for custom configuration - Comprehensive test coverage (32 tests)
- Full TypeScript support with Zod schema validation
- Structured logging with
[[tools:confluence]]prefix for debugging and monitoring - Tool count increased from 74 to 81 tools
- Web Tools category increased from 15 to 22 tools
Changed
@agentforge/tools
- refactor: Migrate all tools to directory structure pattern - Comprehensive refactoring for better maintainability
- Refactored 72 tools across 16 monolithic files into organized directory structures
- Phase 2: Slack Tools (4 tools) - Split
slack.ts(661 lines) into directory structure - Phase 3: Web Tools (10 tools) - Split HTTP, Scraper, HTML Parser, URL tools into directories
- Phase 4: Data Tools (19 tools) - Split CSV, JSON, XML, Transformer tools into directories
- Phase 5: File Tools (17 tools) - Split File Operations, Directory Operations, Path Utilities into directories
- Phase 6: Utility Tools (22 tools) - Split Date/Time, String, Math, Validation tools into directories
- Benefits:
- Improved modularity - each tool in its own file
- Better maintainability - changes to one tool don't affect others
- Enhanced discoverability - clear directory structure
- Consistent patterns - all tool categories follow the same structure
- Type safety - shared types ensure consistency
- Testability - each tool can be tested independently
- Directory Structure Pattern:
tool-category/ ├── index.ts # Main exports, factory functions, default instances ├── types.ts # TypeScript interfaces, Zod schemas, configuration types ├── auth.ts # Authentication helpers (for API tools) └── tools/ # Individual tool implementations ├── tool-1.ts ├── tool-2.ts └── tool-3.ts - Factory Functions: Each tool category now provides a factory function for custom configuration
createSlackTools(config?),createConfluenceTools(config?),createHttpTools(config?), etc.- Enables programmatic configuration without environment variables
- Supports multiple instances with different configurations
- No Breaking Changes: All public exports remain the same, fully backward compatible
- Test Results: All 975 tests passing
- Documentation: Updated README with directory structure explanation and factory function examples
Published
- All packages published to npm registry at version 0.10.0:
- @agentforge/core@0.10.0
- @agentforge/patterns@0.10.0
- @agentforge/tools@0.10.0
- @agentforge/testing@0.10.0
- @agentforge/cli@0.10.0
[0.9.1] - 2026-02-02
Changed
- @agentforge/core: Refactored LangGraph utilities organization - moved
retry,error-handler, andtimeoutfromlanggraph/patterns/tolanggraph/middleware/for better semantic clarity and organization
Added
- project: Added
.github/copilot-instructions.mdto provide comprehensive guidance for AI coding agents working with the AgentForge framework
Published
- All packages published to npm registry at version 0.9.1:
- @agentforge/core@0.9.1
- @agentforge/patterns@0.9.1
- @agentforge/tools@0.9.1
- @agentforge/testing@0.9.1
- @agentforge/cli@0.9.1
[0.9.0] - 2026-01-30
Added
@agentforge/tools
- feat: add Slack integration tools - Four new tools for Slack workspace integration
sendSlackMessage- Send messages to Slack channelsnotifySlack- Send notifications with @mentions to alert team membersgetSlackChannels- List available Slack channels (public and private)getSlackMessages- Read message history from channels- Configurable via environment variables (
SLACK_USER_TOKENorSLACK_BOT_TOKEN) or programmatic configuration - Factory function
createSlackTools(config)for custom token configuration - Comprehensive test coverage (23 tests)
- Full TypeScript support with Zod schema validation
- Structured logging for debugging and monitoring
- Tool count increased from 70 to 74 tools
- Web Tools category increased from 11 to 15 tools
Published
- All packages published to npm registry at version 0.9.0:
- @agentforge/core@0.9.0
- @agentforge/patterns@0.9.0
- @agentforge/tools@0.9.0
- @agentforge/testing@0.9.0
- @agentforge/cli@0.9.0
[0.8.2] - 2026-01-28
Changed
- Dependency Updates - Updated all LangChain packages to latest versions for improved compatibility and bug fixes
- Updated
@langchain/corefrom 1.1.8/1.1.15 to 1.1.17 - Updated
@langchain/langgraphfrom 1.0.7/1.1.1 to 1.1.2 - Updated
@langchain/openaifrom 1.2.2/0.3.14 to 1.2.3 - Applied updates across all packages and CLI templates
- Updated
Fixed
- Test Compatibility (@agentforge/tools) - Removed incompatible test in
ask-human.test.ts- The test used
vi.mock()inside a test case instead of at the top level - This pattern was incompatible with newer versions of Vitest/LangChain
- Test was attempting to mock dynamic import failure, which is not a realistic scenario since
@langchain/langgraphis a devDependency - Test count: 920 tests passing (down from 921 due to removed incompatible test)
- The test used
Published
- All packages published to npm registry at version 0.8.2:
- @agentforge/core@0.8.2
- @agentforge/patterns@0.8.2
- @agentforge/tools@0.8.2
- @agentforge/testing@0.8.2
- @agentforge/cli@0.8.2
[0.8.1] - 2026-01-28
Fixed
- Nested Graph Interrupt Bug (@agentforge/patterns) - Fixed infinite loop when worker agents use
askHumantool in multi-agent systems- The Bug: Worker agents using
askHumanwould cause infinite loops - the agent would ask the same question repeatedly even after the user responded - Root Cause: When a worker agent (nested graph) called
interrupt(), the multi-agent system didn't properly resume the worker's checkpoint. Instead, it re-executed the worker node from the beginning - The Fix: Implemented separate checkpoint namespaces for worker agents using LangGraph's
checkpointer: truefeature- Worker nodes now generate worker-specific thread IDs (format:
{parent_thread_id}:worker:{workerId}) - ReAct agent compilation now supports
checkpointer: trueto use parent's checkpointer with separate namespace - Worker agents configured to use
checkpointer: truewhen created in multi-agent systems
- Worker nodes now generate worker-specific thread IDs (format:
- Impact: Worker agents can now use
askHumantool without causing infinite loops, enabling proper human-in-the-loop workflows in multi-agent systems - Implementation Details:
- Phase 1: Updated worker node creation to pass worker-specific thread IDs
- Phase 2: Added
checkpointer: truesupport to ReAct agent compilation - Phase 3: Updated all worker agents to use
checkpointer: true - Phase 4: Enhanced type definitions to document worker checkpoint namespaces
- Phase 5: Validated fix with manual testing - confirmed no infinite loops
- Files Modified:
packages/patterns/src/multi-agent/utils.ts- Worker-specific thread ID generationpackages/patterns/src/react/types.ts- Addedcheckpointer: truesupport to typespackages/patterns/src/react/agent.ts- Updated compilation to handlecheckpointer: truepackages/patterns/src/react/builder.ts- AddedwithCheckpointer()methodplayground/src/agents/*-agent.ts- Updated all worker agents to usecheckpointer: trueplayground/src/system/pty-agi.ts- Passcheckpointer: trueto all worker agents
- Documentation Added:
packages/patterns/docs/react-agent-guide.md- AddedwithCheckpointer()method documentationdocs-site/guide/patterns/react.md- Added "State Persistence with Checkpointer" sectiondocs-site/guide/patterns/multi-agent.md- Added "Human-in-the-Loop with Checkpointers" sectiondocs/NESTED_GRAPH_INTERRUPT_FIX.md- Comprehensive planning document with all implementation phases
- Test Results: All 921 tests passing
- The Bug: Worker agents using
Published
- All packages published to npm registry at version 0.8.1:
- @agentforge/core@0.8.1
- @agentforge/patterns@0.8.1
- @agentforge/tools@0.8.1
- @agentforge/testing@0.8.1
- @agentforge/cli@0.8.1
[0.8.0] - 2026-01-28
Removed
- Tool-Enabled Supervisor (@agentforge/patterns) - Removed supervisor tool support due to fundamental technical incompatibility
- Why This Was Removed: The feature had a critical design flaw - supervisors require
withStructuredOutput()to guarantee routing decisions, but this is fundamentally incompatible with tool callingwithStructuredOutput()constrains the LLM to return a specific schema (RoutingDecision)bindTools()allows the LLM to return tool_calls instead of the structured output- These two capabilities are mutually exclusive - the LLM cannot do both simultaneously
- The previous implementation used complex retry loops to work around this, but it was unreliable and broke the type contract
- Removed
toolsparameter fromSupervisorConfig - Removed
maxToolRetriesparameter fromSupervisorConfig - Removed tool execution infrastructure from routing logic (~180 lines)
- Removed "Tool-Enabled Supervisor" section from documentation
- Migration Path: Use an intake/triage agent upstream of the supervisor for human-in-the-loop workflows
- Create a ReAct agent with
askHumantool to handle clarification (ReAct pattern supports tools natively) - Pass clarified requests to the multi-agent system supervisor (supervisor only does routing)
- Benefits: Cleaner separation of concerns, each agent has a coherent contract, more reliable and maintainable
- Example:typescript
// Intake agent handles human interaction (no structured output constraint) const intakeAgent = createReActAgent({ model: llm, tools: [askHumanTool], systemPrompt: 'Clarify ambiguous requests before routing...' }); // Supervisor handles routing (structured output, no tools) const system = createMultiAgentSystem({ supervisor: { strategy: 'llm-based', model: llm, // Uses withStructuredOutput internally systemPrompt: 'Route to the best worker...' }, workers: [...] }); // Chain them together const clarified = await intakeAgent.invoke({ input: userQuery }); const result = await system.invoke({ input: clarified.output });
- Create a ReAct agent with
- Test Count Impact: Removed 14 tests (integration-with-tools.test.ts and routing-with-tools.test.ts)
- Total test count: 921 tests passing (down from 1046 in v0.6.0, but v0.7.0 had 935 before this removal)
- All remaining tests passing with no regressions
- Why This Was Removed: The feature had a critical design flaw - supervisors require
Changed
- Documentation Updates - Updated all test count references to reflect current state
- Updated README.md badge from 1046 to 921 tests passing
- Updated README.md Phase 3 count from 143 to 129 tests
- Updated web-search TESTING.md from 29 to 45 unit tests with detailed breakdown
Published
- All packages published to npm registry at version 0.8.0:
- @agentforge/core@0.8.0
- @agentforge/patterns@0.8.0
- @agentforge/tools@0.8.0
- @agentforge/testing@0.8.0
- @agentforge/cli@0.8.0
[0.7.0] - 2026-01-27
Added
Agent Builder Utility - New shared utility for consistent StateGraph creation across agent patterns
- Located in
packages/patterns/src/shared/agent-builder.ts - Provides
createAgentGraph()function with standardized configuration - Eliminates boilerplate code in agent pattern implementations
- Consistent error handling and state management
- Located in
implementSafe()Method for ToolBuilder - Automatic error handling for tools- New method on ToolBuilder that wraps tool implementation in try-catch
- Automatically returns
{ success: boolean; data?: T; error?: string }format - Eliminates manual error handling boilerplate in tool implementations
- Type-safe error responses with full TypeScript support
- Example:typescript
const tool = toolBuilder() .name('read-file') .schema(z.object({ path: z.string().describe('Path to the file to read') })) .implementSafe(async ({ path }) => { return await fs.readFile(path, 'utf-8'); }) .build(); // Result: { success: true, data: "file content" } // Or on error: { success: false, error: "ENOENT: no such file..." }
Changed
Refactored 14 Tools to Use
implementSafe()- Eliminated 116 lines of boilerplate code- File Operations (8 tools): directoryList, directoryCreate, directoryDelete, fileSearch, fileReader, fileWriter, fileAppend, fileDelete
- Web Tools (1 tool): urlValidator (also updated UrlValidationResult interface)
- Data Tools (4 tools): jsonParser, jsonStringify, jsonQuery, jsonValidator
- All tools now use consistent error handling pattern
- Cleaner, more maintainable code focused on business logic
Consolidated Vitest Configurations - Workspace-level test configuration
- Created
vitest.workspace.tsat repository root - Removed 4 duplicate package-level vitest configurations
- Properly excludes CLI template tests (78 tests that shouldn't run in workspace)
- All 935 tests passing (84 test files)
- Created
Fixed
- DRY Violations Eliminated - Completed comprehensive DRY remediation plan
- Phase 1: Removed ReAct pattern duplication (~2,300 lines)
- Phase 2: Created shared utilities for error handling and state fields (~145 lines)
- Phase 3: Advanced refactoring with builder utilities (~176 lines)
- Total: ~2,621 lines of duplicate code eliminated
- Improved maintainability and developer experience
- Zero breaking changes for users
Published
- All packages published to npm registry at version 0.7.0:
- @agentforge/core@0.7.0
- @agentforge/patterns@0.7.0
- @agentforge/tools@0.7.0
- @agentforge/testing@0.7.0
- @agentforge/cli@0.7.0
[0.6.4] - 2026-01-24
Added
- Comprehensive Structured Logging System - Complete systematic implementation of hierarchical logging across the entire AgentForge framework
- Created 15 dedicated loggers across patterns and core components using consistent naming convention:
agentforge:<package>:<module>:<component> - Replaced 41 console.log/error calls with structured logging using appropriate log levels (DEBUG, INFO, WARN, ERROR)
- Enhanced Logger interface with
isDebugEnabled()andisLevelEnabled()methods for performance optimization - All 322 tests passing (Patterns: 204, Tools: 118) with zero breaking changes
- Created 15 dedicated loggers across patterns and core components using consistent naming convention:
Pattern Logging:
- ReAct Pattern: 3 loggers (reasoning, action, observation) - 8 instances migrated
- Reflection Pattern: 3 loggers (generator, reflector, reviser) - 11 instances migrated
- Plan-Execute Pattern: 3 loggers (planner, executor, replanner) - enhanced logging
- Multi-Agent Pattern: 1 logger (nodes) - 16 instances migrated
Core Components:
- Monitoring/Alerts: 4 console.log instances migrated to structured logging
- Tool Registry/Lifecycle: 2 console.error instances migrated to structured logging
Documentation:
- Created
DEBUGGING_GUIDE.md- comprehensive debugging reference with pattern-specific sections - Created
LOGGING_STANDARDS.md- official logging standards and best practices - Created
LOGGING_EXAMPLES.md- concrete code examples for all patterns - Updated all 4 pattern documentation files with structured logging sections
- Created
CONSOLE_LOGGING_AUDIT.md- complete audit of all console.log usage - Created
LOGGING_STRATEGY.md- 5-phase implementation strategy (100% complete)
Benefits:
- Consistent, hierarchical logging across all patterns and core components
- Fine-grained control via LOG_LEVEL environment variable (DEBUG, INFO, WARN, ERROR)
- Performance-optimized with level checking to avoid unnecessary string operations
- Backward compatible - existing verbose parameters still work (deprecated but functional)
- Better debugging experience with pattern-specific log filtering
Example Usage:
# Enable debug logging for all patterns
LOG_LEVEL=DEBUG node your-agent.js
# Enable debug logging for specific pattern
LOG_LEVEL=DEBUG DEBUG=agentforge:patterns:react:* node your-agent.js
# Enable debug logging for specific component
LOG_LEVEL=DEBUG DEBUG=agentforge:patterns:react:reasoning node your-agent.jsFixed
- Release Script Bug - Fixed root package.json not being updated during releases
- Added root
package.jsonto PACKAGE_FILES array inscripts/release.sh - Ensures version consistency across all package files
- Added root
Published
- All packages published to npm registry at version 0.6.4:
- @agentforge/core@0.6.4
- @agentforge/patterns@0.6.4
- @agentforge/tools@0.6.4
- @agentforge/testing@0.6.4
- @agentforge/cli@0.6.4
[0.6.3] - 2026-01-23
Added
- Parallel Routing in Multi-Agent Pattern - Route queries to multiple agents simultaneously for comprehensive answers
- Enhanced
RoutingDecisionSchemato support bothtargetAgent(single) andtargetAgents(array) fields - Updated LLM-based routing to handle structured output and select multiple target agents
- Modified supervisor node to create multiple
TaskAssignmentobjects for parallel execution - Enhanced supervisor router to detect comma-separated agent IDs and return arrays for LangGraph parallel execution
- Removed state update conflicts from worker nodes (
currentAgent,status) to enable parallel execution - Simplified worker router to always return 'supervisor' for cleaner state management
- Added comprehensive documentation with examples, execution flow diagrams, and best practices
- Fully backward compatible - existing systems continue to work with single-agent routing
- Enhanced
Benefits:
- Comprehensive answers combining insights from multiple specialists
- Faster execution through parallel processing instead of sequential routing
- Better coverage of complex queries requiring multiple perspectives
- Intelligent aggregation of results from multiple agents
Example Use Cases:
- Code + Security: "Are there security issues in the auth module?"
- Code + Documentation: "How does authentication work?"
- Legal + HR: "What are compliance requirements for employee data?"
Published
- All packages published to npm registry at version 0.6.3:
- @agentforge/core@0.6.3
- @agentforge/patterns@0.6.3
- @agentforge/tools@0.6.3
- @agentforge/testing@0.6.3
- @agentforge/cli@0.6.3
[0.6.3] - 2026-01-23
Added
- Parallel Routing in Multi-Agent Pattern - Route queries to multiple agents simultaneously for comprehensive answers
- Enhanced
RoutingDecisionSchemato support bothtargetAgent(single) andtargetAgents(array) fields - Updated LLM-based routing to handle structured output and select multiple target agents
- Modified supervisor node to create multiple
TaskAssignmentobjects for parallel execution - Enhanced supervisor router to detect comma-separated agent IDs and return arrays for LangGraph parallel execution
- Removed state update conflicts from worker nodes (
currentAgent,status) to enable parallel execution - Simplified worker router to always return 'supervisor' for cleaner state management
- Added comprehensive documentation with examples, execution flow diagrams, and best practices
- Fully backward compatible - existing systems continue to work with single-agent routing
- Enhanced
Benefits:
- Comprehensive answers combining insights from multiple specialists
- Faster execution through parallel processing instead of sequential routing
- Better coverage of complex queries requiring multiple perspectives
- Intelligent aggregation of results from multiple agents
Example Use Cases:
- Code + Security: "Are there security issues in the auth module?"
- Code + Documentation: "How does authentication work?"
- Legal + HR: "What are compliance requirements for employee data?"
Published
- All packages published to npm registry at version 0.6.3:
- @agentforge/core@0.6.3
- @agentforge/patterns@0.6.3
- @agentforge/tools@0.6.3
- @agentforge/testing@0.6.3
- @agentforge/cli@0.6.3
[0.6.2] - 2026-01-23
Fixed
- Plan-Execute Pattern Interrupt Handling - Fixed GraphInterrupt propagation in Plan-Execute pattern
- Added GraphInterrupt detection and re-throw logic to executor node (
@agentforge/patterns) - Ensures
askHumantool works correctly in Plan-Execute agents - Completes interrupt handling coverage across all agent patterns that execute tools
- Now all patterns support human-in-the-loop workflows: ReAct, Multi-Agent, and Plan-Execute
- Added GraphInterrupt detection and re-throw logic to executor node (
Published
- All packages published to npm registry at version 0.6.2:
- @agentforge/core@0.6.2
- @agentforge/patterns@0.6.2
- @agentforge/tools@0.6.2
- @agentforge/testing@0.6.2
- @agentforge/cli@0.6.2
[0.6.1] - 2026-01-22
Fixed
- askHuman Tool Interrupt Handling - Fixed GraphInterrupt propagation for proper human-in-the-loop workflows
- Fixed GraphInterrupt propagation in ReAct action nodes (
@agentforge/core) - Fixed GraphInterrupt propagation in multi-agent worker nodes (
@agentforge/patterns) - Added config parameter to
executeFnfor LangGraph runtime configuration support - Ensures
interrupt()errors bubble up correctly through all execution layers - Added detailed code comments explaining GraphInterrupt handling
- Fixed GraphInterrupt propagation in ReAct action nodes (
Changed
- Internal Logging - Replaced console.log debug statements with structured logging
- Implemented structured logging in askHuman tool with debug-level logs
- Implemented structured logging in multi-agent utils with debug/error levels
- Added LOG_LEVEL environment variable support (debug, info, warn, error)
- Improves production observability and debugging capabilities
Documentation
- Logging API Documentation - Added comprehensive documentation for existing logger API
- Added
createLoggerandLogLeveldocumentation to Core API reference - Updated monitoring guide to show built-in logger as primary option
- Updated deployment guide to show built-in logger as recommended option
- Documented LOG_LEVEL environment variable usage
- Showed Winston as alternative for advanced logging needs (file rotation, remote logging)
- Added
Published
- All packages published to npm registry at version 0.6.1:
- @agentforge/core@0.6.1
- @agentforge/patterns@0.6.1
- @agentforge/tools@0.6.1
- @agentforge/testing@0.6.1
- @agentforge/cli@0.6.1
[0.6.0] - 2026-01-22
Added
Tool-Enabled Supervisor (@agentforge/patterns)
DEPRECATED
This feature was removed in a later version. See [Unreleased] section for migration path to intake/triage agent pattern.
- Supervisor Tools for Multi-Agent Pattern - Supervisors can now use tools during routing decisions
- Added optional
toolsparameter toSupervisorConfigfor tool-enabled routing - Added
maxToolRetriesparameter to control tool call retry attempts (default: 3) - Supervisors can gather additional information before routing tasks to workers
- Enables human-in-the-loop workflows with
askHumantool in supervisor - Automatic tool call detection and execution in routing logic
- Conversation history tracking across tool calls for context preservation
- Full backward compatibility - tools are optional
- 11 new unit tests for routing with tools
- 3 new integration tests for system configuration
- Total Test Count: 1046 tests passing (up from 1032)
- Added optional
Examples
- New Multi-Agent Example -
05-supervisor-with-askhuman.ts- Demonstrates supervisor using
askHumantool for ambiguous requests - Shows clear vs. ambiguous request handling
- Best practices for tool-enabled supervisors
- Demonstrates supervisor using
Changed
Documentation
Terminology Update - Standardized on "vertical agents" terminology
- Renamed "reusable agents" to "vertical agents" (industry-standard term)
- Updated all documentation, examples, and navigation
- Renamed
examples/reusable-agents/→examples/vertical-agents/ - Renamed docs guide:
reusable-agents.md→vertical-agents.md - Updated CLI templates and references
- Maintained backward compatibility with 'reusable-agent' keyword for discoverability
- Improves clarity and aligns with common industry terminology
Multi-Agent Pattern Documentation - Enhanced with tool-enabled supervisor section
- Comprehensive examples and best practices
- Updated both package docs and docs-site
- New feature documentation:
docs/FEATURE_TOOL_ENABLED_SUPERVISOR.md
Test Count Updates - Updated test counts across all documentation
- README.md: Updated badge and metrics to show 1046 tests
- All documentation now reflects current test coverage
Published
- All packages published to npm registry at version 0.6.0:
- @agentforge/core@0.6.0
- @agentforge/patterns@0.6.0 (includes tool-enabled supervisor)
- @agentforge/tools@0.6.0
- @agentforge/testing@0.6.0
- @agentforge/cli@0.6.0
[0.5.4] - 2026-01-21
Added
Checkpointer Support (@agentforge/patterns)
- Checkpointer Support Across All Patterns - Enable state persistence and human-in-the-loop workflows
- Added optional
checkpointerparameter to all 4 agent patterns:createReActAgent()- ReAct pattern with checkpointingcreatePlanExecuteAgent()- Plan-Execute pattern with checkpointingcreateReflectionAgent()- Reflection pattern with checkpointingcreateMultiAgentSystem()- Multi-Agent pattern with checkpointing
- Fully backward compatible - checkpointer is optional
- Enables askHuman tool usage with all patterns
- Enables conversation continuity and state persistence
- Enables LangGraph interrupts for human-in-the-loop workflows
- 4 new tests for checkpointer support (2 ReAct + 2 Multi-Agent)
- Updated JSDoc examples showing checkpointer usage with MemorySaver
- Total Test Count: 1032 tests passing (up from 1028)
- Added optional
Changed
Documentation
- Test Count Updates - Updated test counts across all documentation
- README.md: Updated badge and metrics to show 1032 tests
- docs/ROADMAP.md: Updated test count to 1032 tests
- All documentation now reflects current test coverage
Published
- All packages published to npm registry at version 0.5.4:
- @agentforge/core@0.5.4
- @agentforge/patterns@0.5.4
- @agentforge/tools@0.5.4
- @agentforge/testing@0.5.4
- @agentforge/cli@0.5.4
[0.5.3] - 2026-01-21
Fixed
CLI Template (@agentforge/cli)
- Reusable Agent Template tsconfig.json - Fixed incorrect TypeScript configuration
- Removed invalid
extendspath to non-existenttsconfig.base.json - Added full standalone compiler options (templates should be self-contained)
- Fixed
rootDirfrom./srcto.(template files are at root level) - Fixed
includefromsrc/**/*to.(no src directory in template) - Template now matches pattern used in other CLI templates (minimal, full, etc.)
- Resolves TypeScript errors when opening template in IDE
- Removed invalid
Published
- All packages published to npm registry at version 0.5.3:
- @agentforge/core@0.5.3
- @agentforge/patterns@0.5.3
- @agentforge/tools@0.5.3
- @agentforge/testing@0.5.3
- @agentforge/cli@0.5.3
[0.5.2] - 2026-01-21
Added
Human-in-the-Loop Support (@agentforge/tools, @agentforge/core)
askHuman Tool - New tool for human-in-the-loop workflows
- Pauses agent execution to request human input or approval
- Priority levels: low, normal, high, critical
- Timeout handling with default responses
- Suggested responses for UI integration
- LangGraph interrupt integration
- Full TypeScript support with Zod validation
- 11 comprehensive unit tests
Interrupt Handling Utilities (@agentforge/core)
HumanRequest,HumanRequestPriority,HumanRequestStatustypes- Interrupt creation and type guard utilities
- Thread status tracking
- SSE event formatters for real-time communication
- 19 unit tests for interrupt and streaming utilities
New Agent Tools Category - Created dedicated category for agent interaction tools
- Tool count increased from 69 to 70 tools
- 5 categories: Web, Data, File, Utility, Agent
Reusable Agent Examples
- Three Production-Ready Vertical Agents - Complete examples in
examples/vertical-agents/- Customer Support Agent (24 tests passing)
- Code Review Agent (26 tests passing)
- Data Analyst Agent (28 tests passing)
- Each demonstrates factory function pattern, external prompts, tool injection, feature flags
- Total: 78 comprehensive tests across all examples
- Total Test Count: 1028 tests passing across all packages (up from 897)
CLI Scaffolding (@agentforge/cli)
- New Command:
agent:create-reusable- Scaffold production-ready reusable agents- Interactive prompts for agent name, description, and author
- Complete template with factory function pattern
- External prompt templates (
.mdfiles with{{variable}}placeholders) - Prompt loader utility for template rendering
- Comprehensive test suite (14 test cases)
- Configuration validation with Zod
- Tool injection support and feature flags
- Full documentation and examples
- 5 CLI command tests
Documentation
- Reusable Agents Guide - Complete guide for building configurable agents
- Factory function pattern
- External prompt templates
- Tool injection and feature flags
- Configuration validation
- Testing patterns and best practices
- Main README for Reusable Agents - Overview of all three example agents (341 lines)
- Updated Examples README - Added reusable agents section and learning path
- CLI Documentation - Detailed usage guide for
agent:create-reusablecommand
Changed
- Moved
HumanRequesttypes from tools to core (shared framework types) - Updated all documentation to reflect 70 tools
- Added
@langchain/langgraphas peer dependency (optional) for tools package
Fixed
- Lockfile Update - Updated
pnpm-lock.yamlto include reusable agent example dependencies- Fixes CI deployment issue with
--frozen-lockfileflag - Ensures reproducible builds in GitHub Actions
- Fixes CI deployment issue with
Published
- All packages published to npm registry at version 0.5.2:
- @agentforge/core@0.5.2
- @agentforge/patterns@0.5.2
- @agentforge/tools@0.5.2
- @agentforge/testing@0.5.2
- @agentforge/cli@0.5.2
[0.5.1] - 2026-01-16
Added
Multi-Agent Pattern Enhancements (@agentforge/patterns)
Streaming Support - Added
stream()method wrapper to Multi-Agent pattern- Ensures worker capabilities are injected into initial state when using streaming mode
- Maintains consistency with
invoke()method behavior - Enables real-time streaming of multi-agent workflows
Tool Usage Tracking - Enhanced ReAct agent wrapper with tool tracking
- Automatically extracts and logs tools used during ReAct agent execution
- Includes
tools_usedarray in task result metadata - Removes duplicate tool names for cleaner reporting
- Adds verbose logging to show which tools were used by each worker
Changed
- Updated all package versions to 0.5.1
- Improved observability of ReAct agents in Multi-Agent workflows
Published
- All packages published to npm registry at version 0.5.1:
- @agentforge/core@0.5.1
- @agentforge/patterns@0.5.1 (includes streaming support and tool tracking)
- @agentforge/tools@0.5.1
- @agentforge/testing@0.5.1
- @agentforge/cli@0.5.1
[0.5.0] - 2026-01-15
Added
Multi-Agent Pattern Enhancement (@agentforge/patterns)
- Automatic ReAct Agent Integration - Multi-Agent workers can now accept ReAct agents directly
- New
agentproperty inWorkerConfigfor ReAct agent instances - Automatic detection and wrapping of ReAct agents via
isReActAgent() - Seamless state conversion between Multi-Agent and ReAct formats
- Priority system:
executeFn>agent> default LLM execution - Eliminates boilerplate wrapper code (20+ lines → 1 line)
- Full backward compatibility with existing
executeFnapproach - Enhanced error handling and verbose logging
- New utility functions:
isReActAgent()andwrapReActAgent()
- New
Developer Experience
- Release Automation - Added comprehensive release tooling
scripts/release.sh- Automated version bump scriptscripts/publish.sh- Automated npm publishing scriptRELEASE_CHECKLIST.md- Complete release checklist.ai/RELEASE_PROCESS.md- AI assistant release guide
Changed
- Updated all package versions to 0.5.0
- Updated VitePress documentation site to display v0.5.0
- Updated CLI templates to use @agentforge/* ^0.5.0
- Improved
WorkerConfigtype definitions with comprehensive JSDoc
Published
- All packages published to npm registry at version 0.5.0:
- @agentforge/core@0.5.0
- @agentforge/patterns@0.5.0 (includes ReAct agent integration)
- @agentforge/tools@0.5.0
- @agentforge/testing@0.5.0
- @agentforge/cli@0.5.0
[0.4.1] - 2026-01-15
Added
Tool Compatibility (@agentforge/tools)
invoke()method alias - Addedinvoke()as an alias toexecute()for all tools- Provides compatibility with LangChain's tool interface
- Both methods work identically - use whichever fits your framework
- No breaking changes -
execute()remains the primary method - Fully typed with TypeScript support
Changed
- Updated all package versions to 0.4.1
- Updated VitePress documentation site to display v0.4.1
- Updated CLI templates to use @agentforge/* ^0.4.1
Published
- All packages published to npm registry at version 0.4.1:
- @agentforge/core@0.4.1
- @agentforge/patterns@0.4.1
- @agentforge/tools@0.4.1 (includes invoke() alias)
- @agentforge/testing@0.4.1
- @agentforge/cli@0.4.1
[0.4.0] - 2026-01-09
Added
Web Search Tool (@agentforge/tools)
- New
webSearchtool - Intelligent web search with dual provider support- DuckDuckGo provider - Free, no API key required
- Serper provider - Premium Google search results (optional, requires API key)
- Smart fallback mechanism - Automatically falls back to alternative provider if primary returns no results
- Configurable timeout - Default 30s, configurable from 1-60 seconds
- Retry logic - Exponential backoff with 3 retries for transient failures
- Performance optimizations - Efficient result parsing and processing
- Comprehensive testing - 45 tests with 100% statement coverage, 92.5% branch coverage
- Full documentation - README, JSDoc comments, and usage examples
Features
- Support for custom search queries with configurable result limits (1-50 results)
- Metadata tracking (response time, source provider, fallback usage)
- Environment variable support (
SERPER_API_KEYfor premium features) - TypeScript type definitions for all inputs and outputs
- Zod schema validation for inputs
Documentation
- Updated tools README with webSearch documentation
- Added comparison table: DuckDuckGo vs Serper
- Created usage examples for both providers
- Added environment setup instructions
Changed
- Tool count increased from 68 to 69 tools
- Updated all package versions to 0.4.0
- Updated VitePress documentation site to display v0.4.0
- Marked docs-site package as private (not published to npm)
Fixed
- Updated pnpm lockfile to use
workspace:*for internal dependencies - Fixed GitHub Actions CI deployment issue with frozen lockfile
Published
- All packages published to npm registry at version 0.4.0:
- @agentforge/core@0.4.0
- @agentforge/patterns@0.4.0
- @agentforge/tools@0.4.0 (includes webSearch)
- @agentforge/testing@0.4.0
- @agentforge/cli@0.4.0
[0.3.9] - 2026-01-09
Added
Tool Relations: Define relationships between tools to guide LLM workflows
.requires(tools)- Tools that must be called before this tool.suggests(tools)- Tools that work well with this tool.conflicts(tools)- Tools that conflict with this tool.follows(tools)- Tools this typically follows in a workflow.precedes(tools)- Tools this typically precedes in a workflow- Full TypeScript support with
ToolRelationsinterface andToolRelationsSchemavalidation - Helps LLMs make better decisions about tool selection and ordering
Minimal Prompt Mode: Reduce token usage with native tool calling providers
- New
minimaloption inToolRegistry.generatePrompt() - Only includes supplementary context (relations, examples, notes, limitations)
- Excludes basic tool definitions (name, description, parameters) sent via API
- Reduces token usage by up to 67% when using OpenAI, Anthropic, Gemini, or Mistral
- Backward compatible - opt-in via
minimal: trueflag
- New
Enhanced Prompt Generation: New options for
ToolRegistry.generatePrompt()includeRelations- Include tool relations in promptsminimal- Enable minimal prompt mode for native tool calling
Improved
- Tool Builder API: Added 5 new fluent methods for defining tool relations
- Documentation: Updated API docs and examples with tool relations and minimal mode
- Type Safety: Full TypeScript support for all new features with validation
Tests
- Added 106 new tests for tool relations and minimal prompt mode
- All 516 tests passing across the core package
[0.3.5] - 2026-01-08
Fixed
- CLI Templates: Removed incorrect
.compile()calls from all templatescreateReActAgent()already returns a compiled graph- Fixed minimal, full, cli, and api templates
- Users no longer need to call
.compile()on pattern creation functions
[0.3.4] - 2026-01-08
Changed
- Breaking Change: Standardized on
modelparameter across all agent patterns- Changed all config interfaces to use
modelinstead ofllm - Affects: ReAct, Reflection, Plan-Execute, and Multi-Agent patterns
- Updated all documentation and examples to use
model - This provides a consistent, modern API across the framework
- Changed all config interfaces to use
[0.3.3] - 2026-01-08
Added
- CLI Templates: Added environment validation to all templates (minimal, full, cli, api)
- Validates required environment variables (OPENAI_API_KEY) before starting
- Provides clear, helpful error messages when variables are missing
- Includes step-by-step instructions on how to fix missing environment variables
- Prevents cryptic OpenAI SDK errors when API key is not configured
Improved
- Documentation: Enhanced quick-start guide with more explicit environment setup instructions
- Added warning about setting up .env BEFORE running the agent
- Clarified the importance of copying .env.example to .env
- Added explanation of what happens if environment setup is skipped
[0.3.2] - 2026-01-08
Fixed
- CLI Minimal Template: Added missing
dotenvpackage dependency - CLI Minimal Template: Added missing
.env.examplefile - CLI Minimal Template: Added
import 'dotenv/config'to load environment variables - CLI Minimal Template: Updated README with environment setup instructions
[0.3.1] - 2026-01-08
Fixed
- CLI Templates: Fixed version references in CLI templates -
@agentforge/patternswas incorrectly referencing^0.2.0instead of^0.3.1 - All template
package.jsonfiles now correctly reference^0.3.1for all@agentforge/*packages
[0.3.0] - 2026-01-08
Added
- Initial public release with all core packages
- Complete documentation site
- CLI tool for project scaffolding
- 827 passing tests across all packages
[0.2.0] - 2026-01-08
Changed
- BREAKING: Updated to LangChain v1.x (from v0.3.x)
@langchain/core@^1.1.0(was^0.3.x)@langchain/langgraph@^1.0.0(was^0.2.x)langchain@^1.2.0(was^0.3.x)@langchain/openai@^1.2.0(was^0.3.x)
- All packages now use consistent LangChain v1.x peer dependencies
- Templates updated to use latest LangChain versions
Fixed
- Resolved peer dependency conflicts between packages
- Fixed
workspace:*dependencies in published packages
[0.1.9] - 2026-01-08
Fixed
- All Packages: Replaced
workspace:*dependencies with actual npm versions to fix installation issues - Added
.npmrcconfiguration for proper workspace dependency handling
[0.1.8] - 2026-01-08
Fixed
- CLI: Fixed template path resolution - was going up too many directory levels
- CLI: Replaced
workspace:*dependencies with actual npm versions in all templates - Repository URLs now use
git+https://format to avoid npm warnings
[0.1.6] - 2026-01-08
Added
- Changelog and Contributing guide pages
Fixed
- CLI: Fixed
__dirnameerror in ES modules by usingimport.meta.urlinstead - Template copying now works correctly when creating new projects
[0.1.5] - 2026-01-08
Added
- Complete documentation site with VitePress
- 34 documentation pages covering all aspects of the framework
- Interactive examples and tutorials
- Comprehensive API reference for all packages
- Verification checklist for documentation quality
Changed
- Updated documentation site version display to v0.1.5
Fixed
- Documentation site navigation and links
[0.1.0] - 2026-01-07
Added
Core Package (@agentforge/core)
Tool System
ToolBuilderfor creating type-safe tools with Zod validationToolRegistryfor managing and discovering toolsToolExecutorwith retry logic and error handling- LangChain tool conversion utilities
- 69+ built-in tools across 8 categories
Middleware System
- Composable middleware architecture
- Built-in middleware: caching, rate limiting, validation, logging, metrics
- Middleware composition utilities
Streaming Support
- SSE (Server-Sent Events) streaming
- WebSocket streaming
- Progress tracking and backpressure management
- Stream transformers and utilities
Resource Management
- Resource lifecycle management
- Connection pooling
- Automatic cleanup and disposal
- Health checks
Monitoring & Observability
- Metrics collection (counters, gauges, histograms)
- Event tracking
- Performance monitoring
- Integration with monitoring services
Patterns Package (@agentforge/patterns)
ReAct Pattern
- Reasoning and acting loop
- Tool selection and execution
- Configurable max iterations
Plan-Execute Pattern
- Planning phase with task decomposition
- Execution phase with progress tracking
- Re-planning on failures
Reflection Pattern
- Self-critique and improvement
- Iterative refinement
- Quality scoring
Multi-Agent Pattern
- Agent coordination and communication
- Supervisor and worker agents
- Message passing and state sharing
CLI Package (@agentforge/cli)
- Project scaffolding with templates
- 13 commands for development workflow
- Interactive project creation
- Development server
- Build and deployment tools
Testing Package (@agentforge/testing)
- Mock factories for agents, tools, and LLMs
- Test helpers and utilities
- Fixtures for common test scenarios
- Integration testing support
Tools Package (@agentforge/tools)
- 69+ production-ready tools
- Categories: web, file system, data processing, API, database, math, text, utilities
- Full TypeScript support with Zod validation
Documentation
- Complete getting started guide
- Core concepts documentation
- Pattern-specific guides
- API reference for all packages
- 6 example projects
- 5 step-by-step tutorials
- Deployment guides
Developer Experience
- Full TypeScript support
- Comprehensive type definitions
- ESLint and Prettier configuration
- Vitest for testing
- pnpm workspace setup
- GitHub Actions CI/CD
[Unreleased]
Planned Features
- Additional agent patterns (Tree of Thoughts, Chain of Thought)
- More built-in tools
- Enhanced monitoring and observability
- Performance optimizations
- Additional deployment templates
- Plugin system
- Visual agent builder
- Agent marketplace
Version History
- 0.9.0 (2026-01-30) - Added Slack integration tools (4 new tools: sendSlackMessage, notifySlack, getSlackChannels, getSlackMessages)
- 0.8.2 (2026-01-28) - Updated LangChain packages to latest versions, fixed test compatibility
- 0.8.1 (2026-01-28) - Fixed nested graph interrupt bug - worker agents can now use askHuman without infinite loops
- 0.8.0 (2026-01-28) - Removed tool-enabled supervisor feature (fundamental technical incompatibility)
- 0.7.0 (2026-01-27) - Agent builder utility, implementSafe() method, DRY remediation (~2,621 lines eliminated)
- 0.6.4 (2026-01-24) - Comprehensive structured logging system across all patterns and core components
- 0.6.3 (2026-01-23) - Parallel routing for multi-agent pattern - route to multiple agents simultaneously
- 0.6.2 (2026-01-23) - Fixed Plan-Execute pattern interrupt handling
- 0.6.1 (2026-01-22) - Fixed askHuman interrupt handling, added logging documentation
- 0.6.0 (2026-01-22) - Tool-enabled supervisors for multi-agent pattern (deprecated), vertical agents terminology
- 0.5.4 (2026-01-21) - Checkpointer support for all patterns, enabling human-in-the-loop workflows
- 0.5.3 (2026-01-21) - Fixed vertical-agent template tsconfig.json
- 0.5.2 (2026-01-21) - Human-in-the-Loop support, vertical agent examples, and CLI scaffolding
- 0.5.1 (2026-01-16) - Multi-Agent streaming support and tool usage tracking
- 0.5.0 (2026-01-15) - Automatic ReAct agent integration for Multi-Agent pattern, release automation
- 0.4.1 (2026-01-15) - Added invoke() method alias for LangChain compatibility
- 0.4.0 (2026-01-09) - Added webSearch tool with DuckDuckGo and Serper providers
- 0.3.3 (2026-01-08) - Added environment validation to all CLI templates with helpful error messages
- 0.3.2 (2026-01-08) - Fixed minimal template missing dotenv configuration
- 0.3.1 (2026-01-08) - Fixed CLI template version references
- 0.3.0 (2026-01-08) - Initial public release with all core packages
- 0.2.0 (2026-01-08) - BREAKING: Updated to LangChain v1.x, fixed peer dependencies
- 0.1.9 (2026-01-08) - Fixed workspace:* dependencies in all packages
- 0.1.8 (2026-01-08) - CLI template path and dependency fixes
- 0.1.6 (2026-01-08) - CLI ES module fix, changelog and contributing pages
- 0.1.5 (2026-01-08) - Documentation updates
- 0.1.0 (2026-01-07) - Initial release