aquaman-proxy 0.12.1 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +13 -13
  2. package/dist/cli/index.js +378 -87
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/core/audit/logger.js +1 -1
  5. package/dist/core/audit/logger.js.map +1 -1
  6. package/dist/core/credentials/backends/onepassword.js +1 -1
  7. package/dist/core/credentials/backends/onepassword.js.map +1 -1
  8. package/dist/core/credentials/backends/systemd-creds.js +1 -1
  9. package/dist/core/credentials/backends/systemd-creds.js.map +1 -1
  10. package/dist/core/credentials/caching-store.d.ts +43 -0
  11. package/dist/core/credentials/caching-store.d.ts.map +1 -0
  12. package/dist/core/credentials/caching-store.js +77 -0
  13. package/dist/core/credentials/caching-store.js.map +1 -0
  14. package/dist/core/credentials/index.d.ts +1 -0
  15. package/dist/core/credentials/index.d.ts.map +1 -1
  16. package/dist/core/credentials/index.js +1 -0
  17. package/dist/core/credentials/index.js.map +1 -1
  18. package/dist/core/index.d.ts +2 -2
  19. package/dist/core/index.d.ts.map +1 -1
  20. package/dist/core/index.js +2 -2
  21. package/dist/core/index.js.map +1 -1
  22. package/dist/core/types.d.ts +34 -0
  23. package/dist/core/types.d.ts.map +1 -1
  24. package/dist/core/utils/config.d.ts +25 -0
  25. package/dist/core/utils/config.d.ts.map +1 -1
  26. package/dist/core/utils/config.js +82 -2
  27. package/dist/core/utils/config.js.map +1 -1
  28. package/dist/core/utils/index.d.ts +1 -1
  29. package/dist/core/utils/index.d.ts.map +1 -1
  30. package/dist/core/utils/index.js +1 -1
  31. package/dist/core/utils/index.js.map +1 -1
  32. package/dist/daemon.d.ts +26 -0
  33. package/dist/daemon.d.ts.map +1 -1
  34. package/dist/daemon.js +104 -6
  35. package/dist/daemon.js.map +1 -1
  36. package/dist/hermes/config-writer.d.ts +71 -0
  37. package/dist/hermes/config-writer.d.ts.map +1 -0
  38. package/dist/hermes/config-writer.js +137 -0
  39. package/dist/hermes/config-writer.js.map +1 -0
  40. package/dist/hermes/integration.d.ts +53 -0
  41. package/dist/hermes/integration.d.ts.map +1 -0
  42. package/dist/hermes/integration.js +85 -0
  43. package/dist/hermes/integration.js.map +1 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/openclaw/integration.d.ts.map +1 -1
  49. package/dist/openclaw/integration.js.map +1 -1
  50. package/package.json +4 -4
package/dist/daemon.d.ts CHANGED
@@ -13,6 +13,18 @@ export interface CredentialProxyOptions {
13
13
  serviceRegistry?: ServiceRegistry;
14
14
  requestTimeout?: number;
15
15
  policyConfig?: PolicyConfig;
16
+ /**
17
+ * Opt-in loopback TCP listener for foreign-language agent hosts (Hermes)
18
+ * that can't dial a UDS. Default-off. When set, the proxy ALSO listens on
19
+ * `host:port` (host defaults to 127.0.0.1) and requires every request on
20
+ * that listener to present `token` — as `x-api-key`, `Authorization: Bearer`,
21
+ * or `x-aquaman-token`. Requests on the UDS are unaffected (file-perm gated).
22
+ */
23
+ loopback?: {
24
+ port: number;
25
+ token: string;
26
+ host?: string;
27
+ };
16
28
  }
17
29
  export interface RequestInfo {
18
30
  id: string;
@@ -32,12 +44,20 @@ interface ServiceConfig {
32
44
  }
33
45
  export declare class CredentialProxy {
34
46
  private server;
47
+ private loopbackServer;
35
48
  private options;
36
49
  private running;
37
50
  private serviceRegistry;
38
51
  private oauthCache;
39
52
  constructor(options: CredentialProxyOptions);
40
53
  start(): Promise<void>;
54
+ /**
55
+ * Validate the per-request loopback token. The agent host presents it as the
56
+ * provider api_key, so it arrives in whatever header that provider's SDK uses
57
+ * (`x-api-key` for Anthropic, `Authorization: Bearer` for OpenAI), or as an
58
+ * explicit `x-aquaman-token`. Comparison is constant-time.
59
+ */
60
+ private isLoopbackTokenValid;
41
61
  private handleRequest;
42
62
  private proxyRequest;
43
63
  private emitRequest;
@@ -64,6 +84,12 @@ export declare class CredentialProxy {
64
84
  stop(): Promise<void>;
65
85
  isRunning(): boolean;
66
86
  getSocketPath(): string;
87
+ /**
88
+ * Returns the loopback bind address (host:port) if the listener is active,
89
+ * else null. Reports the actually-bound port (so `port: 0` resolves to the
90
+ * OS-assigned port) when available.
91
+ */
92
+ getLoopbackAddress(): string | null;
67
93
  getServiceRegistry(): ServiceRegistry;
68
94
  getServiceConfigs(): Record<string, ServiceConfig>;
69
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAyB,KAAK,iBAAiB,EAAiB,MAAM,uBAAuB,CAAC;AAEtH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWrE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,EAAE,sBAAsB;IAMrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAkDd,aAAa;YAkJb,YAAY;IAkI1B,OAAO,CAAC,WAAW;IAMnB;;;;;;;;;;;;;;;;;;OAkBG;YACW,mBAAmB;IA4H3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGnD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAyB,KAAK,iBAAiB,EAAiB,MAAM,uBAAuB,CAAC;AAEtH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA0BrE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,EAAE,sBAAsB;IAMrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE5B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;YAwBd,aAAa;YA+Jb,YAAY;IAoI1B,OAAO,CAAC,WAAW;IAMnB;;;;;;;;;;;;;;;;;;OAkBG;YACW,mBAAmB;IA4H3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,MAAM;IAIvB;;;;OAIG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAQnC,kBAAkB,IAAI,eAAe;IAIrC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGnD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/daemon.js CHANGED
@@ -6,6 +6,7 @@ import * as http from 'node:http';
6
6
  import * as https from 'node:https';
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
+ import * as crypto from 'node:crypto';
9
10
  import { fileURLToPath } from 'node:url';
10
11
  import { generateId } from './core/index.js';
11
12
  import { createServiceRegistry } from './service-registry.js';
@@ -13,6 +14,20 @@ import { createOAuthTokenCache } from './oauth-token-cache.js';
13
14
  import { matchPolicy } from './request-policy.js';
14
15
  // Service name validation: lowercase alphanum, dots, hyphens, underscores
15
16
  const SAFE_SERVICE_NAME = /^[a-z0-9][a-z0-9._-]*$/;
17
+ /**
18
+ * Constant-time string comparison that doesn't leak length via an early
19
+ * return. timingSafeEqual requires equal-length buffers, so unequal lengths
20
+ * are compared against self (to burn comparable time) and then rejected.
21
+ */
22
+ function timingSafeStrEqual(a, b) {
23
+ const ab = Buffer.from(a, 'utf-8');
24
+ const bb = Buffer.from(b, 'utf-8');
25
+ if (ab.length !== bb.length) {
26
+ crypto.timingSafeEqual(ab, ab);
27
+ return false;
28
+ }
29
+ return crypto.timingSafeEqual(ab, bb);
30
+ }
16
31
  // Read version from package.json
17
32
  const __daemonFilename = fileURLToPath(import.meta.url);
18
33
  const __daemonDirname = path.dirname(__daemonFilename);
@@ -20,6 +35,7 @@ const daemonPkgJson = JSON.parse(fs.readFileSync(path.resolve(__daemonDirname, '
20
35
  const DAEMON_VERSION = daemonPkgJson.version;
21
36
  export class CredentialProxy {
22
37
  server = null;
38
+ loopbackServer = null;
23
39
  options;
24
40
  running = false;
25
41
  serviceRegistry;
@@ -33,14 +49,14 @@ export class CredentialProxy {
33
49
  if (this.running) {
34
50
  throw new Error('Credential proxy already running');
35
51
  }
36
- const requestHandler = (req, res) => {
37
- this.handleRequest(req, res).catch(error => {
52
+ const handlerFor = (fromLoopback) => (req, res) => {
53
+ this.handleRequest(req, res, fromLoopback).catch(error => {
38
54
  console.error('Proxy error:', error);
39
55
  res.statusCode = 500;
40
56
  res.end('Internal proxy error');
41
57
  });
42
58
  };
43
- this.server = http.createServer(requestHandler);
59
+ this.server = http.createServer(handlerFor(false));
44
60
  // Clean up stale socket (atomic — no TOCTOU race)
45
61
  try {
46
62
  fs.unlinkSync(this.options.socketPath);
@@ -54,7 +70,7 @@ export class CredentialProxy {
54
70
  if (!fs.existsSync(socketDir)) {
55
71
  fs.mkdirSync(socketDir, { recursive: true });
56
72
  }
57
- return new Promise((resolve, reject) => {
73
+ await new Promise((resolve, reject) => {
58
74
  // Set restrictive umask so the socket file is created owner-only.
59
75
  // process.umask() is unsupported in worker threads — guard with try/catch.
60
76
  let prevUmask;
@@ -88,10 +104,70 @@ export class CredentialProxy {
88
104
  reject(err);
89
105
  });
90
106
  });
107
+ // Opt-in loopback TCP listener (Hermes path). Token-gated; bound to
108
+ // loopback only. If it fails to bind, tear down the UDS server too so we
109
+ // don't leave a half-started proxy running.
110
+ if (this.options.loopback) {
111
+ const { port, host = '127.0.0.1' } = this.options.loopback;
112
+ this.loopbackServer = http.createServer(handlerFor(true));
113
+ try {
114
+ await new Promise((resolve, reject) => {
115
+ this.loopbackServer.on('error', reject);
116
+ this.loopbackServer.listen(port, host, () => {
117
+ console.log(`Credential proxy loopback listening on http://${this.getLoopbackAddress()}`);
118
+ resolve();
119
+ });
120
+ });
121
+ }
122
+ catch (err) {
123
+ this.loopbackServer = null;
124
+ await this.stop();
125
+ throw err;
126
+ }
127
+ }
128
+ }
129
+ /**
130
+ * Validate the per-request loopback token. The agent host presents it as the
131
+ * provider api_key, so it arrives in whatever header that provider's SDK uses
132
+ * (`x-api-key` for Anthropic, `Authorization: Bearer` for OpenAI), or as an
133
+ * explicit `x-aquaman-token`. Comparison is constant-time.
134
+ */
135
+ isLoopbackTokenValid(req) {
136
+ const expected = this.options.loopback?.token;
137
+ if (!expected)
138
+ return false;
139
+ const candidates = [];
140
+ const header = (name) => {
141
+ const v = req.headers[name];
142
+ return Array.isArray(v) ? v[0] : v;
143
+ };
144
+ const explicit = header('x-aquaman-token');
145
+ if (explicit)
146
+ candidates.push(explicit);
147
+ const apiKey = header('x-api-key');
148
+ if (apiKey)
149
+ candidates.push(apiKey);
150
+ const authz = header('authorization');
151
+ if (authz) {
152
+ candidates.push(authz.replace(/^Bearer\s+/i, ''));
153
+ }
154
+ return candidates.some(c => timingSafeStrEqual(c, expected));
91
155
  }
92
- async handleRequest(req, res) {
156
+ async handleRequest(req, res, fromLoopback = false) {
93
157
  const requestId = generateId();
94
158
  const url = req.url || '/';
159
+ // Loopback listener is network-reachable (unlike the 0o600 UDS), so every
160
+ // request on it must present the loopback token. Health check is exempt so
161
+ // local tooling can probe liveness without the token.
162
+ if (fromLoopback && url !== '/_health' && url !== '/_health/' && !this.isLoopbackTokenValid(req)) {
163
+ res.setHeader('Content-Type', 'application/json');
164
+ res.statusCode = 401;
165
+ res.end(JSON.stringify({
166
+ error: 'Loopback request rejected: missing or invalid aquaman loopback token',
167
+ fix: 'Set the placeholder api_key in ~/.hermes/.env to the token from: aquaman hermes status'
168
+ }));
169
+ return;
170
+ }
95
171
  // Health check endpoint
96
172
  if (url === '/_health' || url === '/_health/') {
97
173
  res.setHeader('Content-Type', 'application/json');
@@ -230,6 +306,9 @@ export class CredentialProxy {
230
306
  continue;
231
307
  if (key.toLowerCase() === 'authorization')
232
308
  continue;
309
+ // Never forward the loopback access token to the upstream provider
310
+ if (key.toLowerCase() === 'x-aquaman-token')
311
+ continue;
233
312
  if (value) {
234
313
  headers[key] = Array.isArray(value) ? value[0] : value;
235
314
  }
@@ -459,10 +538,16 @@ export class CredentialProxy {
459
538
  });
460
539
  }
461
540
  async stop() {
541
+ const socketPath = this.options.socketPath;
542
+ // Close the loopback listener first (if any), then the UDS server.
543
+ if (this.loopbackServer) {
544
+ const lb = this.loopbackServer;
545
+ this.loopbackServer = null;
546
+ await new Promise((resolve) => lb.close(() => resolve()));
547
+ }
462
548
  if (!this.running || !this.server) {
463
549
  return;
464
550
  }
465
- const socketPath = this.options.socketPath;
466
551
  return new Promise((resolve, reject) => {
467
552
  this.server.close((error) => {
468
553
  if (error) {
@@ -487,6 +572,19 @@ export class CredentialProxy {
487
572
  getSocketPath() {
488
573
  return this.options.socketPath;
489
574
  }
575
+ /**
576
+ * Returns the loopback bind address (host:port) if the listener is active,
577
+ * else null. Reports the actually-bound port (so `port: 0` resolves to the
578
+ * OS-assigned port) when available.
579
+ */
580
+ getLoopbackAddress() {
581
+ if (!this.loopbackServer || !this.options.loopback)
582
+ return null;
583
+ const host = this.options.loopback.host ?? '127.0.0.1';
584
+ const addr = this.loopbackServer.address();
585
+ const port = addr && typeof addr === 'object' ? addr.port : this.options.loopback.port;
586
+ return `${host}:${port}`;
587
+ }
490
588
  getServiceRegistry() {
491
589
  return this.serviceRegistry;
492
590
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Environment configuration generator for Hermes integration (v0.13.0+)
3
+ *
4
+ * Hermes is a Python agent host that builds its own HTTP client
5
+ * internally and exposes no transport/socket hook — so the aquaman UDS proxy
6
+ * can't be injected the way it is for OpenClaw. Instead the proxy runs an
7
+ * opt-in loopback TCP listener and Hermes is pointed at it via the SAME
8
+ * provider env vars it already understands (`ANTHROPIC_BASE_URL`,
9
+ * `OPENAI_BASE_URL`) plus a placeholder api_key that equals the loopback token.
10
+ *
11
+ * Hermes path conventions (verified against hermes_cli/runtime_provider.py and
12
+ * agent/anthropic_adapter.py):
13
+ * - Anthropic: base_url must end with `/anthropic`. Hermes special-cases that
14
+ * suffix into `anthropic_messages` api_mode; the Anthropic SDK then appends
15
+ * `/v1/messages`, yielding `/anthropic/v1/messages` at the proxy.
16
+ * - OpenAI: base_url ends with `/openai/v1`; the OpenAI SDK appends
17
+ * `/chat/completions`, yielding `/openai/v1/chat/completions`. The proxy's
18
+ * `openai` upstream is `https://api.openai.com` (no `/v1`), so there's no
19
+ * double-`/v1`.
20
+ *
21
+ * First cut covers LLM-provider isolation only (anthropic, openai). Channels /
22
+ * "platforms" are deferred — they have no base_url lever and hit the same
23
+ * can't-intercept-a-foreign-client wall.
24
+ */
25
+ /** Providers Hermes can be pointed at the loopback listener today. */
26
+ export declare const HERMES_SUPPORTED_SERVICES: readonly ["anthropic", "openai"];
27
+ export interface HermesEnvConfig {
28
+ /** Loopback listener port. */
29
+ port: number;
30
+ /** Loopback token — becomes the placeholder api_key Hermes presents. */
31
+ token: string;
32
+ /** Loopback host. Defaults to 127.0.0.1. */
33
+ host?: string;
34
+ /** Services to wire. Only anthropic/openai are emitted today; others are ignored. */
35
+ services: string[];
36
+ }
37
+ /**
38
+ * Generate the env vars that point Hermes at the aquaman loopback listener.
39
+ * For each supported provider in `services`, emits both the base URL and a
40
+ * placeholder api_key set to the loopback token. The proxy strips the
41
+ * placeholder and injects the real vault-stored credential.
42
+ */
43
+ export declare function generateHermesEnv(config: HermesEnvConfig): Record<string, string>;
44
+ /** Services in the input list that this integration knows how to wire for Hermes. */
45
+ export declare function hermesWiredServices(services: string[]): string[];
46
+ /**
47
+ * Default path to the Hermes dotenv file (`~/.hermes/.env`). Honors the
48
+ * `HERMES_HOME` override — the same var the Hermes CLI itself uses to relocate
49
+ * its config dir (verified against `hermes config env-path`) — else falls back
50
+ * to `~/.hermes`.
51
+ */
52
+ export declare function getHermesEnvPath(homeDir: string): string;
53
+ /**
54
+ * Write/merge the aquaman-managed block into `~/.hermes/.env`. Existing
55
+ * non-aquaman lines are preserved; the managed block is delimited by markers
56
+ * and rewritten in place on re-run (idempotent). File mode 0o600.
57
+ */
58
+ export declare function writeHermesEnv(env: Record<string, string>, filePath: string): void;
59
+ /**
60
+ * Hermes >= 0.17 "managed scope": a root-owned /etc/hermes/.env is loaded LAST
61
+ * with override=true, beating both ~/.hermes/.env and shell exports. If an
62
+ * admin pins any of the env vars aquaman manages, the proxy is silently
63
+ * bypassed for those keys. Returns the managed keys that file shadows (empty
64
+ * when the file is absent/unreadable). `managedEnvPath` is parameterized for
65
+ * tests; production callers use the default.
66
+ */
67
+ export declare const HERMES_MANAGED_ENV_PATH = "/etc/hermes/.env";
68
+ export declare function managedScopeShadowedKeys(ourEnv: Record<string, string>, managedEnvPath?: string): string[];
69
+ /** Format env vars for display (dry-run / export output). */
70
+ export declare function formatHermesEnvForDisplay(env: Record<string, string>): string;
71
+ //# sourceMappingURL=config-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/hermes/config-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,kCAAmC,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBjF;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CA8BlF;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAE1D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,cAAc,GAAE,MAAgC,GAC/C,MAAM,EAAE,CAaV;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAI7E"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Environment configuration generator for Hermes integration (v0.13.0+)
3
+ *
4
+ * Hermes is a Python agent host that builds its own HTTP client
5
+ * internally and exposes no transport/socket hook — so the aquaman UDS proxy
6
+ * can't be injected the way it is for OpenClaw. Instead the proxy runs an
7
+ * opt-in loopback TCP listener and Hermes is pointed at it via the SAME
8
+ * provider env vars it already understands (`ANTHROPIC_BASE_URL`,
9
+ * `OPENAI_BASE_URL`) plus a placeholder api_key that equals the loopback token.
10
+ *
11
+ * Hermes path conventions (verified against hermes_cli/runtime_provider.py and
12
+ * agent/anthropic_adapter.py):
13
+ * - Anthropic: base_url must end with `/anthropic`. Hermes special-cases that
14
+ * suffix into `anthropic_messages` api_mode; the Anthropic SDK then appends
15
+ * `/v1/messages`, yielding `/anthropic/v1/messages` at the proxy.
16
+ * - OpenAI: base_url ends with `/openai/v1`; the OpenAI SDK appends
17
+ * `/chat/completions`, yielding `/openai/v1/chat/completions`. The proxy's
18
+ * `openai` upstream is `https://api.openai.com` (no `/v1`), so there's no
19
+ * double-`/v1`.
20
+ *
21
+ * First cut covers LLM-provider isolation only (anthropic, openai). Channels /
22
+ * "platforms" are deferred — they have no base_url lever and hit the same
23
+ * can't-intercept-a-foreign-client wall.
24
+ */
25
+ import * as fs from 'node:fs';
26
+ import * as path from 'node:path';
27
+ /** Matches the SAFE_SERVICE_NAME pattern from daemon.ts. */
28
+ const SAFE_SERVICE_NAME = /^[a-z0-9][a-z0-9._-]*$/;
29
+ /** Providers Hermes can be pointed at the loopback listener today. */
30
+ export const HERMES_SUPPORTED_SERVICES = ['anthropic', 'openai'];
31
+ /**
32
+ * Generate the env vars that point Hermes at the aquaman loopback listener.
33
+ * For each supported provider in `services`, emits both the base URL and a
34
+ * placeholder api_key set to the loopback token. The proxy strips the
35
+ * placeholder and injects the real vault-stored credential.
36
+ */
37
+ export function generateHermesEnv(config) {
38
+ const host = config.host || '127.0.0.1';
39
+ const base = `http://${host}:${config.port}`;
40
+ const env = {};
41
+ for (const service of config.services) {
42
+ if (!SAFE_SERVICE_NAME.test(service))
43
+ continue;
44
+ switch (service) {
45
+ case 'anthropic':
46
+ env['ANTHROPIC_BASE_URL'] = `${base}/anthropic`;
47
+ env['ANTHROPIC_API_KEY'] = config.token;
48
+ break;
49
+ case 'openai':
50
+ env['OPENAI_BASE_URL'] = `${base}/openai/v1`;
51
+ env['OPENAI_API_KEY'] = config.token;
52
+ break;
53
+ default:
54
+ // Unsupported for Hermes today (channels/other providers). Skip
55
+ // silently — the caller surfaces which services were wired.
56
+ break;
57
+ }
58
+ }
59
+ return env;
60
+ }
61
+ /** Services in the input list that this integration knows how to wire for Hermes. */
62
+ export function hermesWiredServices(services) {
63
+ return services.filter(s => HERMES_SUPPORTED_SERVICES.includes(s));
64
+ }
65
+ /**
66
+ * Default path to the Hermes dotenv file (`~/.hermes/.env`). Honors the
67
+ * `HERMES_HOME` override — the same var the Hermes CLI itself uses to relocate
68
+ * its config dir (verified against `hermes config env-path`) — else falls back
69
+ * to `~/.hermes`.
70
+ */
71
+ export function getHermesEnvPath(homeDir) {
72
+ const stateDir = process.env['HERMES_HOME'] || path.join(homeDir, '.hermes');
73
+ return path.join(stateDir, '.env');
74
+ }
75
+ /**
76
+ * Write/merge the aquaman-managed block into `~/.hermes/.env`. Existing
77
+ * non-aquaman lines are preserved; the managed block is delimited by markers
78
+ * and rewritten in place on re-run (idempotent). File mode 0o600.
79
+ */
80
+ export function writeHermesEnv(env, filePath) {
81
+ const marker = '# >>> aquaman managed >>>';
82
+ const endMarker = '# <<< aquaman managed <<<';
83
+ let content = '';
84
+ if (fs.existsSync(filePath)) {
85
+ content = fs.readFileSync(filePath, 'utf-8');
86
+ }
87
+ // Strip any prior aquaman block.
88
+ const start = content.indexOf(marker);
89
+ const end = content.indexOf(endMarker);
90
+ if (start !== -1 && end !== -1 && end > start) {
91
+ content = content.slice(0, start).replace(/\n+$/, '') + content.slice(end + endMarker.length);
92
+ }
93
+ const body = Object.entries(env)
94
+ .map(([k, v]) => `${k}=${v}`)
95
+ .join('\n');
96
+ const block = `${marker}\n${body}\n${endMarker}\n`;
97
+ const merged = content.trim().length > 0
98
+ ? content.replace(/\n+$/, '') + '\n\n' + block
99
+ : block;
100
+ const dir = path.dirname(filePath);
101
+ if (!fs.existsSync(dir)) {
102
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
103
+ }
104
+ fs.writeFileSync(filePath, merged, { mode: 0o600 });
105
+ }
106
+ /**
107
+ * Hermes >= 0.17 "managed scope": a root-owned /etc/hermes/.env is loaded LAST
108
+ * with override=true, beating both ~/.hermes/.env and shell exports. If an
109
+ * admin pins any of the env vars aquaman manages, the proxy is silently
110
+ * bypassed for those keys. Returns the managed keys that file shadows (empty
111
+ * when the file is absent/unreadable). `managedEnvPath` is parameterized for
112
+ * tests; production callers use the default.
113
+ */
114
+ export const HERMES_MANAGED_ENV_PATH = '/etc/hermes/.env';
115
+ export function managedScopeShadowedKeys(ourEnv, managedEnvPath = HERMES_MANAGED_ENV_PATH) {
116
+ let content;
117
+ try {
118
+ content = fs.readFileSync(managedEnvPath, 'utf-8');
119
+ }
120
+ catch {
121
+ return []; // absent or unreadable (non-root) — nothing to warn about
122
+ }
123
+ const pinned = new Set();
124
+ for (const line of content.split('\n')) {
125
+ const m = line.match(/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/);
126
+ if (m)
127
+ pinned.add(m[1]);
128
+ }
129
+ return Object.keys(ourEnv).filter((k) => pinned.has(k));
130
+ }
131
+ /** Format env vars for display (dry-run / export output). */
132
+ export function formatHermesEnvForDisplay(env) {
133
+ return Object.entries(env)
134
+ .map(([k, v]) => ` ${k}=${v}`)
135
+ .join('\n');
136
+ }
137
+ //# sourceMappingURL=config-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/hermes/config-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,4DAA4D;AAC5D,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD,sEAAsE;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAU,CAAC;AAa1E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAE/C,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,WAAW;gBACd,GAAG,CAAC,oBAAoB,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC;gBAChD,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACxC,MAAM;YACR,KAAK,QAAQ;gBACX,GAAG,CAAC,iBAAiB,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC;gBAC7C,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrC,MAAM;YACR;gBACE,gEAAgE;gBAChE,4DAA4D;gBAC5D,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAE,yBAA+C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAA2B,EAAE,QAAgB;IAC1E,MAAM,MAAM,GAAG,2BAA2B,CAAC;IAC3C,MAAM,SAAS,GAAG,2BAA2B,CAAC;IAE9C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,iCAAiC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,IAAI,KAAK,SAAS,IAAI,CAAC;IAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK;QAC9C,CAAC,CAAC,KAAK,CAAC;IAEV,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAE1D,MAAM,UAAU,wBAAwB,CACtC,MAA8B,EAC9B,iBAAyB,uBAAuB;IAEhD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,0DAA0D;IACvE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACvE,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,yBAAyB,CAAC,GAA2B;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Hermes integration (v0.13.0+)
3
+ *
4
+ * Detects a local Hermes install and wires it to the aquaman
5
+ * loopback listener by writing provider base-URL + placeholder-key env vars
6
+ * into `~/.hermes/.env`. Unlike the OpenClaw path there is no in-process
7
+ * plugin doing fetch interception — Hermes is a foreign (Python) host, so the
8
+ * contract is purely: loopback listener on the proxy side + native env vars on
9
+ * the Hermes side. See config-writer.ts for the path/auth rationale.
10
+ */
11
+ import type { HermesConfig } from '../core/index.js';
12
+ export interface HermesInfo {
13
+ installed: boolean;
14
+ version?: string;
15
+ path?: string;
16
+ }
17
+ export interface HermesIntegrationOptions {
18
+ /** Loopback listener port the env vars should point at. */
19
+ port: number;
20
+ /** Loopback token used as the placeholder api_key. */
21
+ token: string;
22
+ /** Loopback host. Defaults to 127.0.0.1. */
23
+ host?: string;
24
+ /** Services to wire (only anthropic/openai are emitted today). */
25
+ services: string[];
26
+ /** Hermes integration config (configMethod, binaryPath). */
27
+ config?: HermesConfig;
28
+ }
29
+ /**
30
+ * Detect whether the Hermes CLI is installed and parse its version.
31
+ * Parses lines like "Hermes Agent v0.16.0 (2026.6.5)".
32
+ */
33
+ export declare function detectHermes(binaryPath?: string): Promise<HermesInfo>;
34
+ export declare class HermesIntegration {
35
+ private options;
36
+ constructor(options: HermesIntegrationOptions);
37
+ /** Build the env vars that point Hermes at the loopback listener. */
38
+ configureHermes(): Record<string, string>;
39
+ /** Which of the requested services actually get wired (anthropic/openai today). */
40
+ wiredServices(): string[];
41
+ /** Path to the Hermes dotenv file this integration writes. */
42
+ envPath(): string;
43
+ /**
44
+ * Write the configuration. `dotenv` merges into ~/.hermes/.env; `env`
45
+ * returns a display string for manual export. Returns the destination path
46
+ * (dotenv) or the formatted block (env).
47
+ */
48
+ writeConfiguration(env: Record<string, string>): string;
49
+ getEnvForDisplay(): string;
50
+ detect(): Promise<HermesInfo>;
51
+ }
52
+ export declare function createHermesIntegration(options: HermesIntegrationOptions): HermesIntegration;
53
+ //# sourceMappingURL=integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/hermes/integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,UAAU,SAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB7E;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,EAAE,wBAAwB;IAI7C,qEAAqE;IACrE,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IASzC,mFAAmF;IACnF,aAAa,IAAI,MAAM,EAAE;IAIzB,8DAA8D;IAC9D,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAUvD,gBAAgB,IAAI,MAAM;IAIpB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;CAGpC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAE5F"}