@usesigil/kit 0.7.1 → 0.8.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 +24 -0
- package/dist/agent-analytics.d.ts.map +1 -1
- package/dist/agent-analytics.js +8 -23
- package/dist/agent-analytics.js.map +1 -1
- package/dist/balance-tracker.d.ts.map +1 -1
- package/dist/balance-tracker.js +4 -3
- package/dist/balance-tracker.js.map +1 -1
- package/dist/dashboard/from-json.d.ts +49 -0
- package/dist/dashboard/from-json.d.ts.map +1 -0
- package/dist/dashboard/from-json.js +221 -0
- package/dist/dashboard/from-json.js.map +1 -0
- package/dist/dashboard/index.d.ts +34 -3
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +45 -3
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/reads.d.ts.map +1 -1
- package/dist/dashboard/reads.js +6 -3
- package/dist/dashboard/reads.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/inspector.d.ts.map +1 -1
- package/dist/inspector.js +1 -2
- package/dist/inspector.js.map +1 -1
- package/dist/math-utils.d.ts +15 -0
- package/dist/math-utils.d.ts.map +1 -1
- package/dist/math-utils.js +17 -0
- package/dist/math-utils.js.map +1 -1
- package/dist/portfolio-analytics.d.ts.map +1 -1
- package/dist/portfolio-analytics.js +5 -8
- package/dist/portfolio-analytics.js.map +1 -1
- package/dist/priority-fees.d.ts.map +1 -1
- package/dist/priority-fees.js +18 -1
- package/dist/priority-fees.js.map +1 -1
- package/dist/protocol-analytics.d.ts.map +1 -1
- package/dist/protocol-analytics.js +3 -2
- package/dist/protocol-analytics.js.map +1 -1
- package/dist/protocol-names.d.ts.map +1 -1
- package/dist/protocol-names.js +5 -7
- package/dist/protocol-names.js.map +1 -1
- package/dist/seal.d.ts +66 -13
- package/dist/seal.d.ts.map +1 -1
- package/dist/seal.js +136 -19
- package/dist/seal.js.map +1 -1
- package/dist/shield.d.ts.map +1 -1
- package/dist/shield.js +5 -3
- package/dist/shield.js.map +1 -1
- package/dist/spending-analytics.d.ts.map +1 -1
- package/dist/spending-analytics.js +4 -7
- package/dist/spending-analytics.js.map +1 -1
- package/dist/state-resolver.d.ts +14 -0
- package/dist/state-resolver.d.ts.map +1 -1
- package/dist/state-resolver.js +31 -1
- package/dist/state-resolver.js.map +1 -1
- package/dist/tee/providers/crossmint.d.ts +5 -8
- package/dist/tee/providers/crossmint.d.ts.map +1 -1
- package/dist/tee/providers/crossmint.js +10 -76
- package/dist/tee/providers/crossmint.js.map +1 -1
- package/dist/tee/providers/managed-verifier.d.ts +31 -0
- package/dist/tee/providers/managed-verifier.d.ts.map +1 -0
- package/dist/tee/providers/managed-verifier.js +81 -0
- package/dist/tee/providers/managed-verifier.js.map +1 -0
- package/dist/tee/providers/privy.d.ts +5 -8
- package/dist/tee/providers/privy.d.ts.map +1 -1
- package/dist/tee/providers/privy.js +10 -74
- package/dist/tee/providers/privy.js.map +1 -1
- package/dist/tee/verify.d.ts +0 -1
- package/dist/tee/verify.d.ts.map +1 -1
- package/dist/tee/verify.js +0 -1
- package/dist/tee/verify.js.map +1 -1
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +23 -1
- package/dist/tokens.js.map +1 -1
- package/dist/types.d.ts +24 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +55 -9
- package/dist/types.js.map +1 -1
- package/dist/vault-analytics.d.ts.map +1 -1
- package/dist/vault-analytics.js +2 -3
- package/dist/vault-analytics.js.map +1 -1
- package/dist/x402/transfer-builder.d.ts +2 -5
- package/dist/x402/transfer-builder.d.ts.map +1 -1
- package/dist/x402/transfer-builder.js +12 -36
- package/dist/x402/transfer-builder.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -144,6 +144,30 @@ const preset = getPreset("jupiter-swap-bot");
|
|
|
144
144
|
const fields = presetToCreateVaultFields(preset);
|
|
145
145
|
```
|
|
146
146
|
|
|
147
|
+
### HTTP 402 Payments (x402)
|
|
148
|
+
|
|
149
|
+
Sigil supports the [x402 standard](https://www.x402.org/) for automatic HTTP 402 payment negotiation on Solana. Use `shieldedFetch()` to handle payment-required responses transparently — spending limits and vault policies are enforced on every payment.
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
import { shieldedFetch, createShieldedFetch } from "@usesigil/kit/x402";
|
|
153
|
+
|
|
154
|
+
// One-shot: fetch a paywalled URL, auto-negotiate payment
|
|
155
|
+
const response = await shieldedFetch(url, {
|
|
156
|
+
vault, agent, rpc, network: "devnet",
|
|
157
|
+
maxPaymentUsd: 1_000_000n, // $1 max per request
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
if (response.x402?.paid) {
|
|
161
|
+
console.log(`Paid ${response.x402.amount} to ${response.x402.payTo}`);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Reusable: create a pre-configured fetch function
|
|
165
|
+
const fetch402 = createShieldedFetch({ vault, agent, rpc, network: "devnet" });
|
|
166
|
+
const res = await fetch402("https://api.example.com/premium-data");
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The x402 subpath exports codec functions (header parsing), payment selectors, nonce tracking, amount validation, and 5 typed error classes (`X402ParseError`, `X402PaymentError`, `X402UnsupportedError`, `X402DestinationBlockedError`, `X402ReplayError`). See [INSTRUCTIONS.md](../docs/INSTRUCTIONS.md) for the full 12-step `shieldedFetch()` flow.
|
|
170
|
+
|
|
147
171
|
## Error Handling
|
|
148
172
|
|
|
149
173
|
All errors from `wrap()` and `executeAndConfirm()` convert to structured `AgentError`:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-analytics.d.ts","sourceRoot":"","sources":["../src/agent-analytics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-analytics.d.ts","sourceRoot":"","sources":["../src/agent-analytics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQ/E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,eAAe,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IACvD,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,kBAAkB,EACzB,YAAY,EAAE,OAAO,GACpB,YAAY,GAAG,IAAI,CAkCrB;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAmD7E;AAID;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,mBAAmB,CAqBrB;AAoBD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,YAAY,EAAE,OAAO,GACpB,mBAAmB,CA2BrB"}
|
package/dist/agent-analytics.js
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* All functions are pure (no RPC) — they derive metrics from already-resolved
|
|
5
5
|
* vault state. The dashboard Agents tab and Agent Detail page use these.
|
|
6
6
|
*/
|
|
7
|
-
import { bytesToAddress } from "./state-resolver.js";
|
|
7
|
+
import { bytesToAddress, findAgentOverlaySlot } from "./state-resolver.js";
|
|
8
8
|
import { FULL_CAPABILITY } from "./types.js";
|
|
9
9
|
import { computeHerfindahl } from "./math-utils.js";
|
|
10
|
+
import { computeUtilizationPercent } from "./math-utils.js";
|
|
10
11
|
// ─── getAgentProfile ─────────────────────────────────────────────────────────
|
|
11
12
|
/**
|
|
12
13
|
* Build a complete profile for a single agent within a vault.
|
|
@@ -22,25 +23,11 @@ export function getAgentProfile(state, agentAddress) {
|
|
|
22
23
|
cap: 0n,
|
|
23
24
|
remaining: 0n,
|
|
24
25
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return bytesToAddress(e.agent) === agentAddress;
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
if (slotIdx >= 0 && slotIdx < overlay.lifetimeSpend.length) {
|
|
37
|
-
lifetimeSpend = overlay.lifetimeSpend[slotIdx];
|
|
38
|
-
}
|
|
39
|
-
if (slotIdx >= 0 && slotIdx < (overlay.lifetimeTxCount?.length ?? 0)) {
|
|
40
|
-
lifetimeTxCount = overlay.lifetimeTxCount[slotIdx];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const capUtilization = budget.cap > 0n ? Number((budget.spent24h * 10000n) / budget.cap) / 100 : 0;
|
|
26
|
+
// PR 3.B F038: use extracted helper instead of inline overlay lookup
|
|
27
|
+
const overlaySlot = findAgentOverlaySlot(overlay, agentAddress);
|
|
28
|
+
const lifetimeSpend = overlaySlot?.lifetimeSpend ?? 0n;
|
|
29
|
+
const lifetimeTxCount = overlaySlot?.lifetimeTxCount ?? 0n;
|
|
30
|
+
const capUtilization = computeUtilizationPercent(budget.spent24h, budget.cap);
|
|
44
31
|
return {
|
|
45
32
|
address: agentAddress,
|
|
46
33
|
capability: agentEntry.capability,
|
|
@@ -83,9 +70,7 @@ export function getAgentLeaderboard(state) {
|
|
|
83
70
|
lifetimeSpend = overlay.lifetimeSpend[slotIdx];
|
|
84
71
|
}
|
|
85
72
|
}
|
|
86
|
-
const capUtilization = budget.cap
|
|
87
|
-
? Number((budget.spent24h * 10000n) / budget.cap) / 100
|
|
88
|
-
: 0;
|
|
73
|
+
const capUtilization = computeUtilizationPercent(budget.spent24h, budget.cap);
|
|
89
74
|
return {
|
|
90
75
|
address: agentEntry.pubkey,
|
|
91
76
|
rank: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-analytics.js","sourceRoot":"","sources":["../src/agent-analytics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-analytics.js","sourceRoot":"","sources":["../src/agent-analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance-tracker.d.ts","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"balance-tracker.d.ts","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAO5D,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD,GAAG,QAAQ,CAiBX;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAgBD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BzB;AAID;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,UAAU,SAAM;IAI5B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAkB3D,WAAW,IAAI,eAAe,GAAG,IAAI;IAIrC,QAAQ,IAAI,eAAe,GAAG,IAAI;IAMlC,SAAS,IAAI,eAAe,GAAG,IAAI;IAMnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,MAAM;IAmBhB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;CA0BpD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,OAAwB,GAChC,UAAU,CAwBZ"}
|
package/dist/balance-tracker.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { isStablecoinMint } from "./types.js";
|
|
9
9
|
import { resolveVaultStateForOwner } from "./state-resolver.js";
|
|
10
10
|
import { resolveToken } from "./tokens.js";
|
|
11
|
+
import { computeUtilizationPercent } from "./math-utils.js";
|
|
11
12
|
// ─── On-chain P&L (lifetime) ────────────────────────────────────────────────
|
|
12
13
|
/**
|
|
13
14
|
* Pure P&L computation from an already-resolved vault state. No RPC.
|
|
@@ -22,7 +23,7 @@ export function getVaultPnLFromState(state) {
|
|
|
22
23
|
const currentBalance = state.stablecoinBalances.usdc + state.stablecoinBalances.usdt;
|
|
23
24
|
const netInvestment = totalDeposited - totalWithdrawn;
|
|
24
25
|
const pnl = currentBalance - netInvestment;
|
|
25
|
-
const pnlPercent =
|
|
26
|
+
const pnlPercent = computeUtilizationPercent(pnl, netInvestment);
|
|
26
27
|
return {
|
|
27
28
|
totalDeposited,
|
|
28
29
|
totalWithdrawn,
|
|
@@ -46,7 +47,7 @@ export async function getVaultPnL(rpc, vault, network = "mainnet-beta") {
|
|
|
46
47
|
return getVaultPnLFromState(state);
|
|
47
48
|
}
|
|
48
49
|
// ─── Token balance query ────────────────────────────────────────────────────
|
|
49
|
-
|
|
50
|
+
import { TOKEN_PROGRAM_ADDRESS } from "./types.js";
|
|
50
51
|
/**
|
|
51
52
|
* Fetch all SPL token balances for a vault PDA.
|
|
52
53
|
* Uses getTokenAccountsByOwner with jsonParsed encoding.
|
|
@@ -193,7 +194,7 @@ export function getBalancePnL(store, network = "mainnet-beta") {
|
|
|
193
194
|
const startBalance = sumStablecoins(baseline.balances);
|
|
194
195
|
const currentBalance = sumStablecoins(latest.balances);
|
|
195
196
|
const delta = currentBalance - startBalance;
|
|
196
|
-
const percentChange =
|
|
197
|
+
const percentChange = computeUtilizationPercent(delta, startBalance);
|
|
197
198
|
return { startBalance, currentBalance, delta, percentChange };
|
|
198
199
|
}
|
|
199
200
|
//# sourceMappingURL=balance-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fromJSON — MCP round-trip deserialization for dashboard types.
|
|
3
|
+
*
|
|
4
|
+
* PR 3.A: Every toJSON() in dashboard/types.ts now has a corresponding
|
|
5
|
+
* fromJSON() here. AI agents consuming Sigil via MCP receive JSON from tool
|
|
6
|
+
* responses and pass data back to subsequent tool calls. Without fromJSON,
|
|
7
|
+
* agents cannot reconstruct bigints from strings — breaking the round-trip.
|
|
8
|
+
*
|
|
9
|
+
* Pattern: standalone functions (not static methods) for tree-shaking.
|
|
10
|
+
* Each function accepts a Serialized* object and returns the live type
|
|
11
|
+
* with bigints, typed addresses, and full toJSON() methods restored.
|
|
12
|
+
*/
|
|
13
|
+
import type { Address } from "@solana/kit";
|
|
14
|
+
import type { VaultState, AgentData, SpendingData, ActivityRow, ActivityData, HealthData, PolicyData, OverviewData, TxResult, SerializedVaultState, SerializedAgentData, SerializedSpendingData, SerializedActivityRow, SerializedActivityData, SerializedHealthData, SerializedPolicyData, SerializedOverviewData, SerializedDiscoveredVault } from "./types.js";
|
|
15
|
+
/** Rehydrate a TxResult from its JSON representation. */
|
|
16
|
+
export declare function txResultFromJSON(data: {
|
|
17
|
+
signature: string;
|
|
18
|
+
}): TxResult;
|
|
19
|
+
/** Rehydrate a VaultState from its serialized JSON representation. */
|
|
20
|
+
export declare function vaultStateFromJSON(data: SerializedVaultState): VaultState;
|
|
21
|
+
/** Rehydrate an AgentData from its serialized JSON representation. */
|
|
22
|
+
export declare function agentDataFromJSON(data: SerializedAgentData): AgentData;
|
|
23
|
+
/** Rehydrate a SpendingData from its serialized JSON representation. */
|
|
24
|
+
export declare function spendingDataFromJSON(data: SerializedSpendingData): SpendingData;
|
|
25
|
+
/** Rehydrate an ActivityRow from its serialized JSON representation. */
|
|
26
|
+
export declare function activityRowFromJSON(data: SerializedActivityRow): ActivityRow;
|
|
27
|
+
/** Rehydrate an ActivityData from its serialized JSON representation. */
|
|
28
|
+
export declare function activityDataFromJSON(data: SerializedActivityData): ActivityData;
|
|
29
|
+
/** Rehydrate a HealthData from its serialized JSON representation. */
|
|
30
|
+
export declare function healthDataFromJSON(data: SerializedHealthData): HealthData;
|
|
31
|
+
/** Rehydrate a PolicyData from its serialized JSON representation. */
|
|
32
|
+
export declare function policyDataFromJSON(data: SerializedPolicyData): PolicyData;
|
|
33
|
+
/** Rehydrate a DiscoveredVault from its serialized JSON representation. */
|
|
34
|
+
export declare function discoveredVaultFromJSON(data: SerializedDiscoveredVault): {
|
|
35
|
+
address: Address;
|
|
36
|
+
vaultId: bigint;
|
|
37
|
+
status: "active" | "frozen";
|
|
38
|
+
agentCount: number;
|
|
39
|
+
toJSON: () => SerializedDiscoveredVault;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Rehydrate the full OverviewData from its serialized JSON representation.
|
|
43
|
+
*
|
|
44
|
+
* This is the primary MCP round-trip entry point — AI agents receive
|
|
45
|
+
* overview JSON from the `sigil_get_overview` tool and pass it back to
|
|
46
|
+
* subsequent tool calls.
|
|
47
|
+
*/
|
|
48
|
+
export declare function overviewDataFromJSON(data: SerializedOverviewData): OverviewData;
|
|
49
|
+
//# sourceMappingURL=from-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-json.d.ts","sourceRoot":"","sources":["../../src/dashboard/from-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AAoCpB,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAKtE;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CA+BzE;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CAiBtE;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,GAC3B,YAAY,CAkBd;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,WAAW,CAc5E;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,GAC3B,YAAY,CAWd;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CAezE;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CAuBzE;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,yBAAyB;;;YAI5C,QAAQ,GAAG,QAAQ;;;EAI7C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,GAC3B,YAAY,CAUd"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fromJSON — MCP round-trip deserialization for dashboard types.
|
|
3
|
+
*
|
|
4
|
+
* PR 3.A: Every toJSON() in dashboard/types.ts now has a corresponding
|
|
5
|
+
* fromJSON() here. AI agents consuming Sigil via MCP receive JSON from tool
|
|
6
|
+
* responses and pass data back to subsequent tool calls. Without fromJSON,
|
|
7
|
+
* agents cannot reconstruct bigints from strings — breaking the round-trip.
|
|
8
|
+
*
|
|
9
|
+
* Pattern: standalone functions (not static methods) for tree-shaking.
|
|
10
|
+
* Each function accepts a Serialized* object and returns the live type
|
|
11
|
+
* with bigints, typed addresses, and full toJSON() methods restored.
|
|
12
|
+
*/
|
|
13
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* Safe bigint parse — returns 0n for empty/undefined/null values.
|
|
16
|
+
*
|
|
17
|
+
* C2 fix (silent-failure-hunter): logs a warning on parse failure instead
|
|
18
|
+
* of silently returning 0n. AI agents receiving corrupted MCP data (e.g.,
|
|
19
|
+
* "$500" instead of "500000000") will see the warning in logs rather than
|
|
20
|
+
* silently operating on zeroed financial data.
|
|
21
|
+
*/
|
|
22
|
+
let biWarnCount = 0;
|
|
23
|
+
function bi(s) {
|
|
24
|
+
if (!s)
|
|
25
|
+
return 0n;
|
|
26
|
+
try {
|
|
27
|
+
return BigInt(s);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
if (biWarnCount < 10) {
|
|
31
|
+
biWarnCount++;
|
|
32
|
+
console.warn(`[@usesigil/kit/fromJSON] Failed to parse bigint from "${s.slice(0, 50)}" — returning 0n. ` +
|
|
33
|
+
`This may indicate corrupted MCP data.`);
|
|
34
|
+
}
|
|
35
|
+
return 0n;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Cast string to Address (branded Kit type). */
|
|
39
|
+
function addr(s) {
|
|
40
|
+
return s;
|
|
41
|
+
}
|
|
42
|
+
// ─── fromJSON builders ──────────────────────────────────────────────────────
|
|
43
|
+
/** Rehydrate a TxResult from its JSON representation. */
|
|
44
|
+
export function txResultFromJSON(data) {
|
|
45
|
+
return {
|
|
46
|
+
signature: data.signature,
|
|
47
|
+
toJSON: () => ({ signature: data.signature }),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Rehydrate a VaultState from its serialized JSON representation. */
|
|
51
|
+
export function vaultStateFromJSON(data) {
|
|
52
|
+
const result = {
|
|
53
|
+
vault: {
|
|
54
|
+
address: addr(data.vault.address),
|
|
55
|
+
status: data.vault.status,
|
|
56
|
+
owner: addr(data.vault.owner),
|
|
57
|
+
agentCount: data.vault.agentCount,
|
|
58
|
+
openPositions: data.vault.openPositions,
|
|
59
|
+
totalVolume: bi(data.vault.totalVolume),
|
|
60
|
+
totalFees: bi(data.vault.totalFees),
|
|
61
|
+
},
|
|
62
|
+
balance: {
|
|
63
|
+
total: bi(data.balance.total),
|
|
64
|
+
tokens: data.balance.tokens.map((t) => ({
|
|
65
|
+
mint: addr(t.mint),
|
|
66
|
+
amount: bi(t.amount),
|
|
67
|
+
decimals: t.decimals,
|
|
68
|
+
})),
|
|
69
|
+
},
|
|
70
|
+
pnl: {
|
|
71
|
+
percent: data.pnl.percent,
|
|
72
|
+
absolute: bi(data.pnl.absolute),
|
|
73
|
+
},
|
|
74
|
+
health: {
|
|
75
|
+
level: data.health.level,
|
|
76
|
+
alertCount: data.health.alertCount,
|
|
77
|
+
checks: data.health.checks,
|
|
78
|
+
},
|
|
79
|
+
toJSON: () => data,
|
|
80
|
+
};
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
/** Rehydrate an AgentData from its serialized JSON representation. */
|
|
84
|
+
export function agentDataFromJSON(data) {
|
|
85
|
+
return {
|
|
86
|
+
address: addr(data.address),
|
|
87
|
+
status: data.status,
|
|
88
|
+
capabilityLabel: data.capabilityLabel,
|
|
89
|
+
capability: data.capability,
|
|
90
|
+
spending: {
|
|
91
|
+
amount: bi(data.spending.amount),
|
|
92
|
+
limit: bi(data.spending.limit),
|
|
93
|
+
percent: data.spending.percent,
|
|
94
|
+
},
|
|
95
|
+
lastActionType: data.lastActionType,
|
|
96
|
+
lastActionProtocol: data.lastActionProtocol,
|
|
97
|
+
lastActionTimestamp: data.lastActionTimestamp,
|
|
98
|
+
blockedCount24h: data.blockedCount24h,
|
|
99
|
+
toJSON: () => data,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Rehydrate a SpendingData from its serialized JSON representation. */
|
|
103
|
+
export function spendingDataFromJSON(data) {
|
|
104
|
+
return {
|
|
105
|
+
global: {
|
|
106
|
+
today: bi(data.global.today),
|
|
107
|
+
cap: bi(data.global.cap),
|
|
108
|
+
remaining: bi(data.global.remaining),
|
|
109
|
+
percent: data.global.percent,
|
|
110
|
+
rundownMs: data.global.rundownMs,
|
|
111
|
+
},
|
|
112
|
+
chart: data.chart,
|
|
113
|
+
protocolBreakdown: data.protocolBreakdown.map((p) => ({
|
|
114
|
+
name: p.name,
|
|
115
|
+
programId: addr(p.programId),
|
|
116
|
+
amount: bi(p.amount),
|
|
117
|
+
percent: p.percent,
|
|
118
|
+
})),
|
|
119
|
+
toJSON: () => data,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** Rehydrate an ActivityRow from its serialized JSON representation. */
|
|
123
|
+
export function activityRowFromJSON(data) {
|
|
124
|
+
return {
|
|
125
|
+
id: data.id,
|
|
126
|
+
timestamp: data.timestamp,
|
|
127
|
+
type: data.type,
|
|
128
|
+
protocol: data.protocol,
|
|
129
|
+
protocolId: addr(data.protocolId),
|
|
130
|
+
agent: addr(data.agent),
|
|
131
|
+
amount: bi(data.amount),
|
|
132
|
+
status: data.status,
|
|
133
|
+
reason: data.reason,
|
|
134
|
+
txSignature: data.txSignature,
|
|
135
|
+
toJSON: () => data,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/** Rehydrate an ActivityData from its serialized JSON representation. */
|
|
139
|
+
export function activityDataFromJSON(data) {
|
|
140
|
+
return {
|
|
141
|
+
rows: data.rows.map(activityRowFromJSON),
|
|
142
|
+
summary: {
|
|
143
|
+
total: data.summary.total,
|
|
144
|
+
approved: data.summary.approved,
|
|
145
|
+
blocked: data.summary.blocked,
|
|
146
|
+
volume: bi(data.summary.volume),
|
|
147
|
+
},
|
|
148
|
+
toJSON: () => data,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/** Rehydrate a HealthData from its serialized JSON representation. */
|
|
152
|
+
export function healthDataFromJSON(data) {
|
|
153
|
+
return {
|
|
154
|
+
level: data.level,
|
|
155
|
+
blockedCount24h: data.blockedCount24h,
|
|
156
|
+
checks: data.checks,
|
|
157
|
+
lastBlock: data.lastBlock
|
|
158
|
+
? {
|
|
159
|
+
agent: addr(data.lastBlock.agent),
|
|
160
|
+
reason: data.lastBlock.reason,
|
|
161
|
+
amount: bi(data.lastBlock.amount),
|
|
162
|
+
timestamp: data.lastBlock.timestamp,
|
|
163
|
+
}
|
|
164
|
+
: undefined,
|
|
165
|
+
toJSON: () => data,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/** Rehydrate a PolicyData from its serialized JSON representation. */
|
|
169
|
+
export function policyDataFromJSON(data) {
|
|
170
|
+
return {
|
|
171
|
+
dailyCap: bi(data.dailyCap),
|
|
172
|
+
maxPerTrade: bi(data.maxPerTrade),
|
|
173
|
+
approvedApps: data.approvedApps.map((a) => ({
|
|
174
|
+
name: a.name,
|
|
175
|
+
programId: addr(a.programId),
|
|
176
|
+
})),
|
|
177
|
+
protocolMode: data.protocolMode,
|
|
178
|
+
hasProtocolCaps: data.hasProtocolCaps,
|
|
179
|
+
protocolCaps: data.protocolCaps.map(bi),
|
|
180
|
+
canOpenPositions: data.canOpenPositions,
|
|
181
|
+
maxConcurrentPositions: data.maxConcurrentPositions,
|
|
182
|
+
maxSlippageBps: data.maxSlippageBps,
|
|
183
|
+
leverageLimitBps: data.leverageLimitBps,
|
|
184
|
+
allowedDestinations: data.allowedDestinations.map(addr),
|
|
185
|
+
developerFeeRate: data.developerFeeRate,
|
|
186
|
+
sessionExpirySlots: bi(data.sessionExpirySlots),
|
|
187
|
+
timelockSeconds: data.timelockSeconds,
|
|
188
|
+
policyVersion: bi(data.policyVersion),
|
|
189
|
+
pendingUpdate: data.pendingUpdate,
|
|
190
|
+
toJSON: () => data,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/** Rehydrate a DiscoveredVault from its serialized JSON representation. */
|
|
194
|
+
export function discoveredVaultFromJSON(data) {
|
|
195
|
+
return {
|
|
196
|
+
address: addr(data.address),
|
|
197
|
+
vaultId: bi(data.vaultId),
|
|
198
|
+
status: data.status,
|
|
199
|
+
agentCount: data.agentCount,
|
|
200
|
+
toJSON: () => data,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Rehydrate the full OverviewData from its serialized JSON representation.
|
|
205
|
+
*
|
|
206
|
+
* This is the primary MCP round-trip entry point — AI agents receive
|
|
207
|
+
* overview JSON from the `sigil_get_overview` tool and pass it back to
|
|
208
|
+
* subsequent tool calls.
|
|
209
|
+
*/
|
|
210
|
+
export function overviewDataFromJSON(data) {
|
|
211
|
+
return {
|
|
212
|
+
vault: vaultStateFromJSON(data.vault),
|
|
213
|
+
agents: data.agents.map(agentDataFromJSON),
|
|
214
|
+
spending: spendingDataFromJSON(data.spending),
|
|
215
|
+
health: healthDataFromJSON(data.health),
|
|
216
|
+
policy: policyDataFromJSON(data.policy),
|
|
217
|
+
activity: data.activity.map(activityRowFromJSON),
|
|
218
|
+
toJSON: () => data,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=from-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-json.js","sourceRoot":"","sources":["../../src/dashboard/from-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ import type { CapabilityTier, UsdBaseUnits } from "../types.js";
|
|
|
17
17
|
import type { OwnerClientConfig, TxResult, TxOpts, VaultState, AgentData, SpendingData, ActivityData, ActivityFilters, HealthData, PolicyData, PolicyChanges, ConstraintEntry, DiscoveredVault, OverviewData, GetOverviewOptions } from "./types.js";
|
|
18
18
|
import * as constraintReads from "./constraint-reads.js";
|
|
19
19
|
export type { OwnerClientConfig, TxResult, TxOpts, VaultState, AgentData, SpendingData, ActivityData, ActivityRow, ActivityFilters, ActivityType, HealthData, PolicyData, PolicyChanges, ConstraintEntry, DiscoveredVault, DxError, ChartPoint, TokenBalance, HealthCheck, ProtocolBreakdownEntry, OverviewContext, OverviewData, GetOverviewOptions, } from "./types.js";
|
|
20
|
+
export { txResultFromJSON, vaultStateFromJSON, agentDataFromJSON, spendingDataFromJSON, activityRowFromJSON, activityDataFromJSON, healthDataFromJSON, policyDataFromJSON, discoveredVaultFromJSON, overviewDataFromJSON, } from "./from-json.js";
|
|
20
21
|
export { buildVaultState, buildAgents, buildSpending, buildHealth, buildPolicy, buildActivityRows, DEFAULT_OVERVIEW_ACTIVITY_LIMIT, } from "./reads.js";
|
|
21
22
|
export type { ConstraintsPdaInfo } from "./constraint-reads.js";
|
|
22
23
|
export { findConstraintsPda, findPendingConstraintsPda, findPendingCloseConstraintsPda, fetchConstraints, fetchPendingConstraintsUpdate, fetchPendingCloseConstraints, } from "./constraint-reads.js";
|
|
@@ -27,7 +28,38 @@ export { findConstraintsPda, findPendingConstraintsPda, findPendingCloseConstrai
|
|
|
27
28
|
* - Stateless: every read fetches fresh from RPC. No internal cache.
|
|
28
29
|
* - bigint only: all amounts are 6-decimal USD bigint. No formatted strings.
|
|
29
30
|
* - JSON-serializable: every return type has toJSON() for MCP/REST.
|
|
30
|
-
* - Single-vault scope: one
|
|
31
|
+
* - Single-vault scope: one client per vault.
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Create an owner-side vault management client.
|
|
35
|
+
*
|
|
36
|
+
* Returns a plain object with closure-bound methods — NOT a class. This is
|
|
37
|
+
* the recommended way to create an owner client for dashboard/admin use.
|
|
38
|
+
*
|
|
39
|
+
* Pattern matches viem's `createPublicClient()` — functional primitives as
|
|
40
|
+
* the real API, factory for ergonomics (context carrying).
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { createOwnerClient } from "@usesigil/kit/dashboard";
|
|
45
|
+
*
|
|
46
|
+
* const client = createOwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
47
|
+
* const state = await client.getVaultState();
|
|
48
|
+
* await client.freezeVault();
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function createOwnerClient(config: OwnerClientConfig): OwnerClient;
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated Use `createOwnerClient(config)` instead. This class will be
|
|
54
|
+
* removed at v1.0.
|
|
55
|
+
*
|
|
56
|
+
* Migration:
|
|
57
|
+
* ```ts
|
|
58
|
+
* // Before:
|
|
59
|
+
* const client = new OwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
60
|
+
* // After:
|
|
61
|
+
* const client = createOwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
62
|
+
* ```
|
|
31
63
|
*/
|
|
32
64
|
export declare class OwnerClient {
|
|
33
65
|
readonly rpc: Rpc<SolanaRpcApi>;
|
|
@@ -95,8 +127,7 @@ export declare class OwnerClient {
|
|
|
95
127
|
/**
|
|
96
128
|
* Timelocked — queue/apply/cancel pattern.
|
|
97
129
|
* Direct update_agent_permissions deleted (TOCTOU fix).
|
|
98
|
-
|
|
99
|
-
/**
|
|
130
|
+
*
|
|
100
131
|
* @param spendingLimit — per-agent 24h cap in 6-decimal USD. Pass 0n for unlimited (NOT recommended).
|
|
101
132
|
*/
|
|
102
133
|
queueAgentPermissions(agent: Address, permissions: CapabilityTier, spendingLimit: UsdBaseUnits, opts?: TxOpts): Promise<TxResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AAIzD,YAAY,EACV,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"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"}
|
package/dist/dashboard/index.js
CHANGED
|
@@ -18,6 +18,8 @@ import * as reads from "./reads.js";
|
|
|
18
18
|
import * as mutations from "./mutations.js";
|
|
19
19
|
import * as constraintReads from "./constraint-reads.js";
|
|
20
20
|
import { discoverVaults as discoverVaultsImpl } from "./discover.js";
|
|
21
|
+
// ─── fromJSON — MCP round-trip deserialization (PR 3.A) ─────────────────────
|
|
22
|
+
export { txResultFromJSON, vaultStateFromJSON, agentDataFromJSON, spendingDataFromJSON, activityRowFromJSON, activityDataFromJSON, healthDataFromJSON, policyDataFromJSON, discoveredVaultFromJSON, overviewDataFromJSON, } from "./from-json.js";
|
|
21
23
|
// ─── Overview composition helpers (S14) ──────────────────────────────────────
|
|
22
24
|
// Exported for advanced consumers (custom dashboards, MCP servers, test
|
|
23
25
|
// harnesses) that want to pre-fetch raw state once and compose views
|
|
@@ -35,7 +37,48 @@ export { findConstraintsPda, findPendingConstraintsPda, findPendingCloseConstrai
|
|
|
35
37
|
* - Stateless: every read fetches fresh from RPC. No internal cache.
|
|
36
38
|
* - bigint only: all amounts are 6-decimal USD bigint. No formatted strings.
|
|
37
39
|
* - JSON-serializable: every return type has toJSON() for MCP/REST.
|
|
38
|
-
* - Single-vault scope: one
|
|
40
|
+
* - Single-vault scope: one client per vault.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Create an owner-side vault management client.
|
|
44
|
+
*
|
|
45
|
+
* Returns a plain object with closure-bound methods — NOT a class. This is
|
|
46
|
+
* the recommended way to create an owner client for dashboard/admin use.
|
|
47
|
+
*
|
|
48
|
+
* Pattern matches viem's `createPublicClient()` — functional primitives as
|
|
49
|
+
* the real API, factory for ergonomics (context carrying).
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { createOwnerClient } from "@usesigil/kit/dashboard";
|
|
54
|
+
*
|
|
55
|
+
* const client = createOwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
56
|
+
* const state = await client.getVaultState();
|
|
57
|
+
* await client.freezeVault();
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function createOwnerClient(config) {
|
|
61
|
+
// The factory delegates to the class internally. The class IS the implementation
|
|
62
|
+
// and carries all 24+ methods correctly including constraint reads, static
|
|
63
|
+
// discovery, and the full mutation surface. At v1.0 when the class is removed,
|
|
64
|
+
// the factory's internal implementation will be extracted into closure-bound
|
|
65
|
+
// methods (the class body becomes the factory body). For now, the factory is
|
|
66
|
+
// the API migration path: consumers switch `new OwnerClient(...)` →
|
|
67
|
+
// `createOwnerClient(...)` and then at v1.0 the class disappears with zero
|
|
68
|
+
// consumer-facing change.
|
|
69
|
+
return new OwnerClient(config);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @deprecated Use `createOwnerClient(config)` instead. This class will be
|
|
73
|
+
* removed at v1.0.
|
|
74
|
+
*
|
|
75
|
+
* Migration:
|
|
76
|
+
* ```ts
|
|
77
|
+
* // Before:
|
|
78
|
+
* const client = new OwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
79
|
+
* // After:
|
|
80
|
+
* const client = createOwnerClient({ rpc, vault, owner: signer, network: "devnet" });
|
|
81
|
+
* ```
|
|
39
82
|
*/
|
|
40
83
|
export class OwnerClient {
|
|
41
84
|
rpc;
|
|
@@ -151,8 +194,7 @@ export class OwnerClient {
|
|
|
151
194
|
/**
|
|
152
195
|
* Timelocked — queue/apply/cancel pattern.
|
|
153
196
|
* Direct update_agent_permissions deleted (TOCTOU fix).
|
|
154
|
-
|
|
155
|
-
/**
|
|
197
|
+
*
|
|
156
198
|
* @param spendingLimit — per-agent 24h cap in 6-decimal USD. Pass 0n for unlimited (NOT recommended).
|
|
157
199
|
*/
|
|
158
200
|
async queueAgentPermissions(agent, permissions, spendingLimit, opts) {
|