openlimiter 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.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAuC3B,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD;;;;;;;;OAQG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qEAAqE;AACrE,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,YAAY,IAAI,CAAC;AA6C9B,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CACtC;AAqgBD,wBAAsB,MAAM,CAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,OAAO,CAAC,SAAS,CAAC,CAiDpB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AA4C3B,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD;;;;;;;;OAQG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qEAAqE;AACrE,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,YAAY,IAAI,CAAC;AA6C9B,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CACtC;AA8iBD,wBAAsB,MAAM,CAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,OAAO,CAAC,SAAS,CAAC,CAiDpB"}
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@ import { PROVIDER_CODES, buildAdvice, canonicalJson, dedupeFailures, failureFrom
2
2
  import { antigravityFixture, claudeFixture, codexFixture, connectors, manualFixture, opencodeFixture, openrouterFixture, parseAntigravityPayload, parseClaudePayload, parseCodexPayload, parseManualPayload, parseOpencodePayload, parseOpenrouterPayload } from "@openlimiter/connectors";
3
3
  import { agentContextFromCache, renderClaudeStatusline } from "@openlimiter/adapters";
4
4
  import { STATUSLINE_KEYS, defaultConfig, initialize, isStatuslineKey, readConfig, readStatuslineConfig, setStatuslineValue, statuslineValueText, writeConfig } from "./config.js";
5
- import { environmentWithLocalMarkers, parseJsonText, persistSnapshots, readManualDocument } from "./ingest.js";
5
+ import { INGEST_PROVENANCE, MANUAL_PROVENANCE, STATUSLINE_PROVENANCE, environmentWithLocalMarkers, STDIN_BYTE_LIMIT, parseJsonText, persistSnapshots, readManualDocument, withProvenance } from "./ingest.js";
6
6
  import { UnavailableCredentialStore } from "./credentials.js";
7
7
  import { DEFAULT_SERVE_PORT, serveBanner, startQuotaServer } from "./serve.js";
8
8
  import { failureLine, failureLines, renderTable, supportsColor } from "./render.js";
@@ -62,6 +62,12 @@ async function refresh(dependencies, now) {
62
62
  const manual = supplied === undefined
63
63
  ? await readManualDocument(dependencies.stateDirectory)
64
64
  : supplied;
65
+ /*
66
+ * The manual connector is the only one this command reads from disk on its
67
+ * own, so it is the only one whose provenance is the document. Everything
68
+ * else here was handed in by a caller, which is an import by any other name.
69
+ */
70
+ const manualFromDisk = supplied === undefined;
65
71
  const environment = await environmentWithLocalMarkers(dependencies.environment, dependencies.stateDirectory);
66
72
  const raw = [];
67
73
  const failures = [];
@@ -71,7 +77,10 @@ async function refresh(dependencies, now) {
71
77
  : dependencies.payloads[connector.id];
72
78
  const result = await connector.read({ payload, now, environment });
73
79
  if (result.ok) {
74
- raw.push(...result.meters);
80
+ const provenance = connector.id === "manual" && manualFromDisk
81
+ ? MANUAL_PROVENANCE
82
+ : INGEST_PROVENANCE;
83
+ raw.push(...withProvenance(result.meters, provenance));
75
84
  continue;
76
85
  }
77
86
  if (payload === undefined)
@@ -99,7 +108,7 @@ function demoSnapshots(now) {
99
108
  ...(parseOpencodePayload(opencodeFixture(now), now) ?? []),
100
109
  ...(parseManualPayload(manualFixture(now), now) ?? [])
101
110
  ];
102
- return normalizeMeters(raw);
111
+ return normalizeMeters(withProvenance(raw, INGEST_PROVENANCE));
103
112
  }
104
113
  function doctorRows(snapshots, environment, now) {
105
114
  const lines = ["CONNECTOR DETECTED FRESHNESS DRIFT"];
@@ -157,7 +166,9 @@ async function ingestStandardInput(dependencies, now) {
157
166
  const meters = parseClaudePayload(document.value, now);
158
167
  if (meters === null)
159
168
  return null;
160
- const incoming = normalizeMeters(meters);
169
+ /* Claude Code wrote this to our standard input in this session. It is the
170
+ one live reading the product currently has, and it says so. */
171
+ const incoming = normalizeMeters(withProvenance(meters, STATUSLINE_PROVENANCE));
161
172
  if (incoming.length === 0)
162
173
  return null;
163
174
  try {
@@ -273,14 +284,24 @@ async function ingestCommand(dependencies, argumentsList, now) {
273
284
  return fail(EXIT_USAGE, "openlimiter ingest: the payload flag needs a value.");
274
285
  }
275
286
  const text = inline ?? await dependencies.readStandardInput();
276
- const document = parseJsonText(text);
277
- if (!document.ok) {
278
- return text === null || text.trim() === ""
279
- ? fail(EXIT_USAGE, "openlimiter ingest: no input was supplied on standard input.")
280
- : fail(EXIT_FAILURE, "openlimiter ingest: input is not valid JSON.");
281
- }
287
+ if (text === null || text.trim() === "") {
288
+ return fail(EXIT_USAGE, "openlimiter ingest: no input was supplied on standard input.");
289
+ }
290
+ /*
291
+ * The connector says what its payload IS, and this boundary obeys it.
292
+ *
293
+ * Assuming JSON here made the OpenCode reader unreachable from this command
294
+ * entirely: its payload is a logged in HTML page, so every real capture died
295
+ * at JSON.parse with "input is not valid JSON" and no page could ever be
296
+ * ingested. A text connector is handed the raw text, bounded exactly as the
297
+ * JSON path is bounded, and nothing is parsed on its behalf.
298
+ */
282
299
  let meters;
283
300
  if (provider === undefined) {
301
+ const document = parseJsonText(text);
302
+ if (!document.ok) {
303
+ return fail(EXIT_FAILURE, "openlimiter ingest: input is not valid JSON.");
304
+ }
284
305
  meters = parseManualPayload(document.value, now);
285
306
  }
286
307
  else {
@@ -288,14 +309,35 @@ async function ingestCommand(dependencies, argumentsList, now) {
288
309
  if (connector === undefined) {
289
310
  return fail(EXIT_USAGE, "openlimiter ingest: unknown provider.");
290
311
  }
312
+ let payload;
313
+ if (connector.encoding === "text") {
314
+ if (text.length > STDIN_BYTE_LIMIT) {
315
+ return fail(EXIT_FAILURE, "openlimiter ingest: input is larger than accepted.");
316
+ }
317
+ payload = text;
318
+ }
319
+ else {
320
+ const document = parseJsonText(text);
321
+ if (!document.ok) {
322
+ return fail(EXIT_FAILURE, "openlimiter ingest: input is not valid JSON.");
323
+ }
324
+ payload = document.value;
325
+ }
291
326
  const result = await connector.read({
292
- payload: document.value,
327
+ payload,
293
328
  now,
294
329
  environment: dependencies.environment
295
330
  });
296
331
  meters = result.ok ? result.meters : null;
297
332
  }
298
- const incoming = meters === null ? [] : normalizeMeters([...meters]);
333
+ /*
334
+ * However this document reached the command, a person handed it over. It is
335
+ * an import, not a live reading, whichever connector parsed it, and a card
336
+ * that showed it as live would be the exact claim this wave exists to stop.
337
+ */
338
+ const incoming = meters === null
339
+ ? []
340
+ : normalizeMeters(withProvenance(meters, INGEST_PROVENANCE));
299
341
  if (incoming.length === 0) {
300
342
  return fail(EXIT_FAILURE, "openlimiter ingest: no bounded meter survived validation.");
301
343
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/ingest.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type CacheMergeResult, type Snapshot } from "@openlimiter/core";
1
+ import { type CacheMergeResult, type RawMeter, type Snapshot, type SnapshotProvenance } from "@openlimiter/core";
2
2
  /** Largest document accepted on standard input. */
3
3
  export declare const STDIN_BYTE_LIMIT = 262144;
4
4
  /** Hard ceiling on how long a command waits for standard input. */
@@ -22,6 +22,29 @@ export type JsonText = {
22
22
  export declare function readStandardInputText(stream?: NodeJS.ReadStream, byteLimit?: number, timeoutMilliseconds?: number): Promise<string | null>;
23
23
  /** Parse untrusted text as JSON without throwing. */
24
24
  export declare function parseJsonText(text: string | null): JsonText;
25
+ /**
26
+ * Where a reading came from, stated by the code that actually knows.
27
+ *
28
+ * A parser is handed a payload and cannot tell whether Claude Code piped it in
29
+ * a moment ago or a person pasted it from a chat window last week, and those
30
+ * two readings deserve different words on a card. Only these boundaries know,
31
+ * so the stamp is applied here and the parsers stay pure functions of their
32
+ * input. Every value below is ours: nothing a provider sends can become one.
33
+ */
34
+ /** A live Claude Code session payload, arriving on standard input. */
35
+ export declare const STATUSLINE_PROVENANCE: SnapshotProvenance;
36
+ /** A payload a person handed us with `openlimiter ingest`. */
37
+ export declare const INGEST_PROVENANCE: SnapshotProvenance;
38
+ /** The manual quota document, read from the state directory. */
39
+ export declare const MANUAL_PROVENANCE: SnapshotProvenance;
40
+ /**
41
+ * Stamp provenance onto meters a parser just produced.
42
+ *
43
+ * Applied at the boundary, before normalization, so the normalizer validates
44
+ * the stamp the same way it validates everything else and a stamp this code got
45
+ * wrong is caught rather than trusted.
46
+ */
47
+ export declare function withProvenance(meters: readonly RawMeter[], provenance: SnapshotProvenance): RawMeter[];
25
48
  /**
26
49
  * Read the manual quota document from the state directory.
27
50
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAE3B,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,SAAU,CAAC;AAExC,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,GAAE,MAAM,CAAC,UAA0B,EACzC,SAAS,SAAmB,EAC5B,mBAAmB,SAA6B,GAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCxB;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAS3D;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAMvF;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAQ7C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAK3B"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,SAAU,CAAC;AAExC,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,GAAE,MAAM,CAAC,UAA0B,EACzC,SAAS,SAAmB,EAC5B,mBAAmB,SAA6B,GAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCxB;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAS3D;AAED;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,EAAE,kBAGnC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,UAAU,EAAE,kBAAkB,GAC7B,QAAQ,EAAE,CAEZ;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAMvF;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAQ7C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAK3B"}
package/dist/ingest.js CHANGED
@@ -65,6 +65,40 @@ export function parseJsonText(text) {
65
65
  return { ok: false };
66
66
  }
67
67
  }
68
+ /**
69
+ * Where a reading came from, stated by the code that actually knows.
70
+ *
71
+ * A parser is handed a payload and cannot tell whether Claude Code piped it in
72
+ * a moment ago or a person pasted it from a chat window last week, and those
73
+ * two readings deserve different words on a card. Only these boundaries know,
74
+ * so the stamp is applied here and the parsers stay pure functions of their
75
+ * input. Every value below is ours: nothing a provider sends can become one.
76
+ */
77
+ /** A live Claude Code session payload, arriving on standard input. */
78
+ export const STATUSLINE_PROVENANCE = {
79
+ sourceKind: "statusline_payload",
80
+ observedVia: "claude_code_statusline"
81
+ };
82
+ /** A payload a person handed us with `openlimiter ingest`. */
83
+ export const INGEST_PROVENANCE = {
84
+ sourceKind: "explicit_ingest",
85
+ observedVia: "ingest_command"
86
+ };
87
+ /** The manual quota document, read from the state directory. */
88
+ export const MANUAL_PROVENANCE = {
89
+ sourceKind: "manual_document",
90
+ observedVia: "manual_json"
91
+ };
92
+ /**
93
+ * Stamp provenance onto meters a parser just produced.
94
+ *
95
+ * Applied at the boundary, before normalization, so the normalizer validates
96
+ * the stamp the same way it validates everything else and a stamp this code got
97
+ * wrong is caught rather than trusted.
98
+ */
99
+ export function withProvenance(meters, provenance) {
100
+ return meters.map((meter) => ({ ...meter, provenance }));
101
+ }
68
102
  function manualFilePath(directory) {
69
103
  return path.join(directory ?? resolveStateDirectory(), MANUAL_FILE_NAME);
70
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -4,7 +4,7 @@ import { type FailureCategory, type ProviderFailure, type Snapshot, type Snapsho
4
4
  *
5
5
  * This is the command line tool's presentation layer and nothing else lives
6
6
  * here. Every number arrives already decided by the engine; this module only
7
- * chooses a colour band, a bar, and a form of words.
7
+ * chooses a colour band, a bar, a source chip, and a form of words.
8
8
  *
9
9
  * THE PRESSURE BANDS, AND WHY RED IS NOT WHERE THE ENGINE WARNS
10
10
  * -------------------------------------------------------------
@@ -72,6 +72,16 @@ export declare function supportsColor(environment: Readonly<Record<string, strin
72
72
  * as literal characters.
73
73
  */
74
74
  export declare function supports256Color(environment: Readonly<Record<string, string | undefined>>): boolean;
75
+ /**
76
+ * Whether this terminal can draw the eighth block glyphs used for sub character
77
+ * bar resolution.
78
+ *
79
+ * Three things veto it, and any one is enough: the NO_COLOR convention, a
80
+ * stream that is not a terminal, and a platform whose default console draws box
81
+ * characters as empty rectangles. A fallback to plain ASCII blocks keeps the
82
+ * output readable on the platforms that need it.
83
+ */
84
+ export declare function supportsEighthBlocks(environment: Readonly<Record<string, string | undefined>>, isTty: boolean, platform: string): boolean;
75
85
  /**
76
86
  * The one place a band becomes a colour.
77
87
  *
@@ -90,6 +100,11 @@ export declare function bandCode(band: Pressure, wide: boolean): string;
90
100
  * colour support may also be a log file, and a log file should carry no escape
91
101
  * codes at all.
92
102
  *
103
+ * The table bar also gains sub character resolution when the terminal can draw
104
+ * the eighth block glyphs, so readings that differ by a few percent no longer
105
+ * share the same bar. A terminal that cannot draw them falls back to the whole
106
+ * block rendering, exactly as before.
107
+ *
93
108
  * The block count is the only thing the caller chooses. The band, and therefore
94
109
  * the colour, comes from the reading alone, so the same percentage is the same
95
110
  * colour at either density.
@@ -99,7 +114,7 @@ export declare function bandCode(band: Pressure, wide: boolean): string;
99
114
  * carrying it. A test passes it explicitly, because a test that asks the
100
115
  * machine it happens to be running on what colours it has is not a test.
101
116
  */
102
- export declare function meterBar(percent: number, state: SnapshotState, color: boolean, segments?: number, wide?: boolean): string;
117
+ export declare function meterBar(percent: number, state: SnapshotState, color: boolean, segments?: number, wide?: boolean, eighthBlocks?: boolean): string;
103
118
  /** A failure, in red, in our own fixed words. */
104
119
  export declare function failureLine(provider: string, category: FailureCategory, color: boolean): string;
105
120
  export declare function failureLines(failures: readonly ProviderFailure[], color: boolean): readonly string[];
@@ -118,13 +133,6 @@ export declare function timeToReset(resetAt: string | null, now: string): string
118
133
  * enough, and the currency is a closed literal rather than provider text.
119
134
  */
120
135
  export declare function amountField(snapshot: Snapshot): string;
121
- /**
122
- * The snapshot table.
123
- *
124
- * Eight columns, always eight, separated by one space. AMOUNT and RESET read
125
- * NONE where a provider has none rather than disappearing, because a table
126
- * whose column count moves with its data cannot be parsed by anything.
127
- */
128
- export declare const TABLE_HEADER = "PROVIDER METER BAR USAGE AMOUNT STATE RESET IN";
136
+ export declare const TABLE_HEADER: string;
129
137
  export declare function renderTable(snapshots: readonly Snapshot[], now: string, color: boolean): string;
130
138
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,kEAAkE;AAClE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMpD;AAED,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAe,GAAG,MAAM,CAK/E;AAiCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,OAAO,GACb,OAAO,CAGT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GACxD,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAG9D;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,OAAO,EACd,QAAQ,SAAe,EACvB,IAAI,UAAgC,GACnC,MAAM,CASR;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,OAAO,GACb,MAAM,CAER;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,KAAK,EAAE,OAAO,GACb,SAAS,MAAM,EAAE,CAGnB;AAQD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAevE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAOtD;AAID;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,mDAAmD,CAAC;AAE7E,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAiBR"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,QAAQ,EAEb,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,kEAAkE;AAClE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMpD;AAED,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAe,GAAG,MAAM,CAK/E;AAiCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,OAAO,GACb,OAAO,CAGT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GACxD,OAAO,CAIT;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAKT;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAG9D;AASD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,OAAO,EACd,QAAQ,SAAe,EACvB,IAAI,UAAgC,EACpC,YAAY,UAIX,GACA,MAAM,CAsBR;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,OAAO,GACb,MAAM,CAER;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,KAAK,EAAE,OAAO,GACb,SAAS,MAAM,EAAE,CAGnB;AAQD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAevE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAOtD;AAiBD,eAAO,MAAM,YAAY,QAAmD,CAAC;AAqI7E,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAKR"}
package/dist/render.js CHANGED
@@ -1,4 +1,4 @@
1
- import { failureSentence, floorFixed, freshness } from "@openlimiter/core";
1
+ import { collectionIdentity, failureSentence, floorFixed, freshness } from "@openlimiter/core";
2
2
  export function pressureOf(percent) {
3
3
  if (!Number.isFinite(percent))
4
4
  return "none";
@@ -90,6 +90,24 @@ export function supports256Color(environment) {
90
90
  return true;
91
91
  return environment["COLORTERM"] !== undefined;
92
92
  }
93
+ /**
94
+ * Whether this terminal can draw the eighth block glyphs used for sub character
95
+ * bar resolution.
96
+ *
97
+ * Three things veto it, and any one is enough: the NO_COLOR convention, a
98
+ * stream that is not a terminal, and a platform whose default console draws box
99
+ * characters as empty rectangles. A fallback to plain ASCII blocks keeps the
100
+ * output readable on the platforms that need it.
101
+ */
102
+ export function supportsEighthBlocks(environment, isTty, platform) {
103
+ if (environment["NO_COLOR"] !== undefined)
104
+ return false;
105
+ if (!isTty)
106
+ return false;
107
+ if (platform === "win32" && environment["WT_SESSION"] === undefined)
108
+ return false;
109
+ return true;
110
+ }
93
111
  /**
94
112
  * The one place a band becomes a colour.
95
113
  *
@@ -105,6 +123,8 @@ export function bandCode(band, wide) {
105
123
  function paint(text, code, color) {
106
124
  return color ? ESCAPE + code + "m" + text + RESET : text;
107
125
  }
126
+ /** The eighth block glyphs, from one eighth to seven eighths. */
127
+ const EIGHTH_GLYPHS = ["", "\u258f", "\u258e", "\u258d", "\u258c", "\u258b", "\u258a", "\u2589"];
108
128
  /**
109
129
  * The segmented bar.
110
130
  *
@@ -115,6 +135,11 @@ function paint(text, code, color) {
115
135
  * colour support may also be a log file, and a log file should carry no escape
116
136
  * codes at all.
117
137
  *
138
+ * The table bar also gains sub character resolution when the terminal can draw
139
+ * the eighth block glyphs, so readings that differ by a few percent no longer
140
+ * share the same bar. A terminal that cannot draw them falls back to the whole
141
+ * block rendering, exactly as before.
142
+ *
118
143
  * The block count is the only thing the caller chooses. The band, and therefore
119
144
  * the colour, comes from the reading alone, so the same percentage is the same
120
145
  * colour at either density.
@@ -124,14 +149,25 @@ function paint(text, code, color) {
124
149
  * carrying it. A test passes it explicitly, because a test that asks the
125
150
  * machine it happens to be running on what colours it has is not a test.
126
151
  */
127
- export function meterBar(percent, state, color, segments = BAR_SEGMENTS, wide = supports256Color(process.env)) {
152
+ export function meterBar(percent, state, color, segments = BAR_SEGMENTS, wide = supports256Color(process.env), eighthBlocks = supportsEighthBlocks(process.env, process.stdout.isTTY === true, process.platform)) {
128
153
  const known = state !== "unknown";
154
+ const band = known ? pressureOf(percent) : "none";
155
+ if (segments === BAR_SEGMENTS && known && eighthBlocks) {
156
+ const bounded = Math.min(100, Math.max(0, percent));
157
+ const totalEighths = Math.round((bounded / 100) * segments * 8);
158
+ const full = Math.floor(totalEighths / 8);
159
+ const remainder = totalEighths % 8;
160
+ const empty = Math.max(0, segments - full - (remainder > 0 ? 1 : 0));
161
+ const glyphs = "\u2588".repeat(full) +
162
+ (remainder > 0 ? EIGHTH_GLYPHS[remainder] : "") +
163
+ "\u2591".repeat(empty);
164
+ return paint(glyphs, bandCode(band, wide), color);
165
+ }
129
166
  const filled = known ? filledSegments(percent, segments) : 0;
130
167
  const empty = Math.max(0, segments - filled);
131
168
  const glyphs = color
132
- ? "█".repeat(filled) + "░".repeat(empty)
169
+ ? "\u2588".repeat(filled) + "\u2591".repeat(empty)
133
170
  : "#".repeat(filled) + ".".repeat(empty);
134
- const band = known ? pressureOf(percent) : "none";
135
171
  return paint(glyphs, bandCode(band, wide), color);
136
172
  }
137
173
  /** A failure, in red, in our own fixed words. */
@@ -188,31 +224,134 @@ export function amountField(snapshot) {
188
224
  return "$" + floorFixed(used, 2) + "/$" + floorFixed(limit, 2);
189
225
  }
190
226
  /* ------------------------------------------------------------------- table */
227
+ /** The column order and the header labels that sit above them. */
228
+ const COLUMNS = [
229
+ { key: "provider", header: "PROVIDER" },
230
+ { key: "meter", header: "METER" },
231
+ { key: "bar", header: "BAR" },
232
+ { key: "usage", header: "USAGE" },
233
+ { key: "amount", header: "AMOUNT" },
234
+ { key: "state", header: "STATE" },
235
+ { key: "reset", header: "RESET" },
236
+ { key: "remaining", header: "IN" },
237
+ { key: "chip", header: "SOURCE" }
238
+ ];
239
+ export const TABLE_HEADER = COLUMNS.map((column) => column.header).join(" ");
240
+ /** How wide the provider identity may grow before it is truncated. */
241
+ const MAX_PROVIDER_WIDTH = 13;
242
+ /** The one ellipsis, kept as a single character so truncation costs one cell. */
243
+ const ELLIPSIS = "\u2026";
244
+ /** The provider identity, with its account when one is present. */
245
+ function providerIdentity(snapshot) {
246
+ return collectionIdentity(snapshot.provider, snapshot.accountId);
247
+ }
248
+ /** Trim an identity to the column width, keeping the leftmost characters. */
249
+ function truncateIdentity(text, maxWidth) {
250
+ if (text.length <= maxWidth)
251
+ return text;
252
+ return text.slice(0, Math.max(0, maxWidth - 1)) + ELLIPSIS;
253
+ }
191
254
  /**
192
- * The snapshot table.
255
+ * Map a snapshot's provenance to a connection state based source chip.
193
256
  *
194
- * Eight columns, always eight, separated by one space. AMOUNT and RESET read
195
- * NONE where a provider has none rather than disappearing, because a table
196
- * whose column count moves with its data cannot be parsed by anything.
257
+ * The vocabulary is the one in packages/core/src/connection-state.ts, because
258
+ * a parser is not a connection and only the product's own lifecycle words may
259
+ * describe where a reading came from.
260
+ */
261
+ function provenanceConnectionState(provenance) {
262
+ if (provenance === undefined)
263
+ return "NOT_CONFIGURED";
264
+ if (provenance.sourceKind === "statusline_payload")
265
+ return "CONNECTED";
266
+ if (provenance.sourceKind === "explicit_ingest")
267
+ return "IMPORT_ONLY";
268
+ if (provenance.sourceKind === "manual_document")
269
+ return "MANUAL";
270
+ if (provenance.sourceKind === "remote_api")
271
+ return "CONNECTED";
272
+ return "ERROR";
273
+ }
274
+ /** One short bracket chip describing the snapshot's source. */
275
+ function provenanceChip(provenance) {
276
+ if (provenance?.sourceKind === "statusline_payload" &&
277
+ provenance.observedVia === "claude_code_statusline") {
278
+ return "[local cli]";
279
+ }
280
+ const state = provenanceConnectionState(provenance);
281
+ const label = state === "IMPORT_ONLY"
282
+ ? "import only"
283
+ : state.replace(/_/gu, " ").toLowerCase();
284
+ return "[" + label + "]";
285
+ }
286
+ function buildRow(snapshot, now, color) {
287
+ const state = freshness(snapshot.observedAt, snapshot.expiresAt, now);
288
+ return {
289
+ provider: truncateIdentity(providerIdentity(snapshot), MAX_PROVIDER_WIDTH),
290
+ meter: snapshot.meter,
291
+ bar: meterBar(snapshot.value, state, color),
292
+ usage: floorFixed(snapshot.value, 2) + snapshot.unit,
293
+ amount: amountField(snapshot),
294
+ state,
295
+ reset: snapshot.resetAt ?? "NONE",
296
+ remaining: timeToReset(snapshot.resetAt, now),
297
+ chip: provenanceChip(snapshot.provenance)
298
+ };
299
+ }
300
+ /** The visible width of a field, which differs from its string length for bars. */
301
+ function visibleWidth(key, value) {
302
+ if (key === "bar")
303
+ return BAR_SEGMENTS;
304
+ return value.length;
305
+ }
306
+ /** Render rows with every column padded to its widest value so lines align. */
307
+ function renderRows(rows) {
308
+ const widths = {};
309
+ for (const column of COLUMNS) {
310
+ widths[column.key] = Math.max(column.header.length, ...rows.map((row) => visibleWidth(column.key, row[column.key])));
311
+ }
312
+ const header = COLUMNS
313
+ .map((column) => column.header.padEnd(widths[column.key]))
314
+ .join(" ");
315
+ const lines = [header];
316
+ for (const row of rows) {
317
+ lines.push(COLUMNS
318
+ .map((column) => row[column.key].padEnd(widths[column.key]))
319
+ .join(" "));
320
+ }
321
+ return lines.join("\n");
322
+ }
323
+ /**
324
+ * Sort providers by their most constrained meter, then keep each provider's
325
+ * rows together so a person reads one account at a time.
197
326
  */
198
- export const TABLE_HEADER = "PROVIDER METER BAR USAGE AMOUNT STATE RESET IN";
327
+ function orderSnapshots(snapshots) {
328
+ const grouped = new Map();
329
+ for (const snapshot of snapshots) {
330
+ const group = grouped.get(snapshot.provider) ?? [];
331
+ group.push(snapshot);
332
+ grouped.set(snapshot.provider, group);
333
+ }
334
+ const ordered = [...grouped.entries()].sort((left, right) => {
335
+ const leftMax = Math.max(...left[1].map((snapshot) => snapshot.value));
336
+ const rightMax = Math.max(...right[1].map((snapshot) => snapshot.value));
337
+ if (rightMax !== leftMax)
338
+ return rightMax - leftMax;
339
+ return left[0].localeCompare(right[0]);
340
+ });
341
+ const result = [];
342
+ for (const [, group] of ordered) {
343
+ result.push(...[...group].sort((left, right) => {
344
+ if (right.value !== left.value)
345
+ return right.value - left.value;
346
+ return left.meter.localeCompare(right.meter);
347
+ }));
348
+ }
349
+ return result;
350
+ }
199
351
  export function renderTable(snapshots, now, color) {
200
352
  if (snapshots.length === 0)
201
353
  return "No bounded quota data is available.";
202
- const lines = [TABLE_HEADER];
203
- for (const snapshot of snapshots) {
204
- const state = freshness(snapshot.observedAt, snapshot.expiresAt, now);
205
- lines.push([
206
- snapshot.provider,
207
- snapshot.meter,
208
- meterBar(snapshot.value, state, color),
209
- floorFixed(snapshot.value, 2) + snapshot.unit,
210
- amountField(snapshot),
211
- state,
212
- snapshot.resetAt ?? "NONE",
213
- timeToReset(snapshot.resetAt, now)
214
- ].join(" "));
215
- }
216
- return lines.join("\n");
354
+ const rows = orderSnapshots(snapshots).map((snapshot) => buildRow(snapshot, now, color));
355
+ return renderRows(rows);
217
356
  }
218
357
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/dist/serve.d.ts CHANGED
@@ -16,8 +16,12 @@ import { type Advice } from "@openlimiter/core";
16
16
  * Four gates stand between the socket and that payload:
17
17
  *
18
18
  * 1. A random token is generated on every start and is required on every
19
- * route. It lives only in memory, is never written to disk, and is void
20
- * the moment the command stops.
19
+ * route that carries data. It lives only in memory, is never written to
20
+ * disk, and is void the moment the command stops. The empty page shell at
21
+ * the root is the one route served without it, because the token travels
22
+ * in the URL fragment and a fragment never reaches a server. The shell
23
+ * holds no quota state, no token and no account detail: it is markup that
24
+ * then has to authenticate before anything is filled in.
21
25
  * 2. The Host header must be an address literal or localhost, which is what
22
26
  * closes a DNS rebinding attack from a page on an attacker's domain.
23
27
  * 3. Cross origin requests are refused outright. The page this server hands
@@ -36,8 +40,29 @@ export declare const DEFAULT_SERVE_PORT = 7317;
36
40
  export declare const DEFAULT_SERVE_HOST = "0.0.0.0";
37
41
  /** Payload schema version. Bumped only on a breaking shape change. */
38
42
  export declare const SERVE_SCHEMA = 1;
39
- /** Query parameter carrying the token. Short, because it goes in a QR symbol. */
43
+ /**
44
+ * Name the token travels under. Short, because it goes in a QR symbol.
45
+ *
46
+ * It is the key in the URL FRAGMENT of every address this command prints, and
47
+ * for one more release it is also accepted as a query parameter so an address
48
+ * saved from an older build keeps working.
49
+ */
40
50
  export declare const TOKEN_PARAMETER = "t";
51
+ /**
52
+ * Why the token is in the fragment rather than the query.
53
+ *
54
+ * A query string is part of the request line. It lands in the phone's browser
55
+ * history, in the omnibox suggestions, in whatever cloud that browser syncs
56
+ * history to, and in the Referer of any link the page might carry. A fragment
57
+ * is never sent to a server at all: it stays in the address bar until the page
58
+ * itself reads it, and the page's first act is to move it into sessionStorage
59
+ * and rewrite the address to a clean one. From that point the token exists only
60
+ * in the tab's own memory and is sent as an Authorization header, so no URL
61
+ * anywhere on the phone carries the capability.
62
+ *
63
+ * docs/SYNC_ARCHITECTURE.md already required exactly this of pairing links.
64
+ */
65
+ export declare const TOKEN_FRAGMENT_PREFIX: string;
41
66
  /**
42
67
  * One provider line, carrying exactly the fields the agent context carries.
43
68
  *
@@ -94,6 +119,14 @@ export declare function lanAddress(): string | null;
94
119
  * cannot be rebound.
95
120
  */
96
121
  export declare function isAllowedHostHeader(header: string | undefined, boundPort: number): boolean;
122
+ /**
123
+ * Read the token a request presents.
124
+ *
125
+ * The header is the supported way and is read first. The query parameter is a
126
+ * fallback kept for one release so an address copied out of an older build
127
+ * still answers; nothing this command prints uses it any more.
128
+ */
129
+ export declare function presentedToken(authorization: string | undefined, target: URL): string | null;
97
130
  /**
98
131
  * Build the document served on the quota route.
99
132
  *
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AASA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,sEAAsE;AACtE,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,iFAAiF;AACjF,eAAO,MAAM,eAAe,MAAM,CAAC;AAcnC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,YAAY,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAO1C;AAOD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAkBT;AAaD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAsDD;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAsHnC;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAgH5B;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA6BR"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AASA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,sEAAsE;AACtE,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,QAA8B,CAAC;AAiBjE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,YAAY,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAO1C;AAOD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAkBT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,MAAM,EAAE,GAAG,GACV,MAAM,GAAG,IAAI,CAUf;AAaD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAsDD;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA4JnC;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAwH5B;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAiCR"}
package/dist/serve.js CHANGED
@@ -21,8 +21,12 @@ import { encodeQr, renderQr } from "./qr.js";
21
21
  * Four gates stand between the socket and that payload:
22
22
  *
23
23
  * 1. A random token is generated on every start and is required on every
24
- * route. It lives only in memory, is never written to disk, and is void
25
- * the moment the command stops.
24
+ * route that carries data. It lives only in memory, is never written to
25
+ * disk, and is void the moment the command stops. The empty page shell at
26
+ * the root is the one route served without it, because the token travels
27
+ * in the URL fragment and a fragment never reaches a server. The shell
28
+ * holds no quota state, no token and no account detail: it is markup that
29
+ * then has to authenticate before anything is filled in.
26
30
  * 2. The Host header must be an address literal or localhost, which is what
27
31
  * closes a DNS rebinding attack from a page on an attacker's domain.
28
32
  * 3. Cross origin requests are refused outright. The page this server hands
@@ -41,8 +45,31 @@ export const DEFAULT_SERVE_PORT = 7317;
41
45
  export const DEFAULT_SERVE_HOST = "0.0.0.0";
42
46
  /** Payload schema version. Bumped only on a breaking shape change. */
43
47
  export const SERVE_SCHEMA = 1;
44
- /** Query parameter carrying the token. Short, because it goes in a QR symbol. */
48
+ /**
49
+ * Name the token travels under. Short, because it goes in a QR symbol.
50
+ *
51
+ * It is the key in the URL FRAGMENT of every address this command prints, and
52
+ * for one more release it is also accepted as a query parameter so an address
53
+ * saved from an older build keeps working.
54
+ */
45
55
  export const TOKEN_PARAMETER = "t";
56
+ /**
57
+ * Why the token is in the fragment rather than the query.
58
+ *
59
+ * A query string is part of the request line. It lands in the phone's browser
60
+ * history, in the omnibox suggestions, in whatever cloud that browser syncs
61
+ * history to, and in the Referer of any link the page might carry. A fragment
62
+ * is never sent to a server at all: it stays in the address bar until the page
63
+ * itself reads it, and the page's first act is to move it into sessionStorage
64
+ * and rewrite the address to a clean one. From that point the token exists only
65
+ * in the tab's own memory and is sent as an Authorization header, so no URL
66
+ * anywhere on the phone carries the capability.
67
+ *
68
+ * docs/SYNC_ARCHITECTURE.md already required exactly this of pairing links.
69
+ */
70
+ export const TOKEN_FRAGMENT_PREFIX = "#" + TOKEN_PARAMETER + "=";
71
+ /** Key the page keeps the token under, inside its own tab and nowhere else. */
72
+ const TOKEN_STORAGE_KEY = "openlimiter.token";
46
73
  /** Longest request target this server will look at. */
47
74
  const MAX_TARGET_LENGTH = 512;
48
75
  /** Bounds on the socket, so a stalled client cannot hold a slot forever. */
@@ -104,6 +131,25 @@ export function isAllowedHostHeader(header, boundPort) {
104
131
  const literal = hostname.startsWith("[") ? hostname.slice(1, -1) : hostname;
105
132
  return isIP(literal) !== 0;
106
133
  }
134
+ /**
135
+ * Read the token a request presents.
136
+ *
137
+ * The header is the supported way and is read first. The query parameter is a
138
+ * fallback kept for one release so an address copied out of an older build
139
+ * still answers; nothing this command prints uses it any more.
140
+ */
141
+ export function presentedToken(authorization, target) {
142
+ if (typeof authorization === "string") {
143
+ const space = authorization.indexOf(" ");
144
+ if (space > 0 && authorization.slice(0, space).toLowerCase() === "bearer") {
145
+ const value = authorization.slice(space + 1).trim();
146
+ if (value !== "")
147
+ return value;
148
+ }
149
+ return null;
150
+ }
151
+ return target.searchParams.get(TOKEN_PARAMETER);
152
+ }
107
153
  function constantTimeEquals(left, right) {
108
154
  const a = Buffer.from(left, "utf8");
109
155
  const b = Buffer.from(right, "utf8");
@@ -184,122 +230,160 @@ function sendHtml(request, response, status, html) {
184
230
  * site, and the whole thing follows the reader's own light or dark setting.
185
231
  */
186
232
  export function mobilePage() {
187
- return `<!doctype html>
188
- <html lang="en">
189
- <head>
190
- <meta charset="utf-8">
191
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
192
- <meta name="robots" content="noindex, nofollow">
193
- <meta name="color-scheme" content="light dark">
194
- <title>OpenLimiter quota</title>
195
- <style>
196
- :root{color-scheme:light dark;--canvas:#fff;--surface:#f6f6f7;--track:#e2e2e6;--hairline:#e5e5e8;--heading:#0d0d0f;--body:#53535c;--muted:#62626c;--accent:#0866ff;--warn:#b45309;--stop:#b42318}
197
- @media (prefers-color-scheme:dark){:root{--canvas:#0a0a0b;--surface:#121214;--track:#26262b;--hairline:#232327;--heading:#f2f2f3;--body:#adadb6;--muted:#94949e;--accent:#6ba6ff;--warn:#f0b429;--stop:#ff6b6b}}
198
- *{box-sizing:border-box}
199
- body{margin:0;padding:20px 16px 48px;background:var(--canvas);color:var(--body);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
200
- main{max-width:520px;margin:0 auto}
201
- h1{margin:0 0 2px;font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--heading)}
202
- .sub{margin:0 0 20px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
203
- .state{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--hairline);border-radius:8px;padding:5px 10px;font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--surface)}
204
- .dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
205
- .card{border:1px solid var(--hairline);border-radius:14px;background:var(--surface);padding:14px 16px;margin-top:10px}
206
- .row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
207
- .name{font-size:14px;font-weight:600;color:var(--heading);letter-spacing:.01em}
208
- .pct{font:600 20px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--heading);font-variant-numeric:tabular-nums}
209
- .bar{margin-top:10px;height:6px;border-radius:999px;background:var(--track);overflow:hidden}
210
- .fill{height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease}
211
- .fill.near{background:var(--warn)}
212
- .fill.at{background:var(--stop)}
213
- .meta{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap;font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
214
- .note{margin-top:22px;font-size:12px;line-height:1.6;color:var(--muted)}
215
- .err{color:var(--stop)}
216
- </style>
217
- </head>
218
- <body>
219
- <main>
220
- <h1>OpenLimiter</h1>
221
- <p class="sub" id="stamp">Loading quota from this machine.</p>
222
- <p><span class="state"><span class="dot" id="dot"></span><span id="reason">reading</span></span></p>
223
- <div id="cards"></div>
224
- <p class="note" id="unknown"></p>
225
- <p class="note">
226
- Served from the machine running OpenLimiter, over your own network. Nothing here
227
- left that machine, nothing was uploaded, and this page can only read.
228
- </p>
229
- </main>
230
- <script>
231
- (function(){
232
- var token = new URLSearchParams(location.search).get(${JSON.stringify(TOKEN_PARAMETER)});
233
- var cards = document.getElementById("cards");
234
- var stamp = document.getElementById("stamp");
235
- var reason = document.getElementById("reason");
236
- var dot = document.getElementById("dot");
237
- var unknown = document.getElementById("unknown");
238
- function tone(value){ return value >= 100 ? "at" : value >= 80 ? "near" : ""; }
239
- function clock(value){
240
- if (value === null) return "no reset";
241
- var when = new Date(value);
242
- return isNaN(when.getTime()) ? "no reset" : "resets " + when.toLocaleString();
243
- }
244
- function draw(document_){
245
- reason.textContent = document_.reason.toLowerCase().replace("_"," ");
246
- dot.style.background = document_.reason === "AT_CAP" ? "var(--stop)"
247
- : document_.reason === "NEAR_CAP" ? "var(--warn)" : "var(--accent)";
248
- stamp.textContent = "Updated " + new Date(document_.generatedAt).toLocaleTimeString();
249
- stamp.className = "sub";
250
- cards.textContent = "";
251
- document_.providers.forEach(function(entry){
252
- var card = document.createElement("div");
253
- card.className = "card";
254
- var row = document.createElement("div");
255
- row.className = "row";
256
- var name = document.createElement("span");
257
- name.className = "name";
258
- name.textContent = entry.provider;
259
- var pct = document.createElement("span");
260
- pct.className = "pct";
261
- pct.textContent = entry.usagePercent.toFixed(1) + "%";
262
- row.appendChild(name); row.appendChild(pct);
263
- var bar = document.createElement("div");
264
- bar.className = "bar";
265
- var fill = document.createElement("div");
266
- fill.className = "fill " + tone(entry.usagePercent);
267
- fill.style.width = Math.min(100, Math.max(0, entry.usagePercent)) + "%";
268
- bar.appendChild(fill);
269
- var meta = document.createElement("div");
270
- meta.className = "meta";
271
- var state = document.createElement("span");
272
- state.textContent = entry.state;
273
- var reset = document.createElement("span");
274
- reset.textContent = clock(entry.resetAt);
275
- meta.appendChild(state); meta.appendChild(reset);
276
- card.appendChild(row); card.appendChild(bar); card.appendChild(meta);
277
- cards.appendChild(card);
278
- });
279
- unknown.textContent = document_.unknown.length === 0
280
- ? ""
281
- : "Unknown, so nothing is claimed for them: " + document_.unknown.join(", ") + ".";
282
- }
283
- function load(){
284
- fetch("/quota.json?${TOKEN_PARAMETER}=" + encodeURIComponent(token || ""), { cache: "no-store" })
285
- .then(function(response){
286
- if (!response.ok) throw new Error(String(response.status));
287
- return response.json();
288
- })
289
- .then(draw)
290
- .catch(function(error){
291
- stamp.className = "sub err";
292
- stamp.textContent = error.message === "401"
293
- ? "The token in this address is not valid. Scan the code again."
294
- : "Cannot reach the machine running OpenLimiter.";
295
- });
296
- }
297
- load();
298
- setInterval(load, 15000);
299
- })();
300
- </script>
301
- </body>
302
- </html>
233
+ return `<!doctype html>
234
+ <html lang="en">
235
+ <head>
236
+ <meta charset="utf-8">
237
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
238
+ <meta name="robots" content="noindex, nofollow">
239
+ <meta name="color-scheme" content="light dark">
240
+ <title>OpenLimiter quota</title>
241
+ <style>
242
+ :root{color-scheme:light dark;--canvas:#fff;--surface:#f6f6f7;--track:#e2e2e6;--hairline:#e5e5e8;--heading:#0d0d0f;--body:#53535c;--muted:#62626c;--accent:#0866ff;--warn:#b45309;--stop:#b42318}
243
+ @media (prefers-color-scheme:dark){:root{--canvas:#0a0a0b;--surface:#121214;--track:#26262b;--hairline:#232327;--heading:#f2f2f3;--body:#adadb6;--muted:#94949e;--accent:#6ba6ff;--warn:#f0b429;--stop:#ff6b6b}}
244
+ *{box-sizing:border-box}
245
+ body{margin:0;padding:20px 16px 48px;background:var(--canvas);color:var(--body);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
246
+ main{max-width:520px;margin:0 auto}
247
+ h1{margin:0 0 2px;font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--heading)}
248
+ .sub{margin:0 0 20px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
249
+ .state{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--hairline);border-radius:8px;padding:5px 10px;font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--surface)}
250
+ .dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}
251
+ .card{border:1px solid var(--hairline);border-radius:14px;background:var(--surface);padding:14px 16px;margin-top:10px}
252
+ .row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
253
+ .name{font-size:14px;font-weight:600;color:var(--heading);letter-spacing:.01em}
254
+ .pct{font:600 20px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--heading);font-variant-numeric:tabular-nums}
255
+ .bar{margin-top:10px;height:6px;border-radius:999px;background:var(--track);overflow:hidden}
256
+ .fill{height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease}
257
+ .fill.near{background:var(--warn)}
258
+ .fill.at{background:var(--stop)}
259
+ .meta{margin-top:8px;display:flex;gap:10px;flex-wrap:wrap;font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
260
+ .note{margin-top:22px;font-size:12px;line-height:1.6;color:var(--muted)}
261
+ .err{color:var(--stop)}
262
+ </style>
263
+ </head>
264
+ <body>
265
+ <main>
266
+ <h1>OpenLimiter</h1>
267
+ <p class="sub" id="stamp">Loading quota from this machine.</p>
268
+ <p><span class="state"><span class="dot" id="dot"></span><span id="reason">reading</span></span></p>
269
+ <div id="cards"></div>
270
+ <p class="note" id="unknown"></p>
271
+ <p class="note">
272
+ Served from the machine running OpenLimiter, over your own network. Nothing here
273
+ left that machine, nothing was uploaded, and this page can only read.
274
+ </p>
275
+ </main>
276
+ <script>
277
+ (function(){
278
+ /* The token arrives in the fragment, which no server ever sees. Move it into
279
+ this tab's own memory and wipe the address, so the history entry the phone
280
+ keeps, and syncs, carries no capability.
281
+
282
+ The query is read as well, and first, because an address printed by an
283
+ older build put the token there. Such an address still reaches this page,
284
+ and a page that only looked at the fragment would sit at 401 forever with
285
+ the token visible in the address bar the whole time. Reading it, then
286
+ scrubbing BOTH the query and the fragment in one replaceState, turns the
287
+ old address into the new behaviour on its first load. */
288
+ var key = ${JSON.stringify(TOKEN_STORAGE_KEY)};
289
+ var name = ${JSON.stringify(TOKEN_PARAMETER)};
290
+ var prefix = ${JSON.stringify(TOKEN_FRAGMENT_PREFIX)};
291
+ var token = "";
292
+ var fromAddress = false;
293
+ try {
294
+ var queried = new URLSearchParams(location.search).get(name);
295
+ if (queried) {
296
+ token = queried;
297
+ fromAddress = true;
298
+ } else if (location.hash.indexOf(prefix) === 0) {
299
+ token = decodeURIComponent(location.hash.slice(prefix.length));
300
+ fromAddress = true;
301
+ }
302
+ } catch (error) {
303
+ token = "";
304
+ }
305
+ if (fromAddress) {
306
+ try { sessionStorage.setItem(key, token); } catch (error) {}
307
+ /* One rewrite, dropping the query and the fragment together. */
308
+ try { history.replaceState(null, "", location.pathname); } catch (error) {}
309
+ } else {
310
+ try { token = sessionStorage.getItem(key) || ""; } catch (error) { token = ""; }
311
+ }
312
+ var cards = document.getElementById("cards");
313
+ var stamp = document.getElementById("stamp");
314
+ var reason = document.getElementById("reason");
315
+ var dot = document.getElementById("dot");
316
+ var unknown = document.getElementById("unknown");
317
+ function tone(value){ return value >= 100 ? "at" : value >= 80 ? "near" : ""; }
318
+ function clock(value){
319
+ if (value === null) return "no reset";
320
+ var when = new Date(value);
321
+ return isNaN(when.getTime()) ? "no reset" : "resets " + when.toLocaleString();
322
+ }
323
+ function draw(document_){
324
+ reason.textContent = document_.reason.toLowerCase().replace("_"," ");
325
+ dot.style.background = document_.reason === "AT_CAP" ? "var(--stop)"
326
+ : document_.reason === "NEAR_CAP" ? "var(--warn)" : "var(--accent)";
327
+ stamp.textContent = "Updated " + new Date(document_.generatedAt).toLocaleTimeString();
328
+ stamp.className = "sub";
329
+ cards.textContent = "";
330
+ document_.providers.forEach(function(entry){
331
+ var card = document.createElement("div");
332
+ card.className = "card";
333
+ var row = document.createElement("div");
334
+ row.className = "row";
335
+ var name = document.createElement("span");
336
+ name.className = "name";
337
+ name.textContent = entry.provider;
338
+ var pct = document.createElement("span");
339
+ pct.className = "pct";
340
+ pct.textContent = entry.usagePercent.toFixed(1) + "%";
341
+ row.appendChild(name); row.appendChild(pct);
342
+ var bar = document.createElement("div");
343
+ bar.className = "bar";
344
+ var fill = document.createElement("div");
345
+ fill.className = "fill " + tone(entry.usagePercent);
346
+ fill.style.width = Math.min(100, Math.max(0, entry.usagePercent)) + "%";
347
+ bar.appendChild(fill);
348
+ var meta = document.createElement("div");
349
+ meta.className = "meta";
350
+ var state = document.createElement("span");
351
+ state.textContent = entry.state;
352
+ var reset = document.createElement("span");
353
+ reset.textContent = clock(entry.resetAt);
354
+ meta.appendChild(state); meta.appendChild(reset);
355
+ card.appendChild(row); card.appendChild(bar); card.appendChild(meta);
356
+ cards.appendChild(card);
357
+ });
358
+ unknown.textContent = document_.unknown.length === 0
359
+ ? ""
360
+ : "Unknown, so nothing is claimed for them: " + document_.unknown.join(", ") + ".";
361
+ }
362
+ function load(){
363
+ /* The token goes in a header, never in a URL, so nothing that repeats every
364
+ fifteen seconds can write it into a log or a history entry. */
365
+ fetch("/quota.json", {
366
+ cache: "no-store",
367
+ headers: { "authorization": "Bearer " + token }
368
+ })
369
+ .then(function(response){
370
+ if (!response.ok) throw new Error(String(response.status));
371
+ return response.json();
372
+ })
373
+ .then(draw)
374
+ .catch(function(error){
375
+ stamp.className = "sub err";
376
+ stamp.textContent = error.message === "401"
377
+ ? "The token in this address is not valid. Scan the code again."
378
+ : "Cannot reach the machine running OpenLimiter.";
379
+ });
380
+ }
381
+ load();
382
+ setInterval(load, 15000);
383
+ })();
384
+ </script>
385
+ </body>
386
+ </html>
303
387
  `;
304
388
  }
305
389
  /**
@@ -346,15 +430,22 @@ export async function startQuotaServer(options = {}) {
346
430
  sendJson(request, response, 400, { error: "bad_request" });
347
431
  return;
348
432
  }
349
- const presented = target.searchParams.get(TOKEN_PARAMETER);
350
- if (presented === null || !constantTimeEquals(presented, token)) {
351
- sendJson(request, response, 401, { error: "token_required" });
352
- return;
353
- }
433
+ /*
434
+ * The shell is served before the token is looked at, and only the shell.
435
+ * It has to be, because the token is in the fragment and the fragment never
436
+ * arrives here. It carries no reading, no token and no account detail, so
437
+ * anyone who fetches it learns only that this command is running, which the
438
+ * open port already told them.
439
+ */
354
440
  if (target.pathname === "/") {
355
441
  sendHtml(request, response, 200, mobilePage());
356
442
  return;
357
443
  }
444
+ const presented = presentedToken(request.headers.authorization, target);
445
+ if (presented === null || !constantTimeEquals(presented, token)) {
446
+ sendJson(request, response, 401, { error: "token_required" });
447
+ return;
448
+ }
358
449
  if (target.pathname === "/quota.json") {
359
450
  sendJson(request, response, 200, await quotaDocument(stateDirectory, clock()));
360
451
  return;
@@ -393,7 +484,8 @@ export async function startQuotaServer(options = {}) {
393
484
  server.once("listening", onListening);
394
485
  server.listen(port, host);
395
486
  });
396
- const query = "/?" + TOKEN_PARAMETER + "=" + token;
487
+ /* Fragment, not query. See TOKEN_FRAGMENT_PREFIX above for why. */
488
+ const suffix = "/" + TOKEN_FRAGMENT_PREFIX + token;
397
489
  const advertised = host === "0.0.0.0" || host === "::"
398
490
  ? lanAddress() ?? "127.0.0.1"
399
491
  : host;
@@ -401,8 +493,8 @@ export async function startQuotaServer(options = {}) {
401
493
  host,
402
494
  port: listeningPort,
403
495
  token,
404
- url: "http://" + authority(advertised, listeningPort) + query,
405
- localUrl: "http://" + authority("127.0.0.1", listeningPort) + query,
496
+ url: "http://" + authority(advertised, listeningPort) + suffix,
497
+ localUrl: "http://" + authority("127.0.0.1", listeningPort) + suffix,
406
498
  close: async () => {
407
499
  await new Promise((resolve) => {
408
500
  server.close(() => {
@@ -435,7 +527,7 @@ export function serveBanner(handle, options = {}) {
435
527
  lines.push("The address is too long to draw as a scannable code.", "");
436
528
  }
437
529
  }
438
- lines.push("On this machine: " + handle.localUrl, "", "Scan the code with a phone on the same network, or type the address.", "The token changes every time this command starts, and nothing answers without it.", "Read only: no route here can change anything on this machine, and no", "credential, provider payload, or account detail is ever served.", "Meant for a trusted home or office network. Do not expose this port to the internet.", "", "Press Ctrl C to stop.");
530
+ lines.push("On this machine: " + handle.localUrl, "", "Scan the code with a phone on the same network, or type the address.", "The token changes every time this command starts, and nothing answers without it.", "The code and the address ARE the key: anyone who can see this screen, or a", "photograph of it, can read your quota for as long as this command runs.", "Read only: no route here can change anything on this machine, and no", "credential, provider payload, or account detail is ever served.", "Meant for a trusted home or office network. This listens on every interface", "on this machine, so do not port forward this port and do not open it on a", "firewall: nothing but your router's default is keeping it off the internet.", "", "Press Ctrl C to stop.");
439
531
  return lines.join("\n");
440
532
  }
441
533
  //# sourceMappingURL=serve.js.map
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openlimiter",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "A local command line meter for AI quota, usage, and reset times.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,9 +22,9 @@
22
22
  "NOTICE"
23
23
  ],
24
24
  "dependencies": {
25
- "@openlimiter/adapters": "0.2.0",
26
- "@openlimiter/connectors": "0.2.0",
27
- "@openlimiter/core": "0.2.0"
25
+ "@openlimiter/adapters": "0.4.0",
26
+ "@openlimiter/connectors": "0.4.0",
27
+ "@openlimiter/core": "0.4.0"
28
28
  },
29
29
  "repository": {
30
30
  "type": "git",