@opencode/client 2.0.28 → 2.0.30

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 (59) hide show
  1. package/dist/chunks/{service-probe-q4g3afnw.js → rpc-runtime-0vrbw414.js} +6 -6
  2. package/dist/chunks/{service-probe-1y4a697q.js → rpc-runtime-1y4a697q.js} +1 -1
  3. package/dist/chunks/{service-probe-2ny4vxct.js → rpc-runtime-2ny4vxct.js} +2 -2
  4. package/dist/chunks/{service-probe-gx9wnkzr.js → rpc-runtime-5n64m9fb.js} +1 -1
  5. package/dist/chunks/{service-probe-z6qdwcsf.js → rpc-runtime-65kht65h.js} +5 -5
  6. package/dist/chunks/rpc-runtime-8s2anffy.js +11 -0
  7. package/dist/chunks/{service-probe-ecs5ftka.js → rpc-runtime-ecs5ftka.js} +2 -2
  8. package/dist/chunks/{service-probe-frbwqjmf.js → rpc-runtime-frbwqjmf.js} +1 -1
  9. package/dist/chunks/{service-probe-wjyeq25y.js → rpc-runtime-gzm3wsgd.js} +4 -4
  10. package/dist/chunks/{service-probe-7x67cf1q.js → rpc-runtime-h04kvgxv.js} +9 -9
  11. package/dist/chunks/{service-probe-9vdz0zwn.js → rpc-runtime-m77rqa4a.js} +48 -8
  12. package/dist/chunks/{service-probe-t1xa31vm.js → rpc-runtime-t1xa31vm.js} +1 -1
  13. package/dist/contract.js +1 -1
  14. package/dist/effect/client.js +8 -8
  15. package/dist/effect/generated/client-error.js +1 -1
  16. package/dist/effect/generated/client.js +5 -5
  17. package/dist/effect/generated/index.js +4 -4
  18. package/dist/effect/index.js +8 -8
  19. package/dist/effect/rpc.js +4 -4
  20. package/dist/effect/service.js +6 -6
  21. package/dist/promise/client.js +7 -7
  22. package/dist/promise/generated/client-error.js +1 -1
  23. package/dist/promise/generated/client.js +2 -2
  24. package/dist/promise/generated/index.js +4 -4
  25. package/dist/promise/generated/types.d.ts +6 -1
  26. package/dist/promise/generated/types.js +1 -1
  27. package/dist/promise/index.js +8 -8
  28. package/dist/promise/rpc.js +2 -2
  29. package/dist/promise/service.js +6 -6
  30. package/dist/pty-handoff.js +1 -1
  31. package/dist/rpc-runtime.js +1 -1
  32. package/dist/service-contender.js +1 -1
  33. package/dist/service-probe.js +3 -3
  34. package/dist/service-timing.js +1 -1
  35. package/dist/service-version.js +1 -1
  36. package/dist/service.js +1 -1
  37. package/dist/shared-events.js +1 -1
  38. package/dist/solid/connection.js +1 -1
  39. package/dist/solid/data.js +9 -9
  40. package/dist/solid/index.d.ts +1 -0
  41. package/dist/solid/index.js +15 -11
  42. package/dist/solid/pty.js +1 -1
  43. package/dist/solid/usage.d.ts +9 -0
  44. package/dist/solid/usage.js +6 -0
  45. package/package.json +4 -4
  46. /package/dist/chunks/{service-probe-6mptkzbc.js → rpc-runtime-6mptkzbc.js} +0 -0
  47. /package/dist/chunks/{service-probe-9rqn6x4v.js → rpc-runtime-9rqn6x4v.js} +0 -0
  48. /package/dist/chunks/{service-probe-gne7h7mq.js → rpc-runtime-gne7h7mq.js} +0 -0
  49. /package/dist/chunks/{service-probe-m2eywc8w.js → rpc-runtime-m2eywc8w.js} +0 -0
  50. /package/dist/chunks/{service-probe-nwcpakzx.js → rpc-runtime-nwcpakzx.js} +0 -0
  51. /package/dist/chunks/{service-probe-qav6mfdz.js → rpc-runtime-qav6mfdz.js} +0 -0
  52. /package/dist/chunks/{service-probe-sxt88q69.js → rpc-runtime-sxt88q69.js} +0 -0
  53. /package/dist/chunks/{service-probe-ve4aws36.js → rpc-runtime-ve4aws36.js} +0 -0
  54. /package/dist/chunks/{service-probe-vmytr4q8.js → rpc-runtime-vmytr4q8.js} +0 -0
  55. /package/dist/chunks/{service-probe-vt9jbch8.js → rpc-runtime-vt9jbch8.js} +0 -0
  56. /package/dist/chunks/{service-probe-vyas3vgt.js → rpc-runtime-vyas3vgt.js} +0 -0
  57. /package/dist/chunks/{service-probe-xgnj2w4v.js → rpc-runtime-xgnj2w4v.js} +0 -0
  58. /package/dist/chunks/{service-probe-y2etg5bs.js → rpc-runtime-y2etg5bs.js} +0 -0
  59. /package/dist/chunks/{service-probe-ydhz1zrh.js → rpc-runtime-ydhz1zrh.js} +0 -0
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  ClientApi2
3
- } from "./service-probe-vmytr4q8.js";
3
+ } from "./rpc-runtime-vmytr4q8.js";
4
4
  import {
5
5
  ClientError2
6
- } from "./service-probe-y2etg5bs.js";
6
+ } from "./rpc-runtime-y2etg5bs.js";
7
7
  import {
8
8
  __export
9
- } from "./service-probe-9rqn6x4v.js";
9
+ } from "./rpc-runtime-9rqn6x4v.js";
10
10
 
11
11
  // src/effect/generated/client.ts
12
12
  var exports_client2 = {};
13
13
  __export(exports_client2, {
14
- make: () => make3
14
+ make: () => make4
15
15
  });
16
16
  import { Effect, Stream, Schema } from "effect";
17
17
  import { Sse } from "effect/encoding";
@@ -618,6 +618,6 @@ var adaptClient = (raw) => ({
618
618
  websearch: adaptGroupWebsearch(raw["server.websearch"]),
619
619
  config: adaptGroupConfig(raw["server.config"])
620
620
  });
621
- var make3 = (options) => HttpApiClient.make(ClientApi2, options).pipe(Effect.map(adaptClient));
621
+ var make4 = (options) => HttpApiClient.make(ClientApi2, options).pipe(Effect.map(adaptClient));
622
622
 
623
- export { make3, exports_client2 };
623
+ export { make4, exports_client2 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isRpcError2,
3
3
  isRpcInternalError2
4
- } from "./service-probe-vt9jbch8.js";
4
+ } from "./rpc-runtime-vt9jbch8.js";
5
5
 
6
6
  // src/promise/rpc.ts
7
7
  function makeRpc2(raw, events) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  defaultEnsureTiming2
3
- } from "./service-probe-xgnj2w4v.js";
3
+ } from "./rpc-runtime-xgnj2w4v.js";
4
4
  import {
5
5
  matchesVersion2
6
- } from "./service-probe-sxt88q69.js";
6
+ } from "./rpc-runtime-sxt88q69.js";
7
7
 
8
8
  // src/service-probe.ts
9
9
  import { homedir } from "node:os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./service-probe-9rqn6x4v.js";
3
+ } from "./rpc-runtime-9rqn6x4v.js";
4
4
 
5
5
  // src/pty-handoff.ts
6
6
  var exports_pty_handoff = {};
@@ -3,20 +3,20 @@ import {
3
3
  readError2,
4
4
  event2,
5
5
  eventType2
6
- } from "./service-probe-t1xa31vm.js";
6
+ } from "./rpc-runtime-t1xa31vm.js";
7
7
  import {
8
8
  __export
9
- } from "./service-probe-9rqn6x4v.js";
9
+ } from "./rpc-runtime-9rqn6x4v.js";
10
10
 
11
11
  // src/effect/rpc.ts
12
12
  var exports_rpc = {};
13
13
  __export(exports_rpc, {
14
14
  RpcClientRuntime: () => exports_rpc,
15
15
  aborted: () => aborted2,
16
- make: () => make4
16
+ make: () => make3
17
17
  });
18
18
  import { Effect, Stream } from "effect";
19
- function make4(call, subscribe) {
19
+ function make3(call, subscribe) {
20
20
  return (definition) => {
21
21
  const methods = Object.fromEntries(Object.entries(definition.methods).map(([name, method]) => [
22
22
  name,
@@ -59,4 +59,4 @@ function aborted2(signal) {
59
59
  });
60
60
  }
61
61
 
62
- export { make4, aborted2, exports_rpc };
62
+ export { make3, aborted2, exports_rpc };
@@ -0,0 +1,11 @@
1
+ // src/solid/usage.ts
2
+ function lastAssistantWithUsage2(messages, boundary) {
3
+ const boundaryIndex = boundary ? messages.findIndex((message) => message.id === boundary) : -1;
4
+ if (boundary && boundaryIndex === -1)
5
+ return;
6
+ const end = boundaryIndex === -1 ? messages.length : boundaryIndex;
7
+ const compactionIndex = messages.findLastIndex((message, index) => message.type === "compaction" && message.status === "completed" && index < end);
8
+ return messages.findLast((message, index) => message.type === "assistant" && message.tokens !== undefined && index > compactionIndex && index < end);
9
+ }
10
+
11
+ export { lastAssistantWithUsage2 };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ClientError3
3
- } from "./service-probe-nwcpakzx.js";
3
+ } from "./rpc-runtime-nwcpakzx.js";
4
4
  import {
5
5
  __export
6
- } from "./service-probe-9rqn6x4v.js";
6
+ } from "./rpc-runtime-9rqn6x4v.js";
7
7
 
8
8
  // src/promise/generated/client.ts
9
9
  var exports_client4 = {};
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./service-probe-9rqn6x4v.js";
3
+ } from "./rpc-runtime-9rqn6x4v.js";
4
4
 
5
5
  // src/shared-events.ts
6
6
  var exports_shared_events = {};
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  make7
3
- } from "./service-probe-frbwqjmf.js";
3
+ } from "./rpc-runtime-frbwqjmf.js";
4
4
  import {
5
5
  make6
6
- } from "./service-probe-ecs5ftka.js";
6
+ } from "./rpc-runtime-ecs5ftka.js";
7
7
  import {
8
8
  makeRpc2
9
- } from "./service-probe-1y4a697q.js";
9
+ } from "./rpc-runtime-1y4a697q.js";
10
10
  import {
11
11
  __export
12
- } from "./service-probe-9rqn6x4v.js";
12
+ } from "./rpc-runtime-9rqn6x4v.js";
13
13
 
14
14
  // src/promise/client.ts
15
15
  var exports_client3 = {};
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  make7
3
- } from "./service-probe-frbwqjmf.js";
3
+ } from "./rpc-runtime-frbwqjmf.js";
4
4
  import {
5
5
  ClientError2
6
- } from "./service-probe-y2etg5bs.js";
6
+ } from "./rpc-runtime-y2etg5bs.js";
7
7
  import {
8
- make3
9
- } from "./service-probe-q4g3afnw.js";
8
+ make4
9
+ } from "./rpc-runtime-0vrbw414.js";
10
10
  import {
11
- make4,
11
+ make3,
12
12
  aborted2
13
- } from "./service-probe-z6qdwcsf.js";
13
+ } from "./rpc-runtime-65kht65h.js";
14
14
  import {
15
15
  __export
16
- } from "./service-probe-9rqn6x4v.js";
16
+ } from "./rpc-runtime-9rqn6x4v.js";
17
17
 
18
18
  // src/effect/client.ts
19
19
  var exports_client = {};
@@ -30,7 +30,7 @@ var CurrentHeaders = Context.Reference("@opencode/client/effect/rpc/headers", {
30
30
  });
31
31
  var make2 = Effect.fn("OpenCode.make")(function* (options) {
32
32
  const httpClient = yield* HttpClient.HttpClient;
33
- const raw = yield* make3(options).pipe(Effect.provideService(HttpClient.HttpClient, HttpClient.mapRequestEffect(httpClient, (request) => Effect.map(CurrentHeaders, (headers) => headers ? HttpClientRequest.setHeaders(request, new Headers(headers)) : request))));
33
+ const raw = yield* make4(options).pipe(Effect.provideService(HttpClient.HttpClient, HttpClient.mapRequestEffect(httpClient, (request) => Effect.map(CurrentHeaders, (headers) => headers ? HttpClientRequest.setHeaders(request, new Headers(headers)) : request))));
34
34
  const context = yield* Effect.context();
35
35
  const native = raw.event.subscribe();
36
36
 
@@ -45,7 +45,7 @@ var make2 = Effect.fn("OpenCode.make")(function* (options) {
45
45
  return {
46
46
  ...raw,
47
47
  event: { ...raw.event, subscribe },
48
- rpc: Object.assign(make4((input, options) => raw.rpc.call(input).pipe(Effect.provideService(CurrentHeaders, options?.headers)), subscribe), raw.rpc)
48
+ rpc: Object.assign(make3((input, options) => raw.rpc.call(input).pipe(Effect.provideService(CurrentHeaders, options?.headers)), subscribe), raw.rpc)
49
49
  };
50
50
  });
51
51
 
@@ -2,7 +2,7 @@ import {
2
2
  isFormNotFoundError2,
3
3
  isFormAlreadySettledError2,
4
4
  isPermissionNotFoundError2
5
- } from "./service-probe-vt9jbch8.js";
5
+ } from "./rpc-runtime-vt9jbch8.js";
6
6
 
7
7
  // src/solid/data.ts
8
8
  import { Worktree } from "@opencode/schema/worktree";
@@ -19,6 +19,32 @@ function locationKey2(location) {
19
19
  function locationQuery(ref) {
20
20
  return { directory: ref.directory };
21
21
  }
22
+ function optimisticFiles(files) {
23
+ const items = files?.flatMap((file) => {
24
+ if (!file.uri.startsWith("data:"))
25
+ return [];
26
+ const comma = file.uri.indexOf(",");
27
+ if (comma < 0)
28
+ return [];
29
+ const header = file.uri.slice(5, comma);
30
+ const parts = header.split(";");
31
+ if (!parts.slice(1).some((part) => part.toLowerCase() === "base64"))
32
+ return [];
33
+ const item = {
34
+ data: file.uri.slice(comma + 1),
35
+ mime: parts[0] || "application/octet-stream",
36
+ source: { type: "inline" }
37
+ };
38
+ if (file.name !== undefined)
39
+ item.name = file.name;
40
+ if (file.description !== undefined)
41
+ item.description = file.description;
42
+ if (file.mention !== undefined)
43
+ item.mention = { ...file.mention };
44
+ return [item];
45
+ });
46
+ return items?.length ? items : undefined;
47
+ }
22
48
  function formRequestOptions(sessionID, ref) {
23
49
  if (sessionID !== "global" || !ref)
24
50
  return;
@@ -89,6 +115,7 @@ function createSync() {
89
115
  }
90
116
  };
91
117
  }
118
+ var CHILD_PAGE = 200;
92
119
  function createData2(config) {
93
120
  const api = config.api;
94
121
  let disposed = false;
@@ -324,6 +351,12 @@ function createData2(config) {
324
351
  messageIndex.set(sessionID, created);
325
352
  return created;
326
353
  }
354
+ async function listChildren(input) {
355
+ const page = await api().session.list(input);
356
+ if (page.data.length < CHILD_PAGE || !page.cursor.next)
357
+ return page.data;
358
+ return [...page.data, ...await listChildren({ cursor: page.cursor.next, limit: CHILD_PAGE })];
359
+ }
327
360
  function resolveRoot(sessionID) {
328
361
  let current = sessionID;
329
362
  let parentID = store.session.info[sessionID]?.parentID;
@@ -467,7 +500,8 @@ function createData2(config) {
467
500
  });
468
501
  return;
469
502
  }
470
- case "session.model.selected":
503
+ case "session.model.selected": {
504
+ const previous = event.data.previous ?? store.session.info[event.data.sessionID]?.model;
471
505
  if (store.session.info[event.data.sessionID])
472
506
  setStore("session", "info", event.data.sessionID, "model", event.data.model);
473
507
  if (!store.session.message[event.data.sessionID])
@@ -476,6 +510,7 @@ function createData2(config) {
476
510
  id: messageIDFromEvent(event.id),
477
511
  type: "model-switched",
478
512
  model: event.data.model,
513
+ previous,
479
514
  time: { created: event.created }
480
515
  });
481
516
  refresh(() => api().session.message.get({ sessionID: event.data.sessionID, messageID: messageIDFromEvent(event.id) }).then((item) => {
@@ -487,6 +522,7 @@ function createData2(config) {
487
522
  });
488
523
  }));
489
524
  return;
525
+ }
490
526
  case "session.renamed": {
491
527
  refresh(() => {
492
528
  const family = sync.pending(`session.family:${event.data.sessionID}`) ? result.session.sync(event.data.sessionID, { children: true }) : Promise.resolve();
@@ -1310,6 +1346,14 @@ function createData2(config) {
1310
1346
  const id = request.id ?? SessionMessage.ID.create();
1311
1347
  const fresh = !messageIndex.get(request.sessionID)?.has(id) && !store.session.pending[request.sessionID]?.some((item) => item.id === id);
1312
1348
  if (fresh) {
1349
+ const files = optimisticFiles(request.files);
1350
+ const payload = {
1351
+ text: request.text,
1352
+ agents: request.agents?.map((agent) => ({ ...agent })),
1353
+ metadata: request.metadata
1354
+ };
1355
+ if (files)
1356
+ payload.files = files;
1313
1357
  outbox.add(id);
1314
1358
  admitLocal({
1315
1359
  id,
@@ -1317,11 +1361,7 @@ function createData2(config) {
1317
1361
  time: { created: Date.now() },
1318
1362
  type: "user",
1319
1363
  delivery: request.delivery ?? "steer",
1320
- payload: {
1321
- text: request.text,
1322
- agents: request.agents?.map((agent) => ({ ...agent })),
1323
- metadata: request.metadata
1324
- }
1364
+ payload
1325
1365
  });
1326
1366
  }
1327
1367
  return sendAdmission(request.sessionID, async () => {
@@ -1337,7 +1377,7 @@ function createData2(config) {
1337
1377
  return sync.run(options?.children ? `session.family:${sessionID}` : `session:${sessionID}`, async () => {
1338
1378
  const [info, children] = await Promise.all([
1339
1379
  api().session.get({ sessionID }),
1340
- options?.children ? api().session.list({ parentID: sessionID, order: "desc" }).then((response) => response.data) : []
1380
+ options?.children ? listChildren({ parentID: sessionID, order: "desc", limit: CHILD_PAGE }) : []
1341
1381
  ]);
1342
1382
  const sessions = [info, ...children];
1343
1383
  batch(() => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./service-probe-9rqn6x4v.js";
3
+ } from "./rpc-runtime-9rqn6x4v.js";
4
4
 
5
5
  // src/rpc-runtime.ts
6
6
  var exports_rpc_runtime = {};
package/dist/contract.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  effectOmitEndpoints2,
4
4
  groupNames2,
5
5
  promiseOmitEndpoints2
6
- } from "./chunks/service-probe-vmytr4q8.js";
6
+ } from "./chunks/rpc-runtime-vmytr4q8.js";
7
7
  export {
8
8
  ClientApi2 as ClientApi,
9
9
  effectOmitEndpoints2 as effectOmitEndpoints,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  make2,
3
3
  exports_client
4
- } from "../chunks/service-probe-7x67cf1q.js";
5
- import"../chunks/service-probe-6mptkzbc.js";
6
- import"../chunks/service-probe-q4g3afnw.js";
7
- import"../chunks/service-probe-y2etg5bs.js";
8
- import"../chunks/service-probe-z6qdwcsf.js";
9
- import"../chunks/service-probe-t1xa31vm.js";
10
- import"../chunks/service-probe-vmytr4q8.js";
11
- import"../chunks/service-probe-frbwqjmf.js";
4
+ } from "../chunks/rpc-runtime-h04kvgxv.js";
5
+ import"../chunks/rpc-runtime-65kht65h.js";
6
+ import"../chunks/rpc-runtime-6mptkzbc.js";
7
+ import"../chunks/rpc-runtime-0vrbw414.js";
8
+ import"../chunks/rpc-runtime-y2etg5bs.js";
9
+ import"../chunks/rpc-runtime-frbwqjmf.js";
10
+ import"../chunks/rpc-runtime-t1xa31vm.js";
11
+ import"../chunks/rpc-runtime-vmytr4q8.js";
12
12
  export {
13
13
  exports_client as OpenCode,
14
14
  make2 as make
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ClientError2
3
- } from "../../chunks/service-probe-y2etg5bs.js";
3
+ } from "../../chunks/rpc-runtime-y2etg5bs.js";
4
4
  export {
5
5
  ClientError2 as ClientError
6
6
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
- make3
3
- } from "../../chunks/service-probe-q4g3afnw.js";
4
- import"../../chunks/service-probe-y2etg5bs.js";
5
- import"../../chunks/service-probe-vmytr4q8.js";
2
+ make4
3
+ } from "../../chunks/rpc-runtime-0vrbw414.js";
4
+ import"../../chunks/rpc-runtime-y2etg5bs.js";
5
+ import"../../chunks/rpc-runtime-vmytr4q8.js";
6
6
  export {
7
- make3 as make
7
+ make4 as make
8
8
  };
@@ -1,11 +1,11 @@
1
- import"../../chunks/service-probe-6mptkzbc.js";
1
+ import"../../chunks/rpc-runtime-6mptkzbc.js";
2
2
  import {
3
3
  exports_client2
4
- } from "../../chunks/service-probe-q4g3afnw.js";
4
+ } from "../../chunks/rpc-runtime-0vrbw414.js";
5
5
  import {
6
6
  ClientError2
7
- } from "../../chunks/service-probe-y2etg5bs.js";
8
- import"../../chunks/service-probe-vmytr4q8.js";
7
+ } from "../../chunks/rpc-runtime-y2etg5bs.js";
8
+ import"../../chunks/rpc-runtime-vmytr4q8.js";
9
9
  export {
10
10
  ClientError2 as ClientError,
11
11
  exports_client2 as OpenCode
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  ClientError2
3
- } from "../chunks/service-probe-y2etg5bs.js";
4
- import"../chunks/service-probe-vmytr4q8.js";
5
- import"../chunks/service-probe-q4g3afnw.js";
6
- import"../chunks/service-probe-6mptkzbc.js";
7
- import"../chunks/service-probe-frbwqjmf.js";
8
- import"../chunks/service-probe-t1xa31vm.js";
9
- import"../chunks/service-probe-z6qdwcsf.js";
3
+ } from "../chunks/rpc-runtime-y2etg5bs.js";
4
+ import"../chunks/rpc-runtime-vmytr4q8.js";
5
+ import"../chunks/rpc-runtime-0vrbw414.js";
6
+ import"../chunks/rpc-runtime-6mptkzbc.js";
7
+ import"../chunks/rpc-runtime-frbwqjmf.js";
8
+ import"../chunks/rpc-runtime-t1xa31vm.js";
9
+ import"../chunks/rpc-runtime-65kht65h.js";
10
10
  import {
11
11
  exports_client
12
- } from "../chunks/service-probe-7x67cf1q.js";
12
+ } from "../chunks/rpc-runtime-h04kvgxv.js";
13
13
 
14
14
  // src/effect/index.ts
15
15
  import { Agent } from "@opencode/schema/agent";
@@ -1,11 +1,11 @@
1
1
  import {
2
- make4,
2
+ make3,
3
3
  aborted2,
4
4
  exports_rpc
5
- } from "../chunks/service-probe-z6qdwcsf.js";
6
- import"../chunks/service-probe-t1xa31vm.js";
5
+ } from "../chunks/rpc-runtime-65kht65h.js";
6
+ import"../chunks/rpc-runtime-t1xa31vm.js";
7
7
  export {
8
8
  exports_rpc as RpcClientRuntime,
9
9
  aborted2 as aborted,
10
- make4 as make
10
+ make3 as make
11
11
  };
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  spawnServiceContender2,
3
3
  contenderPool2
4
- } from "../chunks/service-probe-ve4aws36.js";
4
+ } from "../chunks/rpc-runtime-ve4aws36.js";
5
5
  import {
6
6
  defaultEnsureTiming2,
7
7
  ensureTiming2
8
- } from "../chunks/service-probe-xgnj2w4v.js";
8
+ } from "../chunks/rpc-runtime-xgnj2w4v.js";
9
9
  import {
10
10
  matchesVersion2
11
- } from "../chunks/service-probe-sxt88q69.js";
11
+ } from "../chunks/rpc-runtime-sxt88q69.js";
12
12
  import {
13
13
  prepare2,
14
14
  environment2,
15
15
  complete2,
16
16
  clear2
17
- } from "../chunks/service-probe-gx9wnkzr.js";
17
+ } from "../chunks/rpc-runtime-5n64m9fb.js";
18
18
  import {
19
19
  decide2,
20
20
  fallback2,
21
21
  same2,
22
22
  probeResult2,
23
23
  headers2
24
- } from "../chunks/service-probe-2ny4vxct.js";
25
- import"../chunks/service-probe-qav6mfdz.js";
24
+ } from "../chunks/rpc-runtime-2ny4vxct.js";
25
+ import"../chunks/rpc-runtime-qav6mfdz.js";
26
26
 
27
27
  // src/effect/service.ts
28
28
  import { Effect, FileSystem, Option, Schedule, Schema } from "effect";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  make5,
3
3
  exports_client3
4
- } from "../chunks/service-probe-wjyeq25y.js";
5
- import"../chunks/service-probe-vyas3vgt.js";
6
- import"../chunks/service-probe-ecs5ftka.js";
7
- import"../chunks/service-probe-1y4a697q.js";
8
- import"../chunks/service-probe-nwcpakzx.js";
9
- import"../chunks/service-probe-vt9jbch8.js";
10
- import"../chunks/service-probe-frbwqjmf.js";
4
+ } from "../chunks/rpc-runtime-gzm3wsgd.js";
5
+ import"../chunks/rpc-runtime-vyas3vgt.js";
6
+ import"../chunks/rpc-runtime-ecs5ftka.js";
7
+ import"../chunks/rpc-runtime-nwcpakzx.js";
8
+ import"../chunks/rpc-runtime-frbwqjmf.js";
9
+ import"../chunks/rpc-runtime-1y4a697q.js";
10
+ import"../chunks/rpc-runtime-vt9jbch8.js";
11
11
  export {
12
12
  exports_client3 as OpenCode,
13
13
  make5 as make
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ClientError3
3
- } from "../../chunks/service-probe-nwcpakzx.js";
3
+ } from "../../chunks/rpc-runtime-nwcpakzx.js";
4
4
  export {
5
5
  ClientError3 as ClientError
6
6
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  make6
3
- } from "../../chunks/service-probe-ecs5ftka.js";
4
- import"../../chunks/service-probe-nwcpakzx.js";
3
+ } from "../../chunks/rpc-runtime-ecs5ftka.js";
4
+ import"../../chunks/rpc-runtime-nwcpakzx.js";
5
5
  export {
6
6
  make6 as make
7
7
  };
@@ -1,10 +1,10 @@
1
- import"../../chunks/service-probe-vyas3vgt.js";
1
+ import"../../chunks/rpc-runtime-vyas3vgt.js";
2
2
  import {
3
3
  exports_client4
4
- } from "../../chunks/service-probe-ecs5ftka.js";
4
+ } from "../../chunks/rpc-runtime-ecs5ftka.js";
5
5
  import {
6
6
  ClientError3
7
- } from "../../chunks/service-probe-nwcpakzx.js";
7
+ } from "../../chunks/rpc-runtime-nwcpakzx.js";
8
8
  import {
9
9
  isInvalidRequestError2,
10
10
  isUnauthorizedError2,
@@ -39,7 +39,7 @@ import {
39
39
  isShellNotFoundError2,
40
40
  isWorktreeError2,
41
41
  isVcsInitNotSupportedError2
42
- } from "../../chunks/service-probe-vt9jbch8.js";
42
+ } from "../../chunks/rpc-runtime-vt9jbch8.js";
43
43
  export {
44
44
  ClientError3 as ClientError,
45
45
  exports_client4 as OpenCode,
@@ -2481,7 +2481,7 @@ export type TuiCommandExecute = {
2481
2481
  type: "tui.command.execute";
2482
2482
  location?: LocationRef;
2483
2483
  data: {
2484
- command: "session.list" | "session.new" | "session.share" | "session.interrupt" | "session.background" | "session.compact" | "session.page.up" | "session.page.down" | "session.line.up" | "session.line.down" | "session.half.page.up" | "session.half.page.down" | "session.first" | "session.last" | "prompt.clear" | "prompt.submit" | "agent.cycle" | (string & {});
2484
+ command: "session.list" | "session.new" | "session.interrupt" | "session.background" | "session.compact" | "session.page.up" | "session.page.down" | "session.line.up" | "session.line.down" | "session.half.page.up" | "session.half.page.down" | "session.first" | "session.last" | "prompt.clear" | "prompt.submit" | "agent.cycle" | (string & {});
2485
2485
  };
2486
2486
  };
2487
2487
  export type TuiToastShow = {
@@ -2952,6 +2952,11 @@ export type ConfigEntry = {
2952
2952
  };
2953
2953
  username?: string;
2954
2954
  permissions?: PermissionRuleset;
2955
+ policies?: Array<{
2956
+ action: "provider.use" | "tool.use" | "integration.use";
2957
+ resource: string;
2958
+ effect: "allow" | "deny";
2959
+ }>;
2955
2960
  agents?: {
2956
2961
  [x: string]: {
2957
2962
  model?: string | {
@@ -32,7 +32,7 @@ import {
32
32
  isShellNotFoundError2,
33
33
  isWorktreeError2,
34
34
  isVcsInitNotSupportedError2
35
- } from "../../chunks/service-probe-vt9jbch8.js";
35
+ } from "../../chunks/rpc-runtime-vt9jbch8.js";
36
36
  export {
37
37
  isAgentNotFoundError2 as isAgentNotFoundError,
38
38
  isCommandExecutionError2 as isCommandExecutionError,
@@ -1,13 +1,14 @@
1
- import"../chunks/service-probe-m2eywc8w.js";
1
+ import"../chunks/rpc-runtime-m2eywc8w.js";
2
2
  import {
3
3
  exports_client3
4
- } from "../chunks/service-probe-wjyeq25y.js";
5
- import"../chunks/service-probe-vyas3vgt.js";
6
- import"../chunks/service-probe-ecs5ftka.js";
7
- import"../chunks/service-probe-1y4a697q.js";
4
+ } from "../chunks/rpc-runtime-gzm3wsgd.js";
5
+ import"../chunks/rpc-runtime-vyas3vgt.js";
6
+ import"../chunks/rpc-runtime-ecs5ftka.js";
8
7
  import {
9
8
  ClientError3
10
- } from "../chunks/service-probe-nwcpakzx.js";
9
+ } from "../chunks/rpc-runtime-nwcpakzx.js";
10
+ import"../chunks/rpc-runtime-frbwqjmf.js";
11
+ import"../chunks/rpc-runtime-1y4a697q.js";
11
12
  import {
12
13
  isInvalidRequestError2,
13
14
  isUnauthorizedError2,
@@ -42,8 +43,7 @@ import {
42
43
  isShellNotFoundError2,
43
44
  isWorktreeError2,
44
45
  isVcsInitNotSupportedError2
45
- } from "../chunks/service-probe-vt9jbch8.js";
46
- import"../chunks/service-probe-frbwqjmf.js";
46
+ } from "../chunks/rpc-runtime-vt9jbch8.js";
47
47
  export {
48
48
  ClientError3 as ClientError,
49
49
  exports_client3 as OpenCode,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  makeRpc2
3
- } from "../chunks/service-probe-1y4a697q.js";
4
- import"../chunks/service-probe-vt9jbch8.js";
3
+ } from "../chunks/rpc-runtime-1y4a697q.js";
4
+ import"../chunks/rpc-runtime-vt9jbch8.js";
5
5
  export {
6
6
  makeRpc2 as makeRpc
7
7
  };
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  spawnServiceContender2,
3
3
  contenderPool2
4
- } from "../chunks/service-probe-ve4aws36.js";
4
+ } from "../chunks/rpc-runtime-ve4aws36.js";
5
5
  import {
6
6
  defaultEnsureTiming2,
7
7
  ensureTiming2
8
- } from "../chunks/service-probe-xgnj2w4v.js";
8
+ } from "../chunks/rpc-runtime-xgnj2w4v.js";
9
9
  import {
10
10
  matchesVersion2
11
- } from "../chunks/service-probe-sxt88q69.js";
11
+ } from "../chunks/rpc-runtime-sxt88q69.js";
12
12
  import {
13
13
  prepare2,
14
14
  environment2,
15
15
  complete2,
16
16
  clear2
17
- } from "../chunks/service-probe-gx9wnkzr.js";
17
+ } from "../chunks/rpc-runtime-5n64m9fb.js";
18
18
  import {
19
19
  decide2,
20
20
  fallback2,
21
21
  same2,
22
22
  probeResult2,
23
23
  headers2
24
- } from "../chunks/service-probe-2ny4vxct.js";
25
- import"../chunks/service-probe-qav6mfdz.js";
24
+ } from "../chunks/rpc-runtime-2ny4vxct.js";
25
+ import"../chunks/rpc-runtime-qav6mfdz.js";
26
26
 
27
27
  // src/promise/service.ts
28
28
  import { readFile, rm } from "node:fs/promises";
@@ -4,7 +4,7 @@ import {
4
4
  complete2,
5
5
  clear2,
6
6
  exports_pty_handoff
7
- } from "./chunks/service-probe-gx9wnkzr.js";
7
+ } from "./chunks/rpc-runtime-5n64m9fb.js";
8
8
  export {
9
9
  exports_pty_handoff as PtyHandoff,
10
10
  clear2 as clear,
@@ -4,7 +4,7 @@ import {
4
4
  event2,
5
5
  eventType2,
6
6
  exports_rpc_runtime
7
- } from "./chunks/service-probe-t1xa31vm.js";
7
+ } from "./chunks/rpc-runtime-t1xa31vm.js";
8
8
  export {
9
9
  exports_rpc_runtime as RpcRuntime,
10
10
  event2 as event,
@@ -2,7 +2,7 @@ import {
2
2
  spawnServiceContender2,
3
3
  contenderPool2,
4
4
  contenderFinished2
5
- } from "./chunks/service-probe-ve4aws36.js";
5
+ } from "./chunks/rpc-runtime-ve4aws36.js";
6
6
  export {
7
7
  contenderFinished2 as contenderFinished,
8
8
  contenderPool2 as contenderPool,
@@ -4,9 +4,9 @@ import {
4
4
  same2,
5
5
  probeResult2,
6
6
  headers2
7
- } from "./chunks/service-probe-2ny4vxct.js";
8
- import"./chunks/service-probe-sxt88q69.js";
9
- import"./chunks/service-probe-xgnj2w4v.js";
7
+ } from "./chunks/rpc-runtime-2ny4vxct.js";
8
+ import"./chunks/rpc-runtime-sxt88q69.js";
9
+ import"./chunks/rpc-runtime-xgnj2w4v.js";
10
10
  export {
11
11
  decide2 as decide,
12
12
  fallback2 as fallback,
@@ -2,7 +2,7 @@ import {
2
2
  defaultEnsureTiming2,
3
3
  ensureTiming2,
4
4
  withEnsureTiming2
5
- } from "./chunks/service-probe-xgnj2w4v.js";
5
+ } from "./chunks/rpc-runtime-xgnj2w4v.js";
6
6
  export {
7
7
  defaultEnsureTiming2 as defaultEnsureTiming,
8
8
  ensureTiming2 as ensureTiming,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  matchesVersion2
3
- } from "./chunks/service-probe-sxt88q69.js";
3
+ } from "./chunks/rpc-runtime-sxt88q69.js";
4
4
  export {
5
5
  matchesVersion2 as matchesVersion
6
6
  };
package/dist/service.js CHANGED
@@ -1 +1 @@
1
- import"./chunks/service-probe-qav6mfdz.js";
1
+ import"./chunks/rpc-runtime-qav6mfdz.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  make7,
3
3
  exports_shared_events
4
- } from "./chunks/service-probe-frbwqjmf.js";
4
+ } from "./chunks/rpc-runtime-frbwqjmf.js";
5
5
  export {
6
6
  exports_shared_events as SharedEvents,
7
7
  make7 as make
@@ -2,7 +2,7 @@ import {
2
2
  defaultIdleTimeout2,
3
3
  foregroundIdleThreshold2,
4
4
  createClientConnection2
5
- } from "../chunks/service-probe-ydhz1zrh.js";
5
+ } from "../chunks/rpc-runtime-ydhz1zrh.js";
6
6
  export {
7
7
  createClientConnection2 as createClientConnection,
8
8
  defaultIdleTimeout2 as defaultIdleTimeout,
@@ -2,15 +2,15 @@ import {
2
2
  settleMs2,
3
3
  locationKey2,
4
4
  createData2
5
- } from "../chunks/service-probe-9vdz0zwn.js";
6
- import"../chunks/service-probe-m2eywc8w.js";
7
- import"../chunks/service-probe-wjyeq25y.js";
8
- import"../chunks/service-probe-vyas3vgt.js";
9
- import"../chunks/service-probe-ecs5ftka.js";
10
- import"../chunks/service-probe-1y4a697q.js";
11
- import"../chunks/service-probe-nwcpakzx.js";
12
- import"../chunks/service-probe-vt9jbch8.js";
13
- import"../chunks/service-probe-frbwqjmf.js";
5
+ } from "../chunks/rpc-runtime-m77rqa4a.js";
6
+ import"../chunks/rpc-runtime-m2eywc8w.js";
7
+ import"../chunks/rpc-runtime-gzm3wsgd.js";
8
+ import"../chunks/rpc-runtime-vyas3vgt.js";
9
+ import"../chunks/rpc-runtime-ecs5ftka.js";
10
+ import"../chunks/rpc-runtime-nwcpakzx.js";
11
+ import"../chunks/rpc-runtime-frbwqjmf.js";
12
+ import"../chunks/rpc-runtime-1y4a697q.js";
13
+ import"../chunks/rpc-runtime-vt9jbch8.js";
14
14
  export {
15
15
  createData2 as createData,
16
16
  locationKey2 as locationKey,
@@ -1,3 +1,4 @@
1
1
  export * from "./data";
2
2
  export * from "./connection";
3
3
  export * from "./pty";
4
+ export * from "./usage";
@@ -1,25 +1,28 @@
1
- import"../chunks/service-probe-nwcpakzx.js";
2
- import"../chunks/service-probe-ecs5ftka.js";
3
- import"../chunks/service-probe-vt9jbch8.js";
4
- import"../chunks/service-probe-vyas3vgt.js";
5
- import"../chunks/service-probe-frbwqjmf.js";
6
- import"../chunks/service-probe-1y4a697q.js";
7
- import"../chunks/service-probe-wjyeq25y.js";
8
- import"../chunks/service-probe-m2eywc8w.js";
1
+ import"../chunks/rpc-runtime-nwcpakzx.js";
2
+ import"../chunks/rpc-runtime-ecs5ftka.js";
3
+ import"../chunks/rpc-runtime-vt9jbch8.js";
4
+ import"../chunks/rpc-runtime-vyas3vgt.js";
5
+ import"../chunks/rpc-runtime-frbwqjmf.js";
6
+ import"../chunks/rpc-runtime-1y4a697q.js";
7
+ import"../chunks/rpc-runtime-gzm3wsgd.js";
8
+ import"../chunks/rpc-runtime-m2eywc8w.js";
9
9
  import {
10
10
  settleMs2,
11
11
  locationKey2,
12
12
  createData2
13
- } from "../chunks/service-probe-9vdz0zwn.js";
13
+ } from "../chunks/rpc-runtime-m77rqa4a.js";
14
14
  import {
15
15
  defaultIdleTimeout2,
16
16
  foregroundIdleThreshold2,
17
17
  createClientConnection2
18
- } from "../chunks/service-probe-ydhz1zrh.js";
18
+ } from "../chunks/rpc-runtime-ydhz1zrh.js";
19
19
  import {
20
20
  createPtyClient2,
21
21
  createPersistentPtyClient2
22
- } from "../chunks/service-probe-gne7h7mq.js";
22
+ } from "../chunks/rpc-runtime-gne7h7mq.js";
23
+ import {
24
+ lastAssistantWithUsage2
25
+ } from "../chunks/rpc-runtime-8s2anffy.js";
23
26
  export {
24
27
  createClientConnection2 as createClientConnection,
25
28
  createData2 as createData,
@@ -27,6 +30,7 @@ export {
27
30
  createPtyClient2 as createPtyClient,
28
31
  defaultIdleTimeout2 as defaultIdleTimeout,
29
32
  foregroundIdleThreshold2 as foregroundIdleThreshold,
33
+ lastAssistantWithUsage2 as lastAssistantWithUsage,
30
34
  locationKey2 as locationKey,
31
35
  settleMs2 as settleMs
32
36
  };
package/dist/solid/pty.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createPtyClient2,
3
3
  createPersistentPtyClient2
4
- } from "../chunks/service-probe-gne7h7mq.js";
4
+ } from "../chunks/rpc-runtime-gne7h7mq.js";
5
5
  export {
6
6
  createPersistentPtyClient2 as createPersistentPtyClient,
7
7
  createPtyClient2 as createPtyClient
@@ -0,0 +1,9 @@
1
+ import type { SessionMessageAssistant, SessionMessageInfo } from "../promise";
2
+ /**
3
+ * The assistant step whose tokens fill the context window now: the latest one after the last completed
4
+ * compaction and before the revert boundary. Every client shows context usage from this step, so the TUI
5
+ * and the desktop app agree on it.
6
+ */
7
+ export declare function lastAssistantWithUsage(messages: ReadonlyArray<SessionMessageInfo>, boundary?: string): (SessionMessageAssistant & {
8
+ tokens: NonNullable<SessionMessageAssistant["tokens"]>;
9
+ }) | undefined;
@@ -0,0 +1,6 @@
1
+ import {
2
+ lastAssistantWithUsage2
3
+ } from "../chunks/rpc-runtime-8s2anffy.js";
4
+ export {
5
+ lastAssistantWithUsage2 as lastAssistantWithUsage
6
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@opencode/client",
4
- "version": "2.0.28",
4
+ "version": "2.0.30",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -57,8 +57,8 @@
57
57
  "typecheck": "tsgo --noEmit"
58
58
  },
59
59
  "dependencies": {
60
- "@opencode/schema": "2.0.28",
61
- "@opencode/protocol": "2.0.28"
60
+ "@opencode/schema": "2.0.30",
61
+ "@opencode/protocol": "2.0.30"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "effect": "4.0.1",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "devDependencies": {
76
76
  "@effect/platform-node": "4.0.1",
77
- "@opencode/httpapi-codegen": "2.0.28",
77
+ "@opencode/httpapi-codegen": "2.0.30",
78
78
  "@tsconfig/bun": "1.0.9",
79
79
  "@types/bun": "1.4.0",
80
80
  "@typescript/native-preview": "7.0.0-dev.20251207.1",