awb-agent-manager 1.6.94 → 1.6.95

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.
@@ -0,0 +1,8 @@
1
+ export interface HermesAcpCommand {
2
+ command: string;
3
+ argsPrefix: string[];
4
+ }
5
+ export declare function resolveHermesAcpCommand(): Promise<HermesAcpCommand>;
6
+ export declare function resetHermesAcpCommandCache(): void;
7
+ export declare function parseHermesProfileList(output: string): string[];
8
+ export declare function listHermesProfiles(): Promise<string[]>;
@@ -0,0 +1,52 @@
1
+ import { runCapturedCommand } from '../probe-command.js';
2
+ let cachedAcpCommand = null;
3
+ export async function resolveHermesAcpCommand() {
4
+ const override = process.env.HERMES_ACP_COMMAND?.trim();
5
+ if (override)
6
+ return { command: override, argsPrefix: [] };
7
+ if (!cachedAcpCommand) {
8
+ cachedAcpCommand = (async () => {
9
+ const direct = await runCapturedCommand('hermes-acp', ['--help']);
10
+ if (direct.installed)
11
+ return { command: 'hermes-acp', argsPrefix: [] };
12
+ return { command: 'hermes', argsPrefix: ['acp'] };
13
+ })();
14
+ }
15
+ return cachedAcpCommand;
16
+ }
17
+ export function resetHermesAcpCommandCache() {
18
+ cachedAcpCommand = null;
19
+ }
20
+ const PROFILE_NAME_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
21
+ export function parseHermesProfileList(output) {
22
+ const names = new Set();
23
+ for (const rawLine of output.split(/\r?\n/)) {
24
+ const line = rawLine.trim();
25
+ if (!line)
26
+ continue;
27
+ if (/^[─-╿\s]+$/.test(line))
28
+ continue;
29
+ const firstToken = line.replace(/^◆\s*/, '').split(/\s+/)[0];
30
+ if (!firstToken)
31
+ continue;
32
+ const lower = firstToken.toLowerCase();
33
+ if (lower === 'profile' || lower === 'default')
34
+ continue;
35
+ if (!PROFILE_NAME_RE.test(firstToken))
36
+ continue;
37
+ names.add(lower);
38
+ }
39
+ return Array.from(names);
40
+ }
41
+ export async function listHermesProfiles() {
42
+ try {
43
+ const result = await runCapturedCommand('hermes', ['profile', 'list']);
44
+ if (!result.installed || !result.healthy)
45
+ return [];
46
+ return parseHermesProfileList(result.output);
47
+ }
48
+ catch {
49
+ return [];
50
+ }
51
+ }
52
+ //# sourceMappingURL=hermes-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-command.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAWzD,IAAI,gBAAgB,GAAqC,IAAI,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAGD,MAAM,UAAU,0BAA0B;IACxC,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAatD,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,SAAS;QAChD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACpD,OAAO,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -30,12 +30,19 @@ function buildEnvironment(options) {
30
30
  env[key] = process.env[key];
31
31
  }
32
32
  Object.assign(env, options.env ?? {});
33
- env.HERMES_HOME = options.stateDir;
33
+ if (!options.profile)
34
+ env.HERMES_HOME = options.stateDir;
34
35
  env.AWB_AGENT_ID = options.agentId;
35
36
  if (options.profile)
36
37
  env.HERMES_PROFILE = options.profile;
37
38
  return env;
38
39
  }
40
+ function buildArgs(options) {
41
+ const args = [...(options.args ?? [])];
42
+ if (options.profile)
43
+ args.push('--profile', options.profile);
44
+ return args;
45
+ }
39
46
  export class HermesProcess {
40
47
  agentId;
41
48
  stateDir;
@@ -61,7 +68,7 @@ export class HermesProcess {
61
68
  await fsp.mkdir(this.stateDir, { recursive: true, mode: 0o700 });
62
69
  const client = await AcpClient.spawn({
63
70
  command: this.#options.command,
64
- args: this.#options.args,
71
+ args: buildArgs(this.#options),
65
72
  env: buildEnvironment(this.#options),
66
73
  requestTimeoutMs: this.#options.requestTimeoutMs,
67
74
  onEvent: this.#options.onEvent,
@@ -1 +1 @@
1
- {"version":3,"file":"hermes-process.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hermes-process.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-process.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { join, resolve } from 'node:path';
2
2
  import { AcpProtocolError } from '../acp/acp-client.js';
3
3
  import { HermesProcess } from './hermes-process.js';
4
+ import { resolveHermesAcpCommand } from './hermes-command.js';
4
5
  import { HermesSessionOwnershipError, HermesSessionStore, } from './hermes-session-store.js';
5
6
  export { HermesSessionOwnershipError } from './hermes-session-store.js';
6
7
  export class HermesRuntime {
@@ -10,15 +11,25 @@ export class HermesRuntime {
10
11
  #processes = new Map();
11
12
  #starting = new Map();
12
13
  #loaded = false;
14
+ #resolvedCommand = null;
13
15
  constructor(options) {
14
16
  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
- };
17
+ this.#options = options;
20
18
  this.#sessions = new HermesSessionStore(join(this.#rootDir, 'sessions.json'));
21
19
  }
20
+ #resolveCommand() {
21
+ const explicit = this.#options.command?.trim();
22
+ if (explicit) {
23
+ return Promise.resolve({ command: explicit, args: this.#options.args ?? [] });
24
+ }
25
+ if (!this.#resolvedCommand) {
26
+ this.#resolvedCommand = resolveHermesAcpCommand().then(({ command, argsPrefix }) => ({
27
+ command,
28
+ args: [...argsPrefix, ...(this.#options.args ?? [])],
29
+ }));
30
+ }
31
+ return this.#resolvedCommand;
32
+ }
22
33
  async ensureAgent(options) {
23
34
  await this.#ensureLoaded();
24
35
  const existing = this.#processes.get(options.agentId);
@@ -32,12 +43,13 @@ export class HermesRuntime {
32
43
  const inFlight = this.#starting.get(options.agentId);
33
44
  if (inFlight)
34
45
  return inFlight;
46
+ const { command, args } = await this.#resolveCommand();
35
47
  const processOwner = new HermesProcess({
36
48
  agentId: options.agentId,
37
49
  stateDir: join(this.#rootDir, options.agentId, 'hermes'),
38
50
  profile: options.profile,
39
- command: this.#options.command,
40
- args: this.#options.args,
51
+ command,
52
+ args,
41
53
  requestTimeoutMs: this.#options.requestTimeoutMs,
42
54
  env: { ...this.#options.env, ...options.env },
43
55
  onEvent: (event) => this.#options.onEvent?.(options.agentId, event),
@@ -1 +1 @@
1
- {"version":3,"file":"hermes-runtime.js","sourceRoot":"","sources":["../../../../src/lib/runtime/hermes/hermes-runtime.ts"],"names":[],"mappings":"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"}
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,16 @@
1
+ export declare const PROBE_TIMEOUT_MS = 2500;
2
+ export declare const MAX_PROBE_OUTPUT: number;
3
+ export interface RuntimeProbeResult {
4
+ installed: boolean;
5
+ healthy: boolean;
6
+ version: string | null;
7
+ reason: string | null;
8
+ }
9
+ export interface CapturedCommandResult {
10
+ installed: boolean;
11
+ healthy: boolean;
12
+ reason: string | null;
13
+ output: string;
14
+ }
15
+ export declare function runCapturedCommand(command: string, args: string[]): Promise<CapturedCommandResult>;
16
+ export declare function probeRuntimeCommand(command: string, args: string[]): Promise<RuntimeProbeResult>;
@@ -0,0 +1,75 @@
1
+ import crossSpawn from 'cross-spawn';
2
+ export const PROBE_TIMEOUT_MS = 2_500;
3
+ export const MAX_PROBE_OUTPUT = 16 * 1024;
4
+ function firstVersionLine(output) {
5
+ const line = output
6
+ .split(/\r?\n/)
7
+ .map((value) => value.trim())
8
+ .find(Boolean);
9
+ return line ? line.slice(0, 160) : null;
10
+ }
11
+ export async function runCapturedCommand(command, args) {
12
+ return new Promise((resolve) => {
13
+ let settled = false;
14
+ let output = '';
15
+ let started = false;
16
+ const finish = (result) => {
17
+ if (settled)
18
+ return;
19
+ settled = true;
20
+ clearTimeout(timer);
21
+ resolve(result);
22
+ };
23
+ const child = crossSpawn(command, args, {
24
+ windowsHide: true,
25
+ stdio: ['ignore', 'pipe', 'pipe'],
26
+ });
27
+ child.once('spawn', () => {
28
+ started = true;
29
+ });
30
+ const append = (chunk) => {
31
+ if (output.length >= MAX_PROBE_OUTPUT)
32
+ return;
33
+ output += String(chunk).slice(0, MAX_PROBE_OUTPUT - output.length);
34
+ };
35
+ child.stdout?.on('data', append);
36
+ child.stderr?.on('data', append);
37
+ child.once('error', (error) => {
38
+ finish({
39
+ installed: false,
40
+ healthy: false,
41
+ reason: error.code === 'ENOENT' ? 'not_found' : 'not_executable',
42
+ output,
43
+ });
44
+ });
45
+ child.once('close', (code) => {
46
+ finish({
47
+ installed: true,
48
+ healthy: code === 0,
49
+ reason: code === 0 ? null : 'probe_failed',
50
+ output,
51
+ });
52
+ });
53
+ const timer = setTimeout(() => {
54
+ if (started)
55
+ child.kill();
56
+ finish({
57
+ installed: started,
58
+ healthy: false,
59
+ reason: 'probe_timeout',
60
+ output,
61
+ });
62
+ }, PROBE_TIMEOUT_MS);
63
+ timer.unref?.();
64
+ });
65
+ }
66
+ export async function probeRuntimeCommand(command, args) {
67
+ const result = await runCapturedCommand(command, args);
68
+ return {
69
+ installed: result.installed,
70
+ healthy: result.healthy,
71
+ version: result.installed ? firstVersionLine(result.output) : null,
72
+ reason: result.reason,
73
+ };
74
+ }
75
+ //# sourceMappingURL=probe-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-command.js","sourceRoot":"","sources":["../../../src/lib/runtime/probe-command.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  import type { RuntimeCapabilities } from './runtime-types.js';
2
- export interface RuntimeProbeResult {
3
- installed: boolean;
4
- healthy: boolean;
5
- version: string | null;
6
- reason: string | null;
7
- }
2
+ import { type RuntimeProbeResult } from './probe-command.js';
3
+ export type { RuntimeProbeResult } from './probe-command.js';
4
+ export { probeRuntimeCommand } from './probe-command.js';
8
5
  export interface RuntimeHealth extends RuntimeProbeResult {
9
6
  capabilities: RuntimeCapabilities;
7
+ profiles?: string[];
10
8
  }
11
9
  export type RuntimeCapabilityReport = Record<string, RuntimeHealth>;
12
10
  export interface RuntimeProbeCommand {
@@ -14,9 +12,9 @@ export interface RuntimeProbeCommand {
14
12
  args: string[];
15
13
  }
16
14
  export interface RuntimeDiscoveryOptions {
17
- resolveCommand?: (runtimeId: string) => RuntimeProbeCommand;
15
+ resolveCommand?: (runtimeId: string) => RuntimeProbeCommand | Promise<RuntimeProbeCommand>;
18
16
  probe?: (command: string, args: string[]) => Promise<RuntimeProbeResult>;
17
+ listHermesProfiles?: () => Promise<string[]>;
19
18
  }
20
- export declare function resolveRuntimeProbeCommand(runtimeId: string): RuntimeProbeCommand;
21
- export declare function probeRuntimeCommand(command: string, args: string[]): Promise<RuntimeProbeResult>;
19
+ export declare function resolveRuntimeProbeCommand(runtimeId: string): Promise<RuntimeProbeCommand>;
22
20
  export declare function discoverRuntimeCapabilities(options?: RuntimeDiscoveryOptions): Promise<RuntimeCapabilityReport>;
@@ -1,91 +1,34 @@
1
- import crossSpawn from 'cross-spawn';
2
1
  import { createAdapter } from '../cli-adapters/index.js';
3
2
  import { getRuntimeDescriptor, KNOWN_RUNTIME_IDS, } from './runtime-registry.js';
4
- const PROBE_TIMEOUT_MS = 2_500;
5
- const MAX_PROBE_OUTPUT = 16 * 1024;
6
- function firstVersionLine(output) {
7
- const line = output
8
- .split(/\r?\n/)
9
- .map((value) => value.trim())
10
- .find(Boolean);
11
- return line ? line.slice(0, 160) : null;
12
- }
13
- export function resolveRuntimeProbeCommand(runtimeId) {
3
+ import { probeRuntimeCommand } from './probe-command.js';
4
+ import { listHermesProfiles as defaultListHermesProfiles, resolveHermesAcpCommand, } from './hermes/hermes-command.js';
5
+ export { probeRuntimeCommand } from './probe-command.js';
6
+ export async function resolveRuntimeProbeCommand(runtimeId) {
14
7
  if (runtimeId === 'hermes') {
15
- return {
16
- command: process.env.HERMES_ACP_COMMAND?.trim() || 'hermes-acp',
17
- args: ['--help'],
18
- };
8
+ const { command, argsPrefix } = await resolveHermesAcpCommand();
9
+ return { command, args: [...argsPrefix, '--help'] };
19
10
  }
20
11
  return {
21
12
  command: createAdapter(runtimeId).resolveBin(),
22
13
  args: ['--version'],
23
14
  };
24
15
  }
25
- export async function probeRuntimeCommand(command, args) {
26
- return new Promise((resolve) => {
27
- let settled = false;
28
- let output = '';
29
- let started = false;
30
- const finish = (result) => {
31
- if (settled)
32
- return;
33
- settled = true;
34
- clearTimeout(timer);
35
- resolve(result);
36
- };
37
- const child = crossSpawn(command, args, {
38
- windowsHide: true,
39
- stdio: ['ignore', 'pipe', 'pipe'],
40
- });
41
- child.once('spawn', () => {
42
- started = true;
43
- });
44
- const append = (chunk) => {
45
- if (output.length >= MAX_PROBE_OUTPUT)
46
- return;
47
- output += String(chunk).slice(0, MAX_PROBE_OUTPUT - output.length);
48
- };
49
- child.stdout?.on('data', append);
50
- child.stderr?.on('data', append);
51
- child.once('error', (error) => {
52
- finish({
53
- installed: false,
54
- healthy: false,
55
- version: null,
56
- reason: error.code === 'ENOENT' ? 'not_found' : 'not_executable',
57
- });
58
- });
59
- child.once('close', (code) => {
60
- finish({
61
- installed: true,
62
- healthy: code === 0,
63
- version: firstVersionLine(output),
64
- reason: code === 0 ? null : 'probe_failed',
65
- });
66
- });
67
- const timer = setTimeout(() => {
68
- if (started)
69
- child.kill();
70
- finish({
71
- installed: started,
72
- healthy: false,
73
- version: firstVersionLine(output),
74
- reason: 'probe_timeout',
75
- });
76
- }, PROBE_TIMEOUT_MS);
77
- timer.unref?.();
78
- });
79
- }
80
16
  export async function discoverRuntimeCapabilities(options = {}) {
81
17
  const resolveCommand = options.resolveCommand ?? resolveRuntimeProbeCommand;
82
18
  const probe = options.probe ?? probeRuntimeCommand;
19
+ const listHermesProfiles = options.listHermesProfiles ?? defaultListHermesProfiles;
83
20
  const rows = await Promise.all(KNOWN_RUNTIME_IDS.map(async (runtimeId) => {
84
21
  const capabilities = getRuntimeDescriptor(runtimeId).capabilities;
85
22
  try {
86
- const { command, args } = resolveCommand(runtimeId);
23
+ const { command, args } = await resolveCommand(runtimeId);
87
24
  const result = await probe(command, args);
88
- return [runtimeId, { ...result, capabilities }];
25
+ const profiles = runtimeId === 'hermes' && result.installed
26
+ ? await listHermesProfiles().catch(() => [])
27
+ : undefined;
28
+ return [
29
+ runtimeId,
30
+ { ...result, capabilities, ...(profiles ? { profiles } : {}) },
31
+ ];
89
32
  }
90
33
  catch {
91
34
  return [
@@ -96,6 +39,7 @@ export async function discoverRuntimeCapabilities(options = {}) {
96
39
  version: null,
97
40
  reason: 'probe_unavailable',
98
41
  capabilities,
42
+ ...(runtimeId === 'hermes' ? { profiles: [] } : {}),
99
43
  },
100
44
  ];
101
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-health.js","sourceRoot":"","sources":["../../../src/lib/runtime/runtime-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-health.js","sourceRoot":"","sources":["../../../src/lib/runtime/runtime-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAA2B,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAC/C,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAuBzD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAChE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;QAC9C,IAAI,EAAE,CAAC,WAAW,CAAC;KACpB,CAAC;AACJ,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAmC,EAAE;IAErC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,0BAA0B,CAAC;IAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,CAAC;IACnD,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,yBAAyB,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACxC,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAG1C,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS;gBACzD,CAAC,CAAC,MAAM,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,SAAS;gBACT,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACtD,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,SAAS;gBACT;oBACE,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,mBAAmB;oBAC3B,YAAY;oBACZ,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpD;aACO,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awb-agent-manager",
3
- "version": "1.6.94",
3
+ "version": "1.6.95",
4
4
  "description": "Runtime Host for AWB agents, including Hermes ACP and managed CLI runtimes",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awb-agent-manager",
3
- "version": "1.6.94",
3
+ "version": "1.6.95",
4
4
  "description": "Runtime Host for AWB agents, including Hermes ACP and managed CLI runtimes",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",