@agoric/zoe 0.26.3-upgrade-14-dev-0a0580c.0 → 0.26.3-upgrade-14-dev-408fffa.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agoric/zoe",
3
- "version": "0.26.3-upgrade-14-dev-0a0580c.0+0a0580c",
3
+ "version": "0.26.3-upgrade-14-dev-408fffa.0+408fffa",
4
4
  "description": "Zoe: the Smart Contract Framework for Offer Enforcement",
5
5
  "type": "module",
6
6
  "main": "./src/zoeService/zoe.js",
@@ -43,14 +43,14 @@
43
43
  },
44
44
  "homepage": "https://github.com/Agoric/agoric-sdk#readme",
45
45
  "dependencies": {
46
- "@agoric/assert": "0.6.1-upgrade-14-dev-0a0580c.0+0a0580c",
47
- "@agoric/ertp": "0.16.3-upgrade-14-dev-0a0580c.0+0a0580c",
48
- "@agoric/internal": "0.4.0-upgrade-14-dev-0a0580c.0+0a0580c",
49
- "@agoric/notifier": "0.6.3-upgrade-14-dev-0a0580c.0+0a0580c",
50
- "@agoric/store": "0.9.3-upgrade-14-dev-0a0580c.0+0a0580c",
51
- "@agoric/swingset-vat": "0.32.3-upgrade-14-dev-0a0580c.0+0a0580c",
52
- "@agoric/time": "0.3.3-upgrade-14-dev-0a0580c.0+0a0580c",
53
- "@agoric/vat-data": "0.5.3-upgrade-14-dev-0a0580c.0+0a0580c",
46
+ "@agoric/assert": "0.6.1-upgrade-14-dev-408fffa.0+408fffa",
47
+ "@agoric/ertp": "0.16.3-upgrade-14-dev-408fffa.0+408fffa",
48
+ "@agoric/internal": "0.4.0-upgrade-14-dev-408fffa.0+408fffa",
49
+ "@agoric/notifier": "0.6.3-upgrade-14-dev-408fffa.0+408fffa",
50
+ "@agoric/store": "0.9.3-upgrade-14-dev-408fffa.0+408fffa",
51
+ "@agoric/swingset-vat": "0.32.3-upgrade-14-dev-408fffa.0+408fffa",
52
+ "@agoric/time": "0.3.3-upgrade-14-dev-408fffa.0+408fffa",
53
+ "@agoric/vat-data": "0.5.3-upgrade-14-dev-408fffa.0+408fffa",
54
54
  "@endo/bundle-source": "2.5.2-upstream-rollup",
55
55
  "@endo/captp": "3.1.1",
56
56
  "@endo/eventual-send": "0.17.2",
@@ -126,5 +126,5 @@
126
126
  "publishConfig": {
127
127
  "access": "public"
128
128
  },
129
- "gitHead": "0a0580cba9f4b41a1dc748cdd267dbcf0feed362"
129
+ "gitHead": "408fffa0fc8aef6192287fdabdebd204b9c1619d"
130
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zcfZygote.d.ts","sourceRoot":"","sources":["zcfZygote.js"],"names":[],"mappings":"AAiDO,sCARI,SAAS,cACT,KAAK,UAAU,CAAC,oBAChB,OAAO,KAAK,CAAC,iBACb,aAAa,qBACb,SAAS,2CAEP,QAAQ,SAAS,CAAC,CAyZ9B;kCAxaa,OAAO,cAAc,EAAE,mBAAmB"}
1
+ {"version":3,"file":"zcfZygote.d.ts","sourceRoot":"","sources":["zcfZygote.js"],"names":[],"mappings":"AAiDO,sCARI,SAAS,cACT,KAAK,UAAU,CAAC,oBAChB,OAAO,KAAK,CAAC,iBACb,aAAa,qBACb,SAAS,2CAEP,QAAQ,SAAS,CAAC,CA6Z9B;kCA5aa,OAAO,cAAc,EAAE,mBAAmB"}
@@ -371,6 +371,7 @@ export const makeZCFZygote = async (
371
371
  instanceRecHolder = makeInstanceRecord(instanceRecordFromZoe);
372
372
  instantiateIssuerStorage(issuerStorageFromZoe);
373
373
  zcfBaggage.init('instanceRecHolder', instanceRecHolder);
374
+ zcfBaggage.init('repairedContractCompletionWatcher', true);
374
375
 
375
376
  const startFn = start || prepare;
376
377
  if (privateArgsShape) {
@@ -423,8 +424,11 @@ export const makeZCFZygote = async (
423
424
  instanceRecHolder = zcfBaggage.get('instanceRecHolder');
424
425
  initSeatMgrAndMintKind();
425
426
 
426
- if (privateArgsShape) {
427
- mustMatch(privateArgs, privateArgsShape, 'privateArgs');
427
+ await null;
428
+ if (!zcfBaggage.has('repairedContractCompletionWatcher')) {
429
+ await E(zoeInstanceAdmin).repairContractCompletionWatcher();
430
+ console.log(`Repaired contract completion watcher`);
431
+ zcfBaggage.init('repairedContractCompletionWatcher', true);
428
432
  }
429
433
 
430
434
  // restart an upgradeable contract
@@ -85,6 +85,7 @@ type ZoeInstanceAdmin = {
85
85
  setOfferFilter: (strings: Array<string>) => void;
86
86
  getOfferFilter: () => Array<string>;
87
87
  getExitSubscriber: (seatHandle: SeatHandle) => Subscriber<AmountKeywordRecord>;
88
+ repairContractCompletionWatcher: () => void;
88
89
  };
89
90
  type RegisterFeeMint = (keyword: Keyword, allegedFeeMintAccess: FeeMintAccess) => ZoeMint<'nat'>;
90
91
  type WrapIssuerKitWithZoeMint = (keyword: Keyword, localIssuerKit: IssuerKit) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["internal-types.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["internal-types.js"],"names":[],"mappings":"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"}
@@ -137,6 +137,7 @@
137
137
  * @property {(strings: Array<string>) => void} setOfferFilter
138
138
  * @property {() => Array<string>} getOfferFilter
139
139
  * @property {(seatHandle: SeatHandle) => Subscriber<AmountKeywordRecord>} getExitSubscriber
140
+ * @property {() => void} repairContractCompletionWatcher
140
141
  */
141
142
 
142
143
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["typeGuards.js"],"names":[],"mappings":"AAgBA,4DAAuC;AAEvC,qEAAqE;AACrE,+DAAyD;AACzD,mEAAiE;AACjE,iEAA6D;AAC7D,yDAA6C;AAE7C,wEAA8E;AAC9E,+EAGE;AACF,0EAGE;AACF,wEAA8E;AAC9E,yEAGE;AACF,uEAA4E;AAE5E,iEAOE;;;;;;;;;;AAaF,8DAAiD;AAE1C,6EAA4D;AACnE,0DAAmD;;;;;;AA0BnD,2BAA2B;AAC3B,6DAAsE;AAE/D,uDAGN;AAMM,uCAHI,QAAQ,0BAMlB;AAMM,8CAHI,QAAQ,iCAMlB;AAED,sEAKG;AAEH,oEAEG;AAEH,0EAKE;AAEF,4DAAmD;AACnD,+DAIG;AAEH,+DASG;AAEH,kEAA+D;AAE/D,kEAEG;AAEH,+DAAsD;AACtD,kEAA+D;AAC/D,qEAiCG;;;;;;AAiDH,8DAAuD;AACvD,2DAGE;AAEF,0EAUE;;;;;;;AA2DF,kEA6CG;AAEH,kEAIG;AAEH,6DASE;AAEF,mEAKG"}
1
+ {"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["typeGuards.js"],"names":[],"mappings":"AAgBA,4DAAuC;AAEvC,qEAAqE;AACrE,+DAAyD;AACzD,mEAAiE;AACjE,iEAA6D;AAC7D,yDAA6C;AAE7C,wEAA8E;AAC9E,+EAGE;AACF,0EAGE;AACF,wEAA8E;AAC9E,yEAGE;AACF,uEAA4E;AAE5E,iEAOE;;;;;;;;;;AAaF,8DAAiD;AAE1C,6EAA4D;AACnE,0DAAmD;;;;;;AA0BnD,2BAA2B;AAC3B,6DAAsE;AAE/D,uDAGN;AAMM,uCAHI,QAAQ,0BAMlB;AAMM,8CAHI,QAAQ,iCAMlB;AAED,sEAKG;AAEH,oEAEG;AAEH,0EAKE;AAEF,4DAAmD;AACnD,+DAIG;AAEH,+DASG;AAEH,kEAA+D;AAE/D,kEAEG;AAEH,+DAAsD;AACtD,kEAA+D;AAC/D,qEAkCG;;;;;;AAiDH,8DAAuD;AACvD,2DAGE;AAEF,0EAUE;;;;;;;AA2DF,kEA6CG;AAEH,kEAIG;AAEH,6DASE;AAEF,mEAKG"}
package/src/typeGuards.js CHANGED
@@ -190,6 +190,7 @@ export const InstanceAdminI = M.interface('InstanceAdmin', {
190
190
  getOfferFilter: M.call().returns(M.arrayOf(M.string())),
191
191
  getExitSubscriber: M.call(SeatShape).returns(SubscriberShape),
192
192
  isBlocked: M.call(M.string()).returns(M.boolean()),
193
+ repairContractCompletionWatcher: M.call().returns(),
193
194
  });
194
195
 
195
196
  export const InstanceStorageManagerIKit = harden({
@@ -1 +1 @@
1
- {"version":3,"file":"startInstance.d.ts","sourceRoot":"","sources":["startInstance.js"],"names":[],"mappings":"AA0BO,uDANI,KAAK,iBAAiB,EAAE,+BAA+B,GAAG,oBAAoB,CAAC,oBAC/E,MAAM,KAAK,SAAS,CAAC,4BAChB,MAAM,KAAK,SAAS,0CAEvB,OAAO,SAAS,EAAE,aAAa,CAmU3C;sBA7Ua,OAAO,kBAAkB,EAAE,OAAO;wBACjC,OAAO,sBAAsB,EAAE,SAAS"}
1
+ {"version":3,"file":"startInstance.d.ts","sourceRoot":"","sources":["startInstance.js"],"names":[],"mappings":"AAiCO,uDANI,KAAK,iBAAiB,EAAE,+BAA+B,GAAG,oBAAoB,CAAC,oBAC/E,MAAM,KAAK,SAAS,CAAC,4BAChB,MAAM,KAAK,SAAS,0CAEvB,OAAO,SAAS,EAAE,aAAa,CAmW3C;sBA7Wa,OAAO,kBAAkB,EAAE,OAAO;wBACjC,OAAO,sBAAsB,EAAE,SAAS"}
@@ -5,12 +5,19 @@ import {
5
5
  makeScalarBigMapStore,
6
6
  provideDurableWeakMapStore,
7
7
  prepareExoClass,
8
+ prepareExo,
9
+ watchPromise,
8
10
  } from '@agoric/vat-data';
9
11
  import { initEmpty } from '@agoric/store';
12
+ import { isUpgradeDisconnection } from '@agoric/internal/src/upgrade-api.js';
10
13
 
11
14
  import { defineDurableHandle } from '../makeHandle.js';
12
15
  import { makeInstanceAdminMaker } from './instanceAdminStorage.js';
13
- import { AdminFacetI, InstanceAdminI } from '../typeGuards.js';
16
+ import {
17
+ AdminFacetI,
18
+ InstanceAdminI,
19
+ InstanceAdminShape,
20
+ } from '../typeGuards.js';
14
21
 
15
22
  /** @typedef {import('@agoric/vat-data').Baggage} Baggage */
16
23
  /** @typedef { import('@agoric/swingset-vat').BundleCap} BundleCap */
@@ -43,13 +50,55 @@ export const makeStartInstance = (
43
50
  seatHandleToZoeSeatAdmin,
44
51
  );
45
52
 
53
+ const getFreshZcfBundleCap = async () => {
54
+ const settledBundleCap = await getZcfBundleCapP();
55
+ settledBundleCap !== undefined || Fail`the ZCF bundle cap was broken`;
56
+ return settledBundleCap;
57
+ };
58
+
46
59
  const InstanceAdminStateShape = harden({
47
60
  instanceStorage: M.remotable('ZoeInstanceStorageManager'),
48
61
  instanceAdmin: M.remotable('InstanceAdmin'),
49
- seatHandleToSeatAdmin: M.remotable(),
62
+ seatHandleToSeatAdmin: M.remotable(), // seatHandleToSeatAdmin, but putting that string here is backwards-incompatible
50
63
  adminNode: M.remotable('adminNode'),
51
64
  });
52
65
 
66
+ /** @type {{ onFulfilled: (completion: any, instanceAdmin: InstanceAdmin) => void, onRejected: (reason: any, instanceAdmin: InstanceAdmin, adminNode: any) => void }} */
67
+ const watcher = prepareExo(
68
+ zoeBaggage,
69
+ 'InstanceCompletionWatcher',
70
+ M.interface('InstanceCompletionWatcher', {
71
+ onFulfilled: M.call(
72
+ M.any(),
73
+ InstanceAdminShape,
74
+ M.remotable('adminNode'),
75
+ ).returns(),
76
+ onRejected: M.call(
77
+ M.any(),
78
+ InstanceAdminShape,
79
+ M.remotable('adminNode'),
80
+ ).returns(),
81
+ }),
82
+ {
83
+ onFulfilled: (completion, instanceAdmin) =>
84
+ instanceAdmin.exitAllSeats(completion),
85
+ onRejected: (/** @type {Error} */ reason, instanceAdmin, adminNode) => {
86
+ if (isUpgradeDisconnection(reason)) {
87
+ console.log(`resetting promise watcher after upgrade`, reason);
88
+ // eslint-disable-next-line no-use-before-define
89
+ watchForAdminNodeDone(adminNode, instanceAdmin);
90
+ } else {
91
+ instanceAdmin.failAllSeats(reason);
92
+ }
93
+ },
94
+ },
95
+ );
96
+
97
+ const watchForAdminNodeDone = (adminNode, instAdmin) => {
98
+ // @ts-expect-error XXX unknown type?
99
+ watchPromise(E(adminNode).done(), watcher, instAdmin, adminNode);
100
+ };
101
+
53
102
  const makeZoeInstanceAdmin = prepareExoClass(
54
103
  zoeBaggage,
55
104
  'zoeInstanceAdmin',
@@ -124,10 +173,10 @@ export const makeStartInstance = (
124
173
  replaceAllocations(seatHandleAllocations) {
125
174
  const { state } = this;
126
175
  try {
127
- seatHandleAllocations.forEach(({ seatHandle, allocation }) => {
176
+ for (const { seatHandle, allocation } of seatHandleAllocations) {
128
177
  const zoeSeatAdmin = state.seatHandleToSeatAdmin.get(seatHandle);
129
178
  zoeSeatAdmin.replaceAllocation(allocation);
130
- });
179
+ }
131
180
  } catch (err) {
132
181
  // nothing for Zoe to do if the termination fails
133
182
  void E(state.adminNode).terminateWithFailure(err);
@@ -154,6 +203,10 @@ export const makeStartInstance = (
154
203
  const { state } = this;
155
204
  return state.instanceAdmin.isBlocked(string);
156
205
  },
206
+ repairContractCompletionWatcher() {
207
+ const { state, self } = this;
208
+ void watchForAdminNodeDone(state.adminNode, self);
209
+ },
157
210
  },
158
211
  {
159
212
  stateShape: InstanceAdminStateShape,
@@ -178,12 +231,10 @@ export const makeStartInstance = (
178
231
  /**
179
232
  *
180
233
  * @param {import('@agoric/swingset-vat').VatAdminFacet} adminNode
181
- * @param {*} zcfBundleCap
182
234
  * @param {*} contractBundleCap
183
235
  */
184
- (adminNode, zcfBundleCap, contractBundleCap) => ({
236
+ (adminNode, contractBundleCap) => ({
185
237
  adminNode,
186
- zcfBundleCap,
187
238
  contractBundleCap,
188
239
  }),
189
240
  {
@@ -200,12 +251,13 @@ export const makeStartInstance = (
200
251
  privateArgs: newPrivateArgs,
201
252
  };
202
253
 
203
- return E(state.adminNode).upgrade(state.zcfBundleCap, {
204
- vatParameters,
205
- });
254
+ return E.when(getFreshZcfBundleCap(), bCap =>
255
+ E(state.adminNode).upgrade(bCap, { vatParameters }),
256
+ );
206
257
  },
207
258
  async upgradeContract(contractBundleId, newPrivateArgs = undefined) {
208
259
  const { state } = this;
260
+
209
261
  const newContractBundleCap = await getBundleCapByIdNow(
210
262
  contractBundleId,
211
263
  );
@@ -213,9 +265,9 @@ export const makeStartInstance = (
213
265
  contractBundleCap: newContractBundleCap,
214
266
  privateArgs: newPrivateArgs,
215
267
  };
216
- return E(state.adminNode).upgrade(state.zcfBundleCap, {
217
- vatParameters,
218
- });
268
+ return E.when(getFreshZcfBundleCap(), bCap =>
269
+ E(state.adminNode).upgrade(bCap, { vatParameters }),
270
+ );
219
271
  },
220
272
  },
221
273
  );
@@ -274,13 +326,7 @@ export const makeStartInstance = (
274
326
  );
275
327
  zoeInstanceStorageManager.initInstanceAdmin(instanceHandle, instanceAdmin);
276
328
 
277
- E.when(
278
- E(adminNode).done(),
279
- completion => {
280
- instanceAdmin.exitAllSeats(completion);
281
- },
282
- reason => instanceAdmin.failAllSeats(reason),
283
- );
329
+ void watchForAdminNodeDone(adminNode, instanceAdmin);
284
330
 
285
331
  /** @type {ZoeInstanceAdmin} */
286
332
  const zoeInstanceAdminForZcf = makeZoeInstanceAdmin(
@@ -306,9 +352,6 @@ export const makeStartInstance = (
306
352
 
307
353
  instanceAdmin.initDelayedState(handleOfferObj, publicFacet);
308
354
 
309
- const settledBundleCap = await getZcfBundleCapP();
310
- settledBundleCap !== undefined || Fail`the bundle cap was broken`;
311
-
312
355
  // creatorInvitation can be undefined, but if it is defined,
313
356
  // let's make sure it is an invitation.
314
357
  return E.when(
@@ -324,11 +367,7 @@ export const makeStartInstance = (
324
367
  isLiveResult ||
325
368
  Fail`The contract did not correctly return a creatorInvitation`;
326
369
 
327
- const adminFacet = makeAdminFacet(
328
- adminNode,
329
- harden(settledBundleCap),
330
- contractBundleCap,
331
- );
370
+ const adminFacet = makeAdminFacet(adminNode, contractBundleCap);
332
371
 
333
372
  // Actually returned to the user.
334
373
  return harden({
@@ -1,7 +1,7 @@
1
1
  export type Baggage = import('@agoric/vat-data').Baggage;
2
2
  export type ZoeKit = ReturnType<typeof makeDurableZoeKit>;
3
3
  /**
4
- * Create an durable instance of Zoe.
4
+ * Create a durable instance of Zoe.
5
5
  *
6
6
  * @param {object} options
7
7
  * @param {Baggage} options.zoeBaggage - the baggage for Zoe durability. Must be provided by caller
@@ -22,6 +22,11 @@ export function makeDurableZoeKit({ zoeBaggage, vatAdminSvc, shutdownZoeVat, fee
22
22
  zcfSpec?: ZCFSpec | undefined;
23
23
  }): {
24
24
  zoeService: ZoeService;
25
+ zoeConfigFacet: {
26
+ updateZcfBundleId(bundleId: any): void;
27
+ } & import("@endo/eventual-send").RemotableBrand<{}, {
28
+ updateZcfBundleId(bundleId: any): void;
29
+ }>;
25
30
  /** @type {FeeMintAccess} */
26
31
  feeMintAccess: FeeMintAccess;
27
32
  setVatAdminService: ((lateVatAdminSvc: any) => void) & import("@endo/eventual-send").RemotableBrand<{}, (lateVatAdminSvc: any) => void>;
@@ -44,6 +49,11 @@ export function makeDurableZoeKit({ zoeBaggage, vatAdminSvc, shutdownZoeVat, fee
44
49
  */
45
50
  export function makeZoeKit(vatAdminSvc?: import("@agoric/swingset-vat").VatAdminSvc | Promise<import("@agoric/swingset-vat").VatAdminSvc> | undefined, shutdownZoeVat?: import("@agoric/swingset-vat").ShutdownWithFailure | undefined, feeIssuerConfig?: FeeIssuerConfig | undefined, zcfSpec?: ZCFSpec | undefined): {
46
51
  zoeService: ZoeService;
52
+ zoeConfigFacet: {
53
+ updateZcfBundleId(bundleId: any): void;
54
+ } & import("@endo/eventual-send").RemotableBrand<{}, {
55
+ updateZcfBundleId(bundleId: any): void;
56
+ }>;
47
57
  /** @type {FeeMintAccess} */
48
58
  feeMintAccess: FeeMintAccess;
49
59
  setVatAdminService: ((lateVatAdminSvc: any) => void) & import("@endo/eventual-send").RemotableBrand<{}, (lateVatAdminSvc: any) => void>;
@@ -1 +1 @@
1
- {"version":3,"file":"zoe.d.ts","sourceRoot":"","sources":["zoe.js"],"names":[],"mappings":"sBA6Bc,OAAO,kBAAkB,EAAE,OAAO;qBAwOnC,WAAW,wBAAwB,CAAC;AApOjD;;;;;;;;;;;;;GAaG;AACH;IAV4B,UAAU,EAA3B,OAAO;IACsC,WAAW;IAG1B,cAAc;IAGlB,eAAe;IACvB,OAAO;;;IAoLhC,4BAA4B;mBAAjB,aAAa;;EAK3B;AAED;;;;;;;;;;;;;;;GAeG;AACH;;IAvBI,4BAA4B;mBAAjB,aAAa;;EA8BxB"}
1
+ {"version":3,"file":"zoe.d.ts","sourceRoot":"","sources":["zoe.js"],"names":[],"mappings":"sBA8Bc,OAAO,kBAAkB,EAAE,OAAO;qBA6PnC,WAAW,wBAAwB,CAAC;AAzPjD;;;;;;;;;;;;;GAaG;AACH;IAV4B,UAAU,EAA3B,OAAO;IACsC,WAAW;IAG1B,cAAc;IAGlB,eAAe;IACvB,OAAO;;;;;;;;IAyMhC,4BAA4B;mBAAjB,aAAa;;EAK3B;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;IAvBI,4BAA4B;mBAAjB,aAAa;;EA8BxB"}
@@ -18,6 +18,7 @@ import '../internal-types.js';
18
18
  import { E } from '@endo/eventual-send';
19
19
  import { Far } from '@endo/marshal';
20
20
  import { makeScalarBigMapStore, prepareExo } from '@agoric/vat-data';
21
+ import { M } from '@agoric/store';
21
22
 
22
23
  import { makeZoeStorageManager } from './zoeStorageManager.js';
23
24
  import { makeStartInstance } from './startInstance.js';
@@ -32,7 +33,7 @@ import { ZoeServiceI } from '../typeGuards.js';
32
33
  const { Fail } = assert;
33
34
 
34
35
  /**
35
- * Create an durable instance of Zoe.
36
+ * Create a durable instance of Zoe.
36
37
  *
37
38
  * @param {object} options
38
39
  * @param {Baggage} options.zoeBaggage - the baggage for Zoe durability. Must be provided by caller
@@ -52,6 +53,7 @@ const makeDurableZoeKit = ({
52
53
  feeIssuerConfig = defaultFeeIssuerConfig,
53
54
  zcfSpec = { name: 'zcf' },
54
55
  }) => {
56
+ /** @type {BundleCap} */
55
57
  let zcfBundleCap;
56
58
 
57
59
  const saveBundleCap = () => {
@@ -168,6 +170,25 @@ const makeDurableZoeKit = ({
168
170
  });
169
171
  };
170
172
 
173
+ const ZoeConfigI = M.interface('ZoeConfigFacet', {
174
+ updateZcfBundleId: M.call(M.string()).returns(),
175
+ });
176
+
177
+ const zoeConfigFacet = prepareExo(zoeBaggage, 'ZoeConfigFacet', ZoeConfigI, {
178
+ updateZcfBundleId(bundleId) {
179
+ E.when(
180
+ getZcfBundleCap({ id: bundleId }, vatAdminSvc),
181
+ bundleCap => {
182
+ zcfBundleCap = bundleCap;
183
+ },
184
+ e => {
185
+ console.error(`'🚨 unable to update ZCF Bundle: `, e);
186
+ throw e;
187
+ },
188
+ );
189
+ },
190
+ });
191
+
171
192
  /** @type {ZoeService} */
172
193
  const zoeService = prepareExo(zoeBaggage, 'ZoeService', ZoeServiceI, {
173
194
  install(bundleId, bundleLabel) {
@@ -223,6 +244,7 @@ const makeDurableZoeKit = ({
223
244
 
224
245
  return harden({
225
246
  zoeService,
247
+ zoeConfigFacet,
226
248
  /** @type {FeeMintAccess} */
227
249
  // @ts-expect-error cast
228
250
  feeMintAccess: feeMintKit.feeMintAccess,
@@ -1 +1 @@
1
- {"version":3,"file":"zoeStorageManager.d.ts","sourceRoot":"","sources":["zoeStorageManager.js"],"names":[],"mappings":"AAmDO,oDAXI,YAAY,qBAEZ,iBAAiB,kBACjB,mBAAmB,WACnB;IACV,eAAoB,EAAE,eAAe,CAAC;IACtC,YAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,WAAgB,EAAE,MAAM,KAAK,CAAC;CAC3B;;;;;;;;;;;;;;;;;;;;;;;QA+ZI,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAjC,iCAAiC;;;;;;;;;;;GAYxC;sBAjca,OAAO,kBAAkB,EAAE,OAAO"}
1
+ {"version":3,"file":"zoeStorageManager.d.ts","sourceRoot":"","sources":["zoeStorageManager.js"],"names":[],"mappings":"AAwDO,oDAXI,YAAY,qBAEZ,iBAAiB,kBACjB,mBAAmB,WACnB;IACV,eAAoB,EAAE,eAAe,CAAC;IACtC,YAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,WAAgB,EAAE,MAAM,KAAK,CAAC;CAC3B;;;;;;;;;;;;;;;;;;;;;;;QA+ZI,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAjC,iCAAiC;;;;;;;;;;;GAYxC;sBAjca,OAAO,kBAAkB,EAAE,OAAO"}
@@ -1,5 +1,10 @@
1
1
  import { E } from '@endo/far';
2
- import { AssetKind, makeDurableIssuerKit, AmountMath } from '@agoric/ertp';
2
+ import {
3
+ AssetKind,
4
+ makeDurableIssuerKit,
5
+ AmountMath,
6
+ prepareIssuerKit,
7
+ } from '@agoric/ertp';
3
8
  import {
4
9
  makeScalarBigMapStore,
5
10
  provideDurableWeakMapStore,
@@ -117,7 +122,7 @@ export const makeZoeStorageManager = (
117
122
  'zoeMintBaggageSet',
118
123
  );
119
124
  for (const issuerBaggage of zoeMintBaggageSet.values()) {
120
- zoeMintBaggageSet(issuerBaggage);
125
+ prepareIssuerKit(issuerBaggage);
121
126
  }
122
127
 
123
128
  const makeZoeMint = prepareExoClass(
@@ -1,5 +1,10 @@
1
1
  export function makeZoeKitForTest(vatAdminSvc?: import("@agoric/swingset-vat").VatAdminSvc | undefined): {
2
2
  zoeService: ZoeService;
3
+ zoeConfigFacet: {
4
+ updateZcfBundleId(bundleId: any): void;
5
+ } & import("@endo/eventual-send").RemotableBrand<{}, {
6
+ updateZcfBundleId(bundleId: any): void;
7
+ }>;
3
8
  feeMintAccess: FeeMintAccess;
4
9
  setVatAdminService: ((lateVatAdminSvc: any) => void) & import("@endo/eventual-send").RemotableBrand<{}, (lateVatAdminSvc: any) => void>;
5
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"setup-zoe.d.ts","sourceRoot":"","sources":["setup-zoe.js"],"names":[],"mappings":"AASO;;;;EAKN;AAKM,iHACoC;AAYpC;IAL+B,MAAM,gBAArB,IAAI;IACU,eAAe;IACnB,WAAW;IACf,aAAa;;;;;;;;;;;;;;;;;;GA+BzC"}
1
+ {"version":3,"file":"setup-zoe.d.ts","sourceRoot":"","sources":["setup-zoe.js"],"names":[],"mappings":"AASO;;;;;;;;;EAKN;AAKM,iHACoC;AAYpC;IAL+B,MAAM,gBAArB,IAAI;IACU,eAAe;IACnB,WAAW;IACf,aAAa;;;;;;;;;;;;;;;;;;GA+BzC"}