chore: bump jsdom from 29.1.1 to 30.0.1 in /agentensemble-viz - #395
Closed
dependabot[bot] wants to merge 354 commits into
Closed
dependabot[bot] wants to merge 354 commits into
dependabot[bot] wants to merge 354 commits into
Conversation
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.
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).
Contributor
Test Results4 552 tests 4 546 ✅ 3m 49s ⏱️ 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
Bot
force-pushed
the
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1
branch
from
August 24, 2026 08:56
06feee1 to
5d994bb
Compare
…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
Bot
force-pushed
the
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1
branch
from
August 31, 2026 08:56
5d994bb to
728cff9
Compare
mgd43b
force-pushed
the
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1
branch
from
September 1, 2026 00:29
728cff9 to
b0257ab
Compare
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 If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
dependabot
Bot
deleted the
dependabot/npm_and_yarn/agentensemble-viz/jsdom-30.0.1
branch
September 1, 2026 00:29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps jsdom from 29.1.1 to 30.0.1.
Release notes
Sourced from jsdom's releases.
Commits
658448530.0.10c51df6Update dependencies and dev dependencies32adb34Bump@asamuzakjp/dom-selector70f014aSpeed up range operations on large documents250d7eePartially fix getComputedStyle with calc()20a01fc30.0.08c8e583Precompute WPT expectation matchesf32245cBump Node.js floor and dependencies03ef23bAdd background-position longhandsded056fTest CSS.escape() with numeric IDs