@usesigil/kit 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +111 -47
  2. package/dist/agent-analytics.d.ts.map +1 -1
  3. package/dist/agent-analytics.js +8 -23
  4. package/dist/agent-analytics.js.map +1 -1
  5. package/dist/balance-tracker.d.ts +7 -0
  6. package/dist/balance-tracker.d.ts.map +1 -1
  7. package/dist/balance-tracker.js +26 -9
  8. package/dist/balance-tracker.js.map +1 -1
  9. package/dist/dashboard/from-json.d.ts +49 -0
  10. package/dist/dashboard/from-json.d.ts.map +1 -0
  11. package/dist/dashboard/from-json.js +221 -0
  12. package/dist/dashboard/from-json.js.map +1 -0
  13. package/dist/dashboard/index.d.ts +34 -3
  14. package/dist/dashboard/index.d.ts.map +1 -1
  15. package/dist/dashboard/index.js +45 -3
  16. package/dist/dashboard/index.js.map +1 -1
  17. package/dist/dashboard/reads.d.ts.map +1 -1
  18. package/dist/dashboard/reads.js +6 -3
  19. package/dist/dashboard/reads.js.map +1 -1
  20. package/dist/errors/walk.d.ts +8 -0
  21. package/dist/errors/walk.d.ts.map +1 -1
  22. package/dist/errors/walk.js +10 -0
  23. package/dist/errors/walk.js.map +1 -1
  24. package/dist/index.d.ts +7 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +12 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/inspector.d.ts.map +1 -1
  29. package/dist/inspector.js +1 -2
  30. package/dist/inspector.js.map +1 -1
  31. package/dist/integrations/compose-errors.d.ts.map +1 -1
  32. package/dist/integrations/compose-errors.js +15 -1
  33. package/dist/integrations/compose-errors.js.map +1 -1
  34. package/dist/math-utils.d.ts +20 -0
  35. package/dist/math-utils.d.ts.map +1 -1
  36. package/dist/math-utils.js +24 -0
  37. package/dist/math-utils.js.map +1 -1
  38. package/dist/portfolio-analytics.d.ts.map +1 -1
  39. package/dist/portfolio-analytics.js +5 -8
  40. package/dist/portfolio-analytics.js.map +1 -1
  41. package/dist/priority-fees.d.ts +3 -0
  42. package/dist/priority-fees.d.ts.map +1 -1
  43. package/dist/priority-fees.js +12 -19
  44. package/dist/priority-fees.js.map +1 -1
  45. package/dist/protocol-analytics.d.ts.map +1 -1
  46. package/dist/protocol-analytics.js +3 -2
  47. package/dist/protocol-analytics.js.map +1 -1
  48. package/dist/protocol-names.d.ts.map +1 -1
  49. package/dist/protocol-names.js +5 -7
  50. package/dist/protocol-names.js.map +1 -1
  51. package/dist/seal.d.ts +66 -13
  52. package/dist/seal.d.ts.map +1 -1
  53. package/dist/seal.js +136 -19
  54. package/dist/seal.js.map +1 -1
  55. package/dist/shield.d.ts.map +1 -1
  56. package/dist/shield.js +7 -5
  57. package/dist/shield.js.map +1 -1
  58. package/dist/spending-analytics.d.ts.map +1 -1
  59. package/dist/spending-analytics.js +4 -7
  60. package/dist/spending-analytics.js.map +1 -1
  61. package/dist/state-resolver.d.ts +14 -0
  62. package/dist/state-resolver.d.ts.map +1 -1
  63. package/dist/state-resolver.js +31 -1
  64. package/dist/state-resolver.js.map +1 -1
  65. package/dist/tee/providers/crossmint.d.ts +5 -8
  66. package/dist/tee/providers/crossmint.d.ts.map +1 -1
  67. package/dist/tee/providers/crossmint.js +10 -76
  68. package/dist/tee/providers/crossmint.js.map +1 -1
  69. package/dist/tee/providers/managed-verifier.d.ts +31 -0
  70. package/dist/tee/providers/managed-verifier.d.ts.map +1 -0
  71. package/dist/tee/providers/managed-verifier.js +81 -0
  72. package/dist/tee/providers/managed-verifier.js.map +1 -0
  73. package/dist/tee/providers/privy.d.ts +5 -8
  74. package/dist/tee/providers/privy.d.ts.map +1 -1
  75. package/dist/tee/providers/privy.js +10 -74
  76. package/dist/tee/providers/privy.js.map +1 -1
  77. package/dist/tee/verify.d.ts +0 -1
  78. package/dist/tee/verify.d.ts.map +1 -1
  79. package/dist/tee/verify.js +10 -11
  80. package/dist/tee/verify.js.map +1 -1
  81. package/dist/tokens.d.ts +1 -0
  82. package/dist/tokens.d.ts.map +1 -1
  83. package/dist/tokens.js +23 -1
  84. package/dist/tokens.js.map +1 -1
  85. package/dist/types.d.ts +24 -2
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js +55 -9
  88. package/dist/types.js.map +1 -1
  89. package/dist/vault-analytics.d.ts.map +1 -1
  90. package/dist/vault-analytics.js +2 -3
  91. package/dist/vault-analytics.js.map +1 -1
  92. package/dist/x402/transfer-builder.d.ts +2 -5
  93. package/dist/x402/transfer-builder.d.ts.map +1 -1
  94. package/dist/x402/transfer-builder.js +12 -36
  95. package/dist/x402/transfer-builder.js.map +1 -1
  96. package/package.json +1 -1
package/README.md CHANGED
@@ -71,58 +71,58 @@ Sigil wraps arbitrary DeFi instructions from any source (Jupiter API, Solana Age
71
71
 
72
72
  ### Core — Create vaults, wrap instructions, execute
73
73
 
74
- | Export | Description |
75
- |--------|-------------|
76
- | `SigilClient` | Stateful client — holds vault/agent/network, manages caches. Recommended for production. |
77
- | `wrap()` | Stateless wrapping function — takes DeFi instructions, returns a composed transaction. |
78
- | `createVault()` | Build vault creation instructions (caller signs and sends). |
79
- | `createAndSendVault()` | One-call vault creation — build, sign, send, confirm. |
80
- | `buildOwnerTransaction()` | Compose owner-only transactions (policy updates, agent management). |
81
- | `withVault()` | Policy-guided vault creation — policies in, wrapped client out. |
74
+ | Export | Description |
75
+ | ------------------------- | ---------------------------------------------------------------------------------------- |
76
+ | `SigilClient` | Stateful client — holds vault/agent/network, manages caches. Recommended for production. |
77
+ | `wrap()` | Stateless wrapping function — takes DeFi instructions, returns a composed transaction. |
78
+ | `createVault()` | Build vault creation instructions (caller signs and sends). |
79
+ | `createAndSendVault()` | One-call vault creation — build, sign, send, confirm. |
80
+ | `buildOwnerTransaction()` | Compose owner-only transactions (policy updates, agent management). |
81
+ | `withVault()` | Policy-guided vault creation — policies in, wrapped client out. |
82
82
 
83
83
  ### State — Query vaults, budgets, spending
84
84
 
85
- | Export | Description |
86
- |--------|-------------|
87
- | `resolveVaultState()` | Fetch complete vault state (accounts, policy, tracker, overlay, constraints). |
88
- | `resolveVaultBudget()` | Per-agent budget: rolling 24h spend, cap, remaining headroom. |
89
- | `getSpendingHistory()` | 144-epoch circular buffer to chart-ready time series. |
90
- | `findVaultsByOwner()` | Enumerate all vaults owned by an address. |
91
- | `resolveVaultStateForOwner()` | Vault state with pending policy/constraint updates for dashboards. |
85
+ | Export | Description |
86
+ | ----------------------------- | ----------------------------------------------------------------------------- |
87
+ | `resolveVaultState()` | Fetch complete vault state (accounts, policy, tracker, overlay, constraints). |
88
+ | `resolveVaultBudget()` | Per-agent budget: rolling 24h spend, cap, remaining headroom. |
89
+ | `getSpendingHistory()` | 144-epoch circular buffer to chart-ready time series. |
90
+ | `findVaultsByOwner()` | Enumerate all vaults owned by an address. |
91
+ | `resolveVaultStateForOwner()` | Vault state with pending policy/constraint updates for dashboards. |
92
92
 
93
93
  ### Analytics — Security checks, agent metrics, portfolio
94
94
 
95
- | Export | Description |
96
- |--------|-------------|
97
- | `getSecurityPosture()` | 13-point security assessment with pass/fail, severity, remediation. |
98
- | `getVaultHealth()` | Risk score, liquidity, utilization. |
99
- | `getAgentProfile()` | Single agent stats — spend, tx count, errors. |
100
- | `getAgentLeaderboard()` | Top agents by spend or profit. |
101
- | `getPortfolioOverview()` | Cross-vault summary for multi-vault operators. |
102
- | `getAuditTrail()` | Chronological audit log filtered by category, actor, or time range. |
103
- | `getSpendingVelocity()` | Rate of spend over configurable time windows. |
95
+ | Export | Description |
96
+ | ------------------------ | ------------------------------------------------------------------- |
97
+ | `getSecurityPosture()` | 13-point security assessment with pass/fail, severity, remediation. |
98
+ | `getVaultHealth()` | Risk score, liquidity, utilization. |
99
+ | `getAgentProfile()` | Single agent stats — spend, tx count, errors. |
100
+ | `getAgentLeaderboard()` | Top agents by spend or profit. |
101
+ | `getPortfolioOverview()` | Cross-vault summary for multi-vault operators. |
102
+ | `getAuditTrail()` | Chronological audit log filtered by category, actor, or time range. |
103
+ | `getSpendingVelocity()` | Rate of spend over configurable time windows. |
104
104
 
105
105
  7 analytics modules with 42 functions total — see source for the full list.
106
106
 
107
107
  ### Safety — Pre-flight checks, error handling
108
108
 
109
- | Export | Description |
110
- |--------|-------------|
111
- | `shield()` | Client-side policy gate — evaluate instructions before signing. |
112
- | `simulateBeforeSend()` | RPC simulation with error extraction. |
113
- | `detectDrainAttempt()` | Heuristic drain detection from balance deltas. |
114
- | `toAgentError()` | Convert any error to structured `AgentError` with category, retryable flag, and recovery actions. |
109
+ | Export | Description |
110
+ | ---------------------- | ------------------------------------------------------------------------------------------------- |
111
+ | `shield()` | Client-side policy gate — evaluate instructions before signing. |
112
+ | `simulateBeforeSend()` | RPC simulation with error extraction. |
113
+ | `detectDrainAttempt()` | Heuristic drain detection from balance deltas. |
114
+ | `toAgentError()` | Convert any error to structured `AgentError` with category, retryable flag, and recovery actions. |
115
115
 
116
116
  ### Formatting — Display helpers (11 functions)
117
117
 
118
- | Export | Description |
119
- |--------|-------------|
120
- | `formatUsd()` | `$1,234.56` with full precision |
121
- | `formatUsdCompact()` | `$1.2M`, `$500K` |
122
- | `formatPercent()` | `12.34%` |
123
- | `formatDuration()` | `1d 2h 3m` |
124
- | `formatAddress()` | `4ZeV...wrHL` |
125
- | `formatTokenAmount()` | `1,000.000000 USDC` |
118
+ | Export | Description |
119
+ | --------------------- | ------------------------------- |
120
+ | `formatUsd()` | `$1,234.56` with full precision |
121
+ | `formatUsdCompact()` | `$1.2M`, `$500K` |
122
+ | `formatPercent()` | `12.34%` |
123
+ | `formatDuration()` | `1d 2h 3m` |
124
+ | `formatAddress()` | `4ZeV...wrHL` |
125
+ | `formatTokenAmount()` | `1,000.000000 USDC` |
126
126
 
127
127
  Plus: `formatUsdSigned`, `formatPercentSigned`, `formatRelativeTime`, `formatTimeUntil`, `formatTokenAmountCompact`.
128
128
 
@@ -130,12 +130,12 @@ Plus: `formatUsdSigned`, `formatPercentSigned`, `formatRelativeTime`, `formatTim
130
130
 
131
131
  4 pre-configured vault templates for common use cases:
132
132
 
133
- | Preset | Permissions | Daily Cap | Slippage |
134
- |--------|------------|-----------|----------|
135
- | `jupiter-swap-bot` | Swap only | $500 | 2% |
136
- | `perps-trader` | Perps + Swap | $5,000 | 5% |
137
- | `lending-optimizer` | Deposit/Withdraw | $2,000 | 1% |
138
- | `full-access` | All 21 actions | $10,000 | 5% |
133
+ | Preset | Permissions | Daily Cap | Slippage |
134
+ | ------------------- | ---------------- | --------- | -------- |
135
+ | `jupiter-swap-bot` | Swap only | $500 | 2% |
136
+ | `perps-trader` | Perps + Swap | $5,000 | 5% |
137
+ | `lending-optimizer` | Deposit/Withdraw | $2,000 | 1% |
138
+ | `full-access` | All 21 actions | $10,000 | 5% |
139
139
 
140
140
  ```typescript
141
141
  import { getPreset, presetToCreateVaultFields } from "@usesigil/kit";
@@ -144,6 +144,70 @@ 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,
157
+ agent,
158
+ rpc,
159
+ network: "devnet",
160
+ maxPaymentUsd: 1_000_000n, // $1 max per request
161
+ });
162
+
163
+ if (response.x402?.paid) {
164
+ console.log(`Paid ${response.x402.amount} to ${response.x402.payTo}`);
165
+ }
166
+
167
+ // Reusable: create a pre-configured fetch function
168
+ const fetch402 = createShieldedFetch({ vault, agent, rpc, network: "devnet" });
169
+ const res = await fetch402("https://api.example.com/premium-data");
170
+ ```
171
+
172
+ 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.
173
+
174
+ ## Branded Types
175
+
176
+ All USD amounts, capability tiers, and slot numbers are branded bigint types that prevent accidental misuse at compile time:
177
+
178
+ ```typescript
179
+ import {
180
+ usd,
181
+ capability,
182
+ slot,
183
+ type UsdBaseUnits,
184
+ type CapabilityTier,
185
+ } from "@usesigil/kit";
186
+
187
+ const cap: UsdBaseUnits = usd(500_000_000n); // $500
188
+ const tier: CapabilityTier = capability(2n); // Operator
189
+
190
+ // TypeScript ERROR — these types are not interchangeable:
191
+ // addAgent(agent, cap, tier); // cap and tier swapped → compile error
192
+ addAgent(agent, tier, cap); // correct order → compiles
193
+ ```
194
+
195
+ Zero runtime cost — the brand is a phantom type that TypeScript erases at compile time.
196
+
197
+ ## MCP Round-Trip (fromJSON)
198
+
199
+ When AI agents consume Sigil via MCP, they receive JSON from tool responses and pass data back to subsequent calls. The `fromJSON` functions rehydrate bigints, typed addresses, and `toJSON()` methods:
200
+
201
+ ```typescript
202
+ import { overviewDataFromJSON } from "@usesigil/kit/dashboard";
203
+
204
+ // MCP tool response → JSON → rehydrated live types
205
+ const overview = overviewDataFromJSON(toolResponse.data);
206
+ console.log(overview.spending.global.today); // bigint, not string
207
+ ```
208
+
209
+ 10 fromJSON functions cover all dashboard types. Available from `@usesigil/kit/dashboard`.
210
+
147
211
  ## Error Handling
148
212
 
149
213
  All errors from `wrap()` and `executeAndConfirm()` convert to structured `AgentError`:
@@ -155,9 +219,9 @@ try {
155
219
  await client.executeAndConfirm(instructions, opts);
156
220
  } catch (err) {
157
221
  const e = toAgentError(err);
158
- console.log(e.category); // "PERMISSION" | "SPENDING_CAP" | "INPUT_VALIDATION" | ...
159
- console.log(e.retryable); // boolean
160
- console.log(e.recovery_actions); // [{ action, description, tool? }]
222
+ console.log(e.category); // "PERMISSION" | "SPENDING_CAP" | "INPUT_VALIDATION" | ...
223
+ console.log(e.retryable); // boolean
224
+ console.log(e.recovery_actions); // [{ action, description, tool? }]
161
225
  }
162
226
  ```
163
227
 
@@ -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;AAO/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,CAgDrB;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"}
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"}
@@ -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
- let lifetimeSpend = 0n;
26
- let lifetimeTxCount = 0n;
27
- if (overlay) {
28
- const slotIdx = overlay.entries.findIndex((e) => {
29
- try {
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 > 0n
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":"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"}
1
+ {"version":3,"file":"agent-analytics.js","sourceRoot":"","sources":["../src/agent-analytics.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,13 @@ export declare class BalanceSnapshotStore {
96
96
  get size(): number;
97
97
  clear(): void;
98
98
  toJSON(): string;
99
+ /**
100
+ * Reconstruct a BalanceSnapshotStore from its JSON serialization.
101
+ *
102
+ * F12 fix (type-design-analyzer): wraps BigInt() calls in try/catch so
103
+ * corrupted JSON surfaces a domain-relevant error instead of raw
104
+ * SyntaxError from BigInt("not-a-number").
105
+ */
99
106
  static fromJSON(json: string): BalanceSnapshotStore;
100
107
  }
101
108
  /**
@@ -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;AAM5D,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,CAkBX;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;AAiBD;;;;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,CAyBZ"}
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;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;CAsCpD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,OAAwB,GAChC,UAAU,CAwBZ"}
@@ -6,6 +6,7 @@
6
6
  * - `BalanceSnapshotStore` + `getBalancePnL()`: Session-scoped P&L from balance snapshots (for charts)
7
7
  */
8
8
  import { isStablecoinMint } from "./types.js";
9
+ import { computePnlPercent } from "./math-utils.js";
9
10
  import { resolveVaultStateForOwner } from "./state-resolver.js";
10
11
  import { resolveToken } from "./tokens.js";
11
12
  // ─── On-chain P&L (lifetime) ────────────────────────────────────────────────
@@ -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 = netInvestment > 0n ? Number((pnl * 10000n) / netInvestment) / 100 : 0;
26
+ const pnlPercent = computePnlPercent(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
- const TOKEN_PROGRAM_ADDRESS = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
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.
@@ -145,26 +146,42 @@ export class BalanceSnapshotStore {
145
146
  maxEntries: this.maxEntries,
146
147
  });
147
148
  }
149
+ /**
150
+ * Reconstruct a BalanceSnapshotStore from its JSON serialization.
151
+ *
152
+ * F12 fix (type-design-analyzer): wraps BigInt() calls in try/catch so
153
+ * corrupted JSON surfaces a domain-relevant error instead of raw
154
+ * SyntaxError from BigInt("not-a-number").
155
+ */
148
156
  static fromJSON(json) {
149
157
  const data = JSON.parse(json);
150
158
  const maxEntries = Number.isInteger(data.maxEntries)
151
159
  ? data.maxEntries
152
160
  : 144;
153
161
  const store = new BalanceSnapshotStore(maxEntries);
162
+ const safeBigInt = (val, field) => {
163
+ try {
164
+ return BigInt(val);
165
+ }
166
+ catch {
167
+ console.warn(`[@usesigil/kit/BalanceSnapshotStore.fromJSON] Failed to parse bigint for "${field}": ${String(val).slice(0, 50)} — using 0n`);
168
+ return 0n;
169
+ }
170
+ };
154
171
  if (data.baseline) {
155
172
  store.baseline = {
156
- timestamp: BigInt(data.baseline.timestamp),
173
+ timestamp: safeBigInt(data.baseline.timestamp, "baseline.timestamp"),
157
174
  balances: data.baseline.balances.map((b) => ({
158
175
  ...b,
159
- balance: BigInt(b.balance),
176
+ balance: safeBigInt(b.balance, "baseline.balance"),
160
177
  })),
161
178
  };
162
179
  }
163
- for (const snap of data.snapshots) {
164
- const ts = BigInt(snap.timestamp);
165
- const bals = snap.balances.map((b) => ({
180
+ for (const snap of data.snapshots ?? []) {
181
+ const ts = safeBigInt(snap.timestamp, "snapshot.timestamp");
182
+ const bals = (snap.balances ?? []).map((b) => ({
166
183
  ...b,
167
- balance: BigInt(b.balance),
184
+ balance: safeBigInt(b.balance, "snapshot.balance"),
168
185
  }));
169
186
  store.snapshots.set(ts, bals);
170
187
  store.orderedTimestamps.push(ts);
@@ -193,7 +210,7 @@ export function getBalancePnL(store, network = "mainnet-beta") {
193
210
  const startBalance = sumStablecoins(baseline.balances);
194
211
  const currentBalance = sumStablecoins(latest.balances);
195
212
  const delta = currentBalance - startBalance;
196
- const percentChange = startBalance > 0n ? Number((delta * 10000n) / startBalance) / 100 : 0;
213
+ const percentChange = computePnlPercent(delta, startBalance);
197
214
  return { startBalance, currentBalance, delta, percentChange };
198
215
  }
199
216
  //# sourceMappingURL=balance-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"balance-tracker.js","sourceRoot":"","sources":["../src/balance-tracker.ts"],"names":[],"mappings":"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"}
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"}