@portel/photon 1.22.1 → 1.23.1
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 +19 -8
- package/dist/a2ui/mapper.d.ts +40 -0
- package/dist/a2ui/mapper.d.ts.map +1 -0
- package/dist/a2ui/mapper.js +286 -0
- package/dist/a2ui/mapper.js.map +1 -0
- package/dist/a2ui/types.d.ts +129 -0
- package/dist/a2ui/types.d.ts.map +1 -0
- package/dist/a2ui/types.js +20 -0
- package/dist/a2ui/types.js.map +1 -0
- package/dist/ag-ui/adapter.d.ts +9 -1
- package/dist/ag-ui/adapter.d.ts.map +1 -1
- package/dist/ag-ui/adapter.js +33 -16
- package/dist/ag-ui/adapter.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-daemon.d.ts +18 -0
- package/dist/auto-ui/beam/routes/api-daemon.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-daemon.js +118 -0
- package/dist/auto-ui/beam/routes/api-daemon.js.map +1 -0
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +34 -34
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/bridge/renderers.d.ts.map +1 -1
- package/dist/auto-ui/bridge/renderers.js +371 -0
- package/dist/auto-ui/bridge/renderers.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +38 -1
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +19 -0
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam.bundle.js +757 -107
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/beam.d.ts.map +1 -1
- package/dist/cli/commands/beam.js +2 -0
- package/dist/cli/commands/beam.js.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +2 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +92 -3
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/host.d.ts.map +1 -1
- package/dist/cli/commands/host.js +9 -1
- package/dist/cli/commands/host.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +7 -3
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/maker.d.ts +8 -0
- package/dist/cli/commands/maker.d.ts.map +1 -1
- package/dist/cli/commands/maker.js +113 -46
- package/dist/cli/commands/maker.js.map +1 -1
- package/dist/cli/commands/marketplace.d.ts.map +1 -1
- package/dist/cli/commands/marketplace.js +7 -1
- package/dist/cli/commands/marketplace.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +10 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +215 -4
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +33 -15
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/ps.d.ts +16 -0
- package/dist/cli/commands/ps.d.ts.map +1 -0
- package/dist/cli/commands/ps.js +267 -0
- package/dist/cli/commands/ps.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +7 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +14 -4
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/context-store.d.ts +4 -4
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +20 -17
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +5 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +68 -14
- package/dist/context.js.map +1 -1
- package/dist/daemon/client.d.ts +60 -0
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +76 -0
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/execution-history-sqlite.d.ts +50 -0
- package/dist/daemon/execution-history-sqlite.d.ts.map +1 -0
- package/dist/daemon/execution-history-sqlite.js +165 -0
- package/dist/daemon/execution-history-sqlite.js.map +1 -0
- package/dist/daemon/execution-history.d.ts +78 -0
- package/dist/daemon/execution-history.d.ts.map +1 -0
- package/dist/daemon/execution-history.js +246 -0
- package/dist/daemon/execution-history.js.map +1 -0
- package/dist/daemon/hot-reload-state.d.ts +27 -0
- package/dist/daemon/hot-reload-state.d.ts.map +1 -0
- package/dist/daemon/hot-reload-state.js +48 -0
- package/dist/daemon/hot-reload-state.js.map +1 -0
- package/dist/daemon/protocol.d.ts +5 -1
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js +13 -0
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/registry-keys.d.ts +88 -0
- package/dist/daemon/registry-keys.d.ts.map +1 -0
- package/dist/daemon/registry-keys.js +91 -0
- package/dist/daemon/registry-keys.js.map +1 -0
- package/dist/daemon/server.js +1521 -186
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-resolver.d.ts +28 -0
- package/dist/daemon/session-resolver.d.ts.map +1 -0
- package/dist/daemon/session-resolver.js +41 -0
- package/dist/daemon/session-resolver.js.map +1 -0
- package/dist/data-migration.js +20 -9
- package/dist/data-migration.js.map +1 -1
- package/dist/loader.d.ts +22 -8
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +214 -94
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +9 -5
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/namespace-migration.d.ts.map +1 -1
- package/dist/namespace-migration.js +28 -23
- package/dist/namespace-migration.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +57 -8
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/serv/auth/auth-store.d.ts +155 -0
- package/dist/serv/auth/auth-store.d.ts.map +1 -0
- package/dist/serv/auth/auth-store.js +240 -0
- package/dist/serv/auth/auth-store.js.map +1 -0
- package/dist/serv/auth/endpoints.d.ts +113 -0
- package/dist/serv/auth/endpoints.d.ts.map +1 -0
- package/dist/serv/auth/endpoints.js +1005 -0
- package/dist/serv/auth/endpoints.js.map +1 -0
- package/dist/serv/auth/http-adapter.d.ts +60 -0
- package/dist/serv/auth/http-adapter.d.ts.map +1 -0
- package/dist/serv/auth/http-adapter.js +235 -0
- package/dist/serv/auth/http-adapter.js.map +1 -0
- package/dist/serv/auth/jwt.d.ts +92 -6
- package/dist/serv/auth/jwt.d.ts.map +1 -1
- package/dist/serv/auth/jwt.js +226 -24
- package/dist/serv/auth/jwt.js.map +1 -1
- package/dist/serv/auth/oauth-sqlite-stores.d.ts +48 -0
- package/dist/serv/auth/oauth-sqlite-stores.d.ts.map +1 -0
- package/dist/serv/auth/oauth-sqlite-stores.js +212 -0
- package/dist/serv/auth/oauth-sqlite-stores.js.map +1 -0
- package/dist/serv/auth/sqlite-stores.d.ts +85 -0
- package/dist/serv/auth/sqlite-stores.d.ts.map +1 -0
- package/dist/serv/auth/sqlite-stores.js +446 -0
- package/dist/serv/auth/sqlite-stores.js.map +1 -0
- package/dist/serv/auth/well-known.d.ts +54 -1
- package/dist/serv/auth/well-known.d.ts.map +1 -1
- package/dist/serv/auth/well-known.js +166 -17
- package/dist/serv/auth/well-known.js.map +1 -1
- package/dist/serv/index.d.ts +45 -2
- package/dist/serv/index.d.ts.map +1 -1
- package/dist/serv/index.js +65 -1
- package/dist/serv/index.js.map +1 -1
- package/dist/serv/types/index.d.ts +80 -0
- package/dist/serv/types/index.d.ts.map +1 -1
- package/dist/serv/types/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +61 -6
- package/dist/server.js.map +1 -1
- package/dist/shared/announce-context.d.ts +51 -0
- package/dist/shared/announce-context.d.ts.map +1 -0
- package/dist/shared/announce-context.js +73 -0
- package/dist/shared/announce-context.js.map +1 -0
- package/dist/shared/audit-sqlite.d.ts +63 -0
- package/dist/shared/audit-sqlite.d.ts.map +1 -0
- package/dist/shared/audit-sqlite.js +187 -0
- package/dist/shared/audit-sqlite.js.map +1 -0
- package/dist/shared/audit.d.ts +25 -3
- package/dist/shared/audit.d.ts.map +1 -1
- package/dist/shared/audit.js +97 -3
- package/dist/shared/audit.js.map +1 -1
- package/dist/shared/error-handler.d.ts +10 -1
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +17 -2
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared/security.d.ts +12 -0
- package/dist/shared/security.d.ts.map +1 -1
- package/dist/shared/security.js +80 -0
- package/dist/shared/security.js.map +1 -1
- package/dist/shared/sqlite-runtime.d.ts +46 -0
- package/dist/shared/sqlite-runtime.d.ts.map +1 -0
- package/dist/shared/sqlite-runtime.js +120 -0
- package/dist/shared/sqlite-runtime.js.map +1 -0
- package/dist/tasks/store.d.ts +1 -1
- package/dist/tasks/store.d.ts.map +1 -1
- package/dist/tasks/store.js +29 -15
- package/dist/tasks/store.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +26 -0
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +31 -0
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +3 -3
- package/dist/test-runner.js.map +1 -1
- package/dist/tsx-compiler.d.ts.map +1 -1
- package/dist/tsx-compiler.js +18 -1
- package/dist/tsx-compiler.js.map +1 -1
- package/dist/version-checker.d.ts.map +1 -1
- package/dist/version-checker.js +7 -14
- package/dist/version-checker.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +103 -1
- package/dist/version.js.map +1 -1
- package/package.json +10 -2
- package/templates/photon.template.ts +7 -13
package/README.md
CHANGED
|
@@ -72,17 +72,22 @@ One definition. Multiple surfaces.
|
|
|
72
72
|
|
|
73
73
|
### Quick Start
|
|
74
74
|
|
|
75
|
+
From zero to an MCP server connected to Claude Desktop in three commands:
|
|
76
|
+
|
|
75
77
|
```bash
|
|
76
78
|
npm install -g @portel/photon
|
|
77
|
-
photon
|
|
78
|
-
photon
|
|
79
|
+
photon new my-tool # Scaffolds ./my-tool.photon.ts in your CWD
|
|
80
|
+
photon mcp install my-tool # Registers it in Claude Desktop's config
|
|
81
|
+
# Restart Claude Desktop. Your tool is live.
|
|
79
82
|
```
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
Prefer the web dashboard? Skip step 3 and run `photon` instead — it opens Beam, the auto-generated UI.
|
|
85
|
+
|
|
86
|
+
Or try without installing globally:
|
|
82
87
|
|
|
83
88
|
```bash
|
|
84
|
-
npx @portel/photon
|
|
85
|
-
npx @portel/photon
|
|
89
|
+
npx @portel/photon new my-tool
|
|
90
|
+
npx @portel/photon mcp install my-tool
|
|
86
91
|
```
|
|
87
92
|
|
|
88
93
|
> Requires [Node.js 20+](https://nodejs.org). TypeScript is compiled internally; no `tsconfig.json` needed.
|
|
@@ -267,7 +272,10 @@ Things you don't build because Photon handles them:
|
|
|
267
272
|
| **Persistent memory** | `this.memory` gives your photon per-instance key-value storage, no database needed |
|
|
268
273
|
| **Scheduled execution** | `@scheduled` runs any method on a cron schedule |
|
|
269
274
|
| **Webhooks** | `@webhook` exposes any method as an HTTP endpoint |
|
|
270
|
-
| **OAuth** | Built-in OAuth 2.0 flows for Google, GitHub, Microsoft |
|
|
275
|
+
| **OAuth (client)** | Built-in OAuth 2.0 flows for Google, GitHub, Microsoft |
|
|
276
|
+
| **OAuth Authorization Server** | Issue tokens to MCP clients yourself: CIMD + DCR, PKCE, OIDC id_token, RFC 8693 token exchange |
|
|
277
|
+
| **SQLite persistence** | Audit log, execution history, and OAuth grants survive daemon restart (bun:sqlite or better-sqlite3) |
|
|
278
|
+
| **Daemon ops** | `photon ps` lists and controls scheduled jobs, webhooks, and live sessions |
|
|
271
279
|
| **Distributed locks** | `@locked` serializes access: one caller at a time, across processes |
|
|
272
280
|
| **Cross-photon calls** | `this.call()` invokes another photon's methods |
|
|
273
281
|
| **Real-time events** | `this.emit()` fires named events to the browser UI with zero wiring |
|
|
@@ -375,6 +383,7 @@ photon upgrade # Upgrade all
|
|
|
375
383
|
# Ops
|
|
376
384
|
photon doctor # Diagnose environment
|
|
377
385
|
photon test # Run tests
|
|
386
|
+
photon ps # Observe & control scheduled jobs, webhooks, sessions
|
|
378
387
|
```
|
|
379
388
|
|
|
380
389
|
### Install from GitHub
|
|
@@ -442,6 +451,9 @@ Uses Bun's compiler under the hood. The binary bundles the photon, its `@depende
|
|
|
442
451
|
|---|---|
|
|
443
452
|
| [Custom UI](./docs/guides/CUSTOM-UI.md) | Build rich interactive interfaces with the photon bridge API |
|
|
444
453
|
| [OAuth](./docs/guides/AUTH.md) | Built-in OAuth 2.0 with Google, GitHub, Microsoft |
|
|
454
|
+
| [MCP Client Registration](./docs/guides/mcp-client-registration.md) | Register MCP clients with Photon's AS via CIMD or DCR |
|
|
455
|
+
| [Observability](./docs/guides/observability.md) | OpenTelemetry traces, metrics, logs, and structured errors |
|
|
456
|
+
| [Protocol Features](./docs/guides/PROTOCOL-FEATURES.md) | Capability handshake, structured errors, trace correlation |
|
|
445
457
|
| [Daemon Pub/Sub](./docs/internals/DAEMON-PUBSUB.md) | Real-time cross-process messaging |
|
|
446
458
|
| [Webhooks](./docs/reference/WEBHOOKS.md) | HTTP endpoints for external services |
|
|
447
459
|
| [Locks](./docs/reference/LOCKS.md) | Distributed locks for exclusive access |
|
|
@@ -455,9 +467,8 @@ Uses Bun's compiler under the hood. The binary bundles the photon, its `@depende
|
|
|
455
467
|
| [Security](./SECURITY.md) | Best practices and audit checklist |
|
|
456
468
|
| [Marketplace Publishing](./docs/guides/MARKETPLACE-PUBLISHING.md) | Create and share team marketplaces |
|
|
457
469
|
| [Best Practices](./docs/guides/BEST-PRACTICES.md) | Patterns for production photons |
|
|
458
|
-
| [Comparison](./docs/COMPARISON.md) | Benchmarks vs official MCP implementations |
|
|
459
470
|
|
|
460
|
-
**Reference:** [Complete Developer Guide](./docs/GUIDE.md) · [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) · [Naming Conventions](./docs/guides/NAMING-CONVENTIONS.md) · [Architecture](./docs/internals/ARCHITECTURE.md) · [Changelog](./CHANGELOG.md) · [Contributing](./CONTRIBUTING.md)
|
|
471
|
+
**Reference:** [Complete Developer Guide](./docs/GUIDE.md) · [Tag Reference](./docs/reference/DOCBLOCK-TAGS.md) · [Naming Conventions](./docs/guides/NAMING-CONVENTIONS.md) · [Architecture](./docs/internals/ARCHITECTURE.md) · [OAuth Authorization Server](./docs/internals/OAUTH-AUTHORIZATION-SERVER.md) · [Lifecycle & Ingress](./docs/internals/LIFECYCLE-AND-INGRESS.md) · [PHOTON_DIR & Namespace](./docs/internals/PHOTON-DIR-AND-NAMESPACE.md) · [Changelog](./CHANGELOG.md) · [Contributing](./CONTRIBUTING.md)
|
|
461
472
|
|
|
462
473
|
---
|
|
463
474
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 Result Mapper
|
|
3
|
+
*
|
|
4
|
+
* Converts a Photon method's return value into a valid A2UI JSONL message
|
|
5
|
+
* sequence (createSurface → updateComponents → updateDataModel). Mirrors
|
|
6
|
+
* the auto-mapping heuristics used by @format table/list/card so photon
|
|
7
|
+
* authors can add `@format a2ui` without writing any UI code.
|
|
8
|
+
*
|
|
9
|
+
* Escape hatch: returning `{ __a2ui: true, components, data }` bypasses
|
|
10
|
+
* heuristics and emits the components verbatim.
|
|
11
|
+
*
|
|
12
|
+
* @see https://a2ui.org/specification/v0.9-a2ui/
|
|
13
|
+
*/
|
|
14
|
+
import { type A2UIMessage } from './types.js';
|
|
15
|
+
export interface MapperOptions {
|
|
16
|
+
surfaceId?: string;
|
|
17
|
+
theme?: {
|
|
18
|
+
primaryColor?: string;
|
|
19
|
+
iconUrl?: string;
|
|
20
|
+
agentDisplayName?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Does the given array look like a pre-serialized A2UI JSONL stream that
|
|
25
|
+
* should be forwarded verbatim instead of re-mapped? Every element must be
|
|
26
|
+
* a well-formed A2UI message (has `version` AND one of the message wrapper
|
|
27
|
+
* keys). Empty arrays are not streams — they're empty lists, and should go
|
|
28
|
+
* through the mapper so the lifecycle messages are emitted.
|
|
29
|
+
*
|
|
30
|
+
* Extracted into the mapper module so CLI, AG-UI adapter, and future
|
|
31
|
+
* transports share one classifier instead of drifting apart.
|
|
32
|
+
*/
|
|
33
|
+
export declare function looksLikeA2UIStream(arr: unknown[]): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Translate a method result into the A2UI JSONL sequence.
|
|
36
|
+
* Always returns at least three messages: createSurface, updateComponents,
|
|
37
|
+
* updateDataModel. The component list always contains exactly one `root`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resultToA2UIMessages(result: unknown, options?: MapperOptions): A2UIMessage[];
|
|
40
|
+
//# sourceMappingURL=mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/a2ui/mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAIL,KAAK,WAAW,EAGjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAKD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAoB3D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,WAAW,EAAE,CA+BhG"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 Result Mapper
|
|
3
|
+
*
|
|
4
|
+
* Converts a Photon method's return value into a valid A2UI JSONL message
|
|
5
|
+
* sequence (createSurface → updateComponents → updateDataModel). Mirrors
|
|
6
|
+
* the auto-mapping heuristics used by @format table/list/card so photon
|
|
7
|
+
* authors can add `@format a2ui` without writing any UI code.
|
|
8
|
+
*
|
|
9
|
+
* Escape hatch: returning `{ __a2ui: true, components, data }` bypasses
|
|
10
|
+
* heuristics and emits the components verbatim.
|
|
11
|
+
*
|
|
12
|
+
* @see https://a2ui.org/specification/v0.9-a2ui/
|
|
13
|
+
*/
|
|
14
|
+
import { randomUUID } from 'crypto';
|
|
15
|
+
import { A2UI_VERSION, A2UI_BASIC_CATALOG, isA2UIEscapeHatch, } from './types.js';
|
|
16
|
+
/** Wrapper keys that identify each A2UI message variant (see ./types.ts). */
|
|
17
|
+
const A2UI_MESSAGE_KEYS = ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'];
|
|
18
|
+
/**
|
|
19
|
+
* Does the given array look like a pre-serialized A2UI JSONL stream that
|
|
20
|
+
* should be forwarded verbatim instead of re-mapped? Every element must be
|
|
21
|
+
* a well-formed A2UI message (has `version` AND one of the message wrapper
|
|
22
|
+
* keys). Empty arrays are not streams — they're empty lists, and should go
|
|
23
|
+
* through the mapper so the lifecycle messages are emitted.
|
|
24
|
+
*
|
|
25
|
+
* Extracted into the mapper module so CLI, AG-UI adapter, and future
|
|
26
|
+
* transports share one classifier instead of drifting apart.
|
|
27
|
+
*/
|
|
28
|
+
export function looksLikeA2UIStream(arr) {
|
|
29
|
+
if (arr.length === 0)
|
|
30
|
+
return false;
|
|
31
|
+
return arr.every((m) => {
|
|
32
|
+
if (typeof m !== 'object' || m === null)
|
|
33
|
+
return false;
|
|
34
|
+
const rec = m;
|
|
35
|
+
if (typeof rec.version !== 'string')
|
|
36
|
+
return false;
|
|
37
|
+
// Must carry EXACTLY ONE wrapper key whose value is itself an object
|
|
38
|
+
// with the surfaceId that A2UI messages always include. This rejects
|
|
39
|
+
// row data that happens to carry both a `version` string and a key
|
|
40
|
+
// named `updateDataModel` / similar as arbitrary column values.
|
|
41
|
+
let wrapperCount = 0;
|
|
42
|
+
for (const k of A2UI_MESSAGE_KEYS) {
|
|
43
|
+
if (!(k in rec))
|
|
44
|
+
continue;
|
|
45
|
+
wrapperCount++;
|
|
46
|
+
const wrapped = rec[k];
|
|
47
|
+
if (!wrapped || typeof wrapped !== 'object' || Array.isArray(wrapped))
|
|
48
|
+
return false;
|
|
49
|
+
if (typeof wrapped.surfaceId !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return wrapperCount === 1;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Translate a method result into the A2UI JSONL sequence.
|
|
57
|
+
* Always returns at least three messages: createSurface, updateComponents,
|
|
58
|
+
* updateDataModel. The component list always contains exactly one `root`.
|
|
59
|
+
*/
|
|
60
|
+
export function resultToA2UIMessages(result, options = {}) {
|
|
61
|
+
const tree = buildTree(result);
|
|
62
|
+
// Escape-hatch overrides win over caller options when both are present —
|
|
63
|
+
// the escape hatch is the photon author's explicit intent, options are
|
|
64
|
+
// the transport's defaults.
|
|
65
|
+
const surfaceId = tree.surfaceId ?? options.surfaceId ?? `s-${randomUUID()}`;
|
|
66
|
+
const theme = tree.theme ?? options.theme;
|
|
67
|
+
const { components, data } = tree;
|
|
68
|
+
assertSingleRoot(components);
|
|
69
|
+
const messages = [
|
|
70
|
+
{
|
|
71
|
+
version: A2UI_VERSION,
|
|
72
|
+
createSurface: {
|
|
73
|
+
surfaceId,
|
|
74
|
+
catalogId: A2UI_BASIC_CATALOG,
|
|
75
|
+
...(theme ? { theme } : {}),
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
version: A2UI_VERSION,
|
|
80
|
+
updateComponents: { surfaceId, components },
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
version: A2UI_VERSION,
|
|
84
|
+
updateDataModel: { surfaceId, path: '/', value: data },
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
return messages;
|
|
88
|
+
}
|
|
89
|
+
function buildTree(result) {
|
|
90
|
+
if (isA2UIEscapeHatch(result)) {
|
|
91
|
+
return buildFromEscapeHatch(result);
|
|
92
|
+
}
|
|
93
|
+
if (result === null || result === undefined) {
|
|
94
|
+
return buildPrimitive('');
|
|
95
|
+
}
|
|
96
|
+
if (typeof result === 'string' || typeof result === 'number' || typeof result === 'boolean') {
|
|
97
|
+
return buildPrimitive(String(result));
|
|
98
|
+
}
|
|
99
|
+
if (Array.isArray(result)) {
|
|
100
|
+
return buildList(result);
|
|
101
|
+
}
|
|
102
|
+
if (isCardShaped(result)) {
|
|
103
|
+
return buildCard(result);
|
|
104
|
+
}
|
|
105
|
+
if (typeof result === 'object') {
|
|
106
|
+
return buildKeyValueColumn(result);
|
|
107
|
+
}
|
|
108
|
+
// Functions, symbols, bigints — render their type rather than risk [object Object].
|
|
109
|
+
return buildPrimitive(`<${typeof result}>`);
|
|
110
|
+
}
|
|
111
|
+
function buildFromEscapeHatch(hatch) {
|
|
112
|
+
if (!hatch.components.some((c) => c.id === 'root')) {
|
|
113
|
+
throw new Error("A2UI escape hatch must include a component with id 'root'");
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
components: hatch.components,
|
|
117
|
+
data: hatch.data ?? {},
|
|
118
|
+
surfaceId: hatch.surfaceId,
|
|
119
|
+
theme: hatch.theme,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function buildPrimitive(value) {
|
|
123
|
+
return {
|
|
124
|
+
components: [{ id: 'root', component: 'Text', text: value }],
|
|
125
|
+
data: { value },
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function buildList(rows) {
|
|
129
|
+
if (rows.length === 0) {
|
|
130
|
+
return buildPrimitive('(empty list)');
|
|
131
|
+
}
|
|
132
|
+
const firstRow = rows[0];
|
|
133
|
+
if (firstRow === null || typeof firstRow !== 'object' || Array.isArray(firstRow)) {
|
|
134
|
+
return buildPrimitiveList(rows);
|
|
135
|
+
}
|
|
136
|
+
const keys = Object.keys(firstRow);
|
|
137
|
+
const titleKey = pickTitleKey(keys);
|
|
138
|
+
const components = [
|
|
139
|
+
{
|
|
140
|
+
id: 'root',
|
|
141
|
+
component: 'List',
|
|
142
|
+
list: {
|
|
143
|
+
template: { id: 'rowCard' },
|
|
144
|
+
data: { path: '/items' },
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
id: 'rowCard',
|
|
149
|
+
component: 'Card',
|
|
150
|
+
child: 'rowText',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: 'rowText',
|
|
154
|
+
component: 'Text',
|
|
155
|
+
text: { path: titleKey },
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
return { components, data: { items: rows } };
|
|
159
|
+
}
|
|
160
|
+
function buildPrimitiveList(values) {
|
|
161
|
+
const items = values.map((v, i) => ({ label: String(v), index: i }));
|
|
162
|
+
const components = [
|
|
163
|
+
{
|
|
164
|
+
id: 'root',
|
|
165
|
+
component: 'List',
|
|
166
|
+
list: {
|
|
167
|
+
template: { id: 'rowCard' },
|
|
168
|
+
data: { path: '/items' },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
{ id: 'rowCard', component: 'Card', child: 'rowText' },
|
|
172
|
+
{ id: 'rowText', component: 'Text', text: { path: 'label' } },
|
|
173
|
+
];
|
|
174
|
+
return { components, data: { items } };
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Does this object look like a Card result? Card layout renders only
|
|
178
|
+
* `title` + optional `description` + optional `actions`; anything else
|
|
179
|
+
* would silently be dropped. Require that there are no extra "data"
|
|
180
|
+
* fields — a result like `{ title: 'prod-01', region: 'us-east', cpu: '42%' }`
|
|
181
|
+
* should go through buildKeyValueColumn instead so every field renders.
|
|
182
|
+
*/
|
|
183
|
+
const CARD_KEYS = new Set(['title', 'description', 'actions']);
|
|
184
|
+
function isCardShaped(value) {
|
|
185
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
186
|
+
return false;
|
|
187
|
+
const obj = value;
|
|
188
|
+
if (typeof obj.title !== 'string')
|
|
189
|
+
return false;
|
|
190
|
+
if (obj.actions !== undefined && !Array.isArray(obj.actions))
|
|
191
|
+
return false;
|
|
192
|
+
// Reject objects that carry fields beyond the card schema — those are
|
|
193
|
+
// data-bearing records, not cards.
|
|
194
|
+
for (const key of Object.keys(obj)) {
|
|
195
|
+
if (!CARD_KEYS.has(key))
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
function buildCard(card) {
|
|
201
|
+
const contentIds = ['cardTitle'];
|
|
202
|
+
const components = [
|
|
203
|
+
{ id: 'root', component: 'Card', child: 'cardBody' },
|
|
204
|
+
{
|
|
205
|
+
id: 'cardTitle',
|
|
206
|
+
component: 'Text',
|
|
207
|
+
text: { path: '/title' },
|
|
208
|
+
variant: 'h2',
|
|
209
|
+
},
|
|
210
|
+
];
|
|
211
|
+
if (card.description) {
|
|
212
|
+
components.push({
|
|
213
|
+
id: 'cardDesc',
|
|
214
|
+
component: 'Text',
|
|
215
|
+
text: { path: '/description' },
|
|
216
|
+
});
|
|
217
|
+
contentIds.push('cardDesc');
|
|
218
|
+
}
|
|
219
|
+
const actions = card.actions ?? [];
|
|
220
|
+
actions.forEach((action, i) => {
|
|
221
|
+
const btnId = `cardBtn${i}`;
|
|
222
|
+
components.push({
|
|
223
|
+
id: btnId,
|
|
224
|
+
component: 'Button',
|
|
225
|
+
text: action.label,
|
|
226
|
+
variant: i === 0 ? 'primary' : 'borderless',
|
|
227
|
+
action: {
|
|
228
|
+
event: { name: action.name ?? action.label },
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
contentIds.push(btnId);
|
|
232
|
+
});
|
|
233
|
+
components.push({
|
|
234
|
+
id: 'cardBody',
|
|
235
|
+
component: 'Column',
|
|
236
|
+
children: contentIds,
|
|
237
|
+
});
|
|
238
|
+
return { components, data: card };
|
|
239
|
+
}
|
|
240
|
+
function buildKeyValueColumn(obj) {
|
|
241
|
+
const keys = Object.keys(obj);
|
|
242
|
+
if (keys.length === 0) {
|
|
243
|
+
return buildPrimitive('(empty object)');
|
|
244
|
+
}
|
|
245
|
+
const childIds = [];
|
|
246
|
+
const components = [];
|
|
247
|
+
keys.forEach((key, i) => {
|
|
248
|
+
const rowId = `row${i}`;
|
|
249
|
+
// RFC 6901: encode ~ as ~0 and / as ~1 when a key is embedded in a JSON
|
|
250
|
+
// Pointer. Order matters — ~0 first would double-encode / produced by ~1.
|
|
251
|
+
const pointerKey = key.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
252
|
+
components.push({
|
|
253
|
+
id: rowId,
|
|
254
|
+
component: 'Text',
|
|
255
|
+
text: {
|
|
256
|
+
call: 'formatString',
|
|
257
|
+
args: { value: `**${key}:** \${/${pointerKey}}` },
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
childIds.push(rowId);
|
|
261
|
+
});
|
|
262
|
+
components.unshift({
|
|
263
|
+
id: 'root',
|
|
264
|
+
component: 'Column',
|
|
265
|
+
children: childIds,
|
|
266
|
+
});
|
|
267
|
+
return { components, data: obj };
|
|
268
|
+
}
|
|
269
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
270
|
+
// HELPERS
|
|
271
|
+
// ════════════════════════════════════════════════════════════════════════════════
|
|
272
|
+
function pickTitleKey(keys) {
|
|
273
|
+
const preferred = ['title', 'name', 'label', 'subject'];
|
|
274
|
+
for (const p of preferred) {
|
|
275
|
+
if (keys.includes(p))
|
|
276
|
+
return p;
|
|
277
|
+
}
|
|
278
|
+
return keys[0] ?? 'value';
|
|
279
|
+
}
|
|
280
|
+
function assertSingleRoot(components) {
|
|
281
|
+
const rootCount = components.filter((c) => c.id === 'root').length;
|
|
282
|
+
if (rootCount !== 1) {
|
|
283
|
+
throw new Error(`A2UI component tree must have exactly one 'root' component, got ${rootCount}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/a2ui/mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Zero-dependency definitions for the A2UI v0.9 Draft wire format — a
|
|
5
|
+
* declarative generative-UI protocol that rides on AG-UI transport.
|
|
6
|
+
*
|
|
7
|
+
* @see https://a2ui.org/specification/v0.9-a2ui/
|
|
8
|
+
*
|
|
9
|
+
* Scope: producer-side only. These types describe the JSON messages the
|
|
10
|
+
* Photon runtime emits, not the full renderer contract.
|
|
11
|
+
*/
|
|
12
|
+
export declare const A2UI_VERSION = "v0.9";
|
|
13
|
+
export declare const A2UI_BASIC_CATALOG = "https://a2ui.org/specification/v0_9/basic_catalog.json";
|
|
14
|
+
export interface A2UIPath {
|
|
15
|
+
path: string;
|
|
16
|
+
}
|
|
17
|
+
export interface A2UIFunctionCall {
|
|
18
|
+
call: string;
|
|
19
|
+
args?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export type DynamicString = string | A2UIPath | A2UIFunctionCall;
|
|
22
|
+
export type DynamicNumber = number | A2UIPath | A2UIFunctionCall;
|
|
23
|
+
export type DynamicBoolean = boolean | A2UIPath | A2UIFunctionCall;
|
|
24
|
+
export interface A2UIComponentBase {
|
|
25
|
+
id: string;
|
|
26
|
+
component: string;
|
|
27
|
+
}
|
|
28
|
+
export interface A2UIText extends A2UIComponentBase {
|
|
29
|
+
component: 'Text';
|
|
30
|
+
text: DynamicString;
|
|
31
|
+
variant?: 'h1' | 'h2' | 'h3' | 'body' | 'caption';
|
|
32
|
+
}
|
|
33
|
+
export interface A2UIImage extends A2UIComponentBase {
|
|
34
|
+
component: 'Image';
|
|
35
|
+
url: DynamicString;
|
|
36
|
+
alt?: DynamicString;
|
|
37
|
+
}
|
|
38
|
+
export interface A2UIDivider extends A2UIComponentBase {
|
|
39
|
+
component: 'Divider';
|
|
40
|
+
}
|
|
41
|
+
export interface A2UIRow extends A2UIComponentBase {
|
|
42
|
+
component: 'Row';
|
|
43
|
+
children: string[];
|
|
44
|
+
}
|
|
45
|
+
export interface A2UIColumn extends A2UIComponentBase {
|
|
46
|
+
component: 'Column';
|
|
47
|
+
children: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface A2UICard extends A2UIComponentBase {
|
|
50
|
+
component: 'Card';
|
|
51
|
+
child: string;
|
|
52
|
+
}
|
|
53
|
+
export interface A2UIListTemplate {
|
|
54
|
+
template: {
|
|
55
|
+
id: string;
|
|
56
|
+
};
|
|
57
|
+
data: A2UIPath;
|
|
58
|
+
}
|
|
59
|
+
export interface A2UIList extends A2UIComponentBase {
|
|
60
|
+
component: 'List';
|
|
61
|
+
list: A2UIListTemplate;
|
|
62
|
+
}
|
|
63
|
+
export interface A2UIButton extends A2UIComponentBase {
|
|
64
|
+
component: 'Button';
|
|
65
|
+
text: DynamicString;
|
|
66
|
+
variant?: 'primary' | 'borderless';
|
|
67
|
+
action?: {
|
|
68
|
+
event?: {
|
|
69
|
+
name: string;
|
|
70
|
+
context?: Record<string, unknown>;
|
|
71
|
+
};
|
|
72
|
+
functionCall?: A2UIFunctionCall;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export interface A2UITextField extends A2UIComponentBase {
|
|
76
|
+
component: 'TextField';
|
|
77
|
+
label?: DynamicString;
|
|
78
|
+
value?: A2UIPath;
|
|
79
|
+
checks?: Array<{
|
|
80
|
+
call: string;
|
|
81
|
+
args?: Record<string, unknown>;
|
|
82
|
+
message?: string;
|
|
83
|
+
}>;
|
|
84
|
+
}
|
|
85
|
+
export type A2UIComponent = A2UIText | A2UIImage | A2UIDivider | A2UIRow | A2UIColumn | A2UICard | A2UIList | A2UIButton | A2UITextField;
|
|
86
|
+
export interface CreateSurfaceMessage {
|
|
87
|
+
version: typeof A2UI_VERSION;
|
|
88
|
+
createSurface: {
|
|
89
|
+
surfaceId: string;
|
|
90
|
+
catalogId: string;
|
|
91
|
+
theme?: {
|
|
92
|
+
primaryColor?: string;
|
|
93
|
+
iconUrl?: string;
|
|
94
|
+
agentDisplayName?: string;
|
|
95
|
+
};
|
|
96
|
+
sendDataModel?: boolean;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export interface UpdateComponentsMessage {
|
|
100
|
+
version: typeof A2UI_VERSION;
|
|
101
|
+
updateComponents: {
|
|
102
|
+
surfaceId: string;
|
|
103
|
+
components: A2UIComponent[];
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export interface UpdateDataModelMessage {
|
|
107
|
+
version: typeof A2UI_VERSION;
|
|
108
|
+
updateDataModel: {
|
|
109
|
+
surfaceId: string;
|
|
110
|
+
path: string;
|
|
111
|
+
value: unknown;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export interface DeleteSurfaceMessage {
|
|
115
|
+
version: typeof A2UI_VERSION;
|
|
116
|
+
deleteSurface: {
|
|
117
|
+
surfaceId: string;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export type A2UIMessage = CreateSurfaceMessage | UpdateComponentsMessage | UpdateDataModelMessage | DeleteSurfaceMessage;
|
|
121
|
+
export interface A2UIEscapeHatch {
|
|
122
|
+
__a2ui: true;
|
|
123
|
+
components: A2UIComponent[];
|
|
124
|
+
data?: unknown;
|
|
125
|
+
surfaceId?: string;
|
|
126
|
+
theme?: CreateSurfaceMessage['createSurface']['theme'];
|
|
127
|
+
}
|
|
128
|
+
export declare function isA2UIEscapeHatch(value: unknown): value is A2UIEscapeHatch;
|
|
129
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a2ui/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Zero-dependency definitions for the A2UI v0.9 Draft wire format — a
|
|
5
|
+
* declarative generative-UI protocol that rides on AG-UI transport.
|
|
6
|
+
*
|
|
7
|
+
* @see https://a2ui.org/specification/v0.9-a2ui/
|
|
8
|
+
*
|
|
9
|
+
* Scope: producer-side only. These types describe the JSON messages the
|
|
10
|
+
* Photon runtime emits, not the full renderer contract.
|
|
11
|
+
*/
|
|
12
|
+
export const A2UI_VERSION = 'v0.9';
|
|
13
|
+
export const A2UI_BASIC_CATALOG = 'https://a2ui.org/specification/v0_9/basic_catalog.json';
|
|
14
|
+
export function isA2UIEscapeHatch(value) {
|
|
15
|
+
return (typeof value === 'object' &&
|
|
16
|
+
value !== null &&
|
|
17
|
+
value.__a2ui === true &&
|
|
18
|
+
Array.isArray(value.components));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/a2ui/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,wDAAwD,CAAC;AA2J3F,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAA8B,CAAC,MAAM,KAAK,IAAI;QAC/C,KAAK,CAAC,OAAO,CAAE,KAAkC,CAAC,UAAU,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
package/dist/ag-ui/adapter.d.ts
CHANGED
|
@@ -35,7 +35,15 @@ export declare function proxyExternalAgent(agentUrl: string, input: RunAgentInpu
|
|
|
35
35
|
* Returns { outputHandler, finish, error } — call finish() after successful
|
|
36
36
|
* execution or error() on failure to emit the terminal event.
|
|
37
37
|
*/
|
|
38
|
-
export
|
|
38
|
+
export interface AGUIOutputHandlerOptions {
|
|
39
|
+
/**
|
|
40
|
+
* When the underlying method declares `@format a2ui`, set this to 'a2ui'.
|
|
41
|
+
* The handler will map the final result into A2UI v0.9 messages and emit
|
|
42
|
+
* each as a CUSTOM event named 'a2ui.message' before the STATE_SNAPSHOT.
|
|
43
|
+
*/
|
|
44
|
+
outputFormat?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function createAGUIOutputHandler(photonName: string, toolName: string, runId: string, broadcast: BroadcastFn, options?: AGUIOutputHandlerOptions): {
|
|
39
47
|
outputHandler: (yieldValue: any) => void;
|
|
40
48
|
finish: (result?: unknown) => void;
|
|
41
49
|
error: (message: string, classification?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/ag-ui/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAiC,KAAK,aAAa,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/ag-ui/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAiC,KAAK,aAAa,EAAkB,MAAM,YAAY,CAAC;AAQ/F,KAAK,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;AA4DlD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,IAAI,CAAC,CAwFf;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,wBAA6B,GACrC;IACD,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3F,CAuQA"}
|