@muha-sdk/agy-adapter 0.1.16 → 0.1.17
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 -4
- package/dist/agy-process.d.ts.map +1 -1
- package/dist/agy-process.js +4 -9
- package/dist/agy-process.js.map +1 -1
- package/dist/agy-supervisor.exe +0 -0
- package/dist/owned-cli.d.ts.map +1 -1
- package/dist/owned-cli.js +5 -2
- package/dist/owned-cli.js.map +1 -1
- package/dist/windows-private.c +100 -0
- package/dist/windows-private.h +9 -0
- package/dist/windows-supervisor.c +331 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
The stage-five AGY CLI Adapter for Muha SDK. It uses the caller-installed and
|
|
4
4
|
authenticated `agy` command on `PATH`; it never installs AGY or falls back to an
|
|
5
|
-
SDK or API integration.
|
|
6
|
-
|
|
5
|
+
SDK or API integration. Historical Linux qualification uses Claude Sonnet 4.6;
|
|
6
|
+
native Windows qualification uses CLI 1.4.5 and `claude-sonnet-5-5-low`.
|
|
7
|
+
See the [acceptance results](https://github.com/Gao-Sijie/muha/blob/main/QUALIFICATION.md)
|
|
8
|
+
for exact source/platform scopes. Use `agy models` to check native identifiers.
|
|
7
9
|
|
|
8
10
|
```js
|
|
9
11
|
import { createMuhaRuntime } from "@muha-sdk/core";
|
|
@@ -14,7 +16,7 @@ try {
|
|
|
14
16
|
const session = await runtime.createSession({
|
|
15
17
|
harness: "agy",
|
|
16
18
|
workspacePath: process.cwd(),
|
|
17
|
-
model: "claude-sonnet-
|
|
19
|
+
model: "claude-sonnet-5-5-low",
|
|
18
20
|
approvalPolicy: "autoApprove",
|
|
19
21
|
});
|
|
20
22
|
const turn = await session.startTurn([{ type: "text", text: "Describe this project." }]);
|
|
@@ -39,7 +41,9 @@ Model and effort can be selected at create/resume and expose only caller
|
|
|
39
41
|
selections (`selectedOnly`); idle setters, listing, image input, structured
|
|
40
42
|
approvals/questions, reasoning streaming, and Muha-managed Workspace MCP are
|
|
41
43
|
unsupported. The accepted Claude Sonnet 4.6 model rejects an explicit
|
|
42
|
-
`--effort`; omit effort for that model.
|
|
44
|
+
`--effort`; omit effort for that model. The Windows Sonnet 5.5 qualification
|
|
45
|
+
accepted `effort: "low"` at creation and resume; this does not qualify all effort
|
|
46
|
+
values or add idle setters. Native identifiers are not Muha aliases.
|
|
43
47
|
|
|
44
48
|
AGY cannot disable its native print timeout using `0` or `-1s`. This Adapter
|
|
45
49
|
uses `--print-timeout 60m` and emits `MUHA_AGY_NATIVE_TURN_TIMEOUT` when activated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy-process.d.ts","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,cAAc,EAAE,WAAW,EAC/E,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agy-process.d.ts","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,cAAc,EAAE,WAAW,EAC/E,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAMrH,qBAAa,UAAW,YAAW,kBAAkB;;IASvC,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IAAE,QAAQ,CAAC,OAAO,EAAE,yBAAyB;IARjG,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAU;IAKnC,IAAI,OAAO,IAAI,OAAO,CAAwC;IAC9D,IAAI,WAAW,IAAI,OAAO,CAA8B;gBACnC,OAAO,EAAE,sBAAsB,EAAW,OAAO,EAAE,yBAAyB;IAG3F,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC;IAM5E,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC;IAO5E,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAIxD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CASvB;AAED,cAAM,UAAW,YAAW,cAAc;;IAa5B,QAAQ,CAAC,KAAK,EAAE,UAAU;IAAE,QAAQ,CAAC,OAAO,EAAE,2BAA2B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU;IAZtH,eAAe,SAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,UAAS;gBASM,KAAK,EAAE,UAAU,EAAW,OAAO,EAAE,2BAA2B,EAAW,GAAG,EAAE,MAAM,CAAC,UAAU,EACpH,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAKtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiErB,SAAS,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBnE,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1B,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CASvB"}
|
package/dist/agy-process.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { mkdtemp, rm } from "node:fs/promises";
|
|
1
|
+
import { mkdtemp, realpath, rm } from "node:fs/promises";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { OwnedCli } from "./owned-cli.js";
|
|
5
|
+
import { harnessEnvironment } from "@muha-sdk/core/internal/host-process";
|
|
5
6
|
import { nativeBinding } from "./native-metadata.js";
|
|
6
7
|
import { bounded, Deferred, EventQueue, failure, object } from "./protocol.js";
|
|
7
8
|
export class AgyProcess {
|
|
@@ -18,16 +19,10 @@ export class AgyProcess {
|
|
|
18
19
|
constructor(options, context) {
|
|
19
20
|
this.options = options;
|
|
20
21
|
this.context = context;
|
|
21
|
-
this.#env =
|
|
22
|
-
for (const [key, value] of Object.entries(options.env ?? {})) {
|
|
23
|
-
if (value === undefined)
|
|
24
|
-
delete this.#env[key];
|
|
25
|
-
else
|
|
26
|
-
this.#env[key] = value;
|
|
27
|
-
}
|
|
22
|
+
this.#env = harnessEnvironment(options.env);
|
|
28
23
|
}
|
|
29
24
|
async initialize() {
|
|
30
|
-
const workspacePath = await mkdtemp(join(tmpdir(), "muha-agy-ready-"));
|
|
25
|
+
const workspacePath = await realpath(await mkdtemp(join(tmpdir(), "muha-agy-ready-")));
|
|
31
26
|
try {
|
|
32
27
|
const session = await this.createSession({ workspacePath, approvalPolicy: "harnessManaged" });
|
|
33
28
|
await session.close();
|
package/dist/agy-process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy-process.js","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAmB,MAAM,eAAe,CAAC;AAEhG,MAAM,OAAO,UAAU;IASA;IAA0C;IARtD,IAAI,GAAG,KAAc,CAAC;IACtB,KAAK,GAAG,QAAiB,CAAC;IAC1B,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAClC,IAAI,CAAoB;IACjC,YAAY,GAAG,KAAK,CAAC;IACrB,QAAQ,CAA4B;IACpC,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAc,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,YAAqB,OAA+B,EAAW,OAAkC;QAA5E,YAAO,GAAP,OAAO,CAAwB;QAAW,YAAO,GAAP,OAAO,CAA2B;QAC/F,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7D,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,KAAK,CAAC,UAAU;QACd,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC9F,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO,CAAC,WAAW,CAAC,sFAAsF,EACxG,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YAAC,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,OAAoC;QACtD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,OAAO,CAAC;QAAC,CAAC;QAC7C,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,OAAoC;QACtD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,OAAO,CAAC;QAAC,CAAC;QAC7C,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,YAAY,KAAqB,MAAM,OAAO,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,CAAC,OAAmB,EAAE,KAAuB;QAC/C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,CAAC,OAAmB,IAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU;gBAAE,MAAM;oBACvC,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK;iBACrG,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF;AAED,MAAM,UAAU;IAaO;IAA4B;IAA+C;IAZhG,eAAe,GAAG,EAAE,CAAC;IACZ,KAAK,CAAqB;IAC1B,MAAM,CAAqB;IACpC,MAAM,GAAG,KAAK,CAAC;IACf,IAAI,CAAuB;IAC3B,KAAK,CAAuB;IAC5B,aAAa,CAA4B;IACzC,QAAQ,GAAG,KAAK,CAAC;IACR,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,aAAa,GAAG,CAAC,CAAC;IAClB,YAAY,CAAqB;IACjC,OAAO,CAAgD;IACvD,YAAqB,KAAiB,EAAW,OAAoC,EAAW,GAAsB,EACpH,MAA0C;QADvB,UAAK,GAAL,KAAK,CAAY;QAAW,YAAO,GAAP,OAAO,CAA6B;QAAW,QAAG,GAAH,GAAG,CAAmB;QAEpH,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,IAAI;QACR,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;QAC5G,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC3G,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/F,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,IAAI,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAClE,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EACpG,SAAS,CAAC,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,MAAM,EAChG,OAAO,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACnH,MAAM,OAAO,CAAC,SAAS,EAAE,mEAAmE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,aAAa,IAAI,IAAI,CAAC,eAAe,KAAK,gBAAgB,EAAE,CAAC;YAC/F,MAAM,OAAO,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC7D,MAAM,OAAO,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC7G,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACzD,MAAM,OAAO,CAAC,eAAe,EAAE,4DAA4D,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,OAAO,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;IAC9G,CAAC;IACD,QAAQ,CAAC,KAAiB,EAAE,aAAsB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,qEAAqE;QACrE,yEAAyE;QACzE,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9G,gEAAgE;gBAChE,6DAA6D;gBAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa;oBAAE,OAAO;gBAChE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;YAC/B,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChH,gEAAgE;gBAChE,kEAAkE;gBAClE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY;oBAAE,OAAO;gBAC1E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,KAAkC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe;oBACvC,SAAS,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/F,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,8CAA8C,CAAC,CAAC,CAAC;gBAC5F,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACrE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;wBAAE,MAAM,OAAO,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;oBACrF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACR,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,QAAQ,KAAqB,MAAM,OAAO,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC;IACpG,KAAK,CAAC,SAAS,KAAqB,MAAM,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,KAAuB,IAAU,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK;QACH,OAAO,IAAI,CAAC,aAAa,KAAK,CAAC,KAAK,IAAI,EAAE;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YACzB,iEAAiE;YACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF;AAED,MAAM,QAAQ;IAWS;IAA4B;IAVjD,YAAY,GAAG,SAAS,CAAC;IAChB,QAAQ,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAChC,MAAM,GAAG,IAAI,UAAU,EAAoB,CAAC;IAC5C,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC3D,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAC;IACnD,MAAM,GAAG,IAAI,GAAG,EAA2F,CAAC;IACrH,SAAS,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,KAAK,CAAC;IACf,aAAa,CAA4B;IACzC,YAAqB,SAAiB,EAAW,IAAyB;QAArD,cAAS,GAAT,SAAS,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAqB;IAAG,CAAC;IAC9E,KAAK,CAAC,KAAiB,EAAE,aAAa,GAAG,KAAK;QAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAC9C,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpD,GAAG,OAAO,CAAC,WAAW,EAAE,4EAA4E,CAAC,EAAE,UAAU,EAAE,SAAS;aAC7H,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wDAAwD,CAAC,CAAC,CAAC,CAAC;YAC3G,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC7B,MAAM,CAAC;YAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAAC,CAAC;IACzD,CAAC;IACD,QAAQ,CAAC,KAAiB;QACxB,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;gBAAC,OAAO;YACzD,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAoB,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChF,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;gBACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAA2B,EAAE,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc;oBAClG,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;oBAChF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,KAAK,KAAK,SAAS;wBAAE,SAAS;oBAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,EAAE,CAAC;wBAC1D,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;wBACnD,OAAO;oBACT,CAAC;oBACD,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAe,CAAC;gBACjC,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjC,MAAM,KAAK,GAA2B,EAAE,CAAC;gBACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3F,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;wBACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC/B,IAAI,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;4BACjE,OAAO;wBACT,CAAC;wBACD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBACnB,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACzF,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;oBAAC,OAAO;gBACzD,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAClG,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;gBACtD,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC5H,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM;oBAClF,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;YACzG,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS;wBACzD,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBAC1D,IAAI,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;oBAC9D,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBACtG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC;gBAC/G,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACvH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,IAAK,MAAM,CAAC,SAAoB,GAAG,CAAC,EAAE,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,kDAAkD,CAAC,CAAC;gBAAC,OAAO;YAC7E,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvH,IAAI,CAAC,SAAS,CAAC,0DAA0D,CAAC,CAAC;gBAAC,OAAO;YACrF,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACzF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;YACrD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,iEAAiE;gBACjE,mEAAmE;gBACnE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;gBACxH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,IAAI,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC9G,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;oBACpD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAAC,IAAI,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBACrG,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;oBAClE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI;oBAC/E,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC;oBACvC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,OAAO;iBACzH,CAAC,CAAC;iBACE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;iBAC9F,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC,CAAC;iBACzF,CAAC;gBAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,SAAS,CAAC,OAAe;QACvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,KAAuB;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IACD,CAAC,MAAM,CAAC,aAAa,CAAC,KAAsC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,SAAS;QACP,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,iBAAiB,KAAqB,MAAM,OAAO,CAAC,mBAAmB,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC;IAC7H,KAAK,CAAC,iBAAiB,KAAqB,MAAM,OAAO,CAAC,mBAAmB,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC;CAC9H"}
|
|
1
|
+
{"version":3,"file":"agy-process.js","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/dist/owned-cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-cli.d.ts","sourceRoot":"","sources":["../src/owned-cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"owned-cli.d.ts","sourceRoot":"","sources":["../src/owned-cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAW,QAAQ,EAAmB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAIpF,qBAAa,QAAQ;;IACnB,QAAQ,CAAC,KAAK,uBAA8B;gBAiBhC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAC1F,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,KAAK,IAAI,EAChG,MAAM,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC;IA+GrF,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAC9B,KAAK,CAAC,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBxC"}
|
package/dist/owned-cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { spawnHarnessProcess } from "@muha-sdk/core/internal/host-process";
|
|
4
5
|
import { bounded, Deferred, failure, object } from "./protocol.js";
|
|
5
6
|
// The independent helper owns/reaps its descendants. Nothing changes the
|
|
6
7
|
// consuming Node process's signals, child ownership, cwd, or environment.
|
|
@@ -24,7 +25,9 @@ export class OwnedCli {
|
|
|
24
25
|
constructor(args, cwd, env, shutdownMs, context, onEvent, onLoss, operation) {
|
|
25
26
|
this.#shutdownMs = shutdownMs;
|
|
26
27
|
this.#onLoss = onLoss;
|
|
27
|
-
this.#child =
|
|
28
|
+
this.#child = process.platform === "win32"
|
|
29
|
+
? spawnHarnessProcess("agy", args, { cwd, env, shell: false, stdio: ["pipe", "pipe", "pipe"] }, shutdownMs, false, undefined, fileURLToPath(new URL("./agy-supervisor.exe", import.meta.url)))
|
|
30
|
+
: spawn(fileURLToPath(new URL("./agy-supervisor", import.meta.url)), [String(Math.min(1_000, Math.floor(shutdownMs / 2))), "agy", ...args], { cwd, env, shell: false, stdio: ["pipe", "pipe", "pipe", "pipe"] });
|
|
28
31
|
this.#control = this.#child.stdio[3];
|
|
29
32
|
this.#input = this.#child.stdin;
|
|
30
33
|
const lose = (message) => {
|
|
@@ -61,7 +64,7 @@ export class OwnedCli {
|
|
|
61
64
|
void this.#outputEnded.promise.then(() => this.#incoming).then(() => lose("AGY native process exited"), () => lose("AGY output failed before exit"));
|
|
62
65
|
}
|
|
63
66
|
else if (event.type === "error")
|
|
64
|
-
lose(`AGY supervisor failed during ${String(event.operation)} (${String(event.errno)})`);
|
|
67
|
+
lose(`AGY supervisor failed during ${String(event.operation)} (${String(event.win32 ?? event.errno)})`);
|
|
65
68
|
}
|
|
66
69
|
catch {
|
|
67
70
|
lose("Invalid AGY ownership response");
|
package/dist/owned-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-cli.js","sourceRoot":"","sources":["../src/owned-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAmB,MAAM,eAAe,CAAC;AAEpF,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,OAAO,QAAQ;IACV,KAAK,GAAG,IAAI,QAAQ,EAAc,CAAC;IACnC,OAAO,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAC/B,MAAM,CAAe;IACrB,QAAQ,CAAS;IACjB,MAAM,CAAW;IACjB,WAAW,CAAS;IACpB,OAAO,CAAoC;IACpD,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,aAAa,CAA4B;IACzC,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,KAAK,CAAC;IACrB,aAAa,GAAG,KAAK,CAAC;IACtB,cAAc,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAE7C,YAAY,IAAuB,EAAE,GAAW,EAAE,GAAsB,EAAE,UAAkB,EAC1F,OAAkC,EAAE,OAA4D,EAChG,MAAyC,EAAE,SAAwC;QACnF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"owned-cli.js","sourceRoot":"","sources":["../src/owned-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#define WIN32_LEAN_AND_MEAN
|
|
2
|
+
#include <windows.h>
|
|
3
|
+
#include <aclapi.h>
|
|
4
|
+
#include <sddl.h>
|
|
5
|
+
#include <stdio.h>
|
|
6
|
+
#include <stdlib.h>
|
|
7
|
+
#include "windows-private.h"
|
|
8
|
+
|
|
9
|
+
static PTOKEN_USER current_user(void) {
|
|
10
|
+
HANDLE token = NULL;
|
|
11
|
+
DWORD size = 0;
|
|
12
|
+
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)) return NULL;
|
|
13
|
+
(void)GetTokenInformation(token, TokenUser, NULL, 0, &size);
|
|
14
|
+
PTOKEN_USER user = size && size < 65536 ? malloc(size) : NULL;
|
|
15
|
+
if (user && !GetTokenInformation(token, TokenUser, user, size, &size)) {
|
|
16
|
+
free(user); user = NULL;
|
|
17
|
+
}
|
|
18
|
+
CloseHandle(token);
|
|
19
|
+
return user;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
BOOL muha_private_security(SECURITY_ATTRIBUTES *attributes,
|
|
23
|
+
PSECURITY_DESCRIPTOR *descriptor, BOOL inherit) {
|
|
24
|
+
PTOKEN_USER user = current_user();
|
|
25
|
+
LPWSTR sid = NULL;
|
|
26
|
+
wchar_t sddl[512];
|
|
27
|
+
BOOL success = FALSE;
|
|
28
|
+
if (!user) return FALSE;
|
|
29
|
+
if (!ConvertSidToStringSidW(user->User.Sid, &sid)) goto done;
|
|
30
|
+
const wchar_t *flags = inherit ? L"OICI" : L"";
|
|
31
|
+
int size = swprintf(sddl, 512, L"D:P(A;%ls;FA;;;SY)(A;%ls;FA;;;BA)(A;%ls;FA;;;%ls)",
|
|
32
|
+
flags, flags, flags, sid);
|
|
33
|
+
if (size < 0 || size >= 512) { SetLastError(ERROR_BAD_LENGTH); goto done; }
|
|
34
|
+
if (!ConvertStringSecurityDescriptorToSecurityDescriptorW(sddl, SDDL_REVISION_1, descriptor, NULL)) goto done;
|
|
35
|
+
attributes->nLength = sizeof(*attributes);
|
|
36
|
+
attributes->lpSecurityDescriptor = *descriptor;
|
|
37
|
+
attributes->bInheritHandle = FALSE;
|
|
38
|
+
success = TRUE;
|
|
39
|
+
done:
|
|
40
|
+
if (sid) LocalFree(sid);
|
|
41
|
+
free(user);
|
|
42
|
+
return success;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static BOOL trusted_sid(PSID sid, PSID user) {
|
|
46
|
+
return EqualSid(sid, user) || IsWellKnownSid(sid, WinLocalSystemSid) ||
|
|
47
|
+
IsWellKnownSid(sid, WinBuiltinAdministratorsSid);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
DWORD muha_check_private_path(const wchar_t *path, BOOL directory, BOOL missing_ok) {
|
|
51
|
+
HANDLE file = CreateFileW(path, READ_CONTROL | FILE_READ_ATTRIBUTES,
|
|
52
|
+
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING,
|
|
53
|
+
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL);
|
|
54
|
+
if (file == INVALID_HANDLE_VALUE) {
|
|
55
|
+
DWORD error = GetLastError();
|
|
56
|
+
return missing_ok && (error == ERROR_FILE_NOT_FOUND || error == ERROR_PATH_NOT_FOUND) ? ERROR_SUCCESS : error;
|
|
57
|
+
}
|
|
58
|
+
DWORD result = ERROR_ACCESS_DENIED;
|
|
59
|
+
BY_HANDLE_FILE_INFORMATION information;
|
|
60
|
+
PSECURITY_DESCRIPTOR descriptor = NULL;
|
|
61
|
+
PSID owner = NULL;
|
|
62
|
+
PACL dacl = NULL;
|
|
63
|
+
PTOKEN_USER user = current_user();
|
|
64
|
+
if (!user) goto done;
|
|
65
|
+
if (!GetFileInformationByHandle(file, &information)) { result = GetLastError(); goto done; }
|
|
66
|
+
if ((information.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ||
|
|
67
|
+
((information.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) != (directory != FALSE)) goto done;
|
|
68
|
+
result = GetSecurityInfo(file, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION,
|
|
69
|
+
&owner, NULL, &dacl, NULL, &descriptor);
|
|
70
|
+
if (result != ERROR_SUCCESS) goto done;
|
|
71
|
+
result = ERROR_ACCESS_DENIED;
|
|
72
|
+
if (!owner || !trusted_sid(owner, user->User.Sid) || !dacl) goto done;
|
|
73
|
+
for (DWORD index = 0; index < dacl->AceCount; index++) {
|
|
74
|
+
ACE_HEADER *header = NULL;
|
|
75
|
+
if (!GetAce(dacl, index, (void **)&header)) goto done;
|
|
76
|
+
if (header->AceType == ACCESS_DENIED_ACE_TYPE) continue;
|
|
77
|
+
if (header->AceType != ACCESS_ALLOWED_ACE_TYPE) goto done;
|
|
78
|
+
ACCESS_ALLOWED_ACE *ace = (ACCESS_ALLOWED_ACE *)header;
|
|
79
|
+
PSID sid = (PSID)&ace->SidStart;
|
|
80
|
+
if (ace->Mask && !trusted_sid(sid, user->User.Sid) &&
|
|
81
|
+
!((header->AceFlags & INHERIT_ONLY_ACE) && IsWellKnownSid(sid, WinCreatorOwnerSid))) goto done;
|
|
82
|
+
}
|
|
83
|
+
result = ERROR_SUCCESS;
|
|
84
|
+
done:
|
|
85
|
+
if (descriptor) LocalFree(descriptor);
|
|
86
|
+
if (user) free(user);
|
|
87
|
+
CloseHandle(file);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
DWORD muha_ensure_private_directory(const wchar_t *path) {
|
|
92
|
+
SECURITY_ATTRIBUTES attributes;
|
|
93
|
+
PSECURITY_DESCRIPTOR descriptor = NULL;
|
|
94
|
+
if (!muha_private_security(&attributes, &descriptor, TRUE)) return GetLastError();
|
|
95
|
+
BOOL created = CreateDirectoryW(path, &attributes);
|
|
96
|
+
DWORD error = created ? ERROR_SUCCESS : GetLastError();
|
|
97
|
+
LocalFree(descriptor);
|
|
98
|
+
if (error != ERROR_SUCCESS && error != ERROR_ALREADY_EXISTS) return error;
|
|
99
|
+
return muha_check_private_path(path, TRUE, FALSE);
|
|
100
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#ifndef MUHA_WINDOWS_PRIVATE_H
|
|
2
|
+
#define MUHA_WINDOWS_PRIVATE_H
|
|
3
|
+
#include <windows.h>
|
|
4
|
+
|
|
5
|
+
BOOL muha_private_security(SECURITY_ATTRIBUTES *attributes,
|
|
6
|
+
PSECURITY_DESCRIPTOR *descriptor, BOOL inherit);
|
|
7
|
+
DWORD muha_check_private_path(const wchar_t *path, BOOL directory, BOOL missing_ok);
|
|
8
|
+
DWORD muha_ensure_private_directory(const wchar_t *path);
|
|
9
|
+
#endif
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
#define WIN32_LEAN_AND_MEAN
|
|
2
|
+
#define _WIN32_WINNT 0x0602
|
|
3
|
+
#include <windows.h>
|
|
4
|
+
#include <io.h>
|
|
5
|
+
#include <stdbool.h>
|
|
6
|
+
#include <stdint.h>
|
|
7
|
+
#include <stdio.h>
|
|
8
|
+
#include <stdlib.h>
|
|
9
|
+
#include <string.h>
|
|
10
|
+
#include <wchar.h>
|
|
11
|
+
#include "windows-private.h"
|
|
12
|
+
|
|
13
|
+
/* Windows implementation of the private ownership protocol. fd3 is a pipe,
|
|
14
|
+
* not Node IPC. Only stdin/out/err enter the native process's handle list.
|
|
15
|
+
* The entry is suspended until Job assignment, including under an outer Job.
|
|
16
|
+
* No breakaway flags or inheritable Job handles permit descendants to escape. */
|
|
17
|
+
static HANDLE control = INVALID_HANDLE_VALUE;
|
|
18
|
+
static HANDLE job = NULL;
|
|
19
|
+
static PROCESS_INFORMATION native_process;
|
|
20
|
+
static bool closing = false, cleanup_error = false, started = false;
|
|
21
|
+
static bool forced = false, native_exited = false;
|
|
22
|
+
static bool closed_sent = false, acknowledged = false;
|
|
23
|
+
static ULONGLONG force_at = 0;
|
|
24
|
+
static int command_start = 2;
|
|
25
|
+
static HANDLE worker_pipe = INVALID_HANDLE_VALUE;
|
|
26
|
+
static HANDLE worker_connected = NULL;
|
|
27
|
+
static HANDLE worker_output_done = NULL;
|
|
28
|
+
|
|
29
|
+
typedef struct { HANDLE source; HANDLE destination; } relay_direction;
|
|
30
|
+
static relay_direction relays[2];
|
|
31
|
+
|
|
32
|
+
static bool pipe_io(HANDLE pipe, bool read, char *buffer, DWORD size, DWORD *transferred, OVERLAPPED *operation) {
|
|
33
|
+
ResetEvent(operation->hEvent);
|
|
34
|
+
BOOL done = read ? ReadFile(pipe, buffer, size, transferred, operation) : WriteFile(pipe, buffer, size, transferred, operation);
|
|
35
|
+
if (done) return true;
|
|
36
|
+
return GetLastError() == ERROR_IO_PENDING && GetOverlappedResult(pipe, operation, transferred, TRUE);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static DWORD WINAPI relay_bytes(void *parameter) {
|
|
40
|
+
relay_direction *direction = parameter;
|
|
41
|
+
char buffer[8192];
|
|
42
|
+
DWORD received;
|
|
43
|
+
OVERLAPPED input = {0}, output = {0};
|
|
44
|
+
input.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
45
|
+
output.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
46
|
+
if (!input.hEvent || !output.hEvent) return 1;
|
|
47
|
+
while (pipe_io(direction->source, true, buffer, sizeof(buffer), &received, &input) && received) {
|
|
48
|
+
DWORD offset = 0;
|
|
49
|
+
while (offset < received) {
|
|
50
|
+
DWORD written = 0;
|
|
51
|
+
if (!pipe_io(direction->destination, false, buffer + offset, received - offset, &written, &output) || !written) goto done;
|
|
52
|
+
offset += written;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
done:
|
|
56
|
+
CloseHandle(input.hEvent);
|
|
57
|
+
CloseHandle(output.hEvent);
|
|
58
|
+
if (direction == &relays[1]) SetEvent(worker_output_done);
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static DWORD WINAPI connect_worker(void *unused) {
|
|
63
|
+
(void)unused;
|
|
64
|
+
OVERLAPPED connection = {0};
|
|
65
|
+
connection.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
66
|
+
if (!connection.hEvent) return 1;
|
|
67
|
+
BOOL connected = ConnectNamedPipe(worker_pipe, &connection);
|
|
68
|
+
DWORD error = connected ? ERROR_SUCCESS : GetLastError(), transferred = 0;
|
|
69
|
+
if (!connected && error == ERROR_IO_PENDING) connected = GetOverlappedResult(worker_pipe, &connection, &transferred, TRUE);
|
|
70
|
+
else if (error == ERROR_PIPE_CONNECTED) connected = TRUE;
|
|
71
|
+
CloseHandle(connection.hEvent);
|
|
72
|
+
ULONG client = 0;
|
|
73
|
+
if (!connected || !GetNamedPipeClientProcessId(worker_pipe, &client) || client != native_process.dwProcessId) return 1;
|
|
74
|
+
SetEvent(worker_connected);
|
|
75
|
+
OVERLAPPED ready = {0};
|
|
76
|
+
ready.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
77
|
+
char handshake[] = "{\"type\":\"transport.ready\"}\n";
|
|
78
|
+
DWORD written = 0;
|
|
79
|
+
if (!ready.hEvent || !pipe_io(worker_pipe, false, handshake, (DWORD)strlen(handshake), &written, &ready)) return 1;
|
|
80
|
+
CloseHandle(ready.hEvent);
|
|
81
|
+
relays[0].source = (HANDLE)_get_osfhandle(4);
|
|
82
|
+
relays[0].destination = worker_pipe;
|
|
83
|
+
relays[1].source = worker_pipe;
|
|
84
|
+
relays[1].destination = (HANDLE)_get_osfhandle(4);
|
|
85
|
+
for (int i = 0; i < 2; i++) {
|
|
86
|
+
HANDLE thread = CreateThread(NULL, 0, relay_bytes, &relays[i], 0, NULL);
|
|
87
|
+
if (!thread) return 1;
|
|
88
|
+
CloseHandle(thread);
|
|
89
|
+
}
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static bool prepare_worker(const wchar_t *name) {
|
|
94
|
+
SECURITY_ATTRIBUTES attributes;
|
|
95
|
+
PSECURITY_DESCRIPTOR descriptor = NULL;
|
|
96
|
+
if (wcsncmp(name, L"\\\\.\\pipe\\muha-", 14) || !muha_private_security(&attributes, &descriptor, FALSE)) return false;
|
|
97
|
+
worker_pipe = CreateNamedPipeW(name, PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_OVERLAPPED,
|
|
98
|
+
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS,
|
|
99
|
+
1, 65536, 65536, 0, &attributes);
|
|
100
|
+
LocalFree(descriptor);
|
|
101
|
+
if (worker_pipe == INVALID_HANDLE_VALUE) return false;
|
|
102
|
+
worker_connected = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
103
|
+
worker_output_done = CreateEventW(NULL, TRUE, FALSE, NULL);
|
|
104
|
+
if (!worker_connected || !worker_output_done) return false;
|
|
105
|
+
HANDLE thread = CreateThread(NULL, 0, connect_worker, NULL, 0, NULL);
|
|
106
|
+
if (!thread) return false;
|
|
107
|
+
CloseHandle(thread);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static bool emit(const char *message) {
|
|
112
|
+
DWORD size = (DWORD)strlen(message), written = 0;
|
|
113
|
+
return WriteFile(control, message, size, &written, NULL) && written == size;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static void fail(const char *operation) {
|
|
117
|
+
DWORD code = GetLastError();
|
|
118
|
+
char message[256];
|
|
119
|
+
/* A rejected launch has no descendants; keep its error distinct from
|
|
120
|
+
* failure to prove cleanup. The empty Job is still checked before exit. */
|
|
121
|
+
if (strcmp(operation, "spawn") && strcmp(operation, "commandLine") &&
|
|
122
|
+
strcmp(operation, "duplicateStdio") && strcmp(operation, "attributesAllocation") &&
|
|
123
|
+
strcmp(operation, "attributesInitialization") && strcmp(operation, "handleList")) cleanup_error = true;
|
|
124
|
+
snprintf(message, sizeof(message), "{\"type\":\"error\",\"operation\":\"%s\",\"win32\":%lu}\n", operation, code);
|
|
125
|
+
(void)emit(message);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
static void start_close(const char *reason, DWORD grace) {
|
|
129
|
+
char message[256];
|
|
130
|
+
if (closing) return;
|
|
131
|
+
closing = true;
|
|
132
|
+
force_at = GetTickCount64() + grace;
|
|
133
|
+
snprintf(message, sizeof(message), "{\"type\":\"closing\",\"reason\":\"%s\"}\n", reason);
|
|
134
|
+
(void)emit(message);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static bool append_argument(wchar_t *result, size_t *used, wchar_t value) {
|
|
138
|
+
if (*used >= 32766) return false;
|
|
139
|
+
result[(*used)++] = value;
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static wchar_t *command_line(int argc, wchar_t **argv) {
|
|
144
|
+
size_t used = 0;
|
|
145
|
+
wchar_t *result = calloc(32767, sizeof(wchar_t));
|
|
146
|
+
if (!result) return NULL;
|
|
147
|
+
for (int i = command_start; i < argc; i++) {
|
|
148
|
+
if (i != command_start && !append_argument(result, &used, L' ')) goto too_long;
|
|
149
|
+
if (!append_argument(result, &used, L'"')) goto too_long;
|
|
150
|
+
const wchar_t *value = argv[i];
|
|
151
|
+
while (*value) {
|
|
152
|
+
size_t slashes = 0;
|
|
153
|
+
while (*value == L'\\') { slashes++; value++; }
|
|
154
|
+
if (*value == L'"' || !*value) slashes *= 2;
|
|
155
|
+
while (slashes--) if (!append_argument(result, &used, L'\\')) goto too_long;
|
|
156
|
+
if (*value == L'"' && !append_argument(result, &used, L'\\')) goto too_long;
|
|
157
|
+
if (*value && !append_argument(result, &used, *value++)) goto too_long;
|
|
158
|
+
}
|
|
159
|
+
if (!append_argument(result, &used, L'"')) goto too_long;
|
|
160
|
+
}
|
|
161
|
+
result[used] = 0;
|
|
162
|
+
return result;
|
|
163
|
+
too_long:
|
|
164
|
+
free(result);
|
|
165
|
+
return NULL;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
static bool create_native(int argc, wchar_t **argv) {
|
|
169
|
+
STARTUPINFOEXW startup;
|
|
170
|
+
HANDLE inherited[3] = { NULL, NULL, NULL };
|
|
171
|
+
const DWORD ids[3] = { STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE };
|
|
172
|
+
SIZE_T attribute_size = 0;
|
|
173
|
+
bool attributes_initialized = false, success = false;
|
|
174
|
+
wchar_t *line = command_line(argc, argv);
|
|
175
|
+
memset(&startup, 0, sizeof(startup));
|
|
176
|
+
startup.StartupInfo.cb = sizeof(startup);
|
|
177
|
+
startup.StartupInfo.dwFlags = STARTF_USESTDHANDLES;
|
|
178
|
+
if (!line) { SetLastError(ERROR_BAD_LENGTH); fail("commandLine"); return false; }
|
|
179
|
+
for (int i = 0; i < 3; i++) {
|
|
180
|
+
if (!DuplicateHandle(GetCurrentProcess(), GetStdHandle(ids[i]), GetCurrentProcess(),
|
|
181
|
+
&inherited[i], 0, TRUE, DUPLICATE_SAME_ACCESS)) {
|
|
182
|
+
fail("duplicateStdio"); goto done;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
startup.StartupInfo.hStdInput = inherited[0];
|
|
186
|
+
startup.StartupInfo.hStdOutput = inherited[1];
|
|
187
|
+
startup.StartupInfo.hStdError = inherited[2];
|
|
188
|
+
(void)InitializeProcThreadAttributeList(NULL, 1, 0, &attribute_size);
|
|
189
|
+
startup.lpAttributeList = malloc(attribute_size);
|
|
190
|
+
if (!startup.lpAttributeList) { SetLastError(ERROR_NOT_ENOUGH_MEMORY); fail("attributesAllocation"); goto done; }
|
|
191
|
+
if (!InitializeProcThreadAttributeList(startup.lpAttributeList, 1, 0, &attribute_size)) {
|
|
192
|
+
fail("attributesInitialization"); goto done;
|
|
193
|
+
}
|
|
194
|
+
attributes_initialized = true;
|
|
195
|
+
if (!UpdateProcThreadAttribute(startup.lpAttributeList, 0, PROC_THREAD_ATTRIBUTE_HANDLE_LIST,
|
|
196
|
+
inherited, sizeof(inherited), NULL, NULL)) { fail("handleList"); goto done; }
|
|
197
|
+
if (!CreateProcessW(argv[command_start], line, NULL, NULL, TRUE,
|
|
198
|
+
CREATE_SUSPENDED | CREATE_NO_WINDOW | EXTENDED_STARTUPINFO_PRESENT,
|
|
199
|
+
NULL, NULL, &startup.StartupInfo, &native_process)) { fail("spawn"); goto done; }
|
|
200
|
+
if (!AssignProcessToJobObject(job, native_process.hProcess)) {
|
|
201
|
+
fail("assignJob");
|
|
202
|
+
if (!TerminateProcess(native_process.hProcess, 125)) fail("terminateUnassigned");
|
|
203
|
+
if (WaitForSingleObject(native_process.hProcess, 5000) != WAIT_OBJECT_0) {
|
|
204
|
+
SetLastError(ERROR_TIMEOUT); fail("waitUnassigned");
|
|
205
|
+
}
|
|
206
|
+
goto done;
|
|
207
|
+
}
|
|
208
|
+
if (ResumeThread(native_process.hThread) == (DWORD)-1) { fail("resume"); goto done; }
|
|
209
|
+
success = true;
|
|
210
|
+
char message[128];
|
|
211
|
+
snprintf(message, sizeof(message), "{\"type\":\"spawned\",\"pid\":%lu}\n", native_process.dwProcessId);
|
|
212
|
+
if (!emit(message)) { success = false; fail("spawnResponse"); }
|
|
213
|
+
done:
|
|
214
|
+
if (attributes_initialized) DeleteProcThreadAttributeList(startup.lpAttributeList);
|
|
215
|
+
free(startup.lpAttributeList);
|
|
216
|
+
for (int i = 0; i < 3; i++) if (inherited[i]) CloseHandle(inherited[i]);
|
|
217
|
+
free(line);
|
|
218
|
+
return success;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
static bool empty_job(void) {
|
|
222
|
+
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION accounting;
|
|
223
|
+
if (!QueryInformationJobObject(job, JobObjectBasicAccountingInformation,
|
|
224
|
+
&accounting, sizeof(accounting), NULL)) { fail("queryJob"); return false; }
|
|
225
|
+
return accounting.ActiveProcesses == 0;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
int wmain(int argc, wchar_t **argv) {
|
|
229
|
+
wchar_t *end = NULL;
|
|
230
|
+
long grace;
|
|
231
|
+
char input[128];
|
|
232
|
+
size_t used = 0;
|
|
233
|
+
bool control_open = true;
|
|
234
|
+
if (argc < 3) return 64;
|
|
235
|
+
if (!wcscmp(argv[1], L"--ensure-private-dir") && argc == 3) {
|
|
236
|
+
DWORD error = muha_ensure_private_directory(argv[2]);
|
|
237
|
+
if (error) fprintf(stderr, "Windows private directory check failed (%lu)\n", error);
|
|
238
|
+
return error ? 125 : 0;
|
|
239
|
+
}
|
|
240
|
+
if (!wcscmp(argv[1], L"--check-private-files")) {
|
|
241
|
+
for (int i = 2; i < argc; i++) {
|
|
242
|
+
DWORD error = muha_check_private_path(argv[i], FALSE, TRUE);
|
|
243
|
+
if (error) { fprintf(stderr, "Windows private file check failed (%lu)\n", error); return 125; }
|
|
244
|
+
}
|
|
245
|
+
return 0;
|
|
246
|
+
}
|
|
247
|
+
grace = wcstol(argv[1], &end, 10);
|
|
248
|
+
if (!*argv[1] || *end || grace < 0 || grace > 60000) return 64;
|
|
249
|
+
control = (HANDLE)_get_osfhandle(3);
|
|
250
|
+
if (control == INVALID_HANDLE_VALUE) return 125;
|
|
251
|
+
if (argc >= 5 && !wcscmp(argv[2], L"--worker-pipe")) {
|
|
252
|
+
command_start = 4;
|
|
253
|
+
if (!prepare_worker(argv[3])) { fail("workerPipe"); return 125; }
|
|
254
|
+
}
|
|
255
|
+
job = CreateJobObjectW(NULL, NULL);
|
|
256
|
+
if (!job) { fail("createJob"); return 125; }
|
|
257
|
+
JOBOBJECT_EXTENDED_LIMIT_INFORMATION limits;
|
|
258
|
+
memset(&limits, 0, sizeof(limits));
|
|
259
|
+
limits.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
|
|
260
|
+
if (!SetInformationJobObject(job, JobObjectExtendedLimitInformation, &limits, sizeof(limits))) {
|
|
261
|
+
fail("jobLimits"); CloseHandle(job); return 125;
|
|
262
|
+
}
|
|
263
|
+
char ready[128];
|
|
264
|
+
snprintf(ready, sizeof(ready), "{\"type\":\"ready\",\"pid\":%lu}\n", GetCurrentProcessId());
|
|
265
|
+
if (!emit(ready)) start_close("controlEof", 0);
|
|
266
|
+
for (;;) {
|
|
267
|
+
if (native_process.hProcess && !native_exited) {
|
|
268
|
+
DWORD wait = WaitForSingleObject(native_process.hProcess, 0);
|
|
269
|
+
if (wait == WAIT_OBJECT_0) {
|
|
270
|
+
DWORD code = 0;
|
|
271
|
+
native_exited = true;
|
|
272
|
+
if (!GetExitCodeProcess(native_process.hProcess, &code)) fail("exitCode");
|
|
273
|
+
char message[128];
|
|
274
|
+
snprintf(message, sizeof(message), "{\"type\":\"nativeExit\",\"code\":%lu,\"signal\":0}\n", code);
|
|
275
|
+
(void)emit(message);
|
|
276
|
+
start_close("nativeExit", 0);
|
|
277
|
+
} else if (wait == WAIT_FAILED) { fail("waitNative"); start_close("waitError", 0); }
|
|
278
|
+
}
|
|
279
|
+
if (closing && GetTickCount64() >= force_at && !forced) {
|
|
280
|
+
forced = true;
|
|
281
|
+
if (!TerminateJobObject(job, 1)) fail("terminateJob");
|
|
282
|
+
}
|
|
283
|
+
if (closing && !closed_sent && empty_job() && (!native_process.hProcess ||
|
|
284
|
+
WaitForSingleObject(native_process.hProcess, 0) == WAIT_OBJECT_0) &&
|
|
285
|
+
(!worker_connected || WaitForSingleObject(worker_connected, 0) != WAIT_OBJECT_0 ||
|
|
286
|
+
WaitForSingleObject(worker_output_done, 0) == WAIT_OBJECT_0)) {
|
|
287
|
+
char message[128];
|
|
288
|
+
snprintf(message, sizeof(message), "{\"type\":\"closed\",\"noChildren\":true,\"cleanupError\":%s,\"ackRequired\":true}\n", cleanup_error ? "true" : "false");
|
|
289
|
+
if (!emit(message)) control_open = false;
|
|
290
|
+
closed_sent = true;
|
|
291
|
+
}
|
|
292
|
+
/* Keep the pipe alive until the host has consumed the cleanup proof.
|
|
293
|
+
* Otherwise its concurrent close write can destroy the duplex reader
|
|
294
|
+
* with EPIPE before that already-written proof is delivered. */
|
|
295
|
+
if (closed_sent && (acknowledged || !control_open)) break;
|
|
296
|
+
if (closing && GetTickCount64() > force_at + 5000) {
|
|
297
|
+
SetLastError(ERROR_TIMEOUT); fail("cleanupTimeout"); break;
|
|
298
|
+
}
|
|
299
|
+
DWORD available = 0;
|
|
300
|
+
if (control_open && !PeekNamedPipe(control, NULL, 0, NULL, &available, NULL)) {
|
|
301
|
+
if (GetLastError() != ERROR_BROKEN_PIPE) fail("controlPeek");
|
|
302
|
+
control_open = false;
|
|
303
|
+
start_close("controlEof", 0);
|
|
304
|
+
}
|
|
305
|
+
if (!available || !control_open) { Sleep(5); continue; }
|
|
306
|
+
char chunk[128];
|
|
307
|
+
DWORD received = 0;
|
|
308
|
+
DWORD requested = available < sizeof(chunk) ? available : (DWORD)sizeof(chunk);
|
|
309
|
+
if (!ReadFile(control, chunk, requested, &received, NULL) || received == 0) {
|
|
310
|
+
control_open = false; start_close("controlEof", 0); continue;
|
|
311
|
+
}
|
|
312
|
+
for (DWORD i = 0; i < received; i++) {
|
|
313
|
+
if (chunk[i] != '\n') {
|
|
314
|
+
if (used + 1 == sizeof(input)) { start_close("invalidControl", 0); used = 0; break; }
|
|
315
|
+
input[used++] = chunk[i]; continue;
|
|
316
|
+
}
|
|
317
|
+
input[used] = 0; used = 0;
|
|
318
|
+
if (!strcmp(input, "go") && !started && !closing) {
|
|
319
|
+
started = true;
|
|
320
|
+
if (!create_native(argc, argv)) start_close("spawnError", 0);
|
|
321
|
+
} else if (!strcmp(input, "ack") && closed_sent) acknowledged = true;
|
|
322
|
+
else if (!strcmp(input, "close")) start_close("close", (DWORD)grace);
|
|
323
|
+
else if (!strcmp(input, "interrupt")) start_close("interrupt", (DWORD)grace);
|
|
324
|
+
else start_close("invalidControl", 0);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (native_process.hThread) CloseHandle(native_process.hThread);
|
|
328
|
+
if (native_process.hProcess) CloseHandle(native_process.hProcess);
|
|
329
|
+
CloseHandle(job);
|
|
330
|
+
return cleanup_error ? 125 : 0;
|
|
331
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muha-sdk/agy-adapter",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "Official native AGY CLI adapter for Muha SDK.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"homepage": "https://github.com/Gao-Sijie/muha/tree/main/packages/agy-adapter#readme",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@muha-sdk/core": "0.1.
|
|
33
|
+
"@muha-sdk/core": "0.1.17"
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public",
|