@harness-nexus/cli 0.1.0-alpha.2 → 0.1.0-alpha.4
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/dist/daemon/acp/adapters.d.ts.map +1 -1
- package/dist/daemon/acp/adapters.js +9 -3
- package/dist/daemon/acp/adapters.js.map +1 -1
- package/dist/daemon/acp/agent-connection.d.ts +67 -4
- package/dist/daemon/acp/agent-connection.d.ts.map +1 -1
- package/dist/daemon/acp/agent-connection.js +113 -9
- package/dist/daemon/acp/agent-connection.js.map +1 -1
- package/dist/daemon/adapter-ledger.d.ts +62 -0
- package/dist/daemon/adapter-ledger.d.ts.map +1 -0
- package/dist/daemon/adapter-ledger.js +207 -0
- package/dist/daemon/adapter-ledger.js.map +1 -0
- package/dist/daemon/chat.d.ts +33 -2
- package/dist/daemon/chat.d.ts.map +1 -1
- package/dist/daemon/chat.js +956 -42
- package/dist/daemon/chat.js.map +1 -1
- package/dist/daemon/client.d.ts +11 -2
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +122 -24
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/config-view.d.ts +42 -0
- package/dist/daemon/config-view.d.ts.map +1 -0
- package/dist/daemon/config-view.js +159 -0
- package/dist/daemon/config-view.js.map +1 -0
- package/dist/daemon/dsh-sessions.d.ts +161 -0
- package/dist/daemon/dsh-sessions.d.ts.map +1 -0
- package/dist/daemon/dsh-sessions.js +674 -0
- package/dist/daemon/dsh-sessions.js.map +1 -0
- package/dist/daemon/dsh-tap/index.mjs +99 -0
- package/dist/daemon/dsh-tap-listener.d.ts +62 -0
- package/dist/daemon/dsh-tap-listener.d.ts.map +1 -0
- package/dist/daemon/dsh-tap-listener.js +196 -0
- package/dist/daemon/dsh-tap-listener.js.map +1 -0
- package/dist/daemon/jobs.d.ts +8 -5
- package/dist/daemon/jobs.d.ts.map +1 -1
- package/dist/daemon/jobs.js +28 -8
- package/dist/daemon/jobs.js.map +1 -1
- package/dist/daemon/runtime-config.d.ts +34 -0
- package/dist/daemon/runtime-config.d.ts.map +1 -0
- package/dist/daemon/runtime-config.js +347 -0
- package/dist/daemon/runtime-config.js.map +1 -0
- package/dist/daemon/runtime.d.ts +49 -0
- package/dist/daemon/runtime.d.ts.map +1 -0
- package/dist/daemon/runtime.js +218 -0
- package/dist/daemon/runtime.js.map +1 -0
- package/dist/daemon/sessions.d.ts +26 -0
- package/dist/daemon/sessions.d.ts.map +1 -0
- package/dist/daemon/sessions.js +169 -0
- package/dist/daemon/sessions.js.map +1 -0
- package/dist/daemon/workspace.d.ts +5 -0
- package/dist/daemon/workspace.d.ts.map +1 -0
- package/dist/daemon/workspace.js +44 -0
- package/dist/daemon/workspace.js.map +1 -0
- package/dist/install/adapters/deepseek.d.ts +4 -0
- package/dist/install/adapters/deepseek.d.ts.map +1 -1
- package/dist/install/adapters/deepseek.js +4 -2
- package/dist/install/adapters/deepseek.js.map +1 -1
- package/dist/inventory/common.d.ts +2 -0
- package/dist/inventory/common.d.ts.map +1 -1
- package/dist/inventory/common.js.map +1 -1
- package/dist/inventory/runtime.d.ts +40 -0
- package/dist/inventory/runtime.d.ts.map +1 -0
- package/dist/inventory/runtime.js +114 -0
- package/dist/inventory/runtime.js.map +1 -0
- package/dist/inventory/scanners/claude-code.d.ts +2 -0
- package/dist/inventory/scanners/claude-code.d.ts.map +1 -1
- package/dist/inventory/scanners/claude-code.js +103 -39
- package/dist/inventory/scanners/claude-code.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-sessions.js","sourceRoot":"","sources":["../../src/daemon/dsh-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Harness Nexus dsh event tap (Phase 9 W7.1).
|
|
2
|
+
// docs/design/phase-9-w7.1-dsh-event-tap.md
|
|
3
|
+
//
|
|
4
|
+
// A ZERO-DEPENDENCY cordis plugin, insert-mounted at SPAWN TIME via
|
|
5
|
+
// `dsh --patch <yml>` (the daemon renders the patch next to this file's
|
|
6
|
+
// absolute path — it never touches ~/.dsh). It subscribes dsh's in-process
|
|
7
|
+
// session event bus and forwards every event — verbatim, for ALL sessions —
|
|
8
|
+
// as JSON lines to the daemon's localhost TapListener (HNX_TAP_PORT /
|
|
9
|
+
// HNX_TAP_TOKEN ride the child env). The DAEMON filters by session id; this
|
|
10
|
+
// plugin stays deliberately dumb.
|
|
11
|
+
//
|
|
12
|
+
// Constraints (spike-verified — see the design doc §Spike results):
|
|
13
|
+
// - dsh's stdio belongs to the ACP JSON-RPC protocol: this file NEVER writes
|
|
14
|
+
// to stdout/stderr, and swallows its own errors — a broken tap must
|
|
15
|
+
// degrade to the daemon's transcript-tail fallback, never break the agent.
|
|
16
|
+
// - Bus events arrive zero-latency in the verbatim SessionEvent envelope
|
|
17
|
+
// (`{type, seq, time, data}`) — the same shape the file tail parses, so
|
|
18
|
+
// both sources feed one mapper. Persistence packing (`text-chunks` rows)
|
|
19
|
+
// never appears on the bus.
|
|
20
|
+
// - Depends ONLY on the `apply(ctx)` / `ctx.on` / `ctx.effect` surface —
|
|
21
|
+
// the same surface the reference bridge uses in production.
|
|
22
|
+
|
|
23
|
+
import { connect as netConnect } from 'node:net'
|
|
24
|
+
|
|
25
|
+
export const name = 'harness-nexus-tap'
|
|
26
|
+
|
|
27
|
+
// The listener is up before the spawn, so retries only cover transient
|
|
28
|
+
// localhost hiccups and a daemon-side decision timeout — bounded, then the
|
|
29
|
+
// tap goes dormant (the daemon will not reopen this port).
|
|
30
|
+
const RECONNECT_BASE_MS = 100
|
|
31
|
+
const RECONNECT_MAX_MS = 2000
|
|
32
|
+
const RECONNECT_ATTEMPTS = 10
|
|
33
|
+
|
|
34
|
+
export function apply(ctx) {
|
|
35
|
+
const port = Number(process.env.HNX_TAP_PORT)
|
|
36
|
+
const token = process.env.HNX_TAP_TOKEN
|
|
37
|
+
if (!Number.isInteger(port) || port <= 0 || typeof token !== 'string' || token === '') {
|
|
38
|
+
return // not spawned by the hnx daemon — stay inert
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let socket = null
|
|
42
|
+
let writable = false
|
|
43
|
+
let stopped = false
|
|
44
|
+
let rejected = false
|
|
45
|
+
let attempts = 0
|
|
46
|
+
let retryTimer = null
|
|
47
|
+
|
|
48
|
+
const offEvent = ctx.on('session/event', (session, event) => {
|
|
49
|
+
if (stopped || !writable || socket === null) return
|
|
50
|
+
let line
|
|
51
|
+
try {
|
|
52
|
+
line = JSON.stringify({ type: 'event', sessionId: session?.id, event })
|
|
53
|
+
} catch {
|
|
54
|
+
return // unserializable event — skip rather than break the turn
|
|
55
|
+
}
|
|
56
|
+
socket.write(`${line}\n`)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
const connect = () => {
|
|
60
|
+
if (stopped) return
|
|
61
|
+
const s = netConnect(port, '127.0.0.1')
|
|
62
|
+
socket = s
|
|
63
|
+
writable = false
|
|
64
|
+
s.on('connect', () => {
|
|
65
|
+
attempts = 0
|
|
66
|
+
writable = true
|
|
67
|
+
s.write(`${JSON.stringify({ type: 'hello', token, pid: process.pid })}\n`)
|
|
68
|
+
})
|
|
69
|
+
s.on('data', (buf) => {
|
|
70
|
+
try {
|
|
71
|
+
if (JSON.parse(String(buf))?.type === 'reject') {
|
|
72
|
+
// Wrong token: the port belongs to something else — never retry.
|
|
73
|
+
rejected = true
|
|
74
|
+
s.destroy()
|
|
75
|
+
}
|
|
76
|
+
} catch {
|
|
77
|
+
// not the reject line — ignore (the listener speaks only on reject)
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
s.on('error', () => {}) // ECONNREFUSED etc — the close handler retries
|
|
81
|
+
s.on('close', () => {
|
|
82
|
+
if (socket === s) socket = null
|
|
83
|
+
writable = false
|
|
84
|
+
if (stopped || rejected || attempts >= RECONNECT_ATTEMPTS) return
|
|
85
|
+
const delay = Math.min(RECONNECT_BASE_MS * 2 ** attempts, RECONNECT_MAX_MS)
|
|
86
|
+
attempts += 1
|
|
87
|
+
retryTimer = setTimeout(connect, delay)
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
ctx.effect(() => () => {
|
|
92
|
+
stopped = true
|
|
93
|
+
offEvent()
|
|
94
|
+
if (retryTimer !== null) clearTimeout(retryTimer)
|
|
95
|
+
socket?.destroy()
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
connect()
|
|
99
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon side of the dsh in-process event tap (Phase 9 W7.1).
|
|
3
|
+
* docs/design/phase-9-w7.1-dsh-event-tap.md
|
|
4
|
+
*
|
|
5
|
+
* `dsh --patch` insert-mounts the zero-dep plugin shipped at
|
|
6
|
+
* `daemon/dsh-tap/index.mjs`; the plugin dials back this localhost listener
|
|
7
|
+
* (one per chat channel: ephemeral port, one-time token) and streams dsh's
|
|
8
|
+
* in-process `session/event` bus as JSON lines — zero latency, verbatim
|
|
9
|
+
* `SessionEvent` envelopes, no persistence encoding involved. The events
|
|
10
|
+
* feed the SAME `createDshLiveMapper` the transcript tail uses (chat.ts),
|
|
11
|
+
* so the wire's committed chunks stay suppressed exactly as in the tail
|
|
12
|
+
* path. Everything here is best-effort by construction: any failure (old
|
|
13
|
+
* dsh without `--patch`, plugin load error, listen failure) degrades to
|
|
14
|
+
* the W7 file tail — worst case equals the shipped behavior.
|
|
15
|
+
*/
|
|
16
|
+
/** Absolute path of the shipped tap plugin (dist in builds, src under tsx dev). */
|
|
17
|
+
export declare function tapPluginPath(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Render the spawn-time overlay that insert-mounts the tap plugin, into the
|
|
20
|
+
* daemon's config dir (`~/.hnx/dsh-tap.patch.yml`) — NEVER into `~/.dsh`
|
|
21
|
+
* (the user's home patch is their surface; W3 owns its marked region). The
|
|
22
|
+
* same file serves every channel: the per-channel port/token ride env, not
|
|
23
|
+
* the patch. Null on any write failure — the caller then skips the tap.
|
|
24
|
+
*/
|
|
25
|
+
export declare function writeTapPatch(home: string, pluginPath: string): string | null;
|
|
26
|
+
/** Whether the tap plugin asset actually exists (guards broken installs). */
|
|
27
|
+
export declare function tapPluginAvailable(): boolean;
|
|
28
|
+
export interface TapListenerEvents {
|
|
29
|
+
/** Every bus event of every session — the daemon filters by acp session id. */
|
|
30
|
+
onEvent: (sessionId: string, event: Record<string, unknown>) => void;
|
|
31
|
+
/** A post-handshake socket loss: the tap is dead (committed-only ensues). */
|
|
32
|
+
onLoss?: () => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The localhost JSON-line endpoint the dsh tap plugin dials. Line protocol:
|
|
36
|
+
* the plugin's first line must be `{"type":"hello","token","pid"}` — a token
|
|
37
|
+
* mismatch gets a `{"type":"reject"}` and the socket destroyed (the plugin
|
|
38
|
+
* then stops; the port is not its listener). Every later line is
|
|
39
|
+
* `{"type":"event","sessionId","event"}`. `waitHello(deadlineAt)` is the
|
|
40
|
+
* handshake race: true once a valid hello landed, false past the deadline
|
|
41
|
+
* or after `close()` — the caller treats false as "no tap, fall back".
|
|
42
|
+
*/
|
|
43
|
+
export declare class TapListener {
|
|
44
|
+
private readonly events;
|
|
45
|
+
readonly token: string;
|
|
46
|
+
private readonly server;
|
|
47
|
+
private socket;
|
|
48
|
+
private closed;
|
|
49
|
+
private helloSeen;
|
|
50
|
+
private readonly helloWaiters;
|
|
51
|
+
private constructor();
|
|
52
|
+
static create(events: TapListenerEvents): Promise<TapListener>;
|
|
53
|
+
/** The ephemeral port the plugin dials (0 before `create` resolves). */
|
|
54
|
+
get port(): number;
|
|
55
|
+
/** Resolves on a valid hello (true) or the deadline / close (false). */
|
|
56
|
+
waitHello(deadlineAt: number): Promise<boolean>;
|
|
57
|
+
/** Destroy the socket and stop listening (idempotent). */
|
|
58
|
+
close(): void;
|
|
59
|
+
private onConnection;
|
|
60
|
+
private onLine;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=dsh-tap-listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-tap-listener.d.ts","sourceRoot":"","sources":["../../src/daemon/dsh-tap-listener.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AAEH,mFAAmF;AACnF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB7E;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C;AAED,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAWpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAEjE,OAAO;WAQM,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAcpE,wEAAwE;IACxE,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,wEAAwE;IACxE,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe/C,0DAA0D;IAC1D,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,MAAM;CA8Bf"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { createServer } from 'node:net';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
/**
|
|
7
|
+
* Daemon side of the dsh in-process event tap (Phase 9 W7.1).
|
|
8
|
+
* docs/design/phase-9-w7.1-dsh-event-tap.md
|
|
9
|
+
*
|
|
10
|
+
* `dsh --patch` insert-mounts the zero-dep plugin shipped at
|
|
11
|
+
* `daemon/dsh-tap/index.mjs`; the plugin dials back this localhost listener
|
|
12
|
+
* (one per chat channel: ephemeral port, one-time token) and streams dsh's
|
|
13
|
+
* in-process `session/event` bus as JSON lines — zero latency, verbatim
|
|
14
|
+
* `SessionEvent` envelopes, no persistence encoding involved. The events
|
|
15
|
+
* feed the SAME `createDshLiveMapper` the transcript tail uses (chat.ts),
|
|
16
|
+
* so the wire's committed chunks stay suppressed exactly as in the tail
|
|
17
|
+
* path. Everything here is best-effort by construction: any failure (old
|
|
18
|
+
* dsh without `--patch`, plugin load error, listen failure) degrades to
|
|
19
|
+
* the W7 file tail — worst case equals the shipped behavior.
|
|
20
|
+
*/
|
|
21
|
+
/** Absolute path of the shipped tap plugin (dist in builds, src under tsx dev). */
|
|
22
|
+
export function tapPluginPath() {
|
|
23
|
+
return fileURLToPath(new URL('./dsh-tap/index.mjs', import.meta.url));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Render the spawn-time overlay that insert-mounts the tap plugin, into the
|
|
27
|
+
* daemon's config dir (`~/.hnx/dsh-tap.patch.yml`) — NEVER into `~/.dsh`
|
|
28
|
+
* (the user's home patch is their surface; W3 owns its marked region). The
|
|
29
|
+
* same file serves every channel: the per-channel port/token ride env, not
|
|
30
|
+
* the patch. Null on any write failure — the caller then skips the tap.
|
|
31
|
+
*/
|
|
32
|
+
export function writeTapPatch(home, pluginPath) {
|
|
33
|
+
const body = [
|
|
34
|
+
'# Harness Nexus dsh event tap — spawn-time overlay (regenerated per boot,',
|
|
35
|
+
'# safe to delete). Applied ONLY via `dsh --patch` on processes the hnx',
|
|
36
|
+
'# daemon spawns; never merged into ~/.dsh.',
|
|
37
|
+
'- insert:',
|
|
38
|
+
' - id: hnx-tap',
|
|
39
|
+
` name: ${JSON.stringify(pluginPath)}`,
|
|
40
|
+
'',
|
|
41
|
+
].join('\n');
|
|
42
|
+
try {
|
|
43
|
+
const dir = join(home, '.hnx');
|
|
44
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
45
|
+
const path = join(dir, 'dsh-tap.patch.yml');
|
|
46
|
+
writeFileSync(path, body, { mode: 0o600 });
|
|
47
|
+
return path;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Whether the tap plugin asset actually exists (guards broken installs). */
|
|
54
|
+
export function tapPluginAvailable() {
|
|
55
|
+
try {
|
|
56
|
+
return existsSync(tapPluginPath());
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The localhost JSON-line endpoint the dsh tap plugin dials. Line protocol:
|
|
64
|
+
* the plugin's first line must be `{"type":"hello","token","pid"}` — a token
|
|
65
|
+
* mismatch gets a `{"type":"reject"}` and the socket destroyed (the plugin
|
|
66
|
+
* then stops; the port is not its listener). Every later line is
|
|
67
|
+
* `{"type":"event","sessionId","event"}`. `waitHello(deadlineAt)` is the
|
|
68
|
+
* handshake race: true once a valid hello landed, false past the deadline
|
|
69
|
+
* or after `close()` — the caller treats false as "no tap, fall back".
|
|
70
|
+
*/
|
|
71
|
+
export class TapListener {
|
|
72
|
+
events;
|
|
73
|
+
token;
|
|
74
|
+
server;
|
|
75
|
+
socket = null;
|
|
76
|
+
closed = false;
|
|
77
|
+
helloSeen = false;
|
|
78
|
+
helloWaiters = new Set();
|
|
79
|
+
constructor(token, events) {
|
|
80
|
+
this.events = events;
|
|
81
|
+
this.token = token;
|
|
82
|
+
this.server = createServer((s) => this.onConnection(s));
|
|
83
|
+
}
|
|
84
|
+
static async create(events) {
|
|
85
|
+
const listener = new TapListener(randomBytes(24).toString('base64url'), events);
|
|
86
|
+
await new Promise((resolve, reject) => {
|
|
87
|
+
const onError = (e) => reject(e);
|
|
88
|
+
listener.server.once('error', onError);
|
|
89
|
+
listener.server.listen(0, '127.0.0.1', () => {
|
|
90
|
+
listener.server.off('error', onError);
|
|
91
|
+
resolve();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
if (listener.port === 0)
|
|
95
|
+
throw new Error('tap listener has no port');
|
|
96
|
+
return listener;
|
|
97
|
+
}
|
|
98
|
+
/** The ephemeral port the plugin dials (0 before `create` resolves). */
|
|
99
|
+
get port() {
|
|
100
|
+
const addr = this.server.address();
|
|
101
|
+
return typeof addr === 'object' && addr !== null ? addr.port : 0;
|
|
102
|
+
}
|
|
103
|
+
/** Resolves on a valid hello (true) or the deadline / close (false). */
|
|
104
|
+
waitHello(deadlineAt) {
|
|
105
|
+
if (this.helloSeen)
|
|
106
|
+
return Promise.resolve(true);
|
|
107
|
+
if (this.closed)
|
|
108
|
+
return Promise.resolve(false);
|
|
109
|
+
return new Promise((resolve) => {
|
|
110
|
+
const settled = (ok) => {
|
|
111
|
+
clearTimeout(timer);
|
|
112
|
+
this.helloWaiters.delete(settled);
|
|
113
|
+
resolve(ok);
|
|
114
|
+
};
|
|
115
|
+
this.helloWaiters.add(settled);
|
|
116
|
+
const timer = setTimeout(() => settled(this.helloSeen), Math.max(0, deadlineAt - Date.now()));
|
|
117
|
+
timer.unref?.();
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/** Destroy the socket and stop listening (idempotent). */
|
|
121
|
+
close() {
|
|
122
|
+
if (this.closed)
|
|
123
|
+
return;
|
|
124
|
+
this.closed = true;
|
|
125
|
+
this.socket?.destroy();
|
|
126
|
+
this.socket = null;
|
|
127
|
+
this.server.close();
|
|
128
|
+
for (const w of this.helloWaiters)
|
|
129
|
+
w(false);
|
|
130
|
+
this.helloWaiters.clear();
|
|
131
|
+
}
|
|
132
|
+
onConnection(sock) {
|
|
133
|
+
if (this.closed || this.socket !== null) {
|
|
134
|
+
// One plugin per listener; a stray second connection is not ours.
|
|
135
|
+
sock.destroy();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.socket = sock;
|
|
139
|
+
let buffer = '';
|
|
140
|
+
sock.on('data', (chunk) => {
|
|
141
|
+
buffer += chunk.toString('utf8');
|
|
142
|
+
let nl;
|
|
143
|
+
while ((nl = buffer.indexOf('\n')) !== -1) {
|
|
144
|
+
const line = buffer.slice(0, nl);
|
|
145
|
+
buffer = buffer.slice(nl + 1);
|
|
146
|
+
this.onLine(sock, line);
|
|
147
|
+
if (this.socket !== sock)
|
|
148
|
+
return; // destroyed mid-parse
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
sock.on('close', () => {
|
|
152
|
+
if (this.socket !== sock)
|
|
153
|
+
return;
|
|
154
|
+
this.socket = null;
|
|
155
|
+
if (this.helloSeen && !this.closed)
|
|
156
|
+
this.events.onLoss?.();
|
|
157
|
+
});
|
|
158
|
+
sock.on('error', () => { }); // close follows; the loss path handles it
|
|
159
|
+
}
|
|
160
|
+
onLine(sock, line) {
|
|
161
|
+
const trimmed = line.trim();
|
|
162
|
+
if (trimmed === '')
|
|
163
|
+
return;
|
|
164
|
+
let msg;
|
|
165
|
+
try {
|
|
166
|
+
msg = JSON.parse(trimmed);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return; // noise on the wire — skip
|
|
170
|
+
}
|
|
171
|
+
const m = msg;
|
|
172
|
+
if (!this.helloSeen) {
|
|
173
|
+
if (m.type === 'hello' && m.token === this.token) {
|
|
174
|
+
this.helloSeen = true;
|
|
175
|
+
for (const w of this.helloWaiters)
|
|
176
|
+
w(true);
|
|
177
|
+
this.helloWaiters.clear();
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Not our plugin (port collision) — reject so it stops retrying.
|
|
181
|
+
sock.write(`${JSON.stringify({ type: 'reject' })}\n`);
|
|
182
|
+
sock.destroy();
|
|
183
|
+
if (this.socket === sock)
|
|
184
|
+
this.socket = null;
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (m.type === 'event' && typeof m.sessionId === 'string' && m.sessionId !== '') {
|
|
189
|
+
const event = (m.event ?? {});
|
|
190
|
+
if (event !== null && typeof event === 'object' && !Array.isArray(event)) {
|
|
191
|
+
this.events.onEvent(m.sessionId, event);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=dsh-tap-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-tap-listener.js","sourceRoot":"","sources":["../../src/daemon/dsh-tap-listener.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/jobs.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import type { Socket } from 'socket.io-client';
|
|
2
2
|
/**
|
|
3
|
-
* Daemon-side job executor (Phase 8 C4).
|
|
3
|
+
* Daemon-side job executor (Phase 8 C4 + Phase 9 W2).
|
|
4
|
+
* docs/design/phase-8-c4.md · phase-9-harness-runtime.md.
|
|
4
5
|
*
|
|
5
6
|
* A deploy job is the 3.3 pipeline with a different trigger: fetch the
|
|
6
7
|
* resolved bundle with the machine PAT (`GET /api/client/deploy-bundle` —
|
|
7
8
|
* machine PAT exception #2), plan, apply + ledger, reporting `job:progress`
|
|
8
|
-
* per phase and one terminal `job:result`.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* per phase and one terminal `job:result`. A harness job (W2) runs the
|
|
10
|
+
* runtime install/upgrade/pin command table instead. Plans are idempotent
|
|
11
|
+
* overwrites, so a redelivered job (server recovered it after a disconnect)
|
|
12
|
+
* simply re-runs. `scan`/`import` job types are reserved by the protocol —
|
|
13
|
+
* C3's interactive flows handle them; arriving here they settle as
|
|
14
|
+
* unsupported.
|
|
12
15
|
*/
|
|
13
16
|
export interface JobExecutorOptions {
|
|
14
17
|
server: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/daemon/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/daemon/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAuChF"}
|
package/dist/daemon/jobs.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { jobDispatchEventSchema, deployResultDataSchema, } from '@harness-nexus/shared';
|
|
1
|
+
import { jobDispatchEventSchema, harnessJobPayloadSchema, deployResultDataSchema, } from '@harness-nexus/shared';
|
|
2
2
|
import { HarnessNexusClient } from '@harness-nexus/sdk';
|
|
3
3
|
import { planInstall } from '../install/planner.js';
|
|
4
4
|
import { applyInstall } from '../install/installer.js';
|
|
5
|
+
import { runHarnessJob } from './runtime.js';
|
|
6
|
+
import { runApplyConfigJob } from './runtime-config.js';
|
|
5
7
|
export function attachJobHandlers(socket, opts) {
|
|
6
8
|
socket.on('job:dispatch', (payload, ack) => {
|
|
7
9
|
const parsed = jobDispatchEventSchema.safeParse(payload);
|
|
@@ -13,15 +15,33 @@ export function attachJobHandlers(socket, opts) {
|
|
|
13
15
|
// "with the daemon", the terminal result arrives separately.
|
|
14
16
|
ack?.({ accepted: true });
|
|
15
17
|
const job = parsed.data.job;
|
|
16
|
-
if (job.type
|
|
17
|
-
socket
|
|
18
|
-
jobId: job.id,
|
|
19
|
-
ok: false,
|
|
20
|
-
error: `job type '${job.type}' is not supported by this daemon`,
|
|
21
|
-
});
|
|
18
|
+
if (job.type === 'deploy') {
|
|
19
|
+
void runDeploy(socket, opts, job);
|
|
22
20
|
return;
|
|
23
21
|
}
|
|
24
|
-
|
|
22
|
+
if (job.type === 'harness') {
|
|
23
|
+
const parsed = harnessJobPayloadSchema.safeParse(job.payload);
|
|
24
|
+
if (!parsed.success) {
|
|
25
|
+
// Old daemons settle unknown ACTIONS the same way — one shared answer.
|
|
26
|
+
socket.emit('job:result', {
|
|
27
|
+
jobId: job.id,
|
|
28
|
+
ok: false,
|
|
29
|
+
error: 'harness payload invalid (upgrade hnx on the machine)',
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (parsed.data.action === 'apply-config') {
|
|
34
|
+
void runApplyConfigJob(socket, opts, job);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
void runHarnessJob(socket, job);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
socket.emit('job:result', {
|
|
41
|
+
jobId: job.id,
|
|
42
|
+
ok: false,
|
|
43
|
+
error: `job type '${job.type}' is not supported by this daemon`,
|
|
44
|
+
});
|
|
25
45
|
});
|
|
26
46
|
}
|
|
27
47
|
async function runDeploy(socket, opts, job) {
|
package/dist/daemon/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/daemon/jobs.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/daemon/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Socket } from 'socket.io-client';
|
|
2
|
+
import { type JobView, type RuntimeConfigSpec } from '@harness-nexus/shared';
|
|
3
|
+
/**
|
|
4
|
+
* Set TOP-LEVEL `key = "value"` pairs in a TOML document, preserving every
|
|
5
|
+
* other byte. Only the region before the first `[section]` header is ours to
|
|
6
|
+
* edit (a `model` inside a section belongs to that section); missing keys are
|
|
7
|
+
* appended to that region. JSON string escaping is valid TOML basic-string
|
|
8
|
+
* escaping.
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeTomlRootKeys(existing: string, values: Record<string, string>): string;
|
|
11
|
+
/** Replace (or append) one `KEY=VALUE` line in a dotenv document, preserving the rest. */
|
|
12
|
+
export declare function mergeEnvLine(existing: string, key: string, value: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Strip a marked block (full-line comment markers) from a document. Returns
|
|
15
|
+
* the remainder with collapsed surrounding blank lines. A base that is JUST
|
|
16
|
+
* an empty placeholder (`[]` / `{}`) is treated as empty — appending entries
|
|
17
|
+
* after it would produce two YAML documents (a boot-time parse error).
|
|
18
|
+
*/
|
|
19
|
+
export declare function stripMarkedBlock(existing: string, begin: string, end: string): string;
|
|
20
|
+
/** The per-target native writer — pure file surgery, no I/O beyond the harness homes. */
|
|
21
|
+
export declare function applyRuntimeConfig(target: 'claude-code' | 'codex' | 'deepseek', spec: RuntimeConfigSpec, secret: string, homeDir: string): {
|
|
22
|
+
files: string[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The `apply-config` harness job executor: fetch the resolved bundle with the
|
|
26
|
+
* machine PAT (REST — the secret never rides the job), write the native slots,
|
|
27
|
+
* settle via `job:result`. No runtime re-probe (config files aren't in the
|
|
28
|
+
* snapshot); the redacted read-back viewer is W4.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runApplyConfigJob(socket: Socket, opts: {
|
|
31
|
+
server: string;
|
|
32
|
+
token: string;
|
|
33
|
+
}, job: JobView, homeDir?: string): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=runtime-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/daemon/runtime-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAgG/B;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAgC1F;AAkCD,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjF;AAgBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAarF;AAmHD,yFAAyF;AACzF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,GAAG,OAAO,GAAG,UAAU,EAC5C,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAcrB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACvC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,MAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|