Skip to content

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.md capturing the structural runtime-shape detection strategy, compatibility fallback, and validation evidence

Changed

Workspace - Release Validation Path Hardening

  • Added the canonical pnpm release:validate maintainer 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.yaml build approvals, added a shared approval-check guard, and switched the root test script to vitest run so release-time validation stays deterministic in a normal maintainer workspace

@agentforge/patterns - ReAct Agent Detection

  • Hardened packages/patterns/src/multi-agent/utils-react-detection.ts to prefer stable LangGraph runtime-shape checks over constructor-name matching while preserving the existing CompiledGraph and CompiledStateGraph fallback for compatibility

Fixed

Workspace - Release Process Follow-Through

  • Removed the release-time drift that previously forced maintainers to improvise direct tsup and vitest invocations when pnpm preflight 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, and error-handling.suite.ts behind the stable packages/tools/tests/data/relational/tools/delete-executor.test.ts public entrypoint
  • Added story documentation in docs/st09074-relational-delete-executor-modularization.md capturing the executor split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Delete Executor Runtime Modularization

  • Split packages/tools/src/data/relational/tools/relational-delete/executor.ts into a smaller stable facade with focused executor-shared.ts, executor-single.ts, and executor-batch.ts helper 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-any baseline at workspace 80/289 and tools 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, and error-handling.suite.ts behind the stable packages/tools/tests/data/relational/tools/update-executor.test.ts public entrypoint
  • Added story documentation in docs/st09073-relational-update-executor-modularization.md capturing the executor split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Update Executor Runtime Modularization

  • Split packages/tools/src/data/relational/tools/relational-update/executor.ts into a smaller stable facade with focused executor-shared.ts, executor-single.ts, and executor-batch.ts helper 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-any baseline at workspace 80/289 and tools 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, and error-handling.suite.ts behind the stable packages/tools/tests/data/relational/tools/insert-executor.test.ts public entrypoint
  • Added story documentation in docs/st09072-relational-insert-executor-modularization.md capturing the executor split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Insert Executor Runtime Modularization

  • Split packages/tools/src/data/relational/tools/relational-insert/executor.ts into a smaller stable facade with focused executor-shared.ts, executor-single.ts, and executor-batch.ts helper 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-any baseline at workspace 80/289 and tools 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, and resolve-resource-path.suite.ts behind the stable packages/skills/tests/activation.test.ts public entrypoint
  • Added story documentation in docs/st09071-skill-activation-modularization.md capturing the activation-runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/skills - Skill Activation Runtime Modularization

  • Split packages/skills/src/activation.ts into a smaller stable facade with focused activation-activate-tool.ts, activation-resource-tool.ts, activation-path.ts, activation-content.ts, activation-shared.ts, and activation-schemas.ts helper 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-any baseline stable at workspace 80/289 and skills 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, and shared.ts behind the stable packages/patterns/tests/multi-agent/utils.test.ts public entrypoint
  • Added story documentation in docs/st09070-multi-agent-utils-modularization.md capturing the utility split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - Multi-Agent Utility Runtime Modularization

  • Split packages/patterns/src/multi-agent/utils.ts into a smaller stable facade with focused utils-shared.ts, utils-react-detection.ts, utils-react-result.ts, and utils-react-wrapper.ts helper modules
  • Preserved the public isReActAgent(...) and wrapReActAgent(...) 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-any baseline stable at workspace 80/289 and patterns 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, and shared.ts behind the stable packages/tools/tests/data/neo4j/embedding-manager.test.ts public entrypoint
  • Added story documentation in docs/st09069-neo4j-embedding-manager-modularization.md capturing the embedding-manager split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Neo4j Embedding Manager Runtime Modularization

  • Split packages/tools/src/data/neo4j/embeddings/embedding-manager.ts into a smaller stable facade with focused embedding-manager-shared.ts, embedding-provider-factory.ts, embedding-environment.ts, and embedding-generation.ts helper modules
  • Preserved the public EmbeddingManager surface, 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-any baseline stable at workspace 80/289 and tools 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, and shared.ts behind the stable packages/core/src/langgraph/middleware/__tests__/caching.test.ts public entrypoint
  • Added story documentation in docs/st09068-middleware-caching-modularization.md capturing the caching split, validation evidence, and explicit-any baseline improvement

Changed

@agentforge/core - Caching Middleware Runtime Modularization

  • Split packages/core/src/langgraph/middleware/caching.ts into a smaller stable facade with focused caching-types.ts, caching-options.ts, caching-store.ts, caching-entry.ts, caching-wrapper.ts, and caching-shared.ts helper modules
  • Preserved the public withCache(...) and createSharedCache(...) 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-any baseline from 84/289 overall and 23/119 in core to 80/289 overall and 19/119 in core

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, and shared.ts behind the stable packages/tools/tests/data/relational/query/batch-executor.test.ts public entrypoint
  • Added story documentation in docs/st09067-batch-executor-modularization.md capturing the batch-executor split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Batch Executor Runtime Modularization

  • Split packages/tools/src/data/relational/query/batch-executor.ts into a smaller stable facade with focused batch-executor-types.ts, batch-executor-options.ts, batch-executor-runtime.ts, batch-executor-execution.ts, and batch-executor-benchmark.ts helper 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.ts modules to avoid duplicate Vitest execution, aligned the .rejects assertion style with the rest of the test suite, and corrected the published story-doc file-size evidence while keeping the explicit-any baseline stable at workspace 84/289 and tools 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, and shared.ts behind the stable packages/core/tests/resources/pool.test.ts public entrypoint
  • Added story documentation in docs/st09066-resource-pool-modularization.md capturing the pool split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - Resource Pool Runtime Modularization

  • Split packages/core/src/resources/pool.ts into a smaller stable facade with focused pool-types.ts, pool-runtime.ts, pool-acquisition.ts, pool-eviction.ts, pool-health.ts, and pool-lifecycle.ts helper modules
  • Preserved the public ConnectionPool and createConnectionPool(...) 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-any baseline stable at workspace 84/289 and core 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, and state-workflows.test.ts behind the stable packages/core/tests/langgraph/state.test.ts public entrypoint
  • Added story documentation in docs/st09065-langgraph-state-modularization.md capturing the state-helper split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - LangGraph State Helper Runtime Modularization

  • Split packages/core/src/langgraph/state.ts into a smaller stable facade with focused state-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.ts entrypoint 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.js entrypoint imports and kept the explicit-any baseline stable at workspace 84/289 and core 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, and exports.ts behind the stable packages/core/src/langgraph/middleware/__tests__/presets.test.ts public entrypoint
  • Added story documentation in docs/st09064-middleware-presets-modularization.md capturing the preset split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - Middleware Preset Runtime Modularization

  • Split packages/core/src/langgraph/middleware/presets.ts into a smaller stable facade with focused preset-production.ts, preset-development.ts, preset-testing.ts, preset-collection.ts, preset-adapters.ts, and preset-types.ts helper 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-any baseline stable at workspace 84/289 and core 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, and aggregator-node.ts behind the stable packages/patterns/tests/multi-agent/nodes.test.ts public entrypoint
  • Added story documentation in docs/st09063-multi-agent-worker-node-modularization.md capturing the worker-node split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - Multi-Agent Worker Runtime Modularization

  • Split packages/patterns/src/multi-agent/nodes/worker.ts into a smaller stable worker facade with focused worker-model.ts, worker-workload.ts, and worker-types.ts helper 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 MultiAgentStateType resolves from src/multi-agent/state.js in 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-any baseline stable at workspace 84/289 and patterns 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, and metrics.ts behind the stable packages/core/tests/tools/executor.test.ts public entrypoint
  • Added story documentation in docs/st09062-tool-executor-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - Tool Executor Runtime Modularization

  • Split packages/core/src/tools/executor.ts into a smaller stable facade with focused executor-types.ts, executor-retry.ts, and executor-metrics.ts helper modules
  • Preserved the public ./executor.js import 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-any baseline stable at workspace 84/289 and core 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, and tool-relations.ts behind the stable packages/core/tests/tools/types.test.ts public entrypoint
  • Added story documentation in docs/st09061-tool-types-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - Tool Type Contract Modularization

  • Split packages/core/src/tools/types.ts into a small stable facade that re-exports focused category, example, relations, metadata, and core-tool contract modules
  • Preserved the public ./types.js import 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.execute typing 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-any baseline stable at workspace 84/289 and core 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.ts for JSON-safe metadata acceptance and rejection boundaries, including null-prototype JSON-map compatibility
  • Added packages/patterns/tests/multi-agent/contracts.typecheck.ts and 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.md capturing the contract changes, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - Multi-Agent Schema Payload Hardening

  • Tightened packages/patterns/src/multi-agent/schemas.ts so 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.ts so 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 Date and Map from 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-any baseline stable at workspace 84/289 and patterns 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.ts for JSON-safe metadata acceptance and rejection boundaries
  • Added packages/patterns/tests/react/contracts.typecheck.ts and 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.md capturing the contract changes, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - ReAct Schema Payload Hardening

  • Tightened packages/patterns/src/react/schemas.ts so 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 Infinity and -Infinity from 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-any baseline stable at workspace 84/289 and patterns 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, and lifecycle-health.test.ts
  • Added story documentation in docs/st09058-tool-lifecycle-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/core - Managed Tool Lifecycle Modularization

  • Reduced packages/core/src/tools/lifecycle.ts from a mixed-responsibility 405 line implementation to an 11 line public facade below the 300 line 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, and lifecycle-error.ts
  • Preserved ManagedTool initialization, 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-any baseline stable at workspace 84/289 and core 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, and transaction-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.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Transaction Flow Modularization

  • Reduced packages/tools/src/data/relational/query/transaction.ts from a mixed-responsibility 419 line implementation to a 14 line public facade below the 300 line planning cutoff
  • Extracted focused internal modules in packages/tools/src/data/relational/query/transaction-types.ts, transaction-options.ts, transaction-managed.ts, and transaction-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 SQL callback shape and refreshed story evidence counts during review follow-up
  • Kept the explicit-any baseline stable at workspace 84/289 and tools 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, and registry-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.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/skills - Skills Registry Modularization

  • Reduced packages/skills/src/registry.ts from a mixed-responsibility 506 line implementation to a 101 line public facade below the 300 line planning cutoff
  • Extracted focused internal modules in packages/skills/src/registry-discovery.ts, registry-events.ts, registry-prompt.ts, registry-query-api.ts, and registry-internal.ts
  • Preserved SkillRegistry discovery 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 419 line packages/skills/tests/registry.test.ts monolith 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-any baseline stable at workspace 84/289 and skills 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, and schema-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.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Schema Inspector Modularization

  • Reduced packages/tools/src/data/relational/schema/schema-inspector.ts from a mixed-responsibility 725 line implementation to a 126 line public facade below the 300 line 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, and schema-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-any baseline stable at workspace 84/289 and tools 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, and finisher-node.test.ts
  • Added story documentation in docs/st09054-reflection-node-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - Reflection Node Modularization

  • Reduced packages/patterns/src/reflection/nodes.ts from a mixed-responsibility 350 line implementation to a 13 line public facade below the 300 line planning cutoff
  • Extracted focused internal modules in packages/patterns/src/reflection/generator-node.ts, reflector-node.ts, reviser-node.ts, finisher-node.ts, and node-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 298 line packages/patterns/tests/reflection/nodes.test.ts monolith with focused suites that mirror generator, reflector, reviser, and finisher boundaries
  • Kept the explicit-any baseline stable at workspace 84/289 and patterns 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, and connection-lifecycle-edge-cases.test.ts
  • Added story documentation in docs/st09053-connection-manager-modularization.md capturing the final runtime split, focused validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Connection Manager Modularization

  • Reduced packages/tools/src/data/relational/connection/connection-manager.ts from a mixed-responsibility 640 line implementation to a 255 line public facade below the 300 line 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, and connection-manager-runtime-types.ts, leaving connection-manager-runtime.ts as a small export barrel
  • Preserved public ConnectionManager imports, 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 465 line packages/tools/tests/data/relational/connection-manager.test.ts, the 525 line packages/tools/tests/data/relational/connection-lifecycle.test.ts, and the 695 line packages/tools/tests/data/relational/connection/connection-manager.test.ts monoliths 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-any baseline stable at workspace 84/289 and tools 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, and query-builder-select.test.ts
  • Added story documentation in docs/st09052-relational-query-builder-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/tools - Relational Query Builder Modularization

  • Reduced packages/tools/src/data/relational/query/query-builder.ts from a mixed-responsibility 731 line implementation to a 43 line public facade below the 300 line 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, and query-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 688 line packages/tools/tests/data/relational/query/query-builder.test.ts monolith with focused suites that mirror insert, update, delete, and select query-construction boundaries
  • Kept the explicit-any baseline stable at workspace 84/289 and tools 53/67 while 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, and agent-builder.test.ts
  • Added story documentation in docs/st09051-multi-agent-agent-modularization.md capturing the runtime split, validation evidence, and no-regression explicit-any outcome

Changed

@agentforge/patterns - Multi-Agent Orchestration Modularization

  • Reduced packages/patterns/src/multi-agent/agent.ts from a mixed-responsibility 535 line implementation to a 155 line public facade below the 300 line planning cutoff
  • Extracted focused internal modules in packages/patterns/src/multi-agent/agent-graph.ts, agent-runtime.ts, agent-workers.ts, agent-builder.ts, and agent-types.ts
  • Preserved createMultiAgentSystem, registerWorkers, createWorkersRegistry, and MultiAgentSystemBuilder behavior 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 655 line packages/patterns/tests/multi-agent/agent.test.ts monolith 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 of console.warn so framework logging stays filterable and consistent with repo standards
  • Kept multi-agent behavior and the explicit-any baseline stable at workspace 84/289 and patterns 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, and builder-relations.test.ts
  • Added story documentation in docs/st09050-tool-builder-modularization.md capturing 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.ts from a mixed-responsibility 434 line implementation to a small public facade below the 300 line planning cutoff
  • Extracted focused internal builder modules in packages/core/src/tools/builder-metadata.ts, builder-implementation.ts, and builder-finalize.ts
  • Preserved the public ToolBuilder and toolBuilder export 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 697 line packages/core/tests/tools/builder.test.ts monolith 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-any baseline stable at workspace 84/289 and core 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, and registry-prompt-api.test.ts
  • Added story documentation in docs/st09049-tool-registry-modularization.md capturing the file-size reduction, validation evidence, and no-regression baseline outcome

Changed

@agentforge/core - Tool Registry Modularization

  • Reduced packages/core/src/tools/registry.ts from a mixed-responsibility 446 line implementation to a 107 line 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, and packages/core/src/tools/registry-types.ts
  • Preserved the public ToolRegistry, RegistryEvent, EventHandler, and PromptOptions export surface while making the registry easier to review and evolve in smaller slices

Fixed

@agentforge/core - Registry Test and Maintenance Boundaries

  • Replaced the 832 line packages/core/tests/tools/registry.test.ts monolith with focused suites that mirror CRUD, query, bulk mutation, event, LangChain, and prompt boundaries
  • Kept registry behavior, emitted events, mutation semantics, and explicit-any baseline stable at workspace 84/289 and core 23/119 while 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.ts and packages/tools/tests/web/http-types.test.ts to verify JSON and HTTP payload boundaries no longer rely on broad ZodAny seams
  • Added direct JSON query and merge regressions covering array-traversal rejection plus shallow/deep special-key merge hardening for __proto__, constructor, and prototype
  • Added story documentation in docs/st09047-json-http-payload-schema-contracts.md capturing 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.ts and packages/tools/src/web/http/types.ts so JSON payloads, HTTP request bodies, and HttpResponse.data use unknown-first contracts instead of broad any
  • Updated packages/tools/src/data/json/tools/json-query.ts and packages/tools/src/data/json/tools/json-merge.ts to 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-any baseline from workspace 90/289 and tools 59/67 to workspace 84/289 and tools 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.ts to verify transformer schemas no longer depend on blanket ZodAny boundaries
  • Extended packages/tools/tests/data/transformer/transformer-helpers.test.ts with 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.md capturing the schema tightening, review follow-ups, validation evidence, and explicit-any outcome

Changed

@agentforge/tools - Transformer Schema Value Hardening

  • Tightened packages/tools/src/data/transformer/types.ts by replacing blanket z.any() seams with shared unknown-first transformer value, array, and object schemas
  • Updated array-map and array-group-by to 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-map and array-group-by against prototype-mutation hazards from user-controlled property keys without changing the public prototype contract of returned objects
  • Kept the explicit-any baseline flat at workspace 90/289 and tools 59/67 while 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, and routing-registry.test.ts, with shared fixture support in routing.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.md capturing 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.ts from a mixed-responsibility 373 line implementation to a 51 line 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 toString and __proto__ cannot bypass the unknown-strategy guard
  • Aligned shared routing test fixtures with schema-required message id fields and kept tracker/checklist state consistent through the modularization review cycle
  • Kept the explicit-any baseline flat at workspace 90/289 and patterns 2/28 while 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.ts for 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.md capturing the contract hardening, review-driven fallback refinements, validation evidence, and explicit-any delta

Changed

@agentforge/patterns - Multi-Agent Routing Decision Hardening

  • Tightened packages/patterns/src/multi-agent/routing.ts so LLM routing decisions are parsed through RoutingDecisionSchema instead of a broad cast from model.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 any seam from packages/patterns/src/multi-agent/routing.ts, reducing the patterns baseline from 3/28 to 2/28 and the workspace baseline from 91/289 to 90/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.ts covering schema-driven input inference, no-schema behavior, and the tightened overload boundary
  • Added focused runtime coverage in packages/testing/tests/mock-tool.test.ts for delayed execution, forced errors, helper defaults, and custom implementation semantics
  • Added story documentation in docs/st09044-mock-tool-factory-contracts.md capturing the contract tightening, review follow-ups, validation evidence, and explicit-any delta

Changed

@agentforge/testing - Mock Tool Factory Contract Hardening

  • Tightened packages/testing/src/mocks/mock-tool.ts so schema-driven mock-tool helpers infer input types safely without relying on broad any
  • 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-any seams from packages/testing/src/mocks/mock-tool.ts, reducing the touched file from 3 explicit any uses to 0
  • Corrected built-in helper default names to valid kebab-case and lowered the testing explicit-any baseline from 3/51 to 0/51, with the workspace baseline improving from 94/289 to 91/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.ts covering unknown-first state, JSON-safe metadata, and typed serialized error payload access
  • Kept focused runtime coverage in packages/core/tests/langgraph/observability/errors.test.ts validating serialized payloads, optional state inclusion, wrapped-node propagation, async error paths, and manual reporting
  • Added story documentation in docs/st09043-error-reporter-context-contracts.md capturing the contract tightening, review follow-ups, validation evidence, and explicit-any delta

Changed

@agentforge/core - Error Reporter Context Hardening

  • Tightened packages/core/src/langgraph/observability/errors.ts so error reporter state, metadata, and toJSON() payload contracts use unknown-first and JSON-safe aliases instead of broad any
  • 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-any seams from packages/core/src/langgraph/observability/errors.ts, reducing the touched file from 5 explicit any uses to 0
  • Lowered the core explicit-any baseline from 28/119 to 23/119 and the workspace baseline from 99/289 to 94/289 without 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.ts for 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.ts covering 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.md capturing the contract tightening, validation evidence, and explicit-any delta

Changed

@agentforge/core - SSE Formatter Generic Hardening

  • Tightened packages/core/src/streaming/types.ts and packages/core/src/streaming/sse.ts so SSEFormatterOptions, SSEFormatter, and createSSEFormatter(...) use unknown-first generic defaults instead of broad any
  • 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-any seams from the shared SSE formatter source files, reducing touched SSE explicit-any usage from 3 to 0
  • Lowered the core explicit-any baseline from 33/119 to 28/119 and the workspace baseline from 104/289 to 99/289 without 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.ts for verbose-enabled structured logger routing, verbose-disabled silence, and preserved user/AI turn output
  • Added story documentation in docs/st09041-conversation-simulator-structured-logger.md covering the logger verification approach, validation evidence, and explicit-any delta

Changed

@agentforge/testing - Conversation Simulator Verbose Logging

  • Replaced the verbose console.log path in packages/testing/src/runners/conversation-simulator.ts with the shared structured logger from @agentforge/core
  • Added optional logger injection to ConversationSimulatorConfig so verbose output can be verified directly without coupling tests to global stdout
  • Preserved existing verbose turn text by continuing to emit the same User: ... and AI: ... strings through the structured logger path

Fixed

@agentforge/testing - Logger Naming and Observability Consistency

  • Aligned the ConversationSimulator logger name with the repo convention as agentforge:testing:runners:conversation-simulator
  • Kept the testing explicit-any baseline stable at 3/51 and the workspace baseline stable at 104/289 while 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.ts for primitive and object resume payload serialization plus stable resume-<interruptId> event IDs
  • Added a standalone typecheck regression fixture in packages/core/tests/streaming/human-in-loop.typecheck.ts covering JSON-safe resume payload acceptance and rejection of non-serializable values
  • Added story documentation in docs/st09040-human-in-loop-streaming-resume-contracts.md capturing the contract tightening, validation evidence, and explicit-any delta

Changed

@agentforge/core - Human-in-Loop Resume Boundary Hardening

  • Tightened packages/core/src/streaming/human-in-loop.ts so ResumeEventData and formatResumeEvent(...) use the shared JSON-safe InterruptPayload contract instead of broad any
  • 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 any seams from the human-in-loop streaming helper file, reducing packages/core/src/streaming/human-in-loop.ts from 2 explicit any uses to 0
  • Lowered the core explicit-any baseline from 35/119 to 33/119 and the workspace baseline from 106/289 to 104/289 without 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.ts for 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.ts covering generic createMockTool(...) usage plus named-tool simulator input/output inference
  • Added story documentation in docs/st09039-core-mock-tool-testing-contracts.md capturing the contract hardening, validation evidence, and explicit-any delta

Changed

@agentforge/core - Mock Tool and Simulator Contract Hardening

  • Tightened packages/core/src/tools/testing.ts so mock-tool responses, default responses, invocation records, and simulator execution boundaries use generic and unknown-first helper types instead of broad any
  • 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-any seams from the core mock-tool testing helper file, reducing packages/core/src/tools/testing.ts from 8 explicit any uses to 0
  • Lowered the core explicit-any baseline from 44/119 to 35/119 and the workspace baseline from 115/289 to 106/289 without 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.ts for 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.md covering helper extraction, review-driven behavior fixes, validation evidence, and explicit-any delta tracking

Changed

@agentforge/tools - Shared Transformer Helper Extraction

  • Extracted shared helper functions into packages/tools/src/data/transformer/tools/shared.ts for nested path lookup plus object pick/omit behavior used by array-filter, array-sort, object-pick, and object-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 unknown values with a shared comparator helper, keeping @agentforge/tools strict typecheck green and lowering touched transformer helper/tool explicit-any usage from 6 to 0

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.ts for builder tool-array assignability, prompt schema boundaries, checkpointer contracts, and compiled graph typing
  • Added focused runtime coverage in packages/patterns/tests/react/prompts.test.ts for prompt formatting helpers alongside expanded ReAct builder and integration validation
  • Added story documentation in docs/st09037-react-builder-prompt-boundary-contracts.md covering the contract hardening, review follow-ups, validation record, and explicit-any delta

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-graph checkpointer: 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 any seams in types.ts, builder.ts, agent.ts, and prompts.ts without 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-any baseline from 133 to 121 and the patterns package baseline from 15 to 3

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.ts for typed state-generic usage of createConversationSimulator(...)
  • Added focused runtime coverage in packages/testing/tests/runners/conversation-simulator.test.ts for 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.md covering the contract tightening, validation record, and explicit-any delta

Changed

@agentforge/testing - Conversation Simulator Contract Hardening

  • Tightened ConversationSimulator and createConversationSimulator(...) to use the shared generic AgentTestAgent<ConversationSimulatorInput, TState> contract instead of broad agent: 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 any seams with unknown-first and generic runner contracts
  • Hardened malformed invoke-result handling so missing or invalid messages payloads surface through the existing captured simulator error path
  • Lowered the workspace explicit-any baseline from 135 to 133 and the testing package baseline from 5 to 3

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.ts for successful runs, timeout failures, timeout cleanup, explicit zero-timeout behavior, malformed message fallback, validation failures, and runMany(...)
  • Added story documentation in docs/st09035-agent-test-runner-state-contracts.md covering the runner contract changes, behavior preservation, review fixes, explicit-any delta, and validation record

Changed

@agentforge/testing - Agent Test Runner Contract Hardening

  • Added exported AgentTestAgent<TInput, TState> and AgentTestRunnerStep<TState> contracts for downstream runner integrations
  • Made AgentTestConfig, AgentTestResult, AgentTestRunner, and createAgentTestRunner(...) generic over agent input, final state, and step contracts
  • Replaced broad runner any seams 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 messages fields in final state and safely falls back to an empty message list
  • Honored explicit timeout: 0 instead 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-any baseline from 144 to 135 and the testing package baseline from 14 to 5

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.ts for 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.md covering the database pool adapter contract changes, behavior preservation, explicit-any delta, and validation record

Changed

@agentforge/core - Database Pool Adapter Contract Hardening

  • Added exported DatabaseQueryParams and DatabaseQueryResult aliases for downstream database adapter implementations
  • Tightened DatabaseConnection and DatabasePool query/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 any boundaries with explicit unknown-first contracts
  • Lowered the workspace explicit-any baseline from 153 to 144 and the core package baseline from 53 to 44

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.ts for 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.md covering the snapshot runner contract changes, compatibility notes, explicit-any delta, 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, and ROOT_SNAPSHOT_DIFF_KEY
  • Widened MessageSnapshot.content to unknown so the exported type matches normalized snapshot output after filters and custom normalizers
  • Preserved non-plain object roots such as Date, Map, and RegExp instead of rebuilding them from enumerable entries; root diffs now use the explicit $root diff key

Fixed

@agentforge/testing - Snapshot Diff and Normalization Safety

  • Removed object coercion paths that could hide primitive, array, null, or undefined root 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 bigint stringify failures
  • Lowered the workspace explicit-any baseline from 170 to 153 and the testing package baseline from 31 to 14

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.ts for 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.ts for 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.md covering the lifecycle contract changes, compatibility notes, explicit-any snapshot, and validation record

Changed

@agentforge/core - Managed Tool Lifecycle Contract Hardening

  • Tightened ManagedTool lifecycle generics from broad any defaults to safer unknown-first defaults while preserving the public ManagedToolConfig interface
  • 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() and cleanup() 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 beforeExit auto-cleanup registration across manual cleanup/reinitialize reuse cycles
  • Preserved the workspace explicit-any baseline at 180 and the core package baseline at 63

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.ts for registration conflicts, update invariants, removals, clear behavior, and bulk-registration edge cases
  • Added story documentation in docs/st09031-tool-registry-registration-mutation-extraction.md covering the extraction, compatibility notes, explicit-any snapshot, 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.ts into packages/core/src/tools/registry-mutations.ts
  • Kept ToolRegistry as 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-any baseline at 180 and the core package baseline at 63

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.ts for 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.md covering the extraction, compatibility notes, explicit-any snapshot, 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.ts into packages/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 ConnectionManager as the stable public façade for execute(...) and executeInConnection(...)

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-any baseline at 180 and the tools package baseline at 65

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.ts for 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.md covering 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.ts into focused internal modules for planner, executor, replanner, finisher, logger setup, and serialization helpers
  • Kept nodes.ts as 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 GraphInterrupt values propagate instead of being downgraded to failed node state
  • Preserved the workspace explicit-any baseline at 180 and the patterns package baseline at 15

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.ts for disconnect-during-initialize cancellation and canceling a pending reconnection timer during close
  • Added story documentation in docs/st09028-connection-manager-lifecycle-modularization.md covering 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.ts into the internal helper module packages/tools/src/data/relational/connection/lifecycle.ts
  • Kept ConnectionManager as 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 ReconnectionConfig field documentation, tightened lifecycle logger metadata to the core JsonValue contract, trimmed unused scheduled-reconnection context fields, and fixed stale reconnection-attempt capture inside the timeout closure
  • Clarified the helper naming boundary in connection-manager.ts so the private scheduleReconnection() wrapper no longer reads like accidental recursion, while preserving the workspace explicit-any baseline at 180 and the tools package baseline at 65

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.ts for 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.md covering 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.ts into the internal helper module packages/tools/src/data/relational/connection/vendor-initialization.ts
  • Kept ConnectionManager as 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 ConnectionConfig dispatcher
  • Reduced the workspace explicit-any baseline from 182 to 180, improving the tools package baseline from 67 to 65

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.ts for handler registration, removal, and safe event emission when listeners throw
  • Added focused helper coverage in packages/core/tests/tools/registry-prompt.test.ts for grouped prompt output, minimal supplementary content rendering, and LangChain conversion behavior
  • Added story documentation in docs/st09026-tool-registry-prompt-event-modularization.md covering 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.ts into the internal helper modules packages/core/src/tools/registry-prompt.ts and packages/core/src/tools/registry-events.ts
  • Kept ToolRegistry as the stable public facade while preserving grouped and minimal prompt generation, safe event dispatch, and toLangChainTools() 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-any baseline at 182 and the core package baseline at 63 while 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.ts for ordered tool listing, category/tag filtering, and case-insensitive search behavior
  • Added story documentation in docs/st09025-tool-registry-collection-search-extraction.md covering 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.ts into the internal helper module packages/core/src/tools/registry-collection.ts
  • Kept ToolRegistry as the stable public entrypoint while preserving the existing getAll, getByCategory, getByTag, search, and getNames behavior

Fixed

@agentforge/core - Public Registry Declaration Boundary

  • Kept the internal registry-collection helper type out of the public ToolRegistry declaration surface so emitted .d.ts files do not expose the internal helper module path
  • Preserved the workspace explicit-any baseline at 182 and the core package baseline at 63 while 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.ts for 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.ts for approval interrupts, generic custom interrupts, and resume command/options payload typing
  • Added story documentation in docs/st09024-langgraph-interrupt-type-contracts.md covering the interrupt contract changes, warning delta, and validation record

Changed

@agentforge/core - LangGraph Interrupt Type Contracts

  • Tightened packages/core/src/langgraph/interrupts/types.ts around 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 resume value/resume any seams with domain-specific and JSON-safe contracts, reducing the workspace explicit-any baseline from 195 to 182
  • Improved the core package explicit-any baseline from 76 to 63 without 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.ts for branched metadata isolation, nested example payload isolation, non-cloneable example failures, and this-binding compatibility
  • Added source-included type regression coverage in packages/core/src/tools/builder.typecheck.ts for schema-first, invoke-first, and safe-builder chaining
  • Added story documentation in docs/st09023-tool-builder-fluent-typing.md covering the fluent builder changes, warning delta, and review-fix history

Changed

@agentforge/core - Tool Builder Fluent Typing

  • Tightened packages/core/src/tools/builder.ts by 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 with createTool(...)

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 this binding compatibility for non-arrow implementations through implement(), implementSafe(), and build(), and wrapped non-cloneable example payload failures with a clear builder-specific TypeError
  • Reduced the workspace explicit-any baseline from 201 to 195, improving the core package from 82 to 76

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.ts for the __proto__ special-key path while retaining cache-key normalization and metrics coverage
  • Added story documentation in docs/st09022-shared-deduplication-contracts.md covering the unknown-first deduplication boundary changes, warning delta, and validation record

Changed

@agentforge/patterns - Shared Deduplication Utility Contracts

  • Tightened packages/patterns/src/shared/deduplication.ts by replacing broad normalization and cache-key any seams 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-any baseline from 205 to 201, improving the patterns package from 19 to 15

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.ts for raw non-string payload passthrough, normalized thrown errors, heartbeat capability handling, and close/broadcast behavior
  • Added story documentation in docs/st09021-streaming-websocket-contracts.md covering the structural socket contract changes, warning delta, and review-fix history

Changed

@agentforge/core - Streaming WebSocket Contracts

  • Tightened packages/core/src/streaming/websocket.ts and packages/core/src/streaming/types.ts by replacing broad socket, message, and close-reason any seams 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 via onError(...) with early close/return semantics instead of throwing
  • Reduced the workspace explicit-any baseline from 219 to 205, improving the core package from 96 to 82

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.ts for 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.md covering 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.ts by replacing broad variable-map any seams with unknown-first PromptVariableMap normalization helpers
  • Preserved trusted-vs-untrusted rendering behavior while keeping backwards-compatible plain-object call sites for renderTemplate(...) and loadPrompt(...)

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-any baseline from 229 to 219, improving the core package from 106 to 96

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.ts for 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.md covering the typed route-map changes, warning delta, and validation record

Changed

@agentforge/patterns - Reflection Agent Routing Typing

  • Tightened packages/patterns/src/reflection/agent.ts by replacing conditional-edge as any casts 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-any seams from the reflection agent factory, reducing the workspace explicit-any baseline from 233 to 229 and the patterns package from 23 to 19

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.ts plus focused runtime coverage in packages/testing/tests/helpers.test.ts
  • Added story documentation in docs/st09018-testing-helper-type-hardening.md covering the helper boundary changes, explicit-any warning deltas, and review-fix history

Changed

@agentforge/testing - Testing Helper Type Boundaries

  • Tightened packages/testing/src/helpers/assertions.ts and packages/testing/src/helpers/state-builder.ts around unknown-first and generic builder contracts, replacing broad any helper seams while preserving practical test ergonomics
  • Re-exported the new helper contract types from packages/testing/src/index.ts so 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-any baseline from 253 to 233 while improving the testing package from 51 to 31

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.ts for unknown error normalization, prefixed messages, spinner failure handling, and caller-managed logging
  • Added story documentation in docs/st09017-cli-error-handling-centralization.md covering 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.ts and migrated the CLI command layer off repeated catch (error: any) plus process.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-any baseline from 271 to 253, improving the cli package from 24 to 6

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.ts covering JSON-safe audit payload preservation, explicit falsy payload retention, explicit zero timestamps, health metadata handling, onCheckFail propagation, and structured startup logger behavior
  • Added story documentation in docs/st09016-monitoring-payload-type-hardening.md capturing the monitoring contract scope, warning deltas, and validation record

Changed

@agentforge/core - Monitoring Payload Contracts

  • Tightened packages/core/src/monitoring/audit.ts and packages/core/src/monitoring/health.ts to replace broad payload any fields 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 AuditLogger to preserve explicit falsy JSON payloads and explicit 0 timestamps instead of dropping or overwriting valid values through truthy defaults
  • Replaced HealthChecker.start() startup failure console.error calls with the shared structured logger and hardened the associated regression test cleanup so background intervals are always stopped
  • Reduced the workspace explicit-any baseline from 276 to 271, improving the core package from 111 to 106

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.ts covering 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.md capturing 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.ts behind the stable public entrypoint into focused nodes/supervisor.ts, nodes/worker.ts, nodes/aggregator.ts, and nodes/shared.ts modules
  • 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 GraphInterrupt correctly from supervisor and aggregator catch paths
  • Changed multi-agent model-content serialization to fail explicitly on undefined or non-serializable content instead of returning placeholder success text
  • Reduced the workspace explicit-any baseline from 278 to 276, improving the patterns package from 25 to 23

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.ts to lock in concrete tool preservation through ExecutorConfig and PlanExecuteAgentConfig
  • Added focused plan-execute regression coverage in packages/patterns/tests/plan-execute/state.test.ts and packages/patterns/tests/plan-execute/nodes.test.ts for 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, and agent.ts to replace broad Tool<any, any>[]-style boundaries with the exported PlanExecuteTool contract 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 this correctly and the exported tool boundary remains callable without the old never-typed parameter confusion
  • Fixed executor timeout cleanup so successful steps clear their pending timeout handles instead of leaving timers alive until stepTimeout elapses
  • Reduced the workspace explicit-any baseline from 289 to 278, improving the patterns package from 28 to 25

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.ts to lock in schema-derived sequential workflow typing
  • Added focused sequential builder regressions in packages/core/tests/langgraph/builders/sequential.test.ts for invalid runtime schemas and the tightened builder contract

Changed

@agentforge/core - Sequential Workflow Builder Contract

  • Tightened createSequentialWorkflow(...) in packages/core/src/langgraph/builders/sequential.ts so the exported type surface now requires a real LangGraph Annotation.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-any seams in the sequential builder and reduced the workspace baseline from 289 to 281, improving the core package from 119 to 111

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 exports condition keys in @agentforge/skills, @agentforge/tools, and @agentforge/testing so types is evaluated before import and require
  • 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 used warning 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.ts covering both replanner outcomes: continue execution and trigger a fresh planning pass
  • Added story documentation in docs/st09010-plan-execute-routing-typing.md covering the route hardening, validation, and warning-delta snapshot

Changed

@agentforge/patterns - Plan-Execute Agent Routing Typing

  • Reworked packages/patterns/src/plan-execute/agent.ts to 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 any bridges from the plan-execute route and compile boundary
  • Reduced the workspace explicit-any baseline from 292 to 289, improving the patterns package from 31 to 28

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.ts for missing LangGraph dependency handling, missing interrupt export compatibility, timeout/default fallback, non-string resume rejection, and nullish resume handling
  • Added story documentation in docs/st09009-ask-human-interrupt-boundary-hardening.md covering the interrupt-boundary hardening, validation, and warning-delta snapshot

Changed

@agentforge/tools - Ask-Human Interrupt Boundary

  • Reworked packages/tools/src/agent/ask-human/tool.ts to resolve LangGraph interrupt() through unknown-guarded helpers instead of broad dynamic any casts
  • Preserved current ask-human runtime behavior while making dependency/version compatibility failures explicit and keeping AskHumanOutput.response normalized 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-any usage from the ask-human interrupt boundary and reduced the workspace baseline from 295 to 292, improving the tools package from 70 to 67

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.ts for fan-out, aggregate fan-in, and autoStartEnd: false
  • Added story documentation in docs/st09008-parallel-workflow-builder-typing.md covering the builder hardening, validation, and warning-delta snapshot

Changed

@agentforge/core - Parallel Workflow Builder Typing

  • Reworked packages/core/src/langgraph/builders/parallel.ts to 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.name by 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, and START/END edge 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-any baseline from 304 to 295, improving the core package from 128 to 119

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.sh to verify that all published @agentforge/* packages can be installed from npm after release
  • Added release verification coverage for library package loading, @agentforge/testing usage inside Vitest, and @agentforge/cli command execution

Changed

Release Process - Stronger Publish Verification

  • Updated scripts/publish.sh to fail fast when npm reports a version different from the intended release version
  • Updated scripts/publish.sh to 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 --help so Commander help output no longer exits through the error path with Error: (outputHelp)
  • Added CLI regression coverage in packages/cli/tests/index.test.ts to 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.ts covering 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.ts for mapped conditional routes, direct END termination, and compile-time route-mapping validation

Changed

@agentforge/patterns - ReAct Node and Agent Builder Typing

  • Reworked packages/patterns/src/react/nodes.ts and packages/patterns/src/shared/agent-builder.ts to replace broad any-driven boundaries with typed helpers and config-derived generics
  • Reduced explicit-any warnings in the touched patterns files from 19 to 0, improving the workspace baseline from 324 to 305 and the patterns baseline from 50 to 31

Fixed

@agentforge/patterns - ReAct Runtime Safety

  • Fixed tool-role message normalization so missing tool_call_id values fall back safely instead of producing invalid ToolMessage instances
  • Fixed verbose handling across ReAct nodes so debug logging is once again gated by the public verbose option
  • Fixed observation formatting so undefined tool 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.ts and packages/core/tests/monitoring/alerts.test.ts

Changed

@agentforge/core - Observability Boundary Hardening

  • Reworked packages/core/src/langgraph/observability/logger.ts and packages/core/src/monitoring/alerts.ts to 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-any warnings in the touched core observability files from 20 to 0

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.ts and packages/core/tests/langgraph/integration.test.ts covering inferred annotation.State / annotation.Update shapes and pre-typed reducer update contracts

Changed

@agentforge/core - LangGraph State Utility Typing

  • Reworked packages/core/src/langgraph/state.ts to derive state and update shapes from channel config instead of relying on exported explicit-any contracts
  • Preserved createStateAnnotation() inference while restoring downstream compatibility for reducer-free schema/default state channels
  • Reduced explicit-any warnings in packages/core/src/langgraph/state.ts from 13 to 0

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 State types no longer collapse to literal defaults or never during 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.ts covering array and null tool-output serialization alongside the existing object, primitive, string, and schema assertions

Changed

@agentforge/core - LangChain Converter Runtime Boundary

  • Reworked packages/core/src/langchain/converter.ts to replace exported explicit-any signatures with generic or runtime-erased contracts
  • Split converter responsibilities with focused helpers for LangChain result stringification and JSON-schema extraction
  • Reduced explicit-any warnings in packages/core/src/langchain/converter.ts from 15 to 0

Fixed

@agentforge/core - LangChain Tool Conversion Safety

  • Preserved LangChain tool behavior while hardening schema extraction and result serialization boundaries, preventing unsafe any leakage 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.ts covering 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.ts to replace broad explicit-any contracts with generic ComposedTool<TInput, TOutput> and unknown-based runtime boundaries
  • Split composition utility concerns with focused helpers for conditional-step detection, retry delay calculation, and error normalization
  • Reduced explicit-any warnings in packages/core/src/tools/composition.ts from 13 to 0

Fixed

@agentforge/core — Timeout Resource Cleanup

  • Fixed timeout() to clear scheduled setTimeout handles after Promise.race settles, 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.ts covering structured/non-string response serialization and verbose/non-verbose error-path behavior

Changed

Type Safety Hardening — Tools and Patterns Runtime Hotspots

  • Reduced explicit-any usage across high-warning runtime files in @agentforge/tools and @agentforge/patterns
  • Hardened multi-agent runtime typing in:
    • packages/patterns/src/multi-agent/agent.ts
    • packages/patterns/src/multi-agent/nodes.ts
    • packages/patterns/src/multi-agent/types.ts
    • packages/patterns/src/multi-agent/utils.ts
  • Hardened Neo4j runtime typing in:
    • packages/tools/src/data/neo4j/connection.ts
    • packages/tools/src/data/neo4j/utils/result-formatter.ts

Fixed

@agentforge/patterns — Multi-Agent Error Handling

  • wrapReActAgent now correctly honors the configured verbose flag 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 HttpPool runtime-behavior tests for request handling, pool stats, and draining behavior

Changed

@agentforge/core — Type Safety Hardening

  • Reduced explicit-any usage in core runtime hotspots by replacing broad casts with unknown-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 maxAttempts values (< 1 or non-integer) fail fast with a clear error
  • Ensured retry execution consistently throws Error instances 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 any no-regression baseline checker for packages/**/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:baseline and lint:ci scripts in root package.json
  • Aligned @typescript-eslint/no-explicit-any to warn in @agentforge/testing and @agentforge/skills package 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 ruleId and target
    • 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/0 output row

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.md to avoid duplicate/conflicting release guidance
  • Updated release references in README.md and scripts/release.sh to use .ai/RELEASE_PROCESS.md
  • Updated release script messaging to reference docs-site/changelog.md and ./scripts/publish.sh

Fixed

@agentforge/tools — Relational Insert

  • Fixed strict typing mismatch in batch insert aggregation (allRows now aligned with InsertResult.rows type)

@agentforge/tools — Test Stability

  • Made Docker-backed relational integration suites opt-in via RUN_INTEGRATION_TESTS=true to avoid failing default test runs when container runtime is unavailable
  • Made live web-search performance suite opt-in via RUN_WEB_PERFORMANCE_TESTS=true to avoid network-dependent failures in default test runs

@agentforge/patterns — Shared Utilities

  • Improved buildAgent dynamic edge wiring types for strict typecheck compatibility
  • Refined withErrorHandling fallback 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/core from peerDependencies to dependencies so it auto-installs for consumers (matching @agentforge/patterns convention)

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/skills package — Skills source files extracted from @agentforge/core into a dedicated package with full public API:
    • SkillRegistry, parseSkillContent, scanSkillRoot, scanAllSkillRoots
    • createActivateSkillTool, createReadSkillResourceTool, createSkillActivationTools
    • evaluateTrustPolicy, isScriptResource, normalizeRootConfig, resolveResourcePath
    • All types: Skill, SkillMetadata, SkillRegistryConfig, TrustLevel, etc.
  • Imports re-wired from relative core internals to @agentforge/core package imports
  • Logger names updated to agentforge:skills:* namespace
  • Skills test suite (215 tests) migrated from packages/core/tests/skills/ to packages/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-agent updated to depend on @agentforge/skills
  • Root README package table now includes @agentforge/skills

Release Tooling — Skills Package Support (EP-07)

  • scripts/release.sh — Added packages/skills/package.json to PACKAGE_FILES for automated version bumps
  • scripts/publish.sh — Added packages/skills to PACKAGES in correct dependency order (after core, before patterns)
  • scripts/convert-workspace-deps.mjs — Added skills to workspace package name list for workspace:* → concrete version conversion
  • RELEASE_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/core entirely — import from @agentforge/skills instead
  • gray-matter removed 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/skills and 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 skillRoots with multi-root support and deterministic duplicate handling
    • Query API: get(), getAll(), has(), size, getNames(), getScanErrors()
    • enabled feature flag (default off) for zero-impact opt-in
    • maxDiscoveredSkills cap 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
  • Skill Activation Tools — Two LangGraph-compatible tools for runtime skill loading:
    • activate-skill — Load full SKILL.md instructions by skill name
    • read-skill-resource — Read resource files from skill directories with path security
    • toActivationTools() convenience method returning both as a tuple
    • resolveResourcePath() 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 root
    • evaluateTrustPolicy() decision engine blocking scripts from untrusted roots by default
    • allowUntrustedScripts config override for development workflows
    • getAllowedTools() API for skill-declared tool filtering
    • TRUST_POLICY_DENIED/TRUST_POLICY_ALLOWED events 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-loaded
    • trust: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.md covering 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 streaming
    • relationalInsert — Single and batch insert with configurable returning modes (none, id, row)
    • relationalUpdate — Conditional updates with optimistic locking, WHERE requirement, and batch operations
    • relationalDelete — Safe deletion with WHERE requirement, soft-delete support, and cascade-aware errors
    • relationalGetSchema — 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() and dispose()
  • 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 helpful MissingPeerDependencyError messages

@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/database covering 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-agent building a database-powered ReAct agent from scratch
  • API Reference — Full parameter tables and response shapes for all 6 relational tools, ConnectionManager class, and withTransaction helper 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 support
    • neo4jGetSchema - Retrieve comprehensive graph schema (nodes, relationships, constraints, indexes)
    • neo4jFindNodes - Find nodes by label and property filters
    • neo4jTraverse - Graph traversal with relationship type filtering and depth control
    • neo4jVectorSearch - Vector similarity search using existing embeddings
    • neo4jVectorSearchWithEmbedding - Vector search with automatic text-to-embedding conversion
    • neo4jCreateNodeWithEmbedding - 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=true flag to prevent CI failures
  • Structured Logging - Full logging compliance using @agentforge/core logger

Fixed

@agentforge/tools

  • TypeScript Compilation Errors in Confluence Tools - Fixed ESM import paths and return type annotations:
    • Added .js extensions to relative imports (required by moduleResolution: "node16")
    • Removed explicit : Tool return 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)
  • TypeScript Compilation Errors in Slack Tools - Fixed return type annotations:
    • Removed explicit : Tool return type annotations to allow proper type inference
    • Fixed 4 files: get-channels, get-messages, notify, send-message

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 create using 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, or vitest run commands without errors in 3 out of 4 templates
    • Root Causes:
      1. P1: TypeScript type error (TS18046): result.messages typed as unknown in minimal/api/cli templates
      2. P1: API template DTS build failure (TS2742): Inferred router type not portable for declaration emit
      3. P1: Vitest run failures: vitest run exited with code 1 when no test files exist
      4. P2: Package.json metadata mismatch: main and types fields didn't match actual build output
      5. P2: Unresolved template placeholder: remained literal when description was empty
    • Solutions:
      1. Fixed result.messages typing - Added explicit type assertion in 4 files:
        • templates/minimal/src/index.ts - Added as Array<{ content: string }>
        • templates/api/src/routes/agent.ts - Added as Array<{ content: string }>
        • templates/cli/src/commands/analyze.ts - Added as Array<{ content: string }>
        • templates/cli/src/commands/chat.ts - Added as Array<{ content: string }>
      2. Fixed API template DTS build - Added explicit Router type annotations in 2 files:
        • templates/api/src/routes/agent.ts - Changed to const router: Router = Router();
        • templates/api/src/routes/health.ts - Changed to const router: Router = Router();
      3. Fixed vitest run failures - Added --passWithNoTests flag in 3 package.json files:
        • templates/minimal/package.json - Updated test scripts
        • templates/api/package.json - Updated test scripts
        • templates/cli/package.json - Updated test scripts
      4. Fixed package.json metadata - Corrected main/types fields in 2 files:
        • templates/api/package.json - Changed to main: "dist/server.js", types: "dist/server.d.ts"
        • templates/cli/package.json - Changed to main: "dist/cli.js", types: "dist/cli.d.ts"
      5. Fixed template placeholder - Fixed scaffolder variable replacement:
        • src/commands/create.ts - Changed replacement key from DESCRIPTION to PROJECT_DESCRIPTION
    • 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 templates
      • pnpm lint - PASS for all templates
      • pnpm test - PASS for all templates
      • pnpm build - PASS for all templates
      • No unresolved template tokens
      • main/types match emitted artifacts

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 create using v0.12.3 had test failures
    • Impact: pnpm exec vitest run failed with "exampleTool.name is undefined"
    • Root Cause: Tool API changed - metadata is now under tool.metadata property, but template tests were still accessing tool.name directly
    • Solution:
      • Fixed test assertions to use tool.metadata.name instead of tool.name
      • Fixed test assertions to use tool.metadata.description instead of tool.description
      • Fixed test assertions to use tool.metadata.category instead of tool.category
    • Files Fixed (3 total):
      • templates/full/tests/example.test.ts - Updated metadata access
      • templates/tool-multi/__tests__/index.test.ts - Updated metadata access
      • src/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

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 create using v0.12.2 had 4 validation failures
    • Impact: Users couldn't run typecheck, test, build, or lint commands without errors
    • Root Causes:
      1. TypeScript type error: result.messages typed as unknown in full template (index.ts line 70)
      2. Tool naming convention: Tool name was example_tool (snake_case) but validation requires kebab-case
      3. Build script failure: tsup command had no entry point configured, causing "No input files" error
      4. Lint failure: ESLint v9 installed but no eslint.config.js file existed in scaffolded projects
    • Solution:
      • Added explicit type assertion for result.messages: const messages = result.messages as Array<{ content: string }>;
      • Changed tool name from example_tool to example-tool (kebab-case) in tool definition and test
      • Created tsup.config.ts with proper entry points for all 4 templates (full, minimal, api, cli)
      • Created eslint.config.js with ESLint v9 flat config for all 4 templates
      • Added @eslint/js and typescript-eslint dependencies to all template package.json files
    • Files Fixed (15 total):
      • templates/full/src/index.ts - type assertion
      • templates/full/src/tools/example.ts - kebab-case naming
      • templates/full/tests/example.test.ts - test expectation
      • templates/full/package.json - ESLint dependencies
      • templates/full/tsup.config.ts - NEW FILE
      • templates/full/eslint.config.js - NEW FILE
      • templates/minimal/package.json - ESLint dependencies
      • templates/minimal/tsup.config.ts - NEW FILE
      • templates/minimal/eslint.config.js - NEW FILE
      • templates/api/package.json - ESLint dependencies
      • templates/api/tsup.config.ts - NEW FILE
      • templates/api/eslint.config.js - NEW FILE
      • templates/cli/package.json - ESLint dependencies
      • templates/cli/tsup.config.ts - NEW FILE
      • templates/cli/eslint.config.js - NEW FILE
    • Templates Affected: All 4 main templates (full, minimal, api, cli)
    • Verification: All templates now pass typecheck, test, build, and lint commands successfully

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 create had TypeScript compilation errors out of the box
    • Impact: Users couldn't run newly created projects without manually fixing type errors
    • Root Causes:
      1. Logger initialization bug (3 files): createLogger() expects (name: string, options?: LoggerOptions) but templates called it with just an options object { level: 'info' }
      2. Type assertion bug (5 files): result.messages array access caused "of type 'unknown'" errors due to missing type guards
      3. Tool builder API bug (3 files): Templates used createTool() with builder pattern (.name().description()...) but createTool() is a function taking 3 parameters. Builder pattern requires toolBuilder()
    • Solution:
      • Fixed logger calls: createLogger({ level: 'info' })createLogger('name')
      • Added safe array access: result.messages[i].contentconst msg = result.messages[i]; msg?.content || 'No response'
      • Fixed tool builder: createTool()toolBuilder() and category: 'utility'category: ToolCategory.UTILITY
      • Updated tool generator in commands/tool/create.ts to use correct API
      • Added TOOL_CATEGORY_ENUM placeholder replacement for multi-file tool template
    • Files Fixed (9 total):
      • templates/full/src/index.ts - logger + result.messages
      • templates/full/src/tools/example.ts - tool builder
      • templates/minimal/src/index.ts - result.messages
      • templates/api/src/server.ts - logger
      • templates/api/src/routes/agent.ts - logger + result.messages
      • templates/cli/src/commands/chat.ts - result.messages
      • templates/cli/src/commands/analyze.ts - result.messages
      • templates/tool-multi/index.ts - tool builder
      • src/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

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/cli got ERR_PNPM_WORKSPACE_PKG_NOT_FOUND error when pnpm tried to install packages
    • Root Cause: pnpm publish was not automatically converting workspace protocols to concrete versions as expected
    • Solution:
      • Created scripts/convert-workspace-deps.mjs to manually convert workspace:* to concrete versions before publishing
      • Updated scripts/publish.sh to run conversion before publishing and restore workspace protocols after
      • Added .npmrc with auto-install-peers=true setting
      • Added @pnpm/exportable-manifest and @pnpm/read-project-manifest as dev dependencies
    • Reference: https://github.com/pnpm/pnpm/issues/5094
    • Verification: Published packages now have concrete versions in dependencies (e.g., "@agentforge/core": "0.12.1")

[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' to packages/core/src/index.ts
    • New Public Exports:
      • createHealthChecker() - Health check system with liveness/readiness probes
      • createProfiler() - Performance profiling with execution time and memory tracking
      • createAlertManager() - Alert rules and multi-channel notifications
      • createAuditLogger() - 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.ts and monitoring/health.ts when both exported from package root
    • Solution: Renamed the tools lifecycle type from HealthCheckResult to ToolHealthCheckResult
    • Migration: If you were using HealthCheckResult from the tools lifecycle module, update imports to ToolHealthCheckResult
    • Impact: Minimal - the tools lifecycle health check is a niche feature; most users will use the monitoring module's HealthCheckResult

[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 files
      • renderTemplate(template, options) - Render template strings with variable substitution
      • sanitizeValue(value) - Sanitize values to prevent prompt injection
      • RenderTemplateOptions - 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

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
    • 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 untrustedVariables for user-controlled data
    • 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 made false'false' (truthy) and 0'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
    • 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 ./prompts in consumer's cwd
      • Impact: Generated agents had prompt injection vulnerability and wouldn't work when published
      • Solution: Updated template to use trustedVariables/untrustedVariables and pass promptsDir derived from import.meta.url
    • Files Fixed:
      • packages/core/src/prompt-loader/index.ts - Fixed sanitizeValue order, conditional evaluation, and added tests
      • packages/core/tests/prompt-loader/index.test.ts - Added tests for false/0 in conditionals
      • examples/vertical-agents/customer-support/src/index.ts - Updated to use untrustedVariables
      • examples/vertical-agents/code-review/src/index.ts - Updated to use untrustedVariables
      • examples/vertical-agents/data-analyst/src/index.ts - Updated to use untrustedVariables
      • packages/cli/templates/reusable-agent/index.ts - Updated to use untrustedVariables and promptsDir

@agentforge/cli

  • [P1] Reusable Agent Creation Failure [CRITICAL]
    • Problem: agent:create-reusable command tried to move prompt-loader.ts file that no longer exists in template (removed during consolidation)
    • Impact: CLI command would throw fs.move error and fail after template copy
    • Solution: Removed prompt-loader.ts move operation from file organization step
    • Files Fixed:
      • packages/cli/src/commands/agent/create-reusable.ts - Removed obsolete file move
      • packages/cli/tests/commands/agent/create-reusable.test.ts - Updated test expectations

Documentation

  • Outdated Prompt Loader References [P2]

    • Problem: Documentation and example READMEs still referenced deleted local prompt-loader.ts files after consolidation into @agentforge/core
    • Impact: Users following documentation would get import errors and outdated security patterns
    • Solution: Updated all documentation to use shared loadPrompt from @agentforge/core with proper security API
    • Files Updated:
      • docs-site/guide/advanced/vertical-agents.md - Updated to use @agentforge/core import and security-aware API
      • examples/vertical-agents/customer-support/README.md - Updated import and added promptsDir resolution
      • examples/vertical-agents/code-review/README.md - Updated import and added promptsDir resolution
      • examples/vertical-agents/data-analyst/README.md - Updated import and added promptsDir resolution
  • Outdated File Tree Documentation [P2]

    • Problem: CLI README and vertical agents guide still listed src/prompt-loader.ts in file trees and key files sections
    • Impact: Documentation showed files that are no longer created/present
    • Solution: Removed prompt-loader.ts references and updated to reflect shared @agentforge/core loader
    • Files Updated:
      • packages/cli/README.md - Updated scaffolded file tree, added note about shared loader
      • docs-site/guide/advanced/vertical-agents.md - Updated key files sections for all 3 example agents

Example Agents

  • [P2] Missing promptsDir in Example Agents
    • Problem: All 3 example agents called loadPrompt without promptsDir parameter, falling back to process.cwd()
    • Impact: When consumed as published packages, prompts wouldn't resolve (would look in consumer's cwd instead of package directory)
    • Solution: Added promptsDir resolution using import.meta.url pattern to all example agents
    • Files Fixed:
      • examples/vertical-agents/customer-support/src/index.ts - Added promptsDir using join(__dirname, '../prompts')
      • examples/vertical-agents/code-review/src/index.ts - Added promptsDir using join(__dirname, '../prompts')
      • examples/vertical-agents/data-analyst/src/index.ts - Added promptsDir using join(__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 from src/ to sibling prompts/ directory

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
  • 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: RenderTemplateOptions for 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.ts
      • examples/vertical-agents/code-review/src/prompt-loader.ts
      • examples/vertical-agents/data-analyst/src/prompt-loader.ts
      • packages/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 }
      });

@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 in langgraph/middleware/index.ts but not re-exported from langgraph/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.ts lines 118-138

Documentation

  • Invalid Imports in Advanced Patterns Tutorial [P2]
    • Problem: Tutorial showed imports of createReasoningNode and createActionNode from @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.md lines 241-295

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:publish command 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 return ToolPathInfo interface with script availability flags; conditionally run test/build only if scripts exist; show clear skip messages
    • Location: packages/cli/src/commands/tool/publish.ts lines 29-60, 115-119, 183-237
  • Scoped Package Names Misinterpreted as Paths [P2]

    • Problem: Scoped package names like @agentforge/myTool were 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.ts lines 131-139
  • Scoped Package Common Location Resolution [P2]

    • Problem: When running tool:publish @scope/name from repo root, only looked for packages/@scope/name but most repos store scoped packages in unscoped folders like packages/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.ts lines 150-168

Tests

@agentforge/cli

  • Added 6 comprehensive tests for tool:publish command:
    • 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 byPriority metrics in executor.ts only 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.ts line 211

@agentforge/patterns

  • Tool Call Deduplication Cache Key Nested Object Handling [P3]
    • Problem: The generateToolCallCacheKey function 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.ts line 11-40

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.ts with 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 different metadata.name than 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 if tool.metadata.name doesn't match registry key
    • Guidance: Clear error message guides users to use remove() + register() for renaming
    • Location: packages/core/src/tools/registry.ts line 202
  • 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, and input undefined
    • 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) => right to enable default support while maintaining correct semantics
    • Location: packages/core/src/langgraph/state.ts line 76
    • Note: If a node explicitly returns { key: undefined }, it will override the default (expected behavior - nodes should omit keys instead)

@agentforge/cli

  • Agent Deploy Command False Success [P2]

    • Problem: agent:deploy command used setTimeout to 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.ts line 26
  • Tool Publish Command False Success [P2]

    • Problem: tool:publish command used setTimeout to 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 execa to run npm publish
    • Added: New publishPackage() utility function in packages/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.ts line 51

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 undefined overrides default)
    • Test showing best practice (nodes should omit keys, not write undefined)
    • Edge case coverage

@agentforge/cli

  • Updated 3 agent:deploy tests to verify error message and deployment instructions
  • Updated to 9 tool:publish tests 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: updatedWorkers which overwrites executionResult.workers
      • Solution: Merge executionResult.workers with 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.workers instead of state.workers, losing all workers not in the partial update
      • Solution: Always start with state.workers and merge in updates from executionResult.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 owns currentWorkload tracking
    • 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

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 implement invoke()
    • 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)
  • Consistent Logging: Replaced console.warn with 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() or toolBuilder are 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, with execute() 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 to execute()
    • 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 deprecation
    • packages/core/src/tools/helpers.ts - Reversed alias direction
    • packages/core/src/tools/builder.ts - Updated ToolBuilder
    • packages/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" });

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.ts was returning iteration: state.iteration + 1 on line 186. Since the iterationField uses 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 hit maxIterations much earlier than intended (e.g., after 3-4 cycles instead of 10).
    • Solution:
      • Changed iteration: state.iteration + 1 to iteration: 1 in supervisor node (line 186)
      • With additive reducer, returning 1 means "add 1 to current iteration"
      • Added clarifying comment explaining the additive reducer behavior
    • 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.ts verifying 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 calling tool.invoke(), but according to the Tool interface, execute is required and invoke is 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
    • Solution:
      • Updated executeWithRetry function to check for invoke first (LangChain compatibility), fall back to execute (required method)
      • Throws clear error if neither method exists
      • Uses .call(tool, input) to preserve correct this context
    • Impact:
      • Better compatibility with external tools and LangChain ecosystem
      • Prevents cryptic "invoke is not a function" errors
      • All AgentForge tools (created via createTool() or toolBuilder()) 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 this context when calling execute
      • Preserve this context when calling invoke
      • Retry logic with execute method
      • Retry logic with invoke method
    • Breaking Change: None - backward compatible bug fix

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 HumanMessage instead of ToolMessage in ReAct pattern
    • Problem: Observation nodes emitted messages with role: 'tool' but were missing tool_call_id, and the reasoning node didn't handle role: 'tool' case, causing tool outputs to fall back to HumanMessage. This mislabeled tool outputs and could degrade model behavior.
    • Solution:
      • Added tool_call_id field to observation messages (line 336 in packages/patterns/src/react/nodes.ts)
      • Added explicit handling for role: 'tool' messages to create proper ToolMessage instances (lines 63-70)
      • Added tool_call_id?: string to MessageSchema to preserve the field during state validation (line 28 in packages/patterns/src/react/schemas.ts)
    • 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
  • fix: returnIntermediateSteps configuration now properly used [P3 Bug]

    • Fixed returnIntermediateSteps configuration parameter being accepted but never used
    • Problem: The scratchpad was always populated with intermediate steps regardless of the returnIntermediateSteps setting, wasting memory and tokens when not needed.
    • Solution:
      • Updated createObservationNode to accept returnIntermediateSteps parameter (line 299-308 in packages/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)
    • 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
    • Tests: Added tests to verify both scenarios (scratchpad populated when true, empty when false)
    • Breaking Change: None - backward compatible bug fix
  • chore: Updated confusing iteration counter comment for clarity

    • Updated comment on line 110 of packages/patterns/src/react/nodes.ts to clarify that the value 1 is being added to the iteration counter using an additive reducer, not setting it to 1
    • Prevents confusion about how the iteration counter works

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 the invoke() method to inject worker registry, but did NOT wrap the stream() method. This meant streaming callers wouldn't see registered workers.
    • Solution:
      • Added _originalStream property to MultiAgentSystemWithRegistry interface (line 416)
      • Wrapped stream() method in registerWorkers() function (lines 494-510) following the same pattern as invoke()
      • Ensures registered workers are merged into state for both invoke() and stream() calls
    • Impact:
      • Streaming callers now see registered workers (same as invoke callers)
      • Consistent behavior between createMultiAgentSystem() and registerWorkers()
      • 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

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.name instead of t.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 MultiAgentSystemBuilder test to properly assert tool name extraction
    • Breaking Change: None - backward compatible with both tool types

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.task directly instead of state.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
    • Breaking Change: None - function signature and return type unchanged

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/core and @langchain/langgraph from peerDependencies to dependencies
    • Moved zod from peerDependencies to dependencies
    • Impact: Users no longer need to manually install LangChain dependencies
    • Benefit: Smoother installation experience - npm install @agentforge/core now automatically installs all required dependencies
    • Breaking Change: None - this is purely a packaging improvement

@agentforge/patterns

  • fix: Remove redundant peerDependencies
    • Removed duplicate peerDependencies section (dependencies were already correctly listed in dependencies)
    • Impact: Cleaner package.json, no functional changes

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, and tools/ 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.ts ensure consistency
      • Testability - each tool can be tested independently
    • Refactored Categories:
      • Slack Tools (4 tools) - slack.tsslack/ directory
      • HTTP Tools (3 tools) - http-client.tshttp/ directory
      • Scraper Tools (3 tools) - scraper.tsscraper/ directory
      • HTML Parser Tools (3 tools) - html-parser.tshtml-parser/ directory
      • URL Validator Tools (3 tools) - url-validator.tsurl-validator/ directory
      • CSV Tools (4 tools) - csv-parser.tscsv/ directory
      • JSON Tools (5 tools) - json-processor.tsjson/ directory
      • XML Tools (4 tools) - xml-parser.tsxml/ directory
      • Transformer Tools (6 tools) - transformer.tstransformer/ directory
      • File Operations (5 tools) - file-operations.tsoperations/ directory
      • Directory Operations (4 tools) - directory-operations.tsdirectory/ directory
      • Path Utilities (8 tools) - path-utilities.tspath/ directory
      • Date/Time Tools (5 tools) - date-time.tsdate-time/ directory
      • String Utilities (7 tools) - string-utilities.tsstring/ directory
      • Math Operations (4 tools) - math-operations.tsmath/ directory
      • Validation Tools (6 tools) - validation.tsvalidation/ directory
    • 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 spaces
    • getConfluencePage - Retrieve a specific page by ID with full content
    • listConfluenceSpaces - List all available Confluence spaces
    • getSpacePages - Get all pages within a specific space
    • createConfluencePage - Create new pages with optional parent pages
    • updateConfluencePage - Update existing page content and metadata
    • archiveConfluencePage - 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, and timeout from langgraph/patterns/ to langgraph/middleware/ for better semantic clarity and organization

Added

  • project: Added .github/copilot-instructions.md to 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 channels
    • notifySlack - Send notifications with @mentions to alert team members
    • getSlackChannels - List available Slack channels (public and private)
    • getSlackMessages - Read message history from channels
    • Configurable via environment variables (SLACK_USER_TOKEN or SLACK_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/core from 1.1.8/1.1.15 to 1.1.17
    • Updated @langchain/langgraph from 1.0.7/1.1.1 to 1.1.2
    • Updated @langchain/openai from 1.2.2/0.3.14 to 1.2.3
    • Applied updates across all packages and CLI templates

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/langgraph is a devDependency
    • Test count: 920 tests passing (down from 921 due to removed incompatible test)

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 askHuman tool in multi-agent systems
    • The Bug: Worker agents using askHuman would 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: true feature
      • Worker nodes now generate worker-specific thread IDs (format: {parent_thread_id}:worker:{workerId})
      • ReAct agent compilation now supports checkpointer: true to use parent's checkpointer with separate namespace
      • Worker agents configured to use checkpointer: true when created in multi-agent systems
    • Impact: Worker agents can now use askHuman tool 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: true support 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 generation
      • packages/patterns/src/react/types.ts - Added checkpointer: true support to types
      • packages/patterns/src/react/agent.ts - Updated compilation to handle checkpointer: true
      • packages/patterns/src/react/builder.ts - Added withCheckpointer() method
      • playground/src/agents/*-agent.ts - Updated all worker agents to use checkpointer: true
      • playground/src/system/pty-agi.ts - Pass checkpointer: true to all worker agents
    • Documentation Added:
      • packages/patterns/docs/react-agent-guide.md - Added withCheckpointer() method documentation
      • docs-site/guide/patterns/react.md - Added "State Persistence with Checkpointer" section
      • docs-site/guide/patterns/multi-agent.md - Added "Human-in-the-Loop with Checkpointers" section
      • docs/NESTED_GRAPH_INTERRUPT_FIX.md - Comprehensive planning document with all implementation phases
    • Test Results: All 921 tests passing

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 calling
      • withStructuredOutput() 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 tools parameter from SupervisorConfig
    • Removed maxToolRetries parameter from SupervisorConfig
    • 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 askHuman tool 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 });
    • 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

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
  • 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.ts at 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)

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() and isLevelEnabled() methods for performance optimization
    • All 322 tests passing (Patterns: 204, Tools: 118) with zero breaking changes

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:

bash
# 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.js

Fixed

  • Release Script Bug - Fixed root package.json not being updated during releases
    • Added root package.json to PACKAGE_FILES array in scripts/release.sh
    • Ensures version consistency across all package files

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 RoutingDecisionSchema to support both targetAgent (single) and targetAgents (array) fields
    • Updated LLM-based routing to handle structured output and select multiple target agents
    • Modified supervisor node to create multiple TaskAssignment objects 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

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 RoutingDecisionSchema to support both targetAgent (single) and targetAgents (array) fields
    • Updated LLM-based routing to handle structured output and select multiple target agents
    • Modified supervisor node to create multiple TaskAssignment objects 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

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 askHuman tool 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

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 executeFn for LangGraph runtime configuration support
    • Ensures interrupt() errors bubble up correctly through all execution layers
    • Added detailed code comments explaining GraphInterrupt handling

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 createLogger and LogLevel documentation 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)

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 tools parameter to SupervisorConfig for tool-enabled routing
    • Added maxToolRetries parameter 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 askHuman tool 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)

Examples

  • New Multi-Agent Example - 05-supervisor-with-askhuman.ts
    • Demonstrates supervisor using askHuman tool for ambiguous requests
    • Shows clear vs. ambiguous request handling
    • Best practices for tool-enabled supervisors

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.mdvertical-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 checkpointer parameter to all 4 agent patterns:
      • createReActAgent() - ReAct pattern with checkpointing
      • createPlanExecuteAgent() - Plan-Execute pattern with checkpointing
      • createReflectionAgent() - Reflection pattern with checkpointing
      • createMultiAgentSystem() - 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)

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 extends path to non-existent tsconfig.base.json
    • Added full standalone compiler options (templates should be self-contained)
    • Fixed rootDir from ./src to . (template files are at root level)
    • Fixed include from src/**/* 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

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, HumanRequestStatus types
    • 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 (.md files 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-reusable command

Changed

  • Moved HumanRequest types from tools to core (shared framework types)
  • Updated all documentation to reflect 70 tools
  • Added @langchain/langgraph as peer dependency (optional) for tools package

Fixed

  • Lockfile Update - Updated pnpm-lock.yaml to include reusable agent example dependencies
    • Fixes CI deployment issue with --frozen-lockfile flag
    • Ensures reproducible builds in GitHub Actions

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_used array 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 agent property in WorkerConfig for 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 executeFn approach
    • Enhanced error handling and verbose logging
    • New utility functions: isReActAgent() and wrapReActAgent()

Developer Experience

  • Release Automation - Added comprehensive release tooling
    • scripts/release.sh - Automated version bump script
    • scripts/publish.sh - Automated npm publishing script
    • RELEASE_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 WorkerConfig type 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 - Added invoke() as an alias to execute() 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 webSearch tool - 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_KEY for 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 ToolRelations interface and ToolRelationsSchema validation
    • Helps LLMs make better decisions about tool selection and ordering
  • Minimal Prompt Mode: Reduce token usage with native tool calling providers

    • New minimal option in ToolRegistry.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: true flag
  • Enhanced Prompt Generation: New options for ToolRegistry.generatePrompt()

    • includeRelations - Include tool relations in prompts
    • minimal - 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 templates
    • createReActAgent() 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 model parameter across all agent patterns
    • Changed all config interfaces to use model instead of llm
    • 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

[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 dotenv package dependency
  • CLI Minimal Template: Added missing .env.example file
  • 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/patterns was incorrectly referencing ^0.2.0 instead of ^0.3.1
  • All template package.json files now correctly reference ^0.3.1 for 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 .npmrc configuration 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 __dirname error in ES modules by using import.meta.url instead
  • 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

    • ToolBuilder for creating type-safe tools with Zod validation
    • ToolRegistry for managing and discovering tools
    • ToolExecutor with 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

Released under the MIT License.