poly-weaver 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-update/gate.d.ts +1 -0
- package/dist/auto-update/gate.d.ts.map +1 -1
- package/dist/auto-update/gate.js +7 -8
- package/dist/auto-update/gate.js.map +1 -1
- package/dist/auto-update/install-agents.d.ts +1 -0
- package/dist/auto-update/install-agents.d.ts.map +1 -1
- package/dist/auto-update/install-agents.js +19 -8
- package/dist/auto-update/install-agents.js.map +1 -1
- package/dist/auto-update/update-request.d.ts +23 -0
- package/dist/auto-update/update-request.d.ts.map +1 -0
- package/dist/auto-update/update-request.js +83 -0
- package/dist/auto-update/update-request.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/launcher.d.ts +23 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +90 -0
- package/dist/launcher.js.map +1 -0
- package/package.json +2 -2
|
@@ -12,6 +12,7 @@ export interface AutoUpdateGateDeps {
|
|
|
12
12
|
checkAllUpdates?: (detected: DetectAgentsResult, isPolyWeaverGlobal: boolean) => Promise<OutdatedTarget[]>;
|
|
13
13
|
showAutoUpdateTui?: (outdated: OutdatedTarget[], cwd?: string) => Promise<AutoUpdateChoice | null>;
|
|
14
14
|
installAgents?: (targets: readonly OutdatedTarget[]) => Promise<Map<string, number>>;
|
|
15
|
+
requestUpdates?: (targets: readonly OutdatedTarget[]) => boolean | Promise<boolean>;
|
|
15
16
|
setProviderVersions?: (versions: Map<string, string>) => void;
|
|
16
17
|
exit?: (code: number) => void;
|
|
17
18
|
stderr?: Pick<NodeJS.WriteStream, "write" | "isTTY">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/auto-update/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/auto-update/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIhF,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,kBAAkB,EAC5B,kBAAkB,EAAE,OAAO,KACxB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/B,iBAAiB,CAAC,EAAE,CAClB,QAAQ,EAAE,cAAc,EAAE,EAC1B,GAAG,CAAC,EAAE,MAAM,KACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;CACtD;AAED,wBAAsB,iBAAiB,CACrC,GAAG,SAAgB,EACnB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAwFrB"}
|
package/dist/auto-update/gate.js
CHANGED
|
@@ -3,7 +3,8 @@ import { isGlobalNpmInstall } from "./install-method.js";
|
|
|
3
3
|
import { showAutoUpdateTui } from "./tui.js";
|
|
4
4
|
import { AGENT_INSTALL_HINT, AGENT_ORDER, AGENT_PRODUCT_NAME, detectAgents, } from "./detect-agents.js";
|
|
5
5
|
import { checkAllUpdates } from "./check-agent-updates.js";
|
|
6
|
-
import { installAgents } from "./install-agents.js";
|
|
6
|
+
import { firstNonZero, installAgents } from "./install-agents.js";
|
|
7
|
+
import { requestUpdates } from "./update-request.js";
|
|
7
8
|
export async function runAutoUpdateGate(cwd = process.cwd(), deps = {}) {
|
|
8
9
|
const runDetection = deps.detectAgents ?? (() => detectAgents());
|
|
9
10
|
const exit = deps.exit ?? ((code) => { process.exit(code); });
|
|
@@ -71,6 +72,11 @@ export async function runAutoUpdateGate(cwd = process.cwd(), deps = {}) {
|
|
|
71
72
|
return result;
|
|
72
73
|
}
|
|
73
74
|
const targets = choice.kind === "update-all" ? outdated : [choice.target];
|
|
75
|
+
const handoffUpdates = deps.requestUpdates ?? requestUpdates;
|
|
76
|
+
if (await handoffUpdates(targets)) {
|
|
77
|
+
exit(0);
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
74
80
|
const runInstallers = deps.installAgents ?? installAgents;
|
|
75
81
|
const exitCodes = await runInstallers(targets);
|
|
76
82
|
exit(firstNonZero(exitCodes) ?? 0);
|
|
@@ -94,11 +100,4 @@ function polyWeaverUpdateInfo(outdated) {
|
|
|
94
100
|
const target = outdated.find((item) => item.kind === "poly-weaver");
|
|
95
101
|
return target ? { current: target.current, latest: target.latest } : null;
|
|
96
102
|
}
|
|
97
|
-
function firstNonZero(exitCodes) {
|
|
98
|
-
for (const code of exitCodes.values()) {
|
|
99
|
-
if (code !== 0)
|
|
100
|
-
return code;
|
|
101
|
-
}
|
|
102
|
-
return undefined;
|
|
103
|
-
}
|
|
104
103
|
//# sourceMappingURL=gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/auto-update/gate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAuB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/auto-update/gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,5 @@ export interface InstallAgentsDeps {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function installAgents(targets: readonly OutdatedTarget[], deps?: InstallAgentsDeps): Promise<Map<string, number>>;
|
|
11
11
|
export declare function targetInstallName(target: OutdatedTarget): string;
|
|
12
|
+
export declare function firstNonZero(exitCodes: Map<string, number>): number | undefined;
|
|
12
13
|
//# sourceMappingURL=install-agents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-agents.d.ts","sourceRoot":"","sources":["../../src/auto-update/install-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAM9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAK9B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEhE"}
|
|
1
|
+
{"version":3,"file":"install-agents.d.ts","sourceRoot":"","sources":["../../src/auto-update/install-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAM9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAK9B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEhE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAK/E"}
|
|
@@ -8,6 +8,13 @@ export async function installAgents(targets, deps = {}) {
|
|
|
8
8
|
export function targetInstallName(target) {
|
|
9
9
|
return target.kind === "poly-weaver" ? "poly-weaver" : target.name;
|
|
10
10
|
}
|
|
11
|
+
export function firstNonZero(exitCodes) {
|
|
12
|
+
for (const code of exitCodes.values()) {
|
|
13
|
+
if (code !== 0)
|
|
14
|
+
return code;
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
11
18
|
async function installTarget(target, deps) {
|
|
12
19
|
const spawnFactory = deps.spawn ?? spawn;
|
|
13
20
|
const command = commandForTarget(target);
|
|
@@ -32,16 +39,20 @@ function commandForTarget(target) {
|
|
|
32
39
|
args: ["install", "-g", `${packageName}@latest`],
|
|
33
40
|
};
|
|
34
41
|
}
|
|
42
|
+
const args = [
|
|
43
|
+
"upgrade",
|
|
44
|
+
"--id",
|
|
45
|
+
AGENT_PACKAGE_WINGET[target.name],
|
|
46
|
+
"--exact",
|
|
47
|
+
"--accept-source-agreements",
|
|
48
|
+
"--accept-package-agreements",
|
|
49
|
+
];
|
|
50
|
+
if (target.kind === "agent" && target.name === "copilot") {
|
|
51
|
+
args.push("--force");
|
|
52
|
+
}
|
|
35
53
|
return {
|
|
36
54
|
file: "winget",
|
|
37
|
-
args
|
|
38
|
-
"upgrade",
|
|
39
|
-
"--id",
|
|
40
|
-
AGENT_PACKAGE_WINGET[target.name],
|
|
41
|
-
"--exact",
|
|
42
|
-
"--accept-source-agreements",
|
|
43
|
-
"--accept-package-agreements",
|
|
44
|
-
],
|
|
55
|
+
args,
|
|
45
56
|
};
|
|
46
57
|
}
|
|
47
58
|
function formatShellCommand(file, args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-agents.js","sourceRoot":"","sources":["../../src/auto-update/install-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAkC,EAClC,OAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAU,CAAC,CACvG,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,MAAsB,EACtB,IAAuB;IAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;QACzE,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAsB;IAC9C,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,aAAa;YAC/C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,WAAW,SAAS,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"install-agents.js","sourceRoot":"","sources":["../../src/auto-update/install-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { OutdatedTarget } from "./check-agent-updates.js";
|
|
2
|
+
export declare const UPDATE_REQUEST_ENV = "POLY_WEAVER_UPDATE_REQUEST";
|
|
3
|
+
export interface UpdateRequest {
|
|
4
|
+
targets: OutdatedTarget[];
|
|
5
|
+
}
|
|
6
|
+
export interface RequestUpdatesDeps {
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
8
|
+
writeFile?: (path: string, data: string) => Promise<void>;
|
|
9
|
+
rename?: (oldPath: string, newPath: string) => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface ReadUpdateRequestDeps {
|
|
12
|
+
readFile?: (path: string, encoding: BufferEncoding) => Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
export interface ClearUpdateRequestDeps {
|
|
15
|
+
rm?: (path: string, options: {
|
|
16
|
+
force: boolean;
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createUpdateRequestPath(): string;
|
|
20
|
+
export declare function requestUpdates(targets: readonly OutdatedTarget[], deps?: RequestUpdatesDeps): Promise<boolean>;
|
|
21
|
+
export declare function readUpdateRequest(path: string, deps?: ReadUpdateRequestDeps): Promise<UpdateRequest | null>;
|
|
22
|
+
export declare function clearUpdateRequest(path: string, deps?: ClearUpdateRequestDeps): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=update-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-request.d.ts","sourceRoot":"","sources":["../../src/auto-update/update-request.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,kBAAkB,+BAA+B,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAU/B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { open, readFile, rename, rm } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
export const UPDATE_REQUEST_ENV = "POLY_WEAVER_UPDATE_REQUEST";
|
|
6
|
+
export function createUpdateRequestPath() {
|
|
7
|
+
return join(tmpdir(), `poly-weaver-update-${process.pid}-${randomUUID()}.json`);
|
|
8
|
+
}
|
|
9
|
+
export async function requestUpdates(targets, deps = {}) {
|
|
10
|
+
const requestPath = (deps.env ?? process.env)[UPDATE_REQUEST_ENV];
|
|
11
|
+
if (!requestPath)
|
|
12
|
+
return false;
|
|
13
|
+
// requestPath is already unique per launcher (pid + uuid), so a fixed
|
|
14
|
+
// suffix suffices to stage the write before the atomic rename.
|
|
15
|
+
const tempPath = `${requestPath}.tmp`;
|
|
16
|
+
const payload = JSON.stringify({ targets }, null, 2);
|
|
17
|
+
const write = deps.writeFile ?? writeFileDurably;
|
|
18
|
+
const renameFile = deps.rename ?? rename;
|
|
19
|
+
try {
|
|
20
|
+
await write(tempPath, payload);
|
|
21
|
+
await renameFile(tempPath, requestPath);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
await clearUpdateRequest(tempPath);
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function readUpdateRequest(path, deps = {}) {
|
|
30
|
+
const read = deps.readFile ?? readFile;
|
|
31
|
+
try {
|
|
32
|
+
const content = await read(path, "utf8");
|
|
33
|
+
const parsed = JSON.parse(content);
|
|
34
|
+
return isUpdateRequest(parsed) ? parsed : null;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function clearUpdateRequest(path, deps = {}) {
|
|
41
|
+
const remove = deps.rm ?? rm;
|
|
42
|
+
try {
|
|
43
|
+
await remove(path, { force: true });
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Best-effort cleanup only; failed cleanup must not affect update results.
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function writeFileDurably(path, data) {
|
|
50
|
+
const file = await open(path, "w", 0o600);
|
|
51
|
+
try {
|
|
52
|
+
await file.writeFile(data, "utf8");
|
|
53
|
+
await file.sync();
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
await file.close();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function isUpdateRequest(value) {
|
|
60
|
+
if (!value || typeof value !== "object")
|
|
61
|
+
return false;
|
|
62
|
+
const targets = value.targets;
|
|
63
|
+
return Array.isArray(targets) && targets.every(isOutdatedTarget);
|
|
64
|
+
}
|
|
65
|
+
function isOutdatedTarget(value) {
|
|
66
|
+
if (!value || typeof value !== "object")
|
|
67
|
+
return false;
|
|
68
|
+
const target = value;
|
|
69
|
+
if (target.kind === "poly-weaver") {
|
|
70
|
+
return typeof target.current === "string"
|
|
71
|
+
&& typeof target.latest === "string"
|
|
72
|
+
&& target.installMethod === "npm";
|
|
73
|
+
}
|
|
74
|
+
if (target.kind !== "agent")
|
|
75
|
+
return false;
|
|
76
|
+
return typeof target.name === "string"
|
|
77
|
+
&& typeof target.productName === "string"
|
|
78
|
+
&& typeof target.current === "string"
|
|
79
|
+
&& typeof target.latest === "string"
|
|
80
|
+
&& (target.installMethod === "npm" || target.installMethod === "winget")
|
|
81
|
+
&& (target.unsupported === undefined || typeof target.unsupported === "boolean");
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=update-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-request.js","sourceRoot":"","sources":["../../src/auto-update/update-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAoB/D,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAkC,EAClC,OAA2B,EAAE;IAE7B,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,sEAAsE;IACtE,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,GAAG,WAAW,MAAM,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAA8B,EAAE;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAA+B,EAAE;IAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY;IACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO,CAAC;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAEhD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClC,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;eACpC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;eACjC,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;WACjC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;WACtC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;WAClC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;WACjC,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC;WACrE,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;AACrF,CAAC"}
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { type UpdateRequest } from "./auto-update/update-request.js";
|
|
4
|
+
import type { OutdatedTarget } from "./auto-update/check-agent-updates.js";
|
|
5
|
+
type SpawnFactory = typeof spawn;
|
|
6
|
+
type SignalHandler = (signal: NodeJS.Signals) => void;
|
|
7
|
+
export interface LauncherDeps {
|
|
8
|
+
spawn?: SpawnFactory;
|
|
9
|
+
execPath?: string;
|
|
10
|
+
appPath?: string;
|
|
11
|
+
argv?: readonly string[];
|
|
12
|
+
env?: NodeJS.ProcessEnv;
|
|
13
|
+
tmpPath?: string;
|
|
14
|
+
readRequest?: (path: string) => Promise<UpdateRequest | null>;
|
|
15
|
+
clearRequest?: (path: string) => Promise<void>;
|
|
16
|
+
installAgents?: (targets: readonly OutdatedTarget[]) => Promise<Map<string, number>>;
|
|
17
|
+
exit?: (code: number) => void;
|
|
18
|
+
onSignal?: (signal: NodeJS.Signals, handler: SignalHandler) => void;
|
|
19
|
+
offSignal?: (signal: NodeJS.Signals, handler: SignalHandler) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function runLauncher(deps?: LauncherDeps): Promise<void>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,KAAK,YAAY,GAAG,OAAO,KAAK,CAAC;AACjC,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IACpE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CACtE;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCxE"}
|
package/dist/launcher.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { clearUpdateRequest, createUpdateRequestPath, readUpdateRequest, UPDATE_REQUEST_ENV, } from "./auto-update/update-request.js";
|
|
5
|
+
import { firstNonZero, installAgents as installAgentsDefault, } from "./auto-update/install-agents.js";
|
|
6
|
+
export async function runLauncher(deps = {}) {
|
|
7
|
+
const spawnFactory = deps.spawn ?? spawn;
|
|
8
|
+
const execPath = deps.execPath ?? process.execPath;
|
|
9
|
+
const appPath = deps.appPath ?? fileURLToPath(new URL("./cli.js", import.meta.url));
|
|
10
|
+
const argv = deps.argv ?? process.argv.slice(2);
|
|
11
|
+
const env = deps.env ?? process.env;
|
|
12
|
+
const requestPath = deps.tmpPath ?? createUpdateRequestPath();
|
|
13
|
+
const readRequest = deps.readRequest ?? readUpdateRequest;
|
|
14
|
+
const clearRequest = deps.clearRequest ?? clearUpdateRequest;
|
|
15
|
+
const installAgents = deps.installAgents ?? installAgentsDefault;
|
|
16
|
+
const exit = deps.exit ?? ((code) => { process.exit(code); });
|
|
17
|
+
const cleanupSignals = installSignalGuards(deps);
|
|
18
|
+
let finalCode = 1;
|
|
19
|
+
try {
|
|
20
|
+
const child = spawnFactory(execPath, [appPath, ...argv], {
|
|
21
|
+
stdio: "inherit",
|
|
22
|
+
env: {
|
|
23
|
+
...env,
|
|
24
|
+
[UPDATE_REQUEST_ENV]: requestPath,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const childExitCode = await waitForClose(child);
|
|
28
|
+
const request = await readRequest(requestPath);
|
|
29
|
+
if (request) {
|
|
30
|
+
const exitCodes = await installAgents(request.targets);
|
|
31
|
+
finalCode = firstNonZero(exitCodes) ?? 0;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
finalCode = childExitCode;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
try {
|
|
39
|
+
await clearRequest(requestPath);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Cleanup is best-effort; the child or installer exit code remains authoritative.
|
|
43
|
+
}
|
|
44
|
+
cleanupSignals();
|
|
45
|
+
}
|
|
46
|
+
exit(finalCode);
|
|
47
|
+
}
|
|
48
|
+
function installSignalGuards(deps) {
|
|
49
|
+
const onSignal = deps.onSignal ?? process.on.bind(process);
|
|
50
|
+
const offSignal = deps.offSignal ?? process.off.bind(process);
|
|
51
|
+
// Ctrl+C reaches the child directly (it owns the terminal); the launcher must
|
|
52
|
+
// ignore the signal so it survives the child's exit and can still run the
|
|
53
|
+
// post-exit installers. The handler is intentionally a no-op.
|
|
54
|
+
const handler = () => { };
|
|
55
|
+
onSignal("SIGINT", handler);
|
|
56
|
+
onSignal("SIGTERM", handler);
|
|
57
|
+
return () => {
|
|
58
|
+
offSignal("SIGINT", handler);
|
|
59
|
+
offSignal("SIGTERM", handler);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function waitForClose(child) {
|
|
63
|
+
return new Promise((resolve) => {
|
|
64
|
+
let settled = false;
|
|
65
|
+
const finish = (code) => {
|
|
66
|
+
if (settled)
|
|
67
|
+
return;
|
|
68
|
+
settled = true;
|
|
69
|
+
resolve(code);
|
|
70
|
+
};
|
|
71
|
+
child.once("error", () => finish(1));
|
|
72
|
+
child.once("close", (code, signal) => finish(closeCode(code, signal)));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function closeCode(code, signal) {
|
|
76
|
+
if (typeof code === "number")
|
|
77
|
+
return code;
|
|
78
|
+
if (signal === "SIGINT")
|
|
79
|
+
return 130;
|
|
80
|
+
if (signal === "SIGTERM")
|
|
81
|
+
return 143;
|
|
82
|
+
return 1;
|
|
83
|
+
}
|
|
84
|
+
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
85
|
+
runLauncher().catch((err) => {
|
|
86
|
+
console.error(err);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "poly-weaver",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Orchestrates pluggable AI coding agents in an iterative plan-review loop",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"./dsl": "./dist/dsl.js"
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
|
-
"poly-weaver": "dist/
|
|
17
|
+
"poly-weaver": "dist/launcher.js"
|
|
18
18
|
},
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=22.17"
|