oc2token 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +15 -15
  2. package/dist/src/application.js +91 -7
  3. package/dist/src/application.js.map +1 -1
  4. package/dist/src/cache/schema.js +8 -2
  5. package/dist/src/cache/schema.js.map +1 -1
  6. package/dist/src/cli.d.ts +2 -0
  7. package/dist/src/cli.js +218 -39
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/dashboard/render/ansi.d.ts +11 -0
  10. package/dist/src/dashboard/render/ansi.js +19 -0
  11. package/dist/src/dashboard/render/ansi.js.map +1 -1
  12. package/dist/src/dashboard/render/dashboard.d.ts +17 -0
  13. package/dist/src/dashboard/render/dashboard.js +268 -156
  14. package/dist/src/dashboard/render/dashboard.js.map +1 -1
  15. package/dist/src/dashboard/render/format.js +3 -3
  16. package/dist/src/dashboard/render/format.js.map +1 -1
  17. package/dist/src/dashboard/render/types.d.ts +4 -0
  18. package/dist/src/dashboard/render/types.js +12 -10
  19. package/dist/src/dashboard/render/types.js.map +1 -1
  20. package/dist/src/dashboard/settings/index.d.ts +4 -0
  21. package/dist/src/dashboard/settings/index.js +15 -2
  22. package/dist/src/dashboard/settings/index.js.map +1 -1
  23. package/dist/src/domain/contracts.d.ts +2 -0
  24. package/dist/src/domain/contracts.js.map +1 -1
  25. package/dist/src/domain/windows.d.ts +11 -5
  26. package/dist/src/domain/windows.js +24 -7
  27. package/dist/src/domain/windows.js.map +1 -1
  28. package/dist/src/opencode/client.d.ts +1 -0
  29. package/dist/src/opencode/client.js +49 -4
  30. package/dist/src/opencode/client.js.map +1 -1
  31. package/dist/src/opencode/index.d.ts +1 -0
  32. package/dist/src/opencode/index.js +1 -0
  33. package/dist/src/opencode/index.js.map +1 -1
  34. package/dist/src/opencode/native.d.ts +24 -0
  35. package/dist/src/opencode/native.js +215 -0
  36. package/dist/src/opencode/native.js.map +1 -0
  37. package/dist/src/opencode/stats.js +52 -7
  38. package/dist/src/opencode/stats.js.map +1 -1
  39. package/dist/src/opencode/transport.js +4 -1
  40. package/dist/src/opencode/transport.js.map +1 -1
  41. package/dist/src/output/json.d.ts +1 -1
  42. package/dist/src/output/json.js +1 -1
  43. package/dist/src/output/table.js +31 -15
  44. package/dist/src/output/table.js.map +1 -1
  45. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
- export declare const USAGE_WINDOW_KINDS: readonly ["hour", "day", "week"];
1
+ export declare const USAGE_WINDOW_KINDS: readonly ["hour", "day", "week", "month"];
2
2
  export type UsageWindowKind = (typeof USAGE_WINDOW_KINDS)[number];
3
3
  export interface UsageWindowBase {
4
4
  /** Short stable key used by the CLI and JSON output. */
5
5
  readonly kind: UsageWindowKind;
6
6
  /** Human-readable semantics; the kind alone must not be interpreted as all-time. */
7
- readonly semantics: "rolling-hour" | "local-day" | "iso-week";
7
+ readonly semantics: "rolling-hour" | "local-day" | "iso-week" | "rolling-month";
8
8
  /** The IANA time zone used for calendar labels and boundaries. */
9
9
  readonly timezone: string;
10
10
  /** Inclusive start and exclusive end instants. */
@@ -30,11 +30,16 @@ export interface ISOWeekWindow extends UsageWindowBase {
30
30
  /** ISO week label represented as YYYY-Www. */
31
31
  readonly isoWeekLabel: string;
32
32
  }
33
- export type UsageWindow = RollingHourWindow | LocalDayWindow | ISOWeekWindow;
33
+ export interface RollingMonthWindow extends UsageWindowBase {
34
+ readonly kind: "month";
35
+ readonly semantics: "rolling-month";
36
+ }
37
+ export type UsageWindow = RollingHourWindow | LocalDayWindow | ISOWeekWindow | RollingMonthWindow;
34
38
  export interface UsageWindowSet {
35
39
  readonly hour: RollingHourWindow;
36
40
  readonly day: LocalDayWindow;
37
41
  readonly week: ISOWeekWindow;
42
+ readonly month: RollingMonthWindow;
38
43
  }
39
44
  /** One half-open, timezone-aware interval used to plot a usage trend. */
40
45
  export interface UsageBucket {
@@ -46,14 +51,15 @@ export interface UsageBucket {
46
51
  export declare function createUsageWindow(kind: "hour", now: Date, timezone: string): RollingHourWindow;
47
52
  export declare function createUsageWindow(kind: "day", now: Date, timezone: string): LocalDayWindow;
48
53
  export declare function createUsageWindow(kind: "week", now: Date, timezone: string): ISOWeekWindow;
49
- /** Build all v1 windows from the same captured instant, avoiding boundary drift. */
54
+ export declare function createUsageWindow(kind: "month", now: Date, timezone: string): RollingMonthWindow;
55
+ /** Build all dashboard windows from the same captured instant, avoiding boundary drift. */
50
56
  export declare function createUsageWindows(now: Date, timezone: string): UsageWindowSet;
51
57
  /**
52
58
  * Build the stable trend intervals for a requested window. Calendar-day
53
59
  * buckets advance in elapsed time from the local-day bounds, which preserves
54
60
  * both missing and repeated hours on DST transition days. Week buckets use
55
61
  * local midnights, so a DST day changes the bucket duration without changing
56
- * the seven-day shape of the ISO week.
62
+ * the seven-day shape of the ISO week. Rolling-month buckets use elapsed days.
57
63
  */
58
64
  export declare function createUsageTrendBuckets(window: UsageWindow): readonly UsageBucket[];
59
65
  export declare function containsInstant(window: UsageWindow, instant: Date): boolean;
@@ -1,8 +1,11 @@
1
1
  import { DomainError } from "./errors.js";
2
- export const USAGE_WINDOW_KINDS = ["hour", "day", "week"];
2
+ export const USAGE_WINDOW_KINDS = ["hour", "day", "week", "month"];
3
3
  const HOUR_MS = 60 * 60 * 1000;
4
+ const MINUTE_MS = 60 * 1000;
5
+ const FIVE_MINUTES_MS = 5 * MINUTE_MS;
4
6
  const DAY_MS = 24 * HOUR_MS;
5
7
  const ISO_WEEK_DAYS = 7;
8
+ const ROLLING_MONTH_DAYS = 30;
6
9
  function assertValidInstant(value, name) {
7
10
  if (!(value instanceof Date) || Number.isNaN(value.getTime())) {
8
11
  throw new DomainError("invalid-date", `${name} must be a valid Date`);
@@ -57,7 +60,7 @@ function trendLabelFormatter(timezone, kind) {
57
60
  const key = `${timezone}\0${kind}`;
58
61
  let formatter = labelFormatterCache.get(key);
59
62
  if (formatter === undefined) {
60
- formatter = new Intl.DateTimeFormat("en-CA", kind === "week"
63
+ formatter = new Intl.DateTimeFormat("en-CA", kind === "week" || kind === "month"
61
64
  ? { timeZone: timezone, year: "numeric", month: "2-digit", day: "2-digit" }
62
65
  : { timeZone: timezone, hour: "2-digit", minute: "2-digit", hourCycle: "h23" });
63
66
  labelFormatterCache.set(key, formatter);
@@ -193,6 +196,19 @@ export function createUsageWindow(kind, now, timezone) {
193
196
  label: "last 60 minutes",
194
197
  };
195
198
  }
199
+ if (kind === "month") {
200
+ const from = new Date(now.getTime() - ROLLING_MONTH_DAYS * DAY_MS);
201
+ const to = new Date(now.getTime());
202
+ assertWindowRange(from, to, kind);
203
+ return {
204
+ kind,
205
+ semantics: "rolling-month",
206
+ timezone,
207
+ from,
208
+ to,
209
+ label: "last 30 days",
210
+ };
211
+ }
196
212
  const currentDate = localDateAt(now, timezone);
197
213
  const dayStart = instantAtLocal({ ...currentDate, hour: 0, minute: 0, second: 0 }, timezone);
198
214
  if (kind === "day") {
@@ -228,12 +244,13 @@ export function createUsageWindow(kind, now, timezone) {
228
244
  label: isoWeekLabel,
229
245
  };
230
246
  }
231
- /** Build all v1 windows from the same captured instant, avoiding boundary drift. */
247
+ /** Build all dashboard windows from the same captured instant, avoiding boundary drift. */
232
248
  export function createUsageWindows(now, timezone) {
233
249
  return {
234
250
  hour: createUsageWindow("hour", now, timezone),
235
251
  day: createUsageWindow("day", now, timezone),
236
252
  week: createUsageWindow("week", now, timezone),
253
+ month: createUsageWindow("month", now, timezone),
237
254
  };
238
255
  }
239
256
  function trendBucketLabel(instant, timezone, kind) {
@@ -249,7 +266,7 @@ function trendBucketLabel(instant, timezone, kind) {
249
266
  * buckets advance in elapsed time from the local-day bounds, which preserves
250
267
  * both missing and repeated hours on DST transition days. Week buckets use
251
268
  * local midnights, so a DST day changes the bucket duration without changing
252
- * the seven-day shape of the ISO week.
269
+ * the seven-day shape of the ISO week. Rolling-month buckets use elapsed days.
253
270
  */
254
271
  export function createUsageTrendBuckets(window) {
255
272
  assertTimeZone(window.timezone);
@@ -268,14 +285,14 @@ export function createUsageTrendBuckets(window) {
268
285
  });
269
286
  };
270
287
  if (window.kind === "hour") {
271
- const bucketDuration = 5 * 60 * 1_000;
288
+ const bucketDuration = MINUTE_MS;
272
289
  for (let cursor = window.from.getTime(); cursor < window.to.getTime(); cursor += bucketDuration) {
273
290
  append(new Date(cursor), new Date(Math.min(window.to.getTime(), cursor + bucketDuration)));
274
291
  }
275
292
  return buckets;
276
293
  }
277
- if (window.kind === "day") {
278
- const bucketDuration = HOUR_MS;
294
+ if (window.kind === "day" || window.kind === "month") {
295
+ const bucketDuration = window.kind === "day" ? FIVE_MINUTES_MS : DAY_MS;
279
296
  for (let cursor = window.from.getTime(); cursor < window.to.getTime(); cursor += bucketDuration) {
280
297
  append(new Date(cursor), new Date(Math.min(window.to.getTime(), cursor + bucketDuration)));
281
298
  }
@@ -1 +1 @@
1
- {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../src/domain/windows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../../src/domain/windows.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export type OpenCodeClientFactory = (endpoint: Endpoint, options?: OpenCodeClien
34
34
  /** Create the official promise client with the service's auth headers. */
35
35
  export declare function createOpenCodeClient(endpoint: Endpoint, service?: Pick<ServiceLifecycle, "headers">, options?: OpenCodeClientFactoryOptions): OpenCodeClientLike;
36
36
  export declare const defaultClientFactory: OpenCodeClientFactory;
37
+ export declare function nativeClientFactory(endpoint: Endpoint, options?: OpenCodeClientFactoryOptions): OpenCodeClientLike;
37
38
  export interface ConnectionOptions {
38
39
  readonly service?: ServiceLifecycle;
39
40
  readonly client?: OpenCodeClientLike;
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { Service, headers as serviceHeaders, } from "@opencode-ai/client/service";
3
3
  import { OpenCode } from "@opencode-ai/client";
4
+ import { createNativeClient, discoverNativeEndpoint } from "./native.js";
4
5
  import { DomainError, cancellationError } from "../domain/index.js";
5
6
  export const defaultService = {
6
7
  discover: Service.discover,
@@ -15,7 +16,10 @@ export function createOpenCodeClient(endpoint, service = defaultService, options
15
16
  fetch: options.fetch,
16
17
  });
17
18
  }
18
- export const defaultClientFactory = (endpoint, options) => createOpenCodeClient(endpoint, defaultService, options);
19
+ export const defaultClientFactory = (endpoint, options) => createNativeClient(endpoint, options);
20
+ export function nativeClientFactory(endpoint, options = {}) {
21
+ return createNativeClient(endpoint, options);
22
+ }
19
23
  function throwIfAborted(signal) {
20
24
  if (signal?.aborted) {
21
25
  throw cancellationError();
@@ -43,7 +47,14 @@ function isRecord(value) {
43
47
  return typeof value === "object" && value !== null;
44
48
  }
45
49
  function readHealth(value, endpoint) {
46
- if (!isRecord(value) || value.healthy !== true || typeof value.version !== "string") {
50
+ if (!isRecord(value) || typeof value.version !== "string") {
51
+ throw new DomainError("invalid-data", "OpenCode health response is missing a version");
52
+ }
53
+ // Servers before 2.0.6 report `{ healthy: true, version, pid }` from
54
+ // `/api/health`. Servers at 2.0.6+ report `{ version, pid, urls, paths }`
55
+ // from `/api/info` with no healthy flag. Accept both; a present healthy
56
+ // flag must still be true so a degraded payload is not mistaken for ready.
57
+ if ("healthy" in value && value.healthy !== undefined && value.healthy !== true) {
47
58
  throw new DomainError("invalid-data", "OpenCode health response is missing healthy=true and a version");
48
59
  }
49
60
  const pid = value.pid;
@@ -95,21 +106,55 @@ export async function connectOpenCode(options = {}) {
95
106
  throwIfAborted(signal);
96
107
  let endpoint = await service.discover(mergeDiscoveryOptions(options));
97
108
  throwIfAborted(signal);
109
+ // The generated client's discover probes `/api/health`, which server 2.0.6
110
+ // removed (replaced by `/api/info`). When it reports nothing, probe the
111
+ // registration file directly before giving up or spawning a new service.
112
+ if (endpoint === undefined && options.service === undefined) {
113
+ try {
114
+ endpoint = await discoverNativeEndpoint({
115
+ ...mergeDiscoveryOptions(options),
116
+ fetch: options.fetch,
117
+ ...(signal === undefined ? {} : { signal }),
118
+ });
119
+ }
120
+ catch {
121
+ endpoint = undefined;
122
+ }
123
+ throwIfAborted(signal);
124
+ }
98
125
  if (endpoint === undefined) {
99
126
  if (options.ensure === false) {
100
127
  throw new DomainError("transport", "No healthy OpenCode 2 service was discovered");
101
128
  }
102
129
  endpoint = await service.ensure(mergeEnsureOptions(options));
103
130
  throwIfAborted(signal);
131
+ // A freshly ensured 2.0.6 service still has no `/api/health`, so the
132
+ // endpoint returned by ensure is used directly without re-probing.
104
133
  }
105
134
  const normalizedEndpoint = assertEndpoint(endpoint);
106
- const client = options.client ?? (options.clientFactory ?? ((target, factoryOptions) => createOpenCodeClient(target, service, factoryOptions)))(normalizedEndpoint, {
135
+ const client = options.client ?? (options.clientFactory ?? ((target, factoryOptions) => createNativeClient(target, factoryOptions)))(normalizedEndpoint, {
107
136
  fetch: options.fetch,
108
137
  });
109
138
  if (client.health === undefined || typeof client.health.get !== "function") {
110
139
  throw new DomainError("invalid-data", "OpenCode client does not expose health.get");
111
140
  }
112
- const health = parseOpenCodeHealth(await client.health.get({ signal }), normalizedEndpoint);
141
+ let rawHealth;
142
+ try {
143
+ rawHealth = await client.health.get({ signal });
144
+ }
145
+ catch (error) {
146
+ // An injected legacy generated client hits the removed `/api/health` and
147
+ // fails with 404 against a 2.0.6 server. Retry once over the native
148
+ // routes instead of reporting the service as undiscoverable.
149
+ if (options.client === undefined || options.service !== undefined)
150
+ throw error;
151
+ const native = createNativeClient(normalizedEndpoint, { fetch: options.fetch });
152
+ rawHealth = await native.health.get({ signal });
153
+ const health = parseOpenCodeHealth(rawHealth, normalizedEndpoint);
154
+ throwIfAborted(signal);
155
+ return { endpoint: normalizedEndpoint, client: native, health };
156
+ }
157
+ const health = parseOpenCodeHealth(rawHealth, normalizedEndpoint);
113
158
  throwIfAborted(signal);
114
159
  return { endpoint: normalizedEndpoint, client, health };
115
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/opencode/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/opencode/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from "./adapter.js";
2
2
  export * from "./client.js";
3
3
  export * from "./doctor.js";
4
+ export * from "./native.js";
4
5
  export * from "./stats.js";
5
6
  export * from "./transport.js";
@@ -1,6 +1,7 @@
1
1
  export * from "./adapter.js";
2
2
  export * from "./client.js";
3
3
  export * from "./doctor.js";
4
+ export * from "./native.js";
4
5
  export * from "./stats.js";
5
6
  export * from "./transport.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/opencode/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/opencode/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { DiscoverOptions, Endpoint } from "@opencode-ai/client/service";
2
+ import type { OpenCodeClientLike } from "./client.js";
3
+ export interface NativeDiscoveryOptions extends DiscoverOptions {
4
+ readonly fetch?: typeof globalThis.fetch;
5
+ readonly signal?: AbortSignal;
6
+ }
7
+ /**
8
+ * Discover a running OpenCode 2 service without depending on the generated
9
+ * client's `/api/health` probe (removed in server 2.0.6; replaced by
10
+ * `/api/info`). Reads the same registration file and probes `/api/info`.
11
+ */
12
+ export declare function discoverNativeEndpoint(options?: NativeDiscoveryOptions): Promise<Endpoint | undefined>;
13
+ /**
14
+ * HTTP client speaking the server 2.0.6 routes directly:
15
+ * - health via `/api/info` (fallback `/api/health`)
16
+ * - stats via `/api/experimental/session/stats` (fallback `/api/session/stats`)
17
+ * - sessions via `/api/session`, messages via `/api/session/{id}/message`
18
+ *
19
+ * Implements the same OpenCodeClientLike seam as the generated client so the
20
+ * existing transport, retry, and parsing logic is reused unchanged.
21
+ */
22
+ export declare function createNativeClient(endpoint: Endpoint, options?: {
23
+ readonly fetch?: typeof globalThis.fetch;
24
+ }): OpenCodeClientLike;
@@ -0,0 +1,215 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { headers as serviceHeaders } from "@opencode-ai/client/service";
5
+ function defaultServiceFile() {
6
+ const base = process.env.XDG_STATE_HOME ?? join(homedir(), ".local", "state");
7
+ return join(base, "opencode", "service.json");
8
+ }
9
+ async function readRegistration(file) {
10
+ const path = file ?? defaultServiceFile();
11
+ let text;
12
+ try {
13
+ text = await readFile(path, "utf8");
14
+ }
15
+ catch {
16
+ return undefined;
17
+ }
18
+ try {
19
+ const parsed = JSON.parse(text);
20
+ if (typeof parsed.url !== "string" || parsed.url.length === 0)
21
+ return undefined;
22
+ return {
23
+ url: parsed.url,
24
+ ...(typeof parsed.password === "string" ? { password: parsed.password } : {}),
25
+ ...(parsed.pid === undefined ? {} : { pid: parsed.pid }),
26
+ ...(parsed.version === undefined ? {} : { version: parsed.version }),
27
+ };
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
33
+ function endpointFromRegistration(registration) {
34
+ return {
35
+ url: registration.url,
36
+ ...(registration.password === undefined
37
+ ? {}
38
+ : { auth: { type: "basic", username: "opencode", password: registration.password } }),
39
+ };
40
+ }
41
+ function matchesVersion(version, options) {
42
+ if (options.version === undefined)
43
+ return true;
44
+ if (version === undefined)
45
+ return false;
46
+ if (typeof options.version === "function")
47
+ return options.version(version);
48
+ return version === options.version;
49
+ }
50
+ function authHeaders(endpoint) {
51
+ return serviceHeaders(endpoint) ?? {};
52
+ }
53
+ async function fetchJson(endpoint, path, query, fetchFn, signal) {
54
+ const url = new URL(path, endpoint.url);
55
+ for (const [key, value] of Object.entries(query)) {
56
+ if (value !== undefined)
57
+ url.searchParams.set(key, String(value));
58
+ }
59
+ const response = await fetchFn(url.toString(), {
60
+ method: "GET",
61
+ headers: { accept: "application/json", ...authHeaders(endpoint) },
62
+ ...(signal === undefined ? {} : { signal }),
63
+ });
64
+ if (!response.ok) {
65
+ const error = new Error(`OpenCode service returned HTTP ${response.status} for ${path}`);
66
+ error.status = response.status;
67
+ error.response = response;
68
+ throw error;
69
+ }
70
+ return response.json();
71
+ }
72
+ async function probeInfo(endpoint, fetchFn, signal) {
73
+ try {
74
+ const body = (await fetchJson(endpoint, "/api/info", {}, fetchFn, signal));
75
+ if (typeof body.version === "string")
76
+ return body;
77
+ return undefined;
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ /**
84
+ * Discover a running OpenCode 2 service without depending on the generated
85
+ * client's `/api/health` probe (removed in server 2.0.6; replaced by
86
+ * `/api/info`). Reads the same registration file and probes `/api/info`.
87
+ */
88
+ export async function discoverNativeEndpoint(options = {}) {
89
+ const registration = await readRegistration(options.file);
90
+ if (registration === undefined)
91
+ return undefined;
92
+ const endpoint = endpointFromRegistration(registration);
93
+ const fetchFn = options.fetch ?? globalThis.fetch;
94
+ const info = await probeInfo(endpoint, fetchFn, options.signal);
95
+ if (info === undefined) {
96
+ // Fall back to a legacy /api/health probe for pre-2.0 servers.
97
+ try {
98
+ const legacy = (await fetchJson(endpoint, "/api/health", {}, fetchFn, options.signal));
99
+ if (legacy.healthy !== true || typeof legacy.version !== "string")
100
+ return undefined;
101
+ if (!matchesVersion(legacy.version, options))
102
+ return undefined;
103
+ return endpoint;
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ }
109
+ if (!matchesVersion(info.version, options))
110
+ return undefined;
111
+ return endpoint;
112
+ }
113
+ function statusOf(error) {
114
+ if (typeof error !== "object" || error === null)
115
+ return undefined;
116
+ const status = error.status;
117
+ return typeof status === "number" && Number.isInteger(status) ? status : undefined;
118
+ }
119
+ /**
120
+ * HTTP client speaking the server 2.0.6 routes directly:
121
+ * - health via `/api/info` (fallback `/api/health`)
122
+ * - stats via `/api/experimental/session/stats` (fallback `/api/session/stats`)
123
+ * - sessions via `/api/session`, messages via `/api/session/{id}/message`
124
+ *
125
+ * Implements the same OpenCodeClientLike seam as the generated client so the
126
+ * existing transport, retry, and parsing logic is reused unchanged.
127
+ */
128
+ export function createNativeClient(endpoint, options = {}) {
129
+ const fetchFn = options.fetch ?? globalThis.fetch;
130
+ async function get(path, query, requestOptions) {
131
+ const signal = requestOptions?.signal;
132
+ return fetchJson(endpoint, path, query, fetchFn, signal);
133
+ }
134
+ return {
135
+ health: {
136
+ get: async (requestOptions) => {
137
+ try {
138
+ return await get("/api/info", {}, requestOptions);
139
+ }
140
+ catch (error) {
141
+ if (statusOf(error) !== 404)
142
+ throw error;
143
+ return get("/api/health", {}, requestOptions);
144
+ }
145
+ },
146
+ },
147
+ session: {
148
+ list: async (input, requestOptions) => {
149
+ const query = {};
150
+ if (input !== null && typeof input === "object") {
151
+ for (const key of ["limit", "cursor", "order", "search", "parentID", "directory", "project", "subpath", "workspace"]) {
152
+ const value = input[key];
153
+ if (typeof value === "string" || typeof value === "number")
154
+ query[key] = value;
155
+ }
156
+ }
157
+ return get("/api/session", query, requestOptions);
158
+ },
159
+ stats: async (input, requestOptions) => {
160
+ const query = {};
161
+ if (input !== null && typeof input === "object") {
162
+ for (const key of ["from", "to", "project", "timezone", "tools"]) {
163
+ const value = input[key];
164
+ if (typeof value === "string" || typeof value === "number")
165
+ query[key] = value;
166
+ }
167
+ }
168
+ try {
169
+ const body = await get("/api/experimental/session/stats", query, requestOptions);
170
+ if (typeof body === "object" &&
171
+ body !== null &&
172
+ "data" in body &&
173
+ !("range" in body)) {
174
+ return body.data;
175
+ }
176
+ return body;
177
+ }
178
+ catch (error) {
179
+ if (statusOf(error) !== 404)
180
+ throw error;
181
+ const fallback = await get("/api/session/stats", query, requestOptions);
182
+ if (typeof fallback === "object" &&
183
+ fallback !== null &&
184
+ "data" in fallback &&
185
+ !("range" in fallback)) {
186
+ return fallback.data;
187
+ }
188
+ return fallback;
189
+ }
190
+ },
191
+ },
192
+ message: {
193
+ list: async (input, requestOptions) => {
194
+ const record = (input ?? {});
195
+ const sessionID = record.sessionID;
196
+ if (typeof sessionID !== "string" || sessionID.length === 0) {
197
+ throw new Error("message list requires a sessionID");
198
+ }
199
+ const query = {};
200
+ for (const key of ["limit", "cursor", "order", "type"]) {
201
+ const value = record[key];
202
+ if (typeof value === "string" || typeof value === "number")
203
+ query[key] = value;
204
+ }
205
+ return get(`/api/session/${encodeURIComponent(sessionID)}/message`, query, requestOptions);
206
+ },
207
+ },
208
+ project: {
209
+ list: async (requestOptions) => {
210
+ return get("/api/project", {}, requestOptions);
211
+ },
212
+ },
213
+ };
214
+ }
215
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/opencode/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQxE,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;AASD,KAAK,UAAU,gBAAgB,CAAC,IAAa;IAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,kBAAkB,EAAE,CAAC;IAC1C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QAC3D,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChF,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACxD,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,YAAiC;IACjE,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,GAAG,CAAC,YAAY,CAAC,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;KACjG,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAA2B,EAAE,OAAwB;IAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB;IACrC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,QAAkB,EAClB,IAAY,EACZ,KAAkD,EAClD,OAAgC,EAChC,MAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC7C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE;QACjE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC,CAAC;QACxF,KAA4C,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtE,KAA4C,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAClE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,QAAkB,EAClB,OAAgC,EAChC,MAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAA4B,CAAC;QACtG,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkC,EAAE;IAEpC,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAC7B,QAAQ,EACR,aAAa,EACb,EAAE,EACF,OAAO,EACP,OAAO,CAAC,MAAM,CACf,CAA4B,CAAC;YAC9B,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACpF,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC/D,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAiB,EAAE,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,MAAM,GAAI,KAAiC,CAAC,MAAM,CAAC;IACzD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,UAAwD,EAAE;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAElD,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,KAAkD,EAAE,cAAqC;QACxH,MAAM,MAAM,GAAI,cAAuD,EAAE,MAAM,CAAC;QAChF,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,GAAG,EAAE,KAAK,EAAE,cAAyC,EAAoB,EAAE;gBACzE,IAAI,CAAC;oBACH,OAAO,MAAM,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG;wBAAE,MAAM,KAAK,CAAC;oBACzC,OAAO,GAAG,CAAC,aAAa,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK,EAAE,KAA+B,EAAE,cAAyC,EAAoB,EAAE;gBAC3G,MAAM,KAAK,GAAgD,EAAE,CAAC;gBAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;wBACrH,MAAM,KAAK,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;wBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;4BAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YACpD,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,KAA+B,EAAE,cAAyC,EAAoB,EAAE;gBAC5G,MAAM,KAAK,GAAgD,EAAE,CAAC;gBAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChD,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;wBACjE,MAAM,KAAK,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;wBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;4BAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,iCAAiC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;oBACjF,IACE,OAAO,IAAI,KAAK,QAAQ;wBACxB,IAAI,KAAK,IAAI;wBACb,MAAM,IAAK,IAAgC;wBAC3C,CAAC,CAAC,OAAO,IAAK,IAAgC,CAAC,EAC/C,CAAC;wBACD,OAAQ,IAAgC,CAAC,IAAI,CAAC;oBAChD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG;wBAAE,MAAM,KAAK,CAAC;oBACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;oBACxE,IACE,OAAO,QAAQ,KAAK,QAAQ;wBAC5B,QAAQ,KAAK,IAAI;wBACjB,MAAM,IAAK,QAAoC;wBAC/C,CAAC,CAAC,OAAO,IAAK,QAAoC,CAAC,EACnD,CAAC;wBACD,OAAQ,QAAoC,CAAC,IAAI,CAAC;oBACpD,CAAC;oBACD,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK,EAAE,KAA+B,EAAE,cAAyC,EAAoB,EAAE;gBAC3G,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;gBACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5D,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,KAAK,GAAgD,EAAE,CAAC;gBAC9D,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;oBACvD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACjF,CAAC;gBACD,OAAO,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YAC7F,CAAC;SACF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK,EAAE,cAAyC,EAAoB,EAAE;gBAC1E,OAAO,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}