tenzro-sdk 0.2.0 → 0.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 +1 -1
- package/dist/adaptive-burn.js +4 -4
- package/dist/adaptive-burn.js.map +1 -1
- package/dist/agent.d.ts +119 -11
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +162 -13
- package/dist/agent.js.map +1 -1
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/auth.d.ts +37 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +11 -0
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +81 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +99 -0
- package/dist/client.js.map +1 -1
- package/dist/eip7702.d.ts +110 -0
- package/dist/eip7702.d.ts.map +1 -0
- package/dist/eip7702.js +73 -0
- package/dist/eip7702.js.map +1 -0
- package/dist/erc7683.d.ts +79 -0
- package/dist/erc7683.d.ts.map +1 -0
- package/dist/erc7683.js +82 -0
- package/dist/erc7683.js.map +1 -0
- package/dist/events.d.ts +45 -15
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +38 -8
- package/dist/events.js.map +1 -1
- package/dist/identity.d.ts +1 -1
- package/dist/identity.js +1 -1
- package/dist/index.d.ts +25 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/iroh.d.ts +104 -0
- package/dist/iroh.d.ts.map +1 -0
- package/dist/iroh.js +102 -0
- package/dist/iroh.js.map +1 -0
- package/dist/marketplace.d.ts +2 -2
- package/dist/marketplace.js +2 -2
- package/dist/memory.d.ts +78 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +60 -0
- package/dist/memory.js.map +1 -0
- package/dist/multimodal.d.ts +294 -0
- package/dist/multimodal.d.ts.map +1 -0
- package/dist/multimodal.js +160 -0
- package/dist/multimodal.js.map +1 -0
- package/dist/passkey.d.ts +193 -0
- package/dist/passkey.d.ts.map +1 -0
- package/dist/passkey.js +481 -0
- package/dist/passkey.js.map +1 -0
- package/dist/provider.d.ts +5 -4
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +8 -5
- package/dist/provider.js.map +1 -1
- package/dist/seed-agent.js +7 -7
- package/dist/seed-agent.js.map +1 -1
- package/dist/settlement.d.ts +23 -6
- package/dist/settlement.d.ts.map +1 -1
- package/dist/settlement.js +30 -7
- package/dist/settlement.js.map +1 -1
- package/dist/signer.d.ts +181 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +69 -0
- package/dist/signer.js.map +1 -0
- package/dist/sla.d.ts +95 -0
- package/dist/sla.d.ts.map +1 -0
- package/dist/sla.js +70 -0
- package/dist/sla.js.map +1 -0
- package/dist/snapshot.d.ts +122 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +80 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/staking.d.ts +5 -5
- package/dist/staking.d.ts.map +1 -1
- package/dist/staking.js +8 -6
- package/dist/staking.js.map +1 -1
- package/dist/task.d.ts +56 -22
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +65 -31
- package/dist/task.js.map +1 -1
- package/dist/token.d.ts +41 -11
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js.map +1 -1
- package/dist/training.d.ts +108 -0
- package/dist/training.d.ts.map +1 -0
- package/dist/training.js +53 -0
- package/dist/training.js.map +1 -0
- package/dist/types.d.ts +72 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validator.d.ts +76 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +47 -0
- package/dist/validator.js.map +1 -0
- package/package.json +2 -1
package/dist/iroh.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IrohClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base64 helpers — node.js + browser portable.
|
|
6
|
+
*/
|
|
7
|
+
function bytesToBase64(bytes) {
|
|
8
|
+
if (typeof Buffer !== 'undefined') {
|
|
9
|
+
return Buffer.from(bytes).toString('base64');
|
|
10
|
+
}
|
|
11
|
+
let binary = '';
|
|
12
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
13
|
+
binary += String.fromCharCode(bytes[i]);
|
|
14
|
+
}
|
|
15
|
+
// eslint-disable-next-line no-undef
|
|
16
|
+
return btoa(binary);
|
|
17
|
+
}
|
|
18
|
+
function base64ToBytes(b64) {
|
|
19
|
+
if (typeof Buffer !== 'undefined') {
|
|
20
|
+
return new Uint8Array(Buffer.from(b64, 'base64'));
|
|
21
|
+
}
|
|
22
|
+
// eslint-disable-next-line no-undef
|
|
23
|
+
const binary = atob(b64);
|
|
24
|
+
const out = new Uint8Array(binary.length);
|
|
25
|
+
for (let i = 0; i < binary.length; i++)
|
|
26
|
+
out[i] = binary.charCodeAt(i);
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Iroh consumer surface client for the `tenzro_iroh_*` JSON-RPC namespace.
|
|
31
|
+
*
|
|
32
|
+
* Wraps the shared `IrohBackedResolver` on a `tenzro-node`. The same
|
|
33
|
+
* QUIC + Pkarr + iroh-blobs substrate backs the storage DA backend,
|
|
34
|
+
* training outer-gradient distribution, confidential sealed-shard
|
|
35
|
+
* distribution, model-weight peer fetch, the agent-memory archive DA
|
|
36
|
+
* path, and A2A JSON-RPC over the `tenzro/a2a` ALPN.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const client = new TenzroClient({ endpoint: 'https://rpc.tenzro.network' });
|
|
41
|
+
* const iroh = client.iroh();
|
|
42
|
+
*
|
|
43
|
+
* const info = await iroh.getInfo();
|
|
44
|
+
* console.log('endpoint:', info.endpoint_id);
|
|
45
|
+
* console.log('alpns: ', info.alpns);
|
|
46
|
+
*
|
|
47
|
+
* const { tenzro_uri } = await iroh.publishBlob(new TextEncoder().encode('hello'));
|
|
48
|
+
* const bytes = await iroh.fetchBlob(tenzro_uri);
|
|
49
|
+
* console.log(new TextDecoder().decode(bytes)); // "hello"
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
class IrohClient {
|
|
53
|
+
rpc;
|
|
54
|
+
constructor(rpc) {
|
|
55
|
+
this.rpc = rpc;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Endpoint id, Pkarr relay, and bound ALPNs for this node.
|
|
59
|
+
*/
|
|
60
|
+
async getInfo() {
|
|
61
|
+
return this.rpc.call('tenzro_iroh_getInfo', [{}]);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Just the iroh `EndpointId` (z-base-32 + 32-byte hex).
|
|
65
|
+
*/
|
|
66
|
+
async getEndpointId() {
|
|
67
|
+
return this.rpc.call('tenzro_iroh_getEndpointId', [{}]);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ALPNs registered on the shared iroh router.
|
|
71
|
+
*/
|
|
72
|
+
async listAlpns() {
|
|
73
|
+
return this.rpc.call('tenzro_iroh_listAlpns', [{}]);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Publish raw bytes as a `tenzro://blob/<blake3-hex>` URI.
|
|
77
|
+
*/
|
|
78
|
+
async publishBlob(bytes) {
|
|
79
|
+
const bytes_b64 = bytesToBase64(bytes);
|
|
80
|
+
return this.rpc.call('tenzro_iroh_publishBlob', [
|
|
81
|
+
{ bytes_b64 },
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Fetch a `tenzro://{blob,model,gradient,shard,receipt}/...` URI to
|
|
86
|
+
* raw bytes. The dispatcher resolves the variant to the underlying
|
|
87
|
+
* iroh-blobs hash via the shared `IrohBackedResolver`.
|
|
88
|
+
*/
|
|
89
|
+
async fetchBlob(tenzroUri) {
|
|
90
|
+
const resp = await this.rpc.call('tenzro_iroh_fetchBlob', [{ tenzro_uri: tenzroUri }]);
|
|
91
|
+
return base64ToBytes(resp.bytes_b64);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Alias for {@link fetchBlob} for code that thinks of the URI as a
|
|
95
|
+
* name rather than a blob handle.
|
|
96
|
+
*/
|
|
97
|
+
async resolve(tenzroUri) {
|
|
98
|
+
return this.fetchBlob(tenzroUri);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.IrohClient = IrohClient;
|
|
102
|
+
//# sourceMappingURL=iroh.js.map
|
package/dist/iroh.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iroh.js","sourceRoot":"","sources":["../src/iroh.ts"],"names":[],"mappings":";;;AA2DA;;GAEG;AACH,SAAS,aAAa,CAAC,KAAiB;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,oCAAoC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,oCAAoC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,UAAU;IACQ;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAW,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAiB,2BAA2B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAe,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAiB;QACjC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,yBAAyB,EAAE;YACjE,EAAE,SAAS,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC9B,uBAAuB,EACvB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAC5B,CAAC;QACF,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF;AAtDD,gCAsDC"}
|
package/dist/marketplace.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export declare class MarketplaceClient {
|
|
|
8
8
|
* Register a new agent template on the marketplace.
|
|
9
9
|
*
|
|
10
10
|
* Paid-agent marketplace semantics:
|
|
11
|
-
* - `creator_did` (optional): bind the template to a `did:tenzro:`
|
|
12
|
-
*
|
|
11
|
+
* - `creator_did` (optional): bind the template to a `did:tenzro:` identity at
|
|
12
|
+
* registration time (immutable afterwards).
|
|
13
13
|
* - `creator_wallet` (**mandatory** for non-free pricing): payout wallet. Each
|
|
14
14
|
* invocation fee is split 95/5 — 5% flows to the network treasury as
|
|
15
15
|
* `AGENT_MARKETPLACE_COMMISSION_BPS`, the remainder is paid here.
|
package/dist/marketplace.js
CHANGED
|
@@ -13,8 +13,8 @@ class MarketplaceClient {
|
|
|
13
13
|
* Register a new agent template on the marketplace.
|
|
14
14
|
*
|
|
15
15
|
* Paid-agent marketplace semantics:
|
|
16
|
-
* - `creator_did` (optional): bind the template to a `did:tenzro:`
|
|
17
|
-
*
|
|
16
|
+
* - `creator_did` (optional): bind the template to a `did:tenzro:` identity at
|
|
17
|
+
* registration time (immutable afterwards).
|
|
18
18
|
* - `creator_wallet` (**mandatory** for non-free pricing): payout wallet. Each
|
|
19
19
|
* invocation fee is split 95/5 — 5% flows to the network treasury as
|
|
20
20
|
* `AGENT_MARKETPLACE_COMMISSION_BPS`, the remainder is paid here.
|
package/dist/memory.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { RpcClient } from "./rpc";
|
|
2
|
+
/** Kind of memory record. */
|
|
3
|
+
export type MemoryKind = "granted" | "recalled" | "self_noted" | "archived";
|
|
4
|
+
/** Where a memory record came from. */
|
|
5
|
+
export type MemorySource = "controller" | "tool" | "peer" | "self";
|
|
6
|
+
/** Search mode for `recall`. `hybrid` (default) merges Lance vector kNN
|
|
7
|
+
* with Tantivy BM25 via Reciprocal Rank Fusion at k=60. */
|
|
8
|
+
export type MemorySearchMode = "hybrid" | "vector" | "text";
|
|
9
|
+
/** A single record from the per-agent memory tier. */
|
|
10
|
+
export interface MemoryRecord {
|
|
11
|
+
id: string;
|
|
12
|
+
agent_did: string;
|
|
13
|
+
created_at_ms: number;
|
|
14
|
+
kind: MemoryKind;
|
|
15
|
+
source: MemorySource;
|
|
16
|
+
text: string;
|
|
17
|
+
metadata: Record<string, unknown>;
|
|
18
|
+
/** Present when the record has been offloaded to a DA backend. */
|
|
19
|
+
da_pointer?: {
|
|
20
|
+
backend: string;
|
|
21
|
+
namespace: string;
|
|
22
|
+
locator: string;
|
|
23
|
+
commitment_kzg?: string | null;
|
|
24
|
+
attestation_root?: string | null;
|
|
25
|
+
} | null;
|
|
26
|
+
}
|
|
27
|
+
export interface RecallResult {
|
|
28
|
+
count: number;
|
|
29
|
+
records: MemoryRecord[];
|
|
30
|
+
}
|
|
31
|
+
export interface ListMemoryResult {
|
|
32
|
+
count: number;
|
|
33
|
+
records: MemoryRecord[];
|
|
34
|
+
}
|
|
35
|
+
export interface MemoryGrantParams {
|
|
36
|
+
agent_did: string;
|
|
37
|
+
text: string;
|
|
38
|
+
/** Default `"granted"`. */
|
|
39
|
+
kind?: MemoryKind;
|
|
40
|
+
/** Default `"controller"`. */
|
|
41
|
+
source?: MemorySource;
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
export interface MemoryRecallParams {
|
|
45
|
+
agent_did: string;
|
|
46
|
+
query: string;
|
|
47
|
+
/** Top-k results (default 10). */
|
|
48
|
+
k?: number;
|
|
49
|
+
/** Default `"hybrid"`. */
|
|
50
|
+
mode?: MemorySearchMode;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Per-agent memory tier client — Lance vector kNN + Tantivy BM25 with
|
|
54
|
+
* Reciprocal Rank Fusion at k=60 for `hybrid` mode (the production
|
|
55
|
+
* default). Records can be archived to the node's DA backend, which
|
|
56
|
+
* replaces the on-tier row with `kind=archived` plus a `da_pointer`.
|
|
57
|
+
*
|
|
58
|
+
* Backed by the `tenzro_memory*` RPC namespace. Requires the node to
|
|
59
|
+
* have a configured embedding model — calls otherwise fail with a
|
|
60
|
+
* `NoEmbedder` error.
|
|
61
|
+
*/
|
|
62
|
+
export declare class MemoryClient {
|
|
63
|
+
private rpc;
|
|
64
|
+
constructor(rpc: RpcClient);
|
|
65
|
+
/** Persist a memory for an agent (writes to vector + text indices). */
|
|
66
|
+
grant(params: MemoryGrantParams): Promise<MemoryRecord>;
|
|
67
|
+
/** Recall up to `k` memories matching `query`. */
|
|
68
|
+
recall(params: MemoryRecallParams): Promise<RecallResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Archive a record to the DA backend — replaces the on-tier rows with
|
|
71
|
+
* `kind=archived` plus a `da_pointer`. The returned record reflects the
|
|
72
|
+
* archived state.
|
|
73
|
+
*/
|
|
74
|
+
archive(recordId: string, agentDid: string): Promise<MemoryRecord>;
|
|
75
|
+
/** List newest-first memories for an agent (default limit 50). */
|
|
76
|
+
listRecords(agentDid: string, limit?: number): Promise<ListMemoryResult>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,6BAA6B;AAC7B,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AAE5E,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE;2DAC2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kEAAkE;IAClE,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC,uEAAuE;IACjE,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAY7D,kDAAkD;IAC5C,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAW/D;;;;OAIG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMxE,kEAAkE;IAC5D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAK/E"}
|
package/dist/memory.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Per-agent memory tier client — Lance vector kNN + Tantivy BM25 with
|
|
6
|
+
* Reciprocal Rank Fusion at k=60 for `hybrid` mode (the production
|
|
7
|
+
* default). Records can be archived to the node's DA backend, which
|
|
8
|
+
* replaces the on-tier row with `kind=archived` plus a `da_pointer`.
|
|
9
|
+
*
|
|
10
|
+
* Backed by the `tenzro_memory*` RPC namespace. Requires the node to
|
|
11
|
+
* have a configured embedding model — calls otherwise fail with a
|
|
12
|
+
* `NoEmbedder` error.
|
|
13
|
+
*/
|
|
14
|
+
class MemoryClient {
|
|
15
|
+
rpc;
|
|
16
|
+
constructor(rpc) {
|
|
17
|
+
this.rpc = rpc;
|
|
18
|
+
}
|
|
19
|
+
/** Persist a memory for an agent (writes to vector + text indices). */
|
|
20
|
+
async grant(params) {
|
|
21
|
+
return this.rpc.call("tenzro_memoryGrant", [
|
|
22
|
+
{
|
|
23
|
+
agent_did: params.agent_did,
|
|
24
|
+
text: params.text,
|
|
25
|
+
kind: params.kind ?? "granted",
|
|
26
|
+
source: params.source ?? "controller",
|
|
27
|
+
metadata: params.metadata ?? {},
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
/** Recall up to `k` memories matching `query`. */
|
|
32
|
+
async recall(params) {
|
|
33
|
+
return this.rpc.call("tenzro_memoryRecall", [
|
|
34
|
+
{
|
|
35
|
+
agent_did: params.agent_did,
|
|
36
|
+
query: params.query,
|
|
37
|
+
k: params.k ?? 10,
|
|
38
|
+
mode: params.mode ?? "hybrid",
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Archive a record to the DA backend — replaces the on-tier rows with
|
|
44
|
+
* `kind=archived` plus a `da_pointer`. The returned record reflects the
|
|
45
|
+
* archived state.
|
|
46
|
+
*/
|
|
47
|
+
async archive(recordId, agentDid) {
|
|
48
|
+
return this.rpc.call("tenzro_memoryArchive", [
|
|
49
|
+
{ record_id: recordId, agent_did: agentDid },
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
/** List newest-first memories for an agent (default limit 50). */
|
|
53
|
+
async listRecords(agentDid, limit) {
|
|
54
|
+
return this.rpc.call("tenzro_listMemoryRecords", [
|
|
55
|
+
{ agent_did: agentDid, limit: limit ?? 50 },
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.MemoryClient = MemoryClient;
|
|
60
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":";;;AA4DA;;;;;;;;;GASG;AACH,MAAa,YAAY;IACH;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC,uEAAuE;IACvE,KAAK,CAAC,KAAK,CAAC,MAAyB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACzC;gBACE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;gBAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,YAAY;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,MAAM,CAAC,MAA0B;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC1C;gBACE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,QAAQ;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,QAAgB;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC3C,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,KAAc;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;YAC/C,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;CACF;AA7CD,oCA6CC"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { RpcClient } from "./rpc";
|
|
2
|
+
/** Curated forecast (timeseries) catalog entry returned by `listForecastCatalog`. */
|
|
3
|
+
export interface ForecastCatalogEntry {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
context_length: number;
|
|
7
|
+
max_horizon: number;
|
|
8
|
+
license_tier: string;
|
|
9
|
+
[k: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface LoadForecastModelParams {
|
|
12
|
+
/** Model id to register under */
|
|
13
|
+
model_id: string;
|
|
14
|
+
/** Filesystem path to the ONNX file */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Input context window length */
|
|
17
|
+
context_length: number;
|
|
18
|
+
/** Max prediction horizon */
|
|
19
|
+
max_horizon: number;
|
|
20
|
+
/** Optional ONNX output tensor name. Required for multi-output graphs
|
|
21
|
+
* such as the TimesFM 2.5 transformers export, where output[0] is
|
|
22
|
+
* `last_hidden_state` and the forecast is `full_predictions`. */
|
|
23
|
+
output_name?: string;
|
|
24
|
+
/** Optional fixed leading batch dim (default 1). TimesFM 2.5
|
|
25
|
+
* transformers ONNX requires `batch_size=2` because its decoder
|
|
26
|
+
* averages flip-invariance across the batch axis. */
|
|
27
|
+
batch_size?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ForecastParams {
|
|
30
|
+
model_id: string;
|
|
31
|
+
history: number[];
|
|
32
|
+
horizon: number;
|
|
33
|
+
quantiles?: number[];
|
|
34
|
+
frequency_seconds?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface VisionCatalogEntry {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
input_size: number;
|
|
40
|
+
embedding_dim: number;
|
|
41
|
+
normalization: string;
|
|
42
|
+
license_tier: string;
|
|
43
|
+
[k: string]: unknown;
|
|
44
|
+
}
|
|
45
|
+
export interface LoadVisionModelParams {
|
|
46
|
+
model_id: string;
|
|
47
|
+
path: string;
|
|
48
|
+
/** Pick up `input_size`/`embedding_dim`/`normalization` from the catalog */
|
|
49
|
+
catalog_id?: string;
|
|
50
|
+
/** Required if `catalog_id` is omitted */
|
|
51
|
+
input_size?: number;
|
|
52
|
+
/** Required if `catalog_id` is omitted */
|
|
53
|
+
embedding_dim?: number;
|
|
54
|
+
/** `"clip" | "imagenet" | "siglip"` (default `"clip"`) */
|
|
55
|
+
normalization?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface ImageEmbedParams {
|
|
58
|
+
model_id: string;
|
|
59
|
+
/** Base64-encoded PNG/JPEG/WebP bytes */
|
|
60
|
+
image_base64: string;
|
|
61
|
+
normalize?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface ImageEmbedResult {
|
|
64
|
+
embedding: number[];
|
|
65
|
+
dim: number;
|
|
66
|
+
[k: string]: unknown;
|
|
67
|
+
}
|
|
68
|
+
export interface ImageTextSimilarityResult {
|
|
69
|
+
similarity: number;
|
|
70
|
+
dim: number;
|
|
71
|
+
}
|
|
72
|
+
export interface TextEmbeddingCatalogEntry {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
embedding_dim: number;
|
|
76
|
+
supports_matryoshka: boolean;
|
|
77
|
+
license_tier: string;
|
|
78
|
+
[k: string]: unknown;
|
|
79
|
+
}
|
|
80
|
+
export interface TextEmbedParams {
|
|
81
|
+
model_id: string;
|
|
82
|
+
inputs: string[];
|
|
83
|
+
/** Optional Matryoshka truncation dim (Qwen3-Embedding, EmbeddingGemma) */
|
|
84
|
+
requested_dim?: number;
|
|
85
|
+
normalize?: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface SegmentationCatalogEntry {
|
|
88
|
+
id: string;
|
|
89
|
+
name: string;
|
|
90
|
+
family: string;
|
|
91
|
+
license_tier: string;
|
|
92
|
+
[k: string]: unknown;
|
|
93
|
+
}
|
|
94
|
+
/** Prompt for `segment` — one of: point, box, or padding marker. */
|
|
95
|
+
export type SegmentPrompt = {
|
|
96
|
+
kind: "point";
|
|
97
|
+
x: number;
|
|
98
|
+
y: number;
|
|
99
|
+
label: number;
|
|
100
|
+
} | {
|
|
101
|
+
kind: "box";
|
|
102
|
+
x0: number;
|
|
103
|
+
y0: number;
|
|
104
|
+
x1: number;
|
|
105
|
+
y1: number;
|
|
106
|
+
};
|
|
107
|
+
export interface SegmentParams {
|
|
108
|
+
model_id: string;
|
|
109
|
+
image_base64: string;
|
|
110
|
+
prompts: SegmentPrompt[];
|
|
111
|
+
}
|
|
112
|
+
export interface DetectionCatalogEntry {
|
|
113
|
+
id: string;
|
|
114
|
+
name: string;
|
|
115
|
+
family: string;
|
|
116
|
+
num_classes: number;
|
|
117
|
+
input_size: number;
|
|
118
|
+
license_tier: string;
|
|
119
|
+
[k: string]: unknown;
|
|
120
|
+
}
|
|
121
|
+
export interface DetectParams {
|
|
122
|
+
model_id: string;
|
|
123
|
+
image_base64: string;
|
|
124
|
+
/** Default 0.25 */
|
|
125
|
+
score_threshold?: number;
|
|
126
|
+
}
|
|
127
|
+
export interface Detection {
|
|
128
|
+
bbox: [number, number, number, number];
|
|
129
|
+
label_id: number;
|
|
130
|
+
score: number;
|
|
131
|
+
}
|
|
132
|
+
export interface AudioCatalogEntry {
|
|
133
|
+
id: string;
|
|
134
|
+
name: string;
|
|
135
|
+
family: string;
|
|
136
|
+
max_audio_seconds: number;
|
|
137
|
+
license_tier: string;
|
|
138
|
+
[k: string]: unknown;
|
|
139
|
+
}
|
|
140
|
+
export type AudioFamily = "moonshine" | "whisper";
|
|
141
|
+
export type WhisperVariant = "distil-en" | "distil-large-v3" | "large-v3-turbo";
|
|
142
|
+
export interface LoadAudioModelParams {
|
|
143
|
+
model_id: string;
|
|
144
|
+
encoder_path: string;
|
|
145
|
+
decoder_path: string;
|
|
146
|
+
tokenizer_path: string;
|
|
147
|
+
/** Pick up `family` / `max_audio_seconds` (+ inferred whisper variant) from the catalog */
|
|
148
|
+
catalog_id?: string;
|
|
149
|
+
/** Required if `catalog_id` is omitted */
|
|
150
|
+
family?: AudioFamily;
|
|
151
|
+
/** Default 30 */
|
|
152
|
+
max_audio_seconds?: number;
|
|
153
|
+
/** Required for whisper-family loads (unless `catalog_id` covers it) */
|
|
154
|
+
whisper_variant?: WhisperVariant;
|
|
155
|
+
}
|
|
156
|
+
export interface TranscribeParams {
|
|
157
|
+
model_id: string;
|
|
158
|
+
/** Base64-encoded WAV/FLAC/MP3 bytes */
|
|
159
|
+
audio_base64: string;
|
|
160
|
+
language?: string;
|
|
161
|
+
timestamps?: boolean;
|
|
162
|
+
temperature?: number;
|
|
163
|
+
}
|
|
164
|
+
export interface VideoCatalogEntry {
|
|
165
|
+
id: string;
|
|
166
|
+
name: string;
|
|
167
|
+
license_tier: string;
|
|
168
|
+
[k: string]: unknown;
|
|
169
|
+
}
|
|
170
|
+
export interface VideoEmbedParams {
|
|
171
|
+
model_id: string;
|
|
172
|
+
video_base64: string;
|
|
173
|
+
normalize?: boolean;
|
|
174
|
+
frame_stride?: number;
|
|
175
|
+
}
|
|
176
|
+
export interface LoadedModelsList {
|
|
177
|
+
models: string[];
|
|
178
|
+
}
|
|
179
|
+
export interface LoadModelResult {
|
|
180
|
+
model_id: string;
|
|
181
|
+
loaded: boolean;
|
|
182
|
+
[k: string]: unknown;
|
|
183
|
+
}
|
|
184
|
+
export interface UnloadModelResult {
|
|
185
|
+
model_id: string;
|
|
186
|
+
removed: boolean;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Multi-modal AI client — covers all 7 ONNX-backed runtimes on a Tenzro
|
|
190
|
+
* node: forecast (timeseries), vision encoders, text embeddings,
|
|
191
|
+
* segmentation, detection, audio (ASR), and video.
|
|
192
|
+
*
|
|
193
|
+
* Each modality has the same surface shape: `list{Modality}Catalog()` to
|
|
194
|
+
* browse curated models, `list{Modality}Models()` to inspect what is
|
|
195
|
+
* currently loaded, `load{Modality}Model()` to bring a model online,
|
|
196
|
+
* `unload{Modality}Model()` to drop it, and one inference verb.
|
|
197
|
+
*
|
|
198
|
+
* **Wave-1 stubs.** Four modality loaders (`loadTextEmbeddingModel`,
|
|
199
|
+
* `loadSegmentationModel`, `loadDetectionModel`, `loadVideoModel`)
|
|
200
|
+
* currently return JSON-RPC `-32004` from the node ("not yet wired in
|
|
201
|
+
* wave 1") — the surface is exposed for discovery and symmetry, but the
|
|
202
|
+
* ONNX session-loader is pending. `forecast`, `vision`, and `audio` are
|
|
203
|
+
* fully wired. Catalog + list + unload endpoints work for all seven.
|
|
204
|
+
*/
|
|
205
|
+
export declare class MultimodalClient {
|
|
206
|
+
private rpc;
|
|
207
|
+
constructor(rpc: RpcClient);
|
|
208
|
+
listForecastCatalog(): Promise<{
|
|
209
|
+
models: ForecastCatalogEntry[];
|
|
210
|
+
}>;
|
|
211
|
+
listForecastModels(): Promise<LoadedModelsList>;
|
|
212
|
+
loadForecastModel(params: LoadForecastModelParams): Promise<LoadModelResult>;
|
|
213
|
+
unloadForecastModel(modelId: string): Promise<UnloadModelResult>;
|
|
214
|
+
forecast(params: ForecastParams): Promise<unknown>;
|
|
215
|
+
listVisionCatalog(): Promise<{
|
|
216
|
+
models: VisionCatalogEntry[];
|
|
217
|
+
}>;
|
|
218
|
+
listVisionModels(): Promise<LoadedModelsList>;
|
|
219
|
+
loadVisionModel(params: LoadVisionModelParams): Promise<LoadModelResult>;
|
|
220
|
+
unloadVisionModel(modelId: string): Promise<UnloadModelResult>;
|
|
221
|
+
/** Embed a single image. Note: the node RPC is `tenzro_imageEmbed`. */
|
|
222
|
+
imageEmbed(params: ImageEmbedParams): Promise<ImageEmbedResult>;
|
|
223
|
+
/**
|
|
224
|
+
* Pure cosine similarity between two embeddings of identical dimension.
|
|
225
|
+
* Pair an image embedding from `imageEmbed` with a text-tower embedding
|
|
226
|
+
* (CLIP / SigLIP). Node RPC: `tenzro_imageTextSimilarity`.
|
|
227
|
+
*/
|
|
228
|
+
imageTextSimilarity(imageEmbedding: number[], textEmbedding: number[]): Promise<ImageTextSimilarityResult>;
|
|
229
|
+
listTextEmbeddingCatalog(): Promise<{
|
|
230
|
+
models: TextEmbeddingCatalogEntry[];
|
|
231
|
+
}>;
|
|
232
|
+
listTextEmbeddingModels(): Promise<LoadedModelsList>;
|
|
233
|
+
/** Wave-1 stub: returns JSON-RPC `-32004` from the node until ONNX
|
|
234
|
+
* loading lands. Exposed for surface symmetry. */
|
|
235
|
+
loadTextEmbeddingModel(params: {
|
|
236
|
+
model_id: string;
|
|
237
|
+
path: string;
|
|
238
|
+
tokenizer_path: string;
|
|
239
|
+
catalog_id?: string;
|
|
240
|
+
}): Promise<LoadModelResult>;
|
|
241
|
+
unloadTextEmbeddingModel(modelId: string): Promise<UnloadModelResult>;
|
|
242
|
+
textEmbed(params: TextEmbedParams): Promise<unknown>;
|
|
243
|
+
listSegmentationCatalog(): Promise<{
|
|
244
|
+
models: SegmentationCatalogEntry[];
|
|
245
|
+
}>;
|
|
246
|
+
listSegmentationModels(): Promise<LoadedModelsList>;
|
|
247
|
+
/** Wave-1 stub: returns JSON-RPC `-32004` from the node until ONNX
|
|
248
|
+
* loading lands. Exposed for surface symmetry. */
|
|
249
|
+
loadSegmentationModel(params: {
|
|
250
|
+
model_id: string;
|
|
251
|
+
encoder_path: string;
|
|
252
|
+
decoder_path: string;
|
|
253
|
+
catalog_id?: string;
|
|
254
|
+
}): Promise<LoadModelResult>;
|
|
255
|
+
unloadSegmentationModel(modelId: string): Promise<UnloadModelResult>;
|
|
256
|
+
segment(params: SegmentParams): Promise<unknown>;
|
|
257
|
+
listDetectionCatalog(): Promise<{
|
|
258
|
+
models: DetectionCatalogEntry[];
|
|
259
|
+
}>;
|
|
260
|
+
listDetectionModels(): Promise<LoadedModelsList>;
|
|
261
|
+
/** Wave-1 stub: returns JSON-RPC `-32004` from the node until ONNX
|
|
262
|
+
* loading lands. Exposed for surface symmetry. */
|
|
263
|
+
loadDetectionModel(params: {
|
|
264
|
+
model_id: string;
|
|
265
|
+
path: string;
|
|
266
|
+
catalog_id?: string;
|
|
267
|
+
}): Promise<LoadModelResult>;
|
|
268
|
+
unloadDetectionModel(modelId: string): Promise<UnloadModelResult>;
|
|
269
|
+
detect(params: DetectParams): Promise<{
|
|
270
|
+
detections: Detection[];
|
|
271
|
+
}>;
|
|
272
|
+
listAudioCatalog(): Promise<{
|
|
273
|
+
models: AudioCatalogEntry[];
|
|
274
|
+
}>;
|
|
275
|
+
listAudioModels(): Promise<LoadedModelsList>;
|
|
276
|
+
loadAudioModel(params: LoadAudioModelParams): Promise<LoadModelResult>;
|
|
277
|
+
unloadAudioModel(modelId: string): Promise<UnloadModelResult>;
|
|
278
|
+
transcribe(params: TranscribeParams): Promise<unknown>;
|
|
279
|
+
/** Wave-1 catalog is empty pending license clearance + ONNX export. */
|
|
280
|
+
listVideoCatalog(): Promise<{
|
|
281
|
+
models: VideoCatalogEntry[];
|
|
282
|
+
}>;
|
|
283
|
+
listVideoModels(): Promise<LoadedModelsList>;
|
|
284
|
+
/** Wave-1 stub: returns JSON-RPC `-32004` from the node — catalog is
|
|
285
|
+
* empty pending license clearance + ONNX export (`tools/video-export`). */
|
|
286
|
+
loadVideoModel(params: {
|
|
287
|
+
model_id: string;
|
|
288
|
+
path: string;
|
|
289
|
+
catalog_id?: string;
|
|
290
|
+
}): Promise<LoadModelResult>;
|
|
291
|
+
unloadVideoModel(modelId: string): Promise<UnloadModelResult>;
|
|
292
|
+
videoEmbed(params: VideoEmbedParams): Promise<unknown>;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=multimodal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multimodal.d.ts","sourceRoot":"","sources":["../src/multimodal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB;;qEAEiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;yDAEqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAID,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAID,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEhF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iBAAiB;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAI5B,mBAAmB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IAIlE,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI/C,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI5E,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIhE,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,iBAAiB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IAI9D,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI7C,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpE,uEAAuE;IACjE,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrE;;;;OAIG;IACG,mBAAmB,CACvB,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,yBAAyB,CAAC;IAQ/B,wBAAwB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;KAAE,CAAC;IAI5E,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI1D;sDACkD;IAC5C,sBAAsB,CAAC,MAAM,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrE,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpD,uBAAuB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;KAAE,CAAC;IAI1E,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIzD;sDACkD;IAC5C,qBAAqB,CAAC,MAAM,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhD,oBAAoB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAC;IAIpE,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAItD;sDACkD;IAC5C,kBAAkB,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IAMlE,gBAAgB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;IAI5D,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI5C,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7D,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5D,uEAAuE;IACjE,gBAAgB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;IAI5D,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIlD;+EAC2E;IACrE,cAAc,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7D,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAG7D"}
|