opencode-supertask 0.1.33 → 0.1.35
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/CHANGELOG.md +59 -0
- package/README.md +66 -13
- package/dist/cli/index.js +853 -152
- package/dist/cli/index.js.map +1 -1
- package/dist/gateway/index.js +449 -32
- package/dist/gateway/index.js.map +1 -1
- package/dist/plugin/supertask.js +166 -4
- package/dist/plugin/supertask.js.map +1 -1
- package/dist/web/index.d.ts +12 -1
- package/dist/web/index.js +459 -63
- package/dist/web/index.js.map +1 -1
- package/dist/worker/index.d.ts +3 -1
- package/dist/worker/index.js +19 -4
- package/dist/worker/index.js.map +1 -1
- package/package.json +2 -1
package/dist/plugin/supertask.js
CHANGED
|
@@ -28548,6 +28548,25 @@ function currentGatewayRuntime(gatewayEntry = resolveGatewayEntry()) {
|
|
|
28548
28548
|
env: { ...process.env }
|
|
28549
28549
|
};
|
|
28550
28550
|
}
|
|
28551
|
+
function refreshGatewayExecutionEnvironment(runtime, gatewayEntry) {
|
|
28552
|
+
const env = { ...process.env };
|
|
28553
|
+
for (const key of /* @__PURE__ */ new Set([
|
|
28554
|
+
...Object.keys(runtime.env).filter((name) => name.startsWith("SUPERTASK_")),
|
|
28555
|
+
...Object.keys(env).filter((name) => name.startsWith("SUPERTASK_")),
|
|
28556
|
+
"HOME",
|
|
28557
|
+
"PATH",
|
|
28558
|
+
"PM2_HOME"
|
|
28559
|
+
])) {
|
|
28560
|
+
const value = runtime.env[key];
|
|
28561
|
+
if (value === void 0) delete env[key];
|
|
28562
|
+
else env[key] = value;
|
|
28563
|
+
}
|
|
28564
|
+
return {
|
|
28565
|
+
...runtime,
|
|
28566
|
+
gatewayEntry: resolve(gatewayEntry),
|
|
28567
|
+
env
|
|
28568
|
+
};
|
|
28569
|
+
}
|
|
28551
28570
|
function databasePath(env = process.env, cwd = process.cwd()) {
|
|
28552
28571
|
return env.SUPERTASK_DB_PATH ? runtimePath(env.SUPERTASK_DB_PATH, cwd) : join4(runtimeHome(env), ".local/share/opencode/tasks.db");
|
|
28553
28572
|
}
|
|
@@ -28830,7 +28849,10 @@ function upgradeUnlocked(target) {
|
|
|
28830
28849
|
const oldRuntime = gatewayRuntimeFromProcess(existing) ?? (process.env.SUPERTASK_GATEWAY_ENTRY ? currentGatewayRuntime(resolveGatewayEntry()) : null);
|
|
28831
28850
|
const before = getRunningVersion(oldRuntime?.env ?? process.env, oldRuntime?.cwd);
|
|
28832
28851
|
const currentVersion = target?.version ?? getPackageVersion();
|
|
28833
|
-
const targetRuntime = oldRuntime ?
|
|
28852
|
+
const targetRuntime = oldRuntime ? refreshGatewayExecutionEnvironment(
|
|
28853
|
+
oldRuntime,
|
|
28854
|
+
target?.gatewayEntry ?? oldRuntime.gatewayEntry
|
|
28855
|
+
) : currentGatewayRuntime(target?.gatewayEntry ?? resolveGatewayEntry());
|
|
28834
28856
|
assertRuntimeCanControlPm2(oldRuntime, existing);
|
|
28835
28857
|
gatewayKillTimeoutMs(targetRuntime);
|
|
28836
28858
|
gatewayTerminationCommandTimeoutMs(targetRuntime);
|
|
@@ -28920,9 +28942,9 @@ function ensureGatewayUnlocked() {
|
|
|
28920
28942
|
|
|
28921
28943
|
// src/daemon/update.ts
|
|
28922
28944
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
28923
|
-
import { existsSync as existsSync5, readFileSync as readFileSync4, readdirSync } from "fs";
|
|
28945
|
+
import { existsSync as existsSync5, readFileSync as readFileSync4, readdirSync, realpathSync } from "fs";
|
|
28924
28946
|
import { homedir as homedir4 } from "os";
|
|
28925
|
-
import { join as join5 } from "path";
|
|
28947
|
+
import { dirname as dirname5, join as join5, resolve as resolve2 } from "path";
|
|
28926
28948
|
var PACKAGE_NAME = "opencode-supertask";
|
|
28927
28949
|
function pluginAt(packageDir) {
|
|
28928
28950
|
const packageJson = join5(packageDir, "package.json");
|
|
@@ -28950,6 +28972,131 @@ function opencodeBin() {
|
|
|
28950
28972
|
function npmBin() {
|
|
28951
28973
|
return process.env.SUPERTASK_NPM_BIN ?? "npm";
|
|
28952
28974
|
}
|
|
28975
|
+
function bunBin() {
|
|
28976
|
+
return process.env.SUPERTASK_BUN_BIN ?? "bun";
|
|
28977
|
+
}
|
|
28978
|
+
function resolveGlobalCliExecutable() {
|
|
28979
|
+
const override = process.env.SUPERTASK_CLI_BIN;
|
|
28980
|
+
if (override) return existsSync5(override) ? resolve2(override) : null;
|
|
28981
|
+
const result = spawnSync2(process.platform === "win32" ? "where" : "which", ["supertask"], {
|
|
28982
|
+
encoding: "utf8",
|
|
28983
|
+
env: process.env,
|
|
28984
|
+
timeout: 1e4
|
|
28985
|
+
});
|
|
28986
|
+
if (result.status !== 0) return null;
|
|
28987
|
+
const executable = `${result.stdout ?? ""}`.trim().split(/\r?\n/)[0];
|
|
28988
|
+
return executable && existsSync5(executable) ? resolve2(executable) : null;
|
|
28989
|
+
}
|
|
28990
|
+
function cliPackageDir(executable) {
|
|
28991
|
+
try {
|
|
28992
|
+
let directory = dirname5(realpathSync(executable));
|
|
28993
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
28994
|
+
const packagePath = join5(directory, "package.json");
|
|
28995
|
+
if (existsSync5(packagePath)) {
|
|
28996
|
+
const pkg = JSON.parse(readFileSync4(packagePath, "utf8"));
|
|
28997
|
+
if (pkg.name === PACKAGE_NAME) return directory;
|
|
28998
|
+
}
|
|
28999
|
+
const parent = dirname5(directory);
|
|
29000
|
+
if (parent === directory) break;
|
|
29001
|
+
directory = parent;
|
|
29002
|
+
}
|
|
29003
|
+
} catch {
|
|
29004
|
+
}
|
|
29005
|
+
return null;
|
|
29006
|
+
}
|
|
29007
|
+
function packageVersion(packageDir) {
|
|
29008
|
+
try {
|
|
29009
|
+
const pkg = JSON.parse(readFileSync4(join5(packageDir, "package.json"), "utf8"));
|
|
29010
|
+
return pkg.name === PACKAGE_NAME && typeof pkg.version === "string" ? pkg.version : null;
|
|
29011
|
+
} catch {
|
|
29012
|
+
return null;
|
|
29013
|
+
}
|
|
29014
|
+
}
|
|
29015
|
+
function npmGlobalRoot() {
|
|
29016
|
+
const result = spawnSync2(npmBin(), ["root", "-g"], {
|
|
29017
|
+
encoding: "utf8",
|
|
29018
|
+
env: process.env,
|
|
29019
|
+
timeout: 3e4
|
|
29020
|
+
});
|
|
29021
|
+
if (result.status !== 0) return null;
|
|
29022
|
+
const root = `${result.stdout ?? ""}`.trim();
|
|
29023
|
+
if (!root) return null;
|
|
29024
|
+
try {
|
|
29025
|
+
return realpathSync(root);
|
|
29026
|
+
} catch {
|
|
29027
|
+
return resolve2(root);
|
|
29028
|
+
}
|
|
29029
|
+
}
|
|
29030
|
+
function globalCliPackageManager(packageDir) {
|
|
29031
|
+
const normalized = packageDir.replaceAll("\\", "/");
|
|
29032
|
+
if (normalized.includes("/install/global/node_modules/")) return "bun";
|
|
29033
|
+
const npmRoot = npmGlobalRoot();
|
|
29034
|
+
if (npmRoot && resolve2(packageDir) === join5(npmRoot, PACKAGE_NAME)) return "npm";
|
|
29035
|
+
return null;
|
|
29036
|
+
}
|
|
29037
|
+
function getGlobalCliDiagnostic() {
|
|
29038
|
+
const executable = resolveGlobalCliExecutable();
|
|
29039
|
+
if (!executable) {
|
|
29040
|
+
return {
|
|
29041
|
+
installed: false,
|
|
29042
|
+
executable: null,
|
|
29043
|
+
packageDir: null,
|
|
29044
|
+
version: null,
|
|
29045
|
+
packageManager: null
|
|
29046
|
+
};
|
|
29047
|
+
}
|
|
29048
|
+
const packageDir = cliPackageDir(executable);
|
|
29049
|
+
if (!packageDir) {
|
|
29050
|
+
return {
|
|
29051
|
+
installed: true,
|
|
29052
|
+
executable,
|
|
29053
|
+
packageDir: null,
|
|
29054
|
+
version: null,
|
|
29055
|
+
packageManager: null
|
|
29056
|
+
};
|
|
29057
|
+
}
|
|
29058
|
+
return {
|
|
29059
|
+
installed: true,
|
|
29060
|
+
executable,
|
|
29061
|
+
packageDir,
|
|
29062
|
+
version: packageVersion(packageDir),
|
|
29063
|
+
packageManager: globalCliPackageManager(packageDir)
|
|
29064
|
+
};
|
|
29065
|
+
}
|
|
29066
|
+
function updateGlobalCli(version3) {
|
|
29067
|
+
if (!isSemanticVersion(version3)) {
|
|
29068
|
+
throw new Error(`[supertask] \u5168\u5C40 CLI \u76EE\u6807\u7248\u672C\u65E0\u6548: ${version3}`);
|
|
29069
|
+
}
|
|
29070
|
+
const before = getGlobalCliDiagnostic();
|
|
29071
|
+
if (!before.installed) return { ...before, action: "not-installed" };
|
|
29072
|
+
if (before.version === version3) return { ...before, action: "already-current" };
|
|
29073
|
+
if (!before.packageManager) {
|
|
29074
|
+
throw new Error(
|
|
29075
|
+
`[supertask] \u65E0\u6CD5\u786E\u8BA4\u5168\u5C40 CLI \u7684\u5305\u7BA1\u7406\u5668\uFF08\u5F53\u524D ${before.version ?? "unknown"}\uFF0C\u76EE\u6807 ${version3}\uFF09\uFF1B\u8BF7\u6267\u884C npm install -g ${PACKAGE_NAME}@${version3} \u6216 bun add -g ${PACKAGE_NAME}@${version3}`
|
|
29076
|
+
);
|
|
29077
|
+
}
|
|
29078
|
+
const command = before.packageManager === "npm" ? npmBin() : bunBin();
|
|
29079
|
+
const args = before.packageManager === "npm" ? ["install", "-g", `${PACKAGE_NAME}@${version3}`] : ["add", "-g", `${PACKAGE_NAME}@${version3}`];
|
|
29080
|
+
const result = spawnSync2(command, args, {
|
|
29081
|
+
encoding: "utf8",
|
|
29082
|
+
env: process.env,
|
|
29083
|
+
timeout: 12e4
|
|
29084
|
+
});
|
|
29085
|
+
const output = `${result.stdout ?? ""}${result.stderr ?? ""}`.trim();
|
|
29086
|
+
if (result.error) {
|
|
29087
|
+
throw new Error(`[supertask] \u5168\u5C40 CLI \u66F4\u65B0\u5931\u8D25: ${result.error.message}`);
|
|
29088
|
+
}
|
|
29089
|
+
if (result.status !== 0) {
|
|
29090
|
+
throw new Error(`[supertask] \u5168\u5C40 CLI \u66F4\u65B0\u5931\u8D25: ${output || `\u9000\u51FA\u7801 ${result.status}`}`);
|
|
29091
|
+
}
|
|
29092
|
+
const after = getGlobalCliDiagnostic();
|
|
29093
|
+
if (after.version !== version3) {
|
|
29094
|
+
throw new Error(
|
|
29095
|
+
`[supertask] \u5168\u5C40 CLI \u66F4\u65B0\u540E\u7248\u672C\u4E0D\u5339\u914D\uFF1A\u671F\u671B ${version3}\uFF0C\u5B9E\u9645 ${after.version ?? "unknown"}`
|
|
29096
|
+
);
|
|
29097
|
+
}
|
|
29098
|
+
return { ...after, action: "updated" };
|
|
29099
|
+
}
|
|
28953
29100
|
function latestVersion() {
|
|
28954
29101
|
const result = spawnSync2(npmBin(), [
|
|
28955
29102
|
"view",
|
|
@@ -29446,12 +29593,27 @@ var SuperTaskPlugin = async () => {
|
|
|
29446
29593
|
}
|
|
29447
29594
|
throw upgradeError;
|
|
29448
29595
|
}
|
|
29596
|
+
let cliUpdate;
|
|
29597
|
+
try {
|
|
29598
|
+
cliUpdate = updateGlobalCli(result.after);
|
|
29599
|
+
} catch (cliError) {
|
|
29600
|
+
return JSON.stringify({
|
|
29601
|
+
success: false,
|
|
29602
|
+
partial: true,
|
|
29603
|
+
before: result.before,
|
|
29604
|
+
after: result.after,
|
|
29605
|
+
restarted: result.restarted,
|
|
29606
|
+
error: `\u63D2\u4EF6\u548C Gateway \u5DF2\u5347\u7EA7\uFF0C\u4F46\u5168\u5C40 CLI \u66F4\u65B0\u5931\u8D25\uFF1A${cliError instanceof Error ? cliError.message : String(cliError)}`,
|
|
29607
|
+
hint: `\u8BF7\u6267\u884C npm install -g opencode-supertask@${result.after} \u6216 bun add -g opencode-supertask@${result.after}\uFF0C\u7136\u540E\u8FD0\u884C supertask doctor\u3002`
|
|
29608
|
+
});
|
|
29609
|
+
}
|
|
29449
29610
|
return JSON.stringify({
|
|
29450
29611
|
success: true,
|
|
29451
29612
|
before: result.before,
|
|
29452
29613
|
after: result.after,
|
|
29453
29614
|
restarted: result.restarted,
|
|
29454
|
-
|
|
29615
|
+
cli: cliUpdate,
|
|
29616
|
+
message: `SuperTask \u5DF2\u4ECE ${result.before ?? "unknown"} \u5347\u7EA7\u5230 ${result.after}\uFF0CGateway \u5DF2\u91CD\u542F\uFF0C\u5168\u5C40 CLI \u5DF2\u540C\u6B65\u6216\u672C\u673A\u672A\u5B89\u88C5 CLI\u3002\u8BF7\u91CD\u542F opencode \u4EE5\u52A0\u8F7D\u65B0\u7248\u63D2\u4EF6\u3002`
|
|
29455
29617
|
});
|
|
29456
29618
|
} catch (error45) {
|
|
29457
29619
|
return JSON.stringify({
|