tesla-fleet-api 0.1.3 → 0.2.2

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 (49) hide show
  1. package/dist/commands.d.ts +352 -0
  2. package/dist/commands.js +875 -0
  3. package/dist/commands.js.map +1 -0
  4. package/dist/energy.js +6 -2
  5. package/dist/energy.js.map +1 -1
  6. package/dist/index.d.ts +7 -1
  7. package/dist/index.js +6 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/signing/crypto.d.ts +10 -0
  10. package/dist/signing/crypto.js +26 -0
  11. package/dist/signing/crypto.js.map +1 -0
  12. package/dist/signing/errors.d.ts +29 -0
  13. package/dist/signing/errors.js +40 -0
  14. package/dist/signing/errors.js.map +1 -0
  15. package/dist/signing/session.d.ts +69 -0
  16. package/dist/signing/session.js +102 -0
  17. package/dist/signing/session.js.map +1 -0
  18. package/dist/tariff.d.ts +29 -0
  19. package/dist/tariff.js +302 -0
  20. package/dist/tariff.js.map +1 -0
  21. package/dist/teslafleetapi.d.ts +7 -0
  22. package/dist/teslafleetapi.js +29 -13
  23. package/dist/teslafleetapi.js.map +1 -1
  24. package/dist/teslemetry.d.ts +4 -0
  25. package/dist/teslemetry.js +15 -1
  26. package/dist/teslemetry.js.map +1 -1
  27. package/dist/types/site_info.d.ts +37 -8
  28. package/dist/vehicle.d.ts +12 -0
  29. package/dist/vehicle.js +12 -0
  30. package/dist/vehicle.js.map +1 -1
  31. package/dist/vehiclesigned.d.ts +13 -0
  32. package/dist/vehiclesigned.js +19 -0
  33. package/dist/vehiclesigned.js.map +1 -0
  34. package/dist/vehiclespecific.d.ts +3 -15
  35. package/dist/vehiclespecific.js.map +1 -1
  36. package/package.json +16 -6
  37. package/src/commands.ts +1134 -0
  38. package/src/energy.ts +197 -135
  39. package/src/index.ts +12 -1
  40. package/src/signing/crypto.ts +29 -0
  41. package/src/signing/errors.ts +50 -0
  42. package/src/signing/session.ts +132 -0
  43. package/src/tariff.ts +375 -0
  44. package/src/teslafleetapi.ts +160 -118
  45. package/src/teslemetry.ts +39 -24
  46. package/src/types/site_info.ts +38 -8
  47. package/src/vehicle.ts +15 -0
  48. package/src/vehiclesigned.ts +20 -0
  49. package/src/vehiclespecific.ts +811 -721
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
package/dist/energy.js CHANGED
@@ -78,7 +78,9 @@ export default class Energy {
78
78
  * @returns
79
79
  */
80
80
  async live_status(energy_site_id) {
81
- return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/live_status`).then(({ response }) => response);
81
+ return this.parent
82
+ ._request("GET", `api/1/energy_sites/${energy_site_id}/live_status`)
83
+ .then(({ response }) => response);
82
84
  }
83
85
  /**
84
86
  * Adjust the site's off-grid vehicle charging backup reserve.
@@ -106,7 +108,9 @@ export default class Energy {
106
108
  * @returns
107
109
  */
108
110
  async site_info(energy_site_id) {
109
- return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/site_info`).then(({ response }) => response);
111
+ return this.parent
112
+ ._request("GET", `api/1/energy_sites/${energy_site_id}/site_info`)
113
+ .then(({ response }) => response);
110
114
  }
111
115
  /**
112
116
  * Update storm watch participation.
@@ -1 +1 @@
1
- {"version":3,"file":"energy.js","sourceRoot":"","sources":["../src/energy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"energy.js","sourceRoot":"","sources":["../src/energy.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
+ import Commands from "./commands.js";
1
2
  import Energy from "./energy.js";
2
3
  import EnergySpecific from "./energyspecific.js";
3
4
  import TeslaFleetApi from "./teslafleetapi.js";
4
5
  import Teslemetry from "./teslemetry.js";
5
6
  import Tessie from "./tessie.js";
6
7
  import Vehicle from "./vehicle.js";
8
+ import VehicleSigned from "./vehiclesigned.js";
7
9
  import VehicleSpecific from "./vehiclespecific.js";
8
- export { Energy, EnergySpecific, TeslaFleetApi, Teslemetry, Tessie, Vehicle, VehicleSpecific };
10
+ export { Commands, Energy, EnergySpecific, TeslaFleetApi, Teslemetry, Tessie, Vehicle, VehicleSigned, VehicleSpecific };
11
+ export { Session } from "./signing/session.js";
12
+ export { SignedCommandError, NotOnVehicleWhitelistError, SignedCommandFaultError, RetryableSignedCommandFaultError, } from "./signing/errors.js";
13
+ export { getTariffPeriods } from "./tariff.js";
14
+ export type { TariffRate, TariffPeriod, TariffResolution } from "./tariff.js";
package/dist/index.js CHANGED
@@ -1,9 +1,14 @@
1
+ import Commands from "./commands.js";
1
2
  import Energy from "./energy.js";
2
3
  import EnergySpecific from "./energyspecific.js";
3
4
  import TeslaFleetApi from "./teslafleetapi.js";
4
5
  import Teslemetry from "./teslemetry.js";
5
6
  import Tessie from "./tessie.js";
6
7
  import Vehicle from "./vehicle.js";
8
+ import VehicleSigned from "./vehiclesigned.js";
7
9
  import VehicleSpecific from "./vehiclespecific.js";
8
- export { Energy, EnergySpecific, TeslaFleetApi, Teslemetry, Tessie, Vehicle, VehicleSpecific };
10
+ export { Commands, Energy, EnergySpecific, TeslaFleetApi, Teslemetry, Tessie, Vehicle, VehicleSigned, VehicleSpecific };
11
+ export { Session } from "./signing/session.js";
12
+ export { SignedCommandError, NotOnVehicleWhitelistError, SignedCommandFaultError, RetryableSignedCommandFaultError, } from "./signing/errors.js";
13
+ export { getTariffPeriods } from "./tariff.js";
9
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AACxH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Derive the uncompressed public key point for a raw P-256 private scalar. */
2
+ export declare function publicKeyFor(privateKey: Buffer): Buffer;
3
+ /**
4
+ * Derive the 16-byte signed-command shared key: ECDH(ourPrivate, vehiclePublic),
5
+ * then SHA-1 truncated to 16 bytes - matching the vehicle-command protocol
6
+ * (not a general-purpose KDF, do not reuse this for anything else).
7
+ */
8
+ export declare function deriveSharedKey(privateKey: Buffer, vehiclePublicKey: Buffer): Buffer;
9
+ /** Big-endian uint32, as used throughout the signed-command metadata tags. */
10
+ export declare function uint32BE(value: number): Buffer;
@@ -0,0 +1,26 @@
1
+ import crypto from "crypto";
2
+ const CURVE = "prime256v1"; // NIST P-256, matches the vehicle-command protocol.
3
+ /** Derive the uncompressed public key point for a raw P-256 private scalar. */
4
+ export function publicKeyFor(privateKey) {
5
+ const ecdh = crypto.createECDH(CURVE);
6
+ ecdh.setPrivateKey(privateKey);
7
+ return ecdh.getPublicKey();
8
+ }
9
+ /**
10
+ * Derive the 16-byte signed-command shared key: ECDH(ourPrivate, vehiclePublic),
11
+ * then SHA-1 truncated to 16 bytes - matching the vehicle-command protocol
12
+ * (not a general-purpose KDF, do not reuse this for anything else).
13
+ */
14
+ export function deriveSharedKey(privateKey, vehiclePublicKey) {
15
+ const ecdh = crypto.createECDH(CURVE);
16
+ ecdh.setPrivateKey(privateKey);
17
+ const secret = ecdh.computeSecret(vehiclePublicKey);
18
+ return crypto.createHash("sha1").update(secret).digest().subarray(0, 16);
19
+ }
20
+ /** Big-endian uint32, as used throughout the signed-command metadata tags. */
21
+ export function uint32BE(value) {
22
+ const buffer = Buffer.alloc(4);
23
+ buffer.writeUInt32BE(value >>> 0, 0);
24
+ return buffer;
25
+ }
26
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/signing/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,oDAAoD;AAEhF,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,gBAAwB;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,QAAQ,CAAC,KAAa;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { MessageFaultE } from "@teslemetry/tesla-protocol/command/universal_message";
2
+ /**
3
+ * Base class for every error raised by the signed-command layer.
4
+ */
5
+ export declare class SignedCommandError extends Error {
6
+ }
7
+ /**
8
+ * The vehicle rejected the session handshake because this key has not been
9
+ * paired with it (added via the Tesla app / NFC card).
10
+ */
11
+ export declare class NotOnVehicleWhitelistError extends SignedCommandError {
12
+ constructor();
13
+ }
14
+ /**
15
+ * The vehicle rejected a signed command with a `MessageFaultE` other than
16
+ * `MESSAGEFAULT_ERROR_NONE`.
17
+ */
18
+ export declare class SignedCommandFaultError extends SignedCommandError {
19
+ fault: MessageFaultE;
20
+ constructor(fault: MessageFaultE);
21
+ }
22
+ /**
23
+ * A `SignedCommandFaultError` whose fault the vehicle resolves by handing back
24
+ * fresh session info (epoch/counter drift) - `_command` retries these,
25
+ * bounded, by re-signing against the updated session before giving up.
26
+ */
27
+ export declare class RetryableSignedCommandFaultError extends SignedCommandFaultError {
28
+ }
29
+ export declare function createFaultError(fault: MessageFaultE): SignedCommandFaultError;
@@ -0,0 +1,40 @@
1
+ import { MessageFaultE, messageFaultEToJSON } from "@teslemetry/tesla-protocol/command/universal_message";
2
+ /**
3
+ * Base class for every error raised by the signed-command layer.
4
+ */
5
+ export class SignedCommandError extends Error {
6
+ }
7
+ /**
8
+ * The vehicle rejected the session handshake because this key has not been
9
+ * paired with it (added via the Tesla app / NFC card).
10
+ */
11
+ export class NotOnVehicleWhitelistError extends SignedCommandError {
12
+ constructor() {
13
+ super("This public key is not on the vehicle's key whitelist. Pair it with the vehicle first.");
14
+ }
15
+ }
16
+ /**
17
+ * The vehicle rejected a signed command with a `MessageFaultE` other than
18
+ * `MESSAGEFAULT_ERROR_NONE`.
19
+ */
20
+ export class SignedCommandFaultError extends SignedCommandError {
21
+ constructor(fault) {
22
+ super(`Vehicle rejected signed command: ${messageFaultEToJSON(fault)}`);
23
+ this.fault = fault;
24
+ }
25
+ }
26
+ /**
27
+ * A `SignedCommandFaultError` whose fault the vehicle resolves by handing back
28
+ * fresh session info (epoch/counter drift) - `_command` retries these,
29
+ * bounded, by re-signing against the updated session before giving up.
30
+ */
31
+ export class RetryableSignedCommandFaultError extends SignedCommandFaultError {
32
+ }
33
+ export function createFaultError(fault) {
34
+ if (fault === MessageFaultE.MESSAGEFAULT_ERROR_INCORRECT_EPOCH ||
35
+ fault === MessageFaultE.MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER) {
36
+ return new RetryableSignedCommandFaultError(fault);
37
+ }
38
+ return new SignedCommandFaultError(fault);
39
+ }
40
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/signing/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAE1G;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;CAAG;AAEhD;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IAC9D;QACI,KAAK,CACD,wFAAwF,CAC3F,CAAC;IACN,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAG3D,YAAY,KAAoB;QAC5B,KAAK,CAAC,oCAAoC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,gCAAiC,SAAQ,uBAAuB;CAAG;AAEhF,MAAM,UAAU,gBAAgB,CAC5B,KAAoB;IAEpB,IACI,KAAK,KAAK,aAAa,CAAC,kCAAkC;QAC1D,KAAK,KAAK,aAAa,CAAC,2CAA2C,EACrE,CAAC;QACC,OAAO,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { Domain } from "@teslemetry/tesla-protocol/command/universal_message";
2
+ import { HMACPersonalizedSignatureData, SessionInfo } from "@teslemetry/tesla-protocol/command/signatures";
3
+ /** Key material derived (but not yet trusted/committed) for a candidate vehicle public key. */
4
+ export interface SessionKeys {
5
+ sharedKey: Buffer;
6
+ hmacKey: Buffer;
7
+ sessionInfoKey: Buffer;
8
+ }
9
+ /**
10
+ * Per-domain (VCSEC / Infotainment) signed-command session: tracks the
11
+ * anti-replay counter/epoch handed out by the vehicle's handshake reply and
12
+ * the HMAC keys derived from it.
13
+ *
14
+ * Deriving key material (`keysFor`) is split from committing it (`commit`)
15
+ * because the caller must authenticate a `SessionInfo` reply - by verifying
16
+ * its `session_info_tag` against the very keys derived here - *before*
17
+ * trusting anything in it, including the vehicle public key the shared key
18
+ * itself is derived from. See `Commands.validateAndUpdateSession`.
19
+ *
20
+ * A `Session` is not itself thread-safe; `withLock` serializes the
21
+ * message-build step (which mutates `counter`) so concurrent commands on the
22
+ * same domain cannot race on the same counter value.
23
+ */
24
+ export declare class Session {
25
+ private readonly deriveSharedKey;
26
+ readonly domain: Domain;
27
+ counter: number;
28
+ epoch?: Buffer;
29
+ delta?: number;
30
+ sharedKey?: Buffer;
31
+ hmacKey?: Buffer;
32
+ sessionInfoKey?: Buffer;
33
+ publicKey?: Buffer;
34
+ /** Clock time of the last *authenticated* SessionInfo committed for the current epoch, guarding against replay/rollback. */
35
+ private lastAuthenticatedClockTime?;
36
+ private queue;
37
+ constructor(domain: Domain, deriveSharedKey: (vehiclePublicKey: Buffer) => Buffer);
38
+ /** Whether the handshake has completed and commands can be signed. */
39
+ get ready(): boolean;
40
+ /**
41
+ * Derive the shared key and its two HMAC sub-keys for a candidate vehicle
42
+ * public key, without touching any session state. Pure and side-effect
43
+ * free so a caller can verify authenticity first and discard the result
44
+ * if verification fails.
45
+ */
46
+ keysFor(vehiclePublicKey: Buffer): SessionKeys;
47
+ /**
48
+ * Commit an already-authenticated `SessionInfo` plus the `keysFor` result
49
+ * derived from its public key. Per the vehicle-command protocol, the
50
+ * anti-replay counter must never roll back within the same epoch, and a
51
+ * clock time that regresses within the same epoch marks the reply as
52
+ * stale/replayed - returns `false` (without mutating any state) in that
53
+ * case so the caller can reject it.
54
+ */
55
+ commit(sessionInfo: SessionInfo, keys: SessionKeys): boolean;
56
+ /**
57
+ * Advance the anti-replay counter and return fresh signature metadata for
58
+ * an HMAC-personalized command. The command expires 10 seconds from now,
59
+ * corrected for clock drift against the vehicle (`delta`).
60
+ */
61
+ hmacPersonalized(): HMACPersonalizedSignatureData;
62
+ /**
63
+ * Run `fn` with exclusive access to this session, queuing behind any
64
+ * in-flight caller. Held only for as long as `fn` takes - callers should
65
+ * keep it scoped to the synchronous message-build step, not a full
66
+ * network round trip.
67
+ */
68
+ withLock<T>(fn: () => T | Promise<T>): Promise<T>;
69
+ }
@@ -0,0 +1,102 @@
1
+ import crypto from "crypto";
2
+ import { HMACPersonalizedSignatureData, } from "@teslemetry/tesla-protocol/command/signatures";
3
+ /**
4
+ * Per-domain (VCSEC / Infotainment) signed-command session: tracks the
5
+ * anti-replay counter/epoch handed out by the vehicle's handshake reply and
6
+ * the HMAC keys derived from it.
7
+ *
8
+ * Deriving key material (`keysFor`) is split from committing it (`commit`)
9
+ * because the caller must authenticate a `SessionInfo` reply - by verifying
10
+ * its `session_info_tag` against the very keys derived here - *before*
11
+ * trusting anything in it, including the vehicle public key the shared key
12
+ * itself is derived from. See `Commands.validateAndUpdateSession`.
13
+ *
14
+ * A `Session` is not itself thread-safe; `withLock` serializes the
15
+ * message-build step (which mutates `counter`) so concurrent commands on the
16
+ * same domain cannot race on the same counter value.
17
+ */
18
+ export class Session {
19
+ constructor(domain, deriveSharedKey) {
20
+ this.deriveSharedKey = deriveSharedKey;
21
+ this.counter = 0;
22
+ this.queue = Promise.resolve();
23
+ this.domain = domain;
24
+ }
25
+ /** Whether the handshake has completed and commands can be signed. */
26
+ get ready() {
27
+ return this.epoch !== undefined && this.hmacKey !== undefined && this.delta !== undefined;
28
+ }
29
+ /**
30
+ * Derive the shared key and its two HMAC sub-keys for a candidate vehicle
31
+ * public key, without touching any session state. Pure and side-effect
32
+ * free so a caller can verify authenticity first and discard the result
33
+ * if verification fails.
34
+ */
35
+ keysFor(vehiclePublicKey) {
36
+ const sharedKey = this.deriveSharedKey(vehiclePublicKey);
37
+ const hmacKey = crypto.createHmac("sha256", sharedKey).update("authenticated command").digest();
38
+ const sessionInfoKey = crypto.createHmac("sha256", sharedKey).update("session info").digest();
39
+ return { sharedKey, hmacKey, sessionInfoKey };
40
+ }
41
+ /**
42
+ * Commit an already-authenticated `SessionInfo` plus the `keysFor` result
43
+ * derived from its public key. Per the vehicle-command protocol, the
44
+ * anti-replay counter must never roll back within the same epoch, and a
45
+ * clock time that regresses within the same epoch marks the reply as
46
+ * stale/replayed - returns `false` (without mutating any state) in that
47
+ * case so the caller can reject it.
48
+ */
49
+ commit(sessionInfo, keys) {
50
+ const incomingEpoch = Buffer.from(sessionInfo.epoch);
51
+ const sameEpoch = this.epoch !== undefined && this.epoch.equals(incomingEpoch);
52
+ if (sameEpoch && this.lastAuthenticatedClockTime !== undefined && sessionInfo.clockTime < this.lastAuthenticatedClockTime) {
53
+ return false;
54
+ }
55
+ this.counter = sameEpoch ? Math.max(this.counter, sessionInfo.counter) : sessionInfo.counter;
56
+ this.epoch = incomingEpoch;
57
+ this.delta = Math.floor(Date.now() / 1000) - sessionInfo.clockTime;
58
+ this.lastAuthenticatedClockTime = sessionInfo.clockTime;
59
+ this.publicKey = Buffer.from(sessionInfo.publicKey);
60
+ this.sharedKey = keys.sharedKey;
61
+ this.hmacKey = keys.hmacKey;
62
+ this.sessionInfoKey = keys.sessionInfoKey;
63
+ return true;
64
+ }
65
+ /**
66
+ * Advance the anti-replay counter and return fresh signature metadata for
67
+ * an HMAC-personalized command. The command expires 10 seconds from now,
68
+ * corrected for clock drift against the vehicle (`delta`).
69
+ */
70
+ hmacPersonalized() {
71
+ if (!this.ready || !this.epoch || this.delta === undefined) {
72
+ throw new Error("Session is not ready: perform the handshake first.");
73
+ }
74
+ this.counter++;
75
+ return HMACPersonalizedSignatureData.create({
76
+ epoch: this.epoch,
77
+ counter: this.counter,
78
+ expiresAt: Math.floor(Date.now() / 1000) - this.delta + 10,
79
+ });
80
+ }
81
+ /**
82
+ * Run `fn` with exclusive access to this session, queuing behind any
83
+ * in-flight caller. Held only for as long as `fn` takes - callers should
84
+ * keep it scoped to the synchronous message-build step, not a full
85
+ * network round trip.
86
+ */
87
+ async withLock(fn) {
88
+ const previous = this.queue;
89
+ let release;
90
+ this.queue = new Promise((resolve) => {
91
+ release = resolve;
92
+ });
93
+ await previous.catch(() => undefined);
94
+ try {
95
+ return await fn();
96
+ }
97
+ finally {
98
+ release();
99
+ }
100
+ }
101
+ }
102
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/signing/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { TariffContentV2 } from "./types/site_info.js";
2
+ export interface TariffRate {
3
+ price: number | null;
4
+ periodName: string | null;
5
+ seasonName: string | null;
6
+ }
7
+ export interface TariffPeriod {
8
+ start: Date;
9
+ end: Date;
10
+ buy: TariffRate;
11
+ sell: TariffRate;
12
+ }
13
+ export interface TariffResolution {
14
+ buy: TariffRate;
15
+ sell: TariffRate;
16
+ currentStart: Date;
17
+ nextChange: Date;
18
+ currency: string | null;
19
+ upcoming: TariffPeriod[] | null;
20
+ }
21
+ /**
22
+ * Resolves the current buy/sell time-of-use rate for a Tariff V2 object at a given instant.
23
+ * `tariff` carries no timezone; the caller must supply the site's IANA zone (e.g. from
24
+ * `site_info.installation_time_zone`) so wall-clock period boundaries match correctly.
25
+ */
26
+ export declare function getTariffPeriods(tariff: TariffContentV2, now: Date, opts?: {
27
+ timeZone: string;
28
+ horizonHours?: number;
29
+ }): TariffResolution | null;