@jsm-mit/tigi-sharded-package 0.2.0 → 0.4.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 (37) hide show
  1. package/README.md +51 -3
  2. package/declarations/coordinator/coordinator.did +39 -0
  3. package/declarations/coordinator/coordinator.did.d.ts +68 -0
  4. package/declarations/coordinator/coordinator.did.js +23 -0
  5. package/declarations/core/core.did +210 -45
  6. package/declarations/core/core.did.d.ts +191 -43
  7. package/declarations/core/core.did.js +146 -42
  8. package/declarations/tigi-driver/tigi-driver.did +15 -0
  9. package/declarations/tigi-driver/tigi-driver.did.d.ts +19 -0
  10. package/declarations/tigi-driver/tigi-driver.did.js +6 -0
  11. package/declarations/tigi-simulator/tigi-simulator.did +46 -4
  12. package/declarations/tigi-simulator/tigi-simulator.did.d.ts +70 -4
  13. package/declarations/tigi-simulator/tigi-simulator.did.js +39 -10
  14. package/declarations/worker/worker.did +23 -6
  15. package/declarations/worker/worker.did.d.ts +18 -6
  16. package/declarations/worker/worker.did.js +14 -7
  17. package/dist/actors/driver-canisters-actor.d.ts +77 -0
  18. package/dist/actors/driver-canisters-actor.d.ts.map +1 -0
  19. package/dist/actors/driver-canisters-actor.js +147 -0
  20. package/dist/actors/rides-actor.d.ts +21 -1
  21. package/dist/actors/rides-actor.d.ts.map +1 -1
  22. package/dist/actors/rides-actor.js +44 -2
  23. package/dist/geo.d.ts +5 -0
  24. package/dist/geo.d.ts.map +1 -1
  25. package/dist/geo.js +41 -0
  26. package/dist/group/canister-actor.d.ts +7 -0
  27. package/dist/group/canister-actor.d.ts.map +1 -1
  28. package/dist/group/canister-actor.js +18 -0
  29. package/dist/index.d.ts +3 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -2
  32. package/dist/interfaces.d.ts +43 -1
  33. package/dist/interfaces.d.ts.map +1 -1
  34. package/dist/mappers.d.ts +7 -2
  35. package/dist/mappers.d.ts.map +1 -1
  36. package/dist/mappers.js +17 -2
  37. package/package.json +7 -4
@@ -70,6 +70,26 @@ export const idlFactory = ({ IDL }) => {
70
70
  'driverPosition' : IDL.Opt(Geo),
71
71
  });
72
72
  const RideAnswer = IDL.Variant({ 'ok' : RideView, 'err' : ProtocolError });
73
+ const RouteLine = IDL.Record({ 'ride' : IDL.Text, 'toPickup' : IDL.Text });
74
+ const RouteAnswer = IDL.Variant({ 'ok' : RouteLine, 'err' : ProtocolError });
75
+ const RouteTaskView = IDL.Record({
76
+ 'untilNs' : IDL.Nat64,
77
+ 'destination' : Geo,
78
+ 'requestId' : IDL.Text,
79
+ 'from' : Geo,
80
+ 'pickup' : Geo,
81
+ 'driverKey' : IDL.Text,
82
+ });
83
+ const SimulatorError = IDL.Variant({
84
+ 'RemoteCanisterError' : IDL.Text,
85
+ 'NotFound' : IDL.Null,
86
+ 'NotAuthorized' : IDL.Text,
87
+ 'InvalidData' : IDL.Text,
88
+ });
89
+ const Result = IDL.Variant({
90
+ 'Ok' : IDL.Vec(RouteTaskView),
91
+ 'Err' : SimulatorError,
92
+ });
73
93
  const Event = IDL.Record({
74
94
  'atNs' : IDL.Nat64,
75
95
  'kind' : IDL.Text,
@@ -82,6 +102,7 @@ export const idlFactory = ({ IDL }) => {
82
102
  'liveDrivers' : IDL.Nat64,
83
103
  'events' : IDL.Vec(Event),
84
104
  'drivers' : IDL.Nat64,
105
+ 'router' : IDL.Opt(IDL.Principal),
85
106
  'rides' : IDL.Nat64,
86
107
  });
87
108
  const HttpRequest = IDL.Record({
@@ -128,17 +149,12 @@ export const idlFactory = ({ IDL }) => {
128
149
  'riderName' : IDL.Text,
129
150
  'rider' : IDL.Principal,
130
151
  });
152
+ const SetRouterArgs = IDL.Record({ 'router' : IDL.Opt(IDL.Principal) });
153
+ const Result_1 = IDL.Variant({ 'Ok' : IDL.Null, 'Err' : SimulatorError });
131
154
  const SpeedUpArgs = IDL.Record({
132
155
  'requestId' : IDL.Text,
133
156
  'factor' : IDL.Nat8,
134
157
  });
135
- const SimulatorError = IDL.Variant({
136
- 'RemoteCanisterError' : IDL.Text,
137
- 'NotFound' : IDL.Null,
138
- 'NotAuthorized' : IDL.Text,
139
- 'InvalidData' : IDL.Text,
140
- });
141
- const Result = IDL.Variant({ 'Ok' : IDL.Null, 'Err' : SimulatorError });
142
158
  const SpawnArgs = IDL.Record({ 'center' : Geo, 'count' : IDL.Opt(IDL.Nat8) });
143
159
  const SpawnResult = IDL.Record({
144
160
  'problems' : IDL.Vec(IDL.Text),
@@ -146,19 +162,32 @@ export const idlFactory = ({ IDL }) => {
146
162
  'registered' : IDL.Nat32,
147
163
  'validUntilNs' : IDL.Nat64,
148
164
  });
149
- const Result_1 = IDL.Variant({ 'Ok' : SpawnResult, 'Err' : SimulatorError });
165
+ const Result_2 = IDL.Variant({ 'Ok' : SpawnResult, 'Err' : SimulatorError });
166
+ const SimRouteResult = IDL.Record({
167
+ 'requestId' : IDL.Text,
168
+ 'rideMeters' : IDL.Nat32,
169
+ 'rideSec' : IDL.Nat32,
170
+ 'routeLine' : IDL.Opt(RouteLine),
171
+ 'driverKey' : IDL.Text,
172
+ 'toPickupSec' : IDL.Nat32,
173
+ 'toPickupMeters' : IDL.Nat32,
174
+ });
150
175
  return IDL.Service({
151
176
  'cancelRide' : IDL.Func([RideRef], [ProtocolAnswer], []),
152
177
  'getLicence' : IDL.Func([RideRef], [LicenceAnswer], ['query']),
153
178
  'getRide' : IDL.Func([RideRef], [RideAnswer], ['query']),
179
+ 'getRideRoute' : IDL.Func([RideRef], [RouteAnswer], ['query']),
180
+ 'getRouteTasks' : IDL.Func([], [Result], ['query']),
154
181
  'getStatus' : IDL.Func([], [SimulatorStatus], ['query']),
155
182
  'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),
156
183
  'protocolVersion' : IDL.Func([], [IDL.Nat32], ['query']),
157
184
  'quoteRequest' : IDL.Func([QuoteRequest], [ProtocolAnswer], []),
158
185
  'requestClosed' : IDL.Func([RequestClosed], [], []),
159
186
  'rideOrder' : IDL.Func([RideOrder], [ProtocolAnswer], []),
160
- 'setSpeedUp' : IDL.Func([SpeedUpArgs], [Result], []),
161
- 'spawnDrivers' : IDL.Func([SpawnArgs], [Result_1], []),
187
+ 'setRouter' : IDL.Func([SetRouterArgs], [Result_1], []),
188
+ 'setSpeedUp' : IDL.Func([SpeedUpArgs], [Result_1], []),
189
+ 'spawnDrivers' : IDL.Func([SpawnArgs], [Result_2], []),
190
+ 'submitRoute' : IDL.Func([SimRouteResult], [Result_1], []),
162
191
  });
163
192
  };
164
193
  export const init = ({ IDL }) => {
@@ -28,19 +28,22 @@ type TigiWorker =
28
28
  /// from there. Blocks act at once (WO-2); ratings go into offers and orders (P-12).
29
29
  applyCoreChanges: (batch: CoreChanges) -> (Result);
30
30
  /// ZO-13, ZO-14, ZO-17.
31
- chooseOffer: (ref: OfferRef) -> (Result_8);
31
+ chooseOffer: (ref: OfferRef) -> (Result_9);
32
32
  clearLogs: () -> ();
33
33
  /// ZO-15 (otherOfferChosen after an acceptance in another worker), ZO-18 (riderGaveUp).
34
34
  closeRequest: (args: CloseRequestArgs) -> (Result_2);
35
35
  /// The coordinator only: the settings it computes for every worker.
36
- configure: (args: ConfigureArgs) -> (Result_7);
36
+ configure: (args: ConfigureArgs) -> (Result_8);
37
37
  /// ZO-6.
38
38
  declineQuote: (decline: QuoteDecline) -> ();
39
39
  /// What this worker holds of the core's network state.
40
40
  getCoreCopyStatus: () -> (CoreCopyStatus) query;
41
41
  /// The flow's numbers (scripts, the coordinator's front).
42
- getFlowStatus: () -> (Result_6) query;
42
+ getFlowStatus: () -> (Result_7) query;
43
43
  getLogs: () -> (text) query;
44
+ /// ZO-21 (2026-10-24, route line): the route line of one offer, for the rider of the
45
+ /// request only (the package asks after a tap on the offer).
46
+ getOfferRoute: (ref: OfferRef) -> (Result_6) query;
44
47
  /// The load this worker counts per geohash prefix of the given length (1–6): the
45
48
  /// coordinator picks from it what to give another worker on a split (KO-5).
46
49
  getPrefixCounts: (length: nat) -> (Result_5) query;
@@ -89,6 +92,11 @@ type TestLoadArgs =
89
92
  cells: vec PrefixCount;
90
93
  reportLevel: opt nat;
91
94
  };
95
+ type RouteLine =
96
+ record {
97
+ ride: text;
98
+ toPickup: text;
99
+ };
92
100
  type RiderRating =
93
101
  record {
94
102
  driverKey: DriverKey;
@@ -111,21 +119,26 @@ type RideStatus =
111
119
  driverArrived;
112
120
  inProgress;
113
121
  };
114
- type Result_8 =
122
+ type Result_9 =
115
123
  variant {
116
124
  err: Error;
117
125
  ok: ChooseOutcome;
118
126
  };
119
- type Result_7 =
127
+ type Result_8 =
120
128
  variant {
121
129
  err: Error;
122
130
  ok: WorkerConfig;
123
131
  };
124
- type Result_6 =
132
+ type Result_7 =
125
133
  variant {
126
134
  err: Error;
127
135
  ok: FlowStatus;
128
136
  };
137
+ type Result_6 =
138
+ variant {
139
+ err: Error;
140
+ ok: RouteLine;
141
+ };
129
142
  type Result_5 =
130
143
  variant {
131
144
  err: Error;
@@ -217,11 +230,13 @@ type QuoteDecline =
217
230
  type Quote =
218
231
  record {
219
232
  driverKey: DriverKey;
233
+ driverPosition: opt Geo;
220
234
  etaToPickupSec: nat32;
221
235
  price: Money;
222
236
  requestId: RequestId;
223
237
  rideMeters: nat32;
224
238
  rideSec: nat32;
239
+ routeLine: opt RouteLine;
225
240
  toPickupMeters: nat32;
226
241
  validUntilNs: nat64;
227
242
  };
@@ -262,6 +277,7 @@ type OfferView =
262
277
  card: DriverCard;
263
278
  driverCanister: principal;
264
279
  driverKey: DriverKey;
280
+ driverPosition: opt Geo;
265
281
  driverRating: opt nat16;
266
282
  etaToPickupSec: nat32;
267
283
  pinGeohash: text;
@@ -335,6 +351,7 @@ type FlowStatus =
335
351
  openRequests: nat;
336
352
  outboxPending: nat;
337
353
  rides: nat;
354
+ usagePending: opt nat;
338
355
  };
339
356
  type ErrorDetails =
340
357
  variant {
@@ -85,6 +85,7 @@ export type ErrorDetails = { 'InterCanisterConnectionError' : null } |
85
85
  { 'ReturnsNull' : null };
86
86
  export interface FlowStatus {
87
87
  'helloDone' : boolean,
88
+ 'usagePending' : [] | [bigint],
88
89
  'activeRides' : bigint,
89
90
  'knownDriverCanisters' : bigint,
90
91
  'liveDrivers' : bigint,
@@ -141,6 +142,7 @@ export interface OfferView {
141
142
  'driverCanister' : Principal,
142
143
  'price' : Money,
143
144
  'etaToPickupSec' : number,
145
+ 'driverPosition' : [] | [Geo],
144
146
  'toPickupMeters' : number,
145
147
  'validUntilNs' : bigint,
146
148
  }
@@ -165,9 +167,11 @@ export interface Quote {
165
167
  'requestId' : RequestId,
166
168
  'rideMeters' : number,
167
169
  'rideSec' : number,
170
+ 'routeLine' : [] | [RouteLine],
168
171
  'driverKey' : DriverKey,
169
172
  'price' : Money,
170
173
  'etaToPickupSec' : number,
174
+ 'driverPosition' : [] | [Geo],
171
175
  'toPickupMeters' : number,
172
176
  'validUntilNs' : bigint,
173
177
  }
@@ -232,11 +236,13 @@ export type Result_4 = { 'ok' : WorkerStatus } |
232
236
  { 'err' : Error };
233
237
  export type Result_5 = { 'ok' : Array<PrefixCount> } |
234
238
  { 'err' : Error };
235
- export type Result_6 = { 'ok' : FlowStatus } |
239
+ export type Result_6 = { 'ok' : RouteLine } |
236
240
  { 'err' : Error };
237
- export type Result_7 = { 'ok' : WorkerConfig } |
241
+ export type Result_7 = { 'ok' : FlowStatus } |
238
242
  { 'err' : Error };
239
- export type Result_8 = { 'ok' : ChooseOutcome } |
243
+ export type Result_8 = { 'ok' : WorkerConfig } |
244
+ { 'err' : Error };
245
+ export type Result_9 = { 'ok' : ChooseOutcome } |
240
246
  { 'err' : Error };
241
247
  export type RideStatus = { 'completed' : { 'price' : Money } } |
242
248
  { 'cancelledByRider' : null } |
@@ -255,6 +261,7 @@ export interface RiderRating {
255
261
  'stars' : number,
256
262
  'driverKey' : DriverKey,
257
263
  }
264
+ export interface RouteLine { 'ride' : string, 'toPickup' : string }
258
265
  export interface TestLoadArgs {
259
266
  'reportLevel' : [] | [bigint],
260
267
  'cells' : Array<PrefixCount>,
@@ -273,7 +280,7 @@ export interface TigiWorker {
273
280
  /**
274
281
  * / ZO-13, ZO-14, ZO-17.
275
282
  */
276
- 'chooseOffer' : ActorMethod<[OfferRef], Result_8>,
283
+ 'chooseOffer' : ActorMethod<[OfferRef], Result_9>,
277
284
  'clearLogs' : ActorMethod<[], undefined>,
278
285
  /**
279
286
  * / ZO-15 (otherOfferChosen after an acceptance in another worker), ZO-18 (riderGaveUp).
@@ -282,7 +289,7 @@ export interface TigiWorker {
282
289
  /**
283
290
  * / The coordinator only: the settings it computes for every worker.
284
291
  */
285
- 'configure' : ActorMethod<[ConfigureArgs], Result_7>,
292
+ 'configure' : ActorMethod<[ConfigureArgs], Result_8>,
286
293
  /**
287
294
  * / ZO-6.
288
295
  */
@@ -294,8 +301,13 @@ export interface TigiWorker {
294
301
  /**
295
302
  * / The flow's numbers (scripts, the coordinator's front).
296
303
  */
297
- 'getFlowStatus' : ActorMethod<[], Result_6>,
304
+ 'getFlowStatus' : ActorMethod<[], Result_7>,
298
305
  'getLogs' : ActorMethod<[], string>,
306
+ /**
307
+ * / ZO-21 (2026-10-24, route line): the route line of one offer, for the rider of the
308
+ * / request only (the package asks after a tap on the offer).
309
+ */
310
+ 'getOfferRoute' : ActorMethod<[OfferRef], Result_6>,
299
311
  /**
300
312
  * / The load this worker counts per geohash prefix of the given length (1–6): the
301
313
  * / coordinator picks from it what to give another worker on a split (KO-5).
@@ -92,7 +92,7 @@ export const idlFactory = ({ IDL }) => {
92
92
  'ordered' : IDL.Record({ 'answerByNs' : IDL.Nat64 }),
93
93
  'driverNotFree' : IDL.Null,
94
94
  });
95
- const Result_8 = IDL.Variant({ 'ok' : ChooseOutcome, 'err' : Error });
95
+ const Result_9 = IDL.Variant({ 'ok' : ChooseOutcome, 'err' : Error });
96
96
  const CloseReason = IDL.Variant({
97
97
  'offerRejected' : IDL.Null,
98
98
  'otherOfferChosen' : IDL.Null,
@@ -124,7 +124,7 @@ export const idlFactory = ({ IDL }) => {
124
124
  'load' : LoadThresholds,
125
125
  'lowCyclesBelow' : IDL.Nat,
126
126
  });
127
- const Result_7 = IDL.Variant({ 'ok' : WorkerConfig, 'err' : Error });
127
+ const Result_8 = IDL.Variant({ 'ok' : WorkerConfig, 'err' : Error });
128
128
  const QuoteDecline = IDL.Record({
129
129
  'requestId' : RequestId,
130
130
  'driverKey' : DriverKey,
@@ -140,6 +140,7 @@ export const idlFactory = ({ IDL }) => {
140
140
  });
141
141
  const FlowStatus = IDL.Record({
142
142
  'helloDone' : IDL.Bool,
143
+ 'usagePending' : IDL.Opt(IDL.Nat),
143
144
  'activeRides' : IDL.Nat,
144
145
  'knownDriverCanisters' : IDL.Nat,
145
146
  'liveDrivers' : IDL.Nat,
@@ -149,7 +150,9 @@ export const idlFactory = ({ IDL }) => {
149
150
  'rides' : IDL.Nat,
150
151
  'openRequests' : IDL.Nat,
151
152
  });
152
- const Result_6 = IDL.Variant({ 'ok' : FlowStatus, 'err' : Error });
153
+ const Result_7 = IDL.Variant({ 'ok' : FlowStatus, 'err' : Error });
154
+ const RouteLine = IDL.Record({ 'ride' : IDL.Text, 'toPickup' : IDL.Text });
155
+ const Result_6 = IDL.Variant({ 'ok' : RouteLine, 'err' : Error });
153
156
  const PrefixCount = IDL.Record({ 'load' : IDL.Nat, 'prefix' : IDL.Text });
154
157
  const Result_5 = IDL.Variant({ 'ok' : IDL.Vec(PrefixCount), 'err' : Error });
155
158
  const RequestRef = IDL.Record({ 'requestId' : RequestId });
@@ -168,6 +171,7 @@ export const idlFactory = ({ IDL }) => {
168
171
  'hasLicencePhoto' : IDL.Bool,
169
172
  });
170
173
  const Money = IDL.Record({ 'currency' : IDL.Text, 'amount' : IDL.Nat64 });
174
+ const Geo = IDL.Record({ 'lat' : IDL.Float64, 'lng' : IDL.Float64 });
171
175
  const OfferView = IDL.Record({
172
176
  'rideMeters' : IDL.Nat32,
173
177
  'driverRating' : IDL.Opt(IDL.Nat16),
@@ -180,6 +184,7 @@ export const idlFactory = ({ IDL }) => {
180
184
  'driverCanister' : IDL.Principal,
181
185
  'price' : Money,
182
186
  'etaToPickupSec' : IDL.Nat32,
187
+ 'driverPosition' : IDL.Opt(Geo),
183
188
  'toPickupMeters' : IDL.Nat32,
184
189
  'validUntilNs' : IDL.Nat64,
185
190
  });
@@ -241,7 +246,6 @@ export const idlFactory = ({ IDL }) => {
241
246
  });
242
247
  const Result_4 = IDL.Variant({ 'ok' : WorkerStatus, 'err' : Error });
243
248
  const Result_3 = IDL.Variant({ 'ok' : IDL.Nat, 'err' : Error });
244
- const Geo = IDL.Record({ 'lat' : IDL.Float64, 'lng' : IDL.Float64 });
245
249
  const HasSimulatedDriversArgs = IDL.Record({ 'center' : Geo });
246
250
  const TestLoadArgs = IDL.Record({
247
251
  'reportLevel' : IDL.Opt(IDL.Nat),
@@ -290,23 +294,26 @@ export const idlFactory = ({ IDL }) => {
290
294
  'requestId' : RequestId,
291
295
  'rideMeters' : IDL.Nat32,
292
296
  'rideSec' : IDL.Nat32,
297
+ 'routeLine' : IDL.Opt(RouteLine),
293
298
  'driverKey' : DriverKey,
294
299
  'price' : Money,
295
300
  'etaToPickupSec' : IDL.Nat32,
301
+ 'driverPosition' : IDL.Opt(Geo),
296
302
  'toPickupMeters' : IDL.Nat32,
297
303
  'validUntilNs' : IDL.Nat64,
298
304
  });
299
305
  const TigiWorker = IDL.Service({
300
306
  'answerOrder' : IDL.Func([OrderAnswer], [ProtocolResult], []),
301
307
  'applyCoreChanges' : IDL.Func([CoreChanges], [Result], []),
302
- 'chooseOffer' : IDL.Func([OfferRef], [Result_8], []),
308
+ 'chooseOffer' : IDL.Func([OfferRef], [Result_9], []),
303
309
  'clearLogs' : IDL.Func([], [], []),
304
310
  'closeRequest' : IDL.Func([CloseRequestArgs], [Result_2], []),
305
- 'configure' : IDL.Func([ConfigureArgs], [Result_7], []),
311
+ 'configure' : IDL.Func([ConfigureArgs], [Result_8], []),
306
312
  'declineQuote' : IDL.Func([QuoteDecline], [], []),
307
313
  'getCoreCopyStatus' : IDL.Func([], [CoreCopyStatus], ['query']),
308
- 'getFlowStatus' : IDL.Func([], [Result_6], ['query']),
314
+ 'getFlowStatus' : IDL.Func([], [Result_7], ['query']),
309
315
  'getLogs' : IDL.Func([], [IDL.Text], ['query']),
316
+ 'getOfferRoute' : IDL.Func([OfferRef], [Result_6], ['query']),
310
317
  'getPrefixCounts' : IDL.Func([IDL.Nat], [Result_5], ['query']),
311
318
  'getRequest' : IDL.Func([RequestRef], [Result_1], ['query']),
312
319
  'getStatus' : IDL.Func([], [Result_4], ['query']),
@@ -0,0 +1,77 @@
1
+ import type { Identity } from "@icp-sdk/core/agent";
2
+ import type { ClaimCode as CandidClaimCode, DriverCanister as CandidDriverCanister } from "../../declarations/core/core.did.js";
3
+ import { type GroupOptions } from "../group/canister-actor.js";
4
+ import type { ClaimCodeView, DemoLeaseView, DriverCanisterView } from "../interfaces.js";
5
+ /** The fragment key of a claim link: `https://<canister>.icp0.io/#claim=<code>`. */
6
+ export declare const CLAIM_FRAGMENT_KEY = "claim";
7
+ /** F-20a: a code is 32 characters of base64url; the core refuses more than this. */
8
+ export declare const MAX_CLAIM_CODE_CHARS = 64;
9
+ /**
10
+ * F-20: the link the rider's site shows after a lease ("Otwórz swój kanister"). The code
11
+ * rides in the fragment, which the browser never sends to a server.
12
+ * @param frontOrigin the origin of the driver canister's front; default `https://<canister>.icp0.io`
13
+ */
14
+ export declare function claimLinkOf(canisterId: string, code: string, frontOrigin?: string): string;
15
+ /**
16
+ * F-20: the claim code in a location hash (`#claim=<code>`, also among other `&` parts), or
17
+ * undefined. The driver's front clears the fragment after the claim.
18
+ */
19
+ export declare function claimCodeOfHash(hash: string): string | undefined;
20
+ /** @internal */
21
+ export declare function driverCanisterOf(record: Pick<CandidDriverCanister, "canister" | "owner" | "kind" | "leaseUntilNs" | "blocked">): DriverCanisterView;
22
+ /** @internal */
23
+ export declare function claimCodeOf(claim: CandidClaimCode): ClaimCodeView;
24
+ export declare class DriverCanistersActor {
25
+ private readonly group;
26
+ constructor(coordinatorId: string, identity: Identity, options?: GroupOptions);
27
+ /**
28
+ * F-5 … F-7, F-20a: a demo canister for 15 minutes, reinstalled with the caller as its
29
+ * owner — or the caller's lease already (no reinstall, no code: `newClaimCodeAsyncUnsafe`).
30
+ * @returns `leased` with `claim` after a fresh lease (undefined when the core could make
31
+ * no code — ask `newClaimCodeAsyncUnsafe`); `busy` with the time the pool frees up
32
+ * @throws Error with message `CanisterError` — `NotAuthorized` (prod), `NotFound` (no pool),
33
+ * `InvalidData` (no driver wasm), `RemoteCanisterError` (the install failed)
34
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
35
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
36
+ */
37
+ leaseDemoAsyncUnsafe(): Promise<DemoLeaseView>;
38
+ /**
39
+ * F-8: 15 minutes more for the holder of the demo canister (at most 30 ahead), also after
40
+ * the end while nobody took it over. The owner stays (F-20f).
41
+ * @throws Error with message `CanisterError` — `NotFound` (no lease of the caller), `InvalidData` (being installed)
42
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
43
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
44
+ */
45
+ extendDemoAsyncUnsafe(): Promise<DriverCanisterView>;
46
+ /**
47
+ * The caller's own driver canister, or the demo canister the caller holds now (as the
48
+ * lease holder — after a claim the canister's owner is the driver, `ownerPrincipal`).
49
+ * @returns undefined when the caller has none
50
+ * @throws Error with message `CanisterError` — `NotAuthorized` (anonymous)
51
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
52
+ */
53
+ getMineAsyncUnsafe(): Promise<DriverCanisterView | undefined>;
54
+ /**
55
+ * F-20c: a new claim code for the caller's running demo lease ("Nowy link"); the code
56
+ * before it stops working. Good for 15 minutes, once.
57
+ * @throws Error with message `CanisterError` — `NotFound` (no running lease of the caller),
58
+ * `InvalidData` (being installed), `RemoteCanisterError` (no randomness — try again)
59
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
60
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
61
+ */
62
+ newClaimCodeAsyncUnsafe(): Promise<ClaimCodeView>;
63
+ /**
64
+ * F-20d, F-20e: the caller — the driver signed in on the canister's own front — takes
65
+ * over the demo canister with the code of the link. The canister's owner becomes the
66
+ * caller, and so does the recipient of its chat room; the lease stays with its holder.
67
+ * @returns the canister with the caller as `ownerPrincipal`
68
+ * @throws Error with message `CanisterError` — `NotAuthorized` (the code is wrong, expired,
69
+ * used, or not for this canister — one answer for all), `InvalidData` (the canister
70
+ * is busy — try again), `RemoteCanisterError` (the driver canister did not take it;
71
+ * the code stays good)
72
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
73
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
74
+ */
75
+ claimAsyncUnsafe(canisterId: string, code: string): Promise<DriverCanisterView>;
76
+ }
77
+ //# sourceMappingURL=driver-canisters-actor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-canisters-actor.d.ts","sourceRoot":"","sources":["../../src/actors/driver-canisters-actor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChI,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/F,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGzF,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAwC,GAAG,MAAM,CAE3H;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBhE;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC,GAAG,kBAAkB,CAUnJ;AAED,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAEjE;AAED,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,YAAiB;IAIjF;;;;;;;;;OASG;IACU,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC;IAS3D;;;;;;OAMG;IACU,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIjE;;;;;;OAMG;IACU,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAS1E;;;;;;;OAOG;IACU,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC;IAI9D;;;;;;;;;;;OAWG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAU/F"}
@@ -0,0 +1,147 @@
1
+ // The driver canister of the signed-in person in the core's factory (fabryka.md F-5 … F-8,
2
+ // F-20; U-45): the demo lease, its extension, "mine", and the one-time claim code that hands
3
+ // a demo canister over to the driver's principal on the canister's own front.
4
+ //
5
+ // Internet Identity gives one person a different principal on every origin: the lease is
6
+ // taken on the rider's site, the driver signs in on `https://<canister>.icp0.io`. The
7
+ // rider's site shows the link `claimLinkOf(canisterId, code)`; the driver's front reads the
8
+ // code with `claimCodeOfHash(location.hash)` and calls `claimAsyncUnsafe` as the driver.
9
+ //
10
+ // The driver canister's id is the driver's own address (the link of his front), so these
11
+ // views carry it — unlike the rider's views of other drivers (U-14).
12
+ import { Principal } from "@icp-sdk/core/principal";
13
+ import { errorKeyOf, executeAsyncUnsafe } from "../group/canister-actor.js";
14
+ import { TigiGroup } from "../group/group.js";
15
+ import { msOf } from "../mappers.js";
16
+ /** The fragment key of a claim link: `https://<canister>.icp0.io/#claim=<code>`. */
17
+ export const CLAIM_FRAGMENT_KEY = "claim";
18
+ /** F-20a: a code is 32 characters of base64url; the core refuses more than this. */
19
+ export const MAX_CLAIM_CODE_CHARS = 64;
20
+ /**
21
+ * F-20: the link the rider's site shows after a lease ("Otwórz swój kanister"). The code
22
+ * rides in the fragment, which the browser never sends to a server.
23
+ * @param frontOrigin the origin of the driver canister's front; default `https://<canister>.icp0.io`
24
+ */
25
+ export function claimLinkOf(canisterId, code, frontOrigin = `https://${canisterId}.icp0.io`) {
26
+ return `${frontOrigin}/#${CLAIM_FRAGMENT_KEY}=${encodeURIComponent(code)}`;
27
+ }
28
+ /**
29
+ * F-20: the claim code in a location hash (`#claim=<code>`, also among other `&` parts), or
30
+ * undefined. The driver's front clears the fragment after the claim.
31
+ */
32
+ export function claimCodeOfHash(hash) {
33
+ const text = hash.startsWith("#") ? hash.slice(1) : hash;
34
+ for (const part of text.split("&")) {
35
+ const [key, ...rest] = part.split("=");
36
+ if (key !== CLAIM_FRAGMENT_KEY)
37
+ continue;
38
+ let code;
39
+ try {
40
+ code = decodeURIComponent(rest.join("="));
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ return code.length > 0 && code.length <= MAX_CLAIM_CODE_CHARS && /^[A-Za-z0-9_-]+$/.test(code) ? code : undefined;
46
+ }
47
+ return undefined;
48
+ }
49
+ /** @internal */
50
+ export function driverCanisterOf(record) {
51
+ const until = record.leaseUntilNs[0];
52
+ return {
53
+ canisterId: record.canister.toText(),
54
+ kind: "pool" in record.kind ? "pool" : "own",
55
+ ownerPrincipal: record.owner.toText(),
56
+ leaseUntilMs: until === undefined ? undefined : msOf(BigInt(until)),
57
+ blocked: record.blocked,
58
+ };
59
+ }
60
+ /** @internal */
61
+ export function claimCodeOf(claim) {
62
+ return { canisterId: claim.canister.toText(), code: claim.code, expiresAtMs: msOf(BigInt(claim.expiresAtNs)) };
63
+ }
64
+ export class DriverCanistersActor {
65
+ group;
66
+ constructor(coordinatorId, identity, options = {}) {
67
+ this.group = TigiGroup.of(coordinatorId, identity, options);
68
+ }
69
+ /**
70
+ * F-5 … F-7, F-20a: a demo canister for 15 minutes, reinstalled with the caller as its
71
+ * owner — or the caller's lease already (no reinstall, no code: `newClaimCodeAsyncUnsafe`).
72
+ * @returns `leased` with `claim` after a fresh lease (undefined when the core could make
73
+ * no code — ask `newClaimCodeAsyncUnsafe`); `busy` with the time the pool frees up
74
+ * @throws Error with message `CanisterError` — `NotAuthorized` (prod), `NotFound` (no pool),
75
+ * `InvalidData` (no driver wasm), `RemoteCanisterError` (the install failed)
76
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
77
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
78
+ */
79
+ async leaseDemoAsyncUnsafe() {
80
+ const answer = await executeAsyncUnsafe(async () => (await this.group.coreAsync()).leaseDemoDriverCanister());
81
+ if ("busy" in answer)
82
+ return { kind: "busy", untilMs: msOf(BigInt(answer.busy.untilNs)) };
83
+ const leased = answer.leased;
84
+ const claim = leased.claim[0];
85
+ return { kind: "leased", canister: driverCanisterOf(leased), claim: claim === undefined ? undefined : claimCodeOf(claim) };
86
+ }
87
+ /**
88
+ * F-8: 15 minutes more for the holder of the demo canister (at most 30 ahead), also after
89
+ * the end while nobody took it over. The owner stays (F-20f).
90
+ * @throws Error with message `CanisterError` — `NotFound` (no lease of the caller), `InvalidData` (being installed)
91
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
92
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
93
+ */
94
+ async extendDemoAsyncUnsafe() {
95
+ return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).extendDemoLease()));
96
+ }
97
+ /**
98
+ * The caller's own driver canister, or the demo canister the caller holds now (as the
99
+ * lease holder — after a claim the canister's owner is the driver, `ownerPrincipal`).
100
+ * @returns undefined when the caller has none
101
+ * @throws Error with message `CanisterError` — `NotAuthorized` (anonymous)
102
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
103
+ */
104
+ async getMineAsyncUnsafe() {
105
+ try {
106
+ return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).getMyDriverCanister()));
107
+ }
108
+ catch (err) {
109
+ if (errorKeyOf(err) === "NotFound")
110
+ return undefined;
111
+ throw err;
112
+ }
113
+ }
114
+ /**
115
+ * F-20c: a new claim code for the caller's running demo lease ("Nowy link"); the code
116
+ * before it stops working. Good for 15 minutes, once.
117
+ * @throws Error with message `CanisterError` — `NotFound` (no running lease of the caller),
118
+ * `InvalidData` (being installed), `RemoteCanisterError` (no randomness — try again)
119
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
120
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
121
+ */
122
+ async newClaimCodeAsyncUnsafe() {
123
+ return claimCodeOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).newClaimCode()));
124
+ }
125
+ /**
126
+ * F-20d, F-20e: the caller — the driver signed in on the canister's own front — takes
127
+ * over the demo canister with the code of the link. The canister's owner becomes the
128
+ * caller, and so does the recipient of its chat room; the lease stays with its holder.
129
+ * @returns the canister with the caller as `ownerPrincipal`
130
+ * @throws Error with message `CanisterError` — `NotAuthorized` (the code is wrong, expired,
131
+ * used, or not for this canister — one answer for all), `InvalidData` (the canister
132
+ * is busy — try again), `RemoteCanisterError` (the driver canister did not take it;
133
+ * the code stays good)
134
+ * @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
135
+ * @throws Error with message `CriticalCanisterError` — the core could not be reached
136
+ */
137
+ async claimAsyncUnsafe(canisterId, code) {
138
+ let canister;
139
+ try {
140
+ canister = Principal.fromText(canisterId);
141
+ }
142
+ catch {
143
+ throw new Error("CanisterError", { cause: { errorKey: "InvalidData", errorMessage: "not a canister id", logs: [] } });
144
+ }
145
+ return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).claimDriverCanister({ canister, code })));
146
+ }
147
+ }
@@ -2,7 +2,7 @@ import type { Identity } from "@icp-sdk/core/agent";
2
2
  import { type GroupOptions } from "../group/canister-actor.js";
3
3
  import { TigiGroup } from "../group/group.js";
4
4
  import { type Geo } from "../geo.js";
5
- import type { ChatPlace, ChooseOutcome, LicenceView, RequestSnapshot, RideView } from "../interfaces.js";
5
+ import type { ChatPlace, ChooseOutcome, LicenceView, RequestSnapshot, RideView, RouteLineView } from "../interfaces.js";
6
6
  /** U-29: the rider's radius, and the radius after `WIDEN_AFTER_MS` without offers. */
7
7
  export declare const SEARCH_RADIUS_METERS = 3000;
8
8
  export declare const WIDE_RADIUS_METERS = 6000;
@@ -159,6 +159,26 @@ export declare class RideRequest {
159
159
  * @throws Error with message `CriticalCanisterError` — the worker could not be reached
160
160
  */
161
161
  chooseOfferAsyncUnsafe(offerId: string): Promise<ChooseOutcome>;
162
+ /**
163
+ * ZO-21 (2026-10-24, route line): the driver's route of one offer, to draw when the rider
164
+ * taps it — from the driver's exact position to the pickup, then the ride (P-17). One
165
+ * query per tap: the lines are not in the polled snapshot.
166
+ * @returns undefined when the offer has no line: an older driver canister or worker, a
167
+ * line the network dropped (too big, not valid), the offer past its time or gone, or its
168
+ * worker upgraded since (the line lives in the worker's heap only, WO-22)
169
+ * @throws Error with message `CanisterError` — `NotAuthorized` (not your request), `NotFound` (an offer this request does not hold), `InvalidToken`
170
+ * @throws Error with message `CriticalCanisterError` — the worker could not be reached
171
+ */
172
+ getOfferRouteAsyncUnsafe(offerId: string): Promise<RouteLineView | undefined>;
173
+ /**
174
+ * K-13 (2026-10-24, route line): the line of the accepted ride, while it is active — read
175
+ * once (it does not change), not in `getRideAsyncUnsafe`, which is polled (P-19).
176
+ * @returns undefined when the ride has no line (the quote had none), has ended, or the
177
+ * driver canister is older than the line (no `getRideRoute`)
178
+ * @throws Error with message `CanisterError` — `NOT_ACCEPTED` (no driver accepted yet), `notAuthorized` (not the rider of the ride)
179
+ * @throws Error with message `CriticalCanisterError` — the driver canister does not answer
180
+ */
181
+ getRideRouteAsyncUnsafe(): Promise<RouteLineView | undefined>;
162
182
  /**
163
183
  * K-5, U-42: "Szukaj ponownie" after "Kierowca anulował kurs" — a NEW request with the
164
184
  * same pickup, destination and rider name (a new `requestId`; the old request ended with
@@ -1 +1 @@
1
- {"version":3,"file":"rides-actor.d.ts","sourceRoot":"","sources":["../../src/actors/rides-actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rides-actor.d.ts","sourceRoot":"","sources":["../../src/actors/rides-actor.ts"],"names":[],"mappings":"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"}