@opencode/client 0.0.0-dev-20626 → 0.0.0-dev-20628

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 (56) hide show
  1. package/dist/chunks/{shared-events-47bbshz0.js → pty-handoff-02j88w0z.js} +1 -1
  2. package/dist/chunks/{shared-events-1y4a697q.js → pty-handoff-1y4a697q.js} +1 -1
  3. package/dist/chunks/{shared-events-ank0d71z.js → pty-handoff-2ny4vxct.js} +19 -2
  4. package/dist/chunks/{shared-events-ajnk5b9f.js → pty-handoff-ajnk5b9f.js} +3 -3
  5. package/dist/chunks/{shared-events-cn5fa9bt.js → pty-handoff-cn5fa9bt.js} +5 -5
  6. package/dist/chunks/{shared-events-frbwqjmf.js → pty-handoff-frbwqjmf.js} +1 -1
  7. package/dist/chunks/{shared-events-twykcfef.js → pty-handoff-gah0fg5v.js} +4 -4
  8. package/dist/chunks/{shared-events-nyqggzs9.js → pty-handoff-nyqggzs9.js} +2 -2
  9. package/dist/chunks/{shared-events-src6by76.js → pty-handoff-src6by76.js} +1 -1
  10. package/dist/chunks/{shared-events-t1xa31vm.js → pty-handoff-t1xa31vm.js} +1 -1
  11. package/dist/chunks/{shared-events-z6qdwcsf.js → pty-handoff-z6qdwcsf.js} +2 -2
  12. package/dist/contract.js +1 -1
  13. package/dist/effect/client.js +8 -8
  14. package/dist/effect/generated/client-error.js +1 -1
  15. package/dist/effect/generated/client.js +3 -3
  16. package/dist/effect/generated/index.js +4 -4
  17. package/dist/effect/index.js +8 -8
  18. package/dist/effect/rpc.js +2 -2
  19. package/dist/effect/service.d.ts +16 -2
  20. package/dist/effect/service.js +18 -23
  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.js +1 -1
  26. package/dist/promise/index.js +8 -8
  27. package/dist/promise/rpc.js +2 -2
  28. package/dist/promise/service.js +13 -18
  29. package/dist/pty-handoff.js +1 -1
  30. package/dist/rpc-runtime.js +1 -1
  31. package/dist/service-contender.js +1 -1
  32. package/dist/service-probe.d.ts +18 -1
  33. package/dist/service-probe.js +5 -2
  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.js +11 -11
  41. package/dist/solid/pty.js +1 -1
  42. package/package.json +4 -4
  43. /package/dist/chunks/{shared-events-6mptkzbc.js → pty-handoff-6mptkzbc.js} +0 -0
  44. /package/dist/chunks/{shared-events-9rqn6x4v.js → pty-handoff-9rqn6x4v.js} +0 -0
  45. /package/dist/chunks/{shared-events-gne7h7mq.js → pty-handoff-gne7h7mq.js} +0 -0
  46. /package/dist/chunks/{shared-events-m2eywc8w.js → pty-handoff-m2eywc8w.js} +0 -0
  47. /package/dist/chunks/{shared-events-nwcpakzx.js → pty-handoff-nwcpakzx.js} +0 -0
  48. /package/dist/chunks/{shared-events-qav6mfdz.js → pty-handoff-qav6mfdz.js} +0 -0
  49. /package/dist/chunks/{shared-events-sxt88q69.js → pty-handoff-sxt88q69.js} +0 -0
  50. /package/dist/chunks/{shared-events-ve4aws36.js → pty-handoff-ve4aws36.js} +0 -0
  51. /package/dist/chunks/{shared-events-vmytr4q8.js → pty-handoff-vmytr4q8.js} +0 -0
  52. /package/dist/chunks/{shared-events-vt9jbch8.js → pty-handoff-vt9jbch8.js} +0 -0
  53. /package/dist/chunks/{shared-events-vyas3vgt.js → pty-handoff-vyas3vgt.js} +0 -0
  54. /package/dist/chunks/{shared-events-xgnj2w4v.js → pty-handoff-xgnj2w4v.js} +0 -0
  55. /package/dist/chunks/{shared-events-y2etg5bs.js → pty-handoff-y2etg5bs.js} +0 -0
  56. /package/dist/chunks/{shared-events-ydhz1zrh.js → pty-handoff-ydhz1zrh.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./shared-events-9rqn6x4v.js";
3
+ } from "./pty-handoff-9rqn6x4v.js";
4
4
 
5
5
  // src/pty-handoff.ts
6
6
  var exports_pty_handoff = {};
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isRpcError2,
3
3
  isRpcInternalError2
4
- } from "./shared-events-vt9jbch8.js";
4
+ } from "./pty-handoff-vt9jbch8.js";
5
5
 
6
6
  // src/promise/rpc.ts
7
7
  function makeRpc2(raw, events) {
@@ -1,10 +1,27 @@
1
1
  import {
2
2
  defaultEnsureTiming2
3
- } from "./shared-events-xgnj2w4v.js";
3
+ } from "./pty-handoff-xgnj2w4v.js";
4
+ import {
5
+ matchesVersion2
6
+ } from "./pty-handoff-sxt88q69.js";
4
7
 
5
8
  // src/service-probe.ts
6
9
  import { homedir } from "node:os";
7
10
  import { join } from "node:path";
11
+ function decide2(service, options) {
12
+ if (!matchesVersion2(service.version, options))
13
+ return { _tag: "replace", pty: service.state === "ready" ? "handoff" : "clear" };
14
+ if (!service.compatible)
15
+ return fail("Background service uses an incompatible health protocol. Update this client or explicitly restart the service.");
16
+ if (service.state === "ready")
17
+ return { _tag: "reuse" };
18
+ if (service.state === "failed")
19
+ return fail("Background service failed to start");
20
+ return { _tag: "wait" };
21
+ }
22
+ function fail(message) {
23
+ return { _tag: "fail", error: new Error(message) };
24
+ }
8
25
  function fallback2() {
9
26
  return join(process.env["XDG_STATE_HOME"] ?? join(homedir(), ".local", "state"), "opencode", "service.json");
10
27
  }
@@ -72,4 +89,4 @@ function decodeInfo(input) {
72
89
  return { version: input.version, pid: input.pid };
73
90
  }
74
91
 
75
- export { fallback2, same2, probeResult2, headers2 };
92
+ export { decide2, fallback2, same2, probeResult2, headers2 };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ClientApi2
3
- } from "./shared-events-vmytr4q8.js";
3
+ } from "./pty-handoff-vmytr4q8.js";
4
4
  import {
5
5
  ClientError2
6
- } from "./shared-events-y2etg5bs.js";
6
+ } from "./pty-handoff-y2etg5bs.js";
7
7
  import {
8
8
  __export
9
- } from "./shared-events-9rqn6x4v.js";
9
+ } from "./pty-handoff-9rqn6x4v.js";
10
10
 
11
11
  // src/effect/generated/client.ts
12
12
  var exports_client2 = {};
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  make7
3
- } from "./shared-events-frbwqjmf.js";
3
+ } from "./pty-handoff-frbwqjmf.js";
4
4
  import {
5
5
  ClientError2
6
- } from "./shared-events-y2etg5bs.js";
6
+ } from "./pty-handoff-y2etg5bs.js";
7
7
  import {
8
8
  make3
9
- } from "./shared-events-ajnk5b9f.js";
9
+ } from "./pty-handoff-ajnk5b9f.js";
10
10
  import {
11
11
  make4,
12
12
  aborted2
13
- } from "./shared-events-z6qdwcsf.js";
13
+ } from "./pty-handoff-z6qdwcsf.js";
14
14
  import {
15
15
  __export
16
- } from "./shared-events-9rqn6x4v.js";
16
+ } from "./pty-handoff-9rqn6x4v.js";
17
17
 
18
18
  // src/effect/client.ts
19
19
  var exports_client = {};
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./shared-events-9rqn6x4v.js";
3
+ } from "./pty-handoff-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 "./shared-events-frbwqjmf.js";
3
+ } from "./pty-handoff-frbwqjmf.js";
4
4
  import {
5
5
  make6
6
- } from "./shared-events-nyqggzs9.js";
6
+ } from "./pty-handoff-nyqggzs9.js";
7
7
  import {
8
8
  makeRpc2
9
- } from "./shared-events-1y4a697q.js";
9
+ } from "./pty-handoff-1y4a697q.js";
10
10
  import {
11
11
  __export
12
- } from "./shared-events-9rqn6x4v.js";
12
+ } from "./pty-handoff-9rqn6x4v.js";
13
13
 
14
14
  // src/promise/client.ts
15
15
  var exports_client3 = {};
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ClientError3
3
- } from "./shared-events-nwcpakzx.js";
3
+ } from "./pty-handoff-nwcpakzx.js";
4
4
  import {
5
5
  __export
6
- } from "./shared-events-9rqn6x4v.js";
6
+ } from "./pty-handoff-9rqn6x4v.js";
7
7
 
8
8
  // src/promise/generated/client.ts
9
9
  var exports_client4 = {};
@@ -2,7 +2,7 @@ import {
2
2
  isFormNotFoundError2,
3
3
  isFormAlreadySettledError2,
4
4
  isPermissionNotFoundError2
5
- } from "./shared-events-vt9jbch8.js";
5
+ } from "./pty-handoff-vt9jbch8.js";
6
6
 
7
7
  // src/solid/data.ts
8
8
  import { Worktree } from "@opencode/schema/worktree";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __export
3
- } from "./shared-events-9rqn6x4v.js";
3
+ } from "./pty-handoff-9rqn6x4v.js";
4
4
 
5
5
  // src/rpc-runtime.ts
6
6
  var exports_rpc_runtime = {};
@@ -3,10 +3,10 @@ import {
3
3
  readError2,
4
4
  event2,
5
5
  eventType2
6
- } from "./shared-events-t1xa31vm.js";
6
+ } from "./pty-handoff-t1xa31vm.js";
7
7
  import {
8
8
  __export
9
- } from "./shared-events-9rqn6x4v.js";
9
+ } from "./pty-handoff-9rqn6x4v.js";
10
10
 
11
11
  // src/effect/rpc.ts
12
12
  var exports_rpc = {};
package/dist/contract.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  effectOmitEndpoints2,
4
4
  groupNames2,
5
5
  promiseOmitEndpoints2
6
- } from "./chunks/shared-events-vmytr4q8.js";
6
+ } from "./chunks/pty-handoff-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/shared-events-cn5fa9bt.js";
5
- import"../chunks/shared-events-6mptkzbc.js";
6
- import"../chunks/shared-events-ajnk5b9f.js";
7
- import"../chunks/shared-events-y2etg5bs.js";
8
- import"../chunks/shared-events-z6qdwcsf.js";
9
- import"../chunks/shared-events-vmytr4q8.js";
10
- import"../chunks/shared-events-frbwqjmf.js";
11
- import"../chunks/shared-events-t1xa31vm.js";
4
+ } from "../chunks/pty-handoff-cn5fa9bt.js";
5
+ import"../chunks/pty-handoff-6mptkzbc.js";
6
+ import"../chunks/pty-handoff-ajnk5b9f.js";
7
+ import"../chunks/pty-handoff-y2etg5bs.js";
8
+ import"../chunks/pty-handoff-z6qdwcsf.js";
9
+ import"../chunks/pty-handoff-vmytr4q8.js";
10
+ import"../chunks/pty-handoff-frbwqjmf.js";
11
+ import"../chunks/pty-handoff-t1xa31vm.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/shared-events-y2etg5bs.js";
3
+ } from "../../chunks/pty-handoff-y2etg5bs.js";
4
4
  export {
5
5
  ClientError2 as ClientError
6
6
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  make3
3
- } from "../../chunks/shared-events-ajnk5b9f.js";
4
- import"../../chunks/shared-events-y2etg5bs.js";
5
- import"../../chunks/shared-events-vmytr4q8.js";
3
+ } from "../../chunks/pty-handoff-ajnk5b9f.js";
4
+ import"../../chunks/pty-handoff-y2etg5bs.js";
5
+ import"../../chunks/pty-handoff-vmytr4q8.js";
6
6
  export {
7
7
  make3 as make
8
8
  };
@@ -1,11 +1,11 @@
1
- import"../../chunks/shared-events-6mptkzbc.js";
1
+ import"../../chunks/pty-handoff-6mptkzbc.js";
2
2
  import {
3
3
  exports_client2
4
- } from "../../chunks/shared-events-ajnk5b9f.js";
4
+ } from "../../chunks/pty-handoff-ajnk5b9f.js";
5
5
  import {
6
6
  ClientError2
7
- } from "../../chunks/shared-events-y2etg5bs.js";
8
- import"../../chunks/shared-events-vmytr4q8.js";
7
+ } from "../../chunks/pty-handoff-y2etg5bs.js";
8
+ import"../../chunks/pty-handoff-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/shared-events-y2etg5bs.js";
4
- import"../chunks/shared-events-vmytr4q8.js";
5
- import"../chunks/shared-events-ajnk5b9f.js";
6
- import"../chunks/shared-events-6mptkzbc.js";
7
- import"../chunks/shared-events-frbwqjmf.js";
8
- import"../chunks/shared-events-t1xa31vm.js";
9
- import"../chunks/shared-events-z6qdwcsf.js";
3
+ } from "../chunks/pty-handoff-y2etg5bs.js";
4
+ import"../chunks/pty-handoff-vmytr4q8.js";
5
+ import"../chunks/pty-handoff-ajnk5b9f.js";
6
+ import"../chunks/pty-handoff-6mptkzbc.js";
7
+ import"../chunks/pty-handoff-frbwqjmf.js";
8
+ import"../chunks/pty-handoff-t1xa31vm.js";
9
+ import"../chunks/pty-handoff-z6qdwcsf.js";
10
10
  import {
11
11
  exports_client
12
- } from "../chunks/shared-events-cn5fa9bt.js";
12
+ } from "../chunks/pty-handoff-cn5fa9bt.js";
13
13
 
14
14
  // src/effect/index.ts
15
15
  import { Agent } from "@opencode/schema/agent";
@@ -2,8 +2,8 @@ import {
2
2
  make4,
3
3
  aborted2,
4
4
  exports_rpc
5
- } from "../chunks/shared-events-z6qdwcsf.js";
6
- import"../chunks/shared-events-t1xa31vm.js";
5
+ } from "../chunks/pty-handoff-z6qdwcsf.js";
6
+ import"../chunks/pty-handoff-t1xa31vm.js";
7
7
  export {
8
8
  exports_rpc as RpcClientRuntime,
9
9
  aborted2 as aborted,
@@ -29,7 +29,14 @@ export declare const incumbent: (options: DiscoverOptions & {
29
29
  state: "failed" | "ready" | "waiting";
30
30
  } | undefined, never, FileSystem.FileSystem>;
31
31
  /** Ensure a healthy, compatible local service is running. */
32
- export declare const ensure: (options?: EnsureOptions | undefined) => Effect.Effect<import("./service.js").Endpoint, Error, FileSystem.FileSystem>;
32
+ export declare const ensure: (options?: EnsureOptions | undefined) => Effect.Effect<{
33
+ url: string;
34
+ auth: {
35
+ type: "basic";
36
+ username: string;
37
+ password: string;
38
+ } | undefined;
39
+ }, Error, FileSystem.FileSystem>;
33
40
  /** Stop the registered local service. */
34
41
  export declare const stop: (options?: StopOptions | undefined) => Effect.Effect<void, Error, FileSystem.FileSystem>;
35
42
  /** Schema for the local service registration file. */
@@ -63,7 +70,14 @@ export declare const Service: {
63
70
  };
64
71
  state: "failed" | "ready" | "waiting";
65
72
  } | undefined, never, FileSystem.FileSystem>;
66
- ensure: (options?: EnsureOptions | undefined) => Effect.Effect<import("./service.js").Endpoint, Error, FileSystem.FileSystem>;
73
+ ensure: (options?: EnsureOptions | undefined) => Effect.Effect<{
74
+ url: string;
75
+ auth: {
76
+ type: "basic";
77
+ username: string;
78
+ password: string;
79
+ } | undefined;
80
+ }, Error, FileSystem.FileSystem>;
67
81
  stop: (options?: StopOptions | undefined) => Effect.Effect<void, Error, FileSystem.FileSystem>;
68
82
  headers: typeof headers;
69
83
  Info: Schema.Struct<{
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  spawnServiceContender2,
3
3
  contenderPool2
4
- } from "../chunks/shared-events-ve4aws36.js";
4
+ } from "../chunks/pty-handoff-ve4aws36.js";
5
5
  import {
6
6
  defaultEnsureTiming2,
7
7
  ensureTiming2
8
- } from "../chunks/shared-events-xgnj2w4v.js";
8
+ } from "../chunks/pty-handoff-xgnj2w4v.js";
9
9
  import {
10
10
  matchesVersion2
11
- } from "../chunks/shared-events-sxt88q69.js";
11
+ } from "../chunks/pty-handoff-sxt88q69.js";
12
12
  import {
13
13
  prepare2,
14
14
  environment2,
15
15
  complete2,
16
16
  clear2
17
- } from "../chunks/shared-events-47bbshz0.js";
17
+ } from "../chunks/pty-handoff-02j88w0z.js";
18
18
  import {
19
+ decide2,
19
20
  fallback2,
20
21
  same2,
21
22
  probeResult2,
22
23
  headers2
23
- } from "../chunks/shared-events-ank0d71z.js";
24
- import"../chunks/shared-events-qav6mfdz.js";
24
+ } from "../chunks/pty-handoff-2ny4vxct.js";
25
+ import"../chunks/pty-handoff-qav6mfdz.js";
25
26
 
26
27
  // src/effect/service.ts
27
28
  import { Effect, FileSystem, Option, Schedule, Schema } from "effect";
@@ -91,26 +92,20 @@ var ensure = Effect.fn("service.ensure")(function* (options = {}) {
91
92
  timeouts = undefined;
92
93
  if (service2 !== undefined) {
93
94
  pool.serviceAnswered();
94
- const versionMatches = matchesVersion2(service2.version, options);
95
- const compatible = service2.compatible && versionMatches;
96
- if (!service2.compatible && versionMatches)
97
- return yield* Effect.fail(new Error("Background service uses an incompatible health protocol. Update this client or explicitly restart the service."));
98
- if (compatible && service2.state === "ready") {
95
+ const decision = decide2(service2, options);
96
+ if (decision._tag === "fail")
97
+ return yield* Effect.fail(decision.error);
98
+ if (decision._tag === "reuse") {
99
99
  yield* Effect.tryPromise(() => complete2(options.file ?? fallback2(), service2.info));
100
100
  return Option.some(service2);
101
101
  }
102
- if (compatible && service2.state === "failed")
103
- return yield* Effect.fail(new Error("Background service failed to start"));
104
- if (compatible)
105
- return Option.none();
106
- yield* announce("version-mismatch", service2.version);
107
- if (service2.state !== "ready")
108
- yield* Effect.logWarning("Background service is not ready; replacement cannot preserve persistent terminals");
109
- yield* stop({
110
- file: options.file,
111
- pty: service2.state === "ready" ? "handoff" : "clear"
112
- }).pipe(Effect.ignore);
113
- pool.evict(service2.info.pid);
102
+ if (decision._tag === "replace") {
103
+ yield* announce("version-mismatch", service2.version);
104
+ if (service2.state !== "ready")
105
+ yield* Effect.logWarning("Background service is not ready; replacement cannot preserve persistent terminals");
106
+ yield* stop({ file: options.file, pty: decision.pty }).pipe(Effect.ignore);
107
+ pool.evict(service2.info.pid);
108
+ }
114
109
  return Option.none();
115
110
  }
116
111
  const failed = pool.reap();
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  make5,
3
3
  exports_client3
4
- } from "../chunks/shared-events-twykcfef.js";
5
- import"../chunks/shared-events-1y4a697q.js";
6
- import"../chunks/shared-events-vyas3vgt.js";
7
- import"../chunks/shared-events-nyqggzs9.js";
8
- import"../chunks/shared-events-nwcpakzx.js";
9
- import"../chunks/shared-events-vt9jbch8.js";
10
- import"../chunks/shared-events-frbwqjmf.js";
4
+ } from "../chunks/pty-handoff-gah0fg5v.js";
5
+ import"../chunks/pty-handoff-vyas3vgt.js";
6
+ import"../chunks/pty-handoff-nyqggzs9.js";
7
+ import"../chunks/pty-handoff-nwcpakzx.js";
8
+ import"../chunks/pty-handoff-1y4a697q.js";
9
+ import"../chunks/pty-handoff-vt9jbch8.js";
10
+ import"../chunks/pty-handoff-frbwqjmf.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/shared-events-nwcpakzx.js";
3
+ } from "../../chunks/pty-handoff-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/shared-events-nyqggzs9.js";
4
- import"../../chunks/shared-events-nwcpakzx.js";
3
+ } from "../../chunks/pty-handoff-nyqggzs9.js";
4
+ import"../../chunks/pty-handoff-nwcpakzx.js";
5
5
  export {
6
6
  make6 as make
7
7
  };
@@ -1,10 +1,10 @@
1
- import"../../chunks/shared-events-vyas3vgt.js";
1
+ import"../../chunks/pty-handoff-vyas3vgt.js";
2
2
  import {
3
3
  exports_client4
4
- } from "../../chunks/shared-events-nyqggzs9.js";
4
+ } from "../../chunks/pty-handoff-nyqggzs9.js";
5
5
  import {
6
6
  ClientError3
7
- } from "../../chunks/shared-events-nwcpakzx.js";
7
+ } from "../../chunks/pty-handoff-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/shared-events-vt9jbch8.js";
42
+ } from "../../chunks/pty-handoff-vt9jbch8.js";
43
43
  export {
44
44
  ClientError3 as ClientError,
45
45
  exports_client4 as OpenCode,
@@ -32,7 +32,7 @@ import {
32
32
  isShellNotFoundError2,
33
33
  isWorktreeError2,
34
34
  isVcsInitNotSupportedError2
35
- } from "../../chunks/shared-events-vt9jbch8.js";
35
+ } from "../../chunks/pty-handoff-vt9jbch8.js";
36
36
  export {
37
37
  isAgentNotFoundError2 as isAgentNotFoundError,
38
38
  isCommandExecutionError2 as isCommandExecutionError,
@@ -1,13 +1,13 @@
1
- import"../chunks/shared-events-m2eywc8w.js";
1
+ import"../chunks/pty-handoff-m2eywc8w.js";
2
2
  import {
3
3
  exports_client3
4
- } from "../chunks/shared-events-twykcfef.js";
5
- import"../chunks/shared-events-1y4a697q.js";
6
- import"../chunks/shared-events-vyas3vgt.js";
7
- import"../chunks/shared-events-nyqggzs9.js";
4
+ } from "../chunks/pty-handoff-gah0fg5v.js";
5
+ import"../chunks/pty-handoff-vyas3vgt.js";
6
+ import"../chunks/pty-handoff-nyqggzs9.js";
8
7
  import {
9
8
  ClientError3
10
- } from "../chunks/shared-events-nwcpakzx.js";
9
+ } from "../chunks/pty-handoff-nwcpakzx.js";
10
+ import"../chunks/pty-handoff-1y4a697q.js";
11
11
  import {
12
12
  isInvalidRequestError2,
13
13
  isUnauthorizedError2,
@@ -42,8 +42,8 @@ import {
42
42
  isShellNotFoundError2,
43
43
  isWorktreeError2,
44
44
  isVcsInitNotSupportedError2
45
- } from "../chunks/shared-events-vt9jbch8.js";
46
- import"../chunks/shared-events-frbwqjmf.js";
45
+ } from "../chunks/pty-handoff-vt9jbch8.js";
46
+ import"../chunks/pty-handoff-frbwqjmf.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/shared-events-1y4a697q.js";
4
- import"../chunks/shared-events-vt9jbch8.js";
3
+ } from "../chunks/pty-handoff-1y4a697q.js";
4
+ import"../chunks/pty-handoff-vt9jbch8.js";
5
5
  export {
6
6
  makeRpc2 as makeRpc
7
7
  };
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  spawnServiceContender2,
3
3
  contenderPool2
4
- } from "../chunks/shared-events-ve4aws36.js";
4
+ } from "../chunks/pty-handoff-ve4aws36.js";
5
5
  import {
6
6
  defaultEnsureTiming2,
7
7
  ensureTiming2
8
- } from "../chunks/shared-events-xgnj2w4v.js";
8
+ } from "../chunks/pty-handoff-xgnj2w4v.js";
9
9
  import {
10
10
  matchesVersion2
11
- } from "../chunks/shared-events-sxt88q69.js";
11
+ } from "../chunks/pty-handoff-sxt88q69.js";
12
12
  import {
13
13
  prepare2,
14
14
  environment2,
15
15
  complete2,
16
16
  clear2
17
- } from "../chunks/shared-events-47bbshz0.js";
17
+ } from "../chunks/pty-handoff-02j88w0z.js";
18
18
  import {
19
+ decide2,
19
20
  fallback2,
20
21
  same2,
21
22
  probeResult2,
22
23
  headers2
23
- } from "../chunks/shared-events-ank0d71z.js";
24
- import"../chunks/shared-events-qav6mfdz.js";
24
+ } from "../chunks/pty-handoff-2ny4vxct.js";
25
+ import"../chunks/pty-handoff-qav6mfdz.js";
25
26
 
26
27
  // src/promise/service.ts
27
28
  import { readFile, rm } from "node:fs/promises";
@@ -81,24 +82,18 @@ async function ensure(options = {}) {
81
82
  if (registration.service !== undefined) {
82
83
  pool.serviceAnswered();
83
84
  const service2 = registration.service;
84
- const versionMatches = matchesVersion2(service2.version, options);
85
- const compatible = service2.compatible && versionMatches;
86
- if (!service2.compatible && versionMatches)
87
- throw new Error("Background service uses an incompatible health protocol. Update this client or explicitly restart the service.");
88
- if (compatible && service2.state === "ready") {
85
+ const decision = decide2(service2, options);
86
+ if (decision._tag === "fail")
87
+ throw decision.error;
88
+ if (decision._tag === "reuse") {
89
89
  await complete2(options.file ?? fallback2(), service2.info);
90
90
  return service2.endpoint;
91
91
  }
92
- if (compatible && service2.state === "failed")
93
- throw new Error("Background service failed to start");
94
- if (!compatible) {
92
+ if (decision._tag === "replace") {
95
93
  announce("version-mismatch", service2.version);
96
94
  if (service2.state !== "ready")
97
95
  console.warn("Background service is not ready; replacement cannot preserve persistent terminals");
98
- await stop({
99
- file: options.file,
100
- pty: service2.state === "ready" ? "handoff" : "clear"
101
- }).catch(() => {
96
+ await stop({ file: options.file, pty: decision.pty }).catch(() => {
102
97
  return;
103
98
  });
104
99
  pool.evict(service2.info.pid);
@@ -4,7 +4,7 @@ import {
4
4
  complete2,
5
5
  clear2,
6
6
  exports_pty_handoff
7
- } from "./chunks/shared-events-47bbshz0.js";
7
+ } from "./chunks/pty-handoff-02j88w0z.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/shared-events-t1xa31vm.js";
7
+ } from "./chunks/pty-handoff-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/shared-events-ve4aws36.js";
5
+ } from "./chunks/pty-handoff-ve4aws36.js";
6
6
  export {
7
7
  contenderFinished2 as contenderFinished,
8
8
  contenderPool2 as contenderPool,
@@ -1,4 +1,4 @@
1
- import type { Endpoint, Info } from "./service.js";
1
+ import type { DiscoverOptions, Endpoint, Info } from "./service.js";
2
2
  export type LocalService = {
3
3
  readonly info: Info;
4
4
  readonly endpoint: Endpoint;
@@ -6,6 +6,23 @@ export type LocalService = {
6
6
  readonly state: "ready" | "waiting" | "failed";
7
7
  readonly compatible: boolean;
8
8
  };
9
+ /**
10
+ * What `ensure()` does with a registered service that answered: return it, keep polling while
11
+ * it starts, replace it because its version does not meet the requirement, or fail.
12
+ */
13
+ export declare function decide(service: LocalService, options: DiscoverOptions): {
14
+ _tag: "fail";
15
+ error: Error;
16
+ } | {
17
+ readonly _tag: "replace";
18
+ readonly pty: "clear" | "handoff";
19
+ } | {
20
+ readonly _tag: "reuse";
21
+ readonly pty?: undefined;
22
+ } | {
23
+ readonly _tag: "wait";
24
+ readonly pty?: undefined;
25
+ };
9
26
  /** The default registration file. */
10
27
  export declare function fallback(): string;
11
28
  /** Whether two registrations describe the same service instance. */
@@ -1,11 +1,14 @@
1
1
  import {
2
+ decide2,
2
3
  fallback2,
3
4
  same2,
4
5
  probeResult2,
5
6
  headers2
6
- } from "./chunks/shared-events-ank0d71z.js";
7
- import"./chunks/shared-events-xgnj2w4v.js";
7
+ } from "./chunks/pty-handoff-2ny4vxct.js";
8
+ import"./chunks/pty-handoff-sxt88q69.js";
9
+ import"./chunks/pty-handoff-xgnj2w4v.js";
8
10
  export {
11
+ decide2 as decide,
9
12
  fallback2 as fallback,
10
13
  headers2 as headers,
11
14
  probeResult2 as probeResult,
@@ -2,7 +2,7 @@ import {
2
2
  defaultEnsureTiming2,
3
3
  ensureTiming2,
4
4
  withEnsureTiming2
5
- } from "./chunks/shared-events-xgnj2w4v.js";
5
+ } from "./chunks/pty-handoff-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/shared-events-sxt88q69.js";
3
+ } from "./chunks/pty-handoff-sxt88q69.js";
4
4
  export {
5
5
  matchesVersion2 as matchesVersion
6
6
  };
package/dist/service.js CHANGED
@@ -1 +1 @@
1
- import"./chunks/shared-events-qav6mfdz.js";
1
+ import"./chunks/pty-handoff-qav6mfdz.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  make7,
3
3
  exports_shared_events
4
- } from "./chunks/shared-events-frbwqjmf.js";
4
+ } from "./chunks/pty-handoff-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/shared-events-ydhz1zrh.js";
5
+ } from "../chunks/pty-handoff-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/shared-events-src6by76.js";
6
- import"../chunks/shared-events-m2eywc8w.js";
7
- import"../chunks/shared-events-twykcfef.js";
8
- import"../chunks/shared-events-1y4a697q.js";
9
- import"../chunks/shared-events-vyas3vgt.js";
10
- import"../chunks/shared-events-nyqggzs9.js";
11
- import"../chunks/shared-events-nwcpakzx.js";
12
- import"../chunks/shared-events-vt9jbch8.js";
13
- import"../chunks/shared-events-frbwqjmf.js";
5
+ } from "../chunks/pty-handoff-src6by76.js";
6
+ import"../chunks/pty-handoff-m2eywc8w.js";
7
+ import"../chunks/pty-handoff-gah0fg5v.js";
8
+ import"../chunks/pty-handoff-vyas3vgt.js";
9
+ import"../chunks/pty-handoff-nyqggzs9.js";
10
+ import"../chunks/pty-handoff-nwcpakzx.js";
11
+ import"../chunks/pty-handoff-1y4a697q.js";
12
+ import"../chunks/pty-handoff-vt9jbch8.js";
13
+ import"../chunks/pty-handoff-frbwqjmf.js";
14
14
  export {
15
15
  createData2 as createData,
16
16
  locationKey2 as locationKey,
@@ -1,25 +1,25 @@
1
- import"../chunks/shared-events-nwcpakzx.js";
2
- import"../chunks/shared-events-nyqggzs9.js";
3
- import"../chunks/shared-events-vt9jbch8.js";
4
- import"../chunks/shared-events-vyas3vgt.js";
5
- import"../chunks/shared-events-frbwqjmf.js";
6
- import"../chunks/shared-events-1y4a697q.js";
7
- import"../chunks/shared-events-twykcfef.js";
8
- import"../chunks/shared-events-m2eywc8w.js";
1
+ import"../chunks/pty-handoff-nwcpakzx.js";
2
+ import"../chunks/pty-handoff-nyqggzs9.js";
3
+ import"../chunks/pty-handoff-vt9jbch8.js";
4
+ import"../chunks/pty-handoff-vyas3vgt.js";
5
+ import"../chunks/pty-handoff-frbwqjmf.js";
6
+ import"../chunks/pty-handoff-1y4a697q.js";
7
+ import"../chunks/pty-handoff-gah0fg5v.js";
8
+ import"../chunks/pty-handoff-m2eywc8w.js";
9
9
  import {
10
10
  settleMs2,
11
11
  locationKey2,
12
12
  createData2
13
- } from "../chunks/shared-events-src6by76.js";
13
+ } from "../chunks/pty-handoff-src6by76.js";
14
14
  import {
15
15
  defaultIdleTimeout2,
16
16
  foregroundIdleThreshold2,
17
17
  createClientConnection2
18
- } from "../chunks/shared-events-ydhz1zrh.js";
18
+ } from "../chunks/pty-handoff-ydhz1zrh.js";
19
19
  import {
20
20
  createPtyClient2,
21
21
  createPersistentPtyClient2
22
- } from "../chunks/shared-events-gne7h7mq.js";
22
+ } from "../chunks/pty-handoff-gne7h7mq.js";
23
23
  export {
24
24
  createClientConnection2 as createClientConnection,
25
25
  createData2 as createData,
package/dist/solid/pty.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createPtyClient2,
3
3
  createPersistentPtyClient2
4
- } from "../chunks/shared-events-gne7h7mq.js";
4
+ } from "../chunks/pty-handoff-gne7h7mq.js";
5
5
  export {
6
6
  createPersistentPtyClient2 as createPersistentPtyClient,
7
7
  createPtyClient2 as createPtyClient
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": "0.0.0-dev-20626",
4
+ "version": "0.0.0-dev-20628",
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": "0.0.0-dev-20626",
61
- "@opencode/protocol": "0.0.0-dev-20626"
60
+ "@opencode/schema": "0.0.0-dev-20628",
61
+ "@opencode/protocol": "0.0.0-dev-20628"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "effect": "4.0.0-rc.112",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "devDependencies": {
76
76
  "@effect/platform-node": "4.0.0-rc.112",
77
- "@opencode/httpapi-codegen": "0.0.0-dev-20626",
77
+ "@opencode/httpapi-codegen": "0.0.0-dev-20628",
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",