@agentdeck/hooks 1.8.0 → 1.9.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.
- package/dist/hermes-diagnostics.d.ts +22 -0
- package/dist/hermes-diagnostics.d.ts.map +1 -0
- package/dist/hermes-diagnostics.js +133 -0
- package/dist/hermes-diagnostics.js.map +1 -0
- package/dist/hermes-install.d.ts +11 -1
- package/dist/hermes-install.d.ts.map +1 -1
- package/dist/hermes-install.js +22 -4
- package/dist/hermes-install.js.map +1 -1
- package/dist/install.d.ts +2 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +2 -1
- package/dist/install.js.map +1 -1
- package/dist/opencode-install.d.ts.map +1 -1
- package/dist/opencode-install.js +184 -2
- package/dist/opencode-install.js.map +1 -1
- package/hermes-agentdeck/__init__.py +112 -5
- package/package.json +4 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const isHermesPort: (value: unknown) => value is number;
|
|
2
|
+
export declare const hermesProfileHome: (home?: string) => string;
|
|
3
|
+
export interface HermesDiagnostic {
|
|
4
|
+
ok: boolean;
|
|
5
|
+
plugin: 'installed' | 'missing' | 'outdated' | 'unknown';
|
|
6
|
+
enablement: 'enabled' | 'disabled' | 'unknown';
|
|
7
|
+
hooks: 'allowed' | 'disabled';
|
|
8
|
+
discovery: 'explicit' | 'registry' | 'missing' | 'invalid' | 'unknown';
|
|
9
|
+
port?: number;
|
|
10
|
+
receiver: 'supported' | 'unsupported' | 'unreachable' | 'unknown' | 'not-probed';
|
|
11
|
+
nextSteps: string[];
|
|
12
|
+
scope: string;
|
|
13
|
+
}
|
|
14
|
+
/** Mirrors observer discovery exactly: profile connection.json, otherwise the
|
|
15
|
+
* configured registry only. A bad explicit selection never falls back. */
|
|
16
|
+
export declare function collectHermesDiagnostic(opts?: {
|
|
17
|
+
home?: string;
|
|
18
|
+
dataDir?: string;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
}): Promise<HermesDiagnostic>;
|
|
21
|
+
export declare function formatHermesDiagnostic(report: HermesDiagnostic): string;
|
|
22
|
+
//# sourceMappingURL=hermes-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-diagnostics.d.ts","sourceRoot":"","sources":["../src/hermes-diagnostics.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACkB,CAAC;AAE1E,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAA4F,CAAC;AAC/I,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;IACjF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AA2CD;0EAC0E;AAC1E,wBAAsB,uBAAuB,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiD3I;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAKvE"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import http from 'node:http';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
5
|
+
import { parse } from 'yaml';
|
|
6
|
+
const observerName = 'agentdeck-observer';
|
|
7
|
+
export const isHermesPort = (value) => Number.isInteger(value) && Number(value) >= 1 && Number(value) <= 65535;
|
|
8
|
+
const expandHome = (path) => path === '~' ? homedir() : path.startsWith('~/') ? join(homedir(), path.slice(2)) : path;
|
|
9
|
+
export const hermesProfileHome = (home) => resolve(expandHome(home || process.env.HERMES_HOME || join(homedir(), '.hermes')));
|
|
10
|
+
async function read(path) {
|
|
11
|
+
try {
|
|
12
|
+
const text = await readFile(path, { encoding: 'utf8', signal: AbortSignal.timeout(2000) });
|
|
13
|
+
return text.length <= 1024 * 1024 ? { text, status: 'readable' } : { status: 'unknown' };
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return { status: error.code === 'ENOENT' ? 'missing' : 'unknown' };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Read health only, with an absolute deadline and size cap. No redirects,
|
|
20
|
+
* proxy, credentials, session reads or diagnostic POSTs. */
|
|
21
|
+
async function receiver(port, timeoutMs) {
|
|
22
|
+
return new Promise(resolve => {
|
|
23
|
+
let done = false;
|
|
24
|
+
const finish = (status) => {
|
|
25
|
+
if (done)
|
|
26
|
+
return;
|
|
27
|
+
done = true;
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
req.destroy();
|
|
30
|
+
resolve(status);
|
|
31
|
+
};
|
|
32
|
+
const req = http.get({ hostname: '127.0.0.1', port, path: '/health' }, res => {
|
|
33
|
+
if (res.statusCode !== 200) {
|
|
34
|
+
res.resume();
|
|
35
|
+
finish('unknown');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let body = '';
|
|
39
|
+
res.on('data', chunk => { body += chunk; if (body.length > 65536)
|
|
40
|
+
finish('unknown'); });
|
|
41
|
+
res.on('error', () => finish('unknown'));
|
|
42
|
+
res.on('end', () => {
|
|
43
|
+
try {
|
|
44
|
+
const data = JSON.parse(body);
|
|
45
|
+
finish(data?.mode !== 'daemon' ? 'unknown' : data.hermesObserver === 1 ? 'supported' : 'unsupported');
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
finish('unknown');
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
const timer = setTimeout(() => finish('unknown'), timeoutMs);
|
|
53
|
+
req.on('error', error => finish(error.code === 'ECONNREFUSED' ? 'unreachable' : 'unknown'));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/** Hermes skips plugin discovery entirely under HERMES_SAFE_MODE (its
|
|
57
|
+
* `env_var_enabled`: trimmed, case-insensitive 1/true/yes/on). */
|
|
58
|
+
function hermesSafeMode() {
|
|
59
|
+
return ['1', 'true', 'yes', 'on'].includes((process.env.HERMES_SAFE_MODE ?? '').trim().toLowerCase());
|
|
60
|
+
}
|
|
61
|
+
/** Mirrors observer discovery exactly: profile connection.json, otherwise the
|
|
62
|
+
* configured registry only. A bad explicit selection never falls back. */
|
|
63
|
+
export async function collectHermesDiagnostic(opts = {}) {
|
|
64
|
+
const home = hermesProfileHome(opts.home);
|
|
65
|
+
const plugin = join(home, 'plugins', observerName);
|
|
66
|
+
const report = {
|
|
67
|
+
ok: false, plugin: 'unknown', enablement: 'unknown',
|
|
68
|
+
hooks: process.env.AGENTDECK_NO_HERMES_HOOKS === '1' || hermesSafeMode() ? 'disabled' : 'allowed',
|
|
69
|
+
discovery: 'unknown', receiver: 'not-probed', nextSteps: [],
|
|
70
|
+
scope: 'Checks this profile and CLI environment, not the running Hermes process. Restart Hermes after changes; verify a real turn appears in AgentDeck. No events were sent.',
|
|
71
|
+
};
|
|
72
|
+
const files = await Promise.all(['__init__.py', 'plugin.yaml', 'ci-wait-rules.json'].map(file => read(join(plugin, file))));
|
|
73
|
+
report.plugin = files.some(file => file.status === 'unknown') ? 'unknown'
|
|
74
|
+
: files.some(file => file.status === 'missing') ? 'missing' : 'installed';
|
|
75
|
+
// A pre-connection observer cannot use an explicit port even if its files exist.
|
|
76
|
+
const explicit = await read(join(plugin, 'connection.json'));
|
|
77
|
+
if (explicit.status !== 'missing' && report.plugin === 'installed' && !files[0].text?.includes('connection.json'))
|
|
78
|
+
report.plugin = 'outdated';
|
|
79
|
+
const config = await read(join(home, 'config.yaml'));
|
|
80
|
+
if (config.status === 'missing')
|
|
81
|
+
report.enablement = 'disabled';
|
|
82
|
+
else if (config.status === 'readable') {
|
|
83
|
+
try {
|
|
84
|
+
const data = parse(config.text, { maxAliasCount: 100 });
|
|
85
|
+
const enabled = data?.plugins?.enabled;
|
|
86
|
+
const disabled = data?.plugins?.disabled;
|
|
87
|
+
const mapping = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
88
|
+
if ((data === null || mapping(data)) && (data?.plugins === undefined || mapping(data.plugins)) &&
|
|
89
|
+
(enabled === undefined || Array.isArray(enabled)) && (disabled === undefined || Array.isArray(disabled))) {
|
|
90
|
+
report.enablement = enabled?.includes(observerName) && !disabled?.includes(observerName) ? 'enabled' : 'disabled';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch { /* Unreadable/malformed config is unknown, never disabled. */ }
|
|
94
|
+
}
|
|
95
|
+
const registry = explicit.status === 'missing'
|
|
96
|
+
? await read(join(expandHome(opts.dataDir || process.env.AGENTDECK_DATA_DIR || join(homedir(), '.agentdeck')), 'daemon.json')) : explicit;
|
|
97
|
+
report.discovery = registry.status === 'missing' ? 'missing' : 'unknown';
|
|
98
|
+
if (registry.status === 'readable') {
|
|
99
|
+
try {
|
|
100
|
+
const data = JSON.parse(registry.text);
|
|
101
|
+
const port = explicit.status === 'missing' ? (data.httpPort || data.port) : data.port;
|
|
102
|
+
report.discovery = isHermesPort(port) ? explicit.status === 'missing' ? 'registry' : 'explicit' : 'invalid';
|
|
103
|
+
if (isHermesPort(port))
|
|
104
|
+
report.port = port;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
report.discovery = 'invalid';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (report.port !== undefined)
|
|
111
|
+
report.receiver = await receiver(report.port, opts.timeoutMs ?? 1500);
|
|
112
|
+
report.ok = report.plugin === 'installed' && report.enablement === 'enabled' && report.hooks === 'allowed' && report.receiver === 'supported';
|
|
113
|
+
if (report.plugin !== 'installed')
|
|
114
|
+
report.nextSteps.push('Install/update the observer with agentdeck hermes-observer --home <profile>.');
|
|
115
|
+
if (report.enablement !== 'enabled')
|
|
116
|
+
report.nextSteps.push('In that same Hermes profile, inspect configuration and run hermes plugins enable agentdeck-observer.');
|
|
117
|
+
if (hermesSafeMode())
|
|
118
|
+
report.nextSteps.push('HERMES_SAFE_MODE is on in this environment, so Hermes skips every plugin. Start Hermes without it to enable observation.');
|
|
119
|
+
if (process.env.AGENTDECK_NO_HERMES_HOOKS === '1')
|
|
120
|
+
report.nextSteps.push('Remove AGENTDECK_NO_HERMES_HOOKS=1 from the Hermes launch environment to enable observation.');
|
|
121
|
+
if (report.port === undefined)
|
|
122
|
+
report.nextSteps.push('No usable receiver selection. For a sandboxed Mac app, use agentdeck hermes-observer --home <profile> --port <actual-daemon-port>; no container access is needed. For registry discovery, start the intended daemon or set AGENTDECK_DATA_DIR in the Hermes launch environment.');
|
|
123
|
+
else if (report.receiver !== 'supported')
|
|
124
|
+
report.nextSteps.push('Confirm the selected local daemon is running and advertises hermesObserver: 1. Update the receiver or correct --port; no other port was tried.');
|
|
125
|
+
return report;
|
|
126
|
+
}
|
|
127
|
+
export function formatHermesDiagnostic(report) {
|
|
128
|
+
return [`Hermes observer setup: ${report.ok ? 'ready for a live-turn check' : 'incomplete or unconfirmed'}`,
|
|
129
|
+
`Plugin: ${report.plugin}; enablement: ${report.enablement}; hooks: ${report.hooks}`,
|
|
130
|
+
`Discovery: ${report.discovery}${report.port === undefined ? '' : ` (127.0.0.1:${report.port})`}; receiver: ${report.receiver}`,
|
|
131
|
+
...report.nextSteps, report.scope].join('\n');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=hermes-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-diagnostics.js","sourceRoot":"","sources":["../src/hermes-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC9D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC1E,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtI,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAU,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAa/I,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAG,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAChG,CAAC;AACH,CAAC;AAED;4DAC4D;AAC5D,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB;IACrD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,MAAoC,EAAE,EAAE;YACtD,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE;YAC3E,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACxE,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;gBAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBACxG,CAAC;gBAAC,MAAM,CAAC;oBAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAE,KAA+B,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;kEACkE;AAClE,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACxG,CAAC;AAED;0EAC0E;AAC1E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAgE,EAAE;IAC9G,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,MAAM,GAAqB;QAC/B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS;QACnD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACjG,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;QAC3D,KAAK,EAAE,sKAAsK;KAC9K,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAC5E,iFAAiF;IACjF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;IAC9I,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;SAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1F,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC7G,MAAM,CAAC,UAAU,GAAG,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACpH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC5C,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5I,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACtF,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5G,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAAC,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACrG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;IAC9I,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IACzI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IACnK,IAAI,cAAc,EAAE;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,0HAA0H,CAAC,CAAC;IACxK,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IACzK,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,iRAAiR,CAAC,CAAC;SACnU,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW;QAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,gJAAgJ,CAAC,CAAC;IAClN,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,OAAO,CAAC,0BAA0B,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,2BAA2B,EAAE;QACzG,WAAW,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,KAAK,EAAE;QACpF,cAAc,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,IAAI,GAAG,eAAe,MAAM,CAAC,QAAQ,EAAE;QAC/H,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/hermes-install.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/** Source package assets are shipped beside dist in the published hooks package. */
|
|
2
2
|
export declare const hermesObserverSource: string;
|
|
3
|
+
/**
|
|
4
|
+
* `--port` as the user typed it. Only plain decimal digits are a port:
|
|
5
|
+
* `Number()` alone accepted `0x2380` (9088), `1e3` (1000) and `9120.0`, and a
|
|
6
|
+
* persisted port the user did not mean surfaces later only as `unreachable`.
|
|
7
|
+
* Anything else yields NaN, which `installHermesObserver` refuses before
|
|
8
|
+
* writing a file.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseHermesPortFlag(text: string): number;
|
|
3
11
|
/** Explicit installation only; Hermes remains responsible for plugin enablement. */
|
|
4
|
-
export declare function installHermesObserver(home?: string
|
|
12
|
+
export declare function installHermesObserver(home?: string, options?: {
|
|
13
|
+
port?: number | null;
|
|
14
|
+
}): string;
|
|
5
15
|
//# sourceMappingURL=hermes-install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-install.d.ts","sourceRoot":"","sources":["../src/hermes-install.ts"],"names":[],"mappings":"AAKA,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,QAA0E,CAAC;AAE5G,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"hermes-install.d.ts","sourceRoot":"","sources":["../src/hermes-install.ts"],"names":[],"mappings":"AAKA,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,QAA0E,CAAC;AAE5G;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAAG,MAAM,CAiBnG"}
|
package/dist/hermes-install.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import {
|
|
4
|
+
import { hermesProfileHome, isHermesPort } from './hermes-diagnostics.js';
|
|
5
5
|
/** Source package assets are shipped beside dist in the published hooks package. */
|
|
6
6
|
export const hermesObserverSource = resolve(dirname(fileURLToPath(import.meta.url)), '../hermes-agentdeck');
|
|
7
|
+
/**
|
|
8
|
+
* `--port` as the user typed it. Only plain decimal digits are a port:
|
|
9
|
+
* `Number()` alone accepted `0x2380` (9088), `1e3` (1000) and `9120.0`, and a
|
|
10
|
+
* persisted port the user did not mean surfaces later only as `unreachable`.
|
|
11
|
+
* Anything else yields NaN, which `installHermesObserver` refuses before
|
|
12
|
+
* writing a file.
|
|
13
|
+
*/
|
|
14
|
+
export function parseHermesPortFlag(text) {
|
|
15
|
+
return /^\d{1,5}$/.test(text) ? Number(text) : Number.NaN;
|
|
16
|
+
}
|
|
7
17
|
/** Explicit installation only; Hermes remains responsible for plugin enablement. */
|
|
8
|
-
export function installHermesObserver(home =
|
|
9
|
-
|
|
18
|
+
export function installHermesObserver(home, options = {}) {
|
|
19
|
+
if (options.port !== undefined && options.port !== null && !isHermesPort(options.port)) {
|
|
20
|
+
throw new Error('Port must be an integer from 1 to 65535');
|
|
21
|
+
}
|
|
22
|
+
const target = join(hermesProfileHome(home), 'plugins', 'agentdeck-observer');
|
|
10
23
|
const files = ['__init__.py', 'plugin.yaml', 'ci-wait-rules.json'];
|
|
11
24
|
const marker = join(target, '.agentdeck-owned');
|
|
12
25
|
if (existsSync(target) && !existsSync(marker)) {
|
|
@@ -16,6 +29,11 @@ export function installHermesObserver(home = process.env.HERMES_HOME || join(hom
|
|
|
16
29
|
writeFileSync(marker, 'agentdeck-hermes-observer-v1\n');
|
|
17
30
|
for (const file of files)
|
|
18
31
|
writeFileSync(join(target, file), readFileSync(join(hermesObserverSource, file)));
|
|
32
|
+
const connection = join(target, 'connection.json');
|
|
33
|
+
if (options.port === null)
|
|
34
|
+
rmSync(connection, { force: true });
|
|
35
|
+
else if (options.port !== undefined)
|
|
36
|
+
writeFileSync(connection, JSON.stringify({ port: options.port }) + '\n', { mode: 0o600 });
|
|
19
37
|
return target;
|
|
20
38
|
}
|
|
21
39
|
//# sourceMappingURL=hermes-install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-install.js","sourceRoot":"","sources":["../src/hermes-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"hermes-install.js","sourceRoot":"","sources":["../src/hermes-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE1E,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAE5G;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CAAC,IAAa,EAAE,UAAoC,EAAE;IACzF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,gDAAgD,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/H,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/install.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { collectHermesDiagnostic, formatHermesDiagnostic } from './hermes-diagnostics.js';
|
|
2
|
+
export { installHermesObserver, parseHermesPortFlag } from './hermes-install.js';
|
|
2
3
|
export { installCodexHooksIfNeeded, uninstallCodexHooks, migrateCodexHooks, managedBlockBody as codexManagedBlockBody, DEFAULT_CODEX_CONFIG_PATH, } from './codex-install.js';
|
|
3
4
|
export type { InstallOptions as CodexInstallOptions, InstallResult as CodexInstallResult } from './codex-install.js';
|
|
4
5
|
export { installOpenCodeHooksIfNeeded, uninstallOpenCodeHooks, opencodePluginPath, opencodePluginSource, } from './opencode-install.js';
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { collectHermesDiagnostic, formatHermesDiagnostic } from './hermes-diagnostics.js';
|
|
2
|
+
export { installHermesObserver, parseHermesPortFlag } from './hermes-install.js';
|
|
2
3
|
import { readFileSync, writeFileSync, existsSync, mkdirSync, unlinkSync } from 'fs';
|
|
3
4
|
import { join } from 'path';
|
|
4
5
|
import { homedir } from 'os';
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-install.d.ts","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;wEAEwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;0CAE0C;AAC1C,wBAAgB,oBAAoB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"opencode-install.d.ts","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD;;wEAEwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;0CAE0C;AAC1C,wBAAgB,oBAAoB,IAAI,MAAM,CAwd7C;AAeD;;6EAE6E;AAC7E,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,sBAA2B,GAAG,qBAAqB,CAerG;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,sBAA2B,GAAG,IAAI,CAK9E"}
|
package/dist/opencode-install.js
CHANGED
|
@@ -40,7 +40,7 @@ export function opencodePluginPath() {
|
|
|
40
40
|
function envOptOut() {
|
|
41
41
|
return process.env.AGENTDECK_NO_OPENCODE_HOOKS === '1';
|
|
42
42
|
}
|
|
43
|
-
const PLUGIN_VERSION =
|
|
43
|
+
const PLUGIN_VERSION = 4;
|
|
44
44
|
/** Assemble the plugin source. Exported so tests can assert schema
|
|
45
45
|
* regressions (event names, payload fields, managed-session guard)
|
|
46
46
|
* without driving the file installer. */
|
|
@@ -125,6 +125,10 @@ function post(event, body) {
|
|
|
125
125
|
// while the session is idle. One loop per observed session; stops on
|
|
126
126
|
// opencode_stop-less session death via the poll's own error backoff.
|
|
127
127
|
const steerLoops = new Set();
|
|
128
|
+
// permissionID -> the child session that asked it. A Task-tool child's
|
|
129
|
+
// permission is surfaced on its parent's row (a real wait the user must see),
|
|
130
|
+
// but OpenCode resolves it against the session that asked.
|
|
131
|
+
const permissionSession = new Map();
|
|
128
132
|
|
|
129
133
|
function startSteerLoop(client, sessionID) {
|
|
130
134
|
if (!client || steerLoops.has(sessionID)) return;
|
|
@@ -160,7 +164,7 @@ function startSteerLoop(client, sessionID) {
|
|
|
160
164
|
// "once" (not "always") keeps device-approval one-shot.
|
|
161
165
|
if (client.postSessionIdPermissionsPermissionId) {
|
|
162
166
|
await client.postSessionIdPermissionsPermissionId({
|
|
163
|
-
path: { id: sessionID, permissionID: cmd.permissionId },
|
|
167
|
+
path: { id: permissionSession.get(cmd.permissionId) || sessionID, permissionID: cmd.permissionId },
|
|
164
168
|
body: { response: cmd.response === "allow" ? "once" : "reject" },
|
|
165
169
|
});
|
|
166
170
|
}
|
|
@@ -194,6 +198,172 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
194
198
|
const responses = new Map(); // sessionID -> latest assistant text
|
|
195
199
|
const startedAt = new Map(); // sessionID -> turn start ms
|
|
196
200
|
const toolPhase = new Map(); // tool callID -> "start" | "end"
|
|
201
|
+
const parentOf = new Map(); // sessionID -> parent sessionID, or null (top level)
|
|
202
|
+
const childStarted = new Set();// child sessionIDs whose opencode_subagent_start was posted
|
|
203
|
+
const childStopped = new Set();// child sessionIDs whose opencode_subagent_stop was posted
|
|
204
|
+
// Background work (OpenCode 1.18 background subagents, measured 2026-10-11):
|
|
205
|
+
// the task tool part completes at once with state.metadata.background and a
|
|
206
|
+
// jobId (the child session id); the end arrives as a synthetic user text
|
|
207
|
+
// <task id="JOB" state="completed"> on the parent.
|
|
208
|
+
const backgroundStarted = new Set(); // jobIds whose opencode_background_start was posted
|
|
209
|
+
const backgroundFinished = new Set();// jobIds whose opencode_background_finish was posted
|
|
210
|
+
const TASK_RESULT = /<task id="([^"]{1,256})" state="([a-z_]{1,40})">/g;
|
|
211
|
+
|
|
212
|
+
function noteBackgroundStart(sessionID, part) {
|
|
213
|
+
const meta = part.state && part.state.metadata;
|
|
214
|
+
const job = meta && meta.background === true && typeof meta.jobId === "string" ? meta.jobId : "";
|
|
215
|
+
if (!job || job.length > 256 || backgroundStarted.has(job)) return;
|
|
216
|
+
if (backgroundStarted.size > 512) backgroundStarted.clear();
|
|
217
|
+
backgroundStarted.add(job);
|
|
218
|
+
post("opencode_background_start", { session_id: sessionID, item_id: job, cwd });
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
function noteBackgroundResults(sessionID, text) {
|
|
222
|
+
if (text.indexOf("<task id=") < 0) return;
|
|
223
|
+
for (const m of text.matchAll(TASK_RESULT)) {
|
|
224
|
+
if (m[2] === "running" || backgroundFinished.has(m[1])) continue;
|
|
225
|
+
if (backgroundFinished.size > 512) backgroundFinished.clear();
|
|
226
|
+
backgroundFinished.add(m[1]);
|
|
227
|
+
post("opencode_background_finish", { session_id: sessionID, item_id: m[1], status: m[2], cwd });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function noteSessionInfo(info) {
|
|
232
|
+
if (!info || typeof info.id !== "string" || !info.id) return;
|
|
233
|
+
parentOf.set(info.id, typeof info.parentID === "string" && info.parentID ? info.parentID : null);
|
|
234
|
+
if (parentOf.size > 512) parentOf.delete(parentOf.keys().next().value);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// A Task-tool child session (OpenCode sets parentID) is its parent's
|
|
238
|
+
// subagent, not a session the user opened: announcing it put a second row
|
|
239
|
+
// on every deck for the length of the task. session.created normally names
|
|
240
|
+
// the parent first; otherwise ask the server once, bounded. An unanswered
|
|
241
|
+
// lookup is unknown and keeps the old behaviour (a row) — it never hides one.
|
|
242
|
+
// OpenCode calls plugin event handlers WITHOUT awaiting them, so every
|
|
243
|
+
// event of an uncached session would race its own lookup and resume out of
|
|
244
|
+
// order (a prompt landing after its own stop opened a phantom turn). One
|
|
245
|
+
// in-flight promise per session makes them all resume in arrival order.
|
|
246
|
+
const parentLookups = new Map(); // sessionID -> Promise<parent|null>
|
|
247
|
+
function lookupParent(sessionID) {
|
|
248
|
+
if (parentOf.has(sessionID)) return Promise.resolve(parentOf.get(sessionID));
|
|
249
|
+
const pending = parentLookups.get(sessionID);
|
|
250
|
+
if (pending) return pending;
|
|
251
|
+
const lookup = (async () => {
|
|
252
|
+
let parent = null;
|
|
253
|
+
try {
|
|
254
|
+
if (client && client.session && client.session.get) {
|
|
255
|
+
const res = await Promise.race([
|
|
256
|
+
client.session.get({ path: { id: sessionID } }),
|
|
257
|
+
new Promise((r) => setTimeout(() => r(null), 1000)),
|
|
258
|
+
]);
|
|
259
|
+
const info = res && (res.data || res);
|
|
260
|
+
if (info && typeof info.parentID === "string" && info.parentID) parent = info.parentID;
|
|
261
|
+
}
|
|
262
|
+
} catch { /* unknown → top level */ }
|
|
263
|
+
if (!parentOf.has(sessionID)) parentOf.set(sessionID, parent);
|
|
264
|
+
parentLookups.delete(sessionID);
|
|
265
|
+
return parentOf.get(sessionID);
|
|
266
|
+
})();
|
|
267
|
+
parentLookups.set(sessionID, lookup);
|
|
268
|
+
return lookup;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/** The top-level session a (possibly nested) child belongs to, or null. */
|
|
272
|
+
async function rootSession(sessionID) {
|
|
273
|
+
if (!sessionID) return null;
|
|
274
|
+
let root = null;
|
|
275
|
+
let cur = sessionID;
|
|
276
|
+
for (let hop = 0; hop < 8; hop++) {
|
|
277
|
+
const parent = await lookupParent(cur);
|
|
278
|
+
if (!parent) break;
|
|
279
|
+
root = parent;
|
|
280
|
+
cur = parent;
|
|
281
|
+
}
|
|
282
|
+
return root;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
function eventSessionID(type, props) {
|
|
286
|
+
if (type === "message.updated") return (props.info || {}).sessionID;
|
|
287
|
+
if (type === "message.part.updated") return (props.part || {}).sessionID;
|
|
288
|
+
if (type === "permission.asked" || type === "permission.updated" || type === "permission.replied") {
|
|
289
|
+
const perm = (props.permission && typeof props.permission === "object") ? props.permission : (props.info || props);
|
|
290
|
+
return perm.sessionID;
|
|
291
|
+
}
|
|
292
|
+
return props.sessionID;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** Child-session events: lifecycle into the parent's subagent census, a
|
|
296
|
+
* genuine permission wait onto the parent's row, everything else dropped. */
|
|
297
|
+
function childEvent(type, props, sessionID, parent) {
|
|
298
|
+
// After its stop, a child stays finished: OpenCode re-emits
|
|
299
|
+
// message.updated once a turn settles, and treating that as a new start
|
|
300
|
+
// left the parent's census showing a running child for hours. Only a new
|
|
301
|
+
// user message (the Task tool resuming the child) starts it again.
|
|
302
|
+
if (childStopped.has(sessionID)) {
|
|
303
|
+
const info = props.info || {};
|
|
304
|
+
const resumed = type === "message.updated" && info.role === "user" && info.id && !userMsgs.has(info.id);
|
|
305
|
+
if (!resumed) return;
|
|
306
|
+
childStopped.delete(sessionID);
|
|
307
|
+
}
|
|
308
|
+
if (!childStarted.has(sessionID)) {
|
|
309
|
+
childStarted.add(sessionID);
|
|
310
|
+
if (childStarted.size > 512) childStarted.delete(childStarted.values().next().value);
|
|
311
|
+
const info = props.info || {};
|
|
312
|
+
const label = typeof info.agent === "string" && info.agent ? info.agent
|
|
313
|
+
: (typeof info.mode === "string" && info.mode ? info.mode : "Subagent");
|
|
314
|
+
post("opencode_subagent_start", { session_id: parent, agent_id: sessionID, agent_type: label, cwd });
|
|
315
|
+
}
|
|
316
|
+
if (type === "message.part.updated") {
|
|
317
|
+
const part = props.part || {};
|
|
318
|
+
if (part.type === "text" && typeof part.text === "string" && !userMsgs.has(part.messageID)) {
|
|
319
|
+
responses.set(sessionID, part.text);
|
|
320
|
+
}
|
|
321
|
+
} else if (type === "message.updated") {
|
|
322
|
+
const info = props.info || {};
|
|
323
|
+
if (info.role === "user" && info.id) userMsgs.set(info.id, sessionID);
|
|
324
|
+
} else if (type === "permission.asked" || type === "permission.updated") {
|
|
325
|
+
const perm = (props.permission && typeof props.permission === "object") ? props.permission : (props.info || props);
|
|
326
|
+
if (perm.id) {
|
|
327
|
+
permissionSession.set(perm.id, sessionID);
|
|
328
|
+
if (permissionSession.size > 256) permissionSession.delete(permissionSession.keys().next().value);
|
|
329
|
+
post("opencode_permission_asked", {
|
|
330
|
+
session_id: parent,
|
|
331
|
+
permission_id: perm.id,
|
|
332
|
+
title: typeof perm.title === "string" ? perm.title : (typeof perm.permission === "string" ? perm.permission : "Permission requested"),
|
|
333
|
+
cwd,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
} else if (type === "permission.replied") {
|
|
337
|
+
const perm = (props.permission && typeof props.permission === "object") ? props.permission : (props.info || props);
|
|
338
|
+
const id = perm.requestID || perm.permissionID || perm.id || "";
|
|
339
|
+
permissionSession.delete(id);
|
|
340
|
+
post("opencode_permission_replied", { session_id: parent, permission_id: id, cwd });
|
|
341
|
+
} else if (type === "question.asked") {
|
|
342
|
+
// Display-only on every surface, so the parent's row can show it.
|
|
343
|
+
if (props.id) {
|
|
344
|
+
post("opencode_question_asked", {
|
|
345
|
+
session_id: parent, question_id: props.id,
|
|
346
|
+
title: (Array.isArray(props.questions) ? props.questions : []).map(q => q.question || q.header || "").filter(Boolean).join(" / "),
|
|
347
|
+
cwd,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
} else if (type === "question.replied" || type === "question.rejected") {
|
|
351
|
+
if (props.requestID) {
|
|
352
|
+
post(type === "question.replied" ? "opencode_question_replied" : "opencode_question_rejected", {
|
|
353
|
+
session_id: parent, question_id: props.requestID, cwd,
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
} else if (type === "session.idle") {
|
|
357
|
+
childStarted.delete(sessionID);
|
|
358
|
+
childStopped.add(sessionID);
|
|
359
|
+
if (childStopped.size > 512) childStopped.delete(childStopped.values().next().value);
|
|
360
|
+
post("opencode_subagent_stop", {
|
|
361
|
+
session_id: parent, agent_id: sessionID,
|
|
362
|
+
last_assistant_message: responses.get(sessionID) || "", cwd,
|
|
363
|
+
});
|
|
364
|
+
responses.delete(sessionID);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
197
367
|
|
|
198
368
|
function announce(sessionID) {
|
|
199
369
|
if (!sessionID || announced.has(sessionID)) return;
|
|
@@ -219,6 +389,16 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
219
389
|
try {
|
|
220
390
|
const type = event.type;
|
|
221
391
|
const props = event.properties || {};
|
|
392
|
+
if (type === "session.created" || type === "session.updated") {
|
|
393
|
+
noteSessionInfo(props.info);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const eventSid = eventSessionID(type, props);
|
|
397
|
+
const parent = eventSid ? await rootSession(eventSid) : null;
|
|
398
|
+
if (parent) {
|
|
399
|
+
childEvent(type, props, eventSid, parent);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
222
402
|
if (type === "message.updated") {
|
|
223
403
|
const info = props.info || {};
|
|
224
404
|
const sessionID = info.sessionID;
|
|
@@ -248,11 +428,13 @@ export const AgentDeckObserver = async ({ directory, client }) => {
|
|
|
248
428
|
const sessionID = part.sessionID;
|
|
249
429
|
announce(sessionID);
|
|
250
430
|
if (part.type === "text" && typeof part.text === "string") {
|
|
431
|
+
noteBackgroundResults(sessionID, part.text);
|
|
251
432
|
const owner = userMsgs.get(part.messageID);
|
|
252
433
|
if (owner) sendPrompt(part.messageID, owner, part.text.trim());
|
|
253
434
|
else responses.set(sessionID, part.text);
|
|
254
435
|
} else if (part.type === "tool" && part.callID) {
|
|
255
436
|
const status = (part.state && part.state.status) || "running";
|
|
437
|
+
if (part.tool === "task") noteBackgroundStart(sessionID, part);
|
|
256
438
|
const phase = toolPhase.get(part.callID);
|
|
257
439
|
if (status === "completed" || status === "error") {
|
|
258
440
|
if (phase !== "end") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-install.js","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,uEAAuE;AACvE,sEAAsE;AACtE,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AACzE,kEAAkE;AAClE,EAAE;AACF,yEAAyE;AACzE,sEAAsE;AACtE,iEAAiE;AACjE,sEAAsE;AACtE,yEAAyE;AACzE,2BAA2B;AAC3B,EAAE;AACF,yBAAyB;AACzB,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AAEvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEvD;;wEAEwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,MAAM,UAAU,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAC3E,CAAC;AAaD;qDACqD;AACrD,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,CAAC;AACzD,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;0CAE0C;AAC1C,MAAM,UAAU,oBAAoB;IAClC,OAAO,iCAAiC,cAAc
|
|
1
|
+
{"version":3,"file":"opencode-install.js","sourceRoot":"","sources":["../src/opencode-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
"""AgentDeck Hermes observer
|
|
1
|
+
"""AgentDeck Hermes observer v2. No hook changes Hermes execution.
|
|
2
|
+
|
|
3
|
+
v2 reports background processes (terminal background=true) through
|
|
4
|
+
`hermes_background_snapshot`, read from Hermes' own process registry at each
|
|
5
|
+
run end and every few seconds while any of the session's processes run.
|
|
2
6
|
|
|
3
7
|
Contract: NousResearch/hermes-agent@0a374d167, hermes.observer.v1.
|
|
4
8
|
Network work is serialized by one bounded daemon worker, never in a callback.
|
|
@@ -176,10 +180,20 @@ def _ci_intent(tool, args):
|
|
|
176
180
|
|
|
177
181
|
def _deliver(event, payload):
|
|
178
182
|
# Resolve every delivery: a daemon restart can move the port.
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
connection = Path(__file__).parent / "connection.json"
|
|
184
|
+
try:
|
|
185
|
+
selection = connection.read_text()
|
|
186
|
+
except FileNotFoundError:
|
|
187
|
+
selection = None
|
|
188
|
+
if selection is not None:
|
|
189
|
+
# User-selected loopback port supports sandboxed Swift without reading
|
|
190
|
+
# its container. Invalid/unreadable explicit selection never falls back.
|
|
191
|
+
port = json.loads(selection).get("port")
|
|
192
|
+
else:
|
|
193
|
+
data_dir = os.environ.get("AGENTDECK_DATA_DIR")
|
|
194
|
+
registry = (Path(data_dir).expanduser() if data_dir else Path.home() / ".agentdeck") / "daemon.json"
|
|
195
|
+
info = json.loads(registry.read_text())
|
|
196
|
+
port = info.get("httpPort") or info.get("port")
|
|
183
197
|
if type(port) is not int or not 1 <= port <= 65535:
|
|
184
198
|
return
|
|
185
199
|
base = "http://127.0.0.1:" + str(port)
|
|
@@ -232,7 +246,93 @@ def _post(event, payload):
|
|
|
232
246
|
pass # Bounded best effort; daemon expires abandoned state.
|
|
233
247
|
|
|
234
248
|
|
|
249
|
+
_TASKS = OrderedDict() # identity -> Hermes task_id (tool hooks carry it)
|
|
250
|
+
_BACKGROUND = OrderedDict() # identity -> background process ids last posted
|
|
251
|
+
_POLLER = None
|
|
252
|
+
_BACKGROUND_POLL_SECONDS = 3
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def _background_items(task_id):
|
|
256
|
+
"""Running background processes this task spawned, read from Hermes' own
|
|
257
|
+
process registry (the same live call its status bar makes). None means
|
|
258
|
+
"could not look", never "none running"."""
|
|
259
|
+
if not task_id:
|
|
260
|
+
return None
|
|
261
|
+
try:
|
|
262
|
+
from tools.process_registry import process_registry
|
|
263
|
+
entries = process_registry.list_sessions(task_id=task_id)
|
|
264
|
+
except Exception:
|
|
265
|
+
return None
|
|
266
|
+
if not isinstance(entries, list):
|
|
267
|
+
return None
|
|
268
|
+
return sorted({e["session_id"] for e in entries
|
|
269
|
+
if isinstance(e, dict) and e.get("status") == "running"
|
|
270
|
+
and isinstance(e.get("session_id"), str) and 0 < len(e["session_id"]) <= 256})
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def _poll_background_once():
|
|
274
|
+
"""Re-read every session that last reported running work; post changes.
|
|
275
|
+
Returns whether any session still has work. Registry reads happen outside
|
|
276
|
+
the observer lock, so a registry call can never wait on a hook callback."""
|
|
277
|
+
with _LOCK:
|
|
278
|
+
watched = [(identity, _TASKS.get(identity)) for identity, items in _BACKGROUND.items() if items]
|
|
279
|
+
still = False
|
|
280
|
+
for identity, task_id in watched:
|
|
281
|
+
items = _background_items(task_id)
|
|
282
|
+
if items is None:
|
|
283
|
+
still = True # unknown: keep the last report and look again
|
|
284
|
+
continue
|
|
285
|
+
with _LOCK:
|
|
286
|
+
if tuple(items) != _BACKGROUND.get(identity, ()):
|
|
287
|
+
_remember(_BACKGROUND, identity, tuple(items))
|
|
288
|
+
_post("hermes_background_snapshot", {"session_id": identity, "items": items})
|
|
289
|
+
still = still or bool(items)
|
|
290
|
+
return still
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
def _poll_background():
|
|
294
|
+
global _POLLER
|
|
295
|
+
while True:
|
|
296
|
+
time.sleep(_BACKGROUND_POLL_SECONDS)
|
|
297
|
+
try:
|
|
298
|
+
if _poll_background_once():
|
|
299
|
+
continue
|
|
300
|
+
except Exception:
|
|
301
|
+
pass
|
|
302
|
+
with _LOCK:
|
|
303
|
+
if not any(_BACKGROUND.values()):
|
|
304
|
+
_POLLER = None
|
|
305
|
+
return
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
def _report_background(identity):
|
|
309
|
+
"""At a turn end: post the session's running background processes when
|
|
310
|
+
they differ from the last report, and keep watching while any run."""
|
|
311
|
+
global _POLLER
|
|
312
|
+
items = _background_items(_TASKS.get(identity))
|
|
313
|
+
if items is None:
|
|
314
|
+
return
|
|
315
|
+
with _LOCK:
|
|
316
|
+
if tuple(items) != _BACKGROUND.get(identity, ()):
|
|
317
|
+
_remember(_BACKGROUND, identity, tuple(items))
|
|
318
|
+
_post("hermes_background_snapshot", {"session_id": identity, "items": items})
|
|
319
|
+
if items and (_POLLER is None or not _POLLER.is_alive()):
|
|
320
|
+
_POLLER = threading.Thread(target=_poll_background, name="agentdeck-background", daemon=True)
|
|
321
|
+
_POLLER.start()
|
|
322
|
+
|
|
323
|
+
|
|
235
324
|
def _handle(event, **kwargs):
|
|
325
|
+
if event == "on_session_end":
|
|
326
|
+
_handle_locked(event, **kwargs)
|
|
327
|
+
# Outside the lock: the registry read takes Hermes' own lock.
|
|
328
|
+
payload = _payload(kwargs)
|
|
329
|
+
if payload is not None:
|
|
330
|
+
_report_background(payload["session_id"])
|
|
331
|
+
return
|
|
332
|
+
_handle_locked(event, **kwargs)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def _handle_locked(event, **kwargs):
|
|
236
336
|
# Serialize concurrent callbacks too. A callback has no network I/O and
|
|
237
337
|
# always returns None (pre_llm/pre_tool return values can change behavior).
|
|
238
338
|
with _LOCK:
|
|
@@ -248,6 +348,8 @@ def _handle(event, **kwargs):
|
|
|
248
348
|
if old:
|
|
249
349
|
_post("hermes_session_end", _payload(kwargs, old))
|
|
250
350
|
_CONTEXT.pop(_identity(old), None)
|
|
351
|
+
_TASKS.pop(_identity(old), None)
|
|
352
|
+
_BACKGROUND.pop(_identity(old), None)
|
|
251
353
|
return
|
|
252
354
|
payload = _payload(kwargs)
|
|
253
355
|
if payload is None:
|
|
@@ -260,6 +362,9 @@ def _handle(event, **kwargs):
|
|
|
260
362
|
payload["prompt"] = _text(kwargs.get("user_message"))
|
|
261
363
|
_post("hermes_user_prompt_submit", payload)
|
|
262
364
|
elif event in ("pre_tool_call", "post_tool_call"):
|
|
365
|
+
task_id = kwargs.get("task_id")
|
|
366
|
+
if isinstance(task_id, str) and task_id:
|
|
367
|
+
_remember(_TASKS, sid, task_id)
|
|
263
368
|
payload["tool_name"] = _text(kwargs.get("tool_name"), 120)
|
|
264
369
|
call_id = _tool_id(sid, kwargs.get("tool_call_id"))
|
|
265
370
|
if call_id:
|
|
@@ -291,6 +396,8 @@ def _handle(event, **kwargs):
|
|
|
291
396
|
_TURNS.pop(sid, None)
|
|
292
397
|
_post("hermes_session_end", payload)
|
|
293
398
|
_CONTEXT.pop(sid, None)
|
|
399
|
+
_TASKS.pop(sid, None)
|
|
400
|
+
_BACKGROUND.pop(sid, None)
|
|
294
401
|
|
|
295
402
|
|
|
296
403
|
def register(ctx):
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentdeck/hooks",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": "22.x || 24.x || 26.x"
|
|
6
6
|
},
|
|
@@ -37,5 +37,8 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^25.6.0",
|
|
39
39
|
"typescript": "^6.0.3"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"yaml": "2.9.0"
|
|
40
43
|
}
|
|
41
44
|
}
|