refactor: rename Java packages com.cameleer.{server,license} → io.cameleer

Brand-aligned reverse-DNS: io.cameleer matches the owned cameleer.io
domain. Part of institutionalization prep — clean break, no compat shims.

Scope:
- 613 .java files: package + import declarations and directory layout
- 5 POMs: groupId for cameleer-server-parent and 4 modules; mainClass FQN
  in cameleer-license-minter; internal inter-module dep coordinates
- .claude/rules/{core,app}-classes.md + CLAUDE.md: keep class/API maps in
  sync per the maintenance rule in CLAUDE.md

Out of scope (intentionally preserved on com.cameleer):
- com.cameleer:cameleer-common — external dep from the agent repo
- Spring config namespaces (cameleer.server.*) — they're property keys,
  not Java packages

Consumer heads-up:
- cameleer-saas pulls io.cameleer:cameleer-license-{api,minter} on next
  sync; their POMs need the matching groupId bump.

Verification: mvn install -DskipITs (273 server-app unit tests pass under
io.cameleer.* package names; license-api / server-core / license-minter
modules all green). The repackage step's JAR-rename failure during the run
was a file lock from a co-running dev server, unrelated to the rename.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-28 16:39:55 +02:00
parent a605d38750
commit 541ad16e06
604 changed files with 2000 additions and 2000 deletions

View File

@@ -5,7 +5,7 @@ paths:
# App Module Key Classes
`cameleer-server-app/src/main/java/com/cameleer/server/app/`
`cameleer-server-app/src/main/java/io/cameleer/server/app/`
## URL taxonomy

View File

@@ -5,7 +5,7 @@ paths:
# Core Module Key Classes
`cameleer-server-core/src/main/java/com/cameleer/server/core/`
`cameleer-server-core/src/main/java/io/cameleer/server/core/`
## agent/ — Agent lifecycle and commands
@@ -47,9 +47,9 @@ paths:
## license/ — License domain (signed-token tier system)
The pure license **contract types** live in the separate `cameleer-license-api` module under package `com.cameleer.license` (no Spring, no server-runtime deps) so consumers like `cameleer-license-minter` and `cameleer-saas` can use them without inheriting server internals. Server-core only contains the runtime state holder (`LicenseGate`).
The pure license **contract types** live in the separate `cameleer-license-api` module under package `io.cameleer.license` (no Spring, no server-runtime deps) so consumers like `cameleer-license-minter` and `cameleer-saas` can use them without inheriting server internals. Server-core only contains the runtime state holder (`LicenseGate`).
Contract types in `cameleer-license-api` (package `com.cameleer.license`):
Contract types in `cameleer-license-api` (package `io.cameleer.license`):
- `LicenseInfo` — record: `(UUID licenseId, String tenantId, String label, Map<String,Integer> limits, Instant issuedAt, Instant expiresAt, int gracePeriodDays)`. `isExpired()` true once `now > expiresAt + gracePeriodDays`; `isAfterRawExpiry()` true once `now > expiresAt`. Constructed via `LicenseValidator`; canonical ctor null-checks all required fields and rejects blank tenantId / negative grace.
- `LicenseLimits` — typed limits container backed by `Map<String,Integer>`. `defaultsOnly()` returns the `DefaultTierLimits.DEFAULTS` view; `mergeOverDefaults(overrides)` produces the license-overrides UNION default tier. `get(String key)` returns the cap; throws `IllegalArgumentException` for unknown keys (programmer error). `isDefaultSourced(key, license)` reports whether a key fell through to the default tier.
- `DefaultTierLimits` — immutable `LinkedHashMap` of constants for the no-license fallback tier: `max_environments=1, max_apps=3, max_agents=5, max_users=3, max_outbound_connections=1, max_alert_rules=2, max_total_cpu_millis=2000, max_total_memory_mb=2048, max_total_replicas=5, max_execution_retention_days=1, max_log_retention_days=1, max_metric_retention_days=1, max_jar_retention_count=3`.
@@ -57,7 +57,7 @@ Contract types in `cameleer-license-api` (package `com.cameleer.license`):
- `LicenseStateMachine` — pure classifier. `classify(LicenseInfo, String invalidReason)` returns `INVALID` if a reason is set, `ABSENT` if no license, `ACTIVE` if `now <= expiresAt`, `GRACE` if expired but within grace window, `EXPIRED` otherwise.
- `LicenseState` — enum: `ABSENT, ACTIVE, GRACE, EXPIRED, INVALID`.
Runtime state holder in server-core (package `com.cameleer.server.core.license`):
Runtime state holder in server-core (package `io.cameleer.server.core.license`):
- `LicenseGate` — runtime state holder (thread-safe via `AtomicReference<Snapshot>`). `getCurrent()` returns the current `LicenseInfo` (null when ABSENT/INVALID); `getState()` delegates to `LicenseStateMachine.classify(...)`; `getEffectiveLimits()` returns license-overrides UNION defaults in `ACTIVE`/`GRACE`, defaults-only otherwise. `getInvalidReason()`, `load(LicenseInfo)`, `markInvalid(String reason)`, `clear()` are the mutators. `getLimit(key, defaultValue)` shorthand swallows unknown-key errors.
## search/ — Execution search and stats

View File

@@ -14,7 +14,7 @@ Cameleer Server — observability server that receives, stores, and serves Camel
## Modules
- `cameleer-license-api` — pure license contract types (`LicenseInfo`, `LicenseValidator`, `LicenseState`, `LicenseStateMachine`, `LicenseLimits`, `DefaultTierLimits`) under package `com.cameleer.license`. No Spring or server-runtime deps; consumed by `cameleer-server-core` (validation/runtime gate) and `cameleer-license-minter` (vendor signing) — and transitively by `cameleer-saas` via the minter — without inheriting server internals.
- `cameleer-license-api` — pure license contract types (`LicenseInfo`, `LicenseValidator`, `LicenseState`, `LicenseStateMachine`, `LicenseLimits`, `DefaultTierLimits`) under package `io.cameleer.license`. No Spring or server-runtime deps; consumed by `cameleer-server-core` (validation/runtime gate) and `cameleer-license-minter` (vendor signing) — and transitively by `cameleer-saas` via the minter — without inheriting server internals.
- `cameleer-server-core` — domain logic, storage interfaces, services (no Spring dependencies)
- `cameleer-server-app` — Spring Boot web app, REST controllers, SSE, persistence, Docker orchestration
- `cameleer-license-minter` — vendor-only Ed25519 license signing library + CLI. Depends only on `cameleer-license-api` so consumers don't pull in `cameleer-server-core`.

View File

@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-server-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import java.util.Collections;
import java.util.LinkedHashMap;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import java.time.Instant;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import java.util.Collections;
import java.util.LinkedHashMap;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
public enum LicenseState {
ABSENT,

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
public final class LicenseStateMachine {

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package com.cameleer.license;
package io.cameleer.license;
import org.junit.jupiter.api.Test;

View File

@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-server-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
@@ -16,7 +16,7 @@
<dependencies>
<dependency>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-license-api</artifactId>
</dependency>
<dependency>
@@ -59,7 +59,7 @@
</goals>
<configuration>
<classifier>cli</classifier>
<mainClass>com.cameleer.license.minter.cli.LicenseMinterCli</mainClass>
<mainClass>io.cameleer.license.minter.cli.LicenseMinterCli</mainClass>
</configuration>
</execution>
</executions>

View File

@@ -1,6 +1,6 @@
package com.cameleer.license.minter;
package io.cameleer.license.minter;
import com.cameleer.license.LicenseInfo;
import io.cameleer.license.LicenseInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;

View File

@@ -1,7 +1,7 @@
package com.cameleer.license.minter.cli;
package io.cameleer.license.minter.cli;
import com.cameleer.license.minter.LicenseMinter;
import com.cameleer.license.LicenseInfo;
import io.cameleer.license.minter.LicenseMinter;
import io.cameleer.license.LicenseInfo;
import java.io.PrintStream;
import java.nio.file.Files;
@@ -107,7 +107,7 @@ public final class LicenseMinterCli {
}
try {
String pubB64 = Files.readString(Path.of(pubPath)).trim();
new com.cameleer.license.LicenseValidator(pubB64, tenant).validate(token);
new io.cameleer.license.LicenseValidator(pubB64, tenant).validate(token);
out.println("verified ok");
} catch (Exception ve) {
err.println("VERIFY FAILED: " + ve.getMessage());

View File

@@ -1,7 +1,7 @@
package com.cameleer.license.minter;
package io.cameleer.license.minter;
import com.cameleer.license.LicenseInfo;
import com.cameleer.license.LicenseValidator;
import io.cameleer.license.LicenseInfo;
import io.cameleer.license.LicenseValidator;
import org.junit.jupiter.api.Test;
import java.security.KeyPair;

View File

@@ -1,6 +1,6 @@
package com.cameleer.license.minter.cli;
package io.cameleer.license.minter.cli;
import com.cameleer.license.LicenseValidator;
import io.cameleer.license.LicenseValidator;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

View File

@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-server-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
@@ -16,11 +16,11 @@
<dependencies>
<dependency>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-server-core</artifactId>
</dependency>
<dependency>
<groupId>com.cameleer</groupId>
<groupId>io.cameleer</groupId>
<artifactId>cameleer-license-minter</artifactId>
<version>${project.version}</version>
<scope>test</scope>

View File

@@ -1,12 +0,0 @@
package com.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.alerting.AlertCondition;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
public interface ConditionEvaluator<C extends AlertCondition> {
ConditionKind kind();
EvalResult evaluate(C condition, AlertRule rule, EvalContext ctx);
}

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app;
package io.cameleer.server.app;
import com.cameleer.server.app.config.AgentRegistryConfig;
import com.cameleer.server.app.config.IngestionConfig;
import io.cameleer.server.app.config.AgentRegistryConfig;
import io.cameleer.server.app.config.IngestionConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -13,11 +13,11 @@ import java.util.TimeZone;
/**
* Main entry point for the Cameleer Server application.
* <p>
* Scans {@code com.cameleer.server.app} and {@code com.cameleer.server.core} packages.
* Scans {@code io.cameleer.server.app} and {@code io.cameleer.server.core} packages.
*/
@SpringBootApplication(scanBasePackages = {
"com.cameleer.server.app",
"com.cameleer.server.core"
"io.cameleer.server.app",
"io.cameleer.server.core"
})
@EnableAsync
@EnableScheduling

View File

@@ -1,10 +1,10 @@
package com.cameleer.server.app.agent;
package io.cameleer.server.app.agent;
import com.cameleer.server.app.metrics.ServerMetrics;
import com.cameleer.server.core.agent.AgentEventService;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.AgentState;
import io.cameleer.server.app.metrics.ServerMetrics;
import io.cameleer.server.core.agent.AgentEventService;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.AgentState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -1,9 +1,9 @@
package com.cameleer.server.app.agent;
package io.cameleer.server.app.agent;
import com.cameleer.server.app.config.AgentRegistryConfig;
import com.cameleer.server.core.agent.AgentCommand;
import com.cameleer.server.core.agent.AgentEventListener;
import com.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.app.config.AgentRegistryConfig;
import io.cameleer.server.core.agent.AgentCommand;
import io.cameleer.server.core.agent.AgentEventListener;
import io.cameleer.server.core.agent.AgentRegistryService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.PostConstruct;

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.agent;
package io.cameleer.server.app.agent;
import com.cameleer.server.core.security.Ed25519SigningService;
import io.cameleer.server.core.security.Ed25519SigningService;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

View File

@@ -1,12 +1,12 @@
package com.cameleer.server.app.alerting.config;
package io.cameleer.server.app.alerting.config;
import com.cameleer.server.app.alerting.eval.PerKindCircuitBreaker;
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
import com.cameleer.server.app.alerting.storage.*;
import com.cameleer.server.core.alerting.AlertInstanceRepository;
import com.cameleer.server.core.alerting.AlertNotificationRepository;
import com.cameleer.server.core.alerting.AlertRuleRepository;
import com.cameleer.server.core.alerting.AlertSilenceRepository;
import io.cameleer.server.app.alerting.eval.PerKindCircuitBreaker;
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
import io.cameleer.server.app.alerting.storage.*;
import io.cameleer.server.core.alerting.AlertInstanceRepository;
import io.cameleer.server.core.alerting.AlertNotificationRepository;
import io.cameleer.server.core.alerting.AlertRuleRepository;
import io.cameleer.server.core.alerting.AlertSilenceRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.config;
package io.cameleer.server.app.alerting.config;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,15 +1,15 @@
package com.cameleer.server.app.alerting.controller;
package io.cameleer.server.app.alerting.controller;
import com.cameleer.server.app.alerting.dto.AlertDto;
import com.cameleer.server.app.alerting.dto.BulkIdsRequest;
import com.cameleer.server.app.alerting.dto.UnreadCountResponse;
import com.cameleer.server.app.alerting.notify.InAppInboxQuery;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertInstanceRepository;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.AlertState;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.alerting.dto.AlertDto;
import io.cameleer.server.app.alerting.dto.BulkIdsRequest;
import io.cameleer.server.app.alerting.dto.UnreadCountResponse;
import io.cameleer.server.app.alerting.notify.InAppInboxQuery;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertInstanceRepository;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.AlertState;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.controller;
package io.cameleer.server.app.alerting.controller;
import com.cameleer.server.app.alerting.dto.AlertNotificationDto;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.alerting.AlertNotification;
import com.cameleer.server.core.alerting.AlertNotificationRepository;
import com.cameleer.server.core.alerting.NotificationStatus;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.alerting.dto.AlertNotificationDto;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.alerting.AlertNotification;
import io.cameleer.server.core.alerting.AlertNotificationRepository;
import io.cameleer.server.core.alerting.NotificationStatus;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;

View File

@@ -1,33 +1,33 @@
package com.cameleer.server.app.alerting.controller;
package io.cameleer.server.app.alerting.controller;
import com.cameleer.server.app.alerting.dto.AlertRuleRequest;
import com.cameleer.server.app.alerting.dto.AlertRuleResponse;
import com.cameleer.server.app.alerting.dto.RenderPreviewRequest;
import com.cameleer.server.app.alerting.dto.RenderPreviewResponse;
import com.cameleer.server.app.alerting.dto.TestEvaluateRequest;
import com.cameleer.server.app.alerting.dto.TestEvaluateResponse;
import com.cameleer.server.app.alerting.dto.WebhookBindingRequest;
import com.cameleer.server.app.alerting.eval.ConditionEvaluator;
import com.cameleer.server.app.alerting.eval.EvalContext;
import com.cameleer.server.app.alerting.eval.EvalResult;
import com.cameleer.server.app.alerting.eval.TickCache;
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
import com.cameleer.server.app.license.LicenseEnforcer;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.admin.AuditCategory;
import com.cameleer.server.core.admin.AuditResult;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.alerting.AlertCondition;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.AlertRuleRepository;
import com.cameleer.server.core.alerting.AlertRuleTarget;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.ExchangeMatchCondition;
import com.cameleer.server.core.alerting.FireMode;
import com.cameleer.server.core.alerting.WebhookBinding;
import com.cameleer.server.core.outbound.OutboundConnection;
import com.cameleer.server.core.outbound.OutboundConnectionService;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.alerting.dto.AlertRuleRequest;
import io.cameleer.server.app.alerting.dto.AlertRuleResponse;
import io.cameleer.server.app.alerting.dto.RenderPreviewRequest;
import io.cameleer.server.app.alerting.dto.RenderPreviewResponse;
import io.cameleer.server.app.alerting.dto.TestEvaluateRequest;
import io.cameleer.server.app.alerting.dto.TestEvaluateResponse;
import io.cameleer.server.app.alerting.dto.WebhookBindingRequest;
import io.cameleer.server.app.alerting.eval.ConditionEvaluator;
import io.cameleer.server.app.alerting.eval.EvalContext;
import io.cameleer.server.app.alerting.eval.EvalResult;
import io.cameleer.server.app.alerting.eval.TickCache;
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
import io.cameleer.server.app.license.LicenseEnforcer;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.admin.AuditCategory;
import io.cameleer.server.core.admin.AuditResult;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.alerting.AlertCondition;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.AlertRuleRepository;
import io.cameleer.server.core.alerting.AlertRuleTarget;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.ExchangeMatchCondition;
import io.cameleer.server.core.alerting.FireMode;
import io.cameleer.server.core.alerting.WebhookBinding;
import io.cameleer.server.core.outbound.OutboundConnection;
import io.cameleer.server.core.outbound.OutboundConnectionService;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;

View File

@@ -1,14 +1,14 @@
package com.cameleer.server.app.alerting.controller;
package io.cameleer.server.app.alerting.controller;
import com.cameleer.server.app.alerting.dto.AlertSilenceRequest;
import com.cameleer.server.app.alerting.dto.AlertSilenceResponse;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.admin.AuditCategory;
import com.cameleer.server.core.admin.AuditResult;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.alerting.AlertSilence;
import com.cameleer.server.core.alerting.AlertSilenceRepository;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.alerting.dto.AlertSilenceRequest;
import io.cameleer.server.app.alerting.dto.AlertSilenceResponse;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.admin.AuditCategory;
import io.cameleer.server.core.admin.AuditResult;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.alerting.AlertSilence;
import io.cameleer.server.core.alerting.AlertSilenceRepository;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.AlertState;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.AlertState;
import java.time.Instant;
import java.util.Map;

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertNotification;
import com.cameleer.server.core.alerting.NotificationStatus;
import io.cameleer.server.core.alerting.AlertNotification;
import io.cameleer.server.core.alerting.NotificationStatus;
import java.time.Instant;
import java.util.UUID;

View File

@@ -1,9 +1,9 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertCondition;
import com.cameleer.server.core.alerting.AlertRuleTarget;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.AlertCondition;
import io.cameleer.server.core.alerting.AlertRuleTarget;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.ConditionKind;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,10 +1,10 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertCondition;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.AlertRuleTarget;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.AlertCondition;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.AlertRuleTarget;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.ConditionKind;
import java.time.Instant;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.SilenceMatcher;
import io.cameleer.server.core.alerting.SilenceMatcher;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertSilence;
import com.cameleer.server.core.alerting.SilenceMatcher;
import io.cameleer.server.core.alerting.AlertSilence;
import io.cameleer.server.core.alerting.SilenceMatcher;
import java.time.Instant;
import java.util.UUID;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import java.util.Map;

View File

@@ -1,3 +1,3 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
public record RenderPreviewResponse(String title, String message) {}

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
/**
* Request body for POST {id}/test-evaluate.

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.app.alerting.eval.EvalResult;
import io.cameleer.server.app.alerting.eval.EvalResult;
/**
* Result of a one-shot evaluator run against live data (does not persist any state).

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.AlertSeverity;
import java.util.EnumMap;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.dto;
package io.cameleer.server.app.alerting.dto;
import com.cameleer.server.core.alerting.WebhookBinding;
import io.cameleer.server.core.alerting.WebhookBinding;
import java.util.Map;
import java.util.UUID;

View File

@@ -1,13 +1,13 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.agent.AgentEventRecord;
import com.cameleer.server.core.agent.AgentEventRepository;
import com.cameleer.server.core.alerting.AgentLifecycleCondition;
import com.cameleer.server.core.alerting.AgentLifecycleEventType;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.AlertScope;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.core.agent.AgentEventRecord;
import io.cameleer.server.core.agent.AgentEventRepository;
import io.cameleer.server.core.alerting.AgentLifecycleCondition;
import io.cameleer.server.core.alerting.AgentLifecycleEventType;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.AlertScope;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import org.springframework.stereotype.Component;
import java.time.Instant;

View File

@@ -1,12 +1,12 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.AgentState;
import com.cameleer.server.core.alerting.AgentStateCondition;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.AlertScope;
import com.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.AgentState;
import io.cameleer.server.core.alerting.AgentStateCondition;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.AlertScope;
import io.cameleer.server.core.alerting.ConditionKind;
import org.springframework.stereotype.Component;
import java.time.Instant;

View File

@@ -1,12 +1,12 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.app.alerting.config.AlertingProperties;
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
import com.cameleer.server.app.alerting.notify.NotificationContextBuilder;
import com.cameleer.server.core.alerting.*;
import com.cameleer.server.core.runtime.Environment;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.app.alerting.config.AlertingProperties;
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
import io.cameleer.server.app.alerting.notify.NotificationContextBuilder;
import io.cameleer.server.core.alerting.*;
import io.cameleer.server.core.runtime.Environment;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.AlertRuleTarget;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.AlertState;
import com.cameleer.server.core.alerting.TargetKind;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.AlertRuleTarget;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.AlertState;
import io.cameleer.server.core.alerting.TargetKind;
import java.time.Instant;
import java.util.List;

View File

@@ -1,10 +1,10 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
import com.cameleer.server.app.alerting.notify.NotificationContextBuilder;
import com.cameleer.server.core.alerting.*;
import com.cameleer.server.core.runtime.Environment;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
import io.cameleer.server.app.alerting.notify.NotificationContextBuilder;
import io.cameleer.server.core.alerting.*;
import io.cameleer.server.core.runtime.Environment;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -0,0 +1,12 @@
package io.cameleer.server.app.alerting.eval;
import io.cameleer.server.core.alerting.AlertCondition;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
public interface ConditionEvaluator<C extends AlertCondition> {
ConditionKind kind();
EvalResult evaluate(C condition, AlertRule rule, EvalContext ctx);
}

View File

@@ -1,12 +1,12 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.DeploymentStateCondition;
import com.cameleer.server.core.runtime.App;
import com.cameleer.server.core.runtime.AppRepository;
import com.cameleer.server.core.runtime.Deployment;
import com.cameleer.server.core.runtime.DeploymentRepository;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.DeploymentStateCondition;
import io.cameleer.server.core.runtime.App;
import io.cameleer.server.core.runtime.AppRepository;
import io.cameleer.server.core.runtime.Deployment;
import io.cameleer.server.core.runtime.DeploymentRepository;
import org.springframework.stereotype.Component;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import java.time.Instant;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import java.util.List;
import java.util.Map;

View File

@@ -1,16 +1,16 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.app.alerting.config.AlertingProperties;
import com.cameleer.server.app.search.ClickHouseSearchIndex;
import com.cameleer.server.core.alerting.AlertMatchSpec;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.ExchangeMatchCondition;
import com.cameleer.server.core.alerting.FireMode;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import com.cameleer.server.core.search.ExecutionSummary;
import com.cameleer.server.core.search.SearchRequest;
import com.cameleer.server.core.search.SearchResult;
import io.cameleer.server.app.alerting.config.AlertingProperties;
import io.cameleer.server.app.search.ClickHouseSearchIndex;
import io.cameleer.server.core.alerting.AlertMatchSpec;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.ExchangeMatchCondition;
import io.cameleer.server.core.alerting.FireMode;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.core.search.ExecutionSummary;
import io.cameleer.server.core.search.SearchRequest;
import io.cameleer.server.core.search.SearchResult;
import org.springframework.stereotype.Component;
import java.time.Instant;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.alerting.AggregationOp;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.JvmMetricCondition;
import com.cameleer.server.core.storage.MetricsQueryStore;
import com.cameleer.server.core.storage.model.MetricTimeSeries;
import io.cameleer.server.core.alerting.AggregationOp;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.JvmMetricCondition;
import io.cameleer.server.core.storage.MetricsQueryStore;
import io.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.stereotype.Component;
import java.util.List;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.app.search.ClickHouseLogStore;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.LogPatternCondition;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import com.cameleer.server.core.search.LogSearchRequest;
import io.cameleer.server.app.search.ClickHouseLogStore;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.LogPatternCondition;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.core.search.LogSearchRequest;
import org.springframework.stereotype.Component;
import java.time.Instant;

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
import com.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
import io.cameleer.server.core.alerting.ConditionKind;
import java.time.Clock;
import java.time.Duration;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.RouteMetricCondition;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import com.cameleer.server.core.search.ExecutionStats;
import com.cameleer.server.core.storage.StatsStore;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.RouteMetricCondition;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.core.search.ExecutionStats;
import io.cameleer.server.core.storage.StatsStore;
import org.springframework.stereotype.Component;
import java.time.Instant;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.eval;
package io.cameleer.server.app.alerting.eval;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.metrics;
package io.cameleer.server.app.alerting.metrics;
import com.cameleer.server.core.alerting.AlertState;
import com.cameleer.server.core.alerting.ConditionKind;
import com.cameleer.server.core.alerting.NotificationStatus;
import io.cameleer.server.core.alerting.AlertState;
import io.cameleer.server.core.alerting.ConditionKind;
import io.cameleer.server.core.alerting.NotificationStatus;
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import org.springframework.stereotype.Component;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.cameleer.server.app.alerting.dto.UnreadCountResponse;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertInstanceRepository;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.AlertState;
import com.cameleer.server.core.rbac.RbacService;
import io.cameleer.server.app.alerting.dto.UnreadCountResponse;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertInstanceRepository;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.AlertState;
import io.cameleer.server.core.rbac.RbacService;
import org.springframework.stereotype.Component;
import java.time.Clock;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.samskivert.mustache.Mustache;
import org.slf4j.Logger;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.runtime.Environment;
import org.springframework.stereotype.Component;
import java.util.LinkedHashMap;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.cameleer.server.app.alerting.config.AlertingProperties;
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
import com.cameleer.server.core.alerting.*;
import com.cameleer.server.core.outbound.OutboundConnectionRepository;
import com.cameleer.server.core.runtime.Environment;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.app.alerting.config.AlertingProperties;
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
import io.cameleer.server.core.alerting.*;
import io.cameleer.server.core.outbound.OutboundConnectionRepository;
import io.cameleer.server.core.runtime.Environment;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -23,7 +23,7 @@ import java.util.Map;
* Claim-polling outbox loop that dispatches {@link AlertNotification} records.
* <p>
* On each tick, claims a batch of due notifications, resolves the backing
* {@link AlertInstance} and {@link com.cameleer.server.core.outbound.OutboundConnection},
* {@link AlertInstance} and {@link io.cameleer.server.core.outbound.OutboundConnection},
* checks active silences, delegates to {@link WebhookDispatcher}, and persists the outcome.
* <p>
* Retry backoff: {@code retryAfter × attempts} (30 s, 60 s, 90 s, ).

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.SilenceMatcher;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.SilenceMatcher;
import org.springframework.stereotype.Component;
/**

View File

@@ -1,16 +1,16 @@
package com.cameleer.server.app.alerting.notify;
package io.cameleer.server.app.alerting.notify;
import com.cameleer.server.app.alerting.config.AlertingProperties;
import com.cameleer.server.app.outbound.crypto.SecretCipher;
import com.cameleer.server.core.alerting.AlertInstance;
import com.cameleer.server.core.alerting.AlertNotification;
import com.cameleer.server.core.alerting.AlertRule;
import com.cameleer.server.core.alerting.NotificationStatus;
import com.cameleer.server.core.alerting.WebhookBinding;
import com.cameleer.server.core.http.OutboundHttpClientFactory;
import com.cameleer.server.core.http.OutboundHttpRequestContext;
import com.cameleer.server.core.outbound.OutboundConnection;
import com.cameleer.server.core.outbound.OutboundMethod;
import io.cameleer.server.app.alerting.config.AlertingProperties;
import io.cameleer.server.app.outbound.crypto.SecretCipher;
import io.cameleer.server.core.alerting.AlertInstance;
import io.cameleer.server.core.alerting.AlertNotification;
import io.cameleer.server.core.alerting.AlertRule;
import io.cameleer.server.core.alerting.NotificationStatus;
import io.cameleer.server.core.alerting.WebhookBinding;
import io.cameleer.server.core.http.OutboundHttpClientFactory;
import io.cameleer.server.core.http.OutboundHttpRequestContext;
import io.cameleer.server.core.outbound.OutboundConnection;
import io.cameleer.server.core.outbound.OutboundMethod;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.hc.client5.http.classic.methods.HttpPatch;
import org.apache.hc.client5.http.classic.methods.HttpPost;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.retention;
package io.cameleer.server.app.alerting.retention;
import com.cameleer.server.app.alerting.config.AlertingProperties;
import com.cameleer.server.core.alerting.AlertInstanceRepository;
import com.cameleer.server.core.alerting.AlertNotificationRepository;
import io.cameleer.server.app.alerting.config.AlertingProperties;
import io.cameleer.server.core.alerting.AlertInstanceRepository;
import io.cameleer.server.core.alerting.AlertNotificationRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
@@ -15,9 +15,9 @@ import java.time.temporal.ChronoUnit;
/**
* Nightly retention job for alerting data.
* <p>
* Deletes RESOLVED {@link com.cameleer.server.core.alerting.AlertInstance} rows older than
* Deletes RESOLVED {@link io.cameleer.server.core.alerting.AlertInstance} rows older than
* {@code cameleer.server.alerting.eventRetentionDays} and DELIVERED/FAILED
* {@link com.cameleer.server.core.alerting.AlertNotification} rows older than
* {@link io.cameleer.server.core.alerting.AlertNotification} rows older than
* {@code cameleer.server.alerting.notificationRetentionDays}.
* <p>
* Duplicate runs across replicas are tolerable the DELETEs are idempotent.

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.storage;
package io.cameleer.server.app.alerting.storage;
import com.cameleer.server.core.alerting.*;
import io.cameleer.server.core.alerting.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.alerting.storage;
package io.cameleer.server.app.alerting.storage;
import com.cameleer.server.core.alerting.AlertNotification;
import com.cameleer.server.core.alerting.AlertNotificationRepository;
import com.cameleer.server.core.alerting.NotificationStatus;
import io.cameleer.server.core.alerting.AlertNotification;
import io.cameleer.server.core.alerting.AlertNotificationRepository;
import io.cameleer.server.core.alerting.NotificationStatus;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.alerting.storage;
package io.cameleer.server.app.alerting.storage;
import com.cameleer.server.core.alerting.*;
import io.cameleer.server.core.alerting.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;

View File

@@ -1,9 +1,9 @@
package com.cameleer.server.app.alerting.storage;
package io.cameleer.server.app.alerting.storage;
import com.cameleer.server.core.alerting.AlertSilence;
import com.cameleer.server.core.alerting.AlertSilenceRepository;
import com.cameleer.server.core.alerting.AlertSeverity;
import com.cameleer.server.core.alerting.SilenceMatcher;
import io.cameleer.server.core.alerting.AlertSilence;
import io.cameleer.server.core.alerting.AlertSilenceRepository;
import io.cameleer.server.core.alerting.AlertSeverity;
import io.cameleer.server.core.alerting.SilenceMatcher;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

View File

@@ -1,6 +1,6 @@
package com.cameleer.server.app.analytics;
package io.cameleer.server.app.analytics;
import com.cameleer.server.app.storage.ClickHouseUsageTracker;
import io.cameleer.server.app.storage.ClickHouseUsageTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app.analytics;
package io.cameleer.server.app.analytics;
import com.cameleer.server.core.analytics.UsageEvent;
import com.cameleer.server.core.analytics.UsageTracker;
import io.cameleer.server.core.analytics.UsageEvent;
import io.cameleer.server.core.analytics.UsageTracker;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;

View File

@@ -1,9 +1,9 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.core.agent.AgentEventRepository;
import com.cameleer.server.core.agent.AgentEventService;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.RouteStateRegistry;
import io.cameleer.server.core.agent.AgentEventRepository;
import io.cameleer.server.core.agent.AgentEventService;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.RouteStateRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -18,7 +18,7 @@ public class AgentRegistryBeanConfig {
@Bean
public AgentRegistryService agentRegistryService(AgentRegistryConfig config,
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
return new AgentRegistryService(
config.getStaleThresholdMs(),
config.getDeadThresholdMs(),

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,7 +1,7 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.diagram.ElkDiagramRenderer;
import com.cameleer.server.core.diagram.DiagramRenderer;
import io.cameleer.server.app.diagram.ElkDiagramRenderer;
import io.cameleer.server.core.diagram.DiagramRenderer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -1,10 +1,10 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.core.ingestion.BufferedLogEntry;
import com.cameleer.server.core.ingestion.ChunkAccumulator;
import com.cameleer.server.core.ingestion.MergedExecution;
import com.cameleer.server.core.ingestion.WriteBuffer;
import com.cameleer.server.core.storage.model.MetricsSnapshot;
import io.cameleer.server.core.ingestion.BufferedLogEntry;
import io.cameleer.server.core.ingestion.ChunkAccumulator;
import io.cameleer.server.core.ingestion.MergedExecution;
import io.cameleer.server.core.ingestion.WriteBuffer;
import io.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Configuration;
* Creates write buffer beans for the ingestion pipeline.
* <p>
* Each {@link WriteBuffer} instance is shared between the
* {@link com.cameleer.server.core.ingestion.IngestionService} (producer side)
* {@link io.cameleer.server.core.ingestion.IngestionService} (producer side)
* and the flush scheduler (consumer side).
*/
@Configuration

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.license.LicenseRepository;
import com.cameleer.server.app.license.LicenseService;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.license.LicenseGate;
import com.cameleer.license.LicenseInfo;
import com.cameleer.license.LicenseValidator;
import io.cameleer.server.app.license.LicenseRepository;
import io.cameleer.server.app.license.LicenseService;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.license.LicenseGate;
import io.cameleer.license.LicenseInfo;
import io.cameleer.license.LicenseValidator;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
import io.swagger.v3.oas.annotations.security.SecurityScheme;

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.storage.PostgresClaimMappingRepository;
import com.cameleer.server.core.rbac.ClaimMappingRepository;
import com.cameleer.server.core.rbac.ClaimMappingService;
import io.cameleer.server.app.storage.PostgresClaimMappingRepository;
import io.cameleer.server.core.rbac.ClaimMappingRepository;
import io.cameleer.server.core.rbac.ClaimMappingService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

View File

@@ -1,19 +1,19 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.storage.FilesystemArtifactStore;
import com.cameleer.server.app.storage.PostgresAppRepository;
import com.cameleer.server.app.storage.PostgresAppVersionRepository;
import com.cameleer.server.app.storage.PostgresDeploymentRepository;
import com.cameleer.server.app.storage.PostgresEnvironmentRepository;
import com.cameleer.server.core.runtime.AppRepository;
import com.cameleer.server.core.runtime.AppService;
import com.cameleer.server.core.runtime.AppVersionRepository;
import com.cameleer.server.core.runtime.DeploymentRepository;
import com.cameleer.server.core.runtime.DeploymentService;
import com.cameleer.server.core.runtime.DirtyStateCalculator;
import com.cameleer.server.core.runtime.EnvironmentRepository;
import com.cameleer.server.core.runtime.EnvironmentService;
import com.cameleer.server.core.storage.ArtifactStore;
import io.cameleer.server.app.storage.FilesystemArtifactStore;
import io.cameleer.server.app.storage.PostgresAppRepository;
import io.cameleer.server.app.storage.PostgresAppVersionRepository;
import io.cameleer.server.app.storage.PostgresDeploymentRepository;
import io.cameleer.server.app.storage.PostgresEnvironmentRepository;
import io.cameleer.server.core.runtime.AppRepository;
import io.cameleer.server.core.runtime.AppService;
import io.cameleer.server.core.runtime.AppVersionRepository;
import io.cameleer.server.core.runtime.DeploymentRepository;
import io.cameleer.server.core.runtime.DeploymentService;
import io.cameleer.server.core.runtime.DirtyStateCalculator;
import io.cameleer.server.core.runtime.EnvironmentRepository;
import io.cameleer.server.core.runtime.EnvironmentService;
import io.cameleer.server.core.storage.ArtifactStore;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@@ -53,7 +53,7 @@ public class RuntimeBeanConfig {
@Bean
public EnvironmentService environmentService(EnvironmentRepository repo,
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
return new EnvironmentService(repo, current ->
enforcer.assertWithinCap("max_environments", current, 1));
}
@@ -67,7 +67,7 @@ public class RuntimeBeanConfig {
public AppService appService(AppRepository appRepo, AppVersionRepository versionRepo,
ArtifactStore artifactStore,
@Value("${cameleer.server.tenant.id:default}") String tenantId,
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
return new AppService(appRepo, versionRepo, artifactStore, tenantId,
current -> enforcer.assertWithinCap("max_apps", current, 1));
}

View File

@@ -1,8 +1,8 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.core.search.SearchService;
import com.cameleer.server.core.storage.SearchIndex;
import com.cameleer.server.core.storage.StatsStore;
import io.cameleer.server.core.search.SearchService;
import io.cameleer.server.core.storage.SearchIndex;
import io.cameleer.server.core.storage.StatsStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.health.Health;

View File

@@ -1,35 +1,35 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.metrics.ServerMetrics;
import com.cameleer.server.app.search.ClickHouseLogStore;
import com.cameleer.server.app.storage.ClickHouseAgentEventRepository;
import com.cameleer.server.app.storage.ClickHouseUsageTracker;
import com.cameleer.server.app.storage.ClickHouseDiagramStore;
import com.cameleer.server.app.storage.ClickHouseRouteCatalogStore;
import com.cameleer.server.core.storage.RouteCatalogStore;
import com.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
import com.cameleer.server.app.storage.ClickHouseMetricsStore;
import com.cameleer.server.app.storage.ClickHouseServerMetricsQueryStore;
import com.cameleer.server.app.storage.ClickHouseServerMetricsStore;
import com.cameleer.server.app.storage.ClickHouseStatsStore;
import com.cameleer.server.core.admin.AuditRepository;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.agent.AgentEventRepository;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.detail.DetailService;
import com.cameleer.server.app.ingestion.ExecutionFlushScheduler;
import com.cameleer.server.app.search.ClickHouseSearchIndex;
import com.cameleer.server.app.storage.ClickHouseExecutionStore;
import com.cameleer.server.core.ingestion.BufferedLogEntry;
import com.cameleer.server.core.ingestion.ChunkAccumulator;
import com.cameleer.server.core.ingestion.IngestionService;
import com.cameleer.server.core.ingestion.MergedExecution;
import com.cameleer.server.core.ingestion.WriteBuffer;
import com.cameleer.server.core.storage.*;
import com.cameleer.server.core.storage.LogIndex;
import com.cameleer.server.core.storage.StatsStore;
import com.cameleer.server.core.storage.model.MetricsSnapshot;
import io.cameleer.server.app.metrics.ServerMetrics;
import io.cameleer.server.app.search.ClickHouseLogStore;
import io.cameleer.server.app.storage.ClickHouseAgentEventRepository;
import io.cameleer.server.app.storage.ClickHouseUsageTracker;
import io.cameleer.server.app.storage.ClickHouseDiagramStore;
import io.cameleer.server.app.storage.ClickHouseRouteCatalogStore;
import io.cameleer.server.core.storage.RouteCatalogStore;
import io.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
import io.cameleer.server.app.storage.ClickHouseMetricsStore;
import io.cameleer.server.app.storage.ClickHouseServerMetricsQueryStore;
import io.cameleer.server.app.storage.ClickHouseServerMetricsStore;
import io.cameleer.server.app.storage.ClickHouseStatsStore;
import io.cameleer.server.core.admin.AuditRepository;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.agent.AgentEventRepository;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.detail.DetailService;
import io.cameleer.server.app.ingestion.ExecutionFlushScheduler;
import io.cameleer.server.app.search.ClickHouseSearchIndex;
import io.cameleer.server.app.storage.ClickHouseExecutionStore;
import io.cameleer.server.core.ingestion.BufferedLogEntry;
import io.cameleer.server.core.ingestion.ChunkAccumulator;
import io.cameleer.server.core.ingestion.IngestionService;
import io.cameleer.server.core.ingestion.MergedExecution;
import io.cameleer.server.core.ingestion.WriteBuffer;
import io.cameleer.server.core.storage.*;
import io.cameleer.server.core.storage.LogIndex;
import io.cameleer.server.core.storage.StatsStore;
import io.cameleer.server.core.storage.model.MetricsSnapshot;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@@ -189,26 +189,26 @@ public class StorageBeanConfig {
TenantProperties tenantProperties,
@Qualifier("clickHouseJdbcTemplate") JdbcTemplate clickHouseJdbc) {
return new ClickHouseUsageTracker(tenantProperties.getId(), clickHouseJdbc,
new com.cameleer.server.core.ingestion.WriteBuffer<>(5000));
new io.cameleer.server.core.ingestion.WriteBuffer<>(5000));
}
@Bean
public com.cameleer.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
public io.cameleer.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
ClickHouseUsageTracker usageTracker) {
return new com.cameleer.server.app.analytics.UsageTrackingInterceptor(usageTracker);
return new io.cameleer.server.app.analytics.UsageTrackingInterceptor(usageTracker);
}
@Bean
public com.cameleer.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
public io.cameleer.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
ClickHouseUsageTracker usageTracker) {
return new com.cameleer.server.app.analytics.UsageFlushScheduler(usageTracker);
return new io.cameleer.server.app.analytics.UsageFlushScheduler(usageTracker);
}
// License Repository
@Bean
public com.cameleer.server.app.license.LicenseRepository licenseRepository(
public io.cameleer.server.app.license.LicenseRepository licenseRepository(
JdbcTemplate jdbcTemplate) {
return new com.cameleer.server.app.license.PostgresLicenseRepository(jdbcTemplate);
return new io.cameleer.server.app.license.PostgresLicenseRepository(jdbcTemplate);
}
}

View File

@@ -1,4 +1,4 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

View File

@@ -1,9 +1,9 @@
package com.cameleer.server.app.config;
package io.cameleer.server.app.config;
import com.cameleer.server.app.analytics.UsageTrackingInterceptor;
import com.cameleer.server.app.interceptor.AuditInterceptor;
import com.cameleer.server.app.interceptor.ProtocolVersionInterceptor;
import com.cameleer.server.app.web.EnvironmentPathResolver;
import io.cameleer.server.app.analytics.UsageTrackingInterceptor;
import io.cameleer.server.app.interceptor.AuditInterceptor;
import io.cameleer.server.app.interceptor.ProtocolVersionInterceptor;
import io.cameleer.server.app.web.EnvironmentPathResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

View File

@@ -1,23 +1,23 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.agent.SseConnectionManager;
import com.cameleer.server.app.dto.CommandAckRequest;
import com.cameleer.server.app.dto.CommandBroadcastResponse;
import com.cameleer.server.app.dto.CommandGroupResponse;
import com.cameleer.server.app.dto.CommandRequest;
import com.cameleer.server.app.dto.CommandSingleResponse;
import com.cameleer.server.app.dto.ReplayRequest;
import com.cameleer.server.app.dto.ReplayResponse;
import com.cameleer.server.core.admin.AuditCategory;
import com.cameleer.server.core.admin.AuditResult;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.agent.AgentCommand;
import com.cameleer.server.core.agent.AgentEventService;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.AgentState;
import com.cameleer.server.core.agent.CommandReply;
import com.cameleer.server.core.agent.CommandType;
import io.cameleer.server.app.agent.SseConnectionManager;
import io.cameleer.server.app.dto.CommandAckRequest;
import io.cameleer.server.app.dto.CommandBroadcastResponse;
import io.cameleer.server.app.dto.CommandGroupResponse;
import io.cameleer.server.app.dto.CommandRequest;
import io.cameleer.server.app.dto.CommandSingleResponse;
import io.cameleer.server.app.dto.ReplayRequest;
import io.cameleer.server.app.dto.ReplayResponse;
import io.cameleer.server.core.admin.AuditCategory;
import io.cameleer.server.core.admin.AuditResult;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.agent.AgentCommand;
import io.cameleer.server.core.agent.AgentEventService;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.AgentState;
import io.cameleer.server.core.agent.CommandReply;
import io.cameleer.server.core.agent.CommandType;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;

View File

@@ -1,15 +1,15 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.common.model.ApplicationConfig;
import com.cameleer.server.app.dto.AppConfigResponse;
import com.cameleer.server.app.security.JwtAuthenticationFilter;
import com.cameleer.server.app.storage.PostgresApplicationConfigRepository;
import com.cameleer.server.core.admin.SensitiveKeysConfig;
import com.cameleer.server.core.admin.SensitiveKeysMerger;
import com.cameleer.server.core.admin.SensitiveKeysRepository;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.security.JwtService.JwtValidationResult;
import io.cameleer.server.app.dto.AppConfigResponse;
import io.cameleer.server.app.security.JwtAuthenticationFilter;
import io.cameleer.server.app.storage.PostgresApplicationConfigRepository;
import io.cameleer.server.core.admin.SensitiveKeysConfig;
import io.cameleer.server.core.admin.SensitiveKeysMerger;
import io.cameleer.server.core.admin.SensitiveKeysRepository;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.security.JwtService.JwtValidationResult;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Operation;

View File

@@ -1,11 +1,11 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.dto.AgentEventPageResponse;
import com.cameleer.server.app.dto.AgentEventResponse;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.agent.AgentEventPage;
import com.cameleer.server.core.agent.AgentEventService;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.dto.AgentEventPageResponse;
import io.cameleer.server.app.dto.AgentEventResponse;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.agent.AgentEventPage;
import io.cameleer.server.core.agent.AgentEventService;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;

View File

@@ -1,12 +1,12 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.dto.AgentInstanceResponse;
import com.cameleer.server.app.dto.ErrorResponse;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.AgentState;
import com.cameleer.server.core.runtime.Environment;
import io.cameleer.server.app.dto.AgentInstanceResponse;
import io.cameleer.server.app.dto.ErrorResponse;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.AgentState;
import io.cameleer.server.core.runtime.Environment;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,13 +1,13 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.dto.AgentMetricsResponse;
import com.cameleer.server.app.dto.MetricBucket;
import com.cameleer.server.app.web.EnvPath;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.runtime.Environment;
import com.cameleer.server.core.storage.MetricsQueryStore;
import com.cameleer.server.core.storage.model.MetricTimeSeries;
import io.cameleer.server.app.dto.AgentMetricsResponse;
import io.cameleer.server.app.dto.MetricBucket;
import io.cameleer.server.app.web.EnvPath;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.runtime.Environment;
import io.cameleer.server.core.storage.MetricsQueryStore;
import io.cameleer.server.core.storage.model.MetricTimeSeries;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,27 +1,27 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.config.AgentRegistryConfig;
import com.cameleer.server.app.dto.AgentInstanceResponse;
import com.cameleer.server.app.dto.AgentRefreshRequest;
import com.cameleer.server.app.dto.AgentRefreshResponse;
import com.cameleer.server.app.dto.AgentRegistrationRequest;
import com.cameleer.server.app.dto.AgentRegistrationResponse;
import com.cameleer.server.app.dto.ErrorResponse;
import io.cameleer.server.app.config.AgentRegistryConfig;
import io.cameleer.server.app.dto.AgentInstanceResponse;
import io.cameleer.server.app.dto.AgentRefreshRequest;
import io.cameleer.server.app.dto.AgentRefreshResponse;
import io.cameleer.server.app.dto.AgentRegistrationRequest;
import io.cameleer.server.app.dto.AgentRegistrationResponse;
import io.cameleer.server.app.dto.ErrorResponse;
import com.cameleer.common.model.HeartbeatRequest;
import com.cameleer.server.app.security.BootstrapTokenValidator;
import com.cameleer.server.app.security.JwtAuthenticationFilter;
import com.cameleer.server.core.admin.AuditCategory;
import com.cameleer.server.core.admin.AuditResult;
import com.cameleer.server.core.admin.AuditService;
import com.cameleer.server.core.agent.AgentEventService;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.agent.AgentState;
import com.cameleer.server.core.agent.RouteStateRegistry;
import com.cameleer.server.core.security.Ed25519SigningService;
import com.cameleer.server.core.storage.RouteCatalogStore;
import com.cameleer.server.core.security.InvalidTokenException;
import com.cameleer.server.core.security.JwtService;
import io.cameleer.server.app.security.BootstrapTokenValidator;
import io.cameleer.server.app.security.JwtAuthenticationFilter;
import io.cameleer.server.core.admin.AuditCategory;
import io.cameleer.server.core.admin.AuditResult;
import io.cameleer.server.core.admin.AuditService;
import io.cameleer.server.core.agent.AgentEventService;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.agent.AgentState;
import io.cameleer.server.core.agent.RouteStateRegistry;
import io.cameleer.server.core.security.Ed25519SigningService;
import io.cameleer.server.core.storage.RouteCatalogStore;
import io.cameleer.server.core.security.InvalidTokenException;
import io.cameleer.server.core.security.JwtService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,10 +1,10 @@
package com.cameleer.server.app.controller;
package io.cameleer.server.app.controller;
import com.cameleer.server.app.agent.SseConnectionManager;
import com.cameleer.server.app.security.JwtAuthenticationFilter;
import com.cameleer.server.core.agent.AgentInfo;
import com.cameleer.server.core.agent.AgentRegistryService;
import com.cameleer.server.core.security.JwtService;
import io.cameleer.server.app.agent.SseConnectionManager;
import io.cameleer.server.app.security.JwtAuthenticationFilter;
import io.cameleer.server.core.agent.AgentInfo;
import io.cameleer.server.core.agent.AgentRegistryService;
import io.cameleer.server.core.security.JwtService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponse;

Some files were not shown because too many files have changed in this diff Show More