aquaman-proxy 0.12.0 → 0.13.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 (38) hide show
  1. package/README.md +12 -12
  2. package/dist/cli/index.js +373 -6
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/core/index.d.ts +1 -1
  5. package/dist/core/index.d.ts.map +1 -1
  6. package/dist/core/index.js +1 -1
  7. package/dist/core/index.js.map +1 -1
  8. package/dist/core/types.d.ts +25 -0
  9. package/dist/core/types.d.ts.map +1 -1
  10. package/dist/core/utils/config.d.ts +8 -0
  11. package/dist/core/utils/config.d.ts.map +1 -1
  12. package/dist/core/utils/config.js +49 -1
  13. package/dist/core/utils/config.js.map +1 -1
  14. package/dist/core/utils/index.d.ts +1 -1
  15. package/dist/core/utils/index.d.ts.map +1 -1
  16. package/dist/core/utils/index.js +1 -1
  17. package/dist/core/utils/index.js.map +1 -1
  18. package/dist/daemon.d.ts +26 -0
  19. package/dist/daemon.d.ts.map +1 -1
  20. package/dist/daemon.js +104 -6
  21. package/dist/daemon.js.map +1 -1
  22. package/dist/hermes/config-writer.d.ts +61 -0
  23. package/dist/hermes/config-writer.d.ts.map +1 -0
  24. package/dist/hermes/config-writer.js +112 -0
  25. package/dist/hermes/config-writer.js.map +1 -0
  26. package/dist/hermes/integration.d.ts +53 -0
  27. package/dist/hermes/integration.d.ts.map +1 -0
  28. package/dist/hermes/integration.js +85 -0
  29. package/dist/hermes/integration.js.map +1 -0
  30. package/dist/index.d.ts +3 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +4 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/openclaw/integration.d.ts +13 -0
  35. package/dist/openclaw/integration.d.ts.map +1 -1
  36. package/dist/openclaw/integration.js +30 -0
  37. package/dist/openclaw/integration.js.map +1 -1
  38. package/package.json +2 -2
@@ -0,0 +1,112 @@
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
+ /** Format env vars for display (dry-run / export output). */
107
+ export function formatHermesEnvForDisplay(env) {
108
+ return Object.entries(env)
109
+ .map(([k, v]) => ` ${k}=${v}`)
110
+ .join('\n');
111
+ }
112
+ //# sourceMappingURL=config-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/hermes/config-writer.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -0,0 +1,85 @@
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 * as os from 'node:os';
12
+ import { spawn } from 'node:child_process';
13
+ import { generateHermesEnv, writeHermesEnv, formatHermesEnvForDisplay, getHermesEnvPath, hermesWiredServices, } from './config-writer.js';
14
+ /**
15
+ * Detect whether the Hermes CLI is installed and parse its version.
16
+ * Parses lines like "Hermes Agent v0.16.0 (2026.6.5)".
17
+ */
18
+ export async function detectHermes(binaryPath = 'hermes') {
19
+ return new Promise((resolve) => {
20
+ const proc = spawn(binaryPath, ['--version'], { stdio: ['ignore', 'pipe', 'pipe'] });
21
+ let stdout = '';
22
+ proc.stdout?.on('data', (d) => { stdout += d.toString(); });
23
+ proc.on('error', () => resolve({ installed: false }));
24
+ proc.on('close', (code) => {
25
+ if (code === 0 && stdout) {
26
+ const match = stdout.match(/Hermes(?:\s+Agent)?\s+v?(\d+\.\d+\.\d+)/i);
27
+ resolve({
28
+ installed: true,
29
+ version: match ? match[1] : stdout.trim().split('\n')[0],
30
+ path: binaryPath,
31
+ });
32
+ }
33
+ else {
34
+ resolve({ installed: false });
35
+ }
36
+ });
37
+ });
38
+ }
39
+ export class HermesIntegration {
40
+ options;
41
+ constructor(options) {
42
+ this.options = options;
43
+ }
44
+ /** Build the env vars that point Hermes at the loopback listener. */
45
+ configureHermes() {
46
+ return generateHermesEnv({
47
+ port: this.options.port,
48
+ token: this.options.token,
49
+ host: this.options.host,
50
+ services: this.options.services,
51
+ });
52
+ }
53
+ /** Which of the requested services actually get wired (anthropic/openai today). */
54
+ wiredServices() {
55
+ return hermesWiredServices(this.options.services);
56
+ }
57
+ /** Path to the Hermes dotenv file this integration writes. */
58
+ envPath() {
59
+ return getHermesEnvPath(os.homedir());
60
+ }
61
+ /**
62
+ * Write the configuration. `dotenv` merges into ~/.hermes/.env; `env`
63
+ * returns a display string for manual export. Returns the destination path
64
+ * (dotenv) or the formatted block (env).
65
+ */
66
+ writeConfiguration(env) {
67
+ const method = this.options.config?.configMethod ?? 'dotenv';
68
+ if (method === 'dotenv') {
69
+ const dest = this.envPath();
70
+ writeHermesEnv(env, dest);
71
+ return dest;
72
+ }
73
+ return formatHermesEnvForDisplay(env);
74
+ }
75
+ getEnvForDisplay() {
76
+ return formatHermesEnvForDisplay(this.configureHermes());
77
+ }
78
+ async detect() {
79
+ return detectHermes(this.options.config?.binaryPath || 'hermes');
80
+ }
81
+ }
82
+ export function createHermesIntegration(options) {
83
+ return new HermesIntegration(options);
84
+ }
85
+ //# sourceMappingURL=integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/hermes/integration.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,7 +11,9 @@ export { type CredentialProxyOptions, type RequestInfo, CredentialProxy, createC
11
11
  export { type AuthMode, type OAuthConfig, type ServiceRegistryOptions, ServiceRegistry, createServiceRegistry } from './service-registry.js';
12
12
  export { OAuthTokenCache, createOAuthTokenCache } from './oauth-token-cache.js';
13
13
  export { type EnvConfig, generateOpenClawEnv, writeEnvFile, appendToShellRc, formatEnvForDisplay } from './openclaw/env-writer.js';
14
- export { type OpenClawInfo, type LaunchOptions, OpenClawIntegration, createOpenClawIntegration } from './openclaw/integration.js';
14
+ export { type OpenClawInfo, type LaunchOptions, OpenClawIntegration, createOpenClawIntegration, parseCalendarVersion, authProfilesAreSqliteOnly } from './openclaw/integration.js';
15
+ export { type HermesEnvConfig, HERMES_SUPPORTED_SERVICES, generateHermesEnv, hermesWiredServices, getHermesEnvPath, writeHermesEnv, formatHermesEnvForDisplay } from './hermes/config-writer.js';
16
+ export { type HermesInfo, type HermesIntegrationOptions, HermesIntegration, createHermesIntegration, detectHermes } from './hermes/integration.js';
15
17
  export { type PolicyRule, type ServicePolicy, type PolicyConfig, matchPathPattern, matchPolicy, loadPolicyFromConfig, validatePolicyConfig, getDefaultPolicyPresets } from './request-policy.js';
16
18
  export * from './core/index.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,eAAe,EACf,qBAAqB,EACrB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,eAAe,EACf,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,SAAS,EACd,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAG7B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,eAAe,EACf,qBAAqB,EACrB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,eAAe,EACf,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,SAAS,EACd,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,KAAK,eAAe,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACb,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAG7B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -15,7 +15,10 @@ export { ServiceRegistry, createServiceRegistry } from './service-registry.js';
15
15
  export { OAuthTokenCache, createOAuthTokenCache } from './oauth-token-cache.js';
16
16
  // OpenClaw Integration
17
17
  export { generateOpenClawEnv, writeEnvFile, appendToShellRc, formatEnvForDisplay } from './openclaw/env-writer.js';
18
- export { OpenClawIntegration, createOpenClawIntegration } from './openclaw/integration.js';
18
+ export { OpenClawIntegration, createOpenClawIntegration, parseCalendarVersion, authProfilesAreSqliteOnly } from './openclaw/integration.js';
19
+ // Hermes Integration (v0.13.0+)
20
+ export { HERMES_SUPPORTED_SERVICES, generateHermesEnv, hermesWiredServices, getHermesEnvPath, writeHermesEnv, formatHermesEnvForDisplay } from './hermes/config-writer.js';
21
+ export { HermesIntegration, createHermesIntegration, detectHermes } from './hermes/integration.js';
19
22
  // Request Policy
20
23
  export { matchPathPattern, matchPolicy, loadPolicyFromConfig, validatePolicyConfig, getDefaultPolicyPresets } from './request-policy.js';
21
24
  // Core (merged from aquaman-core)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,SAAS;AACT,OAAO,EAGL,eAAe,EACf,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB,mBAAmB;AACnB,OAAO,EAIL,eAAe,EACf,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,uBAAuB;AACvB,OAAO,EAEL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,iBAAiB;AACjB,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,kCAAkC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,SAAS;AACT,OAAO,EAGL,eAAe,EACf,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB,mBAAmB;AACnB,OAAO,EAIL,eAAe,EACf,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,uBAAuB;AACvB,OAAO,EAEL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,gCAAgC;AAChC,OAAO,EAEL,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,iBAAiB;AACjB,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,kCAAkC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -18,6 +18,19 @@ export interface LaunchOptions {
18
18
  cwd?: string;
19
19
  inheritStdio?: boolean;
20
20
  }
21
+ /** Parse an OpenClaw calendar version string (e.g. "2026.6.6") into a tuple. */
22
+ export declare function parseCalendarVersion(version: string | undefined | null): [number, number, number] | null;
23
+ /**
24
+ * OpenClaw >= 2026.6.5 stores provider auth profiles in each agent's
25
+ * `openclaw-agent.sqlite` and removed the runtime read path for
26
+ * `auth-profiles.json` (openclaw/openclaw#89102). A placeholder written to the
27
+ * JSON file at plugin load is therefore no longer picked up at request time —
28
+ * it must be imported into SQLite once via `openclaw doctor --fix`.
29
+ *
30
+ * Returns true when the given version is at or past that boundary. Unknown /
31
+ * unparseable versions return false (assume the legacy JSON path still works).
32
+ */
33
+ export declare function authProfilesAreSqliteOnly(version: string | undefined | null): boolean;
21
34
  export declare class OpenClawIntegration {
22
35
  private config;
23
36
  private services;
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/openclaw/integration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;IAK5D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC;IAkC7C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI1D;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBtE;;OAEG;IACG,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBxE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI1C;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EAAE,GACxB,mBAAmB,CAErB"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/openclaw/integration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACjC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAKjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAOrF;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;IAK5D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC;IAkC7C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI1D;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBtE;;OAEG;IACG,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBxE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI1C;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EAAE,GACxB,mBAAmB,CAErB"}
@@ -9,6 +9,36 @@
9
9
  import * as path from 'node:path';
10
10
  import { spawn } from 'node:child_process';
11
11
  import { generateOpenClawEnv, writeEnvFile, appendToShellRc, formatEnvForDisplay } from './env-writer.js';
12
+ /** Parse an OpenClaw calendar version string (e.g. "2026.6.6") into a tuple. */
13
+ export function parseCalendarVersion(version) {
14
+ if (!version)
15
+ return null;
16
+ const m = version.match(/(\d+)\.(\d+)\.(\d+)/);
17
+ if (!m)
18
+ return null;
19
+ return [Number(m[1]), Number(m[2]), Number(m[3])];
20
+ }
21
+ /**
22
+ * OpenClaw >= 2026.6.5 stores provider auth profiles in each agent's
23
+ * `openclaw-agent.sqlite` and removed the runtime read path for
24
+ * `auth-profiles.json` (openclaw/openclaw#89102). A placeholder written to the
25
+ * JSON file at plugin load is therefore no longer picked up at request time —
26
+ * it must be imported into SQLite once via `openclaw doctor --fix`.
27
+ *
28
+ * Returns true when the given version is at or past that boundary. Unknown /
29
+ * unparseable versions return false (assume the legacy JSON path still works).
30
+ */
31
+ export function authProfilesAreSqliteOnly(version) {
32
+ const parts = parseCalendarVersion(version);
33
+ if (!parts)
34
+ return false;
35
+ const [y, m, d] = parts;
36
+ if (y !== 2026)
37
+ return y > 2026;
38
+ if (m !== 6)
39
+ return m > 6;
40
+ return d >= 5;
41
+ }
12
42
  export class OpenClawIntegration {
13
43
  config;
14
44
  services;
@@ -1 +1 @@
1
- {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/openclaw/integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/openclaw/integration.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aquaman-proxy",
3
- "version": "0.12.0",
4
- "description": "API key protection for OpenClaw. Credentials stay in your vault, never in the agent's memory",
3
+ "version": "0.13.0",
4
+ "description": "🔱 API key protection for AI agents. Bring your own vault. Credentials stay where you already keep them, never in the agent's memory.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",