awb-agent-manager 1.6.76 → 1.6.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +18 -9
  2. package/dist/lib/agent-manager-commands.d.ts +2 -0
  3. package/dist/lib/agent-manager-commands.js +31 -13
  4. package/dist/lib/agent-manager-commands.js.map +1 -1
  5. package/dist/lib/cli-adapters/index.d.ts +3 -0
  6. package/dist/lib/cli-adapters/index.js +12 -3
  7. package/dist/lib/cli-adapters/index.js.map +1 -1
  8. package/dist/lib/constants.d.ts +1 -0
  9. package/dist/lib/constants.js +1 -0
  10. package/dist/lib/constants.js.map +1 -1
  11. package/dist/lib/event-dispatcher.d.ts +4 -0
  12. package/dist/lib/event-dispatcher.js +146 -0
  13. package/dist/lib/event-dispatcher.js.map +1 -1
  14. package/dist/lib/instance-heartbeat.d.ts +3 -0
  15. package/dist/lib/instance-heartbeat.js +4 -0
  16. package/dist/lib/instance-heartbeat.js.map +1 -1
  17. package/dist/lib/managed-agent-context.d.ts +2 -0
  18. package/dist/lib/managed-agent-context.js +1 -0
  19. package/dist/lib/managed-agent-context.js.map +1 -1
  20. package/dist/lib/managed-agent-store.d.ts +2 -0
  21. package/dist/lib/managed-agent-store.js.map +1 -1
  22. package/dist/lib/orphan-cleanup.d.ts +1 -0
  23. package/dist/lib/orphan-cleanup.js +56 -1
  24. package/dist/lib/orphan-cleanup.js.map +1 -1
  25. package/dist/lib/outbox.d.ts +28 -0
  26. package/dist/lib/outbox.js +169 -0
  27. package/dist/lib/outbox.js.map +1 -0
  28. package/dist/lib/rest.d.ts +36 -2
  29. package/dist/lib/rest.js +78 -6
  30. package/dist/lib/rest.js.map +1 -1
  31. package/dist/lib/runtime/acp/acp-client.d.ts +29 -0
  32. package/dist/lib/runtime/acp/acp-client.js +227 -0
  33. package/dist/lib/runtime/acp/acp-client.js.map +1 -0
  34. package/dist/lib/runtime/acp/acp-types.d.ts +118 -0
  35. package/dist/lib/runtime/acp/acp-types.js +2 -0
  36. package/dist/lib/runtime/acp/acp-types.js.map +1 -0
  37. package/dist/lib/runtime/acp/json-rpc-peer.d.ts +34 -0
  38. package/dist/lib/runtime/acp/json-rpc-peer.js +262 -0
  39. package/dist/lib/runtime/acp/json-rpc-peer.js.map +1 -0
  40. package/dist/lib/runtime/collaboration-governor.d.ts +29 -0
  41. package/dist/lib/runtime/collaboration-governor.js +125 -0
  42. package/dist/lib/runtime/collaboration-governor.js.map +1 -0
  43. package/dist/lib/runtime/hermes/hermes-process.d.ts +26 -0
  44. package/dist/lib/runtime/hermes/hermes-process.js +128 -0
  45. package/dist/lib/runtime/hermes/hermes-process.js.map +1 -0
  46. package/dist/lib/runtime/hermes/hermes-runtime.d.ts +38 -0
  47. package/dist/lib/runtime/hermes/hermes-runtime.js +146 -0
  48. package/dist/lib/runtime/hermes/hermes-runtime.js.map +1 -0
  49. package/dist/lib/runtime/hermes/hermes-session-store.d.ts +29 -0
  50. package/dist/lib/runtime/hermes/hermes-session-store.js +96 -0
  51. package/dist/lib/runtime/hermes/hermes-session-store.js.map +1 -0
  52. package/dist/lib/runtime/runtime-events.d.ts +48 -0
  53. package/dist/lib/runtime/runtime-events.js +2 -0
  54. package/dist/lib/runtime/runtime-events.js.map +1 -0
  55. package/dist/lib/runtime/runtime-health.d.ts +22 -0
  56. package/dist/lib/runtime/runtime-health.js +105 -0
  57. package/dist/lib/runtime/runtime-health.js.map +1 -0
  58. package/dist/lib/runtime/runtime-registry.d.ts +7 -0
  59. package/dist/lib/runtime/runtime-registry.js +142 -0
  60. package/dist/lib/runtime/runtime-registry.js.map +1 -0
  61. package/dist/lib/runtime/runtime-supervisor.d.ts +54 -0
  62. package/dist/lib/runtime/runtime-supervisor.js +234 -0
  63. package/dist/lib/runtime/runtime-supervisor.js.map +1 -0
  64. package/dist/lib/runtime/runtime-types.d.ts +36 -0
  65. package/dist/lib/runtime/runtime-types.js +11 -0
  66. package/dist/lib/runtime/runtime-types.js.map +1 -0
  67. package/dist/lib/service-install.js +1 -1
  68. package/dist/lib/setup.js +1 -1
  69. package/dist/lib/setup.js.map +1 -1
  70. package/dist/lib/skills/skill-materializer.d.ts +23 -0
  71. package/dist/lib/skills/skill-materializer.js +82 -0
  72. package/dist/lib/skills/skill-materializer.js.map +1 -0
  73. package/dist/lib/ticket-ref-capture.js +1 -0
  74. package/dist/lib/ticket-ref-capture.js.map +1 -1
  75. package/dist/main.js +110 -19
  76. package/dist/main.js.map +1 -1
  77. package/dist/package.json +2 -2
  78. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-rpc-peer.js","sourceRoot":"","sources":["../../../../src/lib/runtime/acp/json-rpc-peer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { AcpPermissionRequest } from './acp/acp-types.js';
2
+ import type { RuntimeEvent } from './runtime-events.js';
3
+ import type { AgentRuntimeConfig } from './runtime-types.js';
4
+ export declare class CollaborationPolicyError extends Error {
5
+ readonly code = "runtime_collaboration_denied";
6
+ constructor(message: string);
7
+ }
8
+ export declare function isChildTool(value: {
9
+ title?: string;
10
+ kind?: string;
11
+ }): boolean;
12
+ interface ChildRequest {
13
+ childId: string;
14
+ title: string;
15
+ depth: number;
16
+ tools: string[];
17
+ skills: string[];
18
+ }
19
+ export declare class CollaborationGovernor {
20
+ #private;
21
+ assertStrategy(config: AgentRuntimeConfig, hostHealthy: boolean): void;
22
+ reservePermission(sessionKey: string, config: AgentRuntimeConfig, request: AcpPermissionRequest, hostHealthy: boolean): ChildRequest | null;
23
+ observeStarted(sessionKey: string, config: AgentRuntimeConfig, event: Extract<RuntimeEvent, {
24
+ type: 'child_started';
25
+ }>, hostHealthy: boolean): ChildRequest;
26
+ finish(sessionKey: string, childId: string): void;
27
+ clear(sessionKey: string): void;
28
+ }
29
+ export {};
@@ -0,0 +1,125 @@
1
+ export class CollaborationPolicyError extends Error {
2
+ code = 'runtime_collaboration_denied';
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'CollaborationPolicyError';
6
+ }
7
+ }
8
+ export function isChildTool(value) {
9
+ const marker = `${value.kind || ''} ${value.title || ''}`.toLowerCase();
10
+ return /\b(delegate|delegation|subagent|sub-agent|spawn[_ -]?agent|swarm)\b/.test(marker);
11
+ }
12
+ const CHILD_FORBIDDEN_TOOLS = new Set([
13
+ 'move_ticket',
14
+ 'move_ticket_to_board',
15
+ 'record_agreement',
16
+ 'propose_move',
17
+ 'archive_ticket',
18
+ 'unarchive_ticket',
19
+ 'run_action',
20
+ ]);
21
+ function objectValue(value) {
22
+ return value && typeof value === 'object' && !Array.isArray(value)
23
+ ? value
24
+ : {};
25
+ }
26
+ function strings(value) {
27
+ return Array.isArray(value)
28
+ ? value.filter((entry) => typeof entry === 'string')
29
+ .map((entry) => entry.trim())
30
+ .filter(Boolean)
31
+ .slice(0, 100)
32
+ : [];
33
+ }
34
+ function integer(value, fallback, min, max) {
35
+ return Number.isInteger(value)
36
+ ? Math.min(max, Math.max(min, Number(value)))
37
+ : fallback;
38
+ }
39
+ function requestFrom(value) {
40
+ const record = value;
41
+ const raw = objectValue(record.input ?? record.rawInput ?? record.raw_input);
42
+ return {
43
+ childId: String(record.toolCallId ?? record.childRunId ?? ''),
44
+ title: String(value.title || '').slice(0, 240),
45
+ depth: integer(raw.depth ?? raw.child_depth, 1, 1, 100),
46
+ tools: strings(raw.tools ?? raw.allowed_tools),
47
+ skills: strings(raw.skills ?? raw.skill_ids),
48
+ };
49
+ }
50
+ function configuredSet(extra, key) {
51
+ return new Set(strings(extra[key]));
52
+ }
53
+ export class CollaborationGovernor {
54
+ #sessions = new Map();
55
+ assertStrategy(config, hostHealthy) {
56
+ if (config.strategy === 'swarm' && !hostHealthy) {
57
+ throw new CollaborationPolicyError('Swarm requires a healthy Hermes ACP capability probe');
58
+ }
59
+ const configuredTools = strings(config.extra?.allowed_child_tools);
60
+ const forbidden = configuredTools.find((tool) => CHILD_FORBIDDEN_TOOLS.has(tool));
61
+ if (forbidden) {
62
+ throw new CollaborationPolicyError(`Child tool ${forbidden} can perform a terminal or consensus action`);
63
+ }
64
+ }
65
+ reservePermission(sessionKey, config, request, hostHealthy) {
66
+ if (!isChildTool(request.toolCall))
67
+ return null;
68
+ return this.#reserve(sessionKey, config, requestFrom(request.toolCall), hostHealthy);
69
+ }
70
+ observeStarted(sessionKey, config, event, hostHealthy) {
71
+ return this.#reserve(sessionKey, config, requestFrom(event), hostHealthy);
72
+ }
73
+ finish(sessionKey, childId) {
74
+ this.#sessions.get(sessionKey)?.active.delete(childId);
75
+ }
76
+ clear(sessionKey) {
77
+ this.#sessions.delete(sessionKey);
78
+ }
79
+ #reserve(sessionKey, config, request, hostHealthy) {
80
+ if (config.strategy === 'single') {
81
+ throw new CollaborationPolicyError('The single strategy forbids runtime child creation');
82
+ }
83
+ this.assertStrategy(config, hostHealthy);
84
+ const state = this.#sessions.get(sessionKey) ?? {
85
+ total: 0,
86
+ active: new Map(),
87
+ };
88
+ const duplicate = state.active.get(request.childId);
89
+ if (duplicate)
90
+ return duplicate;
91
+ const extra = config.extra ?? {};
92
+ const maxChildren = config.max_children ?? 3;
93
+ const maxIterations = config.max_iterations ?? maxChildren;
94
+ const maxConcurrency = integer(extra.max_concurrency, Math.min(maxChildren, 3), 1, maxChildren);
95
+ const maxDepth = integer(extra.max_depth, 2, 1, 8);
96
+ if (request.depth > maxDepth) {
97
+ throw new CollaborationPolicyError(`Child depth ${request.depth} exceeds max_depth ${maxDepth}`);
98
+ }
99
+ if (state.active.size >= maxConcurrency) {
100
+ throw new CollaborationPolicyError(`Child concurrency exceeds max_concurrency ${maxConcurrency}`);
101
+ }
102
+ if (state.total >= maxChildren) {
103
+ throw new CollaborationPolicyError(`Child budget exceeds max_children ${maxChildren}`);
104
+ }
105
+ if (state.total >= maxIterations) {
106
+ throw new CollaborationPolicyError(`Delegation loop exceeds max_iterations ${maxIterations}`);
107
+ }
108
+ const toolSubset = configuredSet(extra, 'allowed_child_tools');
109
+ const skillSubset = configuredSet(extra, 'allowed_child_skills');
110
+ if (request.tools.some((tool) => !toolSubset.has(tool))) {
111
+ throw new CollaborationPolicyError('Child requested a tool outside allowed_child_tools');
112
+ }
113
+ if (request.tools.some((tool) => CHILD_FORBIDDEN_TOOLS.has(tool))) {
114
+ throw new CollaborationPolicyError('Children cannot perform terminal ticket transitions or consensus actions');
115
+ }
116
+ if (request.skills.some((skill) => !skillSubset.has(skill))) {
117
+ throw new CollaborationPolicyError('Child requested a skill outside allowed_child_skills');
118
+ }
119
+ state.total++;
120
+ state.active.set(request.childId, request);
121
+ this.#sessions.set(sessionKey, state);
122
+ return request;
123
+ }
124
+ }
125
+ //# sourceMappingURL=collaboration-governor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-governor.js","sourceRoot":"","sources":["../../../src/lib/runtime/collaboration-governor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type AcpClientSpawnOptions } from '../acp/acp-client.js';
2
+ import type { AcpLoadSessionRequest, AcpNewSessionRequest, AcpNewSessionResponse, AcpPromptRequest, AcpPromptResponse } from '../acp/acp-types.js';
3
+ export interface HermesProcessOptions extends Pick<AcpClientSpawnOptions, 'command' | 'args' | 'requestTimeoutMs' | 'onEvent' | 'onPermissionRequest' | 'onStderr'> {
4
+ agentId: string;
5
+ stateDir: string;
6
+ profile?: string;
7
+ env?: NodeJS.ProcessEnv;
8
+ }
9
+ export declare class HermesProcess {
10
+ #private;
11
+ readonly agentId: string;
12
+ readonly stateDir: string;
13
+ readonly profile?: string;
14
+ constructor(options: HermesProcessOptions);
15
+ get healthy(): boolean;
16
+ get processPid(): number | null;
17
+ start(): Promise<this>;
18
+ newSession(request: AcpNewSessionRequest): Promise<AcpNewSessionResponse>;
19
+ loadSession(request: AcpLoadSessionRequest): Promise<void>;
20
+ prompt(request: AcpPromptRequest, options?: {
21
+ signal?: AbortSignal;
22
+ }): Promise<AcpPromptResponse>;
23
+ cancel(sessionId: string): Promise<void>;
24
+ closeSession(sessionId: string): Promise<void>;
25
+ stop(): Promise<void>;
26
+ }
@@ -0,0 +1,128 @@
1
+ import { promises as fsp } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { terminateDetachedProcessTree } from '../../process-tree.js';
4
+ import { AcpClient, } from '../acp/acp-client.js';
5
+ const SAFE_INHERITED_ENV = new Set([
6
+ 'PATH',
7
+ 'PATHEXT',
8
+ 'SYSTEMROOT',
9
+ 'WINDIR',
10
+ 'COMSPEC',
11
+ 'TEMP',
12
+ 'TMP',
13
+ 'TMPDIR',
14
+ 'HOME',
15
+ 'USERPROFILE',
16
+ 'APPDATA',
17
+ 'LOCALAPPDATA',
18
+ 'LANG',
19
+ 'LC_ALL',
20
+ 'SSL_CERT_FILE',
21
+ 'SSL_CERT_DIR',
22
+ 'HTTP_PROXY',
23
+ 'HTTPS_PROXY',
24
+ 'NO_PROXY',
25
+ ]);
26
+ function buildEnvironment(options) {
27
+ const env = {};
28
+ for (const key of SAFE_INHERITED_ENV) {
29
+ if (process.env[key] !== undefined)
30
+ env[key] = process.env[key];
31
+ }
32
+ Object.assign(env, options.env ?? {});
33
+ env.HERMES_HOME = options.stateDir;
34
+ env.AWB_AGENT_ID = options.agentId;
35
+ if (options.profile)
36
+ env.HERMES_PROFILE = options.profile;
37
+ return env;
38
+ }
39
+ export class HermesProcess {
40
+ agentId;
41
+ stateDir;
42
+ profile;
43
+ #options;
44
+ #client = null;
45
+ #healthy = false;
46
+ constructor(options) {
47
+ this.agentId = options.agentId;
48
+ this.stateDir = options.stateDir;
49
+ this.profile = options.profile;
50
+ this.#options = options;
51
+ }
52
+ get healthy() {
53
+ return this.#healthy;
54
+ }
55
+ get processPid() {
56
+ return this.#client?.process.pid ?? null;
57
+ }
58
+ async start() {
59
+ if (this.#client && this.#healthy)
60
+ return this;
61
+ await fsp.mkdir(this.stateDir, { recursive: true, mode: 0o700 });
62
+ const client = await AcpClient.spawn({
63
+ command: this.#options.command,
64
+ args: this.#options.args,
65
+ env: buildEnvironment(this.#options),
66
+ requestTimeoutMs: this.#options.requestTimeoutMs,
67
+ onEvent: this.#options.onEvent,
68
+ onPermissionRequest: this.#options.onPermissionRequest,
69
+ onStderr: this.#options.onStderr,
70
+ spawnOptions: {
71
+ detached: process.platform !== 'win32',
72
+ },
73
+ });
74
+ this.#client = client;
75
+ try {
76
+ await client.initialize({
77
+ clientInfo: { name: 'awb-runtime-host', version: '1' },
78
+ clientCapabilities: {
79
+ fs: { readTextFile: false, writeTextFile: false },
80
+ terminal: false,
81
+ },
82
+ });
83
+ const pid = client.process.pid;
84
+ if (!pid)
85
+ throw new Error('Hermes ACP process did not expose a pid');
86
+ await fsp.writeFile(join(this.stateDir, 'runtime-owner.json'), JSON.stringify({ pid, ownerPid: process.pid, agentId: this.agentId }), { mode: 0o600 });
87
+ this.#healthy = true;
88
+ return this;
89
+ }
90
+ catch (error) {
91
+ client.close();
92
+ this.#client = null;
93
+ throw error;
94
+ }
95
+ }
96
+ async newSession(request) {
97
+ return this.#requireClient().newSession(request);
98
+ }
99
+ async loadSession(request) {
100
+ await this.#requireClient().loadSession(request);
101
+ }
102
+ prompt(request, options = {}) {
103
+ return this.#requireClient().prompt(request, options);
104
+ }
105
+ cancel(sessionId) {
106
+ return this.#requireClient().cancel(sessionId);
107
+ }
108
+ closeSession(sessionId) {
109
+ return this.#requireClient().closeSession(sessionId);
110
+ }
111
+ async stop() {
112
+ const client = this.#client;
113
+ this.#client = null;
114
+ this.#healthy = false;
115
+ const pid = client?.process.pid;
116
+ client?.close();
117
+ if (pid)
118
+ await terminateDetachedProcessTree(pid, 250);
119
+ await fsp.unlink(join(this.stateDir, 'runtime-owner.json')).catch(() => undefined);
120
+ }
121
+ #requireClient() {
122
+ if (!this.#client || !this.#healthy) {
123
+ throw new Error(`Hermes process for Agent ${this.agentId} is not healthy`);
124
+ }
125
+ return this.#client;
126
+ }
127
+ }
128
+ //# sourceMappingURL=hermes-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-process.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { AcpContentBlock, AcpMcpServer, AcpPermissionOutcome, AcpPermissionRequest, AcpPromptResponse } from '../acp/acp-types.js';
2
+ import type { RuntimeEvent } from '../runtime-events.js';
3
+ import { HermesProcess } from './hermes-process.js';
4
+ import { type HermesSessionIdentity, type HermesSessionRecord } from './hermes-session-store.js';
5
+ export { HermesSessionOwnershipError } from './hermes-session-store.js';
6
+ export interface HermesRuntimeOptions {
7
+ rootDir: string;
8
+ command?: string;
9
+ args?: string[];
10
+ requestTimeoutMs?: number;
11
+ env?: NodeJS.ProcessEnv;
12
+ onEvent?: (agentId: string, event: RuntimeEvent) => void;
13
+ onPermissionRequest?: (agentId: string, request: AcpPermissionRequest) => AcpPermissionOutcome | Promise<AcpPermissionOutcome>;
14
+ onStderr?: (agentId: string, line: string) => void;
15
+ }
16
+ export interface HermesAgentOptions {
17
+ agentId: string;
18
+ profile?: string;
19
+ env?: NodeJS.ProcessEnv;
20
+ }
21
+ export interface HermesRunIdentity extends HermesSessionIdentity {
22
+ mcpServers?: AcpMcpServer[];
23
+ }
24
+ export declare class HermesRuntime {
25
+ #private;
26
+ constructor(options: HermesRuntimeOptions);
27
+ ensureAgent(options: HermesAgentOptions): Promise<HermesProcess>;
28
+ openSession(identity: HermesRunIdentity): Promise<HermesSessionRecord>;
29
+ restoreSession(identity: HermesRunIdentity): Promise<HermesSessionRecord>;
30
+ getSession(agentId: string, runId: string): HermesSessionRecord | null;
31
+ promptRun(agentId: string, runId: string, prompt: AcpContentBlock[], options?: {
32
+ signal?: AbortSignal;
33
+ }): Promise<AcpPromptResponse>;
34
+ cancelRun(agentId: string, runId: string): Promise<void>;
35
+ closeRun(agentId: string, runId: string): Promise<void>;
36
+ stopAgent(agentId: string): Promise<boolean>;
37
+ stopAll(): Promise<void>;
38
+ }
@@ -0,0 +1,146 @@
1
+ import { join, resolve } from 'node:path';
2
+ import { AcpProtocolError } from '../acp/acp-client.js';
3
+ import { HermesProcess } from './hermes-process.js';
4
+ import { HermesSessionOwnershipError, HermesSessionStore, } from './hermes-session-store.js';
5
+ export { HermesSessionOwnershipError } from './hermes-session-store.js';
6
+ export class HermesRuntime {
7
+ #options;
8
+ #rootDir;
9
+ #sessions;
10
+ #processes = new Map();
11
+ #starting = new Map();
12
+ #loaded = false;
13
+ constructor(options) {
14
+ this.#rootDir = resolve(options.rootDir);
15
+ this.#options = {
16
+ ...options,
17
+ command: options.command?.trim() || process.env.HERMES_ACP_COMMAND?.trim() || 'hermes-acp',
18
+ args: options.args ?? [],
19
+ };
20
+ this.#sessions = new HermesSessionStore(join(this.#rootDir, 'sessions.json'));
21
+ }
22
+ async ensureAgent(options) {
23
+ await this.#ensureLoaded();
24
+ const existing = this.#processes.get(options.agentId);
25
+ if (existing) {
26
+ if (options.profile !== undefined
27
+ && (existing.profile ?? '') !== options.profile) {
28
+ throw new Error(`Hermes profile changed for running Agent ${options.agentId}`);
29
+ }
30
+ return existing;
31
+ }
32
+ const inFlight = this.#starting.get(options.agentId);
33
+ if (inFlight)
34
+ return inFlight;
35
+ const processOwner = new HermesProcess({
36
+ agentId: options.agentId,
37
+ stateDir: join(this.#rootDir, options.agentId, 'hermes'),
38
+ profile: options.profile,
39
+ command: this.#options.command,
40
+ args: this.#options.args,
41
+ requestTimeoutMs: this.#options.requestTimeoutMs,
42
+ env: { ...this.#options.env, ...options.env },
43
+ onEvent: (event) => this.#options.onEvent?.(options.agentId, event),
44
+ onPermissionRequest: (request) => this.#options.onPermissionRequest
45
+ ? this.#options.onPermissionRequest(options.agentId, request)
46
+ : { outcome: 'cancelled' },
47
+ onStderr: (line) => this.#options.onStderr?.(options.agentId, line),
48
+ });
49
+ const starting = processOwner.start().then(() => {
50
+ this.#processes.set(options.agentId, processOwner);
51
+ this.#starting.delete(options.agentId);
52
+ return processOwner;
53
+ }).catch((error) => {
54
+ this.#starting.delete(options.agentId);
55
+ throw error;
56
+ });
57
+ this.#starting.set(options.agentId, starting);
58
+ return starting;
59
+ }
60
+ async openSession(identity) {
61
+ await this.#ensureLoaded();
62
+ const existing = this.#sessions.get(identity.runId);
63
+ if (existing)
64
+ return this.restoreSession(identity);
65
+ const processOwner = await this.ensureAgent({ agentId: identity.agentId });
66
+ const response = await processOwner.newSession({
67
+ cwd: resolve(identity.cwd),
68
+ mcpServers: identity.mcpServers ?? [],
69
+ });
70
+ return this.#sessions.set(identity, response.sessionId);
71
+ }
72
+ async restoreSession(identity) {
73
+ await this.#ensureLoaded();
74
+ const record = this.#sessions.require(identity);
75
+ const processOwner = await this.ensureAgent({ agentId: identity.agentId });
76
+ await processOwner.loadSession({
77
+ sessionId: record.sessionId,
78
+ cwd: resolve(identity.cwd),
79
+ mcpServers: identity.mcpServers ?? [],
80
+ });
81
+ return record;
82
+ }
83
+ getSession(agentId, runId) {
84
+ const record = this.#sessions.get(runId);
85
+ return record?.agentId === agentId ? record : null;
86
+ }
87
+ async promptRun(agentId, runId, prompt, options = {}) {
88
+ const record = this.#sessions.require({
89
+ ...(this.#sessions.get(runId) ?? {
90
+ runId,
91
+ leaseId: '',
92
+ cwd: '',
93
+ }),
94
+ agentId,
95
+ });
96
+ const processOwner = await this.ensureAgent({ agentId });
97
+ return processOwner.prompt({ sessionId: record.sessionId, prompt }, options);
98
+ }
99
+ async cancelRun(agentId, runId) {
100
+ await this.#ensureLoaded();
101
+ const record = this.#sessions.get(runId);
102
+ if (!record || record.agentId !== agentId) {
103
+ throw new HermesSessionOwnershipError('hermes_session_owner_mismatch', `Run ${runId} is not owned by Agent ${agentId}`);
104
+ }
105
+ const processOwner = await this.ensureAgent({ agentId });
106
+ await processOwner.cancel(record.sessionId);
107
+ }
108
+ async closeRun(agentId, runId) {
109
+ await this.#ensureLoaded();
110
+ const record = this.#sessions.get(runId);
111
+ if (!record || record.agentId !== agentId)
112
+ return;
113
+ const processOwner = await this.ensureAgent({ agentId });
114
+ try {
115
+ await processOwner.closeSession(record.sessionId);
116
+ }
117
+ catch (error) {
118
+ if (!(error instanceof AcpProtocolError && error.rpcCode === -32601)) {
119
+ throw error;
120
+ }
121
+ }
122
+ finally {
123
+ await this.#sessions.delete(runId);
124
+ }
125
+ }
126
+ async stopAgent(agentId) {
127
+ const processOwner = this.#processes.get(agentId);
128
+ if (!processOwner)
129
+ return false;
130
+ this.#processes.delete(agentId);
131
+ await processOwner.stop();
132
+ return true;
133
+ }
134
+ async stopAll() {
135
+ const processes = Array.from(this.#processes.values());
136
+ this.#processes.clear();
137
+ await Promise.allSettled(processes.map((owner) => owner.stop()));
138
+ }
139
+ async #ensureLoaded() {
140
+ if (this.#loaded)
141
+ return;
142
+ await this.#sessions.load();
143
+ this.#loaded = true;
144
+ }
145
+ }
146
+ //# sourceMappingURL=hermes-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-runtime.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type HermesSessionOwnershipErrorCode = 'hermes_session_not_found' | 'hermes_session_owner_mismatch' | 'hermes_session_lease_mismatch' | 'hermes_session_cwd_mismatch';
2
+ export declare class HermesSessionOwnershipError extends Error {
3
+ readonly code: HermesSessionOwnershipErrorCode;
4
+ constructor(code: HermesSessionOwnershipErrorCode, message: string);
5
+ }
6
+ export interface HermesSessionRecord {
7
+ runId: string;
8
+ agentId: string;
9
+ sessionId: string;
10
+ leaseId: string;
11
+ cwd: string;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ }
15
+ export interface HermesSessionIdentity {
16
+ runId: string;
17
+ agentId: string;
18
+ leaseId: string;
19
+ cwd: string;
20
+ }
21
+ export declare class HermesSessionStore {
22
+ #private;
23
+ constructor(path: string);
24
+ load(): Promise<void>;
25
+ get(runId: string): HermesSessionRecord | null;
26
+ require(identity: HermesSessionIdentity): HermesSessionRecord;
27
+ set(identity: HermesSessionIdentity, sessionId: string): Promise<HermesSessionRecord>;
28
+ delete(runId: string): Promise<boolean>;
29
+ }