@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 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. The current first-version qualification uses Claude
6
- Sonnet 4.6; see the [acceptance results](https://github.com/Gao-Sijie/muha/blob/main/QUALIFICATION.md).
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-4-6",
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. Native identifiers are not Muha aliases.
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;AAKrH,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;IAO3F,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"}
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"}
@@ -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 = { ...process.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();
@@ -1 +1 @@
1
- {"version":3,"file":"agy-process.js","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agy-process.js","sourceRoot":"","sources":["../src/agy-process.ts"],"names":[],"mappings":"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"}
Binary file
@@ -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;AACzE,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;IA4GrF,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAC9B,KAAK,CAAC,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBxC"}
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 = 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
+ 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");
@@ -1 +1 @@
1
- {"version":3,"file":"owned-cli.js","sourceRoot":"","sources":["../src/owned-cli.ts"],"names":[],"mappings":"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"}
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.16",
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.16"
33
+ "@muha-sdk/core": "0.1.17"
34
34
  },
35
35
  "publishConfig": {
36
36
  "access": "public",