@hybridaione/hybridclaw 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +7 -0
- package/.hybridclaw/container-image-state.json +5 -0
- package/CHANGELOG.md +35 -0
- package/README.md +33 -0
- package/SECURITY.md +8 -0
- package/config.example.json +12 -0
- package/container/package-lock.json +2 -2
- package/container/package.json +1 -1
- package/container/src/browser-tools.ts +81 -12
- package/dist/cli.js +159 -18
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -1
- package/dist/db.d.ts +6 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +72 -0
- package/dist/db.js.map +1 -1
- package/dist/gateway-client.d.ts +4 -0
- package/dist/gateway-client.d.ts.map +1 -1
- package/dist/gateway-client.js +6 -0
- package/dist/gateway-client.js.map +1 -1
- package/dist/gateway-service.d.ts.map +1 -1
- package/dist/gateway-service.js +3 -0
- package/dist/gateway-service.js.map +1 -1
- package/dist/gateway-types.d.ts +12 -0
- package/dist/gateway-types.d.ts.map +1 -1
- package/dist/gateway-types.js.map +1 -1
- package/dist/gateway.js +19 -6
- package/dist/gateway.js.map +1 -1
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +13 -0
- package/dist/health.js.map +1 -1
- package/dist/observability-ingest.d.ts +15 -0
- package/dist/observability-ingest.d.ts.map +1 -0
- package/dist/observability-ingest.js +613 -0
- package/dist/observability-ingest.js.map +1 -0
- package/dist/runtime-config.d.ts +12 -0
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +59 -2
- package/dist/runtime-config.js.map +1 -1
- package/docs/index.html +19 -3
- package/package.json +1 -1
- package/src/audit-events.ts +27 -1
- package/src/cli.ts +169 -19
- package/src/config.ts +22 -0
- package/src/db.ts +72 -0
- package/src/gateway-client.ts +7 -0
- package/src/gateway-service.ts +3 -0
- package/src/gateway-types.ts +12 -0
- package/src/gateway.ts +24 -6
- package/src/health.ts +14 -0
- package/src/observability-ingest.ts +765 -0
- package/src/prompt-hooks.ts +6 -0
- package/src/runtime-config.ts +67 -2
package/.env.example
CHANGED
|
@@ -5,3 +5,10 @@ HYBRIDAI_API_KEY=
|
|
|
5
5
|
DISCORD_TOKEN= # Enable Discord integration when set
|
|
6
6
|
WEB_API_TOKEN= # Protect /api/* endpoints (Bearer token)
|
|
7
7
|
GATEWAY_API_TOKEN= # Client token override (defaults to WEB_API_TOKEN)
|
|
8
|
+
|
|
9
|
+
# Optional browser settings
|
|
10
|
+
BROWSER_ALLOW_PRIVATE_NETWORK= # Set true to allow localhost/private network navigation in browser tools
|
|
11
|
+
BROWSER_PERSIST_PROFILE= # Default true; set false for ephemeral browser profile
|
|
12
|
+
BROWSER_PERSIST_SESSION_STATE= # Default true; set false to disable auto save/restore state files
|
|
13
|
+
BROWSER_PROFILE_ROOT= # Optional profile root path (default: /workspace/.hybridclaw-runtime/browser-profiles in container)
|
|
14
|
+
BROWSER_CDP_URL= # Optional CDP endpoint (e.g. ws://127.0.0.1:9222/devtools/browser/...)
|
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,41 @@
|
|
|
8
8
|
|
|
9
9
|
### Fixed
|
|
10
10
|
|
|
11
|
+
## [0.1.20](https://github.com/HybridAIOne/hybridclaw/tree/v0.1.20)
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **Browser auth policy clarification**: Added explicit runtime guidance that user-directed login/auth-flow testing is allowed with browser tools on the requested domain.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **Persistent browser login continuity**: Browser tooling now persists per-session profile/state by default (`AGENT_BROWSER_PROFILE` + `AGENT_BROWSER_SESSION_NAME`) with configurable overrides (`BROWSER_PERSIST_PROFILE`, `BROWSER_PERSIST_SESSION_STATE`, `BROWSER_PROFILE_ROOT`, `BROWSER_CDP_URL`).
|
|
20
|
+
- **Safety prompt alignment**: System safety hook now explicitly rejects fabricated “public-only/unauthenticated browser” limitations and prioritizes real tool/policy outcomes.
|
|
21
|
+
- **Documentation refresh**: Updated README and website docs (`docs/index.html`) with authenticated browser-flow support and browser session persistence behavior.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **Audit secret leakage risk**: Structured audit tool-call arguments now redact sensitive fields (password/token/secret/etc.), including `browser_type.text`, to avoid credential plaintext in audit trails.
|
|
26
|
+
|
|
27
|
+
## [0.1.19](https://github.com/HybridAIOne/hybridclaw/tree/v0.1.19)
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- **Observability ingest exporter**: Added structured audit export to HybridAI via `POST /api/v1/agent-observability/events:batch` with cursor-based delivery, payload/event caps, and local runtime diagnostics in `GET /api/status`.
|
|
32
|
+
- **Observability token cache store**: Added persistent SQLite token cache (`observability_ingest_tokens`) for bot-scoped ingest tokens used by observability push.
|
|
33
|
+
- **Gateway admin shutdown endpoint**: Added `POST /api/admin/shutdown` for graceful local gateway termination and restart workflows.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **Token lifecycle flow**: Observability ingest token management now uses `POST /api/v1/agent-observability/ingest-token:ensure` (no legacy token-route compatibility paths).
|
|
38
|
+
- **Gateway lifecycle handling**: `hybridclaw gateway restart` and stop/restart behavior now handle managed and unmanaged gateway ownership paths more reliably.
|
|
39
|
+
- **Documentation refresh**: Updated README and website docs (`docs/index.html`) with observability push/token behavior, restart guidance, and operational visibility messaging.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **Observability auth recovery**: Ingest auth failures now trigger token refresh attempts against the v1 ensure endpoint before pausing export.
|
|
44
|
+
- **Gateway status diagnostics**: Status responses now include richer observability state and PID-aware runtime diagnostics for easier troubleshooting.
|
|
45
|
+
|
|
11
46
|
## [0.1.18](https://github.com/HybridAIOne/hybridclaw/tree/v0.1.18)
|
|
12
47
|
|
|
13
48
|
### Added
|
package/README.md
CHANGED
|
@@ -77,6 +77,8 @@ HybridClaw best-in-class capabilities:
|
|
|
77
77
|
- formal prompt hook orchestration (`bootstrap`, `memory`, `safety`)
|
|
78
78
|
- proactive runtime layer with active-hours gating, push delegation (`single`/`parallel`/`chain`), depth-aware tool policy, and retry controls
|
|
79
79
|
- structured audit trail: append-only hash-chained wire logs (`data/audit/<session>/wire.jsonl`) with tamper-evident immutability, normalized SQLite audit tables, and verification/search CLI commands
|
|
80
|
+
- observability export: incremental `events:batch` forwarding with durable cursor tracking and bot-scoped ingest token lifecycle via `ingest-token:ensure`
|
|
81
|
+
- gateway lifecycle controls: managed + unmanaged restart/stop flows with graceful shutdown fallback paths
|
|
80
82
|
- instruction-integrity approval flow: core instruction docs (`AGENTS.md`, `SECURITY.md`, `TRUST_MODEL.md`) are hash-verified against a local approved baseline before TUI start
|
|
81
83
|
|
|
82
84
|
## Configuration
|
|
@@ -86,6 +88,7 @@ HybridClaw uses typed runtime config in `config.json` (auto-created on first run
|
|
|
86
88
|
- Start from `config.example.json` (reference)
|
|
87
89
|
- Runtime watches `config.json` and hot-reloads most settings (model defaults, heartbeat, prompt hooks, limits, etc.)
|
|
88
90
|
- `proactive.*` controls autonomous behavior (`activeHours`, `delegation`, `autoRetry`)
|
|
91
|
+
- `observability.*` controls push ingest into HybridAI (`events:batch` endpoint, batching, identity metadata)
|
|
89
92
|
- Some settings require restart to fully apply (for example HTTP bind host/port)
|
|
90
93
|
- Default bot is configured via `hybridai.defaultChatbotId` in `config.json` (legacy `HYBRIDAI_CHATBOT_ID` values are auto-migrated on startup)
|
|
91
94
|
|
|
@@ -94,6 +97,7 @@ Secrets remain in `.env`:
|
|
|
94
97
|
- `HYBRIDAI_API_KEY` (required)
|
|
95
98
|
- `DISCORD_TOKEN` (optional)
|
|
96
99
|
- `WEB_API_TOKEN` and `GATEWAY_API_TOKEN` (optional API auth hardening)
|
|
100
|
+
- observability ingest token is auto-managed via `POST /api/v1/agent-observability/ingest-token:ensure` and cached locally
|
|
97
101
|
|
|
98
102
|
Trust-model acceptance is stored in `config.json` under `security.*` and is required before runtime starts.
|
|
99
103
|
|
|
@@ -125,6 +129,29 @@ Instruction approval notes:
|
|
|
125
129
|
- `hybridclaw tui` performs this check before startup and prompts for approval when files changed
|
|
126
130
|
- instruction approval actions are audit logged (`approval.request` / `approval.response`, action `instruction:approve`)
|
|
127
131
|
|
|
132
|
+
## Observability Push
|
|
133
|
+
|
|
134
|
+
HybridClaw can forward structured audit records to HybridAI's ingest API:
|
|
135
|
+
|
|
136
|
+
- endpoint: `POST /api/v1/agent-observability/events:batch`
|
|
137
|
+
- source: local `audit_events` table (ordered by `id`)
|
|
138
|
+
- transport: bearer ingest token auto-fetched via `POST /api/v1/agent-observability/ingest-token:ensure` using `HYBRIDAI_API_KEY`
|
|
139
|
+
- delivery: incremental batches with persisted cursor (`observability_offsets` table), max 1000 events and max 2,000,000-byte payload per request
|
|
140
|
+
- token handling: token cache is stored locally in SQLite (`observability_ingest_tokens`) and automatically refreshed on ingest auth failures
|
|
141
|
+
|
|
142
|
+
Config keys (in `config.json`):
|
|
143
|
+
|
|
144
|
+
- `observability.enabled` (`true` by default)
|
|
145
|
+
- `observability.baseUrl` (for example `https://hybridai.one`)
|
|
146
|
+
- `observability.ingestPath` (`/api/v1/agent-observability/events:batch`)
|
|
147
|
+
- `observability.botId` (defaults to `hybridai.defaultChatbotId` when empty)
|
|
148
|
+
- `observability.agentId`, `observability.label`, `observability.environment`
|
|
149
|
+
- `observability.flushIntervalMs`, `observability.batchMaxEvents`
|
|
150
|
+
|
|
151
|
+
Runtime diagnostics:
|
|
152
|
+
|
|
153
|
+
- local status endpoint `GET /api/status` includes an `observability` block (enabled/running/paused, cursor, last success/failure timestamps)
|
|
154
|
+
|
|
128
155
|
## Agent workspace
|
|
129
156
|
|
|
130
157
|
Each agent gets a persistent workspace with markdown files that shape its personality and memory:
|
|
@@ -219,6 +246,11 @@ Browser tooling notes:
|
|
|
219
246
|
|
|
220
247
|
- The shipped container image preinstalls `agent-browser` and Chromium (Playwright).
|
|
221
248
|
- You can override the binary via `AGENT_BROWSER_BIN` if needed.
|
|
249
|
+
- User-directed authenticated browser-flow testing is supported (including filling/submitting login forms on the requested site).
|
|
250
|
+
- Browser auth/session state now persists per HybridClaw session by default via a dedicated profile directory under `/workspace/.hybridclaw-runtime/browser-profiles`.
|
|
251
|
+
- Session cookies/localStorage are also auto-saved/restored via `agent-browser` session-state files.
|
|
252
|
+
- Optional overrides: `BROWSER_PERSIST_PROFILE=false` (disable profile persistence), `BROWSER_PERSIST_SESSION_STATE=false` (disable state file persistence), `BROWSER_PROFILE_ROOT=/path` (custom profile root), `BROWSER_CDP_URL=ws://...` (force CDP attachment to an existing browser).
|
|
253
|
+
- Structured audit logs redact sensitive browser/tool arguments (password/token/secret fields and typed form text).
|
|
222
254
|
- Navigation to private/loopback hosts is blocked by default (set `BROWSER_ALLOW_PRIVATE_NETWORK=true` to override).
|
|
223
255
|
- Screenshot/PDF outputs are constrained to `/workspace/.browser-artifacts`.
|
|
224
256
|
|
|
@@ -241,6 +273,7 @@ Hook toggles live in `config.json` under `promptHooks`.
|
|
|
241
273
|
CLI runtime commands:
|
|
242
274
|
|
|
243
275
|
- `hybridclaw gateway start [--foreground]` — Start gateway (backend by default; foreground with flag)
|
|
276
|
+
- `hybridclaw gateway restart [--foreground]` — Restart managed gateway backend process
|
|
244
277
|
- `hybridclaw gateway stop` — Stop managed gateway backend process
|
|
245
278
|
- `hybridclaw gateway status` — Show lifecycle/API status
|
|
246
279
|
- `hybridclaw gateway <command...>` — Send a command to a running gateway (for example `sessions`, `bot info`)
|
package/SECURITY.md
CHANGED
|
@@ -22,6 +22,14 @@ System prompts include safety constraints for every conversation turn:
|
|
|
22
22
|
|
|
23
23
|
Implementation: [src/prompt-hooks.ts](./src/prompt-hooks.ts)
|
|
24
24
|
|
|
25
|
+
### 1.1) Browser Authentication Flows
|
|
26
|
+
|
|
27
|
+
User-directed browser authentication testing is permitted when the user explicitly asks for it:
|
|
28
|
+
|
|
29
|
+
- Browser tools may fill credentials and submit login forms for the requested site.
|
|
30
|
+
- Credentials must be used only for the requested auth flow on the intended domain.
|
|
31
|
+
- Credentials must not be echoed in assistant prose, written to workspace files, or sent to unrelated domains.
|
|
32
|
+
|
|
25
33
|
### 2) Runtime Tool Blocking
|
|
26
34
|
|
|
27
35
|
Before tool execution, HybridClaw applies policy hooks that block known dangerous patterns:
|
package/config.example.json
CHANGED
|
@@ -43,6 +43,18 @@
|
|
|
43
43
|
"dbPath": "data/hybridclaw.db",
|
|
44
44
|
"logLevel": "info"
|
|
45
45
|
},
|
|
46
|
+
"observability": {
|
|
47
|
+
"enabled": true,
|
|
48
|
+
"baseUrl": "https://hybridai.one",
|
|
49
|
+
"ingestPath": "/api/v1/agent-observability/events:batch",
|
|
50
|
+
"statusPath": "/api/v1/agent-observability/status",
|
|
51
|
+
"botId": "",
|
|
52
|
+
"agentId": "agent_main",
|
|
53
|
+
"label": "",
|
|
54
|
+
"environment": "prod",
|
|
55
|
+
"flushIntervalMs": 10000,
|
|
56
|
+
"batchMaxEvents": 500
|
|
57
|
+
},
|
|
46
58
|
"sessionCompaction": {
|
|
47
59
|
"enabled": true,
|
|
48
60
|
"threshold": 120,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hybridclaw-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "hybridclaw-agent",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.20",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@mozilla/readability": "^0.6.0",
|
|
12
12
|
"agent-browser": "^0.15.1",
|
package/container/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFile, spawnSync } from 'child_process';
|
|
2
|
+
import { createHash } from 'crypto';
|
|
2
3
|
import { lookup } from 'dns/promises';
|
|
3
4
|
import fs from 'fs';
|
|
4
5
|
import net from 'net';
|
|
@@ -19,6 +20,8 @@ const BROWSER_TMP_HOME = path.join(BROWSER_RUNTIME_ROOT, 'home');
|
|
|
19
20
|
const BROWSER_NPM_CACHE = path.join(BROWSER_RUNTIME_ROOT, 'npm-cache');
|
|
20
21
|
const BROWSER_XDG_CACHE = path.join(BROWSER_RUNTIME_ROOT, 'cache');
|
|
21
22
|
const BROWSER_PLAYWRIGHT_CACHE = path.join(BROWSER_RUNTIME_ROOT, 'ms-playwright');
|
|
23
|
+
const BROWSER_PROFILE_ROOT = path.join(BROWSER_RUNTIME_ROOT, 'browser-profiles');
|
|
24
|
+
const ENV_FALSEY = new Set(['0', 'false', 'no', 'off']);
|
|
22
25
|
|
|
23
26
|
type BrowserRunner = {
|
|
24
27
|
cmd: string;
|
|
@@ -28,6 +31,8 @@ type BrowserRunner = {
|
|
|
28
31
|
type BrowserSession = {
|
|
29
32
|
sessionKey: string;
|
|
30
33
|
socketDir: string;
|
|
34
|
+
profileDir?: string;
|
|
35
|
+
stateName?: string;
|
|
31
36
|
createdAt: number;
|
|
32
37
|
lastUsedAt: number;
|
|
33
38
|
};
|
|
@@ -44,6 +49,45 @@ function normalizeSessionKey(sessionId: string): string {
|
|
|
44
49
|
return normalized || 'default';
|
|
45
50
|
}
|
|
46
51
|
|
|
52
|
+
function envFlagEnabled(name: string, defaultValue: boolean): boolean {
|
|
53
|
+
const raw = process.env[name];
|
|
54
|
+
if (raw == null || raw.trim() === '') return defaultValue;
|
|
55
|
+
return !ENV_FALSEY.has(raw.trim().toLowerCase());
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function deriveStableId(raw: string, maxLength = 40): string {
|
|
59
|
+
const base =
|
|
60
|
+
String(raw || 'default')
|
|
61
|
+
.toLowerCase()
|
|
62
|
+
.replace(/[^a-z0-9_-]+/g, '_')
|
|
63
|
+
.replace(/^_+|_+$/g, '') || 'default';
|
|
64
|
+
const hash = createHash('sha256').update(raw).digest('hex').slice(0, 10);
|
|
65
|
+
const headLength = Math.max(1, maxLength - hash.length - 1);
|
|
66
|
+
return `${base.slice(0, headLength)}_${hash}`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function shouldPersistProfiles(): boolean {
|
|
70
|
+
return envFlagEnabled('BROWSER_PERSIST_PROFILE', true);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function shouldPersistSessionState(): boolean {
|
|
74
|
+
return envFlagEnabled('BROWSER_PERSIST_SESSION_STATE', true);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function resolveProfileRoot(): string {
|
|
78
|
+
const configured = String(process.env.BROWSER_PROFILE_ROOT || '').trim();
|
|
79
|
+
if (!configured) return ensureWritableDir(BROWSER_PROFILE_ROOT);
|
|
80
|
+
const resolved = path.isAbsolute(configured) ? configured : path.resolve(WORKSPACE_ROOT, configured);
|
|
81
|
+
return ensureWritableDir(resolved);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function resolveCdpUrl(explicit?: string): string | undefined {
|
|
85
|
+
const direct = String(explicit || '').trim();
|
|
86
|
+
if (direct) return direct;
|
|
87
|
+
const configured = String(process.env.BROWSER_CDP_URL || '').trim();
|
|
88
|
+
return configured || undefined;
|
|
89
|
+
}
|
|
90
|
+
|
|
47
91
|
function resolveRunner(): BrowserRunner | null {
|
|
48
92
|
if (cachedRunner !== undefined) {
|
|
49
93
|
return cachedRunner;
|
|
@@ -86,12 +130,27 @@ function getSession(sessionId: string): BrowserSession {
|
|
|
86
130
|
}
|
|
87
131
|
|
|
88
132
|
fs.mkdirSync(BROWSER_SOCKET_ROOT, { recursive: true, mode: 0o700 });
|
|
89
|
-
const
|
|
133
|
+
const runtimeKey = deriveStableId(sessionKey, 32);
|
|
134
|
+
const socketDir = path.join(BROWSER_SOCKET_ROOT, runtimeKey);
|
|
90
135
|
fs.mkdirSync(socketDir, { recursive: true, mode: 0o700 });
|
|
91
136
|
|
|
137
|
+
let profileDir: string | undefined;
|
|
138
|
+
if (shouldPersistProfiles()) {
|
|
139
|
+
try {
|
|
140
|
+
profileDir = ensureWritableDir(path.join(resolveProfileRoot(), runtimeKey));
|
|
141
|
+
} catch {
|
|
142
|
+
// Fallback to ephemeral browser context if profile dir cannot be created.
|
|
143
|
+
profileDir = undefined;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const stateName = shouldPersistSessionState() ? deriveStableId(sessionKey, 48) : undefined;
|
|
148
|
+
|
|
92
149
|
const session: BrowserSession = {
|
|
93
150
|
sessionKey,
|
|
94
151
|
socketDir,
|
|
152
|
+
profileDir,
|
|
153
|
+
stateName,
|
|
95
154
|
createdAt: Date.now(),
|
|
96
155
|
lastUsedAt: Date.now(),
|
|
97
156
|
};
|
|
@@ -290,24 +349,34 @@ async function runAgentBrowser(
|
|
|
290
349
|
const xdgCacheDir = ensureWritableDir(BROWSER_XDG_CACHE);
|
|
291
350
|
const playwrightBrowsersPath = resolvePlaywrightBrowsersPath();
|
|
292
351
|
const args = [...runner.prefixArgs];
|
|
293
|
-
|
|
294
|
-
|
|
352
|
+
const cdpUrl = resolveCdpUrl(options.cdpUrl);
|
|
353
|
+
if (cdpUrl) {
|
|
354
|
+
args.push('--cdp', cdpUrl);
|
|
295
355
|
}
|
|
296
356
|
args.push('--json', command, ...commandArgs);
|
|
297
357
|
|
|
358
|
+
const browserEnv: NodeJS.ProcessEnv = {
|
|
359
|
+
...process.env,
|
|
360
|
+
AGENT_BROWSER_SOCKET_DIR: session.socketDir,
|
|
361
|
+
AGENT_BROWSER_SESSION: 'default',
|
|
362
|
+
HOME: homeDir,
|
|
363
|
+
XDG_CACHE_HOME: xdgCacheDir,
|
|
364
|
+
NPM_CONFIG_CACHE: npmCacheDir,
|
|
365
|
+
npm_config_cache: npmCacheDir,
|
|
366
|
+
PLAYWRIGHT_BROWSERS_PATH: playwrightBrowsersPath,
|
|
367
|
+
};
|
|
368
|
+
if (session.stateName) {
|
|
369
|
+
browserEnv.AGENT_BROWSER_SESSION_NAME = session.stateName;
|
|
370
|
+
}
|
|
371
|
+
if (!cdpUrl && session.profileDir) {
|
|
372
|
+
browserEnv.AGENT_BROWSER_PROFILE = session.profileDir;
|
|
373
|
+
}
|
|
374
|
+
|
|
298
375
|
try {
|
|
299
376
|
const { stdout, stderr } = await execFileAsync(runner.cmd, args, {
|
|
300
377
|
timeout: timeoutMs,
|
|
301
378
|
maxBuffer: 2 * 1024 * 1024,
|
|
302
|
-
env:
|
|
303
|
-
...process.env,
|
|
304
|
-
AGENT_BROWSER_SOCKET_DIR: session.socketDir,
|
|
305
|
-
HOME: homeDir,
|
|
306
|
-
XDG_CACHE_HOME: xdgCacheDir,
|
|
307
|
-
NPM_CONFIG_CACHE: npmCacheDir,
|
|
308
|
-
npm_config_cache: npmCacheDir,
|
|
309
|
-
PLAYWRIGHT_BROWSERS_PATH: playwrightBrowsersPath,
|
|
310
|
-
},
|
|
379
|
+
env: browserEnv,
|
|
311
380
|
});
|
|
312
381
|
|
|
313
382
|
const output = String(stdout || '').trim();
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import { spawn } from 'child_process';
|
|
4
|
+
import { spawn, spawnSync } from 'child_process';
|
|
5
5
|
import readline from 'readline/promises';
|
|
6
6
|
import { ensureHybridAICredentials } from './onboarding.js';
|
|
7
7
|
import { DATA_DIR, GATEWAY_BASE_URL, MissingRequiredEnvVarError } from './config.js';
|
|
@@ -161,6 +161,7 @@ function printGatewayUsage() {
|
|
|
161
161
|
Commands:
|
|
162
162
|
hybridclaw gateway
|
|
163
163
|
hybridclaw gateway start [--foreground]
|
|
164
|
+
hybridclaw gateway restart [--foreground]
|
|
164
165
|
hybridclaw gateway stop
|
|
165
166
|
hybridclaw gateway status
|
|
166
167
|
hybridclaw gateway sessions
|
|
@@ -287,6 +288,82 @@ async function waitForGatewayReachable(timeoutMs) {
|
|
|
287
288
|
}
|
|
288
289
|
return false;
|
|
289
290
|
}
|
|
291
|
+
async function waitForGatewayUnreachable(timeoutMs) {
|
|
292
|
+
const deadline = Date.now() + timeoutMs;
|
|
293
|
+
while (Date.now() < deadline) {
|
|
294
|
+
if (!(await isGatewayReachable()))
|
|
295
|
+
return true;
|
|
296
|
+
await sleep(250);
|
|
297
|
+
}
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
async function requestUnmanagedGatewayShutdown() {
|
|
301
|
+
const { gatewayShutdown } = await import('./gateway-client.js');
|
|
302
|
+
await gatewayShutdown();
|
|
303
|
+
}
|
|
304
|
+
function parseGatewayBaseUrl() {
|
|
305
|
+
try {
|
|
306
|
+
return new URL(GATEWAY_BASE_URL);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
function isLocalGatewayHost(hostname) {
|
|
313
|
+
const normalized = hostname.trim().toLowerCase();
|
|
314
|
+
return normalized === '127.0.0.1' || normalized === 'localhost' || normalized === '::1';
|
|
315
|
+
}
|
|
316
|
+
function resolveGatewayListenPort(url) {
|
|
317
|
+
if (url.port) {
|
|
318
|
+
const parsed = Number.parseInt(url.port, 10);
|
|
319
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
320
|
+
return parsed;
|
|
321
|
+
}
|
|
322
|
+
return url.protocol === 'https:' ? 443 : 80;
|
|
323
|
+
}
|
|
324
|
+
function findGatewayPidByPort() {
|
|
325
|
+
const parsed = parseGatewayBaseUrl();
|
|
326
|
+
if (!parsed || !isLocalGatewayHost(parsed.hostname))
|
|
327
|
+
return null;
|
|
328
|
+
const port = resolveGatewayListenPort(parsed);
|
|
329
|
+
const result = spawnSync('lsof', ['-nP', `-iTCP:${port}`, '-sTCP:LISTEN', '-t'], {
|
|
330
|
+
encoding: 'utf-8',
|
|
331
|
+
});
|
|
332
|
+
if (result.error)
|
|
333
|
+
return null;
|
|
334
|
+
const output = (result.stdout || '').trim();
|
|
335
|
+
if (!output)
|
|
336
|
+
return null;
|
|
337
|
+
const firstPid = output
|
|
338
|
+
.split('\n')
|
|
339
|
+
.map((line) => Number.parseInt(line.trim(), 10))
|
|
340
|
+
.find((pid) => Number.isFinite(pid) && pid > 0);
|
|
341
|
+
return firstPid && Number.isFinite(firstPid) ? firstPid : null;
|
|
342
|
+
}
|
|
343
|
+
function adoptGatewayPid(pid, source) {
|
|
344
|
+
if (!isPidRunning(pid))
|
|
345
|
+
return false;
|
|
346
|
+
writeGatewayPid({
|
|
347
|
+
pid,
|
|
348
|
+
startedAt: new Date().toISOString(),
|
|
349
|
+
cwd: process.cwd(),
|
|
350
|
+
command: [`(adopted-from-${source})`],
|
|
351
|
+
});
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
async function adoptReachableGatewayIfPossible() {
|
|
355
|
+
const { gatewayStatus } = await import('./gateway-client.js');
|
|
356
|
+
const status = await gatewayStatus();
|
|
357
|
+
const pid = typeof status.pid === 'number' && Number.isFinite(status.pid)
|
|
358
|
+
? Math.floor(status.pid)
|
|
359
|
+
: 0;
|
|
360
|
+
if (pid > 0 && adoptGatewayPid(pid, 'api-status'))
|
|
361
|
+
return true;
|
|
362
|
+
const fallbackPid = findGatewayPidByPort();
|
|
363
|
+
if (fallbackPid && adoptGatewayPid(fallbackPid, 'lsof-port-probe'))
|
|
364
|
+
return true;
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
290
367
|
async function runGatewayForeground(commandName) {
|
|
291
368
|
await ensureHybridAICredentials({ commandName });
|
|
292
369
|
await ensureRuntimeContainer(commandName);
|
|
@@ -299,7 +376,20 @@ async function startGatewayBackend(commandName, waitForHealthy = false) {
|
|
|
299
376
|
console.log(`Gateway already running in backend mode (pid ${existing.pid}).`);
|
|
300
377
|
}
|
|
301
378
|
else {
|
|
302
|
-
|
|
379
|
+
let adopted = false;
|
|
380
|
+
try {
|
|
381
|
+
adopted = await adoptReachableGatewayIfPossible();
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
adopted = false;
|
|
385
|
+
}
|
|
386
|
+
if (adopted) {
|
|
387
|
+
const adoptedState = readGatewayPid();
|
|
388
|
+
console.log(`Gateway already reachable at ${GATEWAY_BASE_URL}; adopted pid ${adoptedState?.pid || '(unknown)'}.`);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
console.log(`Gateway already reachable at ${GATEWAY_BASE_URL} (unmanaged by CLI PID file).`);
|
|
392
|
+
}
|
|
303
393
|
}
|
|
304
394
|
return;
|
|
305
395
|
}
|
|
@@ -351,22 +441,11 @@ async function startGatewayBackend(commandName, waitForHealthy = false) {
|
|
|
351
441
|
console.log(`Gateway started in backend mode (pid ${child.pid}).`);
|
|
352
442
|
console.log(`Logs: ${GATEWAY_LOG_PATH}`);
|
|
353
443
|
}
|
|
354
|
-
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
console.log('Stop it from its owning process or use your system process manager.');
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
console.log('Gateway is not running (no PID file).');
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
if (!isPidRunning(state.pid)) {
|
|
366
|
-
removeGatewayPidFile();
|
|
367
|
-
console.log(`Removed stale gateway PID file (pid ${state.pid} not running).`);
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
444
|
+
function isShutdownEndpointMissing(error) {
|
|
445
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
446
|
+
return /not found/i.test(message) || /404/.test(message);
|
|
447
|
+
}
|
|
448
|
+
async function stopManagedGatewayByPid(state) {
|
|
370
449
|
try {
|
|
371
450
|
process.kill(state.pid, 'SIGTERM');
|
|
372
451
|
}
|
|
@@ -393,6 +472,58 @@ async function stopGatewayBackend() {
|
|
|
393
472
|
removeGatewayPidFile();
|
|
394
473
|
console.log(`Gateway stop timed out; sent SIGKILL to pid ${state.pid}.`);
|
|
395
474
|
}
|
|
475
|
+
async function stopUnmanagedGatewayGracefully(mode) {
|
|
476
|
+
const suffix = mode === 'restart' ? ' before restart' : '';
|
|
477
|
+
console.log('Gateway is reachable but unmanaged by CLI PID file.');
|
|
478
|
+
console.log(`Requesting graceful shutdown over API${suffix}...`);
|
|
479
|
+
try {
|
|
480
|
+
await requestUnmanagedGatewayShutdown();
|
|
481
|
+
const stopped = await waitForGatewayUnreachable(10_000);
|
|
482
|
+
if (!stopped) {
|
|
483
|
+
throw new Error(`Gateway remained reachable at ${GATEWAY_BASE_URL} after shutdown request.`
|
|
484
|
+
+ ' Stop it from its owning process or use your system process manager.');
|
|
485
|
+
}
|
|
486
|
+
console.log('Unmanaged gateway stopped via API request.');
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
catch (err) {
|
|
490
|
+
if (!isShutdownEndpointMissing(err))
|
|
491
|
+
throw err;
|
|
492
|
+
}
|
|
493
|
+
const discoveredPid = findGatewayPidByPort();
|
|
494
|
+
if (discoveredPid && discoveredPid !== process.pid && adoptGatewayPid(discoveredPid, 'lsof-port-probe')) {
|
|
495
|
+
const adoptedState = readGatewayPid();
|
|
496
|
+
if (adoptedState && isPidRunning(adoptedState.pid)) {
|
|
497
|
+
console.log(`Shutdown API unavailable; stopping gateway pid ${adoptedState.pid} via local signal.`);
|
|
498
|
+
await stopManagedGatewayByPid(adoptedState);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
throw new Error(`Gateway shutdown endpoint is unavailable at ${GATEWAY_BASE_URL} and PID ownership could not be recovered.`
|
|
503
|
+
+ ' Stop the process manually once, then retry.');
|
|
504
|
+
}
|
|
505
|
+
async function stopGatewayBackend() {
|
|
506
|
+
const state = readGatewayPid();
|
|
507
|
+
if (!state) {
|
|
508
|
+
if (await isGatewayReachable()) {
|
|
509
|
+
await stopUnmanagedGatewayGracefully('stop');
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
console.log('Gateway is not running (no PID file).');
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
if (!isPidRunning(state.pid)) {
|
|
516
|
+
removeGatewayPidFile();
|
|
517
|
+
if (await isGatewayReachable()) {
|
|
518
|
+
console.log(`Removed stale gateway PID file (pid ${state.pid} not running).`);
|
|
519
|
+
await stopUnmanagedGatewayGracefully('stop');
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
console.log(`Removed stale gateway PID file (pid ${state.pid} not running).`);
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
await stopManagedGatewayByPid(state);
|
|
526
|
+
}
|
|
396
527
|
async function printGatewayLifecycleStatus() {
|
|
397
528
|
const state = readGatewayPid();
|
|
398
529
|
const runningByPid = Boolean(state && isPidRunning(state.pid));
|
|
@@ -457,6 +588,16 @@ async function handleGatewayCommand(args) {
|
|
|
457
588
|
await startGatewayBackend('hybridclaw gateway start');
|
|
458
589
|
return;
|
|
459
590
|
}
|
|
591
|
+
if (sub === 'restart') {
|
|
592
|
+
const flags = parseGatewayFlags(normalized.slice(1));
|
|
593
|
+
await stopGatewayBackend();
|
|
594
|
+
if (flags.foreground) {
|
|
595
|
+
await runGatewayForeground('hybridclaw gateway restart --foreground');
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
await startGatewayBackend('hybridclaw gateway restart');
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
460
601
|
if (sub === 'stop') {
|
|
461
602
|
await stopGatewayBackend();
|
|
462
603
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|