@aeolus-fleet/trierarch 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +7 -4
  2. package/dist/adapters/claude-code-setup.d.ts +11 -0
  3. package/dist/adapters/claude-code-setup.js +60 -0
  4. package/dist/adapters/claude-code-setup.js.map +1 -1
  5. package/dist/adapters/claude-code.d.ts +21 -18
  6. package/dist/adapters/claude-code.js +46 -36
  7. package/dist/adapters/claude-code.js.map +1 -1
  8. package/dist/adapters/codex-setup.d.ts +2 -0
  9. package/dist/adapters/codex-setup.js +6 -0
  10. package/dist/adapters/codex-setup.js.map +1 -1
  11. package/dist/adapters/codex.d.ts +2 -0
  12. package/dist/adapters/codex.js +31 -3
  13. package/dist/adapters/codex.js.map +1 -1
  14. package/dist/adapters/container.d.ts +36 -15
  15. package/dist/adapters/container.js +72 -93
  16. package/dist/adapters/container.js.map +1 -1
  17. package/dist/adapters/copilot-detector.d.ts +13 -0
  18. package/dist/adapters/copilot-detector.js +62 -0
  19. package/dist/adapters/copilot-detector.js.map +1 -0
  20. package/dist/adapters/copilot.d.ts +79 -0
  21. package/dist/adapters/copilot.js +187 -0
  22. package/dist/adapters/copilot.js.map +1 -0
  23. package/dist/adapters/detectors.js +6 -0
  24. package/dist/adapters/detectors.js.map +1 -1
  25. package/dist/adapters/files.d.ts +16 -0
  26. package/dist/adapters/files.js +5 -0
  27. package/dist/adapters/files.js.map +1 -1
  28. package/dist/adapters/harnesses.d.ts +3 -2
  29. package/dist/adapters/harnesses.js +21 -9
  30. package/dist/adapters/harnesses.js.map +1 -1
  31. package/dist/adapters/hold-runtime.d.ts +19 -5
  32. package/dist/adapters/hold-runtime.js +23 -10
  33. package/dist/adapters/hold-runtime.js.map +1 -1
  34. package/dist/adapters/hold.d.ts +12 -0
  35. package/dist/adapters/hold.js +66 -31
  36. package/dist/adapters/hold.js.map +1 -1
  37. package/dist/adapters/json-state.js +4 -0
  38. package/dist/adapters/json-state.js.map +1 -1
  39. package/dist/adapters/key-files.d.ts +16 -0
  40. package/dist/adapters/key-files.js +28 -0
  41. package/dist/adapters/key-files.js.map +1 -0
  42. package/dist/adapters/key-states.d.ts +21 -0
  43. package/dist/adapters/key-states.js +43 -0
  44. package/dist/adapters/key-states.js.map +1 -0
  45. package/dist/adapters/model-logins.d.ts +21 -0
  46. package/dist/adapters/model-logins.js +48 -0
  47. package/dist/adapters/model-logins.js.map +1 -0
  48. package/dist/adapters/model-proxy.d.ts +32 -0
  49. package/dist/adapters/model-proxy.js +171 -0
  50. package/dist/adapters/model-proxy.js.map +1 -0
  51. package/dist/adapters/paths.d.ts +4 -0
  52. package/dist/adapters/paths.js +2 -0
  53. package/dist/adapters/paths.js.map +1 -1
  54. package/dist/adapters/plugin.d.ts +11 -8
  55. package/dist/adapters/plugin.js +47 -13
  56. package/dist/adapters/plugin.js.map +1 -1
  57. package/dist/adapters/proxy-runtime.d.ts +31 -0
  58. package/dist/adapters/proxy-runtime.js +100 -0
  59. package/dist/adapters/proxy-runtime.js.map +1 -0
  60. package/dist/adapters/proxy-tokens.d.ts +25 -0
  61. package/dist/adapters/proxy-tokens.js +67 -0
  62. package/dist/adapters/proxy-tokens.js.map +1 -0
  63. package/dist/adapters/runtime-adapters.d.ts +11 -6
  64. package/dist/adapters/runtime-adapters.js +25 -11
  65. package/dist/adapters/runtime-adapters.js.map +1 -1
  66. package/dist/adapters/service.d.ts +1 -1
  67. package/dist/adapters/service.js +2 -2
  68. package/dist/adapters/service.js.map +1 -1
  69. package/dist/adapters/trust.d.ts +2 -1
  70. package/dist/adapters/trust.js +4 -1
  71. package/dist/adapters/trust.js.map +1 -1
  72. package/dist/adapters/vendor-answers.d.ts +6 -0
  73. package/dist/adapters/vendor-answers.js +38 -0
  74. package/dist/adapters/vendor-answers.js.map +1 -0
  75. package/dist/adapters/vendor-key-check.d.ts +23 -0
  76. package/dist/adapters/vendor-key-check.js +36 -0
  77. package/dist/adapters/vendor-key-check.js.map +1 -0
  78. package/dist/bin/aeolus-trierarch.js +7 -2
  79. package/dist/bin/aeolus-trierarch.js.map +1 -1
  80. package/dist/cli/add.d.ts +2 -2
  81. package/dist/cli/config-check.js +1 -1
  82. package/dist/cli/config-check.js.map +1 -1
  83. package/dist/cli/hold.js +20 -6
  84. package/dist/cli/hold.js.map +1 -1
  85. package/dist/cli/login.d.ts +72 -0
  86. package/dist/cli/login.js +114 -0
  87. package/dist/cli/login.js.map +1 -0
  88. package/dist/cli/main.js +85 -5
  89. package/dist/cli/main.js.map +1 -1
  90. package/dist/cli/proxy.d.ts +2 -0
  91. package/dist/cli/proxy.js +58 -0
  92. package/dist/cli/proxy.js.map +1 -0
  93. package/dist/cli/run.js +30 -4
  94. package/dist/cli/run.js.map +1 -1
  95. package/dist/cli/upgrade.d.ts +2 -2
  96. package/dist/cli/upgrade.js +2 -2
  97. package/dist/core/argo-reports.d.ts +10 -0
  98. package/dist/core/argo-reports.js +17 -0
  99. package/dist/core/argo-reports.js.map +1 -1
  100. package/dist/core/check-session-runtime.js +3 -1
  101. package/dist/core/check-session-runtime.js.map +1 -1
  102. package/dist/core/check-settings.d.ts +2 -0
  103. package/dist/core/check-settings.js +6 -1
  104. package/dist/core/check-settings.js.map +1 -1
  105. package/dist/core/entry.d.ts +12 -0
  106. package/dist/core/entry.js.map +1 -1
  107. package/dist/core/login.d.ts +28 -0
  108. package/dist/core/login.js +14 -0
  109. package/dist/core/login.js.map +1 -0
  110. package/dist/core/ports.d.ts +33 -1
  111. package/dist/core/reconciler.d.ts +5 -0
  112. package/dist/core/reconciler.js +12 -7
  113. package/dist/core/reconciler.js.map +1 -1
  114. package/dist/core/report-self.js +9 -3
  115. package/dist/core/report-self.js.map +1 -1
  116. package/dist/core/run-pass.d.ts +6 -1
  117. package/dist/core/run-pass.js +81 -13
  118. package/dist/core/run-pass.js.map +1 -1
  119. package/package.json +1 -2
  120. package/dist/adapters/claude-code-screen.d.ts +0 -1
  121. package/dist/adapters/claude-code-screen.js +0 -22
  122. package/dist/adapters/claude-code-screen.js.map +0 -1
  123. package/dist/adapters/held-command.d.ts +0 -13
  124. package/dist/adapters/held-command.js +0 -16
  125. package/dist/adapters/held-command.js.map +0 -1
  126. package/dist/adapters/launch-screen.d.ts +0 -14
  127. package/dist/adapters/launch-screen.js +0 -5
  128. package/dist/adapters/launch-screen.js.map +0 -1
  129. package/dist/adapters/stop-turn.d.ts +0 -13
  130. package/dist/adapters/stop-turn.js +0 -26
  131. package/dist/adapters/stop-turn.js.map +0 -1
  132. package/dist/adapters/tmux.d.ts +0 -13
  133. package/dist/adapters/tmux.js +0 -33
  134. package/dist/adapters/tmux.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import { type ShipId } from '@aeolus-fleet/common';
2
+ import { z } from 'zod';
3
+ import { type PluginHarness } from './plugin.js';
4
+ declare const proxyTokenSchema: z.ZodObject<{
5
+ harness: z.ZodEnum<{
6
+ "claude-code": "claude-code";
7
+ codex: "codex";
8
+ }>;
9
+ token: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export type ProxyToken = z.infer<typeof proxyTokenSchema>;
12
+ /** A fresh token for one start of a session. */
13
+ export declare function newProxyToken(): string;
14
+ export declare function writeProxyToken(folder: string, proxyToken: {
15
+ readonly harness: string;
16
+ readonly token: string;
17
+ }): Promise<void>;
18
+ /** The running session that holds the token for the harness, by its ship; none for any other token. */
19
+ export declare function sessionOfToken(sessions: string, at: {
20
+ harness: PluginHarness;
21
+ token: string;
22
+ }): Promise<ShipId | undefined>;
23
+ /** The token kept in the session's folder; none without one. */
24
+ export declare function readProxyToken(folder: string): Promise<ProxyToken | undefined>;
25
+ export {};
@@ -0,0 +1,67 @@
1
+ import { randomBytes, timingSafeEqual } from 'node:crypto';
2
+ import { chmod, readdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { idSchema } from '@aeolus-fleet/common';
5
+ import { z } from 'zod';
6
+ import { parsedLine } from './hold-protocol.js';
7
+ import { PLUGIN_HARNESSES } from './plugin.js';
8
+ /**
9
+ * Each session's proxy token (headless H16): a random token of its own, kept
10
+ * in the session's folder beside its hold's files, mode 600, with the harness
11
+ * it may reach. The model proxy takes a token only while that hold runs, so a
12
+ * stopped session's token is refused, and the folder goes with the session.
13
+ */
14
+ const FILE = 'proxy-token';
15
+ const proxyTokenSchema = z.object({ harness: z.enum(PLUGIN_HARNESSES), token: z.string().min(1) });
16
+ /** How many random bytes a session's proxy token holds. */
17
+ const TOKEN_BYTES = 32;
18
+ /** A fresh token for one start of a session. */
19
+ export function newProxyToken() {
20
+ return randomBytes(TOKEN_BYTES).toString('base64url');
21
+ }
22
+ export async function writeProxyToken(folder, proxyToken) {
23
+ const file = join(folder, FILE);
24
+ await writeFile(file, JSON.stringify({ harness: proxyToken.harness, token: proxyToken.token }), { mode: 0o600 });
25
+ await chmod(file, 0o600);
26
+ }
27
+ /** Whether the hold whose pid file is in the folder runs. */
28
+ async function isHoldRunning(folder) {
29
+ const pid = Number(await readFile(join(folder, 'hold.pid'), 'utf8').catch(() => ''));
30
+ if (!Number.isInteger(pid) || pid <= 1) {
31
+ return false;
32
+ }
33
+ try {
34
+ process.kill(pid, 0);
35
+ return true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ function isSameToken(given, held) {
42
+ const left = Buffer.from(given);
43
+ const right = Buffer.from(held);
44
+ return left.length === right.length && timingSafeEqual(left, right);
45
+ }
46
+ /** The running session that holds the token for the harness, by its ship; none for any other token. */
47
+ export async function sessionOfToken(sessions, at) {
48
+ const folders = await readdir(sessions).catch(() => []);
49
+ for (const name of folders) {
50
+ const shipId = idSchema('ship').safeParse(name);
51
+ if (!shipId.success) {
52
+ continue;
53
+ }
54
+ const folder = join(sessions, name);
55
+ const held = proxyTokenSchema.safeParse(parsedLine(await readFile(join(folder, FILE), 'utf8').catch(() => '')));
56
+ if (held.success && held.data.harness === at.harness && isSameToken(at.token, held.data.token) && (await isHoldRunning(folder))) {
57
+ return shipId.data;
58
+ }
59
+ }
60
+ return undefined;
61
+ }
62
+ /** The token kept in the session's folder; none without one. */
63
+ export async function readProxyToken(folder) {
64
+ const held = proxyTokenSchema.safeParse(parsedLine(await readFile(join(folder, FILE), 'utf8').catch(() => '')));
65
+ return held.success ? held.data : undefined;
66
+ }
67
+ //# sourceMappingURL=proxy-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-tokens.js","sourceRoot":"","sources":["../../src/adapters/proxy-tokens.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,14 @@ import type { SessionRuntime, WorkspacePort } from '../core/ports.js';
3
3
  import type { SessionRoots } from './caller-check.js';
4
4
  import type { TrustedClones } from './trusted-clones.js';
5
5
  import type { TrierarchPaths } from './paths.js';
6
- /**
7
- * The sessions on the host (headless H4, H8): one hold per ship, with the
8
- * sessions an older trierarch started in tmux listed beside them until each
9
- * is replaced (H19).
10
- */
6
+ import { type ProxyRuntime } from './proxy-runtime.js';
7
+ /** The model proxy on this machine (headless H16), started as a hold is. */
8
+ export declare function modelProxy(at: {
9
+ paths: TrierarchPaths;
10
+ version: string;
11
+ launch?: readonly string[];
12
+ }): ProxyRuntime;
13
+ /** The sessions on the host (headless H4, H8): one hold per ship. */
11
14
  export declare function hostSessions(at: {
12
15
  paths: TrierarchPaths;
13
16
  version: string;
@@ -23,11 +26,13 @@ export interface RuntimeAdapters {
23
26
  homes: string;
24
27
  managedSettings: string;
25
28
  };
29
+ /** Where a session reaches the model proxy the trierarch reaches at the url (headless H16): there on the host, at Podman's host address in a container. */
30
+ readonly modelProxyUrlOf: (url: string) => string;
26
31
  }
27
32
  /**
28
33
  * The adapters the configuration's session runtime picks (decision 0039): on
29
34
  * the host, a hold per ship and a worktree per ship (headless H4); in containers, a container per ship
30
- * from the image of the trierarch's own version, with the configured binary
35
+ * run by its hold (H18), from the image of the trierarch's own version, with the configured binary
31
36
  * and caps and the machine's model token, a clone per ship in place of the
32
37
  * worktree, by its real path, and a home of each ship's own.
33
38
  */
@@ -1,26 +1,26 @@
1
1
  import { realpath } from 'node:fs/promises';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { createCloneWorkspace } from './clone-workspace.js';
4
- import { createContainerRuntime } from './container.js';
4
+ import { containerProxyUrl, createContainerRuntime } from './container.js';
5
5
  import { createGitWorkspace } from './git-workspace.js';
6
6
  import { createHoldRuntime } from './hold-runtime.js';
7
- import { createTmux } from './tmux.js';
7
+ import { createProxyRuntime } from './proxy-runtime.js';
8
8
  /** The session image `release.yml` publishes with each version (decision 0011, 0039). */
9
9
  const SESSION_IMAGE = 'ghcr.io/thomashendrickx/aeolus-session';
10
10
  /** The trierarch program as it runs now, which starts each hold: `hold` and its words follow. */
11
11
  const TRIERARCH_PROGRAM = [process.execPath, fileURLToPath(new URL('../bin/aeolus-trierarch.js', import.meta.url))];
12
- /**
13
- * The sessions on the host (headless H4, H8): one hold per ship, with the
14
- * sessions an older trierarch started in tmux listed beside them until each
15
- * is replaced (H19).
16
- */
12
+ /** The model proxy on this machine (headless H16), started as a hold is. */
13
+ export function modelProxy(at) {
14
+ return createProxyRuntime({ folder: at.paths.proxy, sessions: at.paths.sessions, keys: at.paths.keys, program: TRIERARCH_PROGRAM, version: at.version, launch: at.launch ?? [] });
15
+ }
16
+ /** The sessions on the host (headless H4, H8): one hold per ship. */
17
17
  export function hostSessions(at) {
18
- return createHoldRuntime({ sessions: at.paths.sessions, program: at.program ?? TRIERARCH_PROGRAM, version: at.version, platform: process.platform, launch: at.launch ?? [], legacy: createTmux() });
18
+ return createHoldRuntime({ sessions: at.paths.sessions, program: at.program ?? TRIERARCH_PROGRAM, version: at.version, platform: process.platform, launch: at.launch ?? [] });
19
19
  }
20
20
  /**
21
21
  * The adapters the configuration's session runtime picks (decision 0039): on
22
22
  * the host, a hold per ship and a worktree per ship (headless H4); in containers, a container per ship
23
- * from the image of the trierarch's own version, with the configured binary
23
+ * run by its hold (H18), from the image of the trierarch's own version, with the configured binary
24
24
  * and caps and the machine's model token, a clone per ship in place of the
25
25
  * worktree, by its real path, and a home of each ship's own.
26
26
  */
@@ -29,14 +29,28 @@ export function runtimeAdaptersOf(at) {
29
29
  const root = configuration.worktreeRoot ?? paths.worktrees;
30
30
  const { runtime } = configuration;
31
31
  if (runtime?.kind !== 'container') {
32
- return { sessions: hostSessions({ paths, version, launch, ...(at.program !== undefined && { program: at.program }) }), workspace: createGitWorkspace({ configuration, root, ...(trusted !== undefined && { clones: trusted }) }) };
32
+ return { modelProxyUrlOf: (url) => url, sessions: hostSessions({ paths, version, launch, ...(at.program !== undefined && { program: at.program }) }), workspace: createGitWorkspace({ configuration, root, ...(trusted !== undefined && { clones: trusted }) }) };
33
33
  }
34
34
  const clones = createCloneWorkspace({ configuration, root, ...(trusted !== undefined && { clones: trusted }) });
35
35
  return {
36
- sessions: createContainerRuntime({ binary: runtime.binary, image: `${SESSION_IMAGE}:${version}`, tokenFile: paths.modelToken, homes: paths.homes, sockets: paths.sockets, memory: runtime.memory, cpus: runtime.cpus, launch }),
36
+ sessions: createContainerRuntime({
37
+ binary: runtime.binary,
38
+ image: `${SESSION_IMAGE}:${version}`,
39
+ tokenFile: paths.modelToken,
40
+ homes: paths.homes,
41
+ sockets: paths.sockets,
42
+ memory: runtime.memory,
43
+ cpus: runtime.cpus,
44
+ sessions: paths.sessions,
45
+ program: at.program ?? TRIERARCH_PROGRAM,
46
+ version,
47
+ platform: process.platform,
48
+ launch,
49
+ }),
37
50
  // The container mounts the folder at the path it is given, where the plugin inside keys it by `pwd -P` as the host's does: one path for both, the real one.
38
51
  workspace: { ...clones, prepare: async (at) => ({ folder: await realpath((await clones.prepare(at)).folder) }) },
39
52
  shipHomes: { homes: paths.homes, managedSettings },
53
+ modelProxyUrlOf: containerProxyUrl,
40
54
  };
41
55
  }
42
56
  //# sourceMappingURL=runtime-adapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-adapters.js","sourceRoot":"","sources":["../../src/adapters/runtime-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-adapters.js","sourceRoot":"","sources":["../../src/adapters/runtime-adapters.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export interface Service {
41
41
  }
42
42
  /** Runs a program and answers how it ended. */
43
43
  export type Exec = (command: string, args: readonly string[]) => Promise<CommandResult>;
44
- /** The service's environment: PATH, so it finds tmux, git, claude and codex, and the trierarch's own variables. */
44
+ /** The service's environment: PATH, so it finds git, claude, codex and the container runtime, and the trierarch's own variables. */
45
45
  export declare function serviceEnvironment(env: Readonly<Record<string, string | undefined>>): Record<string, string>;
46
46
  export declare function createService(options: {
47
47
  platform: string;
@@ -12,7 +12,7 @@ export const SYSTEMD_UNIT = 'aeolus-trierarch.service';
12
12
  /** The variables the trierarch itself reads, carried into the service when set where install ran. */
13
13
  const TRIERARCH_VARIABLES = ['AEOLUS_PLUGIN_ROOT', 'AEOLUS_PLUGIN_DATA', 'AEOLUS_CODEX_PLUGIN_ROOT', 'AEOLUS_CODEX_PLUGIN_DATA', 'CODEX_HOME', 'CLAUDE_CONFIG_DIR', 'AEOLUS_TRIERARCH_CONFIG'];
14
14
  const DEFAULT_PATH = '/usr/bin:/bin';
15
- /** The service's environment: PATH, so it finds tmux, git, claude and codex, and the trierarch's own variables. */
15
+ /** The service's environment: PATH, so it finds git, claude, codex and the container runtime, and the trierarch's own variables. */
16
16
  export function serviceEnvironment(env) {
17
17
  const environment = { PATH: env.PATH ?? DEFAULT_PATH };
18
18
  for (const name of TRIERARCH_VARIABLES) {
@@ -69,7 +69,7 @@ ExecStart="${at.run.node}" "${at.run.script}" run
69
69
  ${variables}
70
70
  Restart=always
71
71
  RestartSec=5
72
- # The sessions run in the tmux server the trierarch starts, in this unit's control group: a stop ends the trierarch only (#479).
72
+ # The sessions run under holds the trierarch starts, each in a scope of its own: a stop ends the trierarch only (#479).
73
73
  KillMode=process
74
74
 
75
75
  [Install]
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/adapters/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/adapters/service.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@ import type { TrustPort } from '../core/ports.js';
7
7
  * repository; a folder when its path is. A harness with no reader trusts
8
8
  * nothing. Claude Code's skip-permissions flag is unaccepted until bypass
9
9
  * permissions mode is accepted in its settings (#403); Codex asks about no
10
- * flag.
10
+ * flag. Copilot asks about no folder in `copilot -p`, so it trusts every
11
+ * configured place (Copilot CLI 1.0.105, in a new folder it never saw).
11
12
  */
12
13
  export declare function createTrust(at: {
13
14
  configuration: TrierarchConfiguration;
@@ -8,14 +8,17 @@ import { codexTrustedFolders } from './codex-setup.js';
8
8
  * repository; a folder when its path is. A harness with no reader trusts
9
9
  * nothing. Claude Code's skip-permissions flag is unaccepted until bypass
10
10
  * permissions mode is accepted in its settings (#403); Codex asks about no
11
- * flag.
11
+ * flag. Copilot asks about no folder in `copilot -p`, so it trusts every
12
+ * configured place (Copilot CLI 1.0.105, in a new folder it never saw).
12
13
  */
13
14
  export function createTrust(at) {
14
15
  const { configuration, homeDirectory, env, managedSettings } = at;
15
16
  const claudeCode = createClaudeCodeSetup({ homeDirectory, managedSettings, ...(env.CLAUDE_CONFIG_DIR !== undefined && { configDirectory: env.CLAUDE_CONFIG_DIR }) });
17
+ const configured = new Set([...Object.values(configuration.repositories), ...Object.values(configuration.folders)].map((place) => place.path));
16
18
  const readers = {
17
19
  'claude-code': () => claudeCode.trustedFolders(),
18
20
  codex: () => codexTrustedFolders({ homeDirectory, env }),
21
+ copilot: () => Promise.resolve(configured),
19
22
  };
20
23
  const unaccepted = {
21
24
  'claude-code': async () => ((await claudeCode.isSkipPermissionsAccepted()) ? [] : [SKIP_PERMISSIONS]),
@@ -1 +1 @@
1
- {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/adapters/trust.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,EAAgJ;IAC1K,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;IAClE,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;IACrK,MAAM,OAAO,GAA+E;QAC1F,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE;QAChD,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;KACzD,CAAC;IACF,MAAM,UAAU,GAA6E;QAC3F,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;KACtG,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,MAA8C,EAAE,OAA4B,EAAY,EAAE,CACzG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO;QACL,OAAO,EAAE,KAAK,IAA4B,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACzD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBAClE,MAAM,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9D,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAU,CAAC;YAC/J,CAAC,CAAC,CACH,CAAC;YACF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/adapters/trust.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,EAAgJ;IAC1K,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;IAClE,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;IACrK,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/I,MAAM,OAAO,GAA+E;QAC1F,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE;QAChD,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;QACxD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;KAC3C,CAAC;IACF,MAAM,UAAU,GAA6E;QAC3F,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;KACtG,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,MAA8C,EAAE,OAA4B,EAAY,EAAE,CACzG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO;QACL,OAAO,EAAE,KAAK,IAA4B,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACzD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBAClE,MAAM,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9D,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAU,CAAC;YAC/J,CAAC,CAAC,CACH,CAAC;YACF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PluginHarness } from './plugin.js';
2
+ export declare function keyStateOfAnswer(answer: {
3
+ harness: PluginHarness;
4
+ status: number;
5
+ body: string;
6
+ }): 'ready' | 'refused' | 'outOfCredit' | undefined;
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * What a vendor's answer to a request on a key says of the key (api keys K9),
4
+ * as each vendor documents its errors: refused for a key it does not take,
5
+ * out of credit for a billing problem or a spend limit; nothing for a rate
6
+ * limit or a server error, which the harness waits out and retries.
7
+ */
8
+ const HTTP_UNAUTHORIZED = 401;
9
+ const HTTP_PAYMENT_REQUIRED = 402;
10
+ const anthropicSchema = z.object({ error: z.object({ type: z.string(), message: z.string().optional() }) });
11
+ const openAiSchema = z.object({ error: z.object({ type: z.string().nullish(), code: z.string().nullish() }) });
12
+ /** Anthropic names no code of its own for a spend limit or an empty balance: its messages say it. */
13
+ const ANTHROPIC_CREDIT = /credit balance|usage limits|spend limit/iu;
14
+ const OPENAI_CREDIT = new Set(['insufficient_quota', 'credit_balance_exhausted', 'organization_spend_limit_exceeded', 'project_spend_limit_exceeded']);
15
+ function parsed(body) {
16
+ try {
17
+ return JSON.parse(body);
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ }
23
+ export function keyStateOfAnswer(answer) {
24
+ const { harness, status } = answer;
25
+ if (status >= 200 && status < 300) {
26
+ return 'ready';
27
+ }
28
+ if (status === HTTP_UNAUTHORIZED) {
29
+ return 'refused';
30
+ }
31
+ if (harness === 'claude-code') {
32
+ const error = anthropicSchema.safeParse(parsed(answer.body)).data?.error;
33
+ return status === HTTP_PAYMENT_REQUIRED || error?.type === 'billing_error' || ANTHROPIC_CREDIT.test(error?.message ?? '') ? 'outOfCredit' : undefined;
34
+ }
35
+ const error = openAiSchema.safeParse(parsed(answer.body)).data?.error;
36
+ return [error?.code, error?.type].some((name) => name !== undefined && name !== null && OPENAI_CREDIT.has(name)) ? 'outOfCredit' : undefined;
37
+ }
38
+ //# sourceMappingURL=vendor-answers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor-answers.js","sourceRoot":"","sources":["../../src/adapters/vendor-answers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;GAKG;AAEH,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5G,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAE/G,qGAAqG;AACrG,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AACrE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,8BAA8B,CAAC,CAAC,CAAC;AAEvJ,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAgE;IAC/F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;QACzE,OAAO,MAAM,KAAK,qBAAqB,IAAI,KAAK,EAAE,IAAI,KAAK,eAAe,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACxJ,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;IACtE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/I,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { PluginHarness } from './plugin.js';
2
+ /**
3
+ * Checks an API key with one free call to its harness's vendor, the model list
4
+ * (api keys K11), before `login` writes it. The cause it gives names the
5
+ * vendor's status and error type or code, never the vendor's message: OpenAI's
6
+ * quotes part of the key (K7). Nor a failed request's own message, which
7
+ * quotes a header it could not send: a key that cannot be a header is refused
8
+ * before anything is sent.
9
+ */
10
+ export type KeyCheck = {
11
+ readonly kind: 'taken';
12
+ } | {
13
+ readonly kind: 'refused';
14
+ readonly cause: string;
15
+ } | {
16
+ readonly kind: 'unreachable';
17
+ readonly cause: string;
18
+ };
19
+ export declare function checkKey(at: {
20
+ harness: PluginHarness;
21
+ key: string;
22
+ vendorUrl?: string;
23
+ }): Promise<KeyCheck>;
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ const ANTHROPIC_VERSION = '2023-06-01';
3
+ const CHECK_TIMEOUT_MS = 15_000;
4
+ const VENDORS = {
5
+ 'claude-code': { name: 'Anthropic', url: 'https://api.anthropic.com', headers: (key) => ({ 'x-api-key': key, 'anthropic-version': ANTHROPIC_VERSION }) },
6
+ codex: { name: 'OpenAI', url: 'https://api.openai.com', headers: (key) => ({ authorization: `Bearer ${key}` }) },
7
+ };
8
+ /** What an API key is made of: visible ASCII, no space or line break, so it can travel as a header. */
9
+ const KEY_PATTERN = /^[\x21-\x7e]+$/u;
10
+ /** How Node names why a request found no server, such as ECONNREFUSED. */
11
+ const causeSchema = z.object({ cause: z.object({ code: z.string() }) });
12
+ /** Both vendors answer an error as `{ error: { type, code? } }`; OpenAI's code is the more precise. */
13
+ const errorSchema = z.object({ error: z.object({ type: z.string().optional(), code: z.string().nullish() }) });
14
+ export async function checkKey(at) {
15
+ const vendor = VENDORS[at.harness];
16
+ const url = at.vendorUrl ?? vendor.url;
17
+ if (!KEY_PATTERN.test(at.key)) {
18
+ return { kind: 'refused', cause: 'The key holds a character no API key holds, such as a line break or a space' };
19
+ }
20
+ let response;
21
+ try {
22
+ response = await fetch(`${url}/v1/models`, { headers: vendor.headers(at.key), signal: AbortSignal.timeout(CHECK_TIMEOUT_MS) });
23
+ }
24
+ catch (error) {
25
+ const code = causeSchema.safeParse(error);
26
+ const reason = code.success ? code.data.cause.code : 'no answer';
27
+ return { kind: 'unreachable', cause: `${vendor.name} could not be reached at ${url} (${reason})` };
28
+ }
29
+ if (response.ok) {
30
+ return { kind: 'taken' };
31
+ }
32
+ const parsed = errorSchema.safeParse(await response.json().catch(() => undefined));
33
+ const errorName = parsed.success ? (parsed.data.error.code ?? parsed.data.error.type) : undefined;
34
+ return { kind: 'refused', cause: `${vendor.name} refused the key: ${String(response.status)}${errorName === undefined ? '' : ` ${errorName}`}` };
35
+ }
36
+ //# sourceMappingURL=vendor-key-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor-key-check.js","sourceRoot":"","sources":["../../src/adapters/vendor-key-check.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * `aeolus-trierarch`: runs a trierarch on this machine (docs/trierarch.md).
4
- * See `main.ts` for its commands. A session's hold (`hold`) loads only what it
5
- * needs: one runs per session, for as long as the session.
4
+ * See `main.ts` for its commands. A session's hold (`hold`) and the model
5
+ * proxy (`proxy`) load only what they need: they run for as long as the
6
+ * sessions do.
6
7
  */
7
8
  const [command, ...words] = process.argv.slice(2);
8
9
  if (command === 'hold') {
9
10
  const { holdCommand } = await import('../cli/hold.js');
10
11
  process.exitCode = await holdCommand(words, { env: process.env, platform: process.platform });
11
12
  }
13
+ else if (command === 'proxy') {
14
+ const { proxyCommand } = await import('../cli/proxy.js');
15
+ process.exitCode = await proxyCommand(words);
16
+ }
12
17
  else {
13
18
  const { CLAUDE_CODE_MANAGED_SETTINGS } = await import('../adapters/claude-code-setup.js');
14
19
  const { main } = await import('../cli/main.js');
@@ -1 +1 @@
1
- {"version":3,"file":"aeolus-trierarch.js","sourceRoot":"","sources":["../../src/bin/aeolus-trierarch.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChG,CAAC;KAAM,CAAC;IACN,MAAM,EAAE,4BAA4B,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnJ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"aeolus-trierarch.js","sourceRoot":"","sources":["../../src/bin/aeolus-trierarch.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChG,CAAC;KAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzD,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;KAAM,CAAC;IACN,MAAM,EAAE,4BAA4B,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnJ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,CAAC"}
package/dist/cli/add.d.ts CHANGED
@@ -9,8 +9,8 @@ import { type PlaceKind } from './places.js';
9
9
  * the trierarch may crew ships in, and trusts it, in one step. Adding a place
10
10
  * is what trusts it: it is checked as init checks it, written to the
11
11
  * configuration, and trusted for every configured harness that asks. Then the
12
- * service restarts so the trierarch reads it; its sessions run on their own
13
- * tmux server and keep running. It reports once the new process has said its
12
+ * service restarts so the trierarch reads it; its sessions run under holds of
13
+ * their own and keep running. It reports once the new process has said its
14
14
  * version (#402). A place it holds under the same name and path
15
15
  * is trusted again.
16
16
  */
@@ -41,7 +41,7 @@ export async function configCheck(paths, machine) {
41
41
  flags,
42
42
  options: Object.fromEntries(Object.entries(harness.options).map(([option, settings]) => [option, settings.values])),
43
43
  adapterFlags: adapterFlags[name] ?? [],
44
- ...(await commandLinesOf({ harness: name, flags, files, permissionModes: detected[name]?.permissionModes, isHeadless: runtime.kind !== 'container' })),
44
+ ...(await commandLinesOf({ harness: name, flags, files, permissionModes: detected[name]?.permissionModes })),
45
45
  },
46
46
  ];
47
47
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"config-check.js","sourceRoot":"","sources":["../../src/cli/config-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-check.js","sourceRoot":"","sources":["../../src/cli/config-check.ts"],"names":[],"mappings":"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"}
package/dist/cli/hold.js CHANGED
@@ -4,16 +4,23 @@ import { idSchema } from '@aeolus-fleet/common';
4
4
  import { createTrierarchCallerCheck } from '../adapters/caller-check.js';
5
5
  import { runHold } from '../adapters/hold.js';
6
6
  import { holdFilesOf } from '../adapters/hold-protocol.js';
7
+ import { readProxyToken } from '../adapters/proxy-tokens.js';
7
8
  import { runningVersion } from '../adapters/version.js';
8
9
  /**
9
10
  * `aeolus-trierarch hold <ship id> --sessions <folder> --folder <folder>
10
11
  * --harness <name> [--env NAME=value]... -- <command>...`: the hold of one
11
12
  * session (headless H8), as the trierarch starts it, never a person. The
12
- * harness's environment is built from nothing (H10): HOME and PATH from the
13
- * hold's own, then each `--env` given; nothing else of the trierarch's.
13
+ * harness's environment is built from nothing (H10): HOME, PATH, USER and
14
+ * LOGNAME from the hold's own, then each `--env` given, and with
15
+ * `--proxy-token-variable` the session's proxy token from its folder in that
16
+ * variable (api keys K7); nothing else of the trierarch's.
14
17
  */
15
- /** What the harness takes of the hold's own environment; everything else it is given. */
16
- const KEPT_VARIABLES = ['HOME', 'PATH'];
18
+ /**
19
+ * What the harness takes of the hold's own environment; everything else it is
20
+ * given. USER and LOGNAME name the user: on macOS Claude Code finds its login
21
+ * in the Keychain by them, and without them it is not logged in.
22
+ */
23
+ const KEPT_VARIABLES = ['HOME', 'PATH', 'USER', 'LOGNAME'];
17
24
  /** The harness's environment, from the hold's own and the variables given. */
18
25
  export function harnessEnvironment(own, given) {
19
26
  const kept = KEPT_VARIABLES.flatMap((variable) => {
@@ -47,12 +54,19 @@ export async function holdCommand(words, at) {
47
54
  const separator = pair?.indexOf('=') ?? -1;
48
55
  return pair === undefined || separator < 1 ? [] : [[pair.slice(0, separator), pair.slice(separator + 1)]];
49
56
  }));
57
+ const files = holdFilesOf(sessions, shipId.data);
58
+ const tokenVariable = options.includes('--proxy-token-variable') ? valueOf('--proxy-token-variable') : undefined;
59
+ const proxyToken = tokenVariable === undefined ? undefined : await readProxyToken(files.folder);
60
+ if (tokenVariable !== undefined && proxyToken === undefined) {
61
+ process.stderr.write(`No proxy token in ${files.folder}\n`);
62
+ return 2;
63
+ }
50
64
  return runHold({
51
- files: holdFilesOf(sessions, shipId.data),
65
+ files,
52
66
  folder,
53
67
  harness,
54
68
  command,
55
- environment: harnessEnvironment(at.env, given),
69
+ environment: harnessEnvironment(at.env, { ...given, ...(tokenVariable !== undefined && proxyToken !== undefined && { [tokenVariable]: proxyToken.token }) }),
56
70
  version: runningVersion(),
57
71
  mayCall: createTrierarchCallerCheck({ platform: at.platform, sessionRoots: () => holdPids(sessions) }),
58
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/cli/hold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/cli/hold.ts"],"names":[],"mappings":"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"}