@opencode/client 0.0.0-dev-20573 → 0.0.0-dev-20577
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{pty-handoff-1y4a697q.js → service-1y4a697q.js} +1 -1
- package/dist/chunks/{pty-handoff-5myj1ht6.js → service-962mwvry.js} +5 -5
- package/dist/chunks/{pty-handoff-ank0d71z.js → service-ank0d71z.js} +1 -1
- package/dist/chunks/{pty-handoff-e5ea35j7.js → service-e5ea35j7.js} +1 -1
- package/dist/chunks/{pty-handoff-frbwqjmf.js → service-frbwqjmf.js} +1 -1
- package/dist/chunks/{pty-handoff-9n602qx4.js → service-mdvk8mfx.js} +4 -4
- package/dist/chunks/{pty-handoff-mnyft54j.js → service-mnyft54j.js} +2 -2
- package/dist/chunks/{pty-handoff-qzsnm4q8.js → service-qzsnm4q8.js} +2 -2
- package/dist/chunks/{pty-handoff-raw99g3w.js → service-raw99g3w.js} +3 -3
- package/dist/chunks/{pty-handoff-t1xa31vm.js → service-t1xa31vm.js} +1 -1
- package/dist/chunks/{pty-handoff-1cypz8nb.js → service-ve21qz3j.js} +1 -1
- package/dist/chunks/{pty-handoff-6f43cgzz.js → service-ve4aws36.js} +47 -2
- package/dist/contract.js +1 -1
- package/dist/effect/client.js +8 -8
- package/dist/effect/generated/client-error.js +1 -1
- package/dist/effect/generated/client.js +3 -3
- package/dist/effect/generated/index.js +4 -4
- package/dist/effect/index.js +8 -8
- package/dist/effect/rpc.js +2 -2
- package/dist/effect/service.js +19 -43
- package/dist/promise/client.js +7 -7
- package/dist/promise/generated/client-error.js +1 -1
- package/dist/promise/generated/client.js +2 -2
- package/dist/promise/generated/index.js +6 -6
- package/dist/promise/generated/types.js +1 -1
- package/dist/promise/index.js +8 -8
- package/dist/promise/rpc.js +2 -2
- package/dist/promise/service.js +19 -44
- package/dist/pty-handoff.js +1 -1
- package/dist/rpc-runtime.js +1 -1
- package/dist/service-contender.d.ts +27 -1
- package/dist/service-contender.js +3 -3
- package/dist/service-probe.js +2 -2
- package/dist/service-timing.js +1 -1
- package/dist/service-version.js +1 -1
- package/dist/service.js +1 -1
- package/dist/shared-events.js +1 -1
- package/dist/solid/connection.js +1 -1
- package/dist/solid/data.js +9 -9
- package/dist/solid/index.js +11 -11
- package/dist/solid/pty.js +1 -1
- package/package.json +4 -4
- /package/dist/chunks/{pty-handoff-6mptkzbc.js → service-6mptkzbc.js} +0 -0
- /package/dist/chunks/{pty-handoff-7f0py9js.js → service-7f0py9js.js} +0 -0
- /package/dist/chunks/{pty-handoff-9rqn6x4v.js → service-9rqn6x4v.js} +0 -0
- /package/dist/chunks/{pty-handoff-gne7h7mq.js → service-gne7h7mq.js} +0 -0
- /package/dist/chunks/{pty-handoff-js54wxgp.js → service-js54wxgp.js} +0 -0
- /package/dist/chunks/{pty-handoff-m2eywc8w.js → service-m2eywc8w.js} +0 -0
- /package/dist/chunks/{pty-handoff-qav6mfdz.js → service-qav6mfdz.js} +0 -0
- /package/dist/chunks/{pty-handoff-sxt88q69.js → service-sxt88q69.js} +0 -0
- /package/dist/chunks/{pty-handoff-vmytr4q8.js → service-vmytr4q8.js} +0 -0
- /package/dist/chunks/{pty-handoff-vt9jbch8.js → service-vt9jbch8.js} +0 -0
- /package/dist/chunks/{pty-handoff-vyas3vgt.js → service-vyas3vgt.js} +0 -0
- /package/dist/chunks/{pty-handoff-xgnj2w4v.js → service-xgnj2w4v.js} +0 -0
- /package/dist/chunks/{pty-handoff-ydhz1zrh.js → service-ydhz1zrh.js} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
make7
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./service-frbwqjmf.js";
|
|
4
4
|
import {
|
|
5
5
|
ClientError3
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./service-7f0py9js.js";
|
|
7
7
|
import {
|
|
8
8
|
make6
|
|
9
|
-
} from "./
|
|
9
|
+
} from "./service-raw99g3w.js";
|
|
10
10
|
import {
|
|
11
11
|
make5,
|
|
12
12
|
aborted2
|
|
13
|
-
} from "./
|
|
13
|
+
} from "./service-mnyft54j.js";
|
|
14
14
|
import {
|
|
15
15
|
__export
|
|
16
|
-
} from "./
|
|
16
|
+
} from "./service-9rqn6x4v.js";
|
|
17
17
|
|
|
18
18
|
// src/effect/client.ts
|
|
19
19
|
var exports_client3 = {};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
make7
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./service-frbwqjmf.js";
|
|
4
4
|
import {
|
|
5
5
|
make3
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./service-qzsnm4q8.js";
|
|
7
7
|
import {
|
|
8
8
|
makeRpc2
|
|
9
|
-
} from "./
|
|
9
|
+
} from "./service-1y4a697q.js";
|
|
10
10
|
import {
|
|
11
11
|
__export
|
|
12
|
-
} from "./
|
|
12
|
+
} from "./service-9rqn6x4v.js";
|
|
13
13
|
|
|
14
14
|
// src/promise/client.ts
|
|
15
15
|
var exports_client = {};
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
readError2,
|
|
4
4
|
event2,
|
|
5
5
|
eventType2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./service-t1xa31vm.js";
|
|
7
7
|
import {
|
|
8
8
|
__export
|
|
9
|
-
} from "./
|
|
9
|
+
} from "./service-9rqn6x4v.js";
|
|
10
10
|
|
|
11
11
|
// src/effect/rpc.ts
|
|
12
12
|
var exports_rpc = {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ClientApi2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./service-vmytr4q8.js";
|
|
4
4
|
import {
|
|
5
5
|
ClientError3
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./service-7f0py9js.js";
|
|
7
7
|
import {
|
|
8
8
|
__export
|
|
9
|
-
} from "./
|
|
9
|
+
} from "./service-9rqn6x4v.js";
|
|
10
10
|
|
|
11
11
|
// src/effect/generated/client.ts
|
|
12
12
|
var exports_client4 = {};
|
|
@@ -37,7 +37,52 @@ function spawnServiceContender2(command, args, env) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function contenderPool2(timing) {
|
|
41
|
+
const contenders = new Set;
|
|
42
|
+
let failure;
|
|
43
|
+
let spawnDelay = timing.spawnDelay;
|
|
44
|
+
let lastSpawn = 0;
|
|
45
|
+
return {
|
|
46
|
+
failure: () => failure,
|
|
47
|
+
serviceAnswered() {
|
|
48
|
+
spawnDelay = timing.spawnDelay;
|
|
49
|
+
},
|
|
50
|
+
evict(pid) {
|
|
51
|
+
for (const item of contenders) {
|
|
52
|
+
if (item.child.pid === pid || contenderFinished2(item)) {
|
|
53
|
+
item.release();
|
|
54
|
+
contenders.delete(item);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
failure = undefined;
|
|
58
|
+
lastSpawn = 0;
|
|
59
|
+
},
|
|
60
|
+
recruitNow() {
|
|
61
|
+
lastSpawn = Date.now() - spawnDelay;
|
|
62
|
+
},
|
|
63
|
+
reap() {
|
|
64
|
+
const finished = [...contenders].filter(contenderFinished2);
|
|
65
|
+
failure ??= finished.map(contenderFailure).find((error) => error !== undefined);
|
|
66
|
+
if (finished.some((item) => item.child.exitCode === 0))
|
|
67
|
+
spawnDelay = Math.min(spawnDelay * 2, timing.maxSpawnDelay);
|
|
68
|
+
finished.forEach((item) => contenders.delete(item));
|
|
69
|
+
return contenders.size === 0 ? failure : undefined;
|
|
70
|
+
},
|
|
71
|
+
shouldRecruit(registered) {
|
|
72
|
+
if (lastSpawn === 0 && registered)
|
|
73
|
+
lastSpawn = Date.now();
|
|
74
|
+
return failure === undefined && contenders.size < 2 && Date.now() - lastSpawn >= spawnDelay;
|
|
75
|
+
},
|
|
76
|
+
add(contender) {
|
|
77
|
+
contenders.add(contender);
|
|
78
|
+
lastSpawn = Date.now();
|
|
79
|
+
},
|
|
80
|
+
releaseAll() {
|
|
81
|
+
contenders.forEach((contender) => contender.release());
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function contenderFailure(contender) {
|
|
41
86
|
const error = contender.error();
|
|
42
87
|
if (error !== undefined)
|
|
43
88
|
return error;
|
|
@@ -55,4 +100,4 @@ function startupError(message, stderr) {
|
|
|
55
100
|
${stderr}` : message);
|
|
56
101
|
}
|
|
57
102
|
|
|
58
|
-
export { spawnServiceContender2,
|
|
103
|
+
export { spawnServiceContender2, contenderPool2, contenderFinished2 };
|
package/dist/contract.js
CHANGED
package/dist/effect/client.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
make4,
|
|
3
3
|
exports_client3
|
|
4
|
-
} from "../chunks/
|
|
5
|
-
import"../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/
|
|
8
|
-
import"../chunks/
|
|
9
|
-
import"../chunks/
|
|
10
|
-
import"../chunks/
|
|
11
|
-
import"../chunks/
|
|
4
|
+
} from "../chunks/service-962mwvry.js";
|
|
5
|
+
import"../chunks/service-mnyft54j.js";
|
|
6
|
+
import"../chunks/service-6mptkzbc.js";
|
|
7
|
+
import"../chunks/service-raw99g3w.js";
|
|
8
|
+
import"../chunks/service-7f0py9js.js";
|
|
9
|
+
import"../chunks/service-vmytr4q8.js";
|
|
10
|
+
import"../chunks/service-t1xa31vm.js";
|
|
11
|
+
import"../chunks/service-frbwqjmf.js";
|
|
12
12
|
export {
|
|
13
13
|
exports_client3 as OpenCode,
|
|
14
14
|
make4 as make
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
make6
|
|
3
|
-
} from "../../chunks/
|
|
4
|
-
import"../../chunks/
|
|
5
|
-
import"../../chunks/
|
|
3
|
+
} from "../../chunks/service-raw99g3w.js";
|
|
4
|
+
import"../../chunks/service-7f0py9js.js";
|
|
5
|
+
import"../../chunks/service-vmytr4q8.js";
|
|
6
6
|
export {
|
|
7
7
|
make6 as make
|
|
8
8
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import"../../chunks/
|
|
1
|
+
import"../../chunks/service-6mptkzbc.js";
|
|
2
2
|
import {
|
|
3
3
|
exports_client4
|
|
4
|
-
} from "../../chunks/
|
|
4
|
+
} from "../../chunks/service-raw99g3w.js";
|
|
5
5
|
import {
|
|
6
6
|
ClientError3
|
|
7
|
-
} from "../../chunks/
|
|
8
|
-
import"../../chunks/
|
|
7
|
+
} from "../../chunks/service-7f0py9js.js";
|
|
8
|
+
import"../../chunks/service-vmytr4q8.js";
|
|
9
9
|
export {
|
|
10
10
|
ClientError3 as ClientError,
|
|
11
11
|
exports_client4 as OpenCode
|
package/dist/effect/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ClientError3
|
|
3
|
-
} from "../chunks/
|
|
4
|
-
import"../chunks/
|
|
5
|
-
import"../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/
|
|
8
|
-
import"../chunks/
|
|
9
|
-
import"../chunks/
|
|
3
|
+
} from "../chunks/service-7f0py9js.js";
|
|
4
|
+
import"../chunks/service-vmytr4q8.js";
|
|
5
|
+
import"../chunks/service-raw99g3w.js";
|
|
6
|
+
import"../chunks/service-6mptkzbc.js";
|
|
7
|
+
import"../chunks/service-frbwqjmf.js";
|
|
8
|
+
import"../chunks/service-t1xa31vm.js";
|
|
9
|
+
import"../chunks/service-mnyft54j.js";
|
|
10
10
|
import {
|
|
11
11
|
exports_client3
|
|
12
|
-
} from "../chunks/
|
|
12
|
+
} from "../chunks/service-962mwvry.js";
|
|
13
13
|
|
|
14
14
|
// src/effect/index.ts
|
|
15
15
|
import { Agent } from "@opencode/schema/agent";
|
package/dist/effect/rpc.js
CHANGED
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
make5,
|
|
3
3
|
aborted2,
|
|
4
4
|
exports_rpc
|
|
5
|
-
} from "../chunks/
|
|
6
|
-
import"../chunks/
|
|
5
|
+
} from "../chunks/service-mnyft54j.js";
|
|
6
|
+
import"../chunks/service-t1xa31vm.js";
|
|
7
7
|
export {
|
|
8
8
|
exports_rpc as RpcClientRuntime,
|
|
9
9
|
aborted2 as aborted,
|
package/dist/effect/service.js
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
spawnServiceContender2,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "../chunks/pty-handoff-6f43cgzz.js";
|
|
3
|
+
contenderPool2
|
|
4
|
+
} from "../chunks/service-ve4aws36.js";
|
|
6
5
|
import {
|
|
7
6
|
defaultEnsureTiming2,
|
|
8
7
|
ensureTiming2
|
|
9
|
-
} from "../chunks/
|
|
8
|
+
} from "../chunks/service-xgnj2w4v.js";
|
|
10
9
|
import {
|
|
11
10
|
matchesVersion2
|
|
12
|
-
} from "../chunks/
|
|
11
|
+
} from "../chunks/service-sxt88q69.js";
|
|
13
12
|
import {
|
|
14
13
|
prepare2,
|
|
15
14
|
environment2,
|
|
16
15
|
complete2,
|
|
17
16
|
clear2
|
|
18
|
-
} from "../chunks/
|
|
17
|
+
} from "../chunks/service-ve21qz3j.js";
|
|
19
18
|
import {
|
|
20
19
|
fallback2,
|
|
21
20
|
same2,
|
|
22
21
|
probeResult2,
|
|
23
22
|
headers2
|
|
24
|
-
} from "../chunks/
|
|
25
|
-
import"../chunks/
|
|
23
|
+
} from "../chunks/service-ank0d71z.js";
|
|
24
|
+
import"../chunks/service-qav6mfdz.js";
|
|
26
25
|
|
|
27
26
|
// src/effect/service.ts
|
|
28
27
|
import { Effect, FileSystem, Option, Schedule, Schema } from "effect";
|
|
@@ -49,12 +48,9 @@ var incumbent = Effect.fn("service.incumbent")(function* (options) {
|
|
|
49
48
|
});
|
|
50
49
|
var ensure = Effect.fn("service.ensure")(function* (options = {}) {
|
|
51
50
|
const timing = ensureTiming2(options);
|
|
52
|
-
const
|
|
51
|
+
const pool = contenderPool2(timing);
|
|
53
52
|
let timeouts;
|
|
54
53
|
let announced = false;
|
|
55
|
-
let lastSpawn = 0;
|
|
56
|
-
let spawnDelay = timing.spawnDelay;
|
|
57
|
-
let failure;
|
|
58
54
|
const announce = (reason, previousVersion) => Effect.sync(() => {
|
|
59
55
|
if (announced)
|
|
60
56
|
return;
|
|
@@ -87,20 +83,14 @@ var ensure = Effect.fn("service.ensure")(function* (options = {}) {
|
|
|
87
83
|
yield* Effect.logWarning("Background service is unresponsive; recovery cannot preserve persistent terminals");
|
|
88
84
|
yield* Effect.tryPromise(() => clear2(options.file ?? fallback2()));
|
|
89
85
|
yield* terminate(info, options, timing);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
item.release();
|
|
93
|
-
contenders.delete(item);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
failure = undefined;
|
|
86
|
+
pool.evict(info.pid);
|
|
87
|
+
pool.recruitNow();
|
|
97
88
|
timeouts = undefined;
|
|
98
|
-
lastSpawn = Date.now() - spawnDelay;
|
|
99
89
|
}
|
|
100
90
|
} else
|
|
101
91
|
timeouts = undefined;
|
|
102
92
|
if (service2 !== undefined) {
|
|
103
|
-
|
|
93
|
+
pool.serviceAnswered();
|
|
104
94
|
const versionMatches = matchesVersion2(service2.version, options);
|
|
105
95
|
const compatible = service2.compatible && versionMatches;
|
|
106
96
|
if (!service2.compatible && versionMatches)
|
|
@@ -120,37 +110,23 @@ var ensure = Effect.fn("service.ensure")(function* (options = {}) {
|
|
|
120
110
|
file: options.file,
|
|
121
111
|
pty: service2.state === "ready" ? "handoff" : "clear"
|
|
122
112
|
}).pipe(Effect.ignore);
|
|
123
|
-
|
|
124
|
-
if (item.child.pid === service2.info.pid || contenderFinished2(item)) {
|
|
125
|
-
item.release();
|
|
126
|
-
contenders.delete(item);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
failure = undefined;
|
|
130
|
-
lastSpawn = 0;
|
|
113
|
+
pool.evict(service2.info.pid);
|
|
131
114
|
return Option.none();
|
|
132
|
-
} else if (lastSpawn === 0 && info !== undefined)
|
|
133
|
-
lastSpawn = Date.now();
|
|
134
|
-
const finished = [...contenders].filter(contenderFinished2);
|
|
135
|
-
failure ??= finished.map(contenderFailure2).find((error) => error !== undefined);
|
|
136
|
-
if (finished.some((item) => item.child.exitCode === 0)) {
|
|
137
|
-
spawnDelay = Math.min(spawnDelay * 2, timing.maxSpawnDelay);
|
|
138
115
|
}
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
return yield* Effect.fail(
|
|
142
|
-
if (
|
|
116
|
+
const failed = pool.reap();
|
|
117
|
+
if (failed !== undefined)
|
|
118
|
+
return yield* Effect.fail(failed);
|
|
119
|
+
if (pool.shouldRecruit(info !== undefined)) {
|
|
143
120
|
yield* announce("missing");
|
|
144
|
-
|
|
145
|
-
lastSpawn = Date.now();
|
|
121
|
+
pool.add(yield* spawnContender);
|
|
146
122
|
}
|
|
147
123
|
return Option.none();
|
|
148
124
|
}).pipe(Effect.repeat({
|
|
149
125
|
until: Option.isSome,
|
|
150
126
|
schedule: Schedule.spaced(timing.pollInterval).pipe(Schedule.upTo({ duration: timing.promiseTimeout }))
|
|
151
|
-
}), Effect.ensuring(Effect.sync(() =>
|
|
127
|
+
}), Effect.ensuring(Effect.sync(() => pool.releaseAll())));
|
|
152
128
|
if (Option.isNone(found))
|
|
153
|
-
return yield* Effect.fail(failure ?? new Error("Timed out waiting for the background service to start"));
|
|
129
|
+
return yield* Effect.fail(pool.failure() ?? new Error("Timed out waiting for the background service to start"));
|
|
154
130
|
return found.value.endpoint;
|
|
155
131
|
});
|
|
156
132
|
var stop = Effect.fn("service.stop")(function* (options = {}) {
|
package/dist/promise/client.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
make2,
|
|
3
3
|
exports_client
|
|
4
|
-
} from "../chunks/
|
|
5
|
-
import"../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/
|
|
8
|
-
import"../chunks/
|
|
9
|
-
import"../chunks/
|
|
10
|
-
import"../chunks/
|
|
4
|
+
} from "../chunks/service-mdvk8mfx.js";
|
|
5
|
+
import"../chunks/service-1y4a697q.js";
|
|
6
|
+
import"../chunks/service-vyas3vgt.js";
|
|
7
|
+
import"../chunks/service-vt9jbch8.js";
|
|
8
|
+
import"../chunks/service-qzsnm4q8.js";
|
|
9
|
+
import"../chunks/service-js54wxgp.js";
|
|
10
|
+
import"../chunks/service-frbwqjmf.js";
|
|
11
11
|
export {
|
|
12
12
|
exports_client as OpenCode,
|
|
13
13
|
make2 as make
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import"../../chunks/
|
|
2
|
-
import {
|
|
3
|
-
exports_client2
|
|
4
|
-
} from "../../chunks/pty-handoff-qzsnm4q8.js";
|
|
1
|
+
import"../../chunks/service-vyas3vgt.js";
|
|
5
2
|
import {
|
|
6
3
|
isInvalidRequestError2,
|
|
7
4
|
isUnauthorizedError2,
|
|
@@ -36,10 +33,13 @@ import {
|
|
|
36
33
|
isShellNotFoundError2,
|
|
37
34
|
isWorktreeError2,
|
|
38
35
|
isVcsInitNotSupportedError2
|
|
39
|
-
} from "../../chunks/
|
|
36
|
+
} from "../../chunks/service-vt9jbch8.js";
|
|
37
|
+
import {
|
|
38
|
+
exports_client2
|
|
39
|
+
} from "../../chunks/service-qzsnm4q8.js";
|
|
40
40
|
import {
|
|
41
41
|
ClientError2
|
|
42
|
-
} from "../../chunks/
|
|
42
|
+
} from "../../chunks/service-js54wxgp.js";
|
|
43
43
|
export {
|
|
44
44
|
ClientError2 as ClientError,
|
|
45
45
|
exports_client2 as OpenCode,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
isShellNotFoundError2,
|
|
33
33
|
isWorktreeError2,
|
|
34
34
|
isVcsInitNotSupportedError2
|
|
35
|
-
} from "../../chunks/
|
|
35
|
+
} from "../../chunks/service-vt9jbch8.js";
|
|
36
36
|
export {
|
|
37
37
|
isAgentNotFoundError2 as isAgentNotFoundError,
|
|
38
38
|
isCommandExecutionError2 as isCommandExecutionError,
|
package/dist/promise/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import"../chunks/
|
|
1
|
+
import"../chunks/service-m2eywc8w.js";
|
|
2
2
|
import {
|
|
3
3
|
exports_client
|
|
4
|
-
} from "../chunks/
|
|
5
|
-
import"../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/pty-handoff-qzsnm4q8.js";
|
|
4
|
+
} from "../chunks/service-mdvk8mfx.js";
|
|
5
|
+
import"../chunks/service-1y4a697q.js";
|
|
6
|
+
import"../chunks/service-vyas3vgt.js";
|
|
8
7
|
import {
|
|
9
8
|
isInvalidRequestError2,
|
|
10
9
|
isUnauthorizedError2,
|
|
@@ -39,11 +38,12 @@ import {
|
|
|
39
38
|
isShellNotFoundError2,
|
|
40
39
|
isWorktreeError2,
|
|
41
40
|
isVcsInitNotSupportedError2
|
|
42
|
-
} from "../chunks/
|
|
41
|
+
} from "../chunks/service-vt9jbch8.js";
|
|
42
|
+
import"../chunks/service-qzsnm4q8.js";
|
|
43
43
|
import {
|
|
44
44
|
ClientError2
|
|
45
|
-
} from "../chunks/
|
|
46
|
-
import"../chunks/
|
|
45
|
+
} from "../chunks/service-js54wxgp.js";
|
|
46
|
+
import"../chunks/service-frbwqjmf.js";
|
|
47
47
|
export {
|
|
48
48
|
ClientError2 as ClientError,
|
|
49
49
|
exports_client as OpenCode,
|
package/dist/promise/rpc.js
CHANGED
package/dist/promise/service.js
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
spawnServiceContender2,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "../chunks/pty-handoff-6f43cgzz.js";
|
|
3
|
+
contenderPool2
|
|
4
|
+
} from "../chunks/service-ve4aws36.js";
|
|
6
5
|
import {
|
|
7
6
|
defaultEnsureTiming2,
|
|
8
7
|
ensureTiming2
|
|
9
|
-
} from "../chunks/
|
|
8
|
+
} from "../chunks/service-xgnj2w4v.js";
|
|
10
9
|
import {
|
|
11
10
|
matchesVersion2
|
|
12
|
-
} from "../chunks/
|
|
11
|
+
} from "../chunks/service-sxt88q69.js";
|
|
13
12
|
import {
|
|
14
13
|
prepare2,
|
|
15
14
|
environment2,
|
|
16
15
|
complete2,
|
|
17
16
|
clear2
|
|
18
|
-
} from "../chunks/
|
|
17
|
+
} from "../chunks/service-ve21qz3j.js";
|
|
19
18
|
import {
|
|
20
19
|
fallback2,
|
|
21
20
|
same2,
|
|
22
21
|
probeResult2,
|
|
23
22
|
headers2
|
|
24
|
-
} from "../chunks/
|
|
25
|
-
import"../chunks/
|
|
23
|
+
} from "../chunks/service-ank0d71z.js";
|
|
24
|
+
import"../chunks/service-qav6mfdz.js";
|
|
26
25
|
|
|
27
26
|
// src/promise/service.ts
|
|
28
27
|
import { readFile, rm } from "node:fs/promises";
|
|
@@ -39,12 +38,9 @@ async function discover(options = {}) {
|
|
|
39
38
|
async function ensure(options = {}) {
|
|
40
39
|
const timing = ensureTiming2(options);
|
|
41
40
|
const deadline = Date.now() + timing.promiseTimeout;
|
|
42
|
-
const
|
|
41
|
+
const pool = contenderPool2(timing);
|
|
43
42
|
let timeouts;
|
|
44
43
|
let announced = false;
|
|
45
|
-
let lastSpawn = 0;
|
|
46
|
-
let spawnDelay = timing.spawnDelay;
|
|
47
|
-
let failure;
|
|
48
44
|
const announce = (reason, previousVersion) => {
|
|
49
45
|
if (announced)
|
|
50
46
|
return;
|
|
@@ -64,7 +60,7 @@ async function ensure(options = {}) {
|
|
|
64
60
|
try {
|
|
65
61
|
while (true) {
|
|
66
62
|
if (Date.now() >= deadline)
|
|
67
|
-
throw failure ?? new Error("Timed out waiting for the background service to start");
|
|
63
|
+
throw pool.failure() ?? new Error("Timed out waiting for the background service to start");
|
|
68
64
|
const registration = await registered(options.file, timing.requestTimeout);
|
|
69
65
|
if (registration.timedOut && registration.info !== undefined) {
|
|
70
66
|
timeouts = {
|
|
@@ -76,20 +72,14 @@ async function ensure(options = {}) {
|
|
|
76
72
|
console.warn("Background service is unresponsive; recovery cannot preserve persistent terminals");
|
|
77
73
|
await clear2(options.file ?? fallback2());
|
|
78
74
|
await terminate(registration.info, options, timing);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
item.release();
|
|
82
|
-
contenders.delete(item);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
failure = undefined;
|
|
75
|
+
pool.evict(registration.info.pid);
|
|
76
|
+
pool.recruitNow();
|
|
86
77
|
timeouts = undefined;
|
|
87
|
-
lastSpawn = Date.now() - spawnDelay;
|
|
88
78
|
}
|
|
89
79
|
} else
|
|
90
80
|
timeouts = undefined;
|
|
91
81
|
if (registration.service !== undefined) {
|
|
92
|
-
|
|
82
|
+
pool.serviceAnswered();
|
|
93
83
|
const service2 = registration.service;
|
|
94
84
|
const versionMatches = matchesVersion2(service2.version, options);
|
|
95
85
|
const compatible = service2.compatible && versionMatches;
|
|
@@ -111,36 +101,21 @@ async function ensure(options = {}) {
|
|
|
111
101
|
}).catch(() => {
|
|
112
102
|
return;
|
|
113
103
|
});
|
|
114
|
-
|
|
115
|
-
if (item.child.pid === service2.info.pid || contenderFinished2(item)) {
|
|
116
|
-
item.release();
|
|
117
|
-
contenders.delete(item);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
failure = undefined;
|
|
121
|
-
lastSpawn = 0;
|
|
104
|
+
pool.evict(service2.info.pid);
|
|
122
105
|
}
|
|
123
106
|
} else {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (finished.some((item) => item.child.exitCode === 0)) {
|
|
129
|
-
spawnDelay = Math.min(spawnDelay * 2, timing.maxSpawnDelay);
|
|
130
|
-
}
|
|
131
|
-
finished.forEach((item) => contenders.delete(item));
|
|
132
|
-
if (failure !== undefined && contenders.size === 0)
|
|
133
|
-
throw failure;
|
|
134
|
-
if (failure === undefined && contenders.size < 2 && Date.now() - lastSpawn >= spawnDelay) {
|
|
107
|
+
const failed = pool.reap();
|
|
108
|
+
if (failed !== undefined)
|
|
109
|
+
throw failed;
|
|
110
|
+
if (pool.shouldRecruit(registration.info !== undefined)) {
|
|
135
111
|
announce("missing");
|
|
136
|
-
|
|
137
|
-
lastSpawn = Date.now();
|
|
112
|
+
pool.add(await spawnContender());
|
|
138
113
|
}
|
|
139
114
|
}
|
|
140
115
|
await delay(timing.pollInterval);
|
|
141
116
|
}
|
|
142
117
|
} finally {
|
|
143
|
-
|
|
118
|
+
pool.releaseAll();
|
|
144
119
|
}
|
|
145
120
|
}
|
|
146
121
|
async function stop(options = {}) {
|
package/dist/pty-handoff.js
CHANGED
package/dist/rpc-runtime.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
import type { EnsureTiming } from "./service-timing.js";
|
|
2
3
|
export type ServiceContender = {
|
|
3
4
|
readonly child: ChildProcess;
|
|
4
5
|
readonly error: () => Error | undefined;
|
|
@@ -7,5 +8,30 @@ export type ServiceContender = {
|
|
|
7
8
|
readonly release: () => void;
|
|
8
9
|
};
|
|
9
10
|
export declare function spawnServiceContender(command: string, args: ReadonlyArray<string>, env?: Readonly<Record<string, string | undefined>>): ServiceContender;
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* The startup attempts of one `ensure()` call. It keeps at most two attempts alive, remembers
|
|
13
|
+
* the first startup failure, and backs off when attempts exit cleanly because another one won.
|
|
14
|
+
*/
|
|
15
|
+
export declare function contenderPool(timing: EnsureTiming): {
|
|
16
|
+
/** The first startup failure seen since the last eviction. */
|
|
17
|
+
failure: () => Error | undefined;
|
|
18
|
+
/** A registered service answered, so the next attempt waits the base delay again. */
|
|
19
|
+
serviceAnswered(): void;
|
|
20
|
+
/**
|
|
21
|
+
* The owner `pid` was replaced. Drop its attempt and any finished ones, forget their
|
|
22
|
+
* failure, and restart the spawn clock.
|
|
23
|
+
*/
|
|
24
|
+
evict(pid: number): void;
|
|
25
|
+
/** Let the next attempt start without waiting a spawn delay. */
|
|
26
|
+
recruitNow(): void;
|
|
27
|
+
/** Collect finished attempts. Returns the startup failure once no attempt is left alive. */
|
|
28
|
+
reap(): Error | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to start another attempt now. A registration that has not answered yet gets one
|
|
31
|
+
* spawn delay before an attempt competes with it.
|
|
32
|
+
*/
|
|
33
|
+
shouldRecruit(registered: boolean): boolean;
|
|
34
|
+
add(contender: ServiceContender): void;
|
|
35
|
+
releaseAll(): void;
|
|
36
|
+
};
|
|
11
37
|
export declare function contenderFinished(contender: ServiceContender): boolean;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
spawnServiceContender2,
|
|
3
|
-
|
|
3
|
+
contenderPool2,
|
|
4
4
|
contenderFinished2
|
|
5
|
-
} from "./chunks/
|
|
5
|
+
} from "./chunks/service-ve4aws36.js";
|
|
6
6
|
export {
|
|
7
|
-
contenderFailure2 as contenderFailure,
|
|
8
7
|
contenderFinished2 as contenderFinished,
|
|
8
|
+
contenderPool2 as contenderPool,
|
|
9
9
|
spawnServiceContender2 as spawnServiceContender
|
|
10
10
|
};
|
package/dist/service-probe.js
CHANGED
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
same2,
|
|
4
4
|
probeResult2,
|
|
5
5
|
headers2
|
|
6
|
-
} from "./chunks/
|
|
7
|
-
import"./chunks/
|
|
6
|
+
} from "./chunks/service-ank0d71z.js";
|
|
7
|
+
import"./chunks/service-xgnj2w4v.js";
|
|
8
8
|
export {
|
|
9
9
|
fallback2 as fallback,
|
|
10
10
|
headers2 as headers,
|
package/dist/service-timing.js
CHANGED
package/dist/service-version.js
CHANGED
package/dist/service.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunks/
|
|
1
|
+
import"./chunks/service-qav6mfdz.js";
|
package/dist/shared-events.js
CHANGED
package/dist/solid/connection.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
defaultIdleTimeout2,
|
|
3
3
|
foregroundIdleThreshold2,
|
|
4
4
|
createClientConnection2
|
|
5
|
-
} from "../chunks/
|
|
5
|
+
} from "../chunks/service-ydhz1zrh.js";
|
|
6
6
|
export {
|
|
7
7
|
createClientConnection2 as createClientConnection,
|
|
8
8
|
defaultIdleTimeout2 as defaultIdleTimeout,
|
package/dist/solid/data.js
CHANGED
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
settleMs2,
|
|
3
3
|
locationKey2,
|
|
4
4
|
createData2
|
|
5
|
-
} from "../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/
|
|
8
|
-
import"../chunks/
|
|
9
|
-
import"../chunks/
|
|
10
|
-
import"../chunks/
|
|
11
|
-
import"../chunks/
|
|
12
|
-
import"../chunks/
|
|
13
|
-
import"../chunks/
|
|
5
|
+
} from "../chunks/service-e5ea35j7.js";
|
|
6
|
+
import"../chunks/service-m2eywc8w.js";
|
|
7
|
+
import"../chunks/service-mdvk8mfx.js";
|
|
8
|
+
import"../chunks/service-1y4a697q.js";
|
|
9
|
+
import"../chunks/service-vyas3vgt.js";
|
|
10
|
+
import"../chunks/service-vt9jbch8.js";
|
|
11
|
+
import"../chunks/service-qzsnm4q8.js";
|
|
12
|
+
import"../chunks/service-js54wxgp.js";
|
|
13
|
+
import"../chunks/service-frbwqjmf.js";
|
|
14
14
|
export {
|
|
15
15
|
createData2 as createData,
|
|
16
16
|
locationKey2 as locationKey,
|
package/dist/solid/index.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import"../chunks/
|
|
2
|
-
import"../chunks/
|
|
3
|
-
import"../chunks/
|
|
4
|
-
import"../chunks/
|
|
5
|
-
import"../chunks/
|
|
6
|
-
import"../chunks/
|
|
7
|
-
import"../chunks/
|
|
8
|
-
import"../chunks/
|
|
1
|
+
import"../chunks/service-js54wxgp.js";
|
|
2
|
+
import"../chunks/service-qzsnm4q8.js";
|
|
3
|
+
import"../chunks/service-vt9jbch8.js";
|
|
4
|
+
import"../chunks/service-vyas3vgt.js";
|
|
5
|
+
import"../chunks/service-frbwqjmf.js";
|
|
6
|
+
import"../chunks/service-1y4a697q.js";
|
|
7
|
+
import"../chunks/service-mdvk8mfx.js";
|
|
8
|
+
import"../chunks/service-m2eywc8w.js";
|
|
9
9
|
import {
|
|
10
10
|
settleMs2,
|
|
11
11
|
locationKey2,
|
|
12
12
|
createData2
|
|
13
|
-
} from "../chunks/
|
|
13
|
+
} from "../chunks/service-e5ea35j7.js";
|
|
14
14
|
import {
|
|
15
15
|
defaultIdleTimeout2,
|
|
16
16
|
foregroundIdleThreshold2,
|
|
17
17
|
createClientConnection2
|
|
18
|
-
} from "../chunks/
|
|
18
|
+
} from "../chunks/service-ydhz1zrh.js";
|
|
19
19
|
import {
|
|
20
20
|
createPtyClient2,
|
|
21
21
|
createPersistentPtyClient2
|
|
22
|
-
} from "../chunks/
|
|
22
|
+
} from "../chunks/service-gne7h7mq.js";
|
|
23
23
|
export {
|
|
24
24
|
createClientConnection2 as createClientConnection,
|
|
25
25
|
createData2 as createData,
|
package/dist/solid/pty.js
CHANGED
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-
|
|
4
|
+
"version": "0.0.0-dev-20577",
|
|
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-
|
|
61
|
-
"@opencode/protocol": "0.0.0-dev-
|
|
60
|
+
"@opencode/schema": "0.0.0-dev-20577",
|
|
61
|
+
"@opencode/protocol": "0.0.0-dev-20577"
|
|
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-
|
|
77
|
+
"@opencode/httpapi-codegen": "0.0.0-dev-20577",
|
|
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",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|