tenzro-sdk 0.1.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/LICENSE +201 -0
- package/README.md +107 -0
- package/dist/agent-payments.d.ts +47 -0
- package/dist/agent-payments.d.ts.map +1 -0
- package/dist/agent-payments.js +76 -0
- package/dist/agent-payments.js.map +1 -0
- package/dist/agent.d.ts +177 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +300 -0
- package/dist/agent.js.map +1 -0
- package/dist/ap2.d.ts +54 -0
- package/dist/ap2.d.ts.map +1 -0
- package/dist/ap2.js +88 -0
- package/dist/ap2.js.map +1 -0
- package/dist/app.d.ts +186 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +317 -0
- package/dist/app.js.map +1 -0
- package/dist/bridge.d.ts +64 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +93 -0
- package/dist/bridge.js.map +1 -0
- package/dist/canton.d.ts +36 -0
- package/dist/canton.d.ts.map +1 -0
- package/dist/canton.js +46 -0
- package/dist/canton.js.map +1 -0
- package/dist/circuit-breaker.d.ts +35 -0
- package/dist/circuit-breaker.d.ts.map +1 -0
- package/dist/circuit-breaker.js +53 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/client.d.ts +134 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +265 -0
- package/dist/client.js.map +1 -0
- package/dist/compliance.d.ts +83 -0
- package/dist/compliance.d.ts.map +1 -0
- package/dist/compliance.js +74 -0
- package/dist/compliance.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +24 -0
- package/dist/config.js.map +1 -0
- package/dist/contract.d.ts +68 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +59 -0
- package/dist/contract.js.map +1 -0
- package/dist/crypto.d.ts +112 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +97 -0
- package/dist/crypto.js.map +1 -0
- package/dist/custody.d.ts +114 -0
- package/dist/custody.d.ts.map +1 -0
- package/dist/custody.js +96 -0
- package/dist/custody.js.map +1 -0
- package/dist/debridge.d.ts +129 -0
- package/dist/debridge.d.ts.map +1 -0
- package/dist/debridge.js +93 -0
- package/dist/debridge.js.map +1 -0
- package/dist/erc7802.d.ts +36 -0
- package/dist/erc7802.d.ts.map +1 -0
- package/dist/erc7802.js +52 -0
- package/dist/erc7802.js.map +1 -0
- package/dist/events.d.ts +112 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +70 -0
- package/dist/events.js.map +1 -0
- package/dist/governance.d.ts +55 -0
- package/dist/governance.d.ts.map +1 -0
- package/dist/governance.js +77 -0
- package/dist/governance.js.map +1 -0
- package/dist/identity.d.ts +102 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +147 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/inference.d.ts +27 -0
- package/dist/inference.d.ts.map +1 -0
- package/dist/inference.js +43 -0
- package/dist/inference.js.map +1 -0
- package/dist/marketplace.d.ts +44 -0
- package/dist/marketplace.d.ts.map +1 -0
- package/dist/marketplace.js +74 -0
- package/dist/marketplace.js.map +1 -0
- package/dist/nanopayment.d.ts +53 -0
- package/dist/nanopayment.d.ts.map +1 -0
- package/dist/nanopayment.js +81 -0
- package/dist/nanopayment.js.map +1 -0
- package/dist/nft.d.ts +127 -0
- package/dist/nft.d.ts.map +1 -0
- package/dist/nft.js +99 -0
- package/dist/nft.js.map +1 -0
- package/dist/payment.d.ts +71 -0
- package/dist/payment.d.ts.map +1 -0
- package/dist/payment.js +105 -0
- package/dist/payment.js.map +1 -0
- package/dist/provider.d.ts +351 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +368 -0
- package/dist/provider.js.map +1 -0
- package/dist/rpc.d.ts +35 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +127 -0
- package/dist/rpc.js.map +1 -0
- package/dist/settlement.d.ts +52 -0
- package/dist/settlement.d.ts.map +1 -0
- package/dist/settlement.js +86 -0
- package/dist/settlement.js.map +1 -0
- package/dist/skill.d.ts +55 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +79 -0
- package/dist/skill.js.map +1 -0
- package/dist/staking.d.ts +42 -0
- package/dist/staking.d.ts.map +1 -0
- package/dist/staking.js +62 -0
- package/dist/staking.js.map +1 -0
- package/dist/streaming.d.ts +83 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +193 -0
- package/dist/streaming.js.map +1 -0
- package/dist/task.d.ts +46 -0
- package/dist/task.d.ts.map +1 -0
- package/dist/task.js +76 -0
- package/dist/task.js.map +1 -0
- package/dist/tee.d.ts +88 -0
- package/dist/tee.d.ts.map +1 -0
- package/dist/tee.js +62 -0
- package/dist/tee.js.map +1 -0
- package/dist/token.d.ts +165 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +80 -0
- package/dist/token.js.map +1 -0
- package/dist/tool.d.ts +55 -0
- package/dist/tool.d.ts.map +1 -0
- package/dist/tool.js +79 -0
- package/dist/tool.js.map +1 -0
- package/dist/types.d.ts +1318 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +117 -0
- package/dist/types.js.map +1 -0
- package/dist/wallet.d.ts +44 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +75 -0
- package/dist/wallet.js.map +1 -0
- package/dist/zk.d.ts +66 -0
- package/dist/zk.d.ts.map +1 -0
- package/dist/zk.js +58 -0
- package/dist/zk.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SettlementClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Client for payment settlement operations.
|
|
6
|
+
* Supports immediate settlement, escrow, and micropayment channels.
|
|
7
|
+
*/
|
|
8
|
+
class SettlementClient {
|
|
9
|
+
rpc;
|
|
10
|
+
constructor(rpc) {
|
|
11
|
+
this.rpc = rpc;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Settle a payment for AI inference or other services.
|
|
15
|
+
* @param request - Settlement request parameters
|
|
16
|
+
* @returns Settlement receipt with transaction details
|
|
17
|
+
*/
|
|
18
|
+
async settle(request) {
|
|
19
|
+
return this.rpc.call("tenzro_settle", [request]);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the status of a settlement by receipt ID.
|
|
23
|
+
* @param receiptId - The settlement receipt identifier
|
|
24
|
+
* @returns Settlement receipt or null if not found
|
|
25
|
+
*/
|
|
26
|
+
async getSettlement(receiptId) {
|
|
27
|
+
return this.rpc.call("tenzro_getSettlement", [
|
|
28
|
+
receiptId,
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create an escrow that releases payment when conditions are met.
|
|
33
|
+
* @param payee - Address receiving the payment
|
|
34
|
+
* @param amount - Amount to escrow (in smallest unit)
|
|
35
|
+
* @param asset - Asset identifier (e.g., "TNZO")
|
|
36
|
+
* @param conditions - JSON-encoded release conditions
|
|
37
|
+
* @returns Escrow ID
|
|
38
|
+
*/
|
|
39
|
+
async createEscrow(payee, amount, asset, conditions) {
|
|
40
|
+
return this.rpc.call("tenzro_createEscrow", [
|
|
41
|
+
{
|
|
42
|
+
payee,
|
|
43
|
+
amount: amount.toString(),
|
|
44
|
+
asset,
|
|
45
|
+
conditions,
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Release funds from an escrow.
|
|
51
|
+
* @param escrowId - The escrow identifier
|
|
52
|
+
* @param proof - Optional proof that conditions are met
|
|
53
|
+
* @returns Transaction hash
|
|
54
|
+
*/
|
|
55
|
+
async releaseEscrow(escrowId, proof) {
|
|
56
|
+
return this.rpc.call("tenzro_releaseEscrow", [
|
|
57
|
+
{ escrow_id: escrowId, proof },
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Open a micropayment channel for streaming payments.
|
|
62
|
+
* @param payee - Address receiving payments
|
|
63
|
+
* @param deposit - Initial deposit amount
|
|
64
|
+
* @returns Channel ID
|
|
65
|
+
*/
|
|
66
|
+
async openPaymentChannel(payee, deposit) {
|
|
67
|
+
return this.rpc.call("tenzro_openPaymentChannel", [
|
|
68
|
+
{
|
|
69
|
+
payee,
|
|
70
|
+
deposit: deposit.toString(),
|
|
71
|
+
},
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Close a micropayment channel.
|
|
76
|
+
* @param channelId - The channel identifier to close
|
|
77
|
+
* @returns Channel closure result
|
|
78
|
+
*/
|
|
79
|
+
async closePaymentChannel(channelId) {
|
|
80
|
+
return this.rpc.call("tenzro_closePaymentChannel", [
|
|
81
|
+
{ channel_id: channelId },
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.SettlementClient = SettlementClient;
|
|
86
|
+
//# sourceMappingURL=settlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settlement.js","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gBAAgB;IACP;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAA2B,sBAAsB,EAAE;YACrE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,MAAc,EACd,KAAa,EACb,UAAkB;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,qBAAqB,EAAE;YAClD;gBACE,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,KAAK;gBACL,UAAU;aACX;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAc;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,sBAAsB,EAAE;YACnD,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,2BAA2B,EAAE;YACxD;gBACE,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACjD,EAAE,UAAU,EAAE,SAAS,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AApFD,4CAoFC"}
|
package/dist/skill.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { RpcClient } from './rpc';
|
|
2
|
+
import type { SkillInfo, SkillFilter, RegisterSkillParams, UpdateSkillParams, SkillExecutionResult, SkillUsage } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Client for the Tenzro Skills Registry.
|
|
5
|
+
* Register, discover, and invoke reusable skills on the network.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SkillClient {
|
|
8
|
+
private readonly rpc;
|
|
9
|
+
constructor(rpc: RpcClient);
|
|
10
|
+
/**
|
|
11
|
+
* Register a new skill in the registry.
|
|
12
|
+
* @param params - Skill definition including name, description, version, and capabilities
|
|
13
|
+
* @returns The registered skill
|
|
14
|
+
*/
|
|
15
|
+
registerSkill(params: RegisterSkillParams): Promise<SkillInfo>;
|
|
16
|
+
/**
|
|
17
|
+
* List skills with optional filtering.
|
|
18
|
+
* @param filter - Optional filter criteria (category, capability, tag, etc.)
|
|
19
|
+
* @returns Array of matching skills
|
|
20
|
+
*/
|
|
21
|
+
listSkills(filter?: SkillFilter): Promise<SkillInfo[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Search skills by free-text query.
|
|
24
|
+
* @param query - Search query string
|
|
25
|
+
* @returns Array of matching skills ranked by relevance
|
|
26
|
+
*/
|
|
27
|
+
searchSkills(query: string): Promise<SkillInfo[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Execute a skill with the given input.
|
|
30
|
+
* @param skillId - The skill to invoke
|
|
31
|
+
* @param input - Input payload (JSON-serializable string or object)
|
|
32
|
+
* @returns Execution result with output and duration
|
|
33
|
+
*/
|
|
34
|
+
useSkill(skillId: string, input: string): Promise<SkillExecutionResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Get a skill by ID.
|
|
37
|
+
* @param skillId - The skill identifier
|
|
38
|
+
* @returns Skill information
|
|
39
|
+
*/
|
|
40
|
+
getSkill(skillId: string): Promise<SkillInfo>;
|
|
41
|
+
/**
|
|
42
|
+
* Update an existing skill (must be the creator).
|
|
43
|
+
* @param skillId - The skill to update
|
|
44
|
+
* @param params - Fields to update (partial)
|
|
45
|
+
* @returns Updated skill
|
|
46
|
+
*/
|
|
47
|
+
updateSkill(skillId: string, params: UpdateSkillParams): Promise<SkillInfo>;
|
|
48
|
+
/**
|
|
49
|
+
* Get usage statistics for a skill.
|
|
50
|
+
* @param skillId - The skill identifier
|
|
51
|
+
* @returns Usage statistics including total invocations and last used timestamp
|
|
52
|
+
*/
|
|
53
|
+
getSkillUsage(skillId: string): Promise<SkillUsage>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE3C;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIpE;;;;OAIG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI5D;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIvD;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM7E;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAInD;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAMjF;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAK1D"}
|
package/dist/skill.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkillClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Client for the Tenzro Skills Registry.
|
|
6
|
+
* Register, discover, and invoke reusable skills on the network.
|
|
7
|
+
*/
|
|
8
|
+
class SkillClient {
|
|
9
|
+
rpc;
|
|
10
|
+
constructor(rpc) {
|
|
11
|
+
this.rpc = rpc;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Register a new skill in the registry.
|
|
15
|
+
* @param params - Skill definition including name, description, version, and capabilities
|
|
16
|
+
* @returns The registered skill
|
|
17
|
+
*/
|
|
18
|
+
async registerSkill(params) {
|
|
19
|
+
return this.rpc.call('tenzro_registerSkill', [params]);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* List skills with optional filtering.
|
|
23
|
+
* @param filter - Optional filter criteria (category, capability, tag, etc.)
|
|
24
|
+
* @returns Array of matching skills
|
|
25
|
+
*/
|
|
26
|
+
async listSkills(filter) {
|
|
27
|
+
return this.rpc.call('tenzro_listSkills', [filter ?? {}]);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Search skills by free-text query.
|
|
31
|
+
* @param query - Search query string
|
|
32
|
+
* @returns Array of matching skills ranked by relevance
|
|
33
|
+
*/
|
|
34
|
+
async searchSkills(query) {
|
|
35
|
+
return this.rpc.call('tenzro_searchSkills', [{ query }]);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Execute a skill with the given input.
|
|
39
|
+
* @param skillId - The skill to invoke
|
|
40
|
+
* @param input - Input payload (JSON-serializable string or object)
|
|
41
|
+
* @returns Execution result with output and duration
|
|
42
|
+
*/
|
|
43
|
+
async useSkill(skillId, input) {
|
|
44
|
+
return this.rpc.call('tenzro_useSkill', [
|
|
45
|
+
{ skill_id: skillId, input },
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get a skill by ID.
|
|
50
|
+
* @param skillId - The skill identifier
|
|
51
|
+
* @returns Skill information
|
|
52
|
+
*/
|
|
53
|
+
async getSkill(skillId) {
|
|
54
|
+
return this.rpc.call('tenzro_getSkill', [{ skill_id: skillId }]);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Update an existing skill (must be the creator).
|
|
58
|
+
* @param skillId - The skill to update
|
|
59
|
+
* @param params - Fields to update (partial)
|
|
60
|
+
* @returns Updated skill
|
|
61
|
+
*/
|
|
62
|
+
async updateSkill(skillId, params) {
|
|
63
|
+
return this.rpc.call('tenzro_updateSkill', [
|
|
64
|
+
{ skill_id: skillId, ...params },
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get usage statistics for a skill.
|
|
69
|
+
* @param skillId - The skill identifier
|
|
70
|
+
* @returns Usage statistics including total invocations and last used timestamp
|
|
71
|
+
*/
|
|
72
|
+
async getSkillUsage(skillId) {
|
|
73
|
+
return this.rpc.call('tenzro_getSkillUsage', [
|
|
74
|
+
{ skill_id: skillId },
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.SkillClient = SkillClient;
|
|
79
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":";;;AAUA;;;GAGG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAoB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,mBAAmB,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAuB,iBAAiB,EAAE;YAC5D,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAyB;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAY,oBAAoB,EAAE;YACpD,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAa,sBAAsB,EAAE;YACvD,EAAE,QAAQ,EAAE,OAAO,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AAzED,kCAyEC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { RpcClient } from './rpc';
|
|
2
|
+
import type { StakingRole, StakeResult, UnstakeResult, StakingBalance, StakingRewards, UnbondingEntry } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Client for TNZO token staking operations.
|
|
5
|
+
* Stake as a validator, model provider, or TEE provider.
|
|
6
|
+
*/
|
|
7
|
+
export declare class StakingClient {
|
|
8
|
+
private readonly rpc;
|
|
9
|
+
constructor(rpc: RpcClient);
|
|
10
|
+
/**
|
|
11
|
+
* Stake TNZO tokens for a given role.
|
|
12
|
+
* @param amount - Amount of TNZO to stake (decimal string, e.g. "1000")
|
|
13
|
+
* @param role - Staking role: "validator", "model_provider", or "tee_provider"
|
|
14
|
+
* @returns Stake result with transaction hash and status
|
|
15
|
+
*/
|
|
16
|
+
stake(amount: string, role: StakingRole): Promise<StakeResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Unstake TNZO tokens (initiates the unbonding period).
|
|
19
|
+
* @param amount - Amount of TNZO to unstake (decimal string)
|
|
20
|
+
* @returns Unstake result with transaction hash, status, and unbonding end time
|
|
21
|
+
*/
|
|
22
|
+
unstake(amount: string): Promise<UnstakeResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the staking balance for an address.
|
|
25
|
+
* @param address - The address to query
|
|
26
|
+
* @returns Staking balance with staked and available amounts
|
|
27
|
+
*/
|
|
28
|
+
getStakingBalance(address: string): Promise<StakingBalance>;
|
|
29
|
+
/**
|
|
30
|
+
* Get pending and claimed staking rewards for an address.
|
|
31
|
+
* @param address - The address to query
|
|
32
|
+
* @returns Rewards information
|
|
33
|
+
*/
|
|
34
|
+
getRewards(address: string): Promise<StakingRewards>;
|
|
35
|
+
/**
|
|
36
|
+
* Get unbonding entries for an address.
|
|
37
|
+
* @param address - The address to query
|
|
38
|
+
* @returns Array of unbonding entries with completion times
|
|
39
|
+
*/
|
|
40
|
+
getUnbonding(address: string): Promise<UnbondingEntry[]>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=staking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../src/staking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE3C;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpE;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMjE;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAM1D;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAK/D"}
|
package/dist/staking.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StakingClient = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Client for TNZO token staking operations.
|
|
6
|
+
* Stake as a validator, model provider, or TEE provider.
|
|
7
|
+
*/
|
|
8
|
+
class StakingClient {
|
|
9
|
+
rpc;
|
|
10
|
+
constructor(rpc) {
|
|
11
|
+
this.rpc = rpc;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Stake TNZO tokens for a given role.
|
|
15
|
+
* @param amount - Amount of TNZO to stake (decimal string, e.g. "1000")
|
|
16
|
+
* @param role - Staking role: "validator", "model_provider", or "tee_provider"
|
|
17
|
+
* @returns Stake result with transaction hash and status
|
|
18
|
+
*/
|
|
19
|
+
async stake(amount, role) {
|
|
20
|
+
return this.rpc.call('tenzro_stake', [{ amount, role }]);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unstake TNZO tokens (initiates the unbonding period).
|
|
24
|
+
* @param amount - Amount of TNZO to unstake (decimal string)
|
|
25
|
+
* @returns Unstake result with transaction hash, status, and unbonding end time
|
|
26
|
+
*/
|
|
27
|
+
async unstake(amount) {
|
|
28
|
+
return this.rpc.call('tenzro_unstake', [{ amount }]);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the staking balance for an address.
|
|
32
|
+
* @param address - The address to query
|
|
33
|
+
* @returns Staking balance with staked and available amounts
|
|
34
|
+
*/
|
|
35
|
+
async getStakingBalance(address) {
|
|
36
|
+
return this.rpc.call('tenzro_getStakingBalance', [
|
|
37
|
+
{ address },
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get pending and claimed staking rewards for an address.
|
|
42
|
+
* @param address - The address to query
|
|
43
|
+
* @returns Rewards information
|
|
44
|
+
*/
|
|
45
|
+
async getRewards(address) {
|
|
46
|
+
return this.rpc.call('tenzro_getStakingRewards', [
|
|
47
|
+
{ address },
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get unbonding entries for an address.
|
|
52
|
+
* @param address - The address to query
|
|
53
|
+
* @returns Array of unbonding entries with completion times
|
|
54
|
+
*/
|
|
55
|
+
async getUnbonding(address) {
|
|
56
|
+
return this.rpc.call('tenzro_getUnbonding', [
|
|
57
|
+
{ address },
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.StakingClient = StakingClient;
|
|
62
|
+
//# sourceMappingURL=staking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.js","sourceRoot":"","sources":["../src/staking.ts"],"names":[],"mappings":";;;AAUA;;;GAGG;AACH,MAAa,aAAa;IACK;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,IAAiB;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAc,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAgB,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAiB,0BAA0B,EAAE;YAC/D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAiB,0BAA0B,EAAE;YAC/D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAmB,qBAAqB,EAAE;YAC5D,EAAE,OAAO,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;CACF;AAtDD,sCAsDC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { RpcClient } from './rpc';
|
|
2
|
+
/** Result from a streaming inference call. */
|
|
3
|
+
export interface StreamResult {
|
|
4
|
+
/** Total number of tokens generated */
|
|
5
|
+
total_tokens: number;
|
|
6
|
+
/** Complete generated output */
|
|
7
|
+
output: string;
|
|
8
|
+
}
|
|
9
|
+
/** Handle to an active event subscription. */
|
|
10
|
+
export interface SubscriptionHandle {
|
|
11
|
+
/** Subscription identifier */
|
|
12
|
+
id: string;
|
|
13
|
+
}
|
|
14
|
+
/** SSE connection handle. */
|
|
15
|
+
export interface SseConnection {
|
|
16
|
+
/** SSE endpoint URL */
|
|
17
|
+
url: string;
|
|
18
|
+
/** Abort controller for closing the connection */
|
|
19
|
+
abort: AbortController;
|
|
20
|
+
}
|
|
21
|
+
/** A real-time event from the node. */
|
|
22
|
+
export interface StreamEvent {
|
|
23
|
+
/** Event type (e.g., "block", "transaction", "settlement") */
|
|
24
|
+
type: string;
|
|
25
|
+
/** Event data */
|
|
26
|
+
data: unknown;
|
|
27
|
+
/** Event timestamp */
|
|
28
|
+
timestamp?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Client for streaming and real-time operations.
|
|
32
|
+
*
|
|
33
|
+
* Provides streaming chat inference via SSE, event subscriptions,
|
|
34
|
+
* and SSE connections to A2A/MCP servers.
|
|
35
|
+
*/
|
|
36
|
+
export declare class StreamingClient {
|
|
37
|
+
private readonly rpc;
|
|
38
|
+
private readonly endpoint;
|
|
39
|
+
private readonly apiEndpoint;
|
|
40
|
+
constructor(rpc: RpcClient);
|
|
41
|
+
/**
|
|
42
|
+
* Stream inference tokens using an async generator.
|
|
43
|
+
*
|
|
44
|
+
* @param modelId - Model identifier (e.g., "gemma4-9b")
|
|
45
|
+
* @param message - User message to send
|
|
46
|
+
* @yields Individual tokens as they are generated
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const streaming = client.streaming();
|
|
51
|
+
* for await (const token of streaming.chatStream("gemma4-9b", "Hello!")) {
|
|
52
|
+
* process.stdout.write(token);
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
chatStream(modelId: string, message: string): AsyncGenerator<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Stream inference tokens with a callback.
|
|
59
|
+
*
|
|
60
|
+
* @param modelId - Model identifier
|
|
61
|
+
* @param message - User message
|
|
62
|
+
* @param onToken - Callback invoked for each token
|
|
63
|
+
* @returns Stream result with total tokens and complete output
|
|
64
|
+
*/
|
|
65
|
+
chatStreamCallback(modelId: string, message: string, onToken: (token: string) => void): Promise<StreamResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Subscribe to real-time events from the node.
|
|
68
|
+
*
|
|
69
|
+
* @param eventTypes - Event types to subscribe to (e.g., "block", "transaction")
|
|
70
|
+
* @param onEvent - Callback invoked for each event
|
|
71
|
+
* @returns Subscription handle
|
|
72
|
+
*/
|
|
73
|
+
subscribeEvents(eventTypes: string[], onEvent: (event: StreamEvent) => void): Promise<SubscriptionHandle>;
|
|
74
|
+
/**
|
|
75
|
+
* Open an SSE connection to an A2A or MCP endpoint.
|
|
76
|
+
*
|
|
77
|
+
* @param endpoint - Full URL of the SSE endpoint
|
|
78
|
+
* @param onMessage - Callback for incoming SSE messages
|
|
79
|
+
* @returns SSE connection handle with abort controller
|
|
80
|
+
*/
|
|
81
|
+
openSseConnection(endpoint: string, onMessage?: (event: StreamEvent) => void): Promise<SseConnection>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAER,GAAG,EAAE,SAAS;IAY3C;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAoD3E;;;;;;;OAOG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC;IAaxB;;;;;;OAMG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACpC,OAAO,CAAC,kBAAkB,CAAC;IA0B9B;;;;;;OAMG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC;CAwC1B"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamingClient = void 0;
|
|
4
|
+
// ── Client ──
|
|
5
|
+
/**
|
|
6
|
+
* Client for streaming and real-time operations.
|
|
7
|
+
*
|
|
8
|
+
* Provides streaming chat inference via SSE, event subscriptions,
|
|
9
|
+
* and SSE connections to A2A/MCP servers.
|
|
10
|
+
*/
|
|
11
|
+
class StreamingClient {
|
|
12
|
+
rpc;
|
|
13
|
+
endpoint;
|
|
14
|
+
apiEndpoint;
|
|
15
|
+
constructor(rpc) {
|
|
16
|
+
this.rpc = rpc;
|
|
17
|
+
this.endpoint = rpc.getEndpoint();
|
|
18
|
+
const ep = this.endpoint;
|
|
19
|
+
if (ep.includes('rpc.tenzro.network')) {
|
|
20
|
+
this.apiEndpoint = ep.replace('rpc.tenzro.network', 'api.tenzro.network');
|
|
21
|
+
}
|
|
22
|
+
else if (ep.includes('localhost:8545') || ep.includes('127.0.0.1:8545')) {
|
|
23
|
+
this.apiEndpoint = ep.replace('8545', '8080');
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.apiEndpoint = ep;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Stream inference tokens using an async generator.
|
|
31
|
+
*
|
|
32
|
+
* @param modelId - Model identifier (e.g., "gemma4-9b")
|
|
33
|
+
* @param message - User message to send
|
|
34
|
+
* @yields Individual tokens as they are generated
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const streaming = client.streaming();
|
|
39
|
+
* for await (const token of streaming.chatStream("gemma4-9b", "Hello!")) {
|
|
40
|
+
* process.stdout.write(token);
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
async *chatStream(modelId, message) {
|
|
45
|
+
const url = `${this.apiEndpoint.replace(/\/$/, '')}/api/chat`;
|
|
46
|
+
const body = {
|
|
47
|
+
model: modelId,
|
|
48
|
+
messages: [{ role: 'user', content: message }],
|
|
49
|
+
stream: true,
|
|
50
|
+
};
|
|
51
|
+
const response = await fetch(url, {
|
|
52
|
+
method: 'POST',
|
|
53
|
+
headers: { 'Content-Type': 'application/json' },
|
|
54
|
+
body: JSON.stringify(body),
|
|
55
|
+
});
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
throw new Error(`Streaming request failed: HTTP ${response.status}`);
|
|
58
|
+
}
|
|
59
|
+
if (!response.body) {
|
|
60
|
+
throw new Error('Response body is null — streaming not supported');
|
|
61
|
+
}
|
|
62
|
+
const reader = response.body.getReader();
|
|
63
|
+
const decoder = new TextDecoder();
|
|
64
|
+
try {
|
|
65
|
+
while (true) {
|
|
66
|
+
const { done, value } = await reader.read();
|
|
67
|
+
if (done)
|
|
68
|
+
break;
|
|
69
|
+
const text = decoder.decode(value, { stream: true });
|
|
70
|
+
for (const line of text.split('\n')) {
|
|
71
|
+
if (!line.startsWith('data: '))
|
|
72
|
+
continue;
|
|
73
|
+
const data = line.slice(6);
|
|
74
|
+
if (data === '[DONE]')
|
|
75
|
+
return;
|
|
76
|
+
try {
|
|
77
|
+
const parsed = JSON.parse(data);
|
|
78
|
+
const content = parsed?.choices?.[0]?.delta?.content;
|
|
79
|
+
if (typeof content === 'string' && content.length > 0) {
|
|
80
|
+
yield content;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Skip non-JSON lines
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
reader.releaseLock();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stream inference tokens with a callback.
|
|
95
|
+
*
|
|
96
|
+
* @param modelId - Model identifier
|
|
97
|
+
* @param message - User message
|
|
98
|
+
* @param onToken - Callback invoked for each token
|
|
99
|
+
* @returns Stream result with total tokens and complete output
|
|
100
|
+
*/
|
|
101
|
+
async chatStreamCallback(modelId, message, onToken) {
|
|
102
|
+
let totalTokens = 0;
|
|
103
|
+
let output = '';
|
|
104
|
+
for await (const token of this.chatStream(modelId, message)) {
|
|
105
|
+
totalTokens++;
|
|
106
|
+
output += token;
|
|
107
|
+
onToken(token);
|
|
108
|
+
}
|
|
109
|
+
return { total_tokens: totalTokens, output };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Subscribe to real-time events from the node.
|
|
113
|
+
*
|
|
114
|
+
* @param eventTypes - Event types to subscribe to (e.g., "block", "transaction")
|
|
115
|
+
* @param onEvent - Callback invoked for each event
|
|
116
|
+
* @returns Subscription handle
|
|
117
|
+
*/
|
|
118
|
+
async subscribeEvents(eventTypes, onEvent) {
|
|
119
|
+
const subscriptionId = await this.rpc.call('tenzro_subscribe', [
|
|
120
|
+
{ event_types: eventTypes },
|
|
121
|
+
]);
|
|
122
|
+
// Poll for events in the background
|
|
123
|
+
const poll = async () => {
|
|
124
|
+
try {
|
|
125
|
+
while (true) {
|
|
126
|
+
const events = await this.rpc.call('tenzro_pollEvents', [
|
|
127
|
+
{ subscription_id: subscriptionId },
|
|
128
|
+
]);
|
|
129
|
+
for (const event of events) {
|
|
130
|
+
onEvent(event);
|
|
131
|
+
}
|
|
132
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Subscription ended
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
poll(); // Fire and forget
|
|
140
|
+
return { id: subscriptionId };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Open an SSE connection to an A2A or MCP endpoint.
|
|
144
|
+
*
|
|
145
|
+
* @param endpoint - Full URL of the SSE endpoint
|
|
146
|
+
* @param onMessage - Callback for incoming SSE messages
|
|
147
|
+
* @returns SSE connection handle with abort controller
|
|
148
|
+
*/
|
|
149
|
+
async openSseConnection(endpoint, onMessage) {
|
|
150
|
+
const abort = new AbortController();
|
|
151
|
+
if (onMessage) {
|
|
152
|
+
// Start reading SSE in the background
|
|
153
|
+
fetch(endpoint, {
|
|
154
|
+
headers: { Accept: 'text/event-stream' },
|
|
155
|
+
signal: abort.signal,
|
|
156
|
+
})
|
|
157
|
+
.then(async (response) => {
|
|
158
|
+
if (!response.ok || !response.body)
|
|
159
|
+
return;
|
|
160
|
+
const reader = response.body.getReader();
|
|
161
|
+
const decoder = new TextDecoder();
|
|
162
|
+
try {
|
|
163
|
+
while (true) {
|
|
164
|
+
const { done, value } = await reader.read();
|
|
165
|
+
if (done)
|
|
166
|
+
break;
|
|
167
|
+
const text = decoder.decode(value, { stream: true });
|
|
168
|
+
for (const line of text.split('\n')) {
|
|
169
|
+
if (!line.startsWith('data: '))
|
|
170
|
+
continue;
|
|
171
|
+
try {
|
|
172
|
+
const parsed = JSON.parse(line.slice(6));
|
|
173
|
+
onMessage(parsed);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Skip non-JSON
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
reader.releaseLock();
|
|
183
|
+
}
|
|
184
|
+
})
|
|
185
|
+
.catch(() => {
|
|
186
|
+
// Connection closed
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return { url: endpoint, abort };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.StreamingClient = StreamingClient;
|
|
193
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
|