Skip to content

Improvement/refactored duplicate code - #7

Merged
ginccc merged 7 commits into
masterfrom
improvement/refactored-duplicate-code
Oct 31, 2016
Merged

Improvement/refactored duplicate code#7
ginccc merged 7 commits into
masterfrom
improvement/refactored-duplicate-code

Conversation

@ginccc

@ginccc ginccc commented Oct 31, 2016

Copy link
Copy Markdown
Member

No description provided.

@ginccc
ginccc merged commit 9ef85f5 into master Oct 31, 2016
@ginccc
ginccc deleted the improvement/refactored-duplicate-code branch October 31, 2016 14:44
@ginccc ginccc assigned electrobabe and unassigned Mobe91 and ginccc Nov 7, 2016
@ginccc ginccc added this to the 3.0 milestone Nov 7, 2016
ginccc added a commit that referenced this pull request Aug 4, 2017
ginccc added a commit that referenced this pull request Apr 16, 2026
…, TEST mode exemption

Blockers:
- #1: Remove misleading DNS-rebinding TOCTOU javadoc from UrlValidationUtils
- #2: Fix salt migration: rotateKek() now generates per-deployment random salt
  when migrating from legacy, with VaultSaltManager.migrateSalt() method
- #3: Fix PostgresSecretPersistence javadoc (bean wiring is correct via
  DataStoreProducers, only the comment was wrong)

Medium:
- #5: SafeHttpClient preserves headers on same-origin redirects, strips
  Authorization/Cookie/Proxy-Authorization on cross-origin
- #6: Fix isPrivateIPv6 javadoc — was claiming Teredo coverage that didn't exist
- #7: AuthStartupGuard exempts LaunchMode.TEST (was blocking @QuarkusTest boot)
- #7: Integration test profiles add eddi.security.allow-unauthenticated=true
- #8: Reduce periodic auth warning from 60s/ERROR to 3600s/WARN
- #9: SafeHttpClient adds overall wall-clock timeout across redirect hops

Low:
- #13: Delete redundant WebScraperToolSsrfTest (all tests passed for wrong reason)

Tests: 2236 pass, 0 failures, 0 errors
ginccc added a commit that referenced this pull request Apr 19, 2026
Review fix #1: Delete dead SlackChannelRouter + SlackChannelRouterTest
  - Class was @ApplicationScoped but never injected, causing double
    startup cost scanning all agents for channel connectors
  - Both files removed (265 + 351 LOC)

Review fix #2: Migration tool now merges duplicate channelId entries
  - Old: created one config per (agent, channel) pair, last-write-wins
  - New: groups connectors by platformChannelId and creates a single
    multi-target config per channel with agent-derived trigger keywords
  - Multi-agent channels show mergedAgents in dry-run output

Review fix #3: Deep-copy config before resolving secrets
  - resolvePlatformSecrets was mutating the store's instance in-place,
    which would leak plaintext secrets if a caching layer is added
  - Added deepCopyConfig() — router works on copies, REST returns
    vault references

Review fix #5: Null/blank trigger guard in validation
  - Null triggers from loose JSON input now return 400 instead of NPE

Review fix #6: Remove dead fields
  - Removed newStyleChannelIds (assigned but never read)
  - Removed cacheFactory field (only used in constructor)
  - Removed unused ConcurrentHashMap import

Review fix #7/#12: Reject observeMode=true until implemented
  - Validation now blocks observeMode=true with clear error message

Review fix #8: Preserve stack traces in router error logging
  - All LOGGER.warnf(msg, e.getMessage()) changed to
    LOGGER.warn(msg, e) for production diagnosability

Review fix #10: Rename 'channelId' to 'resourceId' in MCP responses
  - Eliminates confusion between Slack channelId and Mongo resourceId

Review fix #11: Fix deployAgent description typo
  - 'production' was listed twice in 4 environment descriptions

Review fix #17: Temper platform-agnostic Javadoc claim
  - Javadoc now says 'currently Slack-only with platform-agnostic model'
ginccc added a commit that referenced this pull request Jul 3, 2026
…s, scale poller, add pause retention

Findings 5, 7, 17, 26, 32, 44:

- #5 (security): RestScheduleStore refuses manual fire of HITL timeout
  schedules (409 for everyone, incl. admins), requires eddi-admin to
  mutate/disable/delete them (403), and redacts them from non-admins.
  PostgresScheduleStore gains a metadata JSONB column (parity with Mongo's
  full-doc persistence) so the HITL fast-path and the guard work on both
  backends.
- #7: AgentDeploymentManagement idle sweep skips AWAITING_HUMAN instead of
  force-ENDing them via a raw non-CAS write; logs spared count.
- #17: configurable poll batch size (both stores) + concurrent virtual-thread
  dispatch of claimed schedules with per-fire error isolation; CAS claim stays
  before dispatch.
- #26/#44: RestConversationStore routes paused end/permanent-delete through the
  HITL-aware IConversationService.endConversation.
- #32: optional pause-retention sweep (eddi.hitl.pending.max-age, default OFF)
  in HitlCrashRecoveryObserver via cancelConversation; reuses scheduling infra.
- CodeQL: silence unused @observes StartupEvent param (required CDI trigger).

Pure JUnit/Mockito tests added for each. Compile + test-compile green.
ginccc added a commit that referenced this pull request Jul 3, 2026
Full enterprise pass over multi-model cascading:

- Audit correctness (#5): record the cascade-selected provider/model in
  audit:model_name and audit:cascade_model; add cost + token_usage keys.
- SSE events (#1): wire onCascadeStepStart/onCascadeEscalation end-to-end
  (handler default methods -> ConversationService sink -> SSE endpoint).
- judge_model (#2): real judgeModel config block built via ChatModelRegistry.
- Agent-mode confidence (#6): auto-route structured_output to judge/heuristic.
- convertToObject + cascade (#7): honor jsonMode, force non-wrapper strategy.
- Global-var/Qute step consistency (#8); cancellation safety (#9).
- Token + cost evidence in trace + responseMetadata; Micrometer metrics
  (eddi.llm.cascade.*); maxTotalDurationMs + maxCostPerRun ceilings.
- Configure-time validation (CascadeConfigValidator).
- JSON-parse-first confidence parsing; config-driven + language-agnostic
  heuristic; stream the always-accepted final step live; returnBestAcrossSteps;
  lazy base-model creation.

CascadingModelExecutor converted to an instance; AgentOrchestrator.ExecutionResult
gains responseMetadata (2-arg ctor retained). Existing executor + LlmTask tests
updated. Backward compatible: all new config optional; enabled:false unaffected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants