@pushchain/core 6.0.27-alpha.0 → 6.0.27-alpha.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 (78) hide show
  1. package/AGW.md +49 -17
  2. package/CHANGELOG.md +10 -0
  3. package/package.json +1 -1
  4. package/src/lib/agentic/agentic.types.d.ts +8 -3
  5. package/src/lib/agentic/capabilities.d.ts +1 -1
  6. package/src/lib/agentic/capabilities.js +1 -1
  7. package/src/lib/agentic/codec/abi-layout.d.ts +5 -0
  8. package/src/lib/agentic/codec/abi-layout.js +50 -3
  9. package/src/lib/agentic/codec/defaults.d.ts +2 -2
  10. package/src/lib/agentic/codec/defaults.js +2 -2
  11. package/src/lib/agentic/codec/ids.d.ts +1 -1
  12. package/src/lib/agentic/codec/ids.js +1 -1
  13. package/src/lib/agentic/codec/native.d.ts +4 -6
  14. package/src/lib/agentic/codec/native.js +27 -14
  15. package/src/lib/agentic/codec/pins.d.ts +20 -0
  16. package/src/lib/agentic/codec/pins.js +29 -0
  17. package/src/lib/agentic/codec/rules.d.ts +1 -1
  18. package/src/lib/agentic/codec/rules.js +3 -3
  19. package/src/lib/agentic/codec/session.d.ts +2 -2
  20. package/src/lib/agentic/codec/session.js +3 -3
  21. package/src/lib/agentic/codec/svm-terms.d.ts +1 -1
  22. package/src/lib/agentic/codec/svm-terms.js +7 -3
  23. package/src/lib/agentic/codec/universal-terms.d.ts +15 -0
  24. package/src/lib/agentic/codec/universal-terms.js +2 -0
  25. package/src/lib/agentic/codec/universal.js +22 -6
  26. package/src/lib/agentic/constants.d.ts +1 -0
  27. package/src/lib/agentic/constants.js +1 -0
  28. package/src/lib/agentic/contracts/abi/{v5 → v6}/agent-validator.js +1 -1
  29. package/src/lib/agentic/contracts/abi/{v5 → v6}/agw-factory.d.ts +299 -0
  30. package/src/lib/agentic/contracts/abi/{v5 → v6}/agw-factory.js +393 -2
  31. package/src/lib/agentic/contracts/abi/{v5 → v6}/agw.d.ts +96 -1
  32. package/src/lib/agentic/contracts/abi/{v5 → v6}/agw.js +128 -3
  33. package/src/lib/agentic/contracts/abi/{v5 → v6}/index.d.ts +1 -1
  34. package/src/lib/agentic/contracts/abi/{v5 → v6}/index.js +3 -3
  35. package/src/lib/agentic/contracts/abi/{v5 → v6}/smart-session.js +1 -1
  36. package/src/lib/agentic/contracts/abi/{v5 → v6}/universal-rules-policy.d.ts +329 -308
  37. package/src/lib/agentic/contracts/abi/{v5 → v6}/universal-rules-policy.js +396 -369
  38. package/src/lib/agentic/contracts/donut-v6.d.ts +11 -0
  39. package/src/lib/agentic/contracts/donut-v6.js +15 -0
  40. package/src/lib/agentic/contracts/{v5.d.ts → v6.d.ts} +800 -384
  41. package/src/lib/agentic/contracts/{v5.js → v6.js} +60 -33
  42. package/src/lib/agentic/deployments.d.ts +5 -5
  43. package/src/lib/agentic/deployments.js +19 -19
  44. package/src/lib/agentic/errors.d.ts +1 -7
  45. package/src/lib/agentic/errors.js +1 -9
  46. package/src/lib/agentic/execution/outbound.d.ts +4 -4
  47. package/src/lib/agentic/execution/outbound.js +5 -5
  48. package/src/lib/agentic/execution/send.js +3 -11
  49. package/src/lib/agentic/execution/svm-outbound.d.ts +1 -1
  50. package/src/lib/agentic/execution/svm-payload.js +1 -1
  51. package/src/lib/agentic/execution/svm-public.js +1 -7
  52. package/src/lib/agentic/execution/svm-send.d.ts +1 -1
  53. package/src/lib/agentic/execution/svm-send.js +0 -3
  54. package/src/lib/agentic/index.d.ts +1 -1
  55. package/src/lib/agentic/management/common.js +7 -5
  56. package/src/lib/agentic/management/create.d.ts +1 -13
  57. package/src/lib/agentic/management/create.js +24 -157
  58. package/src/lib/agentic/management/svm.js +2 -2
  59. package/src/lib/agentic/presets/catalog.d.ts +7 -2
  60. package/src/lib/agentic/presets/catalog.js +300 -3
  61. package/src/lib/agentic/presets/index.js +93 -18
  62. package/src/lib/agentic/presets/types.d.ts +5 -1
  63. package/src/lib/agentic/public-rule.d.ts +2 -2
  64. package/src/lib/agentic/public-rule.js +24 -40
  65. package/src/lib/agentic/reads/rules.js +27 -11
  66. package/src/lib/agentic/reads/svm.d.ts +1 -1
  67. package/src/lib/agentic/reads/svm.js +2 -2
  68. package/src/lib/agentic/response.js +7 -7
  69. package/src/lib/agentic/revert.js +5 -5
  70. package/src/lib/agentic/runtime.js +12 -3
  71. package/src/lib/agentic/utils.js +1 -1
  72. package/src/lib/constants/index.d.ts +1 -0
  73. package/src/lib/index.d.ts +1 -1
  74. package/src/lib/push-chain/push-chain.d.ts +1 -0
  75. package/src/lib/agentic/contracts/donut-v5.d.ts +0 -11
  76. package/src/lib/agentic/contracts/donut-v5.js +0 -15
  77. /package/src/lib/agentic/contracts/abi/{v5 → v6}/agent-validator.d.ts +0 -0
  78. /package/src/lib/agentic/contracts/abi/{v5 → v6}/smart-session.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.v5 = exports.UEA_MULTICALL_PREFIX = exports.SEND_OUTBOUND_SELECTOR = exports.MODE_BATCH = exports.MODE_SINGLE = void 0;
3
+ exports.v6 = exports.UEA_MULTICALL_PREFIX = exports.SEND_OUTBOUND_SELECTOR = exports.MODE_BATCH = exports.MODE_SINGLE = void 0;
4
4
  const viem_1 = require("viem");
5
- const v5_1 = require("./abi/v5");
5
+ const v6_1 = require("./abi/v6");
6
6
  exports.MODE_SINGLE = `0x${'00'.repeat(32)}`;
7
7
  exports.MODE_BATCH = `0x01${'00'.repeat(31)}`;
8
8
  exports.SEND_OUTBOUND_SELECTOR = '0x77b86bec';
@@ -22,36 +22,36 @@ const EXECUTION_TUPLE = [
22
22
  ],
23
23
  },
24
24
  ];
25
- exports.v5 = {
26
- id: 'v5',
25
+ exports.v6 = {
26
+ id: 'v6',
27
27
  abis: {
28
- wallet: v5_1.AGW_ABI,
29
- factory: v5_1.AGW_FACTORY_ABI,
30
- engine: v5_1.SMART_SESSION_ABI,
31
- policy: v5_1.UNIVERSAL_RULES_POLICY_ABI,
28
+ wallet: v6_1.AGW_ABI,
29
+ factory: v6_1.AGW_FACTORY_ABI,
30
+ engine: v6_1.SMART_SESSION_ABI,
31
+ policy: v6_1.UNIVERSAL_RULES_POLICY_ABI,
32
32
  },
33
33
  events: {
34
34
  walletDeployed: (0, viem_1.getAbiItem)({
35
- abi: v5_1.AGW_FACTORY_ABI,
35
+ abi: v6_1.AGW_FACTORY_ABI,
36
36
  name: 'WalletDeployed',
37
37
  }),
38
38
  checkpointed: (0, viem_1.getAbiItem)({
39
- abi: v5_1.AGW_ABI,
39
+ abi: v6_1.AGW_ABI,
40
40
  name: 'Checkpointed',
41
41
  }),
42
42
  rulesGranted: (0, viem_1.getAbiItem)({
43
- abi: v5_1.AGW_ABI,
43
+ abi: v6_1.AGW_ABI,
44
44
  name: 'RulesGranted',
45
45
  }),
46
46
  rulesRevoked: (0, viem_1.getAbiItem)({
47
- abi: v5_1.AGW_ABI,
47
+ abi: v6_1.AGW_ABI,
48
48
  name: 'RulesRevoked',
49
49
  }),
50
50
  },
51
51
  // ---------------------------------------------------------------- encoders
52
52
  encodeDeployWallet(label) {
53
53
  return (0, viem_1.encodeFunctionData)({
54
- abi: v5_1.AGW_FACTORY_ABI,
54
+ abi: v6_1.AGW_FACTORY_ABI,
55
55
  functionName: 'deployWallet',
56
56
  args: [label],
57
57
  });
@@ -68,7 +68,7 @@ exports.v5 = {
68
68
  const zero32 = `0x${'00'.repeat(32)}`;
69
69
  const zeroAddress = '0x0000000000000000000000000000000000000000';
70
70
  return (0, viem_1.encodeFunctionData)({
71
- abi: v5_1.AGW_FACTORY_ABI,
71
+ abi: v6_1.AGW_FACTORY_ABI,
72
72
  functionName: 'deployWalletWithSig',
73
73
  args: [
74
74
  {
@@ -90,30 +90,57 @@ exports.v5 = {
90
90
  ],
91
91
  });
92
92
  },
93
+ encodeCreateWalletAt(owner, index, wallet, label, rules) {
94
+ const zero32 = `0x${'00'.repeat(32)}`;
95
+ const zeroAddress = '0x0000000000000000000000000000000000000000';
96
+ return (0, viem_1.encodeFunctionData)({
97
+ abi: v6_1.AGW_FACTORY_ABI,
98
+ functionName: 'createWalletWithSig',
99
+ args: [
100
+ {
101
+ owner,
102
+ wallet,
103
+ executor: zeroAddress,
104
+ index,
105
+ sessionHash: zero32,
106
+ mode: zero32,
107
+ execCalldataHash: zero32,
108
+ nonceKey: BigInt(0),
109
+ nonceSeq: BigInt(0),
110
+ grantNonce: BigInt(0),
111
+ deadline: 0,
112
+ signerChainId: BigInt(0),
113
+ },
114
+ '0x',
115
+ label,
116
+ rules,
117
+ ],
118
+ });
119
+ },
93
120
  encodeGrantRules(session) {
94
121
  return (0, viem_1.encodeFunctionData)({
95
- abi: v5_1.AGW_ABI,
122
+ abi: v6_1.AGW_ABI,
96
123
  functionName: 'grantRules',
97
124
  args: [session],
98
125
  });
99
126
  },
100
127
  encodeRevokeRules(rulesId) {
101
128
  return (0, viem_1.encodeFunctionData)({
102
- abi: v5_1.AGW_ABI,
129
+ abi: v6_1.AGW_ABI,
103
130
  functionName: 'revokeRules',
104
131
  args: [rulesId],
105
132
  });
106
133
  },
107
134
  encodeRevokeAllRules() {
108
135
  return (0, viem_1.encodeFunctionData)({
109
- abi: v5_1.AGW_ABI,
136
+ abi: v6_1.AGW_ABI,
110
137
  functionName: 'revokeAllRules',
111
138
  args: [],
112
139
  });
113
140
  },
114
141
  encodeSetLabel(label) {
115
142
  return (0, viem_1.encodeFunctionData)({
116
- abi: v5_1.AGW_ABI,
143
+ abi: v6_1.AGW_ABI,
117
144
  functionName: 'setLabel',
118
145
  args: [label],
119
146
  });
@@ -127,9 +154,9 @@ exports.v5 = {
127
154
  throw new Error('execute needs at least one call');
128
155
  if (calls.length === 1) {
129
156
  return (0, viem_1.encodeFunctionData)({
130
- abi: v5_1.AGW_ABI,
157
+ abi: v6_1.AGW_ABI,
131
158
  functionName: 'execute',
132
- args: [exports.MODE_SINGLE, exports.v5.packSingle(calls[0])],
159
+ args: [exports.MODE_SINGLE, exports.v6.packSingle(calls[0])],
133
160
  });
134
161
  }
135
162
  const batch = (0, viem_1.encodeAbiParameters)(EXECUTION_TUPLE, [
@@ -140,21 +167,21 @@ exports.v5 = {
140
167
  })),
141
168
  ]);
142
169
  return (0, viem_1.encodeFunctionData)({
143
- abi: v5_1.AGW_ABI,
170
+ abi: v6_1.AGW_ABI,
144
171
  functionName: 'execute',
145
172
  args: [exports.MODE_BATCH, batch],
146
173
  });
147
174
  },
148
175
  encodeExecuteAsAgent(rulesId, call) {
149
176
  return (0, viem_1.encodeFunctionData)({
150
- abi: v5_1.AGW_ABI,
177
+ abi: v6_1.AGW_ABI,
151
178
  functionName: 'executeAsAgent',
152
- args: [rulesId, exports.MODE_SINGLE, exports.v5.packSingle(call)],
179
+ args: [rulesId, exports.MODE_SINGLE, exports.v6.packSingle(call)],
153
180
  });
154
181
  },
155
182
  encodeAssertSpentNative(configId, wallet, expected) {
156
183
  return (0, viem_1.encodeFunctionData)({
157
- abi: v5_1.UNIVERSAL_RULES_POLICY_ABI,
184
+ abi: v6_1.UNIVERSAL_RULES_POLICY_ABI,
158
185
  functionName: 'assertSpent',
159
186
  args: [
160
187
  configId,
@@ -167,7 +194,7 @@ exports.v5 = {
167
194
  },
168
195
  encodeAssertSpentUniversal(configId, wallet, expectedSpent) {
169
196
  return (0, viem_1.encodeFunctionData)({
170
- abi: v5_1.UNIVERSAL_RULES_POLICY_ABI,
197
+ abi: v6_1.UNIVERSAL_RULES_POLICY_ABI,
171
198
  functionName: 'assertSpent',
172
199
  args: [configId, wallet, expectedSpent],
173
200
  });
@@ -176,7 +203,7 @@ exports.v5 = {
176
203
  decodeWalletCall(data) {
177
204
  let decoded;
178
205
  try {
179
- decoded = (0, viem_1.decodeFunctionData)({ abi: v5_1.AGW_ABI, data });
206
+ decoded = (0, viem_1.decodeFunctionData)({ abi: v6_1.AGW_ABI, data });
180
207
  }
181
208
  catch {
182
209
  return null;
@@ -215,7 +242,7 @@ exports.v5 = {
215
242
  return k;
216
243
  },
217
244
  parseWalletDeployed(logs, factory) {
218
- return decodeMatching(logs, factory, exports.v5.events.walletDeployed).map((args) => ({
245
+ return decodeMatching(logs, factory, exports.v6.events.walletDeployed).map((args) => ({
219
246
  owner: (0, viem_1.getAddress)(args['owner']),
220
247
  index: BigInt(args['index']),
221
248
  wallet: (0, viem_1.getAddress)(args['wallet']),
@@ -223,14 +250,14 @@ exports.v5 = {
223
250
  }));
224
251
  },
225
252
  parseRulesGranted(logs, wallet) {
226
- return decodeMatching(logs, wallet, exports.v5.events.rulesGranted).map((args) => ({
253
+ return decodeMatching(logs, wallet, exports.v6.events.rulesGranted).map((args) => ({
227
254
  rulesId: args['rulesId'],
228
255
  mode: Number(args['mode']),
229
256
  chainNamespace: args['chainNamespace'],
230
257
  }));
231
258
  },
232
259
  parseRulesRevoked(logs, wallet) {
233
- return decodeMatching(logs, wallet, exports.v5.events.rulesRevoked).map((args) => ({
260
+ return decodeMatching(logs, wallet, exports.v6.events.rulesRevoked).map((args) => ({
234
261
  rulesId: args['rulesId'],
235
262
  }));
236
263
  },
@@ -238,11 +265,11 @@ exports.v5 = {
238
265
  return logs
239
266
  .filter((l) => sameAddress(l.address, wallet) &&
240
267
  l.topics[0]?.toLowerCase() ===
241
- (0, viem_1.toEventSelector)(exports.v5.events.checkpointed).toLowerCase())
268
+ (0, viem_1.toEventSelector)(exports.v6.events.checkpointed).toLowerCase())
242
269
  .flatMap((log) => {
243
270
  try {
244
271
  const ev = (0, viem_1.decodeEventLog)({
245
- abi: [exports.v5.events.checkpointed],
272
+ abi: [exports.v6.events.checkpointed],
246
273
  ...log,
247
274
  strict: true,
248
275
  });
@@ -254,7 +281,7 @@ exports.v5 = {
254
281
  })
255
282
  .map(({ log, args }) => ({
256
283
  seq: Number(args['seq']),
257
- kind: exports.v5.decodeCheckpointKind(Number(args['kind'])),
284
+ kind: exports.v6.decodeCheckpointKind(Number(args['kind'])),
258
285
  ref: args['ref'],
259
286
  blockNumber: BigInt(log.blockNumber ?? BigInt(0)),
260
287
  txHash: log.transactionHash,
@@ -313,4 +340,4 @@ function decodeMatching(logs, emitter, event) {
313
340
  }
314
341
  return out;
315
342
  }
316
- //# sourceMappingURL=v5.js.map
343
+ //# sourceMappingURL=v6.js.map
@@ -1,7 +1,7 @@
1
1
  import { type Address } from 'viem';
2
2
  import { PUSH_NETWORK } from '../constants/enums';
3
3
  import { AgenticCapability } from './capabilities';
4
- import { type AgwContracts } from './contracts/v5';
4
+ import { type AgwContracts } from './contracts/v6';
5
5
  import type { ChainReader } from './contracts/reader';
6
6
  /**
7
7
  * A verified AGW contract generation on one Push network. The registry is the
@@ -10,7 +10,7 @@ import type { ChainReader } from './contracts/reader';
10
10
  * are NOT registered because they do not implement this ABI.
11
11
  */
12
12
  export interface AgenticGeneration {
13
- /** Stable identifier, e.g. 'v5'. */
13
+ /** Stable identifier, e.g. 'v6'. */
14
14
  id: string;
15
15
  /** Contract source commit the ABI was generated from. */
16
16
  sourceCommit: string;
@@ -32,8 +32,8 @@ export interface AgenticGeneration {
32
32
  capabilities: ReadonlySet<AgenticCapability>;
33
33
  contracts: AgwContracts;
34
34
  }
35
- /** Capabilities the v5 ABI actually implements. Target-only features are absent. */
36
- export declare const V5_CAPABILITIES: ReadonlySet<AgenticCapability>;
35
+ /** Capabilities the v6 ABI actually implements. Target-only features are absent. */
36
+ export declare const V6_CAPABILITIES: ReadonlySet<AgenticCapability>;
37
37
  /**
38
38
  * @internal Register a generation that is NOT a verified release deployment —
39
39
  * the local contract harness and E2E manifest loader use this. Not exported
@@ -42,7 +42,7 @@ export declare const V5_CAPABILITIES: ReadonlySet<AgenticCapability>;
42
42
  export declare function registerAgenticGeneration(input: Omit<AgenticGeneration, 'contracts' | 'capabilities'> & {
43
43
  capabilities?: ReadonlySet<AgenticCapability>;
44
44
  }): AgenticGeneration;
45
- /** @internal Test/harness cleanup. Restores the checked Donut v5 registry. */
45
+ /** @internal Test/harness cleanup. Restores the checked Donut v6 registry. */
46
46
  export declare function resetAgenticGenerations(): void;
47
47
  /** Grant compatibility check; the unrestricted owner door does not consult URP. */
48
48
  export declare function verifyPolicyVersion(reader: ChainReader, gen: AgenticGeneration): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.V5_CAPABILITIES = void 0;
3
+ exports.V6_CAPABILITIES = void 0;
4
4
  exports.registerAgenticGeneration = registerAgenticGeneration;
5
5
  exports.resetAgenticGenerations = resetAgenticGenerations;
6
6
  exports.verifyPolicyVersion = verifyPolicyVersion;
@@ -12,11 +12,11 @@ exports.resolveWalletGeneration = resolveWalletGeneration;
12
12
  const viem_1 = require("viem");
13
13
  const enums_1 = require("../constants/enums");
14
14
  const capabilities_1 = require("./capabilities");
15
- const v5_1 = require("./contracts/v5");
15
+ const v6_1 = require("./contracts/v6");
16
16
  const errors_1 = require("./errors");
17
- const donut_v5_1 = require("./contracts/donut-v5");
18
- /** Capabilities the v5 ABI actually implements. Target-only features are absent. */
19
- exports.V5_CAPABILITIES = new Set([
17
+ const donut_v6_1 = require("./contracts/donut-v6");
18
+ /** Capabilities the v6 ABI actually implements. Target-only features are absent. */
19
+ exports.V6_CAPABILITIES = new Set([
20
20
  capabilities_1.AgenticCapability.WALLET_READS,
21
21
  capabilities_1.AgenticCapability.ACTIVE_RULE_READS,
22
22
  capabilities_1.AgenticCapability.OWNER_EXECUTE,
@@ -31,19 +31,19 @@ exports.V5_CAPABILITIES = new Set([
31
31
  capabilities_1.AgenticCapability.SET_LABEL,
32
32
  ]);
33
33
  /**
34
- * V5 only. Unsupported networks fail before signing; no legacy adapter fallback.
34
+ * V6 only. Unsupported networks fail before signing; no legacy adapter fallback.
35
35
  */
36
36
  const VERIFIED_DEPLOYMENTS = [
37
37
  {
38
- id: 'v5',
39
- sourceCommit: donut_v5_1.V5_SOURCE_COMMIT,
38
+ id: 'v6',
39
+ sourceCommit: donut_v6_1.V6_SOURCE_COMMIT,
40
40
  network: enums_1.PUSH_NETWORK.TESTNET_DONUT,
41
41
  advertised: true,
42
- addresses: donut_v5_1.DONUT_V5_ADDRESSES,
43
- startBlock: donut_v5_1.DONUT_V5_START_BLOCK,
42
+ addresses: donut_v6_1.DONUT_V6_ADDRESSES,
43
+ startBlock: donut_v6_1.DONUT_V6_START_BLOCK,
44
44
  accountId: 'push.agw.1.0.0',
45
- capabilities: exports.V5_CAPABILITIES,
46
- contracts: v5_1.v5,
45
+ capabilities: exports.V6_CAPABILITIES,
46
+ contracts: v6_1.v6,
47
47
  },
48
48
  ];
49
49
  const registry = [...VERIFIED_DEPLOYMENTS];
@@ -53,7 +53,7 @@ const registry = [...VERIFIED_DEPLOYMENTS];
53
53
  * from the package entry point.
54
54
  */
55
55
  function registerAgenticGeneration(input) {
56
- if (input.id !== v5_1.v5.id || input.sourceCommit !== donut_v5_1.V5_SOURCE_COMMIT) {
56
+ if (input.id !== v6_1.v6.id || input.sourceCommit !== donut_v6_1.V6_SOURCE_COMMIT) {
57
57
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.CAPABILITY_UNAVAILABLE, `no contract adapter for generation "${input.id}"`);
58
58
  }
59
59
  const gen = {
@@ -66,8 +66,8 @@ function registerAgenticGeneration(input) {
66
66
  sessionValidator: (0, viem_1.getAddress)(input.addresses.sessionValidator),
67
67
  gateway: (0, viem_1.getAddress)(input.addresses.gateway),
68
68
  },
69
- capabilities: input.capabilities ?? exports.V5_CAPABILITIES,
70
- contracts: v5_1.v5,
69
+ capabilities: input.capabilities ?? exports.V6_CAPABILITIES,
70
+ contracts: v6_1.v6,
71
71
  };
72
72
  const existing = registry.findIndex((g) => g.network === gen.network && g.addresses.factory === gen.addresses.factory);
73
73
  if (existing >= 0)
@@ -76,7 +76,7 @@ function registerAgenticGeneration(input) {
76
76
  verifiedWiring.clear();
77
77
  return gen;
78
78
  }
79
- /** @internal Test/harness cleanup. Restores the checked Donut v5 registry. */
79
+ /** @internal Test/harness cleanup. Restores the checked Donut v6 registry. */
80
80
  function resetAgenticGenerations() {
81
81
  registry.splice(0, registry.length, ...VERIFIED_DEPLOYMENTS);
82
82
  verifiedWiring.clear();
@@ -89,7 +89,7 @@ async function verifyPolicyVersion(reader, gen) {
89
89
  functionName: 'version',
90
90
  });
91
91
  if (version !== '3.1.0')
92
- throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.CAPABILITY_UNAVAILABLE, `URP version ${String(version)} is not supported by the v5 adapter`);
92
+ throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.CAPABILITY_UNAVAILABLE, `URP version ${String(version)} is not supported by the v6 adapter`);
93
93
  }
94
94
  function generationsFor(network) {
95
95
  return registry.filter((g) => g.network === network);
@@ -100,7 +100,7 @@ function currentGeneration(network) {
100
100
  const gen = gens[gens.length - 1];
101
101
  if (!gen) {
102
102
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.CAPABILITY_UNAVAILABLE, `no verified AGW deployment is registered for ${network}`, {
103
- hint: 'AGW v5 is configured on Donut only; this Push network has no registered v5 deployment.',
103
+ hint: 'AGW v6 is configured on Donut only; this Push network has no registered v6 deployment.',
104
104
  details: { network, assumption: 'A07' },
105
105
  });
106
106
  }
@@ -158,7 +158,7 @@ async function resolveWalletGeneration(reader, network, wallet) {
158
158
  try {
159
159
  factory = (0, viem_1.getAddress)((await reader.readContract({
160
160
  address: wallet,
161
- abi: v5_1.v5.abis.wallet,
161
+ abi: v6_1.v6.abis.wallet,
162
162
  functionName: 'factory',
163
163
  })));
164
164
  }
@@ -25,18 +25,16 @@ export declare const AGENTIC_ERROR_CODE: {
25
25
  readonly RULE_READ_FAILED: "RULE_READ_FAILED";
26
26
  readonly INCONSISTENT_READ: "INCONSISTENT_READ";
27
27
  readonly INDEX_RACE: "INDEX_RACE";
28
- readonly CREATE_PARTIAL: "CREATE_PARTIAL";
29
28
  readonly RECEIPT_MISMATCH: "RECEIPT_MISMATCH";
30
29
  readonly RECEIPT_UNAVAILABLE: "RECEIPT_UNAVAILABLE";
31
30
  readonly AGENT_GAS_INSUFFICIENT: "AGENT_GAS_INSUFFICIENT";
32
31
  readonly WALLET_BALANCE_INSUFFICIENT: "WALLET_BALANCE_INSUFFICIENT";
33
- readonly GATEWAY_ALLOWANCE_INSUFFICIENT: "GATEWAY_ALLOWANCE_INSUFFICIENT";
34
32
  };
35
33
  export type AgenticErrorCode = (typeof AGENTIC_ERROR_CODE)[keyof typeof AGENTIC_ERROR_CODE];
36
34
  /**
37
35
  * Pre-signature AGW failure: invalid input, unsupported capability, failed
38
36
  * eligibility or a read that cannot be trusted. Nothing was signed or sent
39
- * unless `details` explicitly records committed hashes (CREATE_PARTIAL).
37
+ * except receipt errors, which retain the submitted transaction hash.
40
38
  */
41
39
  export declare class AgenticError extends Error {
42
40
  readonly code: AgenticErrorCode;
@@ -57,14 +55,10 @@ export declare class AgenticError extends Error {
57
55
  */
58
56
  export declare class AgenticRevertError extends PushChainExecutionError {
59
57
  readonly agenticCode?: string;
60
- readonly transactionHashes?: `0x${string}`[];
61
- readonly pendingTransactionHash?: `0x${string}`;
62
58
  constructor(message: string, opts?: {
63
59
  decodedError?: DecodedErrorPayload;
64
60
  gatewayTxHash?: string;
65
61
  agenticCode?: string;
66
- transactionHashes?: `0x${string}`[];
67
- pendingTransactionHash?: `0x${string}`;
68
62
  cause?: unknown;
69
63
  });
70
64
  }
@@ -34,17 +34,15 @@ exports.AGENTIC_ERROR_CODE = {
34
34
  RULE_READ_FAILED: 'RULE_READ_FAILED',
35
35
  INCONSISTENT_READ: 'INCONSISTENT_READ',
36
36
  INDEX_RACE: 'INDEX_RACE',
37
- CREATE_PARTIAL: 'CREATE_PARTIAL',
38
37
  RECEIPT_MISMATCH: 'RECEIPT_MISMATCH',
39
38
  RECEIPT_UNAVAILABLE: 'RECEIPT_UNAVAILABLE',
40
39
  AGENT_GAS_INSUFFICIENT: 'AGENT_GAS_INSUFFICIENT',
41
40
  WALLET_BALANCE_INSUFFICIENT: 'WALLET_BALANCE_INSUFFICIENT',
42
- GATEWAY_ALLOWANCE_INSUFFICIENT: 'GATEWAY_ALLOWANCE_INSUFFICIENT',
43
41
  };
44
42
  /**
45
43
  * Pre-signature AGW failure: invalid input, unsupported capability, failed
46
44
  * eligibility or a read that cannot be trusted. Nothing was signed or sent
47
- * unless `details` explicitly records committed hashes (CREATE_PARTIAL).
45
+ * except receipt errors, which retain the submitted transaction hash.
48
46
  */
49
47
  class AgenticError extends Error {
50
48
  code;
@@ -69,8 +67,6 @@ exports.AgenticError = AgenticError;
69
67
  */
70
68
  class AgenticRevertError extends errors_1.PushChainExecutionError {
71
69
  agenticCode;
72
- transactionHashes;
73
- pendingTransactionHash;
74
70
  constructor(message, opts = {}) {
75
71
  super(message, {
76
72
  decodedError: opts.decodedError,
@@ -79,10 +75,6 @@ class AgenticRevertError extends errors_1.PushChainExecutionError {
79
75
  });
80
76
  this.name = 'AgenticRevertError';
81
77
  this.agenticCode = opts.agenticCode;
82
- this.transactionHashes = opts.transactionHashes
83
- ? [...opts.transactionHashes]
84
- : undefined;
85
- this.pendingTransactionHash = opts.pendingTransactionHash;
86
78
  }
87
79
  }
88
80
  exports.AgenticRevertError = AgenticRevertError;
@@ -3,9 +3,9 @@ import { CHAIN } from '../../constants/enums';
3
3
  import type { MoveableToken } from '../../constants/tokens';
4
4
  import type { UniversalExecuteParams, UniversalOutboundTxRequest } from '../../orchestrator/orchestrator.types';
5
5
  import type { AgenticGeneration } from '../deployments';
6
- import type { Call } from '../contracts/v5';
6
+ import type { Call } from '../contracts/v6';
7
7
  import type { AgenticRuntime } from '../runtime';
8
- /** URP MAX_ACTIONS_PER_REQUEST at v5. */
8
+ /** URP MAX_ACTIONS_PER_REQUEST at v6. */
9
9
  export declare const MAX_DESTINATION_CALLS = 10;
10
10
  export interface DestinationCall {
11
11
  to: Address;
@@ -46,8 +46,8 @@ export declare function destinationCalls(params: UniversalExecuteParams, ctx: {
46
46
  * - payload = UEA_MULTICALL ‖ abi.encode(Multicall[1..10]) executed by the AGW's CEA
47
47
  * - value = protocolFee + maxPCForGas, paid from the AGW's PC
48
48
  * The destination account is resolved from the AGW, never from the signer.
49
- * The SDK never writes a gateway allowance on either door: the gateway pulls
50
- * from an allowance the owner set separately with an ordinary send.
49
+ * The SDK does not add approval calls: the v6 wallet approves and clears
50
+ * the gateway allowance within its own outbound execution.
51
51
  */
52
52
  export declare function composeOutbound(runtime: AgenticRuntime, gen: AgenticGeneration, wallet: Address, params: UniversalExecuteParams, opts: {
53
53
  ruleAssets?: readonly Address[];
@@ -10,11 +10,11 @@ const abi_1 = require("../../constants/abi");
10
10
  const orchestrator_types_1 = require("../../orchestrator/orchestrator.types");
11
11
  const route_handlers_1 = require("../../orchestrator/internals/route-handlers");
12
12
  const capabilities_1 = require("../capabilities");
13
- const v5_1 = require("../contracts/v5");
13
+ const v6_1 = require("../contracts/v6");
14
14
  const errors_1 = require("../errors");
15
15
  /** Includes first-use CEA deployment; explicit caller gas always takes precedence. */
16
16
  const FIRST_USE_EVM_GAS_LIMIT = BigInt(2_000_000);
17
- /** URP MAX_ACTIONS_PER_REQUEST at v5. */
17
+ /** URP MAX_ACTIONS_PER_REQUEST at v6. */
18
18
  exports.MAX_DESTINATION_CALLS = 10;
19
19
  const MULTICALL_TUPLE = [
20
20
  {
@@ -81,8 +81,8 @@ function destinationCalls(params, ctx) {
81
81
  * - payload = UEA_MULTICALL ‖ abi.encode(Multicall[1..10]) executed by the AGW's CEA
82
82
  * - value = protocolFee + maxPCForGas, paid from the AGW's PC
83
83
  * The destination account is resolved from the AGW, never from the signer.
84
- * The SDK never writes a gateway allowance on either door: the gateway pulls
85
- * from an allowance the owner set separately with an ordinary send.
84
+ * The SDK does not add approval calls: the v6 wallet approves and clears
85
+ * the gateway allowance within its own outbound execution.
86
86
  */
87
87
  async function composeOutbound(runtime, gen, wallet, params, opts) {
88
88
  (0, capabilities_1.requireCapability)(gen.capabilities, capabilities_1.AgenticCapability.UNIVERSAL_EVM_OUTBOUND);
@@ -154,7 +154,7 @@ async function composeOutbound(runtime, gen, wallet, params, opts) {
154
154
  const maxPCForGas = quote.nativeValueForGas;
155
155
  const value = quote.protocolFee + maxPCForGas;
156
156
  const payload = (0, viem_1.concat)([
157
- v5_1.UEA_MULTICALL_PREFIX,
157
+ v6_1.UEA_MULTICALL_PREFIX,
158
158
  (0, viem_1.encodeAbiParameters)(MULTICALL_TUPLE, [calls]),
159
159
  ]);
160
160
  const request = {
@@ -8,7 +8,7 @@ const progress_hook_types_1 = require("../../progress-hook/progress-hook.types")
8
8
  const route_detector_1 = require("../../orchestrator/route-detector");
9
9
  const helpers_1 = require("../../orchestrator/internals/helpers");
10
10
  const capabilities_1 = require("../capabilities");
11
- const v5_1 = require("../contracts/v5");
11
+ const v6_1 = require("../contracts/v6");
12
12
  const ids_1 = require("../codec/ids");
13
13
  const errors_1 = require("../errors");
14
14
  const common_1 = require("../management/common");
@@ -173,7 +173,7 @@ async function agenticSend(runtime, actx, params, options) {
173
173
  }
174
174
  rulesId = rule.rulesId;
175
175
  const cfg = await snap.read(gen.addresses.rulesPolicy, gen.contracts.abis.policy, 'getConfig', [
176
- (0, ids_1.configId)(wallet, rule.rulesId, (0, ids_1.actionId)(gen.addresses.gateway, v5_1.SEND_OUTBOUND_SELECTOR)),
176
+ (0, ids_1.configId)(wallet, rule.rulesId, (0, ids_1.actionId)(gen.addresses.gateway, v6_1.SEND_OUTBOUND_SELECTOR)),
177
177
  wallet,
178
178
  ]);
179
179
  ruleAssets = cfg.assets.map((a) => (0, viem_1.getAddress)(a.token));
@@ -185,7 +185,7 @@ async function agenticSend(runtime, actx, params, options) {
185
185
  });
186
186
  outboundChain = out.chain;
187
187
  meta = { route: 'UOA_TO_CEA', destinationAccount: out.destinationAccount };
188
- const [walletPc, tokenBalance, allowance] = await Promise.all([
188
+ const [walletPc, tokenBalance] = await Promise.all([
189
189
  runtime.reader.getBalance({
190
190
  address: wallet,
191
191
  blockNumber: snap.blockNumber,
@@ -193,7 +193,6 @@ async function agenticSend(runtime, actx, params, options) {
193
193
  out.amount > BigInt(0)
194
194
  ? snap.read(out.token, abi_1.ERC20_EVM, 'balanceOf', [wallet])
195
195
  : Promise.resolve(BigInt(0)),
196
- snap.read(out.token, abi_1.ERC20_EVM, 'allowance', [wallet, gen.addresses.gateway]),
197
196
  ]);
198
197
  if (walletPc < out.value) {
199
198
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.WALLET_BALANCE_INSUFFICIENT, `wallet ${wallet} holds ${walletPc} PC wei; this outbound needs ${out.value} (protocol fee + gas cap)`, { hint: "Fund the wallet's PC with an ordinary send to its address." });
@@ -201,13 +200,6 @@ async function agenticSend(runtime, actx, params, options) {
201
200
  if (tokenBalance < out.amount) {
202
201
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.WALLET_BALANCE_INSUFFICIENT, `wallet ${wallet} holds ${tokenBalance} of ${out.token}; this outbound burns ${out.amount}`);
203
202
  }
204
- // Both doors only consume an allowance the owner set separately; the SDK
205
- // never writes one (a write from a stale read could restore revoked authority).
206
- if (out.amount > allowance) {
207
- throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.GATEWAY_ALLOWANCE_INSUFFICIENT, `the gateway may pull ${allowance} of ${out.token} from the wallet; this outbound needs ${out.amount}`, {
208
- hint: 'Set a bounded allowance first with an owner-door send: approve(gateway, cap) on the token (approve(gateway, 0) removes it).',
209
- });
210
- }
211
203
  if (actx.door === 'agent') {
212
204
  if (expectedCEA && expectedCEA !== out.destinationAccount) {
213
205
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.INCONSISTENT_READ, `rule ${rulesId} committed destination account ${expectedCEA}, but the wallet's account on ${out.chain} now derives to ${out.destinationAccount}`, {
@@ -1,6 +1,6 @@
1
1
  /** Outbound encoding plus a diagnostic-only policy preview. */
2
2
  import { type Address, type Hex } from 'viem';
3
- import type { Call, SvmConfigRead } from '../contracts/v5';
3
+ import type { Call, SvmConfigRead } from '../contracts/v6';
4
4
  export interface SvmOutboundInput {
5
5
  wallet: Address;
6
6
  gateway: Address;
@@ -90,7 +90,7 @@ function validateAgwSvmPayload(terms, recipient, payload) {
90
90
  if (rule < 0)
91
91
  fail('ProgramNotAllowed');
92
92
  const fixed = terms.programs[rule].maxAccounts;
93
- if (fixed && fixed !== v.accounts.length)
93
+ if (fixed !== 255 && fixed !== v.accounts.length)
94
94
  fail('SvmAccountCountMismatch');
95
95
  const pins = terms.pins.filter((p) => p.ruleIndex === rule);
96
96
  for (const p of pins) {
@@ -94,22 +94,16 @@ async function sendPublicSvm(runtime, actx, p, options) {
94
94
  destinationTransfer = { recipient: target, token, amount };
95
95
  transferValue = quote.isNative ? amount : BigInt(0);
96
96
  }
97
- const [pc, balance, allowance] = await Promise.all([
97
+ const [pc, balance] = await Promise.all([
98
98
  runtime.reader.getBalance({
99
99
  address: wallet,
100
100
  blockNumber: snap.blockNumber,
101
101
  }),
102
102
  snap.read(token, viem_1.erc20Abi, 'balanceOf', [wallet]),
103
- snap.read(token, viem_1.erc20Abi, 'allowance', [
104
- wallet,
105
- gen.addresses.gateway,
106
- ]),
107
103
  ]);
108
104
  const value = quote.protocolFee + quote.nativeValueForGas;
109
105
  if (pc < value || balance < amount)
110
106
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.WALLET_BALANCE_INSUFFICIENT, 'wallet cannot cover Solana outbound');
111
- if (allowance < amount)
112
- throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.GATEWAY_ALLOWANCE_INSUFFICIENT, 'set the wallet gateway allowance separately');
113
107
  const call = (0, svm_outbound_1.buildAgwSvmAction)({
114
108
  wallet,
115
109
  gateway: gen.addresses.gateway,
@@ -17,7 +17,7 @@ export interface PreparedSvmRequest {
17
17
  }
18
18
  export declare function prepareSvmAgentExecution(runtime: AgenticRuntime, gen: AgenticGeneration, input: PreparedSvmRequest, metadata: SvmMetadataProvider): Promise<{
19
19
  stored: import("../reads/svm").SvmRuleSnapshot;
20
- call: import("../contracts/v5").Call;
20
+ call: import("../contracts/v6").Call;
21
21
  instruction: {
22
22
  recipient: `0x${string}`;
23
23
  payload: `0x${string}`;
@@ -55,9 +55,6 @@ async function prepareSvmAgentExecution(runtime, gen, input, metadata) {
55
55
  const balance = await snap.read(input.token, viem_1.erc20Abi, 'balanceOf', [input.wallet]);
56
56
  if (balance < input.amount)
57
57
  throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.WALLET_BALANCE_INSUFFICIENT, 'wallet token balance is below the SVM amount');
58
- const allowance = await snap.read(input.token, viem_1.erc20Abi, 'allowance', [input.wallet, gen.addresses.gateway]);
59
- if (allowance < input.amount)
60
- throw new errors_1.AgenticError(errors_1.AGENTIC_ERROR_CODE.GATEWAY_ALLOWANCE_INSUFFICIENT, 'owner must establish the SVM gateway allowance separately');
61
58
  }
62
59
  const signerPc = await runtime.signerBalance();
63
60
  const gasReserve = (await runtime.getGasPrice()) * BigInt(10_000_000);
@@ -1,4 +1,4 @@
1
- export type { AgenticAddress, AgenticHex, AgenticDoor, AgenticNamespace, AgenticProgressHook, AgenticTxMetadata, AgenticWallet, RuleCall as AllowedCall, RuleAsset as AssetCap, Checkpoint, CheckpointKind, CreateOptions, CreateResult, ForeignChainNamespace, DecodedSolanaRule, Rule, RuleInput, Pin, Spent, WalletMarker, RulesRecord, Selector, WalletInfo, WalletSummary, } from './agentic.types';
1
+ export type { AgenticAddress, AgenticHex, AgenticDoor, AgenticNamespace, AgenticProgressHook, AgenticTxMetadata, AgenticWallet, RuleCall as AllowedCall, RuleAsset as AssetCap, Checkpoint, CheckpointKind, CreateOptions, CreateResult, ForeignChainNamespace, DecodedSolanaRule, Rule, RuleInput, Pin, Spent, WalletMarker, ArgumentPath, RulesRecord, Selector, WalletInfo, WalletSummary, } from './agentic.types';
2
2
  export { AGENTIC_ERROR_CODE, AgenticError, AgenticRevertError } from './errors';
3
3
  export type { AgenticErrorCode } from './errors';
4
4
  export { AGENTIC } from './constants';