@botiverse/oar 0.47.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/contracts/index.d.ts +2 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/install.d.ts +96 -0
- package/dist/contracts/install.d.ts.map +1 -0
- package/dist/contracts/install.js +2 -0
- package/dist/contracts/install.js.map +1 -0
- package/dist/contracts/provider-auth.d.ts +55 -1
- package/dist/contracts/provider-auth.d.ts.map +1 -1
- package/dist/contracts/records.d.ts +4 -10
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/runtime.d.ts +16 -0
- package/dist/contracts/runtime.d.ts.map +1 -1
- package/dist/contracts/runtime.js.map +1 -1
- package/dist/contracts/tool-output.d.ts +9 -0
- package/dist/contracts/tool-output.d.ts.map +1 -1
- package/dist/observe/agent-status.d.ts +1 -0
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +1 -0
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/conversation.d.ts +2 -2
- package/dist/observe/conversation.d.ts.map +1 -1
- package/dist/observe/input-delivery.d.ts +1 -1
- package/dist/observe/input-delivery.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +2 -2
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-tools.d.ts +6 -0
- package/dist/observe/session-view-tools.d.ts.map +1 -1
- package/dist/observe/session-view-tools.js +7 -1
- package/dist/observe/session-view-tools.js.map +1 -1
- package/dist/observe/session-view.d.ts +1 -1
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +4 -1
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/runtimes/antigravity/index.d.ts +2 -0
- package/dist/runtimes/antigravity/index.d.ts.map +1 -1
- package/dist/runtimes/antigravity/index.js +3 -0
- package/dist/runtimes/antigravity/index.js.map +1 -1
- package/dist/runtimes/antigravity/install.d.ts +10 -0
- package/dist/runtimes/antigravity/install.d.ts.map +1 -0
- package/dist/runtimes/antigravity/install.js +16 -0
- package/dist/runtimes/antigravity/install.js.map +1 -0
- package/dist/runtimes/claude/index.d.ts +2 -0
- package/dist/runtimes/claude/index.d.ts.map +1 -1
- package/dist/runtimes/claude/index.js +4 -0
- package/dist/runtimes/claude/index.js.map +1 -1
- package/dist/runtimes/claude/install.d.ts +17 -0
- package/dist/runtimes/claude/install.d.ts.map +1 -0
- package/dist/runtimes/claude/install.js +29 -0
- package/dist/runtimes/claude/install.js.map +1 -0
- package/dist/runtimes/claude/installation.d.ts +9 -0
- package/dist/runtimes/claude/installation.d.ts.map +1 -1
- package/dist/runtimes/claude/installation.js +15 -1
- package/dist/runtimes/claude/installation.js.map +1 -1
- package/dist/runtimes/codex/index.d.ts +2 -0
- package/dist/runtimes/codex/index.d.ts.map +1 -1
- package/dist/runtimes/codex/index.js +4 -0
- package/dist/runtimes/codex/index.js.map +1 -1
- package/dist/runtimes/codex/install.d.ts +18 -0
- package/dist/runtimes/codex/install.d.ts.map +1 -0
- package/dist/runtimes/codex/install.js +30 -0
- package/dist/runtimes/codex/install.js.map +1 -0
- package/dist/runtimes/codex/installation.d.ts +11 -0
- package/dist/runtimes/codex/installation.d.ts.map +1 -1
- package/dist/runtimes/codex/installation.js +28 -13
- package/dist/runtimes/codex/installation.js.map +1 -1
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +3 -1
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/grok/index.d.ts +2 -0
- package/dist/runtimes/grok/index.d.ts.map +1 -1
- package/dist/runtimes/grok/index.js +3 -0
- package/dist/runtimes/grok/index.js.map +1 -1
- package/dist/runtimes/grok/install.d.ts +13 -0
- package/dist/runtimes/grok/install.d.ts.map +1 -0
- package/dist/runtimes/grok/install.js +25 -0
- package/dist/runtimes/grok/install.js.map +1 -0
- package/dist/runtimes/grok/session.d.ts.map +1 -1
- package/dist/runtimes/grok/session.js +1 -0
- package/dist/runtimes/grok/session.js.map +1 -1
- package/dist/runtimes/kimi/index.d.ts +2 -0
- package/dist/runtimes/kimi/index.d.ts.map +1 -1
- package/dist/runtimes/kimi/index.js +3 -0
- package/dist/runtimes/kimi/index.js.map +1 -1
- package/dist/runtimes/kimi/install.d.ts +16 -0
- package/dist/runtimes/kimi/install.d.ts.map +1 -0
- package/dist/runtimes/kimi/install.js +28 -0
- package/dist/runtimes/kimi/install.js.map +1 -0
- package/dist/runtimes/opencode/attribution.d.ts +4 -0
- package/dist/runtimes/opencode/attribution.d.ts.map +1 -0
- package/dist/runtimes/opencode/attribution.js +13 -0
- package/dist/runtimes/opencode/attribution.js.map +1 -0
- package/dist/runtimes/opencode/index.d.ts +3 -0
- package/dist/runtimes/opencode/index.d.ts.map +1 -1
- package/dist/runtimes/opencode/index.js +4 -0
- package/dist/runtimes/opencode/index.js.map +1 -1
- package/dist/runtimes/opencode/install.d.ts +30 -0
- package/dist/runtimes/opencode/install.d.ts.map +1 -0
- package/dist/runtimes/opencode/install.js +55 -0
- package/dist/runtimes/opencode/install.js.map +1 -0
- package/dist/runtimes/opencode/installation.d.ts +1 -1
- package/dist/runtimes/opencode/installation.js +1 -1
- package/dist/runtimes/opencode/list-models.d.ts.map +1 -1
- package/dist/runtimes/opencode/list-models.js +15 -2
- package/dist/runtimes/opencode/list-models.js.map +1 -1
- package/dist/runtimes/opencode/session.d.ts +2 -0
- package/dist/runtimes/opencode/session.d.ts.map +1 -1
- package/dist/runtimes/opencode/session.js +24 -6
- package/dist/runtimes/opencode/session.js.map +1 -1
- package/dist/runtimes/opencode/version.d.ts +5 -0
- package/dist/runtimes/opencode/version.d.ts.map +1 -0
- package/dist/runtimes/opencode/version.js +23 -0
- package/dist/runtimes/opencode/version.js.map +1 -0
- package/dist/runtimes/pi/auth.d.ts +25 -1
- package/dist/runtimes/pi/auth.d.ts.map +1 -1
- package/dist/runtimes/pi/auth.js +52 -9
- package/dist/runtimes/pi/auth.js.map +1 -1
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +1 -0
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/shared/acp/profile.d.ts +9 -4
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/records.d.ts +2 -1
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +6 -2
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/acp/session.js +2 -2
- package/dist/shared/acp/session.js.map +1 -1
- package/dist/shared/acp/turns.d.ts +6 -5
- package/dist/shared/acp/turns.d.ts.map +1 -1
- package/dist/shared/acp/turns.js +21 -10
- package/dist/shared/acp/turns.js.map +1 -1
- package/dist/shared/executable/index.d.ts +1 -1
- package/dist/shared/executable/index.d.ts.map +1 -1
- package/dist/shared/executable/index.js +1 -1
- package/dist/shared/executable/index.js.map +1 -1
- package/dist/shared/executable/isolated.d.ts +5 -0
- package/dist/shared/executable/isolated.d.ts.map +1 -1
- package/dist/shared/executable/isolated.js +8 -0
- package/dist/shared/executable/isolated.js.map +1 -1
- package/dist/shared/install.d.ts +70 -0
- package/dist/shared/install.d.ts.map +1 -0
- package/dist/shared/install.js +176 -0
- package/dist/shared/install.js.map +1 -0
- package/dist/shared/update.d.ts +1 -1
- package/dist/shared/update.d.ts.map +1 -1
- package/dist/shared/update.js +4 -8
- package/dist/shared/update.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InputImage, RequestRecord, ResponseBody, SessionCapabilities, TurnOutcome } from "../../contracts/session.js";
|
|
1
|
+
import type { InputImage, InputOptions, RequestRecord, ResponseBody, SessionCapabilities, TurnOutcome } from "../../contracts/session.js";
|
|
2
2
|
import { type JsonRecord } from "../json.js";
|
|
3
3
|
import type { SessionKernel } from "../session-kernel.js";
|
|
4
4
|
import { type AcpSessionProfile, type UsageUpdateGate } from "./profile.js";
|
|
@@ -7,11 +7,13 @@ import { type AcpProcess } from "./process.js";
|
|
|
7
7
|
* The turn machinery: ≤1 active turn, each `session/prompt` RPC of it, the
|
|
8
8
|
* host-held queue, cancel with a kill fallback. The RPC ANSWER is the
|
|
9
9
|
* runtime's own turn end and is recorded as an event with a turn_ended event;
|
|
10
|
-
* a rejected RPC is likewise the runtime's word
|
|
10
|
+
* a rejected prompt RPC is likewise the runtime's word. A refused steer
|
|
11
|
+
* instead drops that input and preserves the active turn's outcome. The
|
|
11
12
|
* process dying is not; that is the `exited` response the session records
|
|
12
13
|
* from its exit observer. One turn may span several prompt RPCs (grok's
|
|
13
14
|
* send-now steer): each answer is its own event; the turn_ended event rides
|
|
14
|
-
* the answer
|
|
15
|
+
* the final answer, carrying the latest non-refused request's outcome.
|
|
16
|
+
* Otherwise the original prompt's answer ends the turn independently of steer replies.
|
|
15
17
|
*/
|
|
16
18
|
export interface ActiveTurn {
|
|
17
19
|
/** The prompt request that opened this turn; null for a spontaneous (queue-drained) turn. */
|
|
@@ -21,7 +23,6 @@ export interface ActiveTurn {
|
|
|
21
23
|
readonly outcomes: Map<number, TurnOutcome>;
|
|
22
24
|
readonly pending: Set<number>;
|
|
23
25
|
abortRequested: boolean;
|
|
24
|
-
latestRequest: number;
|
|
25
26
|
fallback: NodeJS.Timeout | null;
|
|
26
27
|
}
|
|
27
28
|
/** The agent advertised image prompts in `initialize` (`agentCapabilities.promptCapabilities.image`). */
|
|
@@ -31,7 +32,7 @@ export interface AcpTurns {
|
|
|
31
32
|
/** Open a turn with one prompt RPC; rejected when the process is gone or its images can't go (`inputImagesRefusal`). */
|
|
32
33
|
begin(request: RequestRecord | null, input: string, images?: readonly InputImage[]): ResponseBody;
|
|
33
34
|
/** Another prompt RPC inside the active turn (the profile's steer params); rejected like `begin`. */
|
|
34
|
-
steer(state: ActiveTurn, input: string,
|
|
35
|
+
steer(state: ActiveTurn, input: string, options: InputOptions | undefined, extraParams: JsonRecord): Promise<ResponseBody>;
|
|
35
36
|
/** session/cancel, then a bounded wait after which the process is killed. */
|
|
36
37
|
abort(state: ActiveTurn): Promise<ResponseBody>;
|
|
37
38
|
/** Hold input for the next turn, drained when the active one closes; rejected like `begin`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,
|
|
1
|
+
{"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAEZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EAEnB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAQxD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CACjC;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAE/D;AAUD,MAAM,WAAW,QAAQ;IACvB,MAAM,IAAI,UAAU,GAAG,IAAI,CAAC;IAC5B,wHAAwH;IACxH,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,CAAC;IAClG,qGAAqG;IACrG,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3H,6EAA6E;IAC7E,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,+FAA+F;IAC/F,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnH,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACxC,uGAAuG;IACvG,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;CAC5D,GAAG,QAAQ,CA0KX"}
|
package/dist/shared/acp/turns.js
CHANGED
|
@@ -37,11 +37,21 @@ export function createAcpTurns(deps) {
|
|
|
37
37
|
};
|
|
38
38
|
const finishRequest = (state, requestNumber, frame, outcome) => {
|
|
39
39
|
state.pending.delete(requestNumber);
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
if (outcome !== null) {
|
|
41
|
+
state.outcomes.set(requestNumber, outcome);
|
|
42
|
+
}
|
|
43
|
+
const closes = active === state && (profile.steerSupersedesPrompt === true ? state.pending.size === 0 : !frame.steered);
|
|
42
44
|
const events = [];
|
|
45
|
+
if (frame.dropped !== undefined) {
|
|
46
|
+
events.push({ kind: "input_dropped", inputId: frame.dropped, reason: "runtime_refused" });
|
|
47
|
+
}
|
|
43
48
|
if (closes) {
|
|
44
|
-
|
|
49
|
+
const terminal = profile.steerSupersedesPrompt === true
|
|
50
|
+
? state.outcomes.get(Math.max(...state.outcomes.keys()))
|
|
51
|
+
: outcome;
|
|
52
|
+
if (terminal !== null && terminal !== undefined) {
|
|
53
|
+
events.push({ kind: "turn_ended", outcome: terminal });
|
|
54
|
+
}
|
|
45
55
|
}
|
|
46
56
|
if (frame.context !== null) {
|
|
47
57
|
events.push(frame.context);
|
|
@@ -51,10 +61,9 @@ export function createAcpTurns(deps) {
|
|
|
51
61
|
closeTurn(state);
|
|
52
62
|
}
|
|
53
63
|
};
|
|
54
|
-
const startVendorPrompt = (state, prompt, extraParams = {}) => {
|
|
64
|
+
const startVendorPrompt = (state, prompt, extraParams = {}, steered) => {
|
|
55
65
|
nextRequest += 1;
|
|
56
66
|
const requestNumber = nextRequest;
|
|
57
|
-
state.latestRequest = requestNumber;
|
|
58
67
|
state.pending.add(requestNumber);
|
|
59
68
|
void (async () => {
|
|
60
69
|
try {
|
|
@@ -71,6 +80,7 @@ export function createAcpTurns(deps) {
|
|
|
71
80
|
type: methods.agent.session.prompt,
|
|
72
81
|
native: result,
|
|
73
82
|
context: usage.event,
|
|
83
|
+
steered: steered !== undefined,
|
|
74
84
|
}, profile.promptOutcome?.(result) ?? defaultAcpPromptOutcome(result));
|
|
75
85
|
}
|
|
76
86
|
catch (error) {
|
|
@@ -87,7 +97,9 @@ export function createAcpTurns(deps) {
|
|
|
87
97
|
type: `${methods.agent.session.prompt}/error`,
|
|
88
98
|
native: acpErrorNative(error),
|
|
89
99
|
context: null,
|
|
90
|
-
|
|
100
|
+
steered: steered !== undefined,
|
|
101
|
+
...(steered === undefined ? {} : { dropped: steered.inputId }),
|
|
102
|
+
}, steered === undefined ? outcome : null);
|
|
91
103
|
}
|
|
92
104
|
})();
|
|
93
105
|
};
|
|
@@ -102,7 +114,6 @@ export function createAcpTurns(deps) {
|
|
|
102
114
|
outcomes: new Map(),
|
|
103
115
|
pending: new Set(),
|
|
104
116
|
abortRequested: false,
|
|
105
|
-
latestRequest: 0,
|
|
106
117
|
fallback: null,
|
|
107
118
|
};
|
|
108
119
|
active = state;
|
|
@@ -125,13 +136,13 @@ export function createAcpTurns(deps) {
|
|
|
125
136
|
return {
|
|
126
137
|
active: () => active,
|
|
127
138
|
begin,
|
|
128
|
-
async steer(state, input,
|
|
139
|
+
async steer(state, input, options, extraParams) {
|
|
129
140
|
await runtime.spawned;
|
|
130
141
|
if (runtime.closed) {
|
|
131
142
|
return gone();
|
|
132
143
|
}
|
|
133
|
-
return withInputImages(capabilities, images, (loaded) => {
|
|
134
|
-
startVendorPrompt(state, acpPrompt(input, loaded), extraParams);
|
|
144
|
+
return withInputImages(capabilities, options?.images, (loaded) => {
|
|
145
|
+
startVendorPrompt(state, acpPrompt(input, loaded), extraParams, { inputId: options?.inputId });
|
|
135
146
|
return { kind: "accepted" };
|
|
136
147
|
});
|
|
137
148
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { resolveExecutable, resolveExecutableAll } from "./resolve.js";
|
|
2
|
-
export { runIsolated, type IsolatedResult } from "./isolated.js";
|
|
2
|
+
export { isolatedOutput, runIsolated, type IsolatedResult } from "./isolated.js";
|
|
3
3
|
export type { ExecutableResult, ExecutableRunner, ExecutableRunOptions } from "./run.js";
|
|
4
4
|
export { runExecutable } from "./run.js";
|
|
5
5
|
export { readExecutableVersion, type VersionReader } from "./version.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { resolveExecutable, resolveExecutableAll } from "./resolve.js";
|
|
2
|
-
export { runIsolated } from "./isolated.js";
|
|
2
|
+
export { isolatedOutput, runIsolated } from "./isolated.js";
|
|
3
3
|
export { runExecutable } from "./run.js";
|
|
4
4
|
export { readExecutableVersion } from "./version.js";
|
|
5
5
|
export { KILL_GRACE_MS, killGraceMs, killProcessTree, OWN_PROCESS_GROUP, requiresShell, signalProcessGroup, spawnLineProcess, trackOwnedProcess, } from "./process.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAsB,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -16,4 +16,9 @@ export interface IsolatedRunOptions {
|
|
|
16
16
|
* or left running after it.
|
|
17
17
|
*/
|
|
18
18
|
export declare function runIsolated(command: string, args: readonly string[], options: IsolatedRunOptions): Promise<IsolatedResult>;
|
|
19
|
+
/**
|
|
20
|
+
* A run's stdout then stderr, verbatim, with oar's note when the timeout
|
|
21
|
+
* stopped it. `what` names the command for that note ("updater", "installer").
|
|
22
|
+
*/
|
|
23
|
+
export declare function isolatedOutput(result: IsolatedResult, timeoutMs: number, what: string): string;
|
|
19
24
|
//# sourceMappingURL=isolated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/isolated.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAwBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyChI"}
|
|
1
|
+
{"version":3,"file":"isolated.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/isolated.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAwBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyChI;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9F"}
|
|
@@ -68,4 +68,12 @@ export async function runIsolated(command, args, options) {
|
|
|
68
68
|
clearTimeout(timer);
|
|
69
69
|
return { exitCode: stop.timedOut ? null : exitCode, timedOut: stop.timedOut, stdout, stderr };
|
|
70
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* A run's stdout then stderr, verbatim, with oar's note when the timeout
|
|
73
|
+
* stopped it. `what` names the command for that note ("updater", "installer").
|
|
74
|
+
*/
|
|
75
|
+
export function isolatedOutput(result, timeoutMs, what) {
|
|
76
|
+
const output = `${result.stdout}${result.stderr}`;
|
|
77
|
+
return result.timedOut ? `${output}\n[oar: stopped the ${what} after ${String(timeoutMs)} ms]\n` : output;
|
|
78
|
+
}
|
|
71
79
|
//# sourceMappingURL=isolated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated.js","sourceRoot":"","sources":["../../../src/shared/executable/isolated.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AActH,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;AACjC,yGAAyG;AACzG,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED,2GAA2G;AAC3G,SAAS,QAAQ,CAAC,KAAmB;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrC,2EAA2E;IAC3E,wCAAwC;IACxC,UAAU,CAAC,GAAG,EAAE;QACd,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAuB,EAAE,OAA2B;IACrG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACjC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;QAC5D,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC;YACZ,UAAU,CAAC,GAAG,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YAC1C,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAChG,CAAC"}
|
|
1
|
+
{"version":3,"file":"isolated.js","sourceRoot":"","sources":["../../../src/shared/executable/isolated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { InstallLine, InstallPlan, InstallPlanner, InstallUnsupported, Installer } from "../contracts/install.js";
|
|
2
|
+
import type { AvailableInstallation, InstallationProbe } from "../contracts/installation.js";
|
|
3
|
+
/**
|
|
4
|
+
* A vendor's documented `curl … | sh` installer for macOS and Linux. Every
|
|
5
|
+
* built-in one installs per user, under the home directory, into the layout
|
|
6
|
+
* the runtime's own updater recognizes.
|
|
7
|
+
*/
|
|
8
|
+
export interface ScriptInstallMethod {
|
|
9
|
+
/** The vendor's page that documents the method: the plan's `source`. */
|
|
10
|
+
readonly source: string;
|
|
11
|
+
/** The command line as the vendor documents it (with its own non-interactive switch, if any), run by `sh -c`. */
|
|
12
|
+
readonly line: string;
|
|
13
|
+
/** The programs the line runs, which must be on PATH. */
|
|
14
|
+
readonly tools: readonly string[];
|
|
15
|
+
/** The directories the installer writes, honoring the installer's own location variables. */
|
|
16
|
+
readonly writes: () => readonly string[];
|
|
17
|
+
/** How the vendor installs on Windows, which oar does not run, as a sentence for the `platform` detail. */
|
|
18
|
+
readonly windows: string;
|
|
19
|
+
}
|
|
20
|
+
/** An installer's location variable when it is set and not empty, otherwise its default. */
|
|
21
|
+
export declare function installDir(variable: string | undefined, fallback: string): string;
|
|
22
|
+
/** What a plan reads about this machine. */
|
|
23
|
+
export interface InstallHost {
|
|
24
|
+
readonly platform: NodeJS.Platform;
|
|
25
|
+
readonly arch: string;
|
|
26
|
+
/** The tool's path on PATH, or null. */
|
|
27
|
+
readonly locate: (tool: string) => string | null;
|
|
28
|
+
/** The existing directory at or above `dir` that this user cannot write, or null when the installer could create `dir`. */
|
|
29
|
+
readonly unwritable: (dir: string) => string | null;
|
|
30
|
+
}
|
|
31
|
+
/** The nearest existing directory at or above `dir`, when this user cannot write it; null when `dir` can be created or written. */
|
|
32
|
+
export declare function unwritableAncestor(dir: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* The plan for a script installer on `host`: `platform` off macOS and Linux
|
|
35
|
+
* (the vendors' Windows installers are PowerShell scripts oar has not
|
|
36
|
+
* verified, so their command is only named), `missing_tool` when the line's
|
|
37
|
+
* programs are not on PATH, `requires_privileges` when a directory it writes
|
|
38
|
+
* is not this user's to write (an install location variable pointing at
|
|
39
|
+
* `/usr/local`, say), which the installer would otherwise discover midway.
|
|
40
|
+
*/
|
|
41
|
+
export declare function scriptInstallPlanOn(method: ScriptInstallMethod, host: InstallHost): InstallPlan;
|
|
42
|
+
/** A runtime with one release line: a `line` is refused, never ignored. */
|
|
43
|
+
export declare function scriptInstallPlan(method: ScriptInstallMethod, host?: InstallHost): InstallPlanner;
|
|
44
|
+
/** A runtime's parallel release lines, each with its own script installer. */
|
|
45
|
+
export interface LinedInstallMethods {
|
|
46
|
+
readonly lines: readonly InstallLine[];
|
|
47
|
+
readonly methods: Readonly<Record<string, ScriptInstallMethod>>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The plan for the line `options.line` names: `line_required` without one
|
|
51
|
+
* (oar does not choose a line for the person), `unknown_line` for a line the
|
|
52
|
+
* runtime does not ship.
|
|
53
|
+
*/
|
|
54
|
+
export declare function linedInstallPlan(lined: LinedInstallMethods, host?: InstallHost): InstallPlanner;
|
|
55
|
+
/** A runtime whose vendor offers nothing oar can run: its plan and its install give this answer. */
|
|
56
|
+
export declare function unsupportedInstallPlan(unsupported: InstallUnsupported): InstallPlanner;
|
|
57
|
+
/** The release line an installation belongs to, read from its version; undefined when it does not tell. */
|
|
58
|
+
export type InstallLineOf = (installation: AvailableInstallation) => string | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* An installer from the runtime's installation probe and its plan. The
|
|
61
|
+
* probe decides both ends: an installation it already finds means nothing
|
|
62
|
+
* runs (`already_installed`, whichever line was asked for, so a copy of one
|
|
63
|
+
* line is never replaced by another), and after the plan's steps ran, only
|
|
64
|
+
* an available installation it finds is `installed`, whatever the installer
|
|
65
|
+
* exited with: what the probe finds is what a session would run, and a copy
|
|
66
|
+
* the installer put where the probe does not look is a probe to fix.
|
|
67
|
+
* `lineOf` names the line of what the probe found, for a runtime with lines.
|
|
68
|
+
*/
|
|
69
|
+
export declare function planInstaller(probe: InstallationProbe, plan: InstallPlanner, lineOf?: InstallLineOf): Installer;
|
|
70
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/shared/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EAEX,WAAW,EACX,cAAc,EAGd,kBAAkB,EAClB,SAAS,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAwB,MAAM,8BAA8B,CAAC;AAMnH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iHAAiH;IACjH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACzC,2GAA2G;IAC3G,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,2HAA2H;IAC3H,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACrD;AAcD,mIAAmI;AACnI,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAYD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,CA+B/F;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,GAAE,WAAyB,GAAG,cAAc,CAQ9G;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,GAAE,WAAyB,GAAG,cAAc,CAa5G;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,GAAG,cAAc,CAKtF;AAoCD,2GAA2G;AAC3G,MAAM,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,MAAM,GAAG,SAAS,CAAC;AAOxF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAiB/G"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { accessSync, constants, existsSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { isolatedOutput, resolveExecutable, runIsolated } from "./executable/index.js";
|
|
4
|
+
import { updaterEnv } from "./update.js";
|
|
5
|
+
const INSTALL_TIMEOUT_MS = 600_000;
|
|
6
|
+
/** An installer's location variable when it is set and not empty, otherwise its default. */
|
|
7
|
+
export function installDir(variable, fallback) {
|
|
8
|
+
return variable === undefined || variable === "" ? fallback : variable;
|
|
9
|
+
}
|
|
10
|
+
function nearestExisting(dir) {
|
|
11
|
+
let current = path.resolve(dir);
|
|
12
|
+
while (!existsSync(current)) {
|
|
13
|
+
const parent = path.dirname(current);
|
|
14
|
+
if (parent === current) {
|
|
15
|
+
return current;
|
|
16
|
+
}
|
|
17
|
+
current = parent;
|
|
18
|
+
}
|
|
19
|
+
return current;
|
|
20
|
+
}
|
|
21
|
+
/** The nearest existing directory at or above `dir`, when this user cannot write it; null when `dir` can be created or written. */
|
|
22
|
+
export function unwritableAncestor(dir) {
|
|
23
|
+
const existing = nearestExisting(dir);
|
|
24
|
+
try {
|
|
25
|
+
accessSync(existing, constants.W_OK);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return existing;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const thisMachine = {
|
|
33
|
+
platform: process.platform,
|
|
34
|
+
arch: process.arch,
|
|
35
|
+
locate: (tool) => resolveExecutable(tool),
|
|
36
|
+
unwritable: unwritableAncestor,
|
|
37
|
+
};
|
|
38
|
+
const SCRIPT_PLATFORMS = new Set(["darwin", "linux"]);
|
|
39
|
+
const SCRIPT_ARCHES = new Set(["x64", "arm64"]);
|
|
40
|
+
/**
|
|
41
|
+
* The plan for a script installer on `host`: `platform` off macOS and Linux
|
|
42
|
+
* (the vendors' Windows installers are PowerShell scripts oar has not
|
|
43
|
+
* verified, so their command is only named), `missing_tool` when the line's
|
|
44
|
+
* programs are not on PATH, `requires_privileges` when a directory it writes
|
|
45
|
+
* is not this user's to write (an install location variable pointing at
|
|
46
|
+
* `/usr/local`, say), which the installer would otherwise discover midway.
|
|
47
|
+
*/
|
|
48
|
+
export function scriptInstallPlanOn(method, host) {
|
|
49
|
+
if (!SCRIPT_PLATFORMS.has(host.platform)) {
|
|
50
|
+
return {
|
|
51
|
+
kind: "unsupported",
|
|
52
|
+
reason: "platform",
|
|
53
|
+
detail: host.platform === "win32"
|
|
54
|
+
? `oar runs this installer on macOS and Linux only. On Windows, ${method.windows}`
|
|
55
|
+
: `the installer supports macOS and Linux, not ${host.platform}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (!SCRIPT_ARCHES.has(host.arch)) {
|
|
59
|
+
return { kind: "unsupported", reason: "platform", detail: `the installer has no build for ${host.arch}` };
|
|
60
|
+
}
|
|
61
|
+
for (const tool of ["sh", ...method.tools]) {
|
|
62
|
+
if (host.locate(tool) === null) {
|
|
63
|
+
return { kind: "unsupported", reason: "missing_tool", detail: tool };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const dir of method.writes()) {
|
|
67
|
+
const blocked = host.unwritable(dir);
|
|
68
|
+
if (blocked !== null) {
|
|
69
|
+
return { kind: "unsupported", reason: "requires_privileges", detail: `the installer writes ${dir}, and ${blocked} is not writable by this user` };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
kind: "plan",
|
|
74
|
+
steps: [{ command: ["sh", "-c", method.line], display: method.line }],
|
|
75
|
+
source: method.source,
|
|
76
|
+
network: true,
|
|
77
|
+
privileges: false,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** A runtime with one release line: a `line` is refused, never ignored. */
|
|
81
|
+
export function scriptInstallPlan(method, host = thisMachine) {
|
|
82
|
+
return async (options = {}) => {
|
|
83
|
+
await Promise.resolve();
|
|
84
|
+
if (options.line !== undefined) {
|
|
85
|
+
return { kind: "unsupported", reason: "unknown_line", detail: `this runtime ships one release line; leave line ${JSON.stringify(options.line)} out` };
|
|
86
|
+
}
|
|
87
|
+
return scriptInstallPlanOn(method, host);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The plan for the line `options.line` names: `line_required` without one
|
|
92
|
+
* (oar does not choose a line for the person), `unknown_line` for a line the
|
|
93
|
+
* runtime does not ship.
|
|
94
|
+
*/
|
|
95
|
+
export function linedInstallPlan(lined, host = thisMachine) {
|
|
96
|
+
const names = lined.lines.map((entry) => entry.line).join(", ");
|
|
97
|
+
return async (options = {}) => {
|
|
98
|
+
await Promise.resolve();
|
|
99
|
+
if (options.line === undefined) {
|
|
100
|
+
return { kind: "unsupported", reason: "line_required", detail: `choose a release line: ${names}` };
|
|
101
|
+
}
|
|
102
|
+
const method = Object.hasOwn(lined.methods, options.line) ? lined.methods[options.line] : undefined;
|
|
103
|
+
if (method === undefined) {
|
|
104
|
+
return { kind: "unsupported", reason: "unknown_line", detail: `${JSON.stringify(options.line)} is not one of ${names}` };
|
|
105
|
+
}
|
|
106
|
+
return scriptInstallPlanOn(method, host);
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** A runtime whose vendor offers nothing oar can run: its plan and its install give this answer. */
|
|
110
|
+
export function unsupportedInstallPlan(unsupported) {
|
|
111
|
+
return async () => {
|
|
112
|
+
await Promise.resolve();
|
|
113
|
+
return unsupported;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Run the steps in order, without stdin or a terminal, stopping at the first that fails; one deadline bounds them all. */
|
|
117
|
+
async function runSteps(steps, timeoutMs) {
|
|
118
|
+
const deadline = Date.now() + timeoutMs;
|
|
119
|
+
let output = "";
|
|
120
|
+
let exitCode = 0;
|
|
121
|
+
for (const step of steps) {
|
|
122
|
+
const [command, ...args] = step.command;
|
|
123
|
+
if (command === undefined) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const run = await runIsolated(command, args, { env: updaterEnv(), timeoutMs: Math.max(deadline - Date.now(), 1) });
|
|
127
|
+
output += isolatedOutput(run, timeoutMs, "installer");
|
|
128
|
+
exitCode = run.exitCode;
|
|
129
|
+
if (run.timedOut || exitCode !== 0) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return { exitCode, output };
|
|
134
|
+
}
|
|
135
|
+
async function probeAfter(probe) {
|
|
136
|
+
try {
|
|
137
|
+
return { snapshot: await probe(), note: "" };
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
141
|
+
return { note: `\n[oar: the installation probe after the installer failed: ${message}]\n` };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function withLine(installation, lineOf) {
|
|
145
|
+
const line = lineOf?.(installation);
|
|
146
|
+
return line === undefined ? { installation } : { installation, line };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* An installer from the runtime's installation probe and its plan. The
|
|
150
|
+
* probe decides both ends: an installation it already finds means nothing
|
|
151
|
+
* runs (`already_installed`, whichever line was asked for, so a copy of one
|
|
152
|
+
* line is never replaced by another), and after the plan's steps ran, only
|
|
153
|
+
* an available installation it finds is `installed`, whatever the installer
|
|
154
|
+
* exited with: what the probe finds is what a session would run, and a copy
|
|
155
|
+
* the installer put where the probe does not look is a probe to fix.
|
|
156
|
+
* `lineOf` names the line of what the probe found, for a runtime with lines.
|
|
157
|
+
*/
|
|
158
|
+
export function planInstaller(probe, plan, lineOf) {
|
|
159
|
+
return async (options = {}) => {
|
|
160
|
+
const before = await probe();
|
|
161
|
+
if (before.kind === "available") {
|
|
162
|
+
return { kind: "already_installed", ...withLine(before, lineOf) };
|
|
163
|
+
}
|
|
164
|
+
const planned = await plan(options);
|
|
165
|
+
if (planned.kind === "unsupported") {
|
|
166
|
+
return planned;
|
|
167
|
+
}
|
|
168
|
+
const run = await runSteps(planned.steps, options.timeoutMs ?? INSTALL_TIMEOUT_MS);
|
|
169
|
+
const after = await probeAfter(probe);
|
|
170
|
+
if (after.snapshot?.kind === "available") {
|
|
171
|
+
return { kind: "installed", ...withLine(after.snapshot, lineOf), output: run.output };
|
|
172
|
+
}
|
|
173
|
+
return { kind: "failed", exitCode: run.exitCode, output: `${run.output}${after.note}` };
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/shared/install.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/update.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { AvailableInstallation, ExecutableInstallation } from "../contracts
|
|
|
2
2
|
import type { UpdateCheck, UpdateChecker, UpgradeOptions, UpgradeResult } from "../contracts/update.js";
|
|
3
3
|
import { type IsolatedResult } from "./executable/index.js";
|
|
4
4
|
export declare const CHECK_TIMEOUT_MS = 20000;
|
|
5
|
-
/** The release version inside a `--version` line or release pointer: a semver. */
|
|
5
|
+
/** The release version inside a `--version` line or release pointer: a semver, after a `v` or not (`opencode v2.0.26`). */
|
|
6
6
|
export declare function releaseVersion(text: string): string | undefined;
|
|
7
7
|
/** Numeric `major.minor.patch` order; prerelease tags are ignored. */
|
|
8
8
|
export declare function versionAtLeast(version: string, floor: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/shared/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/shared/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAAsD,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGhH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAKvC,2HAA2H;AAC3H,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/D;AAOD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAStE;AAID;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAElF;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1G;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAElE,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,qBAAqB,GAAG,gBAAgB,CAetF;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAahH;AAED,iFAAiF;AACjF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC,CAW7G;AAED,4FAA4F;AAC5F,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAGtE;AAWD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAsBxB"}
|
package/dist/shared/update.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { realpathSync } from "node:fs";
|
|
2
|
-
import { readExecutableVersion, runIsolated } from "./executable/index.js";
|
|
2
|
+
import { isolatedOutput, readExecutableVersion, runIsolated } from "./executable/index.js";
|
|
3
3
|
import { parseJson } from "./json.js";
|
|
4
4
|
export const CHECK_TIMEOUT_MS = 20_000;
|
|
5
5
|
const UPGRADE_TIMEOUT_MS = 600_000;
|
|
6
6
|
/** The slowest installation probe (kimi) allows 30 s for `--version`; a kimi start after an upgrade also swaps the staged binary in. */
|
|
7
7
|
const VERSION_TIMEOUT_MS = 30_000;
|
|
8
|
-
/** The release version inside a `--version` line or release pointer: a semver. */
|
|
8
|
+
/** The release version inside a `--version` line or release pointer: a semver, after a `v` or not (`opencode v2.0.26`). */
|
|
9
9
|
export function releaseVersion(text) {
|
|
10
|
-
return /\
|
|
10
|
+
return /\bv?(\d+\.\d+\.\d+(?:-[\w.]+)?)\b/u.exec(text)?.[1];
|
|
11
11
|
}
|
|
12
12
|
function numericParts(value) {
|
|
13
13
|
const release = value.split("-")[0] ?? "";
|
|
@@ -105,10 +105,6 @@ async function versionNow(command) {
|
|
|
105
105
|
return undefined;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
function runOutput(run, timeoutMs) {
|
|
109
|
-
const output = `${run.stdout}${run.stderr}`;
|
|
110
|
-
return run.timedOut ? `${output}\n[oar: stopped the updater after ${String(timeoutMs)} ms]\n` : output;
|
|
111
|
-
}
|
|
112
108
|
/**
|
|
113
109
|
* Read the executable's version, check, then run the runtime's own updater
|
|
114
110
|
* on the same executable and judge the outcome by the version it reports
|
|
@@ -131,7 +127,7 @@ export async function upgradeExecutable(installation, updater, options = {}) {
|
|
|
131
127
|
const before = now ?? (check.kind === "ok" ? check.installed : undefined);
|
|
132
128
|
const timeoutMs = options.timeoutMs ?? UPGRADE_TIMEOUT_MS;
|
|
133
129
|
const run = await runIsolated(installation.command, updater.args, { env: updaterEnv(), timeoutMs });
|
|
134
|
-
const output =
|
|
130
|
+
const output = isolatedOutput(run, timeoutMs, "updater");
|
|
135
131
|
const after = await versionNow(installation.command);
|
|
136
132
|
if (before !== undefined && after !== undefined && after !== before) {
|
|
137
133
|
return { kind: "upgraded", from: before, to: after, output };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/shared/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/shared/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botiverse/oar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "A programming interface for all agent harnesses: provider-independent contracts for controlling and observing agent runtimes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|