Skip to content

chore: bump jsdom from 29.1.1 to 30.0.1 in /agentensemble-viz - #395

Closed
dependabot[bot] wants to merge 354 commits into
mainfrom
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1
Closed

dependabot[bot] wants to merge 354 commits into
mainfrom
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 24, 2026

Copy link
Copy Markdown
Contributor

Bumps jsdom from 29.1.1 to 30.0.1.

Release notes

Sourced from jsdom's releases.

v30.0.1

  • Fixed getComputedStyle() with calc() and other functions throwing an exception, which regressed in v30.0.0. (@​asamuzaK)
  • Sped up up range operations on large documents (@​leonidaz)

v30.0.0

Breaking changes:

  • Node.js minimum version raised to ^22.22.2 || ^24.15.0 || >=26.0.0.

Other changes:

  • Added CSS.escape() and CSS.supports() functions. (@​asamuzaK)
  • Added 'background-position-x' and 'background-position-y' CSS properties. (@​olagokemills)
  • Fixed getComputedStyle() to convert length values into pixels. (@​asamuzaK)
  • Fixed CSS function serialization, e.g., in the return value of getPropertyValue(). (@​asamuzaK)
  • Fixed the type of error thrown by document.evaluate() (@​dokson)
Commits
  • 6584485 30.0.1
  • 0c51df6 Update dependencies and dev dependencies
  • 32adb34 Bump @​asamuzakjp/dom-selector
  • 70f014a Speed up range operations on large documents
  • 250d7ee Partially fix getComputedStyle with calc()
  • 20a01fc 30.0.0
  • 8c8e583 Precompute WPT expectation matches
  • f32245c Bump Node.js floor and dependencies
  • 03ef23b Add background-position longhands
  • ded056f Test CSS.escape() with numeric IDs
  • Additional commits viewable in compare view

github-actions Bot and others added 30 commits March 3, 2026 16:30
Add @Singular("input") Map<String, String> inputs field to Ensemble builder
so template variables can be declared alongside all other configuration
rather than passed as an anonymous Map to run().

Before:
  .build().run(Map.of("company", company))

After:
  .input("company", company).build().run()

The no-arg run() now uses the builder inputs directly. The run(Map)
overload remains for dynamic multi-run scenarios; its values are merged
on top of builder inputs (run-time wins on key conflicts).

- Add @Singular("input") Map<String, String> inputs to Ensemble
- Refactor run() to delegate to internal runWithInputs(Map)
- run(Map) merges builder inputs + runtime inputs before executing
- Add EnsembleTest cases: default empty, single, multiple, bulk inputs
- Add SequentialEnsembleIntegrationTest cases: builder input resolves
  templates, run-time override, and cross-source merge
- Update all examples to use .input() on the builder
- Update docs/guides/template-variables.md and
  docs/reference/ensemble-configuration.md
Add pluggable InputGuardrail and OutputGuardrail functional interfaces
that run before and after agent execution on a per-task basis.

New package net.agentensemble.guardrail:
- InputGuardrail (@FunctionalInterface): validate(GuardrailInput)
- OutputGuardrail (@FunctionalInterface): validate(GuardrailOutput)
- GuardrailInput (record): taskDescription, expectedOutput, contextOutputs, agentRole
- GuardrailOutput (record): rawResponse, parsedOutput, taskDescription, agentRole
- GuardrailResult: success() / failure(String reason) factory methods
- GuardrailViolationException: extends AgentEnsembleException; carries
  GuardrailType (INPUT/OUTPUT), violationMessage, taskDescription, agentRole

Task changes:
- inputGuardrails: List<InputGuardrail> field (default empty immutable list)
- outputGuardrails: List<OutputGuardrail> field (default empty immutable list)

AgentExecutor changes:
- Runs input guardrails before building prompts (before any LLM call);
  first failure throws GuardrailViolationException immediately
- Runs output guardrails after final response and after structured output
  parsing; first failure throws GuardrailViolationException

SequentialWorkflowExecutor changes:
- Catch clause extended to include GuardrailViolationException alongside
  AgentExecutionException | MaxIterationsExceededException
- Fires TaskFailedEvent before wrapping in TaskExecutionException

Tests (499 -> 563, +64):
- GuardrailResultTest (6), GuardrailInputTest (3), GuardrailOutputTest (3)
- GuardrailViolationExceptionTest (5)
- ExceptionHierarchyTest (+4), TaskTest (+7), AgentExecutorTest (+11)
- GuardrailIntegrationTest (8) -- end-to-end via Ensemble with mocked LLMs

Documentation:
- docs/guides/guardrails.md (new guide)
- docs/guides/tasks.md (guardrails section)
- docs/reference/task-configuration.md (inputGuardrails/outputGuardrails rows)
- docs/reference/exceptions.md (GuardrailViolationException section)
- docs/getting-started/concepts.md (guardrails concept)
- docs/design/13-future-roadmap.md (Phase 8 marked COMPLETE)
- mkdocs.yml (Guardrails guide in nav)
- README.md (Guardrails section, task config table, roadmap)

Closes #58
…te tools, metrics (Closes #60, Closes #73) (#72)

* feat: add agentensemble-tools Gradle module with build and publishing

Adds agentensemble-tools/build.gradle.kts with java-library + vanniktech-publish,
dependency on :agentensemble-core (api), Jsoup for WebScraperTool, Jackson for
JSON providers, and JaCoCo coverage thresholds (LINE >= 90%, BRANCH >= 75%).

- settings.gradle.kts: include agentensemble-tools
- gradle/libs.versions.toml: add jsoup 1.18.3 version and library entry

Closes #60

* docs: add built-in tools guide and update installation docs for v1.0.0

- docs/guides/built-in-tools.md: new comprehensive guide with dependency
  instructions and one section per tool (CalculatorTool, DateTimeTool,
  FileReadTool, FileWriteTool, WebSearchTool, WebScraperTool, JsonParserTool)
- docs/design/13-future-roadmap.md: Phase 9 Built-in Tools marked COMPLETE
- docs/getting-started/installation.md: updated to v1.0.0; agentensemble-tools
  shown as optional dependency; switched to mavenCentral() repository
- mkdocs.yml: Built-in Tools added to Guides nav
- README.md: quickstart updated to v1.0.0 with agentensemble-tools; roadmap
  v1.0.0 entry struck through

* docs: update memory bank for v1.0.0 release

- activeContext.md: reflects completed Issue #60 on feature/60-built-in-tool-library
- progress.md: marks Issue #60 complete; updates current status to v1.0.0 target
- changelog.md: adds v1.0.0 entry with full implementation details

* feat: add AbstractAgentTool, ToolContext, ToolMetrics, and parallel tool execution (Closes #73)

- Add AbstractAgentTool base class with template method pattern (doExecute),
  automatic timing, success/failure/error metrics, exception safety, and
  fallback Logger/ToolMetrics/Executor before context injection
- Add ToolContext: Logger + ToolMetrics + Executor injected by framework
- Add ToolMetrics interface with per-(toolName,agentRole) tagging
- Add NoOpToolMetrics singleton (default, zero overhead)
- Add ToolContextInjector: friend-pattern bridge so ToolResolver (different
  package) can inject ToolContext and manage the agentRole thread-local
- Enhance ToolResult with optional structuredOutput field and typed accessor
- Enhance ToolCallEvent with structuredResult field
- Update ToolResolver: inject ToolContext into AbstractAgentTool instances,
  set/clear agentRole thread-local per execution, return ToolResult from execute()
- Update AgentExecutor: parallelize multi-tool LLM turns using CompletableFuture
  + configurable Executor; single-tool calls remain synchronous for efficiency
- Update ExecutionContext: add toolExecutor and toolMetrics fields
- Update Ensemble.builder(): expose toolExecutor(Executor) and toolMetrics(ToolMetrics)
- Update tests: ToolCallEvent constructor, ToolResolverTest, ExecutionContextTest
- Add AbstractAgentToolTest with 20 tests, update ToolResultTest with 4 new tests

Co-authored-by: Claude

* feat: restructure tools into per-module layout with AbstractAgentTool conversion

- Add buildSrc convention plugin (agentensemble.tool-conventions) with shared
  java-library, vanniktech-publish, spotless, errorprone, jacoco, coverage thresholds,
  and common test dependency configuration
- Migrate all 7 existing tools to sub-modules under agentensemble-tools/:
  calculator, datetime, json-parser, file-read, file-write, web-search, web-scraper
- Each tool converted to extend AbstractAgentTool (doExecute instead of execute)
  with automatic metrics, logging, and exception handling from base class
- New sub-packages: net.agentensemble.tools.{calculator,datetime,json,io,web.search,web.scraper}
- Add BOM module at agentensemble-tools/bom for version alignment
- Add agentensemble-metrics-micrometer module skeleton
- Add pluginManagement to settings.gradle.kts to resolve plugin version conflicts
- Update root build.gradle.kts to skip tool sub-modules from subprojects{}
- Coverage tests: DateTime (unsupported units, NoZ fallback), FileRead/Write exception paths
- All modules: spotless formatting applied, coverage thresholds met

* feat: add ProcessAgentTool, HttpAgentTool, and MicrometerToolMetrics

- ProcessAgentTool: subprocess execution with formal AgentEnsemble protocol
  - Input: JSON {"input":"..."} written to process stdin
  - Success: {"output":"...","success":true} or with structured payload
  - Failure: {"error":"...","success":false} or non-zero exit code
  - Configurable timeout, process killed on expiry
  - Gracefully handles processes that do not read stdin
  - Builder pattern with name/description/command/timeout configuration
  - 21 tests (builder validation, protocol parsing, real subprocesses via sh)

- HttpAgentTool: REST endpoint wrapping for cross-language tools
  - GET: input appended as ?input=... query parameter
  - POST: input as request body (application/json if valid JSON, text/plain otherwise)
  - Configurable method, headers, timeout via builder
  - Factory methods: get() and post() for common cases
  - HTTP 4xx/5xx treated as failures; network errors returned as failures
  - Injectable HttpClient for testability
  - 19 tests (builder validation, GET/POST, error responses, network failures)

- MicrometerToolMetrics: Micrometer adapter for ToolMetrics interface
  - Records agentensemble.tool.executions counter (tagged by tool_name, agent_role, outcome)
  - Records agentensemble.tool.duration timer (tagged by tool_name, agent_role)
  - Custom metric support via incrementCounter() and recordValue()
  - 14 tests verifying registry entries with correct tags

* docs: update tool system docs, add remote-tools and metrics guides, add new examples

- Remove superseded agentensemble-tools/src/ (replaced by per-module structure)
- Update agentensemble-examples/build.gradle.kts with all tool module dependencies
- Update mkdocs.yml navigation: add Remote Tools and Metrics guides
- Update getting-started/installation.md: per-tool deps, BOM, full module table
- Update guides/tools.md: AbstractAgentTool, ToolContext, parallel execution, structured output
- Update guides/built-in-tools.md: per-module installation, updated package names
- Add guides/remote-tools.md: ProcessAgentTool and HttpAgentTool with protocol spec,
  builder options, Node.js example, parallel execution
- Add guides/metrics.md: ToolMetrics, MicrometerToolMetrics usage, Prometheus queries,
  custom metrics, custom implementation guide
- Add RemoteToolExample.java: demonstrates ProcessAgentTool (Python) + HttpAgentTool
- Add MetricsExample.java: demonstrates MicrometerToolMetrics with SimpleMeterRegistry,
  prints counters and timers after ensemble run
- Make MicrometerToolMetrics tag constants public for external use

* docs: update memory bank for Issues #60 and #73 completion

* fix: resolve Javadoc @link reference errors in ExecutionContext

Lombok-generated builder methods (toolExecutor, toolMetrics) are not
resolvable by the Javadoc tool via @link cross-references because Lombok
annotation processing runs separately from Javadoc source processing.

Replace the unresolvable @link method references with @code examples
that show the builder usage without requiring symbol resolution.

* fix: address Copilot PR review comments

- FileReadTool/FileWriteTool: block symlink-based sandbox escapes by
  re-validating the real path (toRealPath()) against the sandbox base
  directory after the initial normalize()+startsWith() check. The initial
  check prevents "../" traversal but not symlinks inside baseDir that
  point outside. Tests added for both tools.

- ProcessAgentTool: drain stdout and stderr concurrently on virtual
  threads before calling waitFor(). The previous sequential approach
  (wait-then-drain) could deadlock if the child process wrote more
  output than the OS pipe buffer (~64 KB) before we started reading.

- agentensemble-tools/bom: add explicit Maven coordinates
  (net.agentensemble:agentensemble-tools-bom) so the BOM publishes
  under a meaningful artifact ID rather than defaulting to just 'bom'.

- README.md: update the built-in tools dependency snippet from the
  obsolete agentensemble-tools:1.0.0 aggregate artifact to the correct
  per-tool module + BOM pattern that matches the restructured layout.

- docs/guides/built-in-tools.md: add SSRF security note for
  WebScraperTool explaining the risk and mitigation for untrusted URL
  inputs.

* docs: update memory bank with post-review fixes

* fix: address second round of Copilot PR review comments

- CalculatorTool: fix unary/exponentiation precedence. parseUnary() was
  calling parsePrimary() instead of recursively calling itself, breaking
  '--5' and '+-3'. Also, '-2^2' was parsed as (-2)^2 = 4 instead of the
  standard math convention -(2^2) = -4. Fixed by restructuring the call
  chain: parseTerm -> parseUnary -> parsePower -> parsePrimary (unary
  now wraps power, so ^ binds tighter than unary minus). Tests added:
  doubleUnaryMinus, unaryPlusThenMinus, unaryMinusBeforeExponentiation,
  negativeBaseInParentheses, exponentiationWithNegativeExponent.

- MicrometerToolMetrics: replace recordValue() Gauge with
  DistributionSummary. Gauge.register(registry) with a plain double does
  not update on subsequent calls -- it either deduplicates and keeps the
  first value, or re-registers stale snapshots. DistributionSummary
  correctly accumulates independent observations per call, consistent
  with how Timer and Counter work. Tests updated to use summaries()
  and an accumulation test added.
Release-As: 1.0.0
release.yml: change from :agentensemble-core:publishAndReleaseToMavenCentral
to root-level publishAndReleaseToMavenCentral so all publishable modules
(core, 9 tool modules, tools BOM, metrics-micrometer) are included in
every release. Modules without the maven-publish plugin (examples, parent
containers) are automatically skipped by Gradle.

publish-modules.yml: new workflow_dispatch workflow for manually publishing
specific modules to Maven Central. Accepts a version and optional
comma-separated module list. Use when individual modules need to be
republished without re-running a full tag-triggered release.
…ion hook (#80) (#82)

* feat(#80): add public ManagerPromptStrategy API for hierarchical workflow

Introduces a public extension hook allowing callers to customise the
system and user prompts of the Manager agent in a hierarchical workflow
without forking framework internals.

New types in net.agentensemble.workflow:
- ManagerPromptStrategy: public interface with buildSystemPrompt() and
  buildUserPrompt() methods, each receiving a ManagerPromptContext.
- ManagerPromptContext: public immutable record carrying agents, tasks,
  previousOutputs, and workflowDescription.
- DefaultManagerPromptStrategy: public class implementing the interface,
  containing the prompt logic previously in ManagerPromptBuilder.
  Exposes a DEFAULT singleton.

ManagerPromptBuilder is now deprecated (forRemoval = true). Both static
methods delegate to DefaultManagerPromptStrategy.DEFAULT and produce
identical output.

Ensemble.Builder gains .managerPromptStrategy(ManagerPromptStrategy).
If not set, DefaultManagerPromptStrategy.DEFAULT is used. The strategy
is only exercised for HIERARCHICAL workflow.

HierarchicalWorkflowExecutor accepts the strategy via a new constructor
overload. When the strategy returns a blank user prompt the executor
falls back to a built-in coordinator description rather than throwing
a ValidationException (validation is the caller's responsibility).

Tests added:
- ManagerPromptContextTest: record field accessors, equality, empty context.
- DefaultManagerPromptStrategyTest: all prompt-content assertions plus
  parity tests verifying output matches deprecated ManagerPromptBuilder.
- HierarchicalWorkflowExecutorTest: custom strategy injection (system and
  user prompt), empty-string strategy, null-strategy fallback, context
  field verification.

* feat(#77): add structured DelegationRequest and DelegationResponse contracts

Introduces typed delegation contracts across both peer (AgentDelegationTool)
and hierarchical (DelegateTaskTool) delegation paths, implementing the
Option C hybrid design: the LLM-facing @tool method signature is unchanged
(2-param String return), but the framework internally constructs and threads
DelegationRequest/DelegationResponse through the delegation pipeline.

New types in net.agentensemble.delegation:
- DelegationPriority: LOW, NORMAL (default), HIGH, CRITICAL enum.
- DelegationStatus: SUCCESS, FAILURE, PARTIAL enum.
- DelegationRequest: immutable Lombok @Value/@builder with auto-UUID
  taskId, agentRole, taskDescription, scope (Map), priority
  (DelegationPriority), expectedOutputSchema, maxOutputRetries, metadata.
- DelegationResponse: immutable Java record with taskId, status, workerRole,
  rawOutput, parsedOutput, artifacts, errors, metadata, duration.

AgentDelegationTool and DelegateTaskTool:
- Construct a DelegationRequest before each invocation.
- Produce a DelegationResponse (SUCCESS or FAILURE) after execution.
- Guard failures (depth limit, self-delegation, unknown agent) also produce
  a FAILURE response for full auditability.
- Both tools expose getDelegationResponses() returning an immutable list of
  all responses in invocation order.
- getDelegatedOutputs() and the @tool method signature are unchanged.

Tests added:
- DelegationPriorityTest, DelegationStatusTest: enum completeness.
- DelegationRequestTest: builder, auto-UUID, uniqueness, defaults, overrides,
  toBuilder preservation.
- DelegationResponseTest: record accessors, equality, artifact/metadata
  population, taskId correlation with DelegationRequest.
- AgentDelegationToolTest: 12 new tests covering getDelegationResponses()
  for success, guard failures, multiple delegations, and immutability.
- DelegateTaskToolTest: 11 new tests covering the same contract for the
  hierarchical delegation path.

* docs(#77,#80): update README, guides, examples, and design docs

Issue #80 - ManagerPromptStrategy documentation:
- README.md: add Custom Manager Prompts note under Hierarchical Workflow
  and managerPromptStrategy row in Ensemble Configuration table
- docs/guides/workflows.md: new Customizing the Manager Prompt subsection
  with ManagerPromptContext field table and code example
- docs/reference/ensemble-configuration.md: add managerPromptStrategy row
- docs/examples/hierarchical-team.md: append Custom Manager Prompts section
- HierarchicalTeamExample.java: demonstrate investmentStrategy using
  ManagerPromptStrategy with DefaultManagerPromptStrategy.DEFAULT delegation
- docs/design/02-architecture.md: update strategy pattern note to include
  ManagerPromptStrategy as a secondary strategy extension point

Issue #77 - DelegationRequest/Response documentation:
- README.md: add Structured delegation contracts blurb under Agent Delegation
- docs/guides/delegation.md: new Structured Delegation Contracts section
  with DelegationRequest field table, DelegationResponse field table,
  and notes on guard-failure auditing
- docs/design/03-domain-model.md: add DelegationRequest, DelegationResponse,
  DelegationStatus, and DelegationPriority type specifications

* chore: update memory bank for issues #77 and #80

Updates activeContext.md and changelog.md to reflect the completed
implementation of:
- Issue #80: ManagerPromptStrategy / ManagerPromptContext /
  DefaultManagerPromptStrategy API
- Issue #77: DelegationRequest / DelegationResponse / DelegationPriority /
  DelegationStatus structured delegation contracts

* fix: replace Lombok-unresolvable javadoc links with @code in DelegationRequest/Response

DelegationRequest#builder() and DelegationRequest#getTaskId() are generated
by Lombok @Builder/@value at annotation-processing time and are not visible
to the Javadoc tool, causing 'reference not found' errors in CI.

Replace both {at-link} references with {at-code} to preserve readability
while keeping the Javadoc task green.

* fix: address Copilot PR review feedback for PR #82

DelegationRequest (#77):
- Add custom DelegationRequestBuilder.build() with blank validation for
  agentRole and taskDescription (throws ValidationException). The previous
  @NonNull/@Builder.Default approach only caught null, not blank strings.
  Updated DelegationRequestTest to expect ValidationException + added
  new blank-value test cases.

DefaultManagerPromptStrategy (#80):
- Fix misleading constructor comment: class is final, subclassing is not
  possible; comment now reads 'discourage direct instantiation'.
- Fix Javadoc code example: ManagerPromptStrategy is not @FunctionalInterface
  (two abstract methods); replace lambda syntax with anonymous class.

Ensemble.java (#80):
- Same lambda -> anonymous class fix in managerPromptStrategy field Javadoc.

ManagerPromptStrategy (#80):
- Update @return Javadoc on both methods: null/blank is accepted and
  handled by the executor rather than strictly 'must not be null'.

HierarchicalWorkflowExecutor (#80):
- Document that previousOutputs and workflowDescription in
  ManagerPromptContext are reserved for future use and currently always
  empty/null.

AgentDelegationTool + DelegateTaskTool (#77):
- Add Option C hybrid design comment at the return site explaining why
  plain text (not serialized DelegationResponse JSON) is returned to the LLM.
- DelegateTaskTool.getDelegationResponses(): add note that in hierarchical
  workflow the tool instance is internal and responses are not accessible
  after Ensemble.run() returns.

Tests:
- AgentDelegationToolTest.getDelegationResponses_returnsImmutableList:
  replace org.junit.jupiter.api.Assertions.assertThrows with AssertJ
  assertThatThrownBy for consistency.
- DelegateTaskToolTest: add test covering the catch(Exception e) path
  where the executor throws; verifies FAILURE response is recorded and
  exception is re-thrown.
* feat(#79,#78): add delegation lifecycle events, correlation IDs, and policy hooks

Issue #79: Delegation lifecycle events
- Add DelegationStartedEvent, DelegationCompletedEvent, DelegationFailedEvent records
  in net.agentensemble.callback with delegationId correlation field
- Extend EnsembleListener with onDelegationStarted, onDelegationCompleted,
  onDelegationFailed default methods
- Add fireDelegationStarted, fireDelegationCompleted, fireDelegationFailed to
  ExecutionContext with same exception-isolation semantics as existing fire methods
- Fire events in AgentDelegationTool (peer delegation) and DelegateTaskTool
  (hierarchical delegation) at all outcomes: started, completed, failed
- Guard failures and policy rejections fire DelegationFailedEvent only (no start event)
- Worker exceptions fire both DelegationStartedEvent and DelegationFailedEvent
- Add lambda convenience methods to Ensemble.Builder: onDelegationStarted,
  onDelegationCompleted, onDelegationFailed

Issue #78: Delegation policy hooks
- Add DelegationPolicy (@FunctionalInterface), DelegationPolicyResult (sealed
  interface: Allow/Reject/Modify), DelegationPolicyContext (record) in
  net.agentensemble.delegation.policy
- Extend DelegationContext with List<DelegationPolicy> policies field propagated
  through descend(); add policies parameter to create() factory method
- Wire policies through Ensemble.builder().delegationPolicy(DelegationPolicy)
  (@Singular) into all three workflow executors (Sequential, Hierarchical, Parallel)
- Evaluate all policies in AgentDelegationTool and DelegateTaskTool after guards
  and before worker invocation; REJECT short-circuits; MODIFY replaces working request

Tests:
- Unit: DelegationPolicyContextTest, DelegationPolicyResultTest
- Unit: AgentDelegationToolPolicyTest (ALLOW/REJECT/MODIFY/chaining/context fields)
- Unit: DelegateTaskToolPolicyAndEventsTest (policy evaluation + event firing)
- Unit: DelegationEventsTest (record fields), AgentDelegationToolEventsTest
  (start/completed/failed events, correlation IDs, listener exception isolation)

* docs(#78,#79): update README, guides, examples, and design docs

- docs/guides/delegation.md: add Delegation Policy Hooks section (DelegationPolicy,
  DelegationPolicyResult, DelegationPolicyContext, evaluation semantics, scope) and
  Delegation Lifecycle Events section (event types, field tables, correlation IDs,
  lambda and full-interface registration examples)
- docs/guides/callbacks.md: add DelegationStartedEvent, DelegationCompletedEvent,
  DelegationFailedEvent event type tables; update quick-start example with delegation
  lambdas; fix 'all four methods' -> 'all methods' in interface description
- docs/reference/ensemble-configuration.md: add delegationPolicies field to builder
  configuration table
- docs/design/13-future-roadmap.md: add Phase 7+ section documenting the completed
  delegation policy and lifecycle event implementation (#78, #79)
- docs/examples/callbacks.md: add Delegation Events section with lambda and full
  EnsembleListener examples showing DelegationStartedEvent correlation and failure cases
- docs/examples/hierarchical-team.md: add Delegation Policy Hooks section with
  business-rule policy examples and delegation event integration
- README.md: add delegation policy hooks and delegation lifecycle events to Agent
  Delegation section; add delegation events to Callbacks section; add delegationPolicy,
  onDelegationStarted, onDelegationCompleted, onDelegationFailed to Ensemble
  Configuration table

* mem bank: update for delegation policy hooks (#78) and lifecycle events (#79)

* fix(#84): address Copilot PR review comments

- Fix r2886947307 / r2886947329: add delegation.id MDC key during worker execution
  window in both AgentDelegationTool and DelegateTaskTool so worker logs can be
  correlated to DelegationStarted/Completed/Failed events; prior value is saved and
  restored in the finally block for correct nesting semantics

- Fix r2886947364 / r2886947379: add defensive null-check on DelegationPolicy.evaluate()
  return value in both AgentDelegationTool and DelegateTaskTool; a null result now throws
  IllegalStateException instead of silently bypassing policy enforcement as an implicit ALLOW;
  also add null-check on DelegationPolicyResult.Modify.modifiedRequest() to catch policies
  that bypass the factory method validation

- Fix r2886947341: correct Javadoc on Ensemble.delegationPolicies field; the non-existent
  varargs reference delegationPolicy(DelegationPolicy...) is replaced with the actual
  Lombok-generated delegationPolicy(DelegationPolicy) (repeatable) and
  delegationPolicies(Collection) builder methods

- Fix r2886947397: pass delegationContext.descend() instead of the root delegationContext
  to the worker execution in DelegateTaskTool; without descend(), a worker at depth=0
  receiving the root context could peer-delegate even when maxDelegationDepth=1, permitting
  an extra hop; with descend() the worker's depth state matches the DelegationStartedEvent
  depth field and maxDelegationDepth enforcement is consistent across both delegation paths

* fix(#84): fix Javadoc reference not found errors in delegation event records

DelegationRequest uses Lombok @value which generates getTaskId() at compile time.
The Javadoc tool processes source before annotation processing so Lombok-generated
methods are invisible to it, causing 'reference not found' on:
  - {@link DelegationRequest#getTaskId()} in DelegationStartedEvent (lines 14, 22)
  - {@link net.agentensemble.delegation.DelegationRequest#getTaskId()} in
    DelegationCompletedEvent (line 14) and DelegationFailedEvent (line 34)

Replace all broken {@link}s with {@code} text so the documentation is accurate
but does not attempt to resolve a method the Javadoc tool cannot see.

Also: identified root cause of local vs CI gap -- CI runs
  ./gradlew build :agentensemble-core:javadoc --continue
but local verification only ran :agentensemble-core:check (which skips javadoc).

* mem bank: document CI parity rule and Lombok javadoc constraint (PR #84 lesson)

* chore: wire javadoc into :agentensemble-core:check task

Add dependsOn(javadoc) to the check task in agentensemble-core/build.gradle.kts
so that ./gradlew :agentensemble-core:check now also validates Javadoc generation.
Previously check only covered spotless, tests, and coverage -- Javadoc was only
run by the CI step ./gradlew build :agentensemble-core:javadoc --continue, creating
a local/CI parity gap that caused the PR #84 CI failure.

* fix(#84): address second round of Copilot PR review comments

Fix A (r2887173547, r2887173577, r2887173603, r2887173617, r2887173627,
r2887173637, r2887173654): DelegationRequest is Lombok @value, not a record;
all doc and Javadoc examples used record-style accessors (.scope(), .agentRole(),
.taskDescription()) that don't compile against the actual API. Replace with the
correct Lombok getter pattern (.getScope(), .getAgentRole(), .getTaskDescription()).
Also fix Map.of("region", "us-east-1") which infers Map<String,String> but scope
is Map<String,Object>; replace with Map.<String, Object>of("region", "us-east-1")
in all Javadoc and guide examples.

Affected files:
  - DelegationPolicy.java (Javadoc pre code block)
  - DelegationPolicyResult.java (Javadoc pre code block)
  - Ensemble.java (Javadoc pre code block)
  - README.md (Agent Delegation section example)
  - docs/guides/delegation.md (policy hooks examples)
  - docs/examples/hierarchical-team.md (policy hooks section)

Fix B (r2887173585, r2887173643): DelegationPolicyResult.modify() can change
agentRole, but both AgentDelegationTool and DelegateTaskTool resolved the worker
agent before policy evaluation and continued using that pre-policy agent even
if MODIFY changed the agentRole. This caused events, Task execution, and
DelegationResponse to report different agent roles, and could bypass unknown-agent
and self-delegation guards on the final agentRole.

Fix: after all policies are evaluated, re-resolve the agent from
finalRequest.agentRole() before firing DelegationStartedEvent. If the re-resolved
agent is null (unknown after MODIFY) or is the caller (self-delegation after MODIFY),
fire DelegationFailedEvent and return an error. Both AgentDelegationTool and
DelegateTaskTool now use the re-resolved agent for all subsequent operations.

New tests:
  - modifyPolicy_changesAgentRoleToUnknownAgent_returnsErrorAndFiresFailedEvent
  - modifyPolicy_changesAgentRoleToSelf_returnsErrorAndFiresFailedEvent
  - modifyPolicy_changesAgentRoleToUnknown_returnsErrorAndNoWorkerExecution
…onstraintViolationException, enforcer (#86)

* feat(#81): add HierarchicalConstraints with enforcer, validation, and tests

* docs(#81): update README, guides, examples, reference, and design docs for HierarchicalConstraints

* chore: update memory bank for issue #81 HierarchicalConstraints

* fix(#81): address Copilot PR #86 review comments

- ConstraintViolationException: enforce non-null/non-empty violations at
  construction time (IllegalArgumentException); fix package-private
  {@link} in Javadoc to use {@code} instead
- EnsembleValidator: add duplicate-role validation across requiredStages
  stages (ValidationException when same role appears in multiple stages)
- Ensemble: fix package-private {@link HierarchicalConstraintEnforcer}
  in field Javadoc to use {@code}
- docs/design/03-domain-model.md: fix requiredWorkers violation throws
  ConstraintViolationException (not ValidationException/
  TaskExecutionException); fix enforcement order to match code
  (global cap before per-worker cap); update post-execution exception type
- docs/design/04-execution-engine.md: clarify per-worker completed
  delegation record vs approved attempt counts for caps; update cap
  table descriptions to say 'approved delegation attempts'
- docs/guides/delegation.md: fix grammar 'are surface' -> 'are surfaced'
- Tests: add empty/null violations tests to ConstraintViolationExceptionTest;
  add duplicate-stage test to EnsembleConstraintValidationTest
Add structured YAML issue templates for:
- Bug reports (with environment, reproduction steps, logs)
- Feature requests (with problem statement, area dropdown)
- Documentation improvements (with page, issue type, suggestion)

Also adds config.yml to disable blank issues and link to
GitHub Discussions and the documentation site.
dependabot Bot and others added 15 commits June 29, 2026 08:54
Bumps the minor-and-patch group with 9 updates:

| Package | From | To |
| --- | --- | --- |
| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.0` | `9.6.1` |
| [dev.langchain4j:langchain4j](https://github.com/langchain4j/langchain4j) | `1.16.3` | `1.17.0` |
| [dev.langchain4j:langchain4j-core](https://github.com/langchain4j/langchain4j) | `1.16.3` | `1.17.0` |
| [dev.langchain4j:langchain4j-open-ai](https://github.com/langchain4j/langchain4j) | `1.16.3` | `1.17.0` |
| [dev.langchain4j:langchain4j-mcp](https://github.com/langchain4j/langchain4j) | `1.16.3-beta26` | `1.17.0-beta27` |
| [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` |
| [org.junit.platform:junit-platform-launcher](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` |
| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.5.34` | `1.5.37` |
| org.apache.kafka:kafka-clients | `4.3.0` | `4.3.1` |


Updates `gradle-wrapper` from 9.6.0 to 9.6.1
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.6.0...v9.6.1)

Updates `dev.langchain4j:langchain4j` from 1.16.3 to 1.17.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.16.3...1.17.0)

Updates `dev.langchain4j:langchain4j-core` from 1.16.3 to 1.17.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.16.3...1.17.0)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.16.3 to 1.17.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.16.3...1.17.0)

Updates `dev.langchain4j:langchain4j-core` from 1.16.3 to 1.17.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.16.3...1.17.0)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.16.3 to 1.17.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.16.3...1.17.0)

Updates `dev.langchain4j:langchain4j-mcp` from 1.16.3-beta26 to 1.17.0-beta27
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](https://github.com/langchain4j/langchain4j/commits)

Updates `org.junit.jupiter:junit-jupiter` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.0...r6.1.1)

Updates `org.junit.platform:junit-platform-launcher` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.0...r6.1.1)

Updates `ch.qos.logback:logback-classic` from 1.5.34 to 1.5.37
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](qos-ch/logback@v_1.5.34...v_1.5.37)

Updates `org.apache.kafka:kafka-clients` from 4.3.0 to 4.3.1

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-mcp
  dependency-version: 1.17.0-beta27
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.junit.platform:junit-platform-launcher
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.5.37
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.apache.kafka:kafka-clients
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The Build and Test job was the only job on ubicloud-standard-4; the other
four jobs already use ubuntu-latest. For a public repo, GitHub-hosted
ubuntu-latest is a free 4 vCPU / 16 GB runner -- effectively the same
machine as ubicloud-standard-4 -- so this drops the Ubicloud dependency
at no cost to build capacity.
Bumps the minor-and-patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| com.diffplug.spotless | `8.7.0` | `8.8.0` |
| [dev.langchain4j:langchain4j](https://github.com/langchain4j/langchain4j) | `1.17.0` | `1.17.1` |
| [dev.langchain4j:langchain4j-core](https://github.com/langchain4j/langchain4j) | `1.17.0` | `1.17.1` |
| [dev.langchain4j:langchain4j-open-ai](https://github.com/langchain4j/langchain4j) | `1.17.0` | `1.17.1` |
| [dev.langchain4j:langchain4j-mcp](https://github.com/langchain4j/langchain4j) | `1.17.0-beta27` | `1.17.1-beta27` |


Updates `com.diffplug.spotless` from 8.7.0 to 8.8.0

Updates `dev.langchain4j:langchain4j` from 1.17.0 to 1.17.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.0...1.17.1)

Updates `dev.langchain4j:langchain4j-core` from 1.17.0 to 1.17.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.0...1.17.1)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.17.0 to 1.17.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.0...1.17.1)

Updates `dev.langchain4j:langchain4j-core` from 1.17.0 to 1.17.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.0...1.17.1)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.17.0 to 1.17.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.0...1.17.1)

Updates `dev.langchain4j:langchain4j-mcp` from 1.17.0-beta27 to 1.17.1-beta27
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](https://github.com/langchain4j/langchain4j/commits)

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j
  dependency-version: 1.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-mcp
  dependency-version: 1.17.1-beta27
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: dev.langchain4j:langchain4j
  dependency-version: 1.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.17.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-mcp
  dependency-version: 1.17.2-beta27
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.toonformat:jtoon
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.junit.platform:junit-platform-launcher
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.5.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-api
  dependency-version: 1.64.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk
  dependency-version: 1.64.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk-testing
  dependency-version: 1.64.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk
  dependency-version: 1.64.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk-testing
  dependency-version: 1.64.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the minor-and-patch group with 4 updates: [dev.langchain4j:langchain4j](https://github.com/langchain4j/langchain4j), [dev.langchain4j:langchain4j-core](https://github.com/langchain4j/langchain4j), [dev.langchain4j:langchain4j-open-ai](https://github.com/langchain4j/langchain4j) and [dev.langchain4j:langchain4j-mcp](https://github.com/langchain4j/langchain4j).


Updates `dev.langchain4j:langchain4j` from 1.17.2 to 1.18.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.2...1.18.0)

Updates `dev.langchain4j:langchain4j-core` from 1.17.2 to 1.18.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.2...1.18.0)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.17.2 to 1.18.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.2...1.18.0)

Updates `dev.langchain4j:langchain4j-core` from 1.17.2 to 1.18.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.2...1.18.0)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.17.2 to 1.18.0
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.17.2...1.18.0)

Updates `dev.langchain4j:langchain4j-mcp` from 1.17.2-beta27 to 1.18.0-beta28
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](https://github.com/langchain4j/langchain4j/commits)

---
updated-dependencies:
- dependency-name: dev.langchain4j:langchain4j
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-mcp
  dependency-version: 1.18.0-beta28
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…e minor-and-patch group (#373)

chore: bump ch.qos.logback:logback-classic in the minor-and-patch group

Bumps the minor-and-patch group with 1 update: [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback).


Updates `ch.qos.logback:logback-classic` from 1.5.38 to 1.6.0
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](qos-ch/logback@v_1.5.38...v_1.6.0)

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…up (#376)

Bumps the minor-and-patch group with 1 update: [gradle/actions](https://github.com/gradle/actions).


Updates `gradle/actions` from 6 to 6.2.0
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](gradle/actions@v6...v6.2.0)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the minor-and-patch group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| com.diffplug.spotless | `8.8.0` | `8.9.0` |
| [dev.langchain4j:langchain4j](https://github.com/langchain4j/langchain4j) | `1.18.0` | `1.18.1` |
| [dev.langchain4j:langchain4j-core](https://github.com/langchain4j/langchain4j) | `1.18.0` | `1.18.1` |
| [dev.langchain4j:langchain4j-open-ai](https://github.com/langchain4j/langchain4j) | `1.18.0` | `1.18.1` |
| [dev.langchain4j:langchain4j-mcp](https://github.com/langchain4j/langchain4j) | `1.18.0-beta28` | `1.18.1-beta28` |
| [org.jsoup:jsoup](https://github.com/jhy/jsoup) | `1.22.2` | `1.23.1` |
| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.6.0` | `1.6.1` |


Updates `com.diffplug.spotless` from 8.8.0 to 8.9.0

Updates `dev.langchain4j:langchain4j` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.18.0...1.18.1)

Updates `dev.langchain4j:langchain4j-core` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.18.0...1.18.1)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.18.0...1.18.1)

Updates `dev.langchain4j:langchain4j-core` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.18.0...1.18.1)

Updates `dev.langchain4j:langchain4j-open-ai` from 1.18.0 to 1.18.1
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](langchain4j/langchain4j@1.18.0...1.18.1)

Updates `dev.langchain4j:langchain4j-mcp` from 1.18.0-beta28 to 1.18.1-beta28
- [Release notes](https://github.com/langchain4j/langchain4j/releases)
- [Commits](https://github.com/langchain4j/langchain4j/commits)

Updates `org.jsoup:jsoup` from 1.22.2 to 1.23.1
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](jhy/jsoup@jsoup-1.22.2...jsoup-1.23.1)

Updates `ch.qos.logback:logback-classic` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](qos-ch/logback@v_1.6.0...v_1.6.1)

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-core
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-open-ai
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: dev.langchain4j:langchain4j-mcp
  dependency-version: 1.18.1-beta28
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.jsoup:jsoup
  dependency-version: 1.23.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add a whitepaper on observability for agentic systems and two design docs
covering the framework-side gaps it identifies.

Whitepaper (docs/whitepaper/agent-observability.md):
- Five-mode agent failure taxonomy; only one is detected by classical signals
- Four-layer instrumentation model: process, behavioral, outcome, economic
- How AgentEnsemble instruments in-process: EnsembleListener, ExecutionTrace,
  CaptureMode, ToolMetrics, OTel + W3C propagation, adaptive audit
- Contrast with out-of-process CLI agents (Claude Code, OpenAI Codex), which
  invert the problem: outcome signal is nearly free because a human labels
  every turn, but prompt-version attribution is structurally unavailable
- Reference architectures for both regimes, and open problems

Design 31 (OpenTelemetry Tracing Fidelity):
- OT-001 task correlation IDs on iteration and delegation events
- OT-002 correct span parenting via explicit parent-context registry
- OT-003 span per reasoning iteration
- OT-004 tool span duration and outcome status
- OT-005 GenAI semantic conventions, dual-emitted

Design 32 (Behavioral Metrics):
- BM-001 BehavioralMetrics SPI
- BM-002 BehavioralMetricsListener
- BM-003 novelty ratio and call signatures
- BM-004 guardrail, output repair, and review decision events
- BM-005 Micrometer implementation and ensemble wiring

BM-002 depends on OT-001. Docs only; no source changes.
#379)

Two claims in the whitepaper cited openai/codex#12913 as evidence that
Codex telemetry coverage is uneven across entrypoints, with codex exec
emitting no metrics and codex mcp-server emitting none at all. That issue
was closed as completed on 2026-02-28 with a fix committed for the
following release, so the headless entrypoint is no longer dark and both
claims are out of date.

Corrections:

- Section 5.3 now carries the actual Codex metric inventory (turn latency,
  time to first token, token usage by type including cached_input, tool
  calls, approvals, MCP, skills, hooks, memory phases), which is broader
  than the section previously implied. The "thinner than Claude Code"
  reading was wrong on metrics specifically; Claude Code leads on event
  breadth and span structure, Codex leads on metrics.
- Section 5.3 replaces the closed-issue claim with the gaps that are
  currently open: no custom OTel resource attributes (#30987) and OTLP log
  records exported with timeUnixNano=0 causing collectors to drop them
  (#30936).
- Section 9 replaces "where Codex telemetry is weakest" with the accurate
  compounding factor for unattended runs: the vendor signals that encode a
  human verdict (codex.approval.requested, code_edit_tool.decision) stay
  present but go inert when nobody is deciding.
- Reference [8] annotated as closed; new references added for the Codex
  metric reference and the two open issues.

Issue states verified 2026-08-05.
…tes (#381)

Bumps the minor-and-patch group with 10 updates in the /agentensemble-viz directory:

| Package | From | To |
| --- | --- | --- |
| [@dagrejs/dagre](https://github.com/dagrejs/dagre) | `3.0.0` | `3.1.0` |
| [@xyflow/react](https://github.com/xyflow/xyflow/tree/HEAD/packages/react) | `12.11.1` | `12.11.2` |
| [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) | `4.12.0` | `4.12.2` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.18.0` | `7.18.2` |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.3.1` | `4.3.3` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) | `19.2.7` | `19.2.8` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.17` | `19.2.18` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `19.2.7` | `19.2.8` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `19.2.3` | `19.2.4` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.9` | `4.1.10` |



Updates `@dagrejs/dagre` from 3.0.0 to 3.1.0
- [Release notes](https://github.com/dagrejs/dagre/releases)
- [Changelog](https://github.com/dagrejs/dagre/blob/master/changelog.md)
- [Commits](dagrejs/dagre@v3.0.0...v3.1.0)

Updates `@xyflow/react` from 12.11.1 to 12.11.2
- [Release notes](https://github.com/xyflow/xyflow/releases)
- [Changelog](https://github.com/xyflow/xyflow/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/xyflow/xyflow/commits/@xyflow/react@12.11.2/packages/react)

Updates `react-resizable-panels` from 4.12.0 to 4.12.2
- [Release notes](https://github.com/bvaughn/react-resizable-panels/releases)
- [Changelog](https://github.com/bvaughn/react-resizable-panels/blob/main/CHANGELOG.md)
- [Commits](bvaughn/react-resizable-panels@4.12.0...4.12.2)

Updates `react-router-dom` from 7.18.0 to 7.18.2
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@7.18.2/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.18.2/packages/react-router-dom)

Updates `@tailwindcss/vite` from 4.3.1 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-vite)

Updates `react` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react)

Updates `@types/react` from 19.2.17 to 19.2.18
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react-dom)

Updates `@types/react-dom` from 19.2.3 to 19.2.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `tailwindcss` from 4.3.1 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss)

Updates `vitest` from 4.1.9 to 4.1.10
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest)

---
updated-dependencies:
- dependency-name: "@dagrejs/dagre"
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@xyflow/react"
  dependency-version: 12.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: react-resizable-panels
  dependency-version: 4.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: react-router-dom
  dependency-version: 7.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: react
  dependency-version: 19.2.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@types/react"
  dependency-version: 19.2.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: react-dom
  dependency-version: 19.2.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: tailwindcss
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest
  dependency-version: 4.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dates (#383)

chore: bump the minor-and-patch group

Bumps the minor-and-patch group in /agentensemble-viz with 2 updates: [@dagrejs/dagre](https://github.com/dagrejs/dagre) and [@xyflow/react](https://github.com/xyflow/xyflow/tree/HEAD/packages/react).


Updates `@dagrejs/dagre` from 3.1.0 to 3.1.1
- [Release notes](https://github.com/dagrejs/dagre/releases)
- [Changelog](https://github.com/dagrejs/dagre/blob/master/changelog.md)
- [Commits](dagrejs/dagre@v3.1.0...v3.1.1)

Updates `@xyflow/react` from 12.11.2 to 12.11.3
- [Release notes](https://github.com/xyflow/xyflow/releases)
- [Changelog](https://github.com/xyflow/xyflow/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/xyflow/xyflow/commits/@xyflow/react@12.11.3/packages/react)

---
updated-dependencies:
- dependency-name: "@dagrejs/dagre"
  dependency-version: 3.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@xyflow/react"
  dependency-version: 12.11.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: bump googleapis/release-please-action from 4 to 5

Bumps [googleapis/release-please-action](https://github.com/googleapis/release-please-action) from 4 to 5.
- [Release notes](https://github.com/googleapis/release-please-action/releases)
- [Changelog](https://github.com/googleapis/release-please-action/blob/main/CHANGELOG.md)
- [Commits](googleapis/release-please-action@v4...v5)

---
updated-dependencies:
- dependency-name: googleapis/release-please-action
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump actions/checkout from 6 to 7

Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump actions/setup-python from 6 to 7

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump actions/setup-node from 6 to 7

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump the minor-and-patch group across 1 directory with 9 updates

Bumps the minor-and-patch group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.7.0` |
| [dev.toonformat:jtoon](https://github.com/toon-format/toon-java) | `2.0.1` | `2.0.2` |
| [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) | `6.1.2` | `6.1.3` |
| [org.junit.platform:junit-platform-launcher](https://github.com/junit-team/junit-framework) | `6.1.2` | `6.1.3` |
| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.6.1` | `1.6.3` |
| [io.javalin:javalin](https://github.com/javalin/javalin) | `7.2.2` | `7.2.3` |
| [io.opentelemetry:opentelemetry-api](https://github.com/open-telemetry/opentelemetry-java) | `1.64.0` | `1.65.0` |
| [io.opentelemetry:opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-java) | `1.64.0` | `1.65.0` |
| [io.opentelemetry:opentelemetry-sdk-testing](https://github.com/open-telemetry/opentelemetry-java) | `1.64.0` | `1.65.0` |



Updates `gradle-wrapper` from 9.6.1 to 9.7.0
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.6.1...v9.7.0)

Updates `dev.toonformat:jtoon` from 2.0.1 to 2.0.2
- [Release notes](https://github.com/toon-format/toon-java/releases)
- [Changelog](https://github.com/toon-format/toon-java/blob/main/CHANGELOG.md)
- [Commits](toon-format/toon-java@v2.0.1...v2.0.2)

Updates `org.junit.jupiter:junit-jupiter` from 6.1.2 to 6.1.3
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.2...r6.1.3)

Updates `org.junit.platform:junit-platform-launcher` from 6.1.2 to 6.1.3
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.2...r6.1.3)

Updates `ch.qos.logback:logback-classic` from 1.6.1 to 1.6.3
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](qos-ch/logback@v_1.6.1...v_1.6.3)

Updates `io.javalin:javalin` from 7.2.2 to 7.2.3
- [Release notes](https://github.com/javalin/javalin/releases)
- [Commits](javalin/javalin@javalin-parent-7.2.2...javalin-parent-7.2.3)

Updates `io.opentelemetry:opentelemetry-api` from 1.64.0 to 1.65.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-java@v1.64.0...v1.65.0)

Updates `io.opentelemetry:opentelemetry-sdk` from 1.64.0 to 1.65.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-java@v1.64.0...v1.65.0)

Updates `io.opentelemetry:opentelemetry-sdk-testing` from 1.64.0 to 1.65.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-java@v1.64.0...v1.65.0)

Updates `io.opentelemetry:opentelemetry-sdk` from 1.64.0 to 1.65.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-java@v1.64.0...v1.65.0)

Updates `io.opentelemetry:opentelemetry-sdk-testing` from 1.64.0 to 1.65.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-java@v1.64.0...v1.65.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dev.toonformat:jtoon
  dependency-version: 2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: org.junit.platform:junit-platform-launcher
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: io.javalin:javalin
  dependency-version: 7.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-api
  dependency-version: 1.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk
  dependency-version: 1.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk-testing
  dependency-version: 1.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk
  dependency-version: 1.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.opentelemetry:opentelemetry-sdk-testing
  dependency-version: 1.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump gradle/actions

Bumps the minor-and-patch group with 1 update in the / directory: [gradle/actions](https://github.com/gradle/actions).


Updates `gradle/actions` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](gradle/actions@v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump vite, @vitejs/plugin-react, @types/node in /agentensemble-viz

Combines three Dependabot PRs (#386, #387, #388) that fail individually:
vite 8 requires @vitejs/plugin-react 6 as a peer dependency, so bumping
either alone breaks npm ci.

Also updates vite.config.ts: Vite 8's Rolldown-based bundler only
supports the function form of rollupOptions.output.manualChunks, not
the object-of-package-lists form Rollup accepted.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the Gradle toolchain and CI from Java 21 to Java 25 (the current
LTS), and updates two tooling dependencies that don't support JDK 25:

- palantir-java-format 2.47.0 -> 2.97.0: 2.47.0 crashes under JDK 25
  (DeferredDiagnosticHandler.getDiagnostics() changed from returning
  Queue to List); fixed upstream in 2.71.0.
- PMD 7.9.0 -> 7.26.0: 7.9.0's parser doesn't understand Java 25 and
  crashes with StackOverflowError; Java 25 support landed in PMD 7.16.0.

Reformatted the codebase with the new palantir-java-format version
(cosmetic-only: switch-arrow and line-wrap changes, no logic changes).

Also simplifies three Process#waitFor(timeout.toMillis(), MILLISECONDS)
call sites to Process#waitFor(Duration), a JDK 24+ overload.

Updated README/docs/memory-bank mentions of "Java 21" that describe the
project's own language/runtime version. Left untouched the separate
mentions of "Java 21 virtual threads" describing when that JDK feature
became stable -- that fact doesn't change with this bump.
test: close coverage gaps flagged by Codecov on PR #390

Codecov flagged 4 uncovered lines in Ensemble.java from PR #390's
spotlessApply reformatting (pre-existing gaps that just moved lines).
CodingAgent.java's separately-flagged gap is untouched: its own
build.gradle.kts already documents it as unreachable (the JAVA/MCP
tool backends are guarded by ToolBackendDetector.resolve(), which
throws before assembleTools() can reach those branches) and lowers
the LINE threshold accordingly.

Ensemble.java's delegationPolicies null-checks (3 call sites) were
dead code, not a real gap: delegationPolicies is a Lombok @Singular
field, which Lombok guarantees is never null (empirically verified --
an Ensemble built without setting it returns an empty list, not
null). Removed the impossible `!= null ? ... : List.of()` branch at
all three occurrences instead of writing a test that could only
reach it by bypassing the builder.

Added two real tests for the two gaps that were genuinely reachable:
- A phase with no per-phase workflow override that inherits an
  ensemble-level Workflow.HIERARCHICAL default now has a test
  confirming it's rejected (PhaseDagExecutor wraps the
  ValidationException in a TaskExecutionException).
- resolveManagerLlm() falling back to the ensemble-level
  chatLanguageModel when no managerLlm is set was untested; the
  existing test only covered the case with neither set (falls
  through to the first agent's LLM).
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 24, 2026
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Test Results

4 552 tests   4 546 ✅  3m 49s ⏱️
  364 suites      6 💤
  364 files        0 ❌

Results for commit 728cff9.

♻️ This comment has been updated with latest results.

…dates (#392)

chore: bump the minor-and-patch group

Bumps the minor-and-patch group in /agentensemble-viz with 2 updates: [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `react-resizable-panels` from 4.12.2 to 4.12.3
- [Release notes](https://github.com/bvaughn/react-resizable-panels/releases)
- [Changelog](https://github.com/bvaughn/react-resizable-panels/blob/main/CHANGELOG.md)
- [Commits](bvaughn/react-resizable-panels@4.12.2...4.12.3)

Updates `vitest` from 4.1.10 to 4.1.11
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/vitest)

---
updated-dependencies:
- dependency-name: react-resizable-panels
  dependency-version: 4.12.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest
  dependency-version: 4.1.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1 branch from 06feee1 to 5d994bb Compare August 24, 2026 08:56
dependabot Bot added 3 commits August 30, 2026 04:32
…semble-viz (#393)

chore: bump @testing-library/jest-dom in /agentensemble-viz

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.9.1 to 7.0.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.9.1...v7.0.1)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 7.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dates (#397)

chore: bump the minor-and-patch group

Bumps the minor-and-patch group in /agentensemble-viz with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@xyflow/react](https://github.com/xyflow/xyflow/tree/HEAD/packages/react) | `12.11.3` | `12.11.5` |
| [@testing-library/react](https://github.com/testing-library/react-testing-library) | `16.3.2` | `16.3.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.2.0` | `26.4.0` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `19.2.4` | `19.2.5` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `6.1.0` | `6.1.1` |


Updates `@xyflow/react` from 12.11.3 to 12.11.5
- [Release notes](https://github.com/xyflow/xyflow/releases)
- [Changelog](https://github.com/xyflow/xyflow/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/xyflow/xyflow/commits/@xyflow/react@12.11.5/packages/react)

Updates `@testing-library/react` from 16.3.2 to 16.3.3
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](testing-library/react-testing-library@v16.3.2...v16.3.3)

Updates `@types/node` from 26.2.0 to 26.4.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/react-dom` from 19.2.4 to 19.2.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `@vitejs/plugin-react` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.1.1/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@xyflow/react"
  dependency-version: 12.11.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@testing-library/react"
  dependency-version: 16.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@types/node"
  dependency-version: 26.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 6.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.1.1 to 30.0.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v29.1.1...v30.0.1)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 30.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1 branch from 5d994bb to 728cff9 Compare August 31, 2026 08:56
@mgd43b mgd43b closed this Sep 1, 2026
@mgd43b
mgd43b force-pushed the dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1 branch from 728cff9 to b0257ab Compare September 1, 2026 00:29
@dependabot @github

dependabot Bot commented on behalf of github Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1 branch September 1, 2026 00:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant