avantgate 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -22
- package/dist/chunk-Z6QOMLZ2.mjs +55 -0
- package/dist/control-layer.d.ts +20 -2
- package/dist/control-layer.d.ts.map +1 -1
- package/dist/custom-terms.d.ts +8 -0
- package/dist/custom-terms.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +367 -34
- package/dist/index.mjs +358 -34
- package/dist/middleware.d.ts +15 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/presets.d.ts +13 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/secret-guard.d.ts +5 -0
- package/dist/secret-guard.d.ts.map +1 -1
- package/dist/types.d.ts +47 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +65 -0
- package/dist/ui/index.mjs +6 -0
- package/dist/ui/react/index.mjs +4 -51
- package/package.json +10 -13
package/README.md
CHANGED
|
@@ -33,32 +33,17 @@ flowchart LR
|
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
## 🖥️
|
|
36
|
+
## 🖥️ Optional Visual Cockpit — GateWall (`gatewall`)
|
|
37
37
|
|
|
38
|
-
While the **AvantGate SDK**
|
|
38
|
+
While the **AvantGate SDK (`avantgate`)** runs **100% headless and in-process** inside your application runtime (zero servers, zero network latency), an optional visual control plane, **GateWall**, is available as a standalone repository for teams requiring a visual dashboard, real-time audit inspector, and Human-in-the-Loop approval interface.
|
|
39
39
|
|
|
40
40
|
```mermaid
|
|
41
41
|
flowchart LR
|
|
42
|
-
Agent[🤖 AvantGate Agent
|
|
43
|
-
GateWall -- "SSE
|
|
44
|
-
Browser -- "POST /api/v1/approvals<br/>(Approve / Reject)" --> GateWall
|
|
42
|
+
Agent[🤖 AvantGate In-Process Agent] -- "Optional HTTP Telemetry" --> GateWall["🛡️ Standalone GateWall Cockpit<br/>(Dedicated Repository)"]
|
|
43
|
+
GateWall -- "SSE Real-Time Stream" --> Browser["💻 Web Dashboard<br/>(localhost:3000)"]
|
|
45
44
|
```
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
#### Option 1: One-Line Docker Compose (Recommended)
|
|
50
|
-
```bash
|
|
51
|
-
docker compose up -d
|
|
52
|
-
# or: npm run gatewall:docker
|
|
53
|
-
```
|
|
54
|
-
Open **`http://localhost:3000`** in your browser 🎉. Traces and audit sessions are automatically persisted.
|
|
55
|
-
|
|
56
|
-
#### Option 2: Run with Bun or Node.js
|
|
57
|
-
```bash
|
|
58
|
-
cd gatewall
|
|
59
|
-
bun install # or npm install
|
|
60
|
-
bun run dev # or npm run dev
|
|
61
|
-
```
|
|
46
|
+
> 💡 **Standalone Repository:** GateWall Cockpit is maintained independently at `../gatewall`. If your application runs headless, you do **not** need to deploy or run GateWall — all guardrails, PII redactions, and token budgets execute directly within your Node.js process.
|
|
62
47
|
|
|
63
48
|
---
|
|
64
49
|
|
|
@@ -71,7 +56,8 @@ bun run dev # or npm run dev
|
|
|
71
56
|
| **⚡ Real-Time Streaming (SSE)** | Low-latency Server-Sent Events (`/api/v1/realtime`) updating session trees, metrics, and alerts dynamically without manual page refresh. |
|
|
72
57
|
| **💰 FinOps & Token Tracking** | Automated token cost estimation and USD burn tracking across providers (GPT-4o, Claude 3.5 Sonnet, DeepSeek, etc.). |
|
|
73
58
|
| **🛡️ Loop Shield (Anti-Cycle Guard)** | Early visual detection of recursive agent loops and aberrant repetitive tool execution cycles. |
|
|
74
|
-
| **💾
|
|
59
|
+
| **💾 Pluggable Hexagonal Storage** | Zero setup overhead by default with embedded SQLite (`gatewall/data/gatewall.db`), zero-disk in-memory storage for CI tests, and production-ready PostgreSQL/Prisma adapter (`STORAGE_DRIVER=prisma`). |
|
|
60
|
+
| **🔏 Custom Redaction Terms Manager** | Interactive visual manager in the Security Cockpit to register, categorize (Project, Company, Infra), and redact proprietary secrets and NDA keywords in-flight. |
|
|
75
61
|
|
|
76
62
|
> 💡 **Agent Integration Recipes:** See [GateWall Telemetry Recipe](examples/observability/10-gatewall-telemetry.ts) and [Integration Cookbook](examples/README.md) for complete code recipes using `HttpTelemetryExporter` (`avantgate/agent`), direct HTTP ingestion, and React front-end streaming (`avantgate/client`).
|
|
77
63
|
|
|
@@ -108,7 +94,7 @@ Contact our team at [contact@gatewall.fr](mailto:contact@gatewall.fr) for privat
|
|
|
108
94
|
| 📊 **Observability & Cockpit** | [GateWall Cockpit Console](docs/observability/gatewall-cockpit.md) • [Telemetry & Browser SDK](docs/observability/telemetry-and-browser-sdk.md) • [GateWall vs. Temporal](docs/observability/temporal-and-gatewall.md) |
|
|
109
95
|
| 💶 **Accounting** | [Financial Normalizer](docs/finance/normalizer.md) |
|
|
110
96
|
| 🎨 **Presentation Plane** | [Headless UI Canvas & React Bindings](docs/ui/headless-canvas.md) |
|
|
111
|
-
| 🚀 **Release Notes** | [v2.1.0 Release Notes](docs/release/release-2.1.0.md) • [v2.0.0 Release Notes](docs/release/release-2.0.0.md) • [v1.9.0 Release Notes](docs/release/release-1.9.0.md) |
|
|
97
|
+
| 🚀 **Release Notes** | [v2.3.0 Release Notes](docs/release/release-2.3.0.md) • [v2.2.0 Release Notes](docs/release/release-2.2.0.md) • [v2.1.0 Release Notes](docs/release/release-2.1.0.md) • [v2.0.0 Release Notes](docs/release/release-2.0.0.md) • [v1.9.0 Release Notes](docs/release/release-1.9.0.md) |
|
|
112
98
|
|
|
113
99
|
---
|
|
114
100
|
|
|
@@ -141,6 +127,8 @@ pnpm add avantgate zod
|
|
|
141
127
|
yarn add avantgate zod
|
|
142
128
|
```
|
|
143
129
|
|
|
130
|
+
> 🚀 **Quickstart Guide:** See [**Getting Started with AvantGate**](docs/getting-started.md) for 3-minute quickstart recipes with launch-safe presets and compile-time anti-IDOR tools.
|
|
131
|
+
|
|
144
132
|
### 🧩 Subpath Exports
|
|
145
133
|
|
|
146
134
|
| Import Path | Description | Documentation |
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/ui/react/create-view-registry.ts
|
|
2
|
+
import React from "react";
|
|
3
|
+
var createViewRegistry = (registry) => {
|
|
4
|
+
const CanvasRenderer = ({
|
|
5
|
+
state,
|
|
6
|
+
context = {}
|
|
7
|
+
}) => {
|
|
8
|
+
if (!state?.content) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const kind = state.content.kind;
|
|
12
|
+
const Component = registry[kind];
|
|
13
|
+
if (!Component) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return React.createElement(Component, {
|
|
17
|
+
data: state.content,
|
|
18
|
+
context,
|
|
19
|
+
activeIntent: state.activeIntent
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
registry,
|
|
24
|
+
CanvasRenderer
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/ui/react/sanitize.ts
|
|
29
|
+
var ALLOWED_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:"]);
|
|
30
|
+
var isValidSafeUrl = (rawUrl) => {
|
|
31
|
+
if (!rawUrl || typeof rawUrl !== "string") {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const trimmed = rawUrl.trim();
|
|
35
|
+
if (!trimmed) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (trimmed.startsWith("#")) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const parsed = new URL(trimmed);
|
|
46
|
+
return ALLOWED_PROTOCOLS.has(parsed.protocol);
|
|
47
|
+
} catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
createViewRegistry,
|
|
54
|
+
isValidSafeUrl
|
|
55
|
+
};
|
package/dist/control-layer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import type { ControlLayerConfig, ExecutionResult, StructuredExecutionResult, GenerateStructuredOutputOptions, LLMProviderPort } from "./types";
|
|
2
|
+
import type { ControlLayerConfig, ExecutionResult, StructuredExecutionResult, GenerateStructuredOutputOptions, LLMProviderPort, ChatMessage } from "./types";
|
|
3
3
|
export declare class AvantGateControlLayer {
|
|
4
4
|
private config;
|
|
5
5
|
private cachedPricingAdapter?;
|
|
@@ -19,11 +19,26 @@ export declare class AvantGateControlLayer {
|
|
|
19
19
|
private executeProviderPipeline;
|
|
20
20
|
private assembleResult;
|
|
21
21
|
private notifyAuditSink;
|
|
22
|
+
private prepareInputMessages;
|
|
23
|
+
private handleShortCircuit;
|
|
24
|
+
private dispatchPromptExecution;
|
|
25
|
+
private finalizeExecutionResult;
|
|
26
|
+
private runAfterHooks;
|
|
22
27
|
execute: (options: {
|
|
23
|
-
userQuery
|
|
28
|
+
userQuery?: string;
|
|
29
|
+
systemPrompt?: string;
|
|
30
|
+
messages?: ChatMessage[];
|
|
31
|
+
temperature?: number;
|
|
32
|
+
providerOverride?: LLMProviderPort;
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
}) => Promise<ExecutionResult>;
|
|
35
|
+
executePrompt: (options: {
|
|
36
|
+
userQuery?: string;
|
|
24
37
|
systemPrompt?: string;
|
|
38
|
+
messages?: ChatMessage[];
|
|
25
39
|
temperature?: number;
|
|
26
40
|
providerOverride?: LLMProviderPort;
|
|
41
|
+
metadata?: Record<string, unknown>;
|
|
27
42
|
}) => Promise<ExecutionResult>;
|
|
28
43
|
executeStructured: <T>(options: {
|
|
29
44
|
userQuery: string;
|
|
@@ -42,6 +57,9 @@ export declare class AvantGateControlLayer {
|
|
|
42
57
|
private buildStructuredResult;
|
|
43
58
|
private notifyAuditSinkSafe;
|
|
44
59
|
private waitRetryBackoff;
|
|
60
|
+
private handleStructuredShortCircuit;
|
|
61
|
+
private runStructuredAfterHooks;
|
|
62
|
+
private executeStructuredLoop;
|
|
45
63
|
generateStructuredOutput: <T>(options: GenerateStructuredOutputOptions<T>) => Promise<StructuredExecutionResult<T>>;
|
|
46
64
|
}
|
|
47
65
|
export declare const createLLMControlLayer: (config: ControlLayerConfig) => AvantGateControlLayer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-layer.d.ts","sourceRoot":"","sources":["../src/control-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,+BAA+B,EAC/B,eAAe,
|
|
1
|
+
{"version":3,"file":"control-layer.d.ts","sourceRoot":"","sources":["../src/control-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CustomRedactionTermDef } from "./types";
|
|
2
|
+
export interface CustomTermsSanitizationResult {
|
|
3
|
+
text: string;
|
|
4
|
+
maskedCount: number;
|
|
5
|
+
matchedTerms: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare const sanitizeCustomTerms: (input: string, terms?: Array<string | CustomRedactionTermDef>) => CustomTermsSanitizationResult;
|
|
8
|
+
//# sourceMappingURL=custom-terms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-terms.d.ts","sourceRoot":"","sources":["../src/custom-terms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAgB,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAsED,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,QAAQ,KAAK,CAAC,MAAM,GAAG,sBAAsB,CAAC,KAC7C,6BAeF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,7 @@ export * from "./prompts";
|
|
|
9
9
|
export * from "./providers/http-client";
|
|
10
10
|
export * from "./workflow";
|
|
11
11
|
export * from "./secret-guard";
|
|
12
|
+
export * from "./custom-terms";
|
|
13
|
+
export * from "./middleware";
|
|
14
|
+
export * from "./presets";
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|