@absol-labs/agent 0.9.0 → 0.10.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 +77 -3
- package/dist/cli/amounts.d.ts +26 -0
- package/dist/cli/amounts.d.ts.map +1 -0
- package/dist/cli/amounts.js +71 -0
- package/dist/cli/amounts.js.map +1 -0
- package/dist/cli/args.d.ts +32 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +119 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/attesters.d.ts +51 -0
- package/dist/cli/attesters.d.ts.map +1 -0
- package/dist/cli/attesters.js +58 -0
- package/dist/cli/attesters.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +5 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +13 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +86 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/close.d.ts +3 -0
- package/dist/cli/commands/close.d.ts.map +1 -0
- package/dist/cli/commands/close.js +43 -0
- package/dist/cli/commands/close.js.map +1 -0
- package/dist/cli/commands/discover.d.ts +3 -0
- package/dist/cli/commands/discover.d.ts.map +1 -0
- package/dist/cli/commands/discover.js +183 -0
- package/dist/cli/commands/discover.js.map +1 -0
- package/dist/cli/commands/invoke.d.ts +3 -0
- package/dist/cli/commands/invoke.d.ts.map +1 -0
- package/dist/cli/commands/invoke.js +141 -0
- package/dist/cli/commands/invoke.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +113 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/open.d.ts +3 -0
- package/dist/cli/commands/open.d.ts.map +1 -0
- package/dist/cli/commands/open.js +279 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/reclaim-unverified.d.ts +3 -0
- package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -0
- package/dist/cli/commands/reclaim-unverified.js +164 -0
- package/dist/cli/commands/reclaim-unverified.js.map +1 -0
- package/dist/cli/commands/reclaim.d.ts +33 -0
- package/dist/cli/commands/reclaim.d.ts.map +1 -0
- package/dist/cli/commands/reclaim.js +297 -0
- package/dist/cli/commands/reclaim.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +43 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/streams.d.ts +3 -0
- package/dist/cli/commands/streams.d.ts.map +1 -0
- package/dist/cli/commands/streams.js +257 -0
- package/dist/cli/commands/streams.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +55 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/config.d.ts +61 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +140 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/context.d.ts +29 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +2 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/deps.d.ts +145 -0
- package/dist/cli/deps.d.ts.map +1 -0
- package/dist/cli/deps.js +227 -0
- package/dist/cli/deps.js.map +1 -0
- package/dist/cli/descriptor.d.ts +61 -0
- package/dist/cli/descriptor.d.ts.map +1 -0
- package/dist/cli/descriptor.js +78 -0
- package/dist/cli/descriptor.js.map +1 -0
- package/dist/cli/errors.d.ts +48 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +129 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/escape-hatch.d.ts +50 -0
- package/dist/cli/escape-hatch.d.ts.map +1 -0
- package/dist/cli/escape-hatch.js +45 -0
- package/dist/cli/escape-hatch.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/listings.d.ts +15 -0
- package/dist/cli/listings.d.ts.map +1 -0
- package/dist/cli/listings.js +56 -0
- package/dist/cli/listings.js.map +1 -0
- package/dist/cli/mandate.d.ts +66 -0
- package/dist/cli/mandate.d.ts.map +1 -0
- package/dist/cli/mandate.js +61 -0
- package/dist/cli/mandate.js.map +1 -0
- package/dist/cli/output.d.ts +33 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +34 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/preflight.d.ts +38 -0
- package/dist/cli/preflight.d.ts.map +1 -0
- package/dist/cli/preflight.js +72 -0
- package/dist/cli/preflight.js.map +1 -0
- package/dist/cli/progress.d.ts +36 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +40 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/run.d.ts +25 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +173 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/scan-range.d.ts +55 -0
- package/dist/cli/scan-range.d.ts.map +1 -0
- package/dist/cli/scan-range.js +57 -0
- package/dist/cli/scan-range.js.map +1 -0
- package/dist/cli/status.d.ts +90 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +252 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/timeout.d.ts +30 -0
- package/dist/cli/timeout.d.ts.map +1 -0
- package/dist/cli/timeout.js +55 -0
- package/dist/cli/timeout.js.map +1 -0
- package/dist/cli/version.d.ts +12 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +22 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli/wallet.d.ts +95 -0
- package/dist/cli/wallet.d.ts.map +1 -0
- package/dist/cli/wallet.js +169 -0
- package/dist/cli/wallet.js.map +1 -0
- package/dist/frameworks/agentkit.d.ts.map +1 -1
- package/dist/frameworks/agentkit.js +8 -4
- package/dist/frameworks/agentkit.js.map +1 -1
- package/dist/frameworks/crewai.d.ts +10 -0
- package/dist/frameworks/crewai.d.ts.map +1 -1
- package/dist/frameworks/crewai.js +12 -2
- package/dist/frameworks/crewai.js.map +1 -1
- package/dist/frameworks/eliza.d.ts.map +1 -1
- package/dist/frameworks/eliza.js +14 -3
- package/dist/frameworks/eliza.js.map +1 -1
- package/dist/frameworks/langchain.d.ts.map +1 -1
- package/dist/frameworks/langchain.js +14 -3
- package/dist/frameworks/langchain.js.map +1 -1
- package/dist/gateway/server-entry.d.ts +1 -0
- package/dist/gateway/server-entry.js +1 -0
- package/dist/gateway/server-entry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-server.d.ts +1 -0
- package/dist/mcp/http-server.js +1 -0
- package/dist/mcp/http-server.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +46 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/stdio.d.ts +1 -0
- package/dist/mcp/stdio.js +1 -0
- package/dist/mcp/stdio.js.map +1 -1
- package/dist/sdk/client.d.ts +44 -3
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +38 -3
- package/dist/sdk/client.js.map +1 -1
- package/docs/agent-layer.md +2 -1
- package/docs/cli.md +569 -0
- package/docs/crewai.md +6 -2
- package/docs/eliza.md +6 -1
- package/docs/mcp-hosted.md +3 -2
- package/docs/quickstart.md +18 -5
- package/package.json +17 -5
- package/src/cli/amounts.ts +102 -0
- package/src/cli/args.ts +150 -0
- package/src/cli/attesters.ts +86 -0
- package/src/cli/bin.ts +5 -0
- package/src/cli/commands/claim.ts +100 -0
- package/src/cli/commands/close.ts +53 -0
- package/src/cli/commands/discover.ts +228 -0
- package/src/cli/commands/invoke.ts +177 -0
- package/src/cli/commands/mcp.ts +135 -0
- package/src/cli/commands/open.ts +331 -0
- package/src/cli/commands/reclaim-unverified.ts +206 -0
- package/src/cli/commands/reclaim.ts +360 -0
- package/src/cli/commands/status.ts +56 -0
- package/src/cli/commands/streams.ts +344 -0
- package/src/cli/commands/watch.ts +70 -0
- package/src/cli/config.ts +208 -0
- package/src/cli/context.ts +30 -0
- package/src/cli/deps.ts +437 -0
- package/src/cli/descriptor.ts +133 -0
- package/src/cli/errors.ts +162 -0
- package/src/cli/escape-hatch.ts +92 -0
- package/src/cli/index.ts +27 -0
- package/src/cli/listings.ts +77 -0
- package/src/cli/mandate.ts +126 -0
- package/src/cli/output.ts +63 -0
- package/src/cli/preflight.ts +88 -0
- package/src/cli/progress.ts +75 -0
- package/src/cli/run.ts +209 -0
- package/src/cli/scan-range.ts +76 -0
- package/src/cli/status.ts +381 -0
- package/src/cli/timeout.ts +64 -0
- package/src/cli/version.ts +21 -0
- package/src/cli/wallet.ts +241 -0
- package/src/frameworks/agentkit.ts +8 -3
- package/src/frameworks/crewai.ts +13 -2
- package/src/frameworks/eliza.ts +14 -3
- package/src/frameworks/langchain.ts +14 -3
- package/src/gateway/server-entry.ts +1 -0
- package/src/index.ts +2 -0
- package/src/mcp/http-server.ts +1 -0
- package/src/mcp/server.ts +51 -6
- package/src/mcp/stdio.ts +1 -0
- package/src/sdk/client.ts +71 -4
package/dist/sdk/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StreamProofClient, type HireComputeResult, type StreamProofClientConfig, type StreamProofStream } from "@absol-labs/sdk";
|
|
1
|
+
import { StreamProofClient, type HireComputeResult, type StreamProofClientConfig, type StreamProofStream, type StreamV2 } from "@absol-labs/sdk";
|
|
2
2
|
import { type MandateDecision, type SignedSpendMandate } from "../mandates/mandate.js";
|
|
3
3
|
export interface OpenVerifiedStreamInput {
|
|
4
4
|
readonly operator: `0x${string}`;
|
|
@@ -11,8 +11,17 @@ export interface OpenVerifiedStreamInput {
|
|
|
11
11
|
readonly nowSeconds: number;
|
|
12
12
|
readonly revokedMandateIds?: Iterable<`0x${string}`>;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* A stream as read from the configured escrow. Checkpoint escrows (V2) and the
|
|
16
|
+
* legacy per-attestation escrow (V1) expose incompatible tuples, so the view
|
|
17
|
+
* carries whichever one the client is pointed at. Narrow with
|
|
18
|
+
* {@link isCheckpointStream} before touching version-specific fields.
|
|
19
|
+
*/
|
|
20
|
+
export type StreamStatusStream = StreamProofStream | StreamV2;
|
|
21
|
+
/** True when the stream came from a checkpoint-settled (V2) escrow. */
|
|
22
|
+
export declare function isCheckpointStream(stream: StreamStatusStream): stream is StreamV2;
|
|
14
23
|
export interface StreamStatusView {
|
|
15
|
-
readonly stream:
|
|
24
|
+
readonly stream: StreamStatusStream;
|
|
16
25
|
readonly claimable: bigint;
|
|
17
26
|
readonly reclaimable: bigint;
|
|
18
27
|
}
|
|
@@ -42,11 +51,20 @@ export interface AgentSdkClient {
|
|
|
42
51
|
readonly maxDurationSeconds: number;
|
|
43
52
|
}): Promise<HireComputeResult>;
|
|
44
53
|
getStream(streamId: `0x${string}`): Promise<StreamProofStream>;
|
|
54
|
+
getStreamV2(streamId: `0x${string}`): Promise<StreamV2>;
|
|
45
55
|
claimable(streamId: `0x${string}`): Promise<bigint>;
|
|
46
56
|
reclaimable(streamId: `0x${string}`): Promise<bigint>;
|
|
47
57
|
claim(streamId: `0x${string}`): Promise<StreamProofTransactionResult>;
|
|
48
58
|
close(streamId: `0x${string}`): Promise<StreamProofTransactionResult>;
|
|
49
59
|
reclaim(streamId: `0x${string}`): Promise<StreamProofTransactionResult>;
|
|
60
|
+
/**
|
|
61
|
+
* The BUYER's no-proof escape hatch. Every other buyer path to the money
|
|
62
|
+
* (`reclaim` -> `reclaimWithProof`) needs a Merkle proof fetched from the
|
|
63
|
+
* oracle, so it is only as available as the oracle is. `reclaimUnverified`
|
|
64
|
+
* takes no proof, no quorum and no guardian — it is the path that exists
|
|
65
|
+
* precisely for the case where that dependency has failed.
|
|
66
|
+
*/
|
|
67
|
+
reclaimUnverified(streamId: `0x${string}`): Promise<StreamProofTransactionResult>;
|
|
50
68
|
}
|
|
51
69
|
export type AgentSdkClientFactory = (config: StreamProofClientConfig) => AgentSdkClient;
|
|
52
70
|
export interface VerifiedStreamAgentOpener {
|
|
@@ -58,16 +76,39 @@ export declare class MandateDeniedError extends Error {
|
|
|
58
76
|
}
|
|
59
77
|
export declare class VerifiedStreamAgentClient implements VerifiedStreamAgentOpener {
|
|
60
78
|
private readonly sdkClient;
|
|
79
|
+
/**
|
|
80
|
+
* Whether the configured escrow is checkpoint-settled. Set once from config:
|
|
81
|
+
* the SDK throws rather than guessing if the wrong decoder is used, so this
|
|
82
|
+
* has to be decided here instead of discovered by trial.
|
|
83
|
+
*/
|
|
84
|
+
private readonly checkpointSettled;
|
|
61
85
|
constructor(config: StreamProofClientConfig, options?: {
|
|
62
86
|
readonly createSdkClient?: AgentSdkClientFactory;
|
|
63
87
|
});
|
|
88
|
+
private readStream;
|
|
64
89
|
openVerifiedStream(input: OpenVerifiedStreamInput): Promise<HireComputeResult>;
|
|
65
90
|
getStreamStatus(streamId: `0x${string}`): Promise<StreamStatusView>;
|
|
66
91
|
claimStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
67
92
|
closeStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
68
93
|
reclaimStream(input: ReclaimAuthorizedStreamInput): Promise<ReclaimVerifiedStreamResult>;
|
|
69
94
|
/**
|
|
70
|
-
*
|
|
95
|
+
* Buyer-only escape hatch: reclaim WITHOUT a checkpoint proof, available only
|
|
96
|
+
* once `block.timestamp >= expiresAt + escapeGraceSeconds` on the escrow.
|
|
97
|
+
*
|
|
98
|
+
* Authorized exactly like `close` / `reclaim` — on the mandate owner's
|
|
99
|
+
* signature alone (see {@link authorizeBuyerRecovery}) — because it only
|
|
100
|
+
* returns the buyer's own unspent escrow. It is a SEPARATE method rather than
|
|
101
|
+
* an option on {@link reclaimStream} because it is not an alternative route to
|
|
102
|
+
* the same outcome: `reclaimUnverified` pays the buyer
|
|
103
|
+
* `deposit - claimedCumulative` and permanently forfeits every operator
|
|
104
|
+
* voucher that was earned but not yet redeemed on-chain.
|
|
105
|
+
*
|
|
106
|
+
* Takes no `closeFirst`: the escrow gates this path on `expiresAt`, never on
|
|
107
|
+
* `closedAt`, so closing first would buy nothing but a second gas fee.
|
|
108
|
+
*/
|
|
109
|
+
reclaimUnverifiedStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
110
|
+
/**
|
|
111
|
+
* Authorizes a BUYER-RECOVERY action (close / reclaim / reclaimUnverified). These only return
|
|
71
112
|
* unspent funds to the buyer or stop payment, so they are authorized on
|
|
72
113
|
* mandate-owner signature ALONE — never gated by expiry, revocation, or caps,
|
|
73
114
|
* which would otherwise let a lapsed mandate strand the buyer's own funds.
|
package/dist/sdk/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/client.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { StreamProofClient, } from "@absol-labs/sdk";
|
|
2
2
|
import { checkMandate, verifyMandateOwnerSignature, } from "../mandates/mandate.js";
|
|
3
|
+
/** True when the stream came from a checkpoint-settled (V2) escrow. */
|
|
4
|
+
export function isCheckpointStream(stream) {
|
|
5
|
+
return "settledCumulative" in stream;
|
|
6
|
+
}
|
|
3
7
|
export class MandateDeniedError extends Error {
|
|
4
8
|
reason;
|
|
5
9
|
constructor(reason) {
|
|
@@ -10,8 +14,20 @@ export class MandateDeniedError extends Error {
|
|
|
10
14
|
}
|
|
11
15
|
export class VerifiedStreamAgentClient {
|
|
12
16
|
sdkClient;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the configured escrow is checkpoint-settled. Set once from config:
|
|
19
|
+
* the SDK throws rather than guessing if the wrong decoder is used, so this
|
|
20
|
+
* has to be decided here instead of discovered by trial.
|
|
21
|
+
*/
|
|
22
|
+
checkpointSettled;
|
|
13
23
|
constructor(config, options = {}) {
|
|
14
24
|
this.sdkClient = (options.createSdkClient ?? defaultSdkClientFactory)(config);
|
|
25
|
+
this.checkpointSettled = config.escrowV2 !== undefined;
|
|
26
|
+
}
|
|
27
|
+
async readStream(streamId) {
|
|
28
|
+
return this.checkpointSettled
|
|
29
|
+
? await this.sdkClient.getStreamV2(streamId)
|
|
30
|
+
: await this.sdkClient.getStream(streamId);
|
|
15
31
|
}
|
|
16
32
|
async openVerifiedStream(input) {
|
|
17
33
|
const decision = await checkMandate(input.signedMandate, toHireRequest(input), input.spentSoFarUsdc, {
|
|
@@ -33,7 +49,7 @@ export class VerifiedStreamAgentClient {
|
|
|
33
49
|
}
|
|
34
50
|
async getStreamStatus(streamId) {
|
|
35
51
|
const [stream, claimable, reclaimable] = await Promise.all([
|
|
36
|
-
this.
|
|
52
|
+
this.readStream(streamId),
|
|
37
53
|
this.sdkClient.claimable(streamId),
|
|
38
54
|
this.sdkClient.reclaimable(streamId),
|
|
39
55
|
]);
|
|
@@ -56,7 +72,26 @@ export class VerifiedStreamAgentClient {
|
|
|
56
72
|
return { closeResult, reclaimResult };
|
|
57
73
|
}
|
|
58
74
|
/**
|
|
59
|
-
*
|
|
75
|
+
* Buyer-only escape hatch: reclaim WITHOUT a checkpoint proof, available only
|
|
76
|
+
* once `block.timestamp >= expiresAt + escapeGraceSeconds` on the escrow.
|
|
77
|
+
*
|
|
78
|
+
* Authorized exactly like `close` / `reclaim` — on the mandate owner's
|
|
79
|
+
* signature alone (see {@link authorizeBuyerRecovery}) — because it only
|
|
80
|
+
* returns the buyer's own unspent escrow. It is a SEPARATE method rather than
|
|
81
|
+
* an option on {@link reclaimStream} because it is not an alternative route to
|
|
82
|
+
* the same outcome: `reclaimUnverified` pays the buyer
|
|
83
|
+
* `deposit - claimedCumulative` and permanently forfeits every operator
|
|
84
|
+
* voucher that was earned but not yet redeemed on-chain.
|
|
85
|
+
*
|
|
86
|
+
* Takes no `closeFirst`: the escrow gates this path on `expiresAt`, never on
|
|
87
|
+
* `closedAt`, so closing first would buy nothing but a second gas fee.
|
|
88
|
+
*/
|
|
89
|
+
async reclaimUnverifiedStream(input) {
|
|
90
|
+
await this.authorizeBuyerRecovery(input);
|
|
91
|
+
return await this.sdkClient.reclaimUnverified(input.streamId);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Authorizes a BUYER-RECOVERY action (close / reclaim / reclaimUnverified). These only return
|
|
60
95
|
* unspent funds to the buyer or stop payment, so they are authorized on
|
|
61
96
|
* mandate-owner signature ALONE — never gated by expiry, revocation, or caps,
|
|
62
97
|
* which would otherwise let a lapsed mandate strand the buyer's own funds.
|
|
@@ -68,7 +103,7 @@ export class VerifiedStreamAgentClient {
|
|
|
68
103
|
}
|
|
69
104
|
}
|
|
70
105
|
async authorizeExistingStreamAction(input) {
|
|
71
|
-
const stream = await this.
|
|
106
|
+
const stream = await this.readStream(input.streamId);
|
|
72
107
|
const decision = await checkMandate(input.signedMandate, {
|
|
73
108
|
operator: stream.operator,
|
|
74
109
|
budgetUsdc: 0n,
|
package/dist/sdk/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAKlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,2BAA2B,GAI5B,MAAM,wBAAwB,CAAC;AAsBhC,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAChC,MAA0B;IAE1B,OAAO,mBAAmB,IAAI,MAAM,CAAC;AACvC,CAAC;AAwED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,MAAM,CAAyC;IAExD,YAAY,MAA8C;QACxD,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IACnB,SAAS,CAAiB;IAC3C;;;;OAIG;IACc,iBAAiB,CAAU;IAE5C,YACE,MAA+B,EAC/B,UAAgE,EAAE;QAElE,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,uBAAuB,CAAC,CACnE,MAAM,CACP,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,QAAuB;QAEvB,OAAO,IAAI,CAAC,iBAAiB;YAC3B,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,KAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,CAAC,aAAa,EACnB,aAAa,CAAC,KAAK,CAAC,EACpB,KAAK,CAAC,cAAc,EACpB;YACE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;SACpD,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,iBAAiB;YACtC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAuB;QAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;SACrC,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAyC;QAEzC,MAAM,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAyC;QAEzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAmC;QAEnC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU;YAClC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,uBAAuB,CAC3B,KAAyC;QAEzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB,CAClC,KAAyC;QAEzC,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,KAAyC;QAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,CAAC,aAAa,EACnB;YACE,QAAQ,EAAE,MAAM,CAAC,QAAyB;YAC1C,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;YACrB,kBAAkB,EAAE,CAAC;SACtB,EACD,KAAK,CAAC,cAAc,EACpB;YACE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;SACpD,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAiB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF;AAED,SAAS,uBAAuB,CAC9B,MAA+B;IAE/B,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,aAAa,CAAC,KAA8B;IACnD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC;AACJ,CAAC"}
|
package/docs/agent-layer.md
CHANGED
|
@@ -32,7 +32,8 @@ Every fund-moving tool is gated by a spend mandate, with JSON-serializable manda
|
|
|
32
32
|
payloads and env-driven settlement config. The server also keeps a local stream
|
|
33
33
|
registry so agents can list and reclaim the streams they opened. (`src/mcp/`)
|
|
34
34
|
|
|
35
|
-
The server runs locally over stdio (`
|
|
35
|
+
The server runs locally over stdio (the published `metrik-mcp` executable, or
|
|
36
|
+
`pnpm mcp:stdio` in-repo) or as a hosted,
|
|
36
37
|
multi-tenant, per-caller-authenticated endpoint over Streamable HTTP
|
|
37
38
|
(`pnpm mcp:http`) — see [docs/mcp-hosted.md](./mcp-hosted.md).
|
|
38
39
|
|