@botiverse/oar 0.10.3 → 0.11.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 +8 -0
- package/dist/contracts/runtime.d.ts +5 -0
- package/dist/contracts/runtime.d.ts.map +1 -1
- package/dist/contracts/runtime.js.map +1 -1
- package/dist/contracts/update.d.ts +77 -0
- package/dist/contracts/update.d.ts.map +1 -0
- package/dist/contracts/update.js +2 -0
- package/dist/contracts/update.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtimes/antigravity/index.d.ts +1 -0
- package/dist/runtimes/antigravity/index.d.ts.map +1 -1
- package/dist/runtimes/antigravity/index.js +2 -0
- package/dist/runtimes/antigravity/index.js.map +1 -1
- package/dist/runtimes/antigravity/update.d.ts +11 -0
- package/dist/runtimes/antigravity/update.d.ts.map +1 -0
- package/dist/runtimes/antigravity/update.js +28 -0
- package/dist/runtimes/antigravity/update.js.map +1 -0
- package/dist/runtimes/claude/index.d.ts +3 -0
- package/dist/runtimes/claude/index.d.ts.map +1 -1
- package/dist/runtimes/claude/index.js +3 -0
- package/dist/runtimes/claude/index.js.map +1 -1
- package/dist/runtimes/claude/update.d.ts +32 -0
- package/dist/runtimes/claude/update.d.ts.map +1 -0
- package/dist/runtimes/claude/update.js +88 -0
- package/dist/runtimes/claude/update.js.map +1 -0
- package/dist/runtimes/codex/index.d.ts +3 -0
- package/dist/runtimes/codex/index.d.ts.map +1 -1
- package/dist/runtimes/codex/index.js +3 -0
- package/dist/runtimes/codex/index.js.map +1 -1
- package/dist/runtimes/codex/update.d.ts +14 -0
- package/dist/runtimes/codex/update.d.ts.map +1 -0
- package/dist/runtimes/codex/update.js +47 -0
- package/dist/runtimes/codex/update.js.map +1 -0
- package/dist/runtimes/cursor/index.d.ts +3 -0
- package/dist/runtimes/cursor/index.d.ts.map +1 -1
- package/dist/runtimes/cursor/index.js +3 -0
- package/dist/runtimes/cursor/index.js.map +1 -1
- package/dist/runtimes/cursor/update.d.ts +19 -0
- package/dist/runtimes/cursor/update.d.ts.map +1 -0
- package/dist/runtimes/cursor/update.js +88 -0
- package/dist/runtimes/cursor/update.js.map +1 -0
- package/dist/runtimes/grok/index.d.ts +3 -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/update.d.ts +12 -0
- package/dist/runtimes/grok/update.d.ts.map +1 -0
- package/dist/runtimes/grok/update.js +37 -0
- package/dist/runtimes/grok/update.js.map +1 -0
- 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/update.d.ts +18 -0
- package/dist/runtimes/kimi/update.d.ts.map +1 -0
- package/dist/runtimes/kimi/update.js +56 -0
- package/dist/runtimes/kimi/update.js.map +1 -0
- package/dist/shared/executable/index.d.ts +1 -0
- package/dist/shared/executable/index.d.ts.map +1 -1
- package/dist/shared/executable/index.js +1 -0
- package/dist/shared/executable/index.js.map +1 -1
- package/dist/shared/executable/isolated.d.ts +19 -0
- package/dist/shared/executable/isolated.d.ts.map +1 -0
- package/dist/shared/executable/isolated.js +73 -0
- package/dist/shared/executable/isolated.js.map +1 -0
- package/dist/shared/update.d.ts +56 -0
- package/dist/shared/update.d.ts.map +1 -0
- package/dist/shared/update.js +139 -0
- package/dist/shared/update.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,12 +2,15 @@ import { runtimeBrands } from "../../brands.js";
|
|
|
2
2
|
import { defineRuntime } from "../../contracts/runtime.js";
|
|
3
3
|
import { cursorInstallation } from "./installation.js";
|
|
4
4
|
import { cursorListModels } from "./list-models.js";
|
|
5
|
+
import { cursorCheckUpdate, cursorUpgrade } from "./update.js";
|
|
5
6
|
import { cursorSession } from "./session.js";
|
|
6
7
|
export const cursorRuntime = defineRuntime({
|
|
7
8
|
id: "cursor",
|
|
8
9
|
brand: runtimeBrands.cursor,
|
|
9
10
|
installation: cursorInstallation,
|
|
10
11
|
listModels: cursorListModels,
|
|
12
|
+
checkUpdate: cursorCheckUpdate,
|
|
13
|
+
upgrade: cursorUpgrade,
|
|
11
14
|
session: cursorSession,
|
|
12
15
|
});
|
|
13
16
|
export { cursorListModels, projectCursorModels } from "./list-models.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,aAAa,CAAC,MAAM;IAC3B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AvailableInstallation } from "../../contracts/installation.js";
|
|
2
|
+
import type { UpdateCheck, UpdateChecker, UpgradeOptions, UpgradeResult } from "../../contracts/update.js";
|
|
3
|
+
/**
|
|
4
|
+
* cursor-agent 2026.09.28 reports `latestVersion` and a `latestStatus` of
|
|
5
|
+
* `up_to_date`, `update_available`, `disabled` (the `static` channel) or
|
|
6
|
+
* `unavailable` in `about --format json`, without a login. Builds before it
|
|
7
|
+
* (2026.08.11) report neither; for them the check asks the release service
|
|
8
|
+
* cursor-agent's own updater asks, for the configured channel.
|
|
9
|
+
*/
|
|
10
|
+
export declare function projectCursorAbout(installed: string, about: unknown): UpdateCheck;
|
|
11
|
+
export interface CursorUpdateSources {
|
|
12
|
+
/** Connect RPC answering `{ channel }` with `{ version, url }`. */
|
|
13
|
+
readonly releases: string;
|
|
14
|
+
readonly configPath: () => string;
|
|
15
|
+
}
|
|
16
|
+
export declare function cursorUpdateCheck(from?: CursorUpdateSources): UpdateChecker;
|
|
17
|
+
export declare const cursorCheckUpdate: UpdateChecker;
|
|
18
|
+
export declare function cursorUpgrade(installation: AvailableInstallation, options?: UpgradeOptions): Promise<UpgradeResult>;
|
|
19
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/runtimes/cursor/update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAsB,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAY/H;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAkBjF;AAED,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC;CACnC;AAsCD,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,mBAA6B,GAAG,aAAa,CAcpF;AAED,eAAO,MAAM,iBAAiB,eAAsB,CAAC;AAErD,wBAAsB,aAAa,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAGzH"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { asRecord, parseJson } from "../../shared/json.js";
|
|
5
|
+
import { CHECK_TIMEOUT_MS, comparedCheck, executableUpdate, runCheckCommand, upgradeExecutable, } from "../../shared/update.js";
|
|
6
|
+
const SOURCE = "cursor-agent about --format json";
|
|
7
|
+
/**
|
|
8
|
+
* cursor-agent 2026.09.28 reports `latestVersion` and a `latestStatus` of
|
|
9
|
+
* `up_to_date`, `update_available`, `disabled` (the `static` channel) or
|
|
10
|
+
* `unavailable` in `about --format json`, without a login. Builds before it
|
|
11
|
+
* (2026.08.11) report neither; for them the check asks the release service
|
|
12
|
+
* cursor-agent's own updater asks, for the configured channel.
|
|
13
|
+
*/
|
|
14
|
+
export function projectCursorAbout(installed, about) {
|
|
15
|
+
const fields = asRecord(about);
|
|
16
|
+
const status = fields?.latestStatus;
|
|
17
|
+
if (status === "disabled") {
|
|
18
|
+
return { kind: "unavailable", reason: "updates_disabled", detail: "cursor-agent is on the static channel", source: SOURCE };
|
|
19
|
+
}
|
|
20
|
+
const latest = fields?.latestVersion;
|
|
21
|
+
if (typeof latest !== "string" || status === "unavailable") {
|
|
22
|
+
return { kind: "unavailable", reason: "lookup_failed", detail: "cursor-agent reports no latest version", source: SOURCE };
|
|
23
|
+
}
|
|
24
|
+
const check = comparedCheck(installed, latest, SOURCE);
|
|
25
|
+
if (check.kind !== "ok") {
|
|
26
|
+
return check;
|
|
27
|
+
}
|
|
28
|
+
if (status === "update_available" || status === "up_to_date") {
|
|
29
|
+
return { ...check, updateAvailable: status === "update_available" };
|
|
30
|
+
}
|
|
31
|
+
return check;
|
|
32
|
+
}
|
|
33
|
+
const sources = {
|
|
34
|
+
releases: "https://api2.cursor.sh/aiserver.v1.DashboardService/GetCliDownloadUrl",
|
|
35
|
+
configPath: () => path.join(homedir(), ".cursor", "cli-config.json"),
|
|
36
|
+
};
|
|
37
|
+
function cursorChannel(configPath) {
|
|
38
|
+
try {
|
|
39
|
+
const channel = asRecord(parseJson(readFileSync(configPath, "utf8")))?.channel;
|
|
40
|
+
return typeof channel === "string" && channel !== "" ? channel : "prod";
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return "prod";
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function releaseServiceCheck(installed, from, timeoutMs) {
|
|
47
|
+
const channel = cursorChannel(from.configPath());
|
|
48
|
+
if (channel === "static") {
|
|
49
|
+
return { kind: "unavailable", reason: "updates_disabled", detail: "cursor-agent is on the static channel" };
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch(from.releases, {
|
|
53
|
+
method: "POST",
|
|
54
|
+
headers: { "content-type": "application/json", "connect-protocol-version": "1" },
|
|
55
|
+
body: JSON.stringify({ channel }),
|
|
56
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
57
|
+
});
|
|
58
|
+
const version = asRecord(parseJson(await response.text()))?.version;
|
|
59
|
+
return response.ok && typeof version === "string"
|
|
60
|
+
? comparedCheck(installed, version, from.releases, channel)
|
|
61
|
+
: { kind: "unavailable", reason: "lookup_failed", detail: `HTTP ${String(response.status)}`, source: from.releases };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
65
|
+
return { kind: "unavailable", reason: "lookup_failed", detail, source: from.releases };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function cursorUpdateCheck(from = sources) {
|
|
69
|
+
return async (installation, options = {}) => {
|
|
70
|
+
const update = executableUpdate(installation);
|
|
71
|
+
if (update.kind === "unavailable") {
|
|
72
|
+
return update.check;
|
|
73
|
+
}
|
|
74
|
+
const timeoutMs = options.timeoutMs ?? CHECK_TIMEOUT_MS;
|
|
75
|
+
const { json } = await runCheckCommand(update.installation.command, ["about", "--format", "json"], timeoutMs);
|
|
76
|
+
const about = asRecord(json);
|
|
77
|
+
if (about !== null && about.latestStatus === undefined && about.latestVersion === undefined) {
|
|
78
|
+
return releaseServiceCheck(update.installed, from, timeoutMs);
|
|
79
|
+
}
|
|
80
|
+
return projectCursorAbout(update.installed, json);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export const cursorCheckUpdate = cursorUpdateCheck();
|
|
84
|
+
export async function cursorUpgrade(installation, options) {
|
|
85
|
+
const result = await upgradeExecutable(installation, { check: cursorCheckUpdate, args: ["update"] }, options);
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtimes/cursor/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { grokCheckUpdate, grokUpgrade } from "./update.js";
|
|
1
2
|
export declare const grokRuntime: {
|
|
2
3
|
readonly id: "grok";
|
|
3
4
|
readonly brand: {
|
|
@@ -13,6 +14,8 @@ export declare const grokRuntime: {
|
|
|
13
14
|
readonly installation: import("../../index.js").InstallationProbe;
|
|
14
15
|
readonly accountUsage: import("../../index.js").AccountUsageReader;
|
|
15
16
|
readonly listModels: import("../../index.js").ModelLister;
|
|
17
|
+
readonly checkUpdate: typeof grokCheckUpdate;
|
|
18
|
+
readonly upgrade: typeof grokUpgrade;
|
|
16
19
|
readonly session: import("../../index.js").StartSession;
|
|
17
20
|
} & import("../../index.js").RuntimeInventories & {
|
|
18
21
|
readonly brand: import("../../brands.js").RuntimeBrand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/grok/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/grok/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;CAYtB,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { defineRuntime } from "../../contracts/runtime.js";
|
|
|
4
4
|
import { grokAccountUsage } from "./account-usage.js";
|
|
5
5
|
import { grokInstallation } from "./installation.js";
|
|
6
6
|
import { grokListModels } from "./list-models.js";
|
|
7
|
+
import { grokCheckUpdate, grokUpgrade } from "./update.js";
|
|
7
8
|
import { grokSession } from "./session.js";
|
|
8
9
|
export const grokRuntime = defineRuntime({
|
|
9
10
|
id: "grok",
|
|
@@ -13,6 +14,8 @@ export const grokRuntime = defineRuntime({
|
|
|
13
14
|
installation: grokInstallation,
|
|
14
15
|
accountUsage: grokAccountUsage,
|
|
15
16
|
listModels: grokListModels,
|
|
17
|
+
checkUpdate: grokCheckUpdate,
|
|
18
|
+
upgrade: grokUpgrade,
|
|
16
19
|
session: grokSession,
|
|
17
20
|
});
|
|
18
21
|
export { grokAccountEmail, grokAccountUsage, projectGrokUsage } from "./account-usage.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/grok/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,cAAc;IAE1B,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,WAAW;CACrB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/grok/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,cAAc;IAE1B,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;CACrB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AvailableInstallation } from "../../contracts/installation.js";
|
|
2
|
+
import type { UpdateCheck, UpdateCheckOptions, UpgradeOptions, UpgradeResult } from "../../contracts/update.js";
|
|
3
|
+
/**
|
|
4
|
+
* grok 1.0.46 answers `update --check --json` with `currentVersion`,
|
|
5
|
+
* `latestVersion`, `updateAvailable`, `installer`, `channel` and `error`,
|
|
6
|
+
* and always exits 0: a failed lookup shows only in `error`. The check never
|
|
7
|
+
* passes `--alpha`/`--stable`, which would persist a channel switch.
|
|
8
|
+
*/
|
|
9
|
+
export declare function projectGrokUpdateCheck(installed: string, report: unknown): UpdateCheck;
|
|
10
|
+
export declare function grokCheckUpdate(installation: AvailableInstallation, options?: UpdateCheckOptions): Promise<UpdateCheck>;
|
|
11
|
+
export declare function grokUpgrade(installation: AvailableInstallation, options?: UpgradeOptions): Promise<UpgradeResult>;
|
|
12
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/runtimes/grok/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAYhH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,CActF;AAED,wBAAsB,eAAe,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAOjI;AAED,wBAAsB,WAAW,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAGvH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { asRecord } from "../../shared/json.js";
|
|
2
|
+
import { CHECK_TIMEOUT_MS, comparedCheck, executableUpdate, runCheckCommand, upgradeExecutable, } from "../../shared/update.js";
|
|
3
|
+
const SOURCE = "grok update --check --json";
|
|
4
|
+
/**
|
|
5
|
+
* grok 1.0.46 answers `update --check --json` with `currentVersion`,
|
|
6
|
+
* `latestVersion`, `updateAvailable`, `installer`, `channel` and `error`,
|
|
7
|
+
* and always exits 0: a failed lookup shows only in `error`. The check never
|
|
8
|
+
* passes `--alpha`/`--stable`, which would persist a channel switch.
|
|
9
|
+
*/
|
|
10
|
+
export function projectGrokUpdateCheck(installed, report) {
|
|
11
|
+
const fields = asRecord(report);
|
|
12
|
+
if (fields === null) {
|
|
13
|
+
return { kind: "unavailable", reason: "lookup_failed", detail: "grok update --check --json printed no JSON", source: SOURCE };
|
|
14
|
+
}
|
|
15
|
+
const { error, latestVersion, updateAvailable, channel } = fields;
|
|
16
|
+
if (typeof error === "string" && error !== "") {
|
|
17
|
+
return { kind: "unavailable", reason: "lookup_failed", detail: error, source: SOURCE };
|
|
18
|
+
}
|
|
19
|
+
if (typeof latestVersion !== "string") {
|
|
20
|
+
return { kind: "unavailable", reason: "lookup_failed", detail: "grok reported no latest version", source: SOURCE };
|
|
21
|
+
}
|
|
22
|
+
const check = comparedCheck(installed, latestVersion, SOURCE, typeof channel === "string" ? channel : undefined);
|
|
23
|
+
return check.kind === "ok" && typeof updateAvailable === "boolean" ? { ...check, updateAvailable } : check;
|
|
24
|
+
}
|
|
25
|
+
export async function grokCheckUpdate(installation, options = {}) {
|
|
26
|
+
const update = executableUpdate(installation);
|
|
27
|
+
if (update.kind === "unavailable") {
|
|
28
|
+
return update.check;
|
|
29
|
+
}
|
|
30
|
+
const { json } = await runCheckCommand(update.installation.command, ["update", "--check", "--json"], options.timeoutMs ?? CHECK_TIMEOUT_MS);
|
|
31
|
+
return projectGrokUpdateCheck(update.installed, json);
|
|
32
|
+
}
|
|
33
|
+
export async function grokUpgrade(installation, options) {
|
|
34
|
+
const result = await upgradeExecutable(installation, { check: grokCheckUpdate, args: ["update"] }, options);
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtimes/grok/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,MAAe;IACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,4CAA4C,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAChI,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,iCAAiC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrH,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjH,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,YAAmC,EAAE,UAA8B,EAAE;IACzG,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;IAC5I,OAAO,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAmC,EAAE,OAAwB;IAC7F,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5G,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -11,6 +11,8 @@ export declare const kimiRuntime: {
|
|
|
11
11
|
readonly installation: import("../../index.js").InstallationProbe;
|
|
12
12
|
readonly accountUsage: import("../../index.js").AccountUsageReader;
|
|
13
13
|
readonly listModels: import("../../index.js").ModelLister;
|
|
14
|
+
readonly checkUpdate: import("../../index.js").UpdateChecker;
|
|
15
|
+
readonly upgrade: import("../../index.js").Upgrader;
|
|
14
16
|
readonly session: import("../../index.js").StartSession;
|
|
15
17
|
} & import("../../index.js").RuntimeInventories & {
|
|
16
18
|
readonly brand: import("../../brands.js").RuntimeBrand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAStB,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { defineRuntime } from "../../contracts/runtime.js";
|
|
|
3
3
|
import { kimiAccountUsage } from "./account-usage.js";
|
|
4
4
|
import { kimiInstallation } from "./installation.js";
|
|
5
5
|
import { kimiListModels } from "./list-models.js";
|
|
6
|
+
import { kimiCheckUpdate, kimiUpgrade } from "./update.js";
|
|
6
7
|
import { kimiSession } from "./session.js";
|
|
7
8
|
export const kimiRuntime = defineRuntime({
|
|
8
9
|
id: "kimi",
|
|
@@ -10,6 +11,8 @@ export const kimiRuntime = defineRuntime({
|
|
|
10
11
|
installation: kimiInstallation,
|
|
11
12
|
accountUsage: kimiAccountUsage,
|
|
12
13
|
listModels: kimiListModels,
|
|
14
|
+
checkUpdate: kimiCheckUpdate,
|
|
15
|
+
upgrade: kimiUpgrade,
|
|
13
16
|
session: kimiSession,
|
|
14
17
|
});
|
|
15
18
|
export { kimiAccountUsage, projectKimiUsage } from "./account-usage.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,WAAW;CACrB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,aAAa,CAAC,IAAI;IACzB,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;CACrB,CAAC,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { UpdateChecker, Upgrader } from "../../contracts/update.js";
|
|
2
|
+
/**
|
|
3
|
+
* Kimi has no check-only command; `kimi upgrade` (2.1.1) reads
|
|
4
|
+
* `code.kimi.com/kimi-code/latest`, or `code.kimi.ai` when the recorded
|
|
5
|
+
* region is `global`, and ignores the staged rollout, so that pointer is the
|
|
6
|
+
* version it installs, and only when it is newer. A Homebrew copy only prints
|
|
7
|
+
* `brew upgrade kimi-code`.
|
|
8
|
+
*/
|
|
9
|
+
export interface KimiUpdateSources {
|
|
10
|
+
readonly mainland: string;
|
|
11
|
+
readonly global: string;
|
|
12
|
+
readonly home: () => string;
|
|
13
|
+
}
|
|
14
|
+
export declare function kimiUpdateCheck(from?: KimiUpdateSources): UpdateChecker;
|
|
15
|
+
export declare const kimiCheckUpdate: UpdateChecker;
|
|
16
|
+
export declare function kimiUpgrader(check?: UpdateChecker): Upgrader;
|
|
17
|
+
export declare const kimiUpgrade: Upgrader;
|
|
18
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/runtimes/kimi/update.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmC,aAAa,EAAE,QAAQ,EAAiC,MAAM,2BAA2B,CAAC;AAWzI;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;CAC7B;AAmBD,wBAAgB,eAAe,CAAC,IAAI,GAAE,iBAA2B,GAAG,aAAa,CAkBhF;AAED,eAAO,MAAM,eAAe,eAAoB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,KAAK,GAAE,aAA+B,GAAG,QAAQ,CAc7E;AAED,eAAO,MAAM,WAAW,UAAiB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { CHECK_TIMEOUT_MS, comparedCheck, executableUpdate, installedPath, readReleaseSource, upgradeExecutable, versionAtLeast, } from "../../shared/update.js";
|
|
5
|
+
const sources = {
|
|
6
|
+
mainland: "https://code.kimi.com/kimi-code/latest",
|
|
7
|
+
global: "https://code.kimi.ai/kimi-code/latest",
|
|
8
|
+
home: () => process.env.KIMI_CODE_HOME ?? path.join(homedir(), ".kimi-code"),
|
|
9
|
+
};
|
|
10
|
+
/** `upgrade -y` arrived in kimi 0.43.0; before it the upgrade only runs from a terminal prompt. */
|
|
11
|
+
const NON_INTERACTIVE_UPGRADE = "0.43.0";
|
|
12
|
+
function region(home) {
|
|
13
|
+
try {
|
|
14
|
+
return readFileSync(path.join(home, "region"), "utf8").trim();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function kimiUpdateCheck(from = sources) {
|
|
21
|
+
return async (installation, options = {}) => {
|
|
22
|
+
const update = executableUpdate(installation);
|
|
23
|
+
if (update.kind === "unavailable") {
|
|
24
|
+
return update.check;
|
|
25
|
+
}
|
|
26
|
+
if (installedPath(update.installation.command).includes("/Cellar/")) {
|
|
27
|
+
return { kind: "unavailable", reason: "package_manager", detail: "this copy updates through Homebrew" };
|
|
28
|
+
}
|
|
29
|
+
const url = region(from.home()) === "global" ? from.global : from.mainland;
|
|
30
|
+
const read = await readReleaseSource(url, options.timeoutMs ?? CHECK_TIMEOUT_MS);
|
|
31
|
+
if (!read.ok) {
|
|
32
|
+
return read.check;
|
|
33
|
+
}
|
|
34
|
+
// kimi upgrade acts only on a newer release.
|
|
35
|
+
const check = comparedCheck(update.installed, read.text.trim(), url);
|
|
36
|
+
return check.kind === "ok" ? { ...check, updateAvailable: !versionAtLeast(check.installed, check.latest) } : check;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export const kimiCheckUpdate = kimiUpdateCheck();
|
|
40
|
+
export function kimiUpgrader(check = kimiCheckUpdate) {
|
|
41
|
+
return async (installation, options) => {
|
|
42
|
+
const update = executableUpdate(installation);
|
|
43
|
+
if (update.kind === "executable" && !versionAtLeast(update.installed, NON_INTERACTIVE_UPGRADE)) {
|
|
44
|
+
return {
|
|
45
|
+
kind: "unsupported",
|
|
46
|
+
reason: "requires_terminal",
|
|
47
|
+
detail: `kimi ${update.installed} has no non-interactive upgrade (added in ${NON_INTERACTIVE_UPGRADE}); run kimi upgrade in a terminal`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// A native install stages the new binary; the version read-back starts kimi, which swaps it in.
|
|
51
|
+
const result = await upgradeExecutable(installation, { check, args: ["upgrade", "-y"] }, options);
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export const kimiUpgrade = kimiUpgrader();
|
|
56
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtimes/kimi/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAehC,MAAM,OAAO,GAAsB;IACjC,QAAQ,EAAE,wCAAwC;IAClD,MAAM,EAAE,uCAAuC;IAC/C,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;CAC7E,CAAC;AAEF,mGAAmG;AACnG,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEzC,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA0B,OAAO;IAC/D,OAAO,KAAK,EAAE,YAAmC,EAAE,UAA8B,EAAE,EAAwB,EAAE;QAC3G,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;QAC1G,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,6CAA6C;QAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,QAAuB,eAAe;IACjE,OAAO,KAAK,EAAE,YAAmC,EAAE,OAAwB,EAA0B,EAAE;QACrG,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE,CAAC;YAC/F,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,QAAQ,MAAM,CAAC,SAAS,6CAA6C,uBAAuB,mCAAmC;aACxI,CAAC;QACJ,CAAC;QACD,gGAAgG;QAChG,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAClG,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { resolveExecutable } from "./resolve.js";
|
|
2
|
+
export { runIsolated, type IsolatedResult } from "./isolated.js";
|
|
2
3
|
export type { ExecutableResult, ExecutableRunner, ExecutableRunOptions } from "./run.js";
|
|
3
4
|
export { runExecutable } from "./run.js";
|
|
4
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,MAAM,cAAc,CAAC;AACjD,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,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,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,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { resolveExecutable } from "./resolve.js";
|
|
2
|
+
export { runIsolated } from "./isolated.js";
|
|
2
3
|
export { runExecutable } from "./run.js";
|
|
3
4
|
export { readExecutableVersion } from "./version.js";
|
|
4
5
|
export { KILL_GRACE_MS, killGraceMs, OWN_PROCESS_GROUP, requiresShell, signalProcessGroup, spawnLineProcess, } 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,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/executable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAuB,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAsB,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface IsolatedResult {
|
|
2
|
+
readonly exitCode: number | null;
|
|
3
|
+
readonly timedOut: boolean;
|
|
4
|
+
readonly stdout: string;
|
|
5
|
+
readonly stderr: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IsolatedRunOptions {
|
|
8
|
+
readonly env: NodeJS.ProcessEnv;
|
|
9
|
+
readonly timeoutMs: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Run a command that may start others (an updater runs npm or `curl | sh`)
|
|
13
|
+
* with no stdin, no controlling terminal (its own session and process group
|
|
14
|
+
* on POSIX), and a timeout that stops the whole group rather than only the
|
|
15
|
+
* command, so nothing is cut off midway without the caller seeing a timeout
|
|
16
|
+
* or left running after it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runIsolated(command: string, args: readonly string[], options: IsolatedRunOptions): Promise<IsolatedResult>;
|
|
19
|
+
//# sourceMappingURL=isolated.d.ts.map
|
|
@@ -0,0 +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;AA0BD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwChI"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import spawn from "cross-spawn";
|
|
3
|
+
import { killGraceMs, OWN_PROCESS_GROUP, signalProcessGroup } from "./process.js";
|
|
4
|
+
const OUTPUT_LIMIT = 1024 * 1024;
|
|
5
|
+
/** After the command itself exits, how long a process it left holding the output pipes may keep them. */
|
|
6
|
+
const PIPE_DRAIN_MS = 2000;
|
|
7
|
+
function keepTail(text) {
|
|
8
|
+
return text.length > OUTPUT_LIMIT ? text.slice(-OUTPUT_LIMIT) : text;
|
|
9
|
+
}
|
|
10
|
+
/** Stop the command and everything it started: its process group on POSIX, its process tree on Windows. */
|
|
11
|
+
function stopTree(child) {
|
|
12
|
+
if (process.platform === "win32") {
|
|
13
|
+
if (child.pid !== undefined) {
|
|
14
|
+
execFile("taskkill", ["/pid", String(child.pid), "/T", "/F"], () => { });
|
|
15
|
+
}
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
signalProcessGroup(child, "SIGTERM");
|
|
19
|
+
// Kept after the command exits: what it started may outlive it holding the
|
|
20
|
+
// group, and those get the SIGKILL too.
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
signalProcessGroup(child, "SIGKILL");
|
|
23
|
+
}, killGraceMs()).unref();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run a command that may start others (an updater runs npm or `curl | sh`)
|
|
27
|
+
* with no stdin, no controlling terminal (its own session and process group
|
|
28
|
+
* on POSIX), and a timeout that stops the whole group rather than only the
|
|
29
|
+
* command, so nothing is cut off midway without the caller seeing a timeout
|
|
30
|
+
* or left running after it.
|
|
31
|
+
*/
|
|
32
|
+
export async function runIsolated(command, args, options) {
|
|
33
|
+
const child = spawn(command, [...args], {
|
|
34
|
+
env: options.env,
|
|
35
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
36
|
+
detached: OWN_PROCESS_GROUP,
|
|
37
|
+
windowsHide: true,
|
|
38
|
+
});
|
|
39
|
+
let stdout = "";
|
|
40
|
+
let stderr = "";
|
|
41
|
+
const stop = { timedOut: false };
|
|
42
|
+
child.stdout?.setEncoding("utf8");
|
|
43
|
+
child.stderr?.setEncoding("utf8");
|
|
44
|
+
child.stdout?.on("data", (chunk) => {
|
|
45
|
+
stdout = keepTail(stdout + chunk);
|
|
46
|
+
});
|
|
47
|
+
child.stderr?.on("data", (chunk) => {
|
|
48
|
+
stderr = keepTail(stderr + chunk);
|
|
49
|
+
});
|
|
50
|
+
const timer = setTimeout(() => {
|
|
51
|
+
stop.timedOut = true;
|
|
52
|
+
stopTree(child);
|
|
53
|
+
}, options.timeoutMs);
|
|
54
|
+
const exitCode = await new Promise((resolve) => {
|
|
55
|
+
let code = null;
|
|
56
|
+
child.once("exit", (exit) => {
|
|
57
|
+
code = exit;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
resolve(code);
|
|
60
|
+
}, PIPE_DRAIN_MS);
|
|
61
|
+
});
|
|
62
|
+
child.once("close", (exit) => {
|
|
63
|
+
resolve(exit ?? code);
|
|
64
|
+
});
|
|
65
|
+
child.once("error", (error) => {
|
|
66
|
+
stderr += error.message;
|
|
67
|
+
resolve(null);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
clearTimeout(timer);
|
|
71
|
+
return { exitCode: stop.timedOut ? null : exitCode, timedOut: stop.timedOut, stdout, stderr };
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=isolated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolated.js","sourceRoot":"","sources":["../../../src/shared/executable/isolated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AvailableInstallation, ExecutableInstallation } from "../contracts/installation.js";
|
|
2
|
+
import type { UpdateCheck, UpdateChecker, UpgradeOptions, UpgradeResult } from "../contracts/update.js";
|
|
3
|
+
import { type IsolatedResult } from "./executable/index.js";
|
|
4
|
+
export declare const CHECK_TIMEOUT_MS = 20000;
|
|
5
|
+
/** The release version inside a `--version` line or release pointer: a cursor date build or a semver. */
|
|
6
|
+
export declare function releaseVersion(text: string): string | undefined;
|
|
7
|
+
/** Numeric `major.minor.patch` order; prerelease tags are ignored. */
|
|
8
|
+
export declare function versionAtLeast(version: string, floor: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The host environment without the markers a package script run (`npm run`,
|
|
11
|
+
* `pnpm run`) adds: given `npm_config_user_agent`, grok 1.0.46 treats a
|
|
12
|
+
* script install as npm-managed and installs a second copy. npm
|
|
13
|
+
* configuration itself (such as the prefix) stays: npm-method updaters
|
|
14
|
+
* should honor it, and the version read-back catches an update that went to
|
|
15
|
+
* another prefix.
|
|
16
|
+
*/
|
|
17
|
+
export declare function updaterEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
18
|
+
export type ExecutableUpdate = {
|
|
19
|
+
readonly kind: "executable";
|
|
20
|
+
readonly installation: ExecutableInstallation;
|
|
21
|
+
readonly installed: string;
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: "unavailable";
|
|
24
|
+
readonly check: UpdateCheck;
|
|
25
|
+
};
|
|
26
|
+
/** The executable and its installed release version, or why a check cannot start. */
|
|
27
|
+
export declare function executableUpdate(installation: AvailableInstallation): ExecutableUpdate;
|
|
28
|
+
/** The executable's real path with `/` separators, for install-layout tests. */
|
|
29
|
+
export declare function installedPath(command: string): string;
|
|
30
|
+
/** A check from an installed and a released version, when the runtime gives no verdict of its own. */
|
|
31
|
+
export declare function comparedCheck(installed: string, released: string, source: string, channel?: string): UpdateCheck;
|
|
32
|
+
/** GET one release source; failures come back as the check's `lookup_failed`. */
|
|
33
|
+
export declare function readReleaseSource(url: string, timeoutMs: number): Promise<{
|
|
34
|
+
readonly ok: true;
|
|
35
|
+
readonly text: string;
|
|
36
|
+
} | {
|
|
37
|
+
readonly ok: false;
|
|
38
|
+
readonly check: UpdateCheck;
|
|
39
|
+
}>;
|
|
40
|
+
/** Run one of the runtime's own check commands, read only, with the updater environment. */
|
|
41
|
+
export declare function runCheckCommand(command: string, args: readonly string[], timeoutMs: number): Promise<{
|
|
42
|
+
readonly result: IsolatedResult;
|
|
43
|
+
readonly json: unknown;
|
|
44
|
+
}>;
|
|
45
|
+
export interface NativeUpdater {
|
|
46
|
+
readonly check: UpdateChecker;
|
|
47
|
+
/** The runtime's own non-interactive update command. */
|
|
48
|
+
readonly args: readonly string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check, then run the runtime's own updater on the same executable and judge
|
|
52
|
+
* the outcome by the version it reports afterwards. The updater runs only
|
|
53
|
+
* when the check does not already say the installation is current.
|
|
54
|
+
*/
|
|
55
|
+
export declare function upgradeExecutable(installation: AvailableInstallation, updater: NativeUpdater, options?: UpgradeOptions): Promise<UpgradeResult>;
|
|
56
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +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,EAAsC,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGhG,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAKvC,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/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;AAOD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAoBxB"}
|