Commit Graph

150 Commits

Author SHA1 Message Date
Lucio Lelii a0ed4874d8 feat: add node capabilities and biased seed flow 2026-07-22 17:38:42 +02:00
Lucio Lelii 007bca14fb fix: add missing Flyway autoconfiguration and shorten an overlong flow description
pom.xml declared org.flywaydb:flyway-core directly, but Spring Boot 4 moved
Flyway's autoconfiguration into a separate spring-boot-flyway module: with
only flyway-core on the classpath, Flyway never ran (no migration, not even
flyway_schema_history), so ddl-auto=validate always failed against an empty
schema. Switch to org.springframework.boot:spring-boot-starter-flyway, which
pulls in the actual autoconfiguration.

The "Jensen Recruitment Process - Mitigated (Structured)" seed description
was 269 characters, over the default varchar(255) on flow_entity.description
(no @Column(length=...) override), so FlowImportComponent failed to insert
it while every other flow (all <= 255 chars) imported fine. Shortened to the
same content in 236 characters.

Verified end-to-end against a real Postgres container: fresh schema
bootstrap (ddl-auto=update once, then default validate), all 8 seed flows
import cleanly, full test suite unaffected (362 passing, 2 skipped).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 15:24:51 +02:00
Lucio Lelii 26ab50f06c fix: remove unused --enable-preview and clean up compiler warnings
No source in this codebase actually uses a preview language feature, but
--enable-preview combined with release=25 in pom.xml (compiler + surefire)
was tripping the IDE's language server on every file ("preview can be
enabled only at source level 26"), which read as pervasive warnings across
the whole project. Removed both flags; full suite still passes unchanged.

Also fixes a handful of genuine compiler warnings found via a manual
`javac -Xlint:all` pass: dead unused method in BlockCatalogService, two
uses of JsonNode.isTextual()/asText() (deprecated in tools.jackson 3) in
favor of isString()/asString(), and a Javadoc comment in
ExecutionsController placed after @GetMapping instead of before it (so it
was never attached to the method).

Left the remaining low-value warnings (missing serialVersionUID on a
handful of exception/resolver classes, this-escape in
ExecutionObject/ExecutionContext/Step) untouched per user's choice - purely
cosmetic and, for this-escape, riskier to touch without a concrete reason.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 14:21:09 +02:00
Lucio Lelii 28670d2436 test: close gaps against the control-flow doc's test checklist
Audits every bullet in "Strategia di test" (unit/integration/regression/
concurrency) against the actual suite and adds coverage for what was
missing: ExclusiveMergeActivationPolicy and ExclusiveMergeExecutor direct
unit tests, dynamic configuration validation, a second-hop NOT_SELECTED
propagation assertion, implicit-merge rejection (EXCLUSIVE_BRANCH_MERGE),
a lanes/laneId JSON round-trip, per-block-type bias capability checks, and
concurrency tests for the merge (repeated concurrent split+merge, cancel
under concurrency, concurrent snapshot reads).

Fixes a latent bug found while writing the configuration-validation tests:
ExclusiveMergeBlockConfiguration.areInputsUnique() and
HumanDecisionBlockConfiguration.areOptionsUnique() never fired because Bean
Validation only recognizes isXxx/getXxx as constrained getters, so the
duplicate-name check was silently unenforced everywhere, including flow
creation. Renamed to isInputsUnique()/isOptionsUnique().

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 12:35:24 +02:00
Lucio Lelii 2d6f12a019 feat: add structured Jensen recruitment flows (phase 6)
Adds "Jensen Recruitment Process - Full Revised (Structured)" and
"... Mitigated (Structured)" seed flows, ported node-per-node from the
original PlantUML activity diagrams using HumanDecisionBlock gateways,
explicit ExclusiveMergeBlock rejoins, EndBlock outcomes and FlowLane
swimlanes. Preserves the 5 CONFIRMED risk annotations and all 16
FH-J1-FH-J16 MITIGATED annotations on the corresponding structured nodes.
Does not replace the existing unstructured macro-flow seeds.

Human-interactive stages are modeled as HumanInteractionBlock rather than
GenericContainer/LLMBlock so both flows can be driven to a real SUCCESS
outcome without an Ollama model. Adds structural validation tests and a
runtime test suite driving all five terminal outcomes on both flows, a
snapshot-restore check during a pending HumanDecisionBlock, and a
baseline/bias-variant comparison showing a ROUTING_OVERRIDE changing both
the branch taken and the final outcome.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 12:08:58 +02:00
Lucio Lelii 1cf780966b feat: add swimlanes and JSON dossier IO type (phases 4-5)
Implements Phase 4 (FlowLane/laneId on FlowData, Block and Container with
dedicated validation) and Phase 5 (IOType.JSON, optional value schema on
IODescriptor, JSON conversion/validation in Input, template rendering) from
the control-flow engine implementation plan. Updates the plan document's
progress table and phase sections accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 11:32:25 +02:00
Lucio Lelii f1ade0d8e9 feat: add explicit gateways and flow outcomes 2026-07-22 11:06:10 +02:00
Lucio Lelii b8fbbe8de0 feat: add control-flow runtime foundations 2026-07-22 10:49:21 +02:00
Lucio Lelii 3280584d31 feat: extend bias system and add Jensen flows 2026-07-22 10:40:44 +02:00
Lucio Lelii 587eadc678 Implement bias impact experiments 2026-07-20 17:22:26 +02:00
Lucio Lelii 366b048689 Add bias annotations to workflow blocks 2026-07-20 16:18:57 +02:00
Lucio Lelii a9ea3d5401 Merge branch 'feature/loop-container-guard-subflow' 2026-05-27 10:40:12 +02:00
Lucio Lelii 163ba9afc2 Add execution rerun history groups 2026-05-27 10:37:03 +02:00
Lucio Lelii 84ff2daa05 Add static favicon 2026-05-26 23:22:01 +02:00
Lucio Lelii 68c9bca323 Add guard subflow loop feedback mapping 2026-05-26 23:21:31 +02:00
Lucio Lelii 83c76ebd4f Add generic DelimitedParser block with configurable outputs 2026-05-26 23:13:46 +02:00
Lucio Lelii 34c1a60d33 - added a subflow as guard of the loop container
- validation of the subflow by type
- added type boolean as output of nodes
2026-05-26 10:15:39 +02:00
Lucio Lelii e12ce82406 Fix boolean LLM response parsing 2026-05-20 17:11:35 +02:00
Lucio Lelii b6a08d1b05 Validate shared MCP consumers without producers 2026-05-20 12:27:25 +02:00
Lucio Lelii 35db1d42f1 Improve assistant model routing and diagnostics 2026-05-20 12:27:09 +02:00
Lucio Lelii c6e538a80b Add dedicated WebClient pools for LLM and MCP 2026-05-20 12:26:35 +02:00
Lucio Lelii 77f5937ec4 test fix 2026-05-20 09:35:19 +02:00
Lucio Lelii 174f99918d Stabilize assistant and integration tests 2026-05-19 13:39:27 +02:00
Lucio Lelii 4bd240ddbb Improve provider failure diagnostics 2026-05-19 13:39:17 +02:00
Lucio Lelii d466459a27 Add assistant call cancellation endpoint 2026-05-19 13:39:11 +02:00
Lucio Lelii 7b92c5b6ab Default HTTP auth type when disabled 2026-05-19 13:39:07 +02:00
Lucio Lelii ff824ada44 Preserve unchanged assistant blocks 2026-05-19 13:37:48 +02:00
Lucio Lelii 8d93f2e161 test(executors): aggiunta nuova directory di test per executors 2026-05-18 16:34:15 +02:00
Lucio Lelii 63e30ab850 test(assistant): aggiunti test su draft plan minimo e cancellazione chiamata 2026-05-18 16:34:07 +02:00
Lucio Lelii c005a09b6f config: cambio modello assistant di default a qwen3:32b-q4_K_M 2026-05-18 16:34:00 +02:00
Lucio Lelii 68c8c5b182 feat(assistant): validazione/normalizzazione piani e gestione shareSession/useSharedSession in FlowAssistantService 2026-05-18 16:33:53 +02:00
Lucio Lelii fa8caf9617 feat(assistant): gestione cancellazione chiamate e tracking task in AssistantConversationService 2026-05-18 16:33:41 +02:00
Lucio Lelii 5dfdda4ecd Improve assistant planning prompts and JSON recovery 2026-05-13 16:48:33 +02:00
Lucio Lelii a3fc98f5ce feat: integrate assistant and MCP block updates 2026-05-13 12:18:08 +02:00
Lucio Lelii f575208959 warning on build removed 2026-05-07 10:35:09 +02:00
Lucio Lelii 06079079ad Add pooled WebClient and outbound circuit-breaker controls 2026-05-05 20:18:39 +02:00
Lucio Lelii 2e2d998de5 Harden MCP sessions, outbound HTTP policy, and actuator access 2026-05-05 20:08:30 +02:00
Lucio Lelii f66bdeee15 Add execution metrics and subflow performance telemetry 2026-05-05 19:58:47 +02:00
Lucio Lelii 48925e19d4 Harden config and improve execution runtime resilience 2026-05-05 19:53:23 +02:00
Lucio Lelii 2c5df42326 Merge branch 'appmod/sb4-upgrade' 2026-05-05 19:35:03 +02:00
Lucio Lelii 8a0f9d5c8d upgrade to springboot 4 2026-05-05 19:22:53 +02:00
Lucio Lelii 66f6fff376 Upgrade Spring Boot 3.5.13 → 4.0.6 - Compile: OK, Tests: 237/237 passed
Changes made:
- spring-boot-starter-parent: 3.5.13 → 4.0.6
- springdoc-openapi-starter-webmvc-ui: 2.8.2 → 3.0.3
- Added spring-boot-jackson2 for Jackson 2 compatibility (com.fasterxml)
- spring-boot-starter-webflux → spring-boot-starter-webclient
- Added spring-boot-webmvc-test as test dependency
- testcontainers artifact IDs renamed (2.x: junit-jupiter → testcontainers-junit-jupiter, ollama → testcontainers-ollama)
- Removed unused keycloak-spring-boot-starter dependency
- Health classes: actuate.health → health.contributor package
- @AutoConfigureMockMvc: moved to spring-boot-webmvc-test.autoconfigure
- MicroProfile OpenAPI annotations → Swagger v3 (io.swagger.v3.oas.annotations)
- JUnit 4 static imports → JUnit 5 in 2 test files
- spring.http.converters.preferred-json-mapper=jackson2 to preserve Jackson 2 HTTP deserialization
2026-05-05 12:03:44 +02:00
Lucio Lelii c88875c3ba Add JsonSchemaProducer, UiOrder annotation, and enhance LoopContainer and block configurations 2026-04-24 12:23:43 +02:00
Lucio Lelii a50c6d7802 Harden assistant flow parsing and add fallback for non-JSON outputs 2026-04-24 12:17:48 +02:00
Lucio Lelii e4d8a0b2a8 Add structured JSON generation support for assistant calls 2026-04-24 12:17:38 +02:00
Lucio Lelii f729c8a460 Remove legacy type endpoints in favor of catalogs 2026-04-21 12:38:24 +02:00
Lucio Lelii 41c2f844be Add LoopContainer schema coverage for LLM prompt 2026-04-17 17:42:53 +02:00
Lucio Lelii 9e107352ce Stabilize flow import tests for shared Spring context 2026-04-17 17:22:04 +02:00
Lucio Lelii 8ff739703e Merge branch 'appmod/java-upgrade-20260417105745' 2026-04-17 17:16:59 +02:00
Lucio Lelii c83ede89e5 Make flow seed import idempotent on restart 2026-04-17 17:14:35 +02:00