@openlimiter/connectors 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,SAAS,MAAM,CAAC,GAAW,EAAE,OAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,WAAW;IACrD,OAAO;QACL,WAAW,EAAE;YACX,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aACnC;YACD,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aACnC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE;YACJ,aAAa,EAAE,GAAG;YAClB,WAAW,EAAE,EAAE;SAChB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,WAAW;IACpD,OAAO;QACL,WAAW,EAAE;YACX,cAAc,EAAE;gBACd,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aAClC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,WAAW;IAC1D,OAAO;QACL,KAAK,EAAE;YACL,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;SAC/B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,WAAW;IACvD,OAAO;QACL,KAAK,EAAE;YACL,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;YAC9B,aAAa,EAAE,mBAAmB;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,WAAW;IACrD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;gBACP,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;aACvC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,iDAAiD;IAC1D,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,YAAY;;;;;CAKW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAKX;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CA+BnF;AAED,eAAO,MAAM,eAAe,EAAE,iBAa7B,CAAC"}
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,YAAY;;;;;CAKW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAKX;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CA+BnF;AAED,eAAO,MAAM,eAAe,EAAE,iBAc7B,CAAC"}
package/dist/manual.js CHANGED
@@ -64,6 +64,7 @@ export function parseManualPayload(payload, now) {
64
64
  }
65
65
  export const manualConnector = {
66
66
  id: "manual",
67
+ encoding: "json",
67
68
  displayName: "Manual",
68
69
  labels: manualLabels,
69
70
  detect(environment) {
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  import type { ConnectorContract, RawMeter } from "@openlimiter/core";
2
+ /**
3
+ * The OpenCode usage reader, and the least trustworthy one in the product.
4
+ *
5
+ * OpenCode publishes no usage interface at all. More than twenty candidate
6
+ * routes were probed on 2026-08-03 and the API key opens none of them: the plan
7
+ * percentages exist only inside the HTML of a logged in workspace page, server
8
+ * rendered. So this parser reads a PAGE, not a payload, and that is why its
9
+ * labels say browser-session, authenticated-scrape and automationRisk high, and
10
+ * why they do not improve when a capture lands. They describe the method, not
11
+ * the amount of evidence behind it.
12
+ *
13
+ * The reader used to parse `usage.percent` out of a JSON object, a shape from
14
+ * an early prototype that no OpenCode surface has ever produced.
15
+ *
16
+ * Two things make reading HTML survivable rather than reckless. Windows are
17
+ * matched by their LABEL and never by position, so a reordered page degrades to
18
+ * unknown instead of quietly reporting the monthly figure as the weekly one.
19
+ * And all three labels must be found: a page that has changed enough to lose
20
+ * one of them has changed enough not to be trusted for the other two.
21
+ */
2
22
  export declare const opencodeLabels: {
3
23
  readonly credentialOrigin: "browser-session";
4
24
  readonly dataInterfaceStatus: "authenticated-scrape";
@@ -12,6 +32,48 @@ export declare const opencodeInput: {
12
32
  readonly readMode: "read_only";
13
33
  readonly honesty: "UNVERIFIED_AUTHENTICATED_SCRAPE_HIGH_RISK";
14
34
  };
35
+ /**
36
+ * What this reader reads: text, not JSON.
37
+ *
38
+ * The collection pipeline keys on this. A body for this reader is handed over
39
+ * as the raw string it arrived as, because running it through a JSON parser
40
+ * first would turn every real response into a parse failure.
41
+ */
42
+ export declare const opencodeEncoding: "text";
43
+ /**
44
+ * How far this reader will search for a window's own container, in characters.
45
+ *
46
+ * A bound on WORK, not a boundary. The boundary is structural: see
47
+ * `windowContainer`. A character count alone was tried and it does not close
48
+ * the hole, because "the first percentage within two thousand characters after
49
+ * the label" still reaches a footer when the window's own percentage is absent.
50
+ * That is the difference between bounding how far a reader wanders and
51
+ * bounding where it is allowed to look at all.
52
+ */
53
+ export declare const OPENCODE_MAX_SEGMENT_CHARS = 2000;
54
+ /**
55
+ * Largest page this reader will look at, in characters.
56
+ *
57
+ * The transport already bounds the response at one mebibyte. This is the second
58
+ * bound, on the work done with it, so a page that is within the transport's
59
+ * limit still cannot make the label scan expensive.
60
+ */
61
+ export declare const OPENCODE_MAX_PAGE_CHARS = 1048576;
62
+ /**
63
+ * The three windows the workspace page renders, and how long each one is.
64
+ *
65
+ * All three are required. Matched by label, in the page's own words.
66
+ */
67
+ export declare const OPENCODE_WINDOWS: readonly {
68
+ readonly label: string;
69
+ readonly seconds: number;
70
+ }[];
71
+ /**
72
+ * The binding window, as one meter.
73
+ *
74
+ * The highest of the three, because that is the one that will stop the work,
75
+ * and because it is what the reference reader's own bar names.
76
+ */
15
77
  export declare function parseOpencodePayload(payload: unknown, now: string): RawMeter[] | null;
16
78
  export declare const opencodeConnector: ConnectorContract;
17
79
  //# sourceMappingURL=opencode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,cAAc;;;;;CAKS,CAAC;AAErC,eAAO,MAAM,eAAe,EAAG,2CAAoD,CAAC;AAEpF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAmBrF;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAa/B,CAAC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAQ3B;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,cAAc;;;;;CAKS,CAAC;AAErC,eAAO,MAAM,eAAe,EAAG,2CAAoD,CAAC;AAEpF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AA6ChD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,EAIA,CAAC;AAuLF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAuBrF;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAc/B,CAAC"}
package/dist/opencode.js CHANGED
@@ -1,4 +1,24 @@
1
- import { boundedNumber, futureInstant, rawMeter, record, shortExpiry } from "./shared.js";
1
+ import { durationSecondsFromWords, instantAfter, rawMeter, shortExpiry } from "./shared.js";
2
+ /**
3
+ * The OpenCode usage reader, and the least trustworthy one in the product.
4
+ *
5
+ * OpenCode publishes no usage interface at all. More than twenty candidate
6
+ * routes were probed on 2026-08-03 and the API key opens none of them: the plan
7
+ * percentages exist only inside the HTML of a logged in workspace page, server
8
+ * rendered. So this parser reads a PAGE, not a payload, and that is why its
9
+ * labels say browser-session, authenticated-scrape and automationRisk high, and
10
+ * why they do not improve when a capture lands. They describe the method, not
11
+ * the amount of evidence behind it.
12
+ *
13
+ * The reader used to parse `usage.percent` out of a JSON object, a shape from
14
+ * an early prototype that no OpenCode surface has ever produced.
15
+ *
16
+ * Two things make reading HTML survivable rather than reckless. Windows are
17
+ * matched by their LABEL and never by position, so a reordered page degrades to
18
+ * unknown instead of quietly reporting the monthly figure as the weekly one.
19
+ * And all three labels must be found: a page that has changed enough to lose
20
+ * one of them has changed enough not to be trusted for the other two.
21
+ */
2
22
  export const opencodeLabels = {
3
23
  credentialOrigin: "browser-session",
4
24
  dataInterfaceStatus: "authenticated-scrape",
@@ -12,20 +32,270 @@ export const opencodeInput = {
12
32
  readMode: "read_only",
13
33
  honesty: opencodeHonesty
14
34
  };
35
+ /**
36
+ * What this reader reads: text, not JSON.
37
+ *
38
+ * The collection pipeline keys on this. A body for this reader is handed over
39
+ * as the raw string it arrived as, because running it through a JSON parser
40
+ * first would turn every real response into a parse failure.
41
+ */
42
+ export const opencodeEncoding = "text";
43
+ /**
44
+ * How far this reader will search for a window's own container, in characters.
45
+ *
46
+ * A bound on WORK, not a boundary. The boundary is structural: see
47
+ * `windowContainer`. A character count alone was tried and it does not close
48
+ * the hole, because "the first percentage within two thousand characters after
49
+ * the label" still reaches a footer when the window's own percentage is absent.
50
+ * That is the difference between bounding how far a reader wanders and
51
+ * bounding where it is allowed to look at all.
52
+ */
53
+ export const OPENCODE_MAX_SEGMENT_CHARS = 2_000;
54
+ /**
55
+ * Elements that never close, so a scan must not wait for a closing tag.
56
+ *
57
+ * Not exhaustive HTML: exhaustive for what a rendered page puts inside a meter
58
+ * block. An element outside this list that never closes makes the container
59
+ * scan run past its own end, and the scan answers null rather than guessing,
60
+ * which is the direction that costs a reading instead of inventing one.
61
+ */
62
+ const VOID_ELEMENTS = new Set([
63
+ "area", "base", "br", "col", "embed", "hr", "img", "input",
64
+ "link", "meta", "param", "source", "track", "wbr"
65
+ ]);
66
+ /** Every tag in a slice of text, in order. Comments are not tags. */
67
+ function tagsIn(html, from, to) {
68
+ const tags = [];
69
+ const pattern = /<!--[\s\S]*?-->|<\s*(\/?)\s*([a-zA-Z][a-zA-Z0-9-]*)([^>]*)>/gu;
70
+ const slice = html.slice(from, to);
71
+ for (const match of slice.matchAll(pattern)) {
72
+ /* A comment matched the first alternative and has no tag name. */
73
+ if (match[2] === undefined)
74
+ continue;
75
+ const name = match[2].toLowerCase();
76
+ const attributes = match[3] ?? "";
77
+ tags.push({
78
+ at: from + (match.index ?? 0),
79
+ end: from + (match.index ?? 0) + match[0].length,
80
+ name,
81
+ closing: match[1] === "/",
82
+ selfClosing: attributes.trimEnd().endsWith("/") || VOID_ELEMENTS.has(name)
83
+ });
84
+ }
85
+ return tags;
86
+ }
87
+ /**
88
+ * Largest page this reader will look at, in characters.
89
+ *
90
+ * The transport already bounds the response at one mebibyte. This is the second
91
+ * bound, on the work done with it, so a page that is within the transport's
92
+ * limit still cannot make the label scan expensive.
93
+ */
94
+ export const OPENCODE_MAX_PAGE_CHARS = 1_048_576;
95
+ /**
96
+ * The three windows the workspace page renders, and how long each one is.
97
+ *
98
+ * All three are required. Matched by label, in the page's own words.
99
+ */
100
+ export const OPENCODE_WINDOWS = [
101
+ { label: "Rolling Usage", seconds: 18_000 },
102
+ { label: "Weekly Usage", seconds: 604_800 },
103
+ { label: "Monthly Usage", seconds: 2_592_000 }
104
+ ];
105
+ /**
106
+ * Markup and hydration comments, removed so text can be matched.
107
+ *
108
+ * The page is server rendered by a framework that sprays hydration markers
109
+ * through the text, so it renders "Resets in<!--/--> <!--$-->5 days<!--/-->".
110
+ * Matching against raw HTML silently loses every reset time, which is a missing
111
+ * countdown rather than a wrong number, but missing for an invisible reason is
112
+ * still the worst kind of missing. Verified against the live page 2026-08-03.
113
+ */
114
+ const MARKUP = /<!--[\s\S]*?-->|<[^>]*>/gu;
115
+ /** A percentage as the page prints it: a whole number and a percent sign. */
116
+ const PERCENT = /(\d{1,3})\s*%/u;
117
+ /**
118
+ * A countdown as the page prints it.
119
+ *
120
+ * Anchored on the words, and consuming only consecutive number and unit pairs,
121
+ * so it cannot wander into the next window's duration if a label boundary ever
122
+ * moves.
123
+ */
124
+ const RESETS_IN = /Resets in\s+((?:\d{1,6}\s*(?:day|hour|minute|second)s?\s*)+)/iu;
125
+ function flatten(fragment) {
126
+ return fragment.replace(MARKUP, " ").split(/\s+/u).filter(Boolean).join(" ");
127
+ }
128
+ /** How many ancestors of a label this reader will consider. */
129
+ const MAX_CONTAINER_DEPTH = 6;
130
+ /**
131
+ * The element that encloses a position, as a half open range, or null.
132
+ *
133
+ * Found by walking backwards to the nearest element still open at that point,
134
+ * then forwards to its own closing tag. Both walks are bounded, and every
135
+ * failure answers null: an unbalanced page is one this reader declines rather
136
+ * than one it reads approximately.
137
+ */
138
+ function enclosingElement(html, at) {
139
+ const searchFrom = Math.max(0, at - OPENCODE_MAX_SEGMENT_CHARS);
140
+ const before = tagsIn(html, searchFrom, at);
141
+ /* Backwards: a closing tag means a sibling element already finished, so the
142
+ next opening tag going left belongs to it and not to us. */
143
+ let pendingCloses = 0;
144
+ let container = null;
145
+ for (let index = before.length - 1; index >= 0; index -= 1) {
146
+ const tag = before[index];
147
+ if (tag.selfClosing)
148
+ continue;
149
+ if (tag.closing) {
150
+ pendingCloses += 1;
151
+ continue;
152
+ }
153
+ if (pendingCloses > 0) {
154
+ pendingCloses -= 1;
155
+ continue;
156
+ }
157
+ container = tag;
158
+ break;
159
+ }
160
+ if (container === null)
161
+ return null;
162
+ /* Forwards from just inside the container to its own close, counting depth so
163
+ a nested element of the same name cannot end the region early. */
164
+ const searchTo = Math.min(html.length, container.end + OPENCODE_MAX_SEGMENT_CHARS);
165
+ let depth = 0;
166
+ for (const tag of tagsIn(html, container.end, searchTo)) {
167
+ if (tag.selfClosing)
168
+ continue;
169
+ if (!tag.closing) {
170
+ depth += 1;
171
+ continue;
172
+ }
173
+ if (depth === 0) {
174
+ return tag.name === container.name
175
+ ? { openedAt: container.at, from: container.end, to: tag.at }
176
+ /* A closing tag for something else pops above our container, which
177
+ means the page is unbalanced here. Decline it. */
178
+ : null;
179
+ }
180
+ depth -= 1;
181
+ }
182
+ return null;
183
+ }
184
+ /**
185
+ * The region a window's reading may be read from, or null.
186
+ *
187
+ * This is the fix for the final segment attack, and the reason a character count
188
+ * could not be. A window's figure is not inside the heading that names it: it is
189
+ * a SIBLING of that heading, in a shared block. So the readable region is an
190
+ * ancestor of the label, and the right ancestor is the nearest one that holds a
191
+ * percentage while naming no other window.
192
+ *
193
+ * Both halves of that rule carry weight. Requiring a percentage is what walks
194
+ * past the bare heading element. Refusing a region that names another window is
195
+ * what stops the walk at the meter block instead of continuing up to the page
196
+ * body, which contains every window's figure and would let any of them stand in
197
+ * for any other. When no ancestor satisfies both, there is no region, and a
198
+ * window with no region is refused rather than approximated: that is the case
199
+ * the audit named, a monthly block that rendered no figure and a footer a few
200
+ * characters later that did.
201
+ */
202
+ function windowRegion(html, labelAt, otherLabels) {
203
+ let position = labelAt;
204
+ for (let level = 0; level < MAX_CONTAINER_DEPTH; level += 1) {
205
+ const element = enclosingElement(html, position);
206
+ if (element === null)
207
+ return null;
208
+ const segment = flatten(html.slice(element.from, element.to));
209
+ if (otherLabels.some((label) => segment.includes(label)))
210
+ return null;
211
+ if (PERCENT.test(segment))
212
+ return segment;
213
+ /* No figure at this level, so try the block above it. */
214
+ position = element.openedAt;
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Every window the page states, or null unless all three are there.
220
+ *
221
+ * Each window's segment runs from its own label to the next label in page
222
+ * order, so a percentage can only ever be read out of the block that belongs to
223
+ * it.
224
+ */
225
+ function parseWindows(html, now) {
226
+ const found = [];
227
+ for (const window of OPENCODE_WINDOWS) {
228
+ const at = html.indexOf(window.label);
229
+ if (at < 0)
230
+ return null;
231
+ /* One occurrence only. A page rendering a label twice gives this reader two
232
+ candidate containers and no way to know which is the meter. */
233
+ if (html.indexOf(window.label, at + window.label.length) >= 0)
234
+ return null;
235
+ found.push({ at, seconds: window.seconds, label: window.label });
236
+ }
237
+ found.sort((left, right) => left.at - right.at);
238
+ const windows = [];
239
+ for (const start of found) {
240
+ /*
241
+ * The readable region is this window's own CONTAINER, and nothing past it.
242
+ *
243
+ * A character count was not enough, and the way it failed is worth stating:
244
+ * "the first percentage within two thousand characters after the label"
245
+ * still reaches a footer whenever the window's own percentage is absent, so
246
+ * a page that stopped rendering one meter would report an unrelated figure
247
+ * as that meter. Outside the container is outside, at any distance.
248
+ */
249
+ const segment = windowRegion(html, start.at, found.filter((entry) => entry.label !== start.label).map((entry) => entry.label));
250
+ if (segment === null)
251
+ return null;
252
+ const percentMatch = PERCENT.exec(segment);
253
+ if (percentMatch === null)
254
+ return null;
255
+ const percent = Number.parseInt(percentMatch[1] ?? "", 10);
256
+ if (!Number.isFinite(percent) || percent < 0 || percent > 100)
257
+ return null;
258
+ /* The countdown is optional, because the page omits it on a window that has
259
+ no reset pending. A missing countdown costs the countdown and nothing
260
+ else: the percentage beside it was still rendered by the provider. */
261
+ const resetMatch = RESETS_IN.exec(segment);
262
+ const seconds = resetMatch === null ? null : durationSecondsFromWords(resetMatch[1] ?? "");
263
+ windows.push({
264
+ percent,
265
+ seconds: start.seconds,
266
+ resetAt: seconds === null ? null : instantAfter(now, seconds)
267
+ });
268
+ }
269
+ return windows;
270
+ }
271
+ /**
272
+ * The binding window, as one meter.
273
+ *
274
+ * The highest of the three, because that is the one that will stop the work,
275
+ * and because it is what the reference reader's own bar names.
276
+ */
15
277
  export function parseOpencodePayload(payload, now) {
16
- const root = record(payload);
17
- const usage = record(root?.["usage"]);
18
- const percent = boundedNumber(usage?.["percent"]);
19
- const resetAt = futureInstant(usage?.["reset_at"], now);
278
+ if (typeof payload !== "string")
279
+ return null;
280
+ if (payload.length === 0 || payload.length > OPENCODE_MAX_PAGE_CHARS)
281
+ return null;
282
+ const windows = parseWindows(payload, now);
283
+ if (windows === null || windows.length === 0)
284
+ return null;
20
285
  const expiresAt = shortExpiry(now);
21
- if (percent === null || resetAt === null || expiresAt === null)
286
+ if (expiresAt === null)
22
287
  return null;
288
+ let binding = windows[0];
289
+ for (const candidate of windows.slice(1)) {
290
+ if (candidate.percent > binding.percent)
291
+ binding = candidate;
292
+ }
23
293
  return [rawMeter({
24
294
  provider: "OPENCODE",
25
295
  meter: "PRIMARY",
26
- value: percent,
27
- window: { kind: "fixed" },
28
- resetAt,
296
+ value: binding.percent,
297
+ window: { kind: "rolling", durationSeconds: binding.seconds },
298
+ resetAt: binding.resetAt,
29
299
  source: "authenticated_page",
30
300
  precision: "estimated",
31
301
  observedAt: now,
@@ -36,6 +306,7 @@ export function parseOpencodePayload(payload, now) {
36
306
  export const opencodeConnector = {
37
307
  id: "opencode",
38
308
  displayName: "OpenCode",
309
+ encoding: "text",
39
310
  labels: opencodeLabels,
40
311
  detect(environment) {
41
312
  return environment["OPENCODE_SESSION_PRESENT"] === "1";
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,sBAAsB;IAC3C,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,2CAAoD,CAAC;AAEpF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE,wBAAwB;IACtC,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,eAAe;CAChB,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,GAAW;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACzB,OAAO;YACP,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,cAAc;IACtB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,0BAA0B,CAAC,KAAK,GAAG,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,gBAAgB;;;;;CAKO,CAAC;AAErC,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CA2BvF;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAajC,CAAC"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,gBAAgB;;;;;CAKO,CAAC;AAErC,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAmCvF;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAcjC,CAAC"}
@@ -27,6 +27,13 @@ export function parseOpenrouterPayload(payload, now) {
27
27
  const percent = (usage / credits) * 100;
28
28
  if (!Number.isFinite(percent) || percent < 0 || percent > 100)
29
29
  return null;
30
+ /*
31
+ * OpenRouter is the one provider whose documented shape states money rather
32
+ * than a percentage: total_credits is what the plan holds and total_usage is
33
+ * what has been spent out of it. Both are handed on as they were read. The
34
+ * normalizer decides whether they are believable and drops all three fields
35
+ * together if they are not, which leaves the percentage above intact.
36
+ */
30
37
  return [rawMeter({
31
38
  provider: "OPENROUTER",
32
39
  meter: "CREDITS",
@@ -37,11 +44,13 @@ export function parseOpenrouterPayload(payload, now) {
37
44
  precision: "exact",
38
45
  observedAt: now,
39
46
  expiresAt,
40
- labels: openrouterLabels
47
+ labels: openrouterLabels,
48
+ amounts: { usedAmount: usage, limitAmount: credits, currency: "USD" }
41
49
  })];
42
50
  }
43
51
  export const openrouterConnector = {
44
52
  id: "openrouter",
53
+ encoding: "json",
45
54
  displayName: "OpenRouter",
46
55
  labels: openrouterLabels,
47
56
  detect(environment) {
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,gBAAgB;IACrC,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,WAAW;CACb,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IACE,OAAO,KAAK,IAAI;QAChB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,CAAC;QACZ,KAAK,GAAG,OAAO;QACf,SAAS,KAAK,IAAI;QAClB,OAAO,IAAI,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,EAAE,YAAY;IAChB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,gBAAgB;IACxB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,mCAAmC,CAAC,KAAK,WAAW,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,gBAAgB;IACrC,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,WAAW;CACb,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IACE,OAAO,KAAK,IAAI;QAChB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,CAAC;QACZ,KAAK,GAAG,OAAO;QACf,SAAS,KAAK,IAAI;QAClB,OAAO,IAAI,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3E;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;SACtE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,gBAAgB;IACxB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,mCAAmC,CAAC,KAAK,WAAW,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}