@cleocode/lafs 2026.4.0 → 2026.4.4
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 +97 -68
- package/dist/src/a2a/bindings/grpc.d.ts +117 -11
- package/dist/src/a2a/bindings/grpc.d.ts.map +1 -1
- package/dist/src/a2a/bindings/grpc.js +79 -8
- package/dist/src/a2a/bindings/grpc.js.map +1 -1
- package/dist/src/a2a/bindings/http.d.ts +129 -14
- package/dist/src/a2a/bindings/http.d.ts.map +1 -1
- package/dist/src/a2a/bindings/http.js +93 -12
- package/dist/src/a2a/bindings/http.js.map +1 -1
- package/dist/src/a2a/bindings/index.d.ts +80 -7
- package/dist/src/a2a/bindings/index.d.ts.map +1 -1
- package/dist/src/a2a/bindings/index.js +69 -2
- package/dist/src/a2a/bindings/index.js.map +1 -1
- package/dist/src/a2a/bindings/jsonrpc.d.ts +193 -9
- package/dist/src/a2a/bindings/jsonrpc.d.ts.map +1 -1
- package/dist/src/a2a/bindings/jsonrpc.js +152 -9
- package/dist/src/a2a/bindings/jsonrpc.js.map +1 -1
- package/dist/src/a2a/bridge.d.ts +232 -37
- package/dist/src/a2a/bridge.d.ts.map +1 -1
- package/dist/src/a2a/bridge.js +172 -24
- package/dist/src/a2a/bridge.js.map +1 -1
- package/dist/src/a2a/extensions.d.ts +221 -12
- package/dist/src/a2a/extensions.d.ts.map +1 -1
- package/dist/src/a2a/extensions.js +175 -11
- package/dist/src/a2a/extensions.js.map +1 -1
- package/dist/src/a2a/index.d.ts +2 -0
- package/dist/src/a2a/index.d.ts.map +1 -1
- package/dist/src/a2a/index.js +2 -0
- package/dist/src/a2a/index.js.map +1 -1
- package/dist/src/a2a/streaming.d.ts +274 -2
- package/dist/src/a2a/streaming.d.ts.map +1 -1
- package/dist/src/a2a/streaming.js +245 -2
- package/dist/src/a2a/streaming.js.map +1 -1
- package/dist/src/a2a/task-lifecycle.d.ts +339 -19
- package/dist/src/a2a/task-lifecycle.d.ts.map +1 -1
- package/dist/src/a2a/task-lifecycle.js +302 -19
- package/dist/src/a2a/task-lifecycle.js.map +1 -1
- package/dist/src/budgetEnforcement.d.ts +88 -14
- package/dist/src/budgetEnforcement.d.ts.map +1 -1
- package/dist/src/budgetEnforcement.js +132 -19
- package/dist/src/budgetEnforcement.js.map +1 -1
- package/dist/src/circuit-breaker/index.d.ts +254 -9
- package/dist/src/circuit-breaker/index.d.ts.map +1 -1
- package/dist/src/circuit-breaker/index.js +218 -9
- package/dist/src/circuit-breaker/index.js.map +1 -1
- package/dist/src/compliance.d.ts +176 -0
- package/dist/src/compliance.d.ts.map +1 -1
- package/dist/src/compliance.js +100 -0
- package/dist/src/compliance.js.map +1 -1
- package/dist/src/conformance.d.ts +52 -0
- package/dist/src/conformance.d.ts.map +1 -1
- package/dist/src/conformance.js +41 -0
- package/dist/src/conformance.js.map +1 -1
- package/dist/src/conformanceProfiles.d.ts +66 -0
- package/dist/src/conformanceProfiles.d.ts.map +1 -1
- package/dist/src/conformanceProfiles.js +51 -0
- package/dist/src/conformanceProfiles.js.map +1 -1
- package/dist/src/deprecationRegistry.d.ts +80 -0
- package/dist/src/deprecationRegistry.d.ts.map +1 -1
- package/dist/src/deprecationRegistry.js +50 -0
- package/dist/src/deprecationRegistry.js.map +1 -1
- package/dist/src/discovery.d.ts +344 -63
- package/dist/src/discovery.d.ts.map +1 -1
- package/dist/src/discovery.js +67 -13
- package/dist/src/discovery.js.map +1 -1
- package/dist/src/envelope.d.ts +252 -0
- package/dist/src/envelope.d.ts.map +1 -1
- package/dist/src/envelope.js +165 -0
- package/dist/src/envelope.js.map +1 -1
- package/dist/src/errorRegistry.d.ts +159 -0
- package/dist/src/errorRegistry.d.ts.map +1 -1
- package/dist/src/errorRegistry.js +115 -0
- package/dist/src/errorRegistry.js.map +1 -1
- package/dist/src/fieldExtraction.d.ts +125 -25
- package/dist/src/fieldExtraction.d.ts.map +1 -1
- package/dist/src/fieldExtraction.js +85 -16
- package/dist/src/fieldExtraction.js.map +1 -1
- package/dist/src/flagResolver.d.ts +75 -9
- package/dist/src/flagResolver.d.ts.map +1 -1
- package/dist/src/flagResolver.js +20 -4
- package/dist/src/flagResolver.js.map +1 -1
- package/dist/src/flagSemantics.d.ts +76 -1
- package/dist/src/flagSemantics.d.ts.map +1 -1
- package/dist/src/flagSemantics.js +66 -0
- package/dist/src/flagSemantics.js.map +1 -1
- package/dist/src/health/index.d.ts +87 -6
- package/dist/src/health/index.d.ts.map +1 -1
- package/dist/src/health/index.js +54 -6
- package/dist/src/health/index.js.map +1 -1
- package/dist/src/index.d.ts +12 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mviProjection.d.ts +42 -6
- package/dist/src/mviProjection.d.ts.map +1 -1
- package/dist/src/mviProjection.js +31 -5
- package/dist/src/mviProjection.js.map +1 -1
- package/dist/src/native-loader.d.ts +49 -0
- package/dist/src/native-loader.d.ts.map +1 -0
- package/dist/src/native-loader.js +56 -0
- package/dist/src/native-loader.js.map +1 -0
- package/dist/src/problemDetails.d.ts +70 -4
- package/dist/src/problemDetails.d.ts.map +1 -1
- package/dist/src/problemDetails.js +21 -3
- package/dist/src/problemDetails.js.map +1 -1
- package/dist/src/shutdown/index.d.ts +96 -7
- package/dist/src/shutdown/index.d.ts.map +1 -1
- package/dist/src/shutdown/index.js +72 -7
- package/dist/src/shutdown/index.js.map +1 -1
- package/dist/src/tokenEstimator.d.ts +97 -11
- package/dist/src/tokenEstimator.d.ts.map +1 -1
- package/dist/src/tokenEstimator.js +90 -11
- package/dist/src/tokenEstimator.js.map +1 -1
- package/dist/src/types.d.ts +467 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +64 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/validateEnvelope.d.ts +59 -1
- package/dist/src/validateEnvelope.d.ts.map +1 -1
- package/dist/src/validateEnvelope.js +75 -9
- package/dist/src/validateEnvelope.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/lafs.md +3 -4
- package/package.json +6 -3
- package/dist/src/mcpAdapter.d.ts +0 -29
- package/dist/src/mcpAdapter.d.ts.map +0 -1
- package/dist/src/mcpAdapter.js +0 -286
- package/dist/src/mcpAdapter.js.map +0 -1
- package/schemas/v1/conformance-profiles.d.ts +0 -15
- package/schemas/v1/envelope.schema.d.ts +0 -14
- package/schemas/v1/error-registry.d.ts +0 -24
package/README.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# LAFS Protocol
|
|
2
2
|
|
|
3
|
-
**LLM-Agent-First Specification**
|
|
3
|
+
**LLM-Agent-First Specification** -- a response envelope contract for AI agent systems.
|
|
4
4
|
|
|
5
|
-
LAFS defines a standard envelope format for structured responses from LLM-powered agents and tools. It complements transport protocols like [MCP](https://modelcontextprotocol.io/) and [A2A](https://github.com/google/A2A) by standardizing what comes back
|
|
5
|
+
LAFS defines a standard envelope format for structured responses from LLM-powered agents and tools. It complements transport protocols like [MCP](https://modelcontextprotocol.io/) and [A2A](https://github.com/google/A2A) by standardizing what comes back -- not how it gets there.
|
|
6
6
|
|
|
7
|
-
**Current version:**
|
|
7
|
+
**Current version:** 2026.4.0 | [Spec](lafs.md)
|
|
8
8
|
|
|
9
|
-
[](https://codluv.gitbook.io/lafs/)
|
|
10
9
|
[](https://www.npmjs.com/package/@cleocode/lafs)
|
|
11
10
|
|
|
12
11
|
## What LAFS provides
|
|
@@ -16,17 +15,24 @@ LAFS defines a standard envelope format for structured responses from LLM-powere
|
|
|
16
15
|
| **Spec** | `lafs.md` | Protocol specification with RFC 2119 language |
|
|
17
16
|
| **Schemas** | `schemas/v1/envelope.schema.json` | Envelope schema (Draft-07) with conditional pagination validation |
|
|
18
17
|
| | `schemas/v1/context-ledger.schema.json` | Context ledger for state tracking across request/response cycles |
|
|
19
|
-
| | `schemas/v1/
|
|
18
|
+
| | `schemas/v1/discovery.schema.json` | Agent Card discovery schema |
|
|
19
|
+
| | `schemas/v1/conformance-profiles.json` | Conformance tier definitions |
|
|
20
|
+
| | `schemas/v1/error-registry.json` | 13 registered error codes with HTTP/gRPC/CLI transport mappings |
|
|
20
21
|
| **Tooling** | `src/` | TypeScript validation, conformance runner, CLI diagnostic tool |
|
|
21
|
-
| **A2A** | `src/a2a/` | Agent-to-Agent integration: extensions, task lifecycle, protocol bindings (JSON-RPC/HTTP/gRPC) |
|
|
22
|
-
| **Tests** | `tests/` |
|
|
23
|
-
| **Fixtures** | `fixtures/` |
|
|
24
|
-
| **Docs** | `docs/` |
|
|
22
|
+
| **A2A** | `src/a2a/` | Agent-to-Agent integration: extensions, task lifecycle, streaming, protocol bindings (JSON-RPC/HTTP/gRPC) |
|
|
23
|
+
| **Tests** | `tests/` | 20 test suites covering envelope, pagination, strict mode, error handling, A2A extensions, task lifecycle, bindings |
|
|
24
|
+
| **Fixtures** | `fixtures/` | 25 JSON fixtures (valid + invalid + agent workflow scenarios) for conformance testing |
|
|
25
|
+
| **Docs** | `docs/` | Guides, SDK reference, architecture docs, and specs |
|
|
25
26
|
|
|
26
27
|
## Install
|
|
27
28
|
|
|
28
29
|
```bash
|
|
30
|
+
# Inside the monorepo (pnpm workspace)
|
|
31
|
+
pnpm add @cleocode/lafs
|
|
32
|
+
|
|
33
|
+
# External consumers
|
|
29
34
|
npm install @cleocode/lafs
|
|
35
|
+
# or: yarn add @cleocode/lafs
|
|
30
36
|
```
|
|
31
37
|
|
|
32
38
|
## Usage
|
|
@@ -41,7 +47,7 @@ import {
|
|
|
41
47
|
isRegisteredErrorCode,
|
|
42
48
|
} from "@cleocode/lafs";
|
|
43
49
|
|
|
44
|
-
// Build
|
|
50
|
+
// Build a success envelope
|
|
45
51
|
const envelope = createEnvelope({
|
|
46
52
|
success: true,
|
|
47
53
|
result: { items: [] },
|
|
@@ -54,7 +60,7 @@ if (!validation.valid) {
|
|
|
54
60
|
console.error(validation.errors);
|
|
55
61
|
}
|
|
56
62
|
|
|
57
|
-
// Parse envelope responses
|
|
63
|
+
// Parse envelope responses
|
|
58
64
|
try {
|
|
59
65
|
const parsed = parseLafsResponse(envelope);
|
|
60
66
|
console.log(parsed);
|
|
@@ -69,26 +75,6 @@ const report = runEnvelopeConformance(envelope);
|
|
|
69
75
|
console.log(report.ok); // true if all checks pass
|
|
70
76
|
```
|
|
71
77
|
|
|
72
|
-
## LLM-agent implementation guides
|
|
73
|
-
|
|
74
|
-
- `docs/guides/llm-agent-guide.md` - parser, success/error handling, strict JSON policy
|
|
75
|
-
- `docs/guides/schema-extension.md` - operation-specific result validation on top of core schema
|
|
76
|
-
- `docs/guides/compliance-pipeline.md` - generation middleware with validate + conformance gates
|
|
77
|
-
- `docs/llms.txt` - LLM-oriented index and canonical sources
|
|
78
|
-
|
|
79
|
-
## CLI
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# Run conformance checks on a fixture
|
|
83
|
-
npm run conformance -- --envelope fixtures/valid-success-envelope.json
|
|
84
|
-
|
|
85
|
-
# Run tests
|
|
86
|
-
npm test
|
|
87
|
-
|
|
88
|
-
# Type check
|
|
89
|
-
npm run typecheck
|
|
90
|
-
```
|
|
91
|
-
|
|
92
78
|
## Envelope structure
|
|
93
79
|
|
|
94
80
|
```json
|
|
@@ -115,17 +101,28 @@ npm run typecheck
|
|
|
115
101
|
}
|
|
116
102
|
```
|
|
117
103
|
|
|
104
|
+
### Envelope invariants
|
|
105
|
+
|
|
106
|
+
- `$schema`, `_meta`, `success`, and `result` are always required.
|
|
107
|
+
- `success: true` implies `error` is `null` (or absent).
|
|
108
|
+
- `success: false` requires a non-null `error` object. `result` MAY be non-null on error envelopes -- this allows validation tools to include actionable data (e.g., suggested fixes) alongside error metadata.
|
|
109
|
+
- Exactly one pagination mode (`cursor`, `offset`, `none`) with mode-specific required fields.
|
|
110
|
+
- `strict: true` rejects additional properties; `strict: false` allows them.
|
|
111
|
+
|
|
118
112
|
## Key features
|
|
119
113
|
|
|
120
|
-
- **Conditional pagination**
|
|
121
|
-
- **Strict/lenient mode**
|
|
122
|
-
- **MVI disclosure levels**
|
|
114
|
+
- **Conditional pagination** -- cursor, offset, and none modes with mode-specific required fields
|
|
115
|
+
- **Strict/lenient mode** -- `strict: true` rejects unknown properties; `strict: false` allows them
|
|
116
|
+
- **MVI disclosure levels** -- `minimal`, `standard`, `full`, `custom` control response verbosity
|
|
123
117
|
- **Field selection** (`_fields`) and **expansion** (`_expand`) request parameters
|
|
124
|
-
- **Context ledger**
|
|
125
|
-
- **Error registry**
|
|
126
|
-
- **Extension mechanism**
|
|
127
|
-
- **Adoption tiers**
|
|
128
|
-
- **A2A integration**
|
|
118
|
+
- **Context ledger** -- tracks state across request/response cycles with monotonic versioning
|
|
119
|
+
- **Error registry** -- 13 codes with category, retryability, agent action, and transport-specific status mappings
|
|
120
|
+
- **Extension mechanism** -- `_extensions` field for vendor metadata (`x-` prefix convention)
|
|
121
|
+
- **Adoption tiers** -- Core, Standard, Complete with progressive conformance requirements
|
|
122
|
+
- **A2A integration** -- Agent Card discovery, extension negotiation, task lifecycle management, protocol bindings
|
|
123
|
+
- **Operations and reliability** -- circuit breaker, health checks, graceful shutdown, budget enforcement, token estimation
|
|
124
|
+
- **MCP adapter** -- wrap LAFS envelopes for Model Context Protocol tool responses
|
|
125
|
+
- **Problem Details** -- RFC 9457 Problem Details generation from LAFS errors
|
|
129
126
|
|
|
130
127
|
## A2A Integration
|
|
131
128
|
|
|
@@ -150,7 +147,7 @@ import {
|
|
|
150
147
|
} from "@cleocode/lafs/a2a";
|
|
151
148
|
```
|
|
152
149
|
|
|
153
|
-
**Agent Card with LAFS extension**
|
|
150
|
+
**Agent Card with LAFS extension** -- use `autoIncludeLafsExtension` in discovery config:
|
|
154
151
|
|
|
155
152
|
```typescript
|
|
156
153
|
import { discoveryMiddleware } from "@cleocode/lafs/discovery";
|
|
@@ -167,6 +164,19 @@ app.use(discoveryMiddleware({
|
|
|
167
164
|
import { getErrorCodeMapping } from "@cleocode/lafs/a2a/bindings";
|
|
168
165
|
```
|
|
169
166
|
|
|
167
|
+
## CLI
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Run conformance checks on a fixture
|
|
171
|
+
pnpm run conformance -- --envelope fixtures/valid-success-envelope.json
|
|
172
|
+
|
|
173
|
+
# Run tests
|
|
174
|
+
pnpm test
|
|
175
|
+
|
|
176
|
+
# Type check
|
|
177
|
+
pnpm run typecheck
|
|
178
|
+
```
|
|
179
|
+
|
|
170
180
|
## Conformance checks
|
|
171
181
|
|
|
172
182
|
| Check | Description | Tier |
|
|
@@ -187,48 +197,67 @@ lafs.md # Protocol specification
|
|
|
187
197
|
schemas/v1/
|
|
188
198
|
envelope.schema.json # Envelope schema (Draft-07)
|
|
189
199
|
context-ledger.schema.json # Context ledger schema
|
|
190
|
-
|
|
200
|
+
discovery.schema.json # Agent Card discovery schema
|
|
201
|
+
conformance-profiles.json # Conformance tier definitions
|
|
202
|
+
agent-card.schema.json # Agent Card schema
|
|
203
|
+
error-registry.json # Error code registry (13 codes)
|
|
191
204
|
src/
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
205
|
+
index.ts # Barrel export (all public API)
|
|
206
|
+
types.ts # Core types (LAFSEnvelope, LAFSError, etc.)
|
|
207
|
+
envelope.ts # createEnvelope(), parseLafsResponse(), LafsError
|
|
208
|
+
validateEnvelope.ts # Schema validator (native Rust via napi-rs, AJV fallback)
|
|
209
|
+
conformance.ts # Conformance runner (runEnvelopeConformance)
|
|
210
|
+
conformanceProfiles.ts # Tier-based conformance profile definitions
|
|
211
|
+
compliance.ts # Compliance pipeline utilities
|
|
212
|
+
errorRegistry.ts # Error code helpers (getRegistryCode, isRegisteredErrorCode)
|
|
213
|
+
flagSemantics.ts # Format flag resolution (--json / --human)
|
|
214
|
+
flagResolver.ts # Flag resolution with config precedence
|
|
215
|
+
fieldExtraction.ts # _fields / _expand parameter extraction
|
|
216
|
+
mviProjection.ts # MVI disclosure level projection
|
|
217
|
+
tokenEstimator.ts # Token budget estimation
|
|
218
|
+
budgetEnforcement.ts # Token budget enforcement
|
|
219
|
+
problemDetails.ts # RFC 9457 Problem Details from LAFS errors
|
|
220
|
+
deprecationRegistry.ts # Deprecation tracking and warnings
|
|
221
|
+
native-loader.ts # Lazy native Rust validator loader
|
|
197
222
|
discovery.ts # A2A Agent Card discovery middleware
|
|
198
|
-
cli.ts # CLI diagnostic tool
|
|
223
|
+
cli.ts # CLI diagnostic tool (lafs-conformance)
|
|
224
|
+
health/index.ts # Health check endpoint
|
|
225
|
+
circuit-breaker/index.ts # Circuit breaker pattern
|
|
226
|
+
shutdown/index.ts # Graceful shutdown handler
|
|
199
227
|
a2a/
|
|
228
|
+
index.ts # A2A barrel export
|
|
200
229
|
bridge.ts # A2A SDK integration & result wrapper
|
|
201
230
|
extensions.ts # Extension negotiation & LAFS extension builder
|
|
202
231
|
task-lifecycle.ts # Task state machine & lifecycle management
|
|
232
|
+
streaming.ts # SSE/streaming task event support
|
|
203
233
|
bindings/
|
|
234
|
+
index.ts # Barrel export & cross-binding error mapping
|
|
204
235
|
jsonrpc.ts # JSON-RPC 2.0 method/error constants & builders
|
|
205
236
|
http.ts # HTTP endpoints, RFC 9457 Problem Details
|
|
206
237
|
grpc.ts # gRPC status codes & service definitions (types only)
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
POSITIONING.md # MCP/A2A complementary positioning
|
|
212
|
-
VISION.md # Project vision and primary persona
|
|
213
|
-
CONFORMANCE.md # Conformance checks and adoption tiers
|
|
214
|
-
migrations/
|
|
215
|
-
v0.3.0-to-v0.4.0.md # Envelope rationalization migration
|
|
216
|
-
v0.4.0-to-v0.5.0.md # Pagination & MVI schema migration
|
|
217
|
-
CONTRIBUTING.md # Contributor guidelines, RFC process
|
|
238
|
+
tests/ # 20 test suites (vitest)
|
|
239
|
+
fixtures/ # 25 JSON fixtures (valid + invalid + agent workflows)
|
|
240
|
+
docs/ # Guides, architecture, SDK reference
|
|
241
|
+
CONTRIBUTING.md # Contributor guidelines
|
|
218
242
|
```
|
|
219
243
|
|
|
220
244
|
## Version history
|
|
221
245
|
|
|
222
|
-
| Version |
|
|
223
|
-
|
|
224
|
-
| **
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
246
|
+
| Version | Description |
|
|
247
|
+
|---------|-------------|
|
|
248
|
+
| **2026.4.0** | CalVer adoption. Operations and reliability modules (circuit breaker, health, shutdown, budget enforcement). MCP adapter. Problem Details (RFC 9457). Streaming support. |
|
|
249
|
+
| 1.8.0 | Error envelopes MAY include non-null `result` for actionable data alongside error metadata. |
|
|
250
|
+
| 1.5.0 | Agent workflows fixtures. Deprecation registry. Field extraction. MVI projection. |
|
|
251
|
+
| 1.2.3 | A2A v1.0+ compliance: extension negotiation, task lifecycle, protocol bindings (JSON-RPC/HTTP/gRPC). |
|
|
252
|
+
| 1.0.0 | Production release: token budgets, agent discovery, MCP integration. |
|
|
253
|
+
| 0.5.0 | Conditional pagination, MVI field selection/expansion, context ledger schema. |
|
|
254
|
+
| 0.4.0 | Optional page/error, extensions, strict/lenient mode, warnings. |
|
|
255
|
+
| 0.3.0 | Strategic positioning, vision alignment, adoption tiers. |
|
|
256
|
+
| 0.1.0 | Initial release. |
|
|
257
|
+
|
|
258
|
+
## Repository
|
|
259
|
+
|
|
260
|
+
This package lives at [`packages/lafs`](https://github.com/kryptobaseddev/cleo/tree/main/packages/lafs) in the [kryptobaseddev/cleo](https://github.com/kryptobaseddev/cleo) monorepo.
|
|
232
261
|
|
|
233
262
|
## License
|
|
234
263
|
|
|
@@ -8,61 +8,167 @@
|
|
|
8
8
|
* Reference: A2A spec Section 10.3-10.6
|
|
9
9
|
*/
|
|
10
10
|
import type { A2AErrorType } from './jsonrpc.js';
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Standard gRPC status codes (numeric values 0-16).
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* Canonical gRPC status codes as defined in the gRPC specification.
|
|
16
|
+
* Used to map A2A errors to appropriate gRPC status values.
|
|
17
|
+
*/
|
|
12
18
|
export declare const GRPC_STATUS_CODE: {
|
|
19
|
+
/** Not an error; returned on success */
|
|
13
20
|
readonly OK: 0;
|
|
21
|
+
/** The operation was cancelled by the caller */
|
|
14
22
|
readonly CANCELLED: 1;
|
|
23
|
+
/** Unknown error */
|
|
15
24
|
readonly UNKNOWN: 2;
|
|
25
|
+
/** Client specified an invalid argument */
|
|
16
26
|
readonly INVALID_ARGUMENT: 3;
|
|
27
|
+
/** Deadline expired before operation could complete */
|
|
17
28
|
readonly DEADLINE_EXCEEDED: 4;
|
|
29
|
+
/** Requested entity was not found */
|
|
18
30
|
readonly NOT_FOUND: 5;
|
|
31
|
+
/** Entity already exists */
|
|
19
32
|
readonly ALREADY_EXISTS: 6;
|
|
33
|
+
/** Caller does not have permission */
|
|
20
34
|
readonly PERMISSION_DENIED: 7;
|
|
35
|
+
/** Resource has been exhausted (e.g. quota) */
|
|
21
36
|
readonly RESOURCE_EXHAUSTED: 8;
|
|
37
|
+
/** Operation rejected because the system is not in a required state */
|
|
22
38
|
readonly FAILED_PRECONDITION: 9;
|
|
39
|
+
/** The operation was aborted (e.g. concurrency conflict) */
|
|
23
40
|
readonly ABORTED: 10;
|
|
41
|
+
/** Operation was attempted past the valid range */
|
|
24
42
|
readonly OUT_OF_RANGE: 11;
|
|
43
|
+
/** Operation is not implemented or not supported */
|
|
25
44
|
readonly UNIMPLEMENTED: 12;
|
|
45
|
+
/** Internal error */
|
|
26
46
|
readonly INTERNAL: 13;
|
|
47
|
+
/** The service is currently unavailable */
|
|
27
48
|
readonly UNAVAILABLE: 14;
|
|
49
|
+
/** Unrecoverable data loss or corruption */
|
|
28
50
|
readonly DATA_LOSS: 15;
|
|
51
|
+
/** The request does not have valid authentication credentials */
|
|
29
52
|
readonly UNAUTHENTICATED: 16;
|
|
30
53
|
};
|
|
54
|
+
/** Numeric gRPC status code value (0-16) */
|
|
31
55
|
export type GrpcStatusCode = (typeof GRPC_STATUS_CODE)[keyof typeof GRPC_STATUS_CODE];
|
|
56
|
+
/** String name of a gRPC status code (e.g. `"OK"`, `"NOT_FOUND"`) */
|
|
32
57
|
export type GrpcStatusName = keyof typeof GRPC_STATUS_CODE;
|
|
33
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Maps A2A error types to gRPC status names.
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* Used to determine the appropriate gRPC status code for each A2A error
|
|
63
|
+
* type per spec Section 5.4.
|
|
64
|
+
*/
|
|
34
65
|
export declare const A2A_GRPC_STATUS_CODES: Record<A2AErrorType, GrpcStatusName>;
|
|
35
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* UPPER_SNAKE_CASE error reasons without "Error" suffix.
|
|
68
|
+
*
|
|
69
|
+
* @remarks
|
|
70
|
+
* Used as the `reason` field in gRPC `google.rpc.ErrorInfo` details
|
|
71
|
+
* per spec Section 10.6.
|
|
72
|
+
*/
|
|
36
73
|
export declare const A2A_GRPC_ERROR_REASONS: Record<A2AErrorType, string>;
|
|
37
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Error domain for A2A gRPC errors.
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* Used as the `domain` field in `google.rpc.ErrorInfo` to identify
|
|
79
|
+
* the error source as the A2A protocol.
|
|
80
|
+
*/
|
|
38
81
|
export declare const A2A_GRPC_ERROR_DOMAIN: "a2a-protocol.org";
|
|
39
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Descriptor for a single gRPC service method.
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* Describes the Protobuf request/response message types and whether
|
|
87
|
+
* the method uses server-side streaming.
|
|
88
|
+
*/
|
|
40
89
|
export interface GrpcServiceMethod {
|
|
90
|
+
/** Protobuf request message type name */
|
|
41
91
|
request: string;
|
|
92
|
+
/** Protobuf response message type name */
|
|
42
93
|
response: string;
|
|
94
|
+
/** Whether the method uses server-side streaming */
|
|
43
95
|
streaming: boolean;
|
|
44
96
|
}
|
|
45
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* gRPC service method definitions for the A2A protocol.
|
|
99
|
+
*
|
|
100
|
+
* @remarks
|
|
101
|
+
* Enumerates all RPC methods in the A2A gRPC service with their Protobuf
|
|
102
|
+
* message types and streaming mode per spec Section 10.3.
|
|
103
|
+
*/
|
|
46
104
|
export declare const GRPC_SERVICE_METHODS: Record<string, GrpcServiceMethod>;
|
|
47
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* gRPC metadata key for A2A protocol version.
|
|
107
|
+
*
|
|
108
|
+
* @remarks
|
|
109
|
+
* Sent as gRPC metadata to declare the A2A protocol version in use.
|
|
110
|
+
*/
|
|
48
111
|
export declare const GRPC_METADATA_VERSION_KEY: "a2a-version";
|
|
49
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* gRPC metadata key for activated A2A extensions.
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* Sent as gRPC metadata to declare which A2A extensions are active on the connection.
|
|
117
|
+
*/
|
|
50
118
|
export declare const GRPC_METADATA_EXTENSIONS_KEY: "a2a-extensions";
|
|
51
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* gRPC Status object for A2A errors.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* Models the gRPC `Status` message with an optional `details` array
|
|
124
|
+
* containing `google.rpc.ErrorInfo` entries for rich error context.
|
|
125
|
+
*/
|
|
52
126
|
export interface GrpcStatus {
|
|
127
|
+
/** Numeric gRPC status code */
|
|
53
128
|
code: GrpcStatusCode;
|
|
129
|
+
/** Human-readable error message */
|
|
54
130
|
message: string;
|
|
131
|
+
/**
|
|
132
|
+
* Structured error details (typically `google.rpc.ErrorInfo` entries).
|
|
133
|
+
* @defaultValue undefined
|
|
134
|
+
*/
|
|
55
135
|
details?: GrpcErrorInfo[];
|
|
56
136
|
}
|
|
57
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* Equivalent of `google.rpc.ErrorInfo` for structured gRPC error details.
|
|
139
|
+
*
|
|
140
|
+
* @remarks
|
|
141
|
+
* Provides machine-readable error context including a reason code,
|
|
142
|
+
* error domain, and optional key-value metadata.
|
|
143
|
+
*/
|
|
58
144
|
export interface GrpcErrorInfo {
|
|
145
|
+
/** UPPER_SNAKE_CASE reason string identifying the error */
|
|
59
146
|
reason: string;
|
|
147
|
+
/** Error domain (e.g. `"a2a-protocol.org"`) */
|
|
60
148
|
domain: string;
|
|
149
|
+
/**
|
|
150
|
+
* Additional key-value metadata for the error.
|
|
151
|
+
* @defaultValue undefined
|
|
152
|
+
*/
|
|
61
153
|
metadata?: Record<string, string>;
|
|
62
154
|
}
|
|
63
155
|
/**
|
|
64
156
|
* Create a gRPC Status object for an A2A error type.
|
|
65
|
-
*
|
|
157
|
+
*
|
|
158
|
+
* @remarks
|
|
159
|
+
* Resolves the gRPC status code from the A2A error type mapping and
|
|
160
|
+
* attaches an `ErrorInfo` detail entry with the error reason and domain.
|
|
161
|
+
*
|
|
162
|
+
* @param errorType - The A2A error type name (e.g. `"TaskNotFound"`)
|
|
163
|
+
* @param message - Human-readable error message
|
|
164
|
+
* @param metadata - Optional key-value metadata to include in the ErrorInfo detail
|
|
165
|
+
* @returns A fully formed {@link GrpcStatus} object with ErrorInfo details
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* const status = createGrpcStatus('TaskNotFound', 'No task with id xyz');
|
|
170
|
+
* // { code: 5, message: '...', details: [{ reason: 'TASK_NOT_FOUND', domain: 'a2a-protocol.org' }] }
|
|
171
|
+
* ```
|
|
66
172
|
*/
|
|
67
173
|
export declare function createGrpcStatus(errorType: A2AErrorType, message: string, metadata?: Record<string, string>): GrpcStatus;
|
|
68
174
|
//# sourceMappingURL=grpc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../../../src/a2a/bindings/grpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD
|
|
1
|
+
{"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../../../src/a2a/bindings/grpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B,wCAAwC;;IAExC,gDAAgD;;IAEhD,oBAAoB;;IAEpB,2CAA2C;;IAE3C,uDAAuD;;IAEvD,qCAAqC;;IAErC,4BAA4B;;IAE5B,sCAAsC;;IAEtC,+CAA+C;;IAE/C,uEAAuE;;IAEvE,4DAA4D;;IAE5D,mDAAmD;;IAEnD,oDAAoD;;IAEpD,qBAAqB;;IAErB,2CAA2C;;IAE3C,4CAA4C;;IAE5C,iEAAiE;;CAEzD,CAAC;AAEX,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AACtF,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAM3D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAU7D,CAAC;AAMX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAUtD,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AAMjE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAwDzD,CAAC;AAMX;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAG,aAAsB,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,EAAG,gBAAyB,CAAC;AAMtE;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,UAAU,CAeZ"}
|
|
@@ -10,30 +10,59 @@
|
|
|
10
10
|
// ============================================================================
|
|
11
11
|
// gRPC Status Codes (standard)
|
|
12
12
|
// ============================================================================
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Standard gRPC status codes (numeric values 0-16).
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* Canonical gRPC status codes as defined in the gRPC specification.
|
|
18
|
+
* Used to map A2A errors to appropriate gRPC status values.
|
|
19
|
+
*/
|
|
14
20
|
export const GRPC_STATUS_CODE = {
|
|
21
|
+
/** Not an error; returned on success */
|
|
15
22
|
OK: 0,
|
|
23
|
+
/** The operation was cancelled by the caller */
|
|
16
24
|
CANCELLED: 1,
|
|
25
|
+
/** Unknown error */
|
|
17
26
|
UNKNOWN: 2,
|
|
27
|
+
/** Client specified an invalid argument */
|
|
18
28
|
INVALID_ARGUMENT: 3,
|
|
29
|
+
/** Deadline expired before operation could complete */
|
|
19
30
|
DEADLINE_EXCEEDED: 4,
|
|
31
|
+
/** Requested entity was not found */
|
|
20
32
|
NOT_FOUND: 5,
|
|
33
|
+
/** Entity already exists */
|
|
21
34
|
ALREADY_EXISTS: 6,
|
|
35
|
+
/** Caller does not have permission */
|
|
22
36
|
PERMISSION_DENIED: 7,
|
|
37
|
+
/** Resource has been exhausted (e.g. quota) */
|
|
23
38
|
RESOURCE_EXHAUSTED: 8,
|
|
39
|
+
/** Operation rejected because the system is not in a required state */
|
|
24
40
|
FAILED_PRECONDITION: 9,
|
|
41
|
+
/** The operation was aborted (e.g. concurrency conflict) */
|
|
25
42
|
ABORTED: 10,
|
|
43
|
+
/** Operation was attempted past the valid range */
|
|
26
44
|
OUT_OF_RANGE: 11,
|
|
45
|
+
/** Operation is not implemented or not supported */
|
|
27
46
|
UNIMPLEMENTED: 12,
|
|
47
|
+
/** Internal error */
|
|
28
48
|
INTERNAL: 13,
|
|
49
|
+
/** The service is currently unavailable */
|
|
29
50
|
UNAVAILABLE: 14,
|
|
51
|
+
/** Unrecoverable data loss or corruption */
|
|
30
52
|
DATA_LOSS: 15,
|
|
53
|
+
/** The request does not have valid authentication credentials */
|
|
31
54
|
UNAUTHENTICATED: 16,
|
|
32
55
|
};
|
|
33
56
|
// ============================================================================
|
|
34
57
|
// A2A gRPC Status Mapping (spec Section 5.4)
|
|
35
58
|
// ============================================================================
|
|
36
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Maps A2A error types to gRPC status names.
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* Used to determine the appropriate gRPC status code for each A2A error
|
|
64
|
+
* type per spec Section 5.4.
|
|
65
|
+
*/
|
|
37
66
|
export const A2A_GRPC_STATUS_CODES = {
|
|
38
67
|
TaskNotFound: 'NOT_FOUND',
|
|
39
68
|
TaskNotCancelable: 'FAILED_PRECONDITION',
|
|
@@ -48,7 +77,13 @@ export const A2A_GRPC_STATUS_CODES = {
|
|
|
48
77
|
// ============================================================================
|
|
49
78
|
// Error Reasons (spec Section 10.6)
|
|
50
79
|
// ============================================================================
|
|
51
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* UPPER_SNAKE_CASE error reasons without "Error" suffix.
|
|
82
|
+
*
|
|
83
|
+
* @remarks
|
|
84
|
+
* Used as the `reason` field in gRPC `google.rpc.ErrorInfo` details
|
|
85
|
+
* per spec Section 10.6.
|
|
86
|
+
*/
|
|
52
87
|
export const A2A_GRPC_ERROR_REASONS = {
|
|
53
88
|
TaskNotFound: 'TASK_NOT_FOUND',
|
|
54
89
|
TaskNotCancelable: 'TASK_NOT_CANCELABLE',
|
|
@@ -60,9 +95,21 @@ export const A2A_GRPC_ERROR_REASONS = {
|
|
|
60
95
|
ExtensionSupportRequired: 'EXTENSION_SUPPORT_REQUIRED',
|
|
61
96
|
VersionNotSupported: 'VERSION_NOT_SUPPORTED',
|
|
62
97
|
};
|
|
63
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* Error domain for A2A gRPC errors.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* Used as the `domain` field in `google.rpc.ErrorInfo` to identify
|
|
103
|
+
* the error source as the A2A protocol.
|
|
104
|
+
*/
|
|
64
105
|
export const A2A_GRPC_ERROR_DOMAIN = 'a2a-protocol.org';
|
|
65
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* gRPC service method definitions for the A2A protocol.
|
|
108
|
+
*
|
|
109
|
+
* @remarks
|
|
110
|
+
* Enumerates all RPC methods in the A2A gRPC service with their Protobuf
|
|
111
|
+
* message types and streaming mode per spec Section 10.3.
|
|
112
|
+
*/
|
|
66
113
|
export const GRPC_SERVICE_METHODS = {
|
|
67
114
|
SendMessage: {
|
|
68
115
|
request: 'MessageSendParams',
|
|
@@ -123,13 +170,37 @@ export const GRPC_SERVICE_METHODS = {
|
|
|
123
170
|
// ============================================================================
|
|
124
171
|
// gRPC Metadata Constants
|
|
125
172
|
// ============================================================================
|
|
126
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* gRPC metadata key for A2A protocol version.
|
|
175
|
+
*
|
|
176
|
+
* @remarks
|
|
177
|
+
* Sent as gRPC metadata to declare the A2A protocol version in use.
|
|
178
|
+
*/
|
|
127
179
|
export const GRPC_METADATA_VERSION_KEY = 'a2a-version';
|
|
128
|
-
/**
|
|
180
|
+
/**
|
|
181
|
+
* gRPC metadata key for activated A2A extensions.
|
|
182
|
+
*
|
|
183
|
+
* @remarks
|
|
184
|
+
* Sent as gRPC metadata to declare which A2A extensions are active on the connection.
|
|
185
|
+
*/
|
|
129
186
|
export const GRPC_METADATA_EXTENSIONS_KEY = 'a2a-extensions';
|
|
130
187
|
/**
|
|
131
188
|
* Create a gRPC Status object for an A2A error type.
|
|
132
|
-
*
|
|
189
|
+
*
|
|
190
|
+
* @remarks
|
|
191
|
+
* Resolves the gRPC status code from the A2A error type mapping and
|
|
192
|
+
* attaches an `ErrorInfo` detail entry with the error reason and domain.
|
|
193
|
+
*
|
|
194
|
+
* @param errorType - The A2A error type name (e.g. `"TaskNotFound"`)
|
|
195
|
+
* @param message - Human-readable error message
|
|
196
|
+
* @param metadata - Optional key-value metadata to include in the ErrorInfo detail
|
|
197
|
+
* @returns A fully formed {@link GrpcStatus} object with ErrorInfo details
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* const status = createGrpcStatus('TaskNotFound', 'No task with id xyz');
|
|
202
|
+
* // { code: 5, message: '...', details: [{ reason: 'TASK_NOT_FOUND', domain: 'a2a-protocol.org' }] }
|
|
203
|
+
* ```
|
|
133
204
|
*/
|
|
134
205
|
export function createGrpcStatus(errorType, message, metadata) {
|
|
135
206
|
const statusName = A2A_GRPC_STATUS_CODES[errorType];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../../../src/a2a/bindings/grpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E
|
|
1
|
+
{"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../../../src/a2a/bindings/grpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,wCAAwC;IACxC,EAAE,EAAE,CAAC;IACL,gDAAgD;IAChD,SAAS,EAAE,CAAC;IACZ,oBAAoB;IACpB,OAAO,EAAE,CAAC;IACV,2CAA2C;IAC3C,gBAAgB,EAAE,CAAC;IACnB,uDAAuD;IACvD,iBAAiB,EAAE,CAAC;IACpB,qCAAqC;IACrC,SAAS,EAAE,CAAC;IACZ,4BAA4B;IAC5B,cAAc,EAAE,CAAC;IACjB,sCAAsC;IACtC,iBAAiB,EAAE,CAAC;IACpB,+CAA+C;IAC/C,kBAAkB,EAAE,CAAC;IACrB,uEAAuE;IACvE,mBAAmB,EAAE,CAAC;IACtB,4DAA4D;IAC5D,OAAO,EAAE,EAAE;IACX,mDAAmD;IACnD,YAAY,EAAE,EAAE;IAChB,oDAAoD;IACpD,aAAa,EAAE,EAAE;IACjB,qBAAqB;IACrB,QAAQ,EAAE,EAAE;IACZ,2CAA2C;IAC3C,WAAW,EAAE,EAAE;IACf,4CAA4C;IAC5C,SAAS,EAAE,EAAE;IACb,iEAAiE;IACjE,eAAe,EAAE,EAAE;CACX,CAAC;AAOX,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAyC;IACzE,YAAY,EAAE,WAAW;IACzB,iBAAiB,EAAE,qBAAqB;IACxC,4BAA4B,EAAE,eAAe;IAC7C,oBAAoB,EAAE,eAAe;IACrC,uBAAuB,EAAE,kBAAkB;IAC3C,oBAAoB,EAAE,UAAU;IAChC,sCAAsC,EAAE,WAAW;IACnD,wBAAwB,EAAE,qBAAqB;IAC/C,mBAAmB,EAAE,qBAAqB;CAClC,CAAC;AAEX,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,YAAY,EAAE,gBAAgB;IAC9B,iBAAiB,EAAE,qBAAqB;IACxC,4BAA4B,EAAE,iCAAiC;IAC/D,oBAAoB,EAAE,uBAAuB;IAC7C,uBAAuB,EAAE,4BAA4B;IACrD,oBAAoB,EAAE,wBAAwB;IAC9C,sCAAsC,EAAE,4CAA4C;IACpF,wBAAwB,EAAE,4BAA4B;IACtD,mBAAmB,EAAE,uBAAuB;CACpC,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAA2B,CAAC;AAsBjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsC;IACrE,WAAW,EAAE;QACX,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,oBAAoB,EAAE;QACpB,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,8BAA8B;QACxC,SAAS,EAAE,IAAI;KAChB;IACD,OAAO,EAAE;QACP,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,KAAK;KACjB;IACD,SAAS,EAAE;QACT,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,mBAAmB;QAC7B,SAAS,EAAE,KAAK;KACjB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,oBAAoB;QAC9B,SAAS,EAAE,KAAK;KACjB;IACD,eAAe,EAAE;QACf,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE,IAAI;KAChB;IACD,6BAA6B,EAAE;QAC7B,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,uCAAuC;QACjD,SAAS,EAAE,KAAK;KACjB;IACD,6BAA6B,EAAE;QAC7B,OAAO,EAAE,qCAAqC;QAC9C,QAAQ,EAAE,uCAAuC;QACjD,SAAS,EAAE,KAAK;KACjB;IACD,8BAA8B,EAAE;QAC9B,OAAO,EAAE,sCAAsC;QAC/C,QAAQ,EAAE,wCAAwC;QAClD,SAAS,EAAE,KAAK;KACjB;IACD,gCAAgC,EAAE;QAChC,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,0CAA0C;QACpD,SAAS,EAAE,KAAK;KACjB;IACD,oBAAoB,EAAE;QACpB,OAAO,EAAE,qCAAqC;QAC9C,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,KAAK;KACjB;CACO,CAAC;AAEX,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAsB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAyB,CAAC;AA4CtE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAuB,EACvB,OAAe,EACf,QAAiC;IAEjC,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI;QACJ,OAAO;QACP,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,sBAAsB,CAAC,SAAS,CAAC;gBACzC,MAAM,EAAE,qBAAqB;gBAC7B,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC9B;SACF;KACF,CAAC;AACJ,CAAC"}
|