@agoric/vats 0.15.2-dev-c19f1b5.0 → 0.15.2-dev-27cc9b8.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.
Files changed (38) hide show
  1. package/package.json +17 -18
  2. package/src/bridge-target.d.ts +193 -0
  3. package/src/bridge-target.d.ts.map +1 -0
  4. package/src/bridge-target.js +316 -0
  5. package/src/core/types-ambient.d.ts +3 -2
  6. package/src/ibc.d.ts +3 -33
  7. package/src/ibc.d.ts.map +1 -1
  8. package/src/ibc.js +3 -3
  9. package/src/localchain.d.ts +7 -0
  10. package/src/localchain.d.ts.map +1 -1
  11. package/src/localchain.js +11 -2
  12. package/src/proposals/localchain-proposal.d.ts +4 -1
  13. package/src/proposals/localchain-proposal.d.ts.map +1 -1
  14. package/src/proposals/localchain-proposal.js +5 -0
  15. package/src/proposals/localchain-test.d.ts.map +1 -1
  16. package/src/proposals/localchain-test.js +7 -4
  17. package/src/proposals/restart-vats-proposal.d.ts.map +1 -1
  18. package/src/proposals/restart-vats-proposal.js +6 -2
  19. package/src/proposals/transfer-proposal.d.ts +41 -0
  20. package/src/proposals/transfer-proposal.d.ts.map +1 -0
  21. package/src/proposals/transfer-proposal.js +120 -0
  22. package/src/proposals/vtransfer-echoer.d.ts +24 -0
  23. package/src/proposals/vtransfer-echoer.d.ts.map +1 -0
  24. package/src/proposals/vtransfer-echoer.js +42 -0
  25. package/src/transfer.d.ts +124 -0
  26. package/src/transfer.d.ts.map +1 -0
  27. package/src/transfer.js +271 -0
  28. package/src/types.d.ts +4 -3
  29. package/src/vat-ibc.d.ts +0 -28
  30. package/src/vat-ibc.d.ts.map +1 -1
  31. package/src/vat-localchain.d.ts +2 -0
  32. package/src/vat-localchain.d.ts.map +1 -1
  33. package/src/vat-transfer.d.ts +81 -0
  34. package/src/vat-transfer.d.ts.map +1 -0
  35. package/src/vat-transfer.js +63 -0
  36. package/tools/fake-bridge.d.ts +1 -0
  37. package/tools/fake-bridge.d.ts.map +1 -1
  38. package/tools/fake-bridge.js +45 -0
package/src/ibc.js CHANGED
@@ -3,7 +3,7 @@
3
3
  import { assert, details as X, Fail } from '@agoric/assert';
4
4
  import { E } from '@endo/far';
5
5
 
6
- import { dataToBase64, base64ToBytes } from '@agoric/network';
6
+ import { byteSourceToBase64, base64ToBytes } from '@agoric/network';
7
7
 
8
8
  import {
9
9
  localAddrToPortID,
@@ -132,7 +132,7 @@ export const prepareIBCConnectionHandler = zone => {
132
132
  source_channel: channelID,
133
133
  destination_port: rPortID,
134
134
  destination_channel: rChannelID,
135
- data: dataToBase64(packetBytes),
135
+ data: byteSourceToBase64(packetBytes),
136
136
  };
137
137
  return protocolUtils.ibcSendPacket(packet, relativeTimeoutNs);
138
138
  },
@@ -678,7 +678,7 @@ export const prepareIBCProtocol = (zone, powers) => {
678
678
  const { packet } = watcherContext;
679
679
 
680
680
  const realAck = ack || DEFAULT_ACKNOWLEDGEMENT;
681
- const ack64 = dataToBase64(realAck);
681
+ const ack64 = byteSourceToBase64(realAck);
682
682
  this.facets.util
683
683
  .downcall('receiveExecuted', {
684
684
  packet,
@@ -7,12 +7,14 @@
7
7
  * @typedef {{
8
8
  * system: ScopedBridgeManager<'vlocalchain'>;
9
9
  * bank: Bank;
10
+ * transfer: import('./transfer.js').TransferMiddleware;
10
11
  * }} AccountPowers
11
12
  */
12
13
  /**
13
14
  * @typedef {{
14
15
  * system: ScopedBridgeManager<'vlocalchain'>;
15
16
  * bankManager: BankManager;
17
+ * transfer: import('./transfer.js').TransferMiddleware;
16
18
  * }} LocalChainPowers
17
19
  */
18
20
  export const LocalChainAccountI: import("@endo/patterns").InterfaceGuard<{
@@ -21,6 +23,7 @@ export const LocalChainAccountI: import("@endo/patterns").InterfaceGuard<{
21
23
  deposit: import("@endo/patterns").MethodGuard;
22
24
  withdraw: import("@endo/patterns").MethodGuard;
23
25
  executeTx: import("@endo/patterns").MethodGuard;
26
+ monitorTransfers: import("@endo/patterns").MethodGuard;
24
27
  }>;
25
28
  /**
26
29
  * @typedef {Awaited<
@@ -74,6 +77,7 @@ export function prepareLocalChainTools(zone: import("@agoric/base-zone").Zone):
74
77
  executeTx<MT extends {
75
78
  '@type': string;
76
79
  }[]>(messages: MT): Promise<{ [K in keyof MT]: JsonSafe<ResponseTo<MT[K]>>; }>;
80
+ monitorTransfers(tap: any): Promise<any>;
77
81
  }>>;
78
82
  /**
79
83
  * Make a single query to the local chain. Will reject with an error if
@@ -106,6 +110,7 @@ export function prepareLocalChainTools(zone: import("@agoric/base-zone").Zone):
106
110
  export type AccountPowers = {
107
111
  system: ScopedBridgeManager<"vlocalchain">;
108
112
  bank: Bank;
113
+ transfer: import("./transfer.js").TransferMiddleware;
109
114
  };
110
115
  export type LocalChainPowers = {
111
116
  system: ScopedBridgeManager<"vlocalchain">;
@@ -128,6 +133,7 @@ export type LocalChainPowers = {
128
133
  }): Promise<void>;
129
134
  getBankForAddress(address: string): Promise<Bank>;
130
135
  }>;
136
+ transfer: import("./transfer.js").TransferMiddleware;
131
137
  };
132
138
  export type LocalChainAccount = Awaited<ReturnType<Awaited<ReturnType<typeof prepareLocalChainAccount>>>>;
133
139
  export type LocalChainTools = ReturnType<typeof prepareLocalChainTools>;
@@ -171,6 +177,7 @@ declare function prepareLocalChainAccount(zone: import("@agoric/base-zone").Zone
171
177
  executeTx<MT extends {
172
178
  '@type': string;
173
179
  }[]>(messages: MT): Promise<{ [K in keyof MT]: JsonSafe<ResponseTo<MT[K]>>; }>;
180
+ monitorTransfers(tap: any): Promise<any>;
174
181
  }>;
175
182
  export {};
176
183
  //# sourceMappingURL=localchain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localchain.d.ts","sourceRoot":"","sources":["localchain.js"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AA4EH;;;;GAIG;AAEH;;;;GAIG;AAwEI,6CADK,OAAO,mBAAmB,EAAE,IAAI;;QAxDtC;;;;;WAKG;;;YAzFH,kCAAkC;8BAAtB,KAAK,CAAC,KAAK,CAAC;YAMxB;;;;;;;;;eASG;6BAJQ,OAAO,CAAC,KAAK,CAAC,mBACd,OAAO,GAEL,OAAO,CAAC,MAAM,CAAC;YAS5B;;;;;eAKG;6BAFQ,MAAM,CAAC,KAAK,CAAC,GACX,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAOpC;;;;;;;;eAQG;sBADyD,EAAE;;2BAAF,EAAE,AADjD;;QA0Db;;;;;;;WAOG;uBAFQ,OAAO,sBAAsB,EAAE,SAAS,GACtC,OAAO,CAAC,OAAO,sBAAsB,EAAE,SAAS,CAAC;QAa9D;;;;;;;;;;;;WAYG;4BAPQ,OAAO,sBAAsB,EAAE,SAAS,EAAE,GACxC,OAAO,CACnB;YACA,KAAW,CAAC,EAAE,MAAM,CAAC;YACrB,KAAW,EAAE,OAAO,sBAAsB,EAAE,SAAS,CAAC;SACjD,EAAE,CACJ;;EAkBT;;;;;;;;;gEAKs7Y,cAAc;;;;;;;;;;;;+EAAiiD,cAAc,GAAE;YAAE,OAAQ,CAAC,EAAC,KAAM,QAAQ,KAAK,CAAC,CAAC,CAAA;SAAE;;;;gCA3F5gc,OAAO,CACnB,UAAc,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CACjE;8BAuFU,UAAU,CAAC,OAAO,sBAAsB,CAAC;yBACzC,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gCAhMT,sBAAsB;8BAAtB,sBAAsB;yCAElC,YAAY;0BADd,eAAe;AA0BnD,qDAAqD;AACrD,gDADY,OAAO,mBAAmB,EAAE,IAAI;;IAetC,kCAAkC;sBAAtB,KAAK,CAAC,KAAK,CAAC;IAMxB;;;;;;;;;OASG;qBAJQ,OAAO,CAAC,KAAK,CAAC,mBACd,OAAO,GAEL,OAAO,CAAC,MAAM,CAAC;IAS5B;;;;;OAKG;qBAFQ,MAAM,CAAC,KAAK,CAAC,GACX,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAOpC;;;;;;;;OAQG;cADyD,EAAE;;mBAAF,EAAE,AADjD;GAkBhB"}
1
+ {"version":3,"file":"localchain.d.ts","sourceRoot":"","sources":["localchain.js"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH;;;;;;;GASG;AAgFH;;;;GAIG;AAEH;;;;GAIG;AAwEI,6CADK,OAAO,mBAAmB,EAAE,IAAI;;QAxDtC;;;;;WAKG;;;YA7FH,kCAAkC;8BAAtB,KAAK,CAAC,KAAK,CAAC;YAMxB;;;;;;;;;eASG;6BAJQ,OAAO,CAAC,KAAK,CAAC,mBACd,OAAO,GAEL,OAAO,CAAC,MAAM,CAAC;YAS5B;;;;;eAKG;6BAFQ,MAAM,CAAC,KAAK,CAAC,GACX,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAOpC;;;;;;;;eAQG;sBADyD,EAAE;;2BAAF,EAAE,AADjD;;;QA8Db;;;;;;;WAOG;uBAFQ,OAAO,sBAAsB,EAAE,SAAS,GACtC,OAAO,CAAC,OAAO,sBAAsB,EAAE,SAAS,CAAC;QAa9D;;;;;;;;;;;;WAYG;4BAPQ,OAAO,sBAAsB,EAAE,SAAS,EAAE,GACxC,OAAO,CACnB;YACA,KAAW,CAAC,EAAE,MAAM,CAAC;YACrB,KAAW,EAAE,OAAO,sBAAsB,EAAE,SAAS,CAAC;SACjD,EAAE,CACJ;;EAkBT;;;;cA5Lc,OAAO,eAAe,EAAE,kBAAkB;;;;;;gEAiM++X,cAAc;;;;;;;;;;;;+EAAiiD,cAAc,GAAE;YAAE,OAAQ,CAAC,EAAC,KAAM,QAAQ,KAAK,CAAC,CAAC,CAAA;SAAE;;;cAzL3nb,OAAO,eAAe,EAAE,kBAAkB;;gCA8F5C,OAAO,CACnB,UAAc,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CACjE;8BAuFU,UAAU,CAAC,OAAO,sBAAsB,CAAC;yBACzC,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gCAzMT,sBAAsB;8BAAtB,sBAAsB;yCAElC,YAAY;0BADd,eAAe;AA+BnD,qDAAqD;AACrD,gDADY,OAAO,mBAAmB,EAAE,IAAI;;IAetC,kCAAkC;sBAAtB,KAAK,CAAC,KAAK,CAAC;IAMxB;;;;;;;;;OASG;qBAJQ,OAAO,CAAC,KAAK,CAAC,mBACd,OAAO,GAEL,OAAO,CAAC,MAAM,CAAC;IAS5B;;;;;OAKG;qBAFQ,MAAM,CAAC,KAAK,CAAC,GACX,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAOpC;;;;;;;;OAQG;cADyD,EAAE;;mBAAF,EAAE,AADjD;;GAsBhB"}
package/src/localchain.js CHANGED
@@ -15,6 +15,7 @@ const { Fail } = assert;
15
15
  * @typedef {{
16
16
  * system: ScopedBridgeManager<'vlocalchain'>;
17
17
  * bank: Bank;
18
+ * transfer: import('./transfer.js').TransferMiddleware;
18
19
  * }} AccountPowers
19
20
  */
20
21
 
@@ -22,6 +23,7 @@ const { Fail } = assert;
22
23
  * @typedef {{
23
24
  * system: ScopedBridgeManager<'vlocalchain'>;
24
25
  * bankManager: BankManager;
26
+ * transfer: import('./transfer.js').TransferMiddleware;
25
27
  * }} LocalChainPowers
26
28
  */
27
29
 
@@ -31,6 +33,9 @@ export const LocalChainAccountI = M.interface('LocalChainAccount', {
31
33
  deposit: M.callWhen(PaymentShape).optional(M.pattern()).returns(AmountShape),
32
34
  withdraw: M.callWhen(AmountShape).returns(PaymentShape),
33
35
  executeTx: M.callWhen(M.arrayOf(M.record())).returns(M.arrayOf(M.record())),
36
+ monitorTransfers: M.callWhen(M.remotable('TransferTap')).returns(
37
+ M.remotable('TargetRegistration'),
38
+ ),
34
39
  });
35
40
 
36
41
  /** @param {import('@agoric/base-zone').Zone} zone */
@@ -105,6 +110,10 @@ const prepareLocalChainAccount = zone =>
105
110
  };
106
111
  return E(system).toBridge(obj);
107
112
  },
113
+ async monitorTransfers(tap) {
114
+ const { address, transfer } = this.state;
115
+ return E(transfer).registerTap(address, tap);
116
+ },
108
117
  },
109
118
  );
110
119
  /**
@@ -139,12 +148,12 @@ const prepareLocalChain = (zone, makeAccount) =>
139
148
  * hash and block data hash.
140
149
  */
141
150
  async makeAccount() {
142
- const { system, bankManager } = this.state;
151
+ const { system, bankManager, transfer } = this.state;
143
152
  const address = await E(system).toBridge({
144
153
  type: 'VLOCALCHAIN_ALLOCATE_ADDRESS',
145
154
  });
146
155
  const bank = await E(bankManager).getBankForAddress(address);
147
- return makeAccount(address, { system, bank });
156
+ return makeAccount(address, { system, bank, transfer });
148
157
  },
149
158
  /**
150
159
  * Make a single query to the local chain. Will reject with an error if
@@ -1,7 +1,10 @@
1
- export function setupLocalChainVat({ consume: { loadCriticalVat, bridgeManager: bridgeManagerP, localchainBridgeManager: localchainBridgeManagerP, bankManager, }, produce: { localchainVat, localchain, localchainBridgeManager }, }: BootstrapPowers & {
1
+ export function setupLocalChainVat({ consume: { loadCriticalVat, bridgeManager: bridgeManagerP, localchainBridgeManager: localchainBridgeManagerP, bankManager, transferMiddleware, }, produce: { localchainVat, localchain, localchainBridgeManager }, }: BootstrapPowers & {
2
2
  consume: {
3
3
  loadCriticalVat: VatLoader<any>;
4
+ bridgeManager: import("../types").BridgeManager;
4
5
  localchainBridgeManager: import("../types").ScopedBridgeManager<"vlocalchain">;
6
+ bankManager: Promise<import("../vat-bank.js").BankManager>;
7
+ transferMiddleware: Promise<import("../transfer.js").TransferMiddleware>;
5
8
  };
6
9
  produce: {
7
10
  localchain: Producer<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"localchain-proposal.d.ts","sourceRoot":"","sources":["localchain-proposal.js"],"names":[],"mappings":"AAuBO,uOAlBI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,eAAqB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,uBAA6B,EAAE,OAAO,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;KAChF,CAAC;IACN,OAAW,EAAE;QACb,UAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,aAAmB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,uBAA6B,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;KACxC,CAAC;CACH;IAEgD,OAAO,EAAhD;QAAE,aAAa,EAAE,YAAY,CAAA;KAAE;kBA4DzC;AAUM,2EAPI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,UAAgB,EAAE,OAAO,kBAAkB,EAAE,UAAU,CAAC;KACnD,CAAC;CACH,YACO,MAAM,iBAOhB;AAEM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BL;6BAtGW;IACZ,UAAc,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,aAAa,CAAC,CAAC;CAChE"}
1
+ {"version":3,"file":"localchain-proposal.d.ts","sourceRoot":"","sources":["localchain-proposal.js"],"names":[],"mappings":"AA0BO,2PArBI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,eAAqB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,aAAmB,EAAE,OAAO,UAAU,EAAE,aAAa,CAAC;QACtD,uBAA6B,EAAE,OAAO,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACrF,WAAiB,EAAE,OAAO,CAAC,OAAO,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACjE,kBAAwB,EAAE,OAAO,CAAC,OAAO,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;KAC1E,CAAC;IACN,OAAW,EAAE;QACb,UAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,aAAmB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,uBAA6B,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;KACxC,CAAC;CACH;IAEgD,OAAO,EAAhD;QAAE,aAAa,EAAE,YAAY,CAAA;KAAE;kBA8DzC;AAUM,2EAPI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,UAAgB,EAAE,OAAO,kBAAkB,EAAE,UAAU,CAAC;KACnD,CAAC;CACH,YACO,MAAM,iBAOhB;AAEM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BL;6BAxGW;IACZ,UAAc,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,aAAa,CAAC,CAAC;CAChE"}
@@ -6,7 +6,10 @@ import { BridgeId as BRIDGE_ID } from '@agoric/internal';
6
6
  * @param {BootstrapPowers & {
7
7
  * consume: {
8
8
  * loadCriticalVat: VatLoader<any>;
9
+ * bridgeManager: import('../types').BridgeManager;
9
10
  * localchainBridgeManager: import('../types').ScopedBridgeManager<'vlocalchain'>;
11
+ * bankManager: Promise<import('../vat-bank.js').BankManager>;
12
+ * transferMiddleware: Promise<import('../transfer.js').TransferMiddleware>;
10
13
  * };
11
14
  * produce: {
12
15
  * localchain: Producer<any>;
@@ -28,6 +31,7 @@ export const setupLocalChainVat = async (
28
31
  bridgeManager: bridgeManagerP,
29
32
  localchainBridgeManager: localchainBridgeManagerP,
30
33
  bankManager,
34
+ transferMiddleware,
31
35
  },
32
36
  produce: { localchainVat, localchain, localchainBridgeManager },
33
37
  },
@@ -71,6 +75,7 @@ export const setupLocalChainVat = async (
71
75
  const newLocalChain = await E(vats.localchain).makeLocalChain({
72
76
  system: scopedManager,
73
77
  bankManager: await bankManager,
78
+ transfer: await transferMiddleware,
74
79
  });
75
80
 
76
81
  localchain.reset();
@@ -1 +1 @@
1
- {"version":3,"file":"localchain-test.d.ts","sourceRoot":"","sources":["localchain-test.js"],"names":[],"mappings":"AAaO,0EARI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,UAAgB,EAAE,OAAO,kBAAkB,EAAE,UAAU,CAAC;KACnD,CAAC;CACH;IAE2C,OAAO,EAA3C;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE;kBA4DpC;AAEM;;;;;;;;;;;;;;EAYL"}
1
+ {"version":3,"file":"localchain-test.d.ts","sourceRoot":"","sources":["localchain-test.js"],"names":[],"mappings":"AAaO,0EARI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,UAAgB,EAAE,OAAO,kBAAkB,EAAE,UAAU,CAAC;KACnD,CAAC;CACH;IAE2C,OAAO,EAA3C;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE;kBA+DpC;AAEM;;;;;;;;;;;;;;EAYL"}
@@ -19,13 +19,10 @@ export const testLocalChain = async (
19
19
  /** @type {null | ERef<StorageNode>} */
20
20
  let node = await chainStorage;
21
21
  if (!node) {
22
+ console.error('testLocalChain no chainStorage');
22
23
  throw new Error('no chainStorage');
23
24
  }
24
25
 
25
- for (const nodeName of testResultPath.split('.')) {
26
- node = E(node).makeChildNode(nodeName);
27
- }
28
-
29
26
  let result;
30
27
  try {
31
28
  const lca = await E(localchain).makeAccount();
@@ -60,6 +57,9 @@ export const testLocalChain = async (
60
57
 
61
58
  const emptyQuery = await E(localchain).queryMany([]);
62
59
  console.info('emptyQuery', emptyQuery);
60
+ if (emptyQuery.length !== 0) {
61
+ throw new Error('emptyQuery results should be empty');
62
+ }
63
63
 
64
64
  result = { success: true };
65
65
  } catch (e) {
@@ -68,6 +68,9 @@ export const testLocalChain = async (
68
68
  }
69
69
 
70
70
  console.warn('=== localchain test done, setting', { result });
71
+ for (const nodeName of testResultPath.split('.')) {
72
+ node = E(node).makeChildNode(nodeName);
73
+ }
71
74
  await E(node).setValue(JSON.stringify(result));
72
75
  };
73
76
 
@@ -1 +1 @@
1
- {"version":3,"file":"restart-vats-proposal.d.ts","sourceRoot":"","sources":["restart-vats-proposal.js"],"names":[],"mappings":"AA+BO,yCALI,eAAe,GACzB,OAAW,wDAAwD,EAAE,qBAAqB;IAErD,OAAO,EAAlC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;kBAkH5B;AAGM;;;;;;;;;;;;;;;;;;;;EAoBL"}
1
+ {"version":3,"file":"restart-vats-proposal.d.ts","sourceRoot":"","sources":["restart-vats-proposal.js"],"names":[],"mappings":"AAiCO,yCALI,eAAe,GACzB,OAAW,wDAAwD,EAAE,qBAAqB;IAErD,OAAO,EAAlC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;kBAoH5B;AAGM;;;;;;;;;;;;;;;;;;;;EAoBL"}
@@ -17,9 +17,11 @@ const vatUpgradeStatus = {
17
17
  board: 'covered by test-upgrade-vats: upgrade vat-board',
18
18
  bridge: 'covered by test-upgrade-vats: upgrade vat-bridge',
19
19
  ibc: 'upgradeable',
20
+ localchain: 'UNTESTED',
20
21
  network: 'upgradeable',
21
22
  priceAuthority: 'covered by test-upgrade-vats: upgrade vat-priceAuthority',
22
23
  provisioning: 'UNTESTED',
24
+ transfer: 'UNTESTED',
23
25
  zoe: 'tested in @agoric/zoe',
24
26
  };
25
27
 
@@ -128,8 +130,10 @@ export const restartVats = async ({ consume }, { options }) => {
128
130
  console.log('upgrading vat', name);
129
131
  const { vatAdminSvc } = consume;
130
132
  const info = await consume.vatUpgradeInfo;
131
- const { bundleID } = info.get(name);
132
- const bcap = await E(vatAdminSvc).getBundleCap(bundleID);
133
+ const { bundleID, bundleName } = info.get(name);
134
+ const bcap = await (bundleID
135
+ ? E(vatAdminSvc).getBundleCap(bundleID)
136
+ : E(vatAdminSvc).getNamedBundleCap(bundleName));
133
137
  await E(adminNode).upgrade(bcap);
134
138
  }
135
139
  console.log('VAT', name, status);
@@ -0,0 +1,41 @@
1
+ export function setupTransferMiddleware({ consume: { loadCriticalVat, bridgeManager: bridgeManagerP, vtransferBridgeManager: vtransferBridgeManagerP, }, produce: { transferMiddleware: produceTransferMiddleware, transferVat: produceTransferVat, vtransferBridgeManager: produceVtransferBridgeManager, }, }: BootstrapPowers & {
2
+ consume: {
3
+ loadCriticalVat: VatLoader<any>;
4
+ bridgeManager: import("../types").BridgeManager;
5
+ vtransferBridgeManager: import("../types").ScopedBridgeManager<"vtransfer">;
6
+ };
7
+ produce: {
8
+ transferMiddleware: Producer<any>;
9
+ transferVat: Producer<any>;
10
+ vtransferBridgeManager: Producer<any>;
11
+ };
12
+ }, options: {
13
+ options: {
14
+ transferRef: VatSourceRef;
15
+ };
16
+ }): Promise<void>;
17
+ export function getManifestForTransfer(_powers: any, { transferRef }: {
18
+ transferRef: any;
19
+ }): {
20
+ manifest: {
21
+ [x: string]: {
22
+ consume: {
23
+ loadCriticalVat: boolean;
24
+ bridgeManager: string;
25
+ vtransferBridgeManager: string;
26
+ };
27
+ produce: {
28
+ transferMiddleware: string;
29
+ transferVat: string;
30
+ vtransferBridgeManager: string;
31
+ };
32
+ };
33
+ };
34
+ options: {
35
+ transferRef: any;
36
+ };
37
+ };
38
+ export type TransferVats = {
39
+ transfer: ERef<import("../vat-transfer.js").TransferVat>;
40
+ };
41
+ //# sourceMappingURL=transfer-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer-proposal.d.ts","sourceRoot":"","sources":["transfer-proposal.js"],"names":[],"mappings":"AAwBO,iTAnBI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,eAAqB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,aAAmB,EAAE,OAAO,UAAU,EAAE,aAAa,CAAC;QACtD,sBAA4B,EAAE,OAAO,UAAU,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;KAC7E,CAAC;IACN,OAAW,EAAE;QACb,kBAAwB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,WAAiB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,sBAA4B,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;KACvC,CAAC;CACH;IAE8C,OAAO,EAA9C;QAAE,WAAW,EAAE,YAAY,CAAA;KAAE;kBAiFvC;AAEM;;;;;;;;;;;;;;;;;;;;EAkBL;2BAnGW;IACZ,QAAY,EAAE,IAAI,CAAC,OAAO,oBAAoB,EAAE,WAAW,CAAC,CAAC;CAC1D"}
@@ -0,0 +1,120 @@
1
+ // @ts-check
2
+ import { E } from '@endo/far';
3
+ import { BridgeId as BRIDGE_ID, VTRANSFER_IBC_EVENT } from '@agoric/internal';
4
+
5
+ /**
6
+ * @param {BootstrapPowers & {
7
+ * consume: {
8
+ * loadCriticalVat: VatLoader<any>;
9
+ * bridgeManager: import('../types').BridgeManager;
10
+ * vtransferBridgeManager: import('../types').ScopedBridgeManager<'vtransfer'>;
11
+ * };
12
+ * produce: {
13
+ * transferMiddleware: Producer<any>;
14
+ * transferVat: Producer<any>;
15
+ * vtransferBridgeManager: Producer<any>;
16
+ * };
17
+ * }} powers
18
+ * @param {object} options
19
+ * @param {{ transferRef: VatSourceRef }} options.options
20
+ *
21
+ * @typedef {{
22
+ * transfer: ERef<import('../vat-transfer.js').TransferVat>;
23
+ * }} TransferVats
24
+ */
25
+ export const setupTransferMiddleware = async (
26
+ {
27
+ consume: {
28
+ loadCriticalVat,
29
+ bridgeManager: bridgeManagerP,
30
+ vtransferBridgeManager: vtransferBridgeManagerP,
31
+ },
32
+ produce: {
33
+ transferMiddleware: produceTransferMiddleware,
34
+ transferVat: produceTransferVat,
35
+ vtransferBridgeManager: produceVtransferBridgeManager,
36
+ },
37
+ },
38
+ options,
39
+ ) => {
40
+ const bridgeManager = await bridgeManagerP;
41
+ if (!bridgeManager) {
42
+ console.error('No bridgeManager, skipping setupTransferMiddleware');
43
+ return;
44
+ }
45
+
46
+ const { transferRef } = options.options;
47
+ /** @type {TransferVats} */
48
+ const vats = {
49
+ transfer: E(loadCriticalVat)('transfer', transferRef),
50
+ };
51
+ // don't proceed if loadCriticalVat fails
52
+ await Promise.all(Object.values(vats));
53
+ produceTransferVat.reset();
54
+ produceTransferVat.resolve(vats.transfer);
55
+
56
+ // We'll be exporting a TransferMiddleware instance that implements a
57
+ // vtransfer app registry supporting active and passive "taps" while handling
58
+ // IBC transfer protocol conformance by configuring its backing
59
+ // BridgeTargetKit registry to wrap each app with an interceptor.
60
+ // But a bridge channel scoped to vtransfer might already exist, so we make or
61
+ // retrieve it as appropriate, then make its intercepting BridgeTargetKit,
62
+ // and then finally configure the TransferMiddleware with that kit's registry.
63
+ const { finisher, interceptorFactory, transferMiddleware } = await E(
64
+ vats.transfer,
65
+ ).makeTransferMiddlewareKit();
66
+ const vtransferID = BRIDGE_ID.VTRANSFER;
67
+ const provideBridgeTargetKit = bridge =>
68
+ E(vats.transfer).provideBridgeTargetKit(
69
+ bridge,
70
+ VTRANSFER_IBC_EVENT,
71
+ interceptorFactory,
72
+ );
73
+ /** @type {Awaited<ReturnType<typeof provideBridgeTargetKit>>} */
74
+ let bridgeTargetKit;
75
+ try {
76
+ const vtransferBridge = await E(bridgeManager).register(vtransferID);
77
+ produceVtransferBridgeManager.reset();
78
+ produceVtransferBridgeManager.resolve(vtransferBridge);
79
+ bridgeTargetKit = await provideBridgeTargetKit(vtransferBridge);
80
+ await E(finisher).useRegistry(bridgeTargetKit.targetRegistry);
81
+ await E(vtransferBridge).initHandler(bridgeTargetKit.bridgeHandler);
82
+ console.info('Successfully initHandler for', vtransferID);
83
+ } catch (e) {
84
+ console.error(
85
+ 'Failed to initHandler',
86
+ vtransferID,
87
+ 'reason:',
88
+ e,
89
+ 'falling back to setHandler',
90
+ );
91
+ const vtransferBridge = await vtransferBridgeManagerP;
92
+ bridgeTargetKit = await provideBridgeTargetKit(vtransferBridge);
93
+ await E(finisher).useRegistry(bridgeTargetKit.targetRegistry);
94
+ await E(vtransferBridge).setHandler(bridgeTargetKit.bridgeHandler);
95
+ console.info('Successfully setHandler for', vtransferID);
96
+ }
97
+
98
+ produceTransferMiddleware.reset();
99
+ produceTransferMiddleware.resolve(transferMiddleware);
100
+ };
101
+
102
+ export const getManifestForTransfer = (_powers, { transferRef }) => ({
103
+ manifest: {
104
+ [setupTransferMiddleware.name]: {
105
+ consume: {
106
+ loadCriticalVat: true,
107
+ bridgeManager: 'bridge',
108
+ vtransferBridgeManager: 'transfer',
109
+ },
110
+ produce: {
111
+ transferMiddleware: 'transfer',
112
+ transferVat: 'transfer',
113
+ vtransferBridgeManager: 'transfer',
114
+ },
115
+ },
116
+ },
117
+ options: {
118
+ transferRef,
119
+ },
120
+ });
@@ -0,0 +1,24 @@
1
+ export function echoVtransfer({ consume: { transferMiddleware } }: BootstrapPowers & {
2
+ consume: {
3
+ transferMiddleware: import("../transfer.js").TransferMiddleware;
4
+ };
5
+ }, { options: { target } }: {
6
+ options: {
7
+ target: string;
8
+ };
9
+ }): Promise<void>;
10
+ export function getManifestForVtransferEchoer(_powers: any, { target }: {
11
+ target: any;
12
+ }): {
13
+ manifest: {
14
+ [x: string]: {
15
+ consume: {
16
+ transferMiddleware: string;
17
+ };
18
+ };
19
+ };
20
+ options: {
21
+ target: any;
22
+ };
23
+ };
24
+ //# sourceMappingURL=vtransfer-echoer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vtransfer-echoer.d.ts","sourceRoot":"","sources":["vtransfer-echoer.js"],"names":[],"mappings":"AAaO,mEARI,eAAe,GAAG;IAC5B,OAAW,EAAE;QACb,kBAAwB,EAAE,OAAO,gBAAgB,EAAE,kBAAkB,CAAC;KACjE,CAAC;CACH;IAEmC,OAAO,EAAnC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;kBAiB5B;AAEM;;;;;;;;;;;;;EAWL"}
@@ -0,0 +1,42 @@
1
+ // @ts-check
2
+ import { makeExo } from '@agoric/store';
3
+ import { E } from '@endo/far';
4
+
5
+ /**
6
+ * @param {BootstrapPowers & {
7
+ * consume: {
8
+ * transferMiddleware: import('../transfer.js').TransferMiddleware;
9
+ * };
10
+ * }} powers
11
+ * @param {object} options
12
+ * @param {{ target: string }} options.options
13
+ */
14
+ export const echoVtransfer = async (
15
+ { consume: { transferMiddleware } },
16
+ { options: { target } },
17
+ ) => {
18
+ console.warn(`=== vtransfer echoer targeting ${target}`);
19
+
20
+ // a tap that simply returns what it received
21
+ const tap = makeExo('echoer', undefined, {
22
+ // ack value must be stringlike
23
+ receiveUpcall: async param => JSON.stringify(param),
24
+ });
25
+
26
+ await E(transferMiddleware).registerActiveTap(target, tap);
27
+
28
+ console.warn('=== vtransfer echoer registered');
29
+ };
30
+
31
+ export const getManifestForVtransferEchoer = (_powers, { target }) => ({
32
+ manifest: {
33
+ [echoVtransfer.name]: {
34
+ consume: {
35
+ transferMiddleware: 'transferMiddleware',
36
+ },
37
+ },
38
+ },
39
+ options: {
40
+ target,
41
+ },
42
+ });
@@ -0,0 +1,124 @@
1
+ export function prepareTransferTools(zone: import("@agoric/base-zone").Zone, vowTools: import("@agoric/vow").VowTools): {
2
+ makeTransferMiddlewareKit: () => import("@endo/exo").GuardedKit<{
3
+ finisher: {
4
+ /**
5
+ * @param {import('./bridge-target').TargetRegistry} registry
6
+ */
7
+ useRegistry(registry: import("./bridge-target").TargetRegistry): void;
8
+ };
9
+ interceptorFactory: {
10
+ wrapApp: (tap: globalThis.ERef<TargetApp>, targetHost: globalThis.ERef<TargetHost>, isActiveTap?: boolean | undefined) => import("@endo/exo").Guarded<{
11
+ receiveUpcall(obj: any): Promise<import("@agoric/vow").Vow<unknown> | undefined>;
12
+ }>;
13
+ };
14
+ transferMiddleware: {
15
+ /**
16
+ * Register a tap to intercept the vtransfer target account address
17
+ * messages, without granting that tap the ability to delay or interfere
18
+ * with the underlying IBC transfer protocol.
19
+ *
20
+ * @type {RegisterTap}
21
+ */
22
+ registerTap(target: string, tap: ERef<import("./bridge-target.js").TargetApp>): any;
23
+ /**
24
+ * Similar to `registerTap`, but allows the tap to inject async
25
+ * acknowledgements in the IBC transfer protocol.
26
+ *
27
+ * @type {RegisterTap}
28
+ */
29
+ registerActiveTap(target: string, tap: ERef<import("./bridge-target.js").TargetApp>): any;
30
+ /**
31
+ * Unregister the target.
32
+ *
33
+ * @param {string} target String identifying the bridge target to stop
34
+ * tapping.
35
+ */
36
+ unregisterTap(target: string): Promise<void>;
37
+ };
38
+ }>;
39
+ makeBridgeTargetKit: (manager: import("./types.js").ScopedBridgeManager<import("@agoric/internal").BridgeIdValue>, inboundEventType: string, appTransformer?: import("./bridge-target.js").AppTransformer | undefined) => import("@endo/exo").GuardedKit<{
40
+ bridgeHandler: {
41
+ fromBridge(obj: any): Promise<any>;
42
+ };
43
+ targetHost: {
44
+ sendDowncall(obj: any): Promise<any>;
45
+ };
46
+ targetRegistry: {
47
+ register(target: string, app: TargetApp, args?: unknown[] | undefined): Promise<import("./bridge-target.js").TargetRegistration>;
48
+ reregister(target: string, app: TargetApp, args?: unknown[] | undefined): Promise<void>;
49
+ unregister(target: string): Promise<void>;
50
+ };
51
+ }>;
52
+ };
53
+ export type RegisterTap = (target: string, tap: ERef<import("./bridge-target.js").TargetApp>) => any;
54
+ export type TransferMiddlewareKit = ReturnType<ReturnType<typeof prepareTransferMiddlewareKit>>;
55
+ export type TransferMiddleware = TransferMiddlewareKit["transferMiddleware"];
56
+ import type { TargetApp } from './bridge-target.js';
57
+ import type { TargetHost } from './bridge-target.js';
58
+ /**
59
+ * @callback RegisterTap
60
+ * @param {string} target String identifying the bridge target.
61
+ * @param {ERef<import('./bridge-target.js').TargetApp>} tap The "application
62
+ * tap" to register for the target.
63
+ */
64
+ /**
65
+ * A TransferMiddlewareKit has a `transferMiddleware` facet with methods for
66
+ * registering and unregistering active and passive "taps" in a BridgeTargetKit
67
+ * registry that must use the `interceptorFactory` facet as its appTransfomer to
68
+ * enforce IBC transfer protocol conformance. Before registering any taps, the
69
+ * backing BridgeTargetKit must be set with the `finisher` facet (i.e., the
70
+ * expected setup pattern is to pass in `interceptorFactory` as the
71
+ * appTransformer argument when making a BridgeTargetKit and then to invoke
72
+ * `finisher.useRegistry` with the `targetRegistry` of that BridgeTargetKit
73
+ * before making further use of the TransferMiddlewareKit or connecting the
74
+ * BridgeTargetKit to a bridge).
75
+ *
76
+ * @param {import('@agoric/base-zone').Zone} zone
77
+ * @param {ReturnType<typeof prepareTransferInterceptor>} makeTransferInterceptor
78
+ */
79
+ declare function prepareTransferMiddlewareKit(zone: import("@agoric/base-zone").Zone, makeTransferInterceptor: ReturnType<typeof prepareTransferInterceptor>): () => import("@endo/exo").GuardedKit<{
80
+ finisher: {
81
+ /**
82
+ * @param {import('./bridge-target').TargetRegistry} registry
83
+ */
84
+ useRegistry(registry: import("./bridge-target").TargetRegistry): void;
85
+ };
86
+ interceptorFactory: {
87
+ wrapApp: (tap: globalThis.ERef<TargetApp>, targetHost: globalThis.ERef<TargetHost>, isActiveTap?: boolean | undefined) => import("@endo/exo").Guarded<{
88
+ receiveUpcall(obj: any): Promise<import("@agoric/vow").Vow<unknown> | undefined>;
89
+ }>;
90
+ };
91
+ transferMiddleware: {
92
+ /**
93
+ * Register a tap to intercept the vtransfer target account address
94
+ * messages, without granting that tap the ability to delay or interfere
95
+ * with the underlying IBC transfer protocol.
96
+ *
97
+ * @type {RegisterTap}
98
+ */
99
+ registerTap(target: string, tap: ERef<import("./bridge-target.js").TargetApp>): any;
100
+ /**
101
+ * Similar to `registerTap`, but allows the tap to inject async
102
+ * acknowledgements in the IBC transfer protocol.
103
+ *
104
+ * @type {RegisterTap}
105
+ */
106
+ registerActiveTap(target: string, tap: ERef<import("./bridge-target.js").TargetApp>): any;
107
+ /**
108
+ * Unregister the target.
109
+ *
110
+ * @param {string} target String identifying the bridge target to stop
111
+ * tapping.
112
+ */
113
+ unregisterTap(target: string): Promise<void>;
114
+ };
115
+ }>;
116
+ /**
117
+ * @param {import('@agoric/base-zone').Zone} zone
118
+ * @param {import('@agoric/vow').VowTools} vowTools
119
+ */
120
+ declare function prepareTransferInterceptor(zone: import("@agoric/base-zone").Zone, vowTools: import("@agoric/vow").VowTools): (tap: globalThis.ERef<TargetApp>, targetHost: globalThis.ERef<TargetHost>, isActiveTap?: boolean | undefined) => import("@endo/exo").Guarded<{
121
+ receiveUpcall(obj: any): Promise<import("@agoric/vow").Vow<unknown> | undefined>;
122
+ }>;
123
+ export {};
124
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["transfer.js"],"names":[],"mappings":"AAiQO,2CAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;;YArDjC;;eAEG;kCADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;YAUnD;;;;;;eAMG;gCAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAwD/C;;;;;eAKG;sCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;YAmE/C;;;;;eAKG;kCAFQ,MAAM;;;;;;;;;;;0CAvBqB,SAC7C;4CAwCyB,SAAS;;;;EAYlC;mCArGU,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;oCAiFzC,UAAU,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;iCAC3D,qBAAqB,CAAC,oBAAoB,CAAC;+BA/OjB,oBAAoB;gCAApB,oBAAoB;AA0J5D;;;;;GAKG;AAEH;;;;;;;;;;;;;;GAcG;AACH,oDAHW,OAAO,mBAAmB,EAAE,IAAI,2BAChC,UAAU,CAAC,OAAO,0BAA0B,CAAC;;QAgBhD;;WAEG;8BADQ,OAAO,iBAAiB,EAAE,cAAc;;;;;;;;QAUnD;;;;;;WAMG;4BAnDA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAwD/C;;;;;WAKG;kCA9DA,MAAM,OACN,IAAI,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC;QAmE/C;;;;;WAKG;8BAFQ,MAAM;;GAUtB;AAlOH;;;GAGG;AACH,kDAHW,OAAO,mBAAmB,EAAE,IAAI,YAChC,OAAO,aAAa,EAAE,QAAQ;;GAuHxC"}