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.
Files changed (98) hide show
  1. package/README.md +1 -1
  2. package/dist/adaptive-burn.js +4 -4
  3. package/dist/adaptive-burn.js.map +1 -1
  4. package/dist/agent.d.ts +119 -11
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +162 -13
  7. package/dist/agent.js.map +1 -1
  8. package/dist/app.js +1 -1
  9. package/dist/app.js.map +1 -1
  10. package/dist/auth.d.ts +37 -0
  11. package/dist/auth.d.ts.map +1 -1
  12. package/dist/auth.js +11 -0
  13. package/dist/auth.js.map +1 -1
  14. package/dist/client.d.ts +81 -0
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +99 -0
  17. package/dist/client.js.map +1 -1
  18. package/dist/eip7702.d.ts +110 -0
  19. package/dist/eip7702.d.ts.map +1 -0
  20. package/dist/eip7702.js +73 -0
  21. package/dist/eip7702.js.map +1 -0
  22. package/dist/erc7683.d.ts +79 -0
  23. package/dist/erc7683.d.ts.map +1 -0
  24. package/dist/erc7683.js +82 -0
  25. package/dist/erc7683.js.map +1 -0
  26. package/dist/events.d.ts +45 -15
  27. package/dist/events.d.ts.map +1 -1
  28. package/dist/events.js +38 -8
  29. package/dist/events.js.map +1 -1
  30. package/dist/identity.d.ts +1 -1
  31. package/dist/identity.js +1 -1
  32. package/dist/index.d.ts +25 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +36 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/iroh.d.ts +104 -0
  37. package/dist/iroh.d.ts.map +1 -0
  38. package/dist/iroh.js +102 -0
  39. package/dist/iroh.js.map +1 -0
  40. package/dist/marketplace.d.ts +2 -2
  41. package/dist/marketplace.js +2 -2
  42. package/dist/memory.d.ts +78 -0
  43. package/dist/memory.d.ts.map +1 -0
  44. package/dist/memory.js +60 -0
  45. package/dist/memory.js.map +1 -0
  46. package/dist/multimodal.d.ts +294 -0
  47. package/dist/multimodal.d.ts.map +1 -0
  48. package/dist/multimodal.js +160 -0
  49. package/dist/multimodal.js.map +1 -0
  50. package/dist/passkey.d.ts +193 -0
  51. package/dist/passkey.d.ts.map +1 -0
  52. package/dist/passkey.js +481 -0
  53. package/dist/passkey.js.map +1 -0
  54. package/dist/provider.d.ts +5 -4
  55. package/dist/provider.d.ts.map +1 -1
  56. package/dist/provider.js +8 -5
  57. package/dist/provider.js.map +1 -1
  58. package/dist/seed-agent.js +7 -7
  59. package/dist/seed-agent.js.map +1 -1
  60. package/dist/settlement.d.ts +23 -6
  61. package/dist/settlement.d.ts.map +1 -1
  62. package/dist/settlement.js +30 -7
  63. package/dist/settlement.js.map +1 -1
  64. package/dist/signer.d.ts +181 -0
  65. package/dist/signer.d.ts.map +1 -0
  66. package/dist/signer.js +69 -0
  67. package/dist/signer.js.map +1 -0
  68. package/dist/sla.d.ts +95 -0
  69. package/dist/sla.d.ts.map +1 -0
  70. package/dist/sla.js +70 -0
  71. package/dist/sla.js.map +1 -0
  72. package/dist/snapshot.d.ts +122 -0
  73. package/dist/snapshot.d.ts.map +1 -0
  74. package/dist/snapshot.js +80 -0
  75. package/dist/snapshot.js.map +1 -0
  76. package/dist/staking.d.ts +5 -5
  77. package/dist/staking.d.ts.map +1 -1
  78. package/dist/staking.js +8 -6
  79. package/dist/staking.js.map +1 -1
  80. package/dist/task.d.ts +56 -22
  81. package/dist/task.d.ts.map +1 -1
  82. package/dist/task.js +65 -31
  83. package/dist/task.js.map +1 -1
  84. package/dist/token.d.ts +41 -11
  85. package/dist/token.d.ts.map +1 -1
  86. package/dist/token.js.map +1 -1
  87. package/dist/training.d.ts +108 -0
  88. package/dist/training.d.ts.map +1 -0
  89. package/dist/training.js +53 -0
  90. package/dist/training.js.map +1 -0
  91. package/dist/types.d.ts +72 -11
  92. package/dist/types.d.ts.map +1 -1
  93. package/dist/types.js.map +1 -1
  94. package/dist/validator.d.ts +76 -0
  95. package/dist/validator.d.ts.map +1 -0
  96. package/dist/validator.js +47 -0
  97. package/dist/validator.js.map +1 -0
  98. 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
@@ -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"}
@@ -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:` / `did:pdis:`
12
- * identity at registration time (immutable afterwards).
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.
@@ -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:` / `did:pdis:`
17
- * identity at registration time (immutable afterwards).
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.
@@ -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":"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"}