awb-agent-manager 1.0.0

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 (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +246 -0
  3. package/dist/lib/agent-lockfile.d.ts +37 -0
  4. package/dist/lib/agent-lockfile.js +205 -0
  5. package/dist/lib/agent-lockfile.js.map +1 -0
  6. package/dist/lib/agent-manager-commands.d.ts +34 -0
  7. package/dist/lib/agent-manager-commands.js +531 -0
  8. package/dist/lib/agent-manager-commands.js.map +1 -0
  9. package/dist/lib/base-session-manager.d.ts +127 -0
  10. package/dist/lib/base-session-manager.js +667 -0
  11. package/dist/lib/base-session-manager.js.map +1 -0
  12. package/dist/lib/chat-attachment-prep.d.ts +35 -0
  13. package/dist/lib/chat-attachment-prep.js +180 -0
  14. package/dist/lib/chat-attachment-prep.js.map +1 -0
  15. package/dist/lib/chat-session-manager.d.ts +29 -0
  16. package/dist/lib/chat-session-manager.js +400 -0
  17. package/dist/lib/chat-session-manager.js.map +1 -0
  18. package/dist/lib/circuit-breaker.d.ts +34 -0
  19. package/dist/lib/circuit-breaker.js +146 -0
  20. package/dist/lib/circuit-breaker.js.map +1 -0
  21. package/dist/lib/cli-adapters/antigravity.d.ts +15 -0
  22. package/dist/lib/cli-adapters/antigravity.js +114 -0
  23. package/dist/lib/cli-adapters/antigravity.js.map +1 -0
  24. package/dist/lib/cli-adapters/base.d.ts +115 -0
  25. package/dist/lib/cli-adapters/base.js +111 -0
  26. package/dist/lib/cli-adapters/base.js.map +1 -0
  27. package/dist/lib/cli-adapters/claude.d.ts +19 -0
  28. package/dist/lib/cli-adapters/claude.js +233 -0
  29. package/dist/lib/cli-adapters/claude.js.map +1 -0
  30. package/dist/lib/cli-adapters/codex.d.ts +14 -0
  31. package/dist/lib/cli-adapters/codex.js +152 -0
  32. package/dist/lib/cli-adapters/codex.js.map +1 -0
  33. package/dist/lib/cli-adapters/deepseek.d.ts +15 -0
  34. package/dist/lib/cli-adapters/deepseek.js +70 -0
  35. package/dist/lib/cli-adapters/deepseek.js.map +1 -0
  36. package/dist/lib/cli-adapters/index.d.ts +8 -0
  37. package/dist/lib/cli-adapters/index.js +27 -0
  38. package/dist/lib/cli-adapters/index.js.map +1 -0
  39. package/dist/lib/cli-adapters/model-introspect.d.ts +3 -0
  40. package/dist/lib/cli-adapters/model-introspect.js +65 -0
  41. package/dist/lib/cli-adapters/model-introspect.js.map +1 -0
  42. package/dist/lib/cli-error-signatures.d.ts +9 -0
  43. package/dist/lib/cli-error-signatures.js +22 -0
  44. package/dist/lib/cli-error-signatures.js.map +1 -0
  45. package/dist/lib/cli-output-summary.d.ts +2 -0
  46. package/dist/lib/cli-output-summary.js +104 -0
  47. package/dist/lib/cli-output-summary.js.map +1 -0
  48. package/dist/lib/cli-resolver.d.ts +2 -0
  49. package/dist/lib/cli-resolver.js +177 -0
  50. package/dist/lib/cli-resolver.js.map +1 -0
  51. package/dist/lib/config.d.ts +13 -0
  52. package/dist/lib/config.js +124 -0
  53. package/dist/lib/config.js.map +1 -0
  54. package/dist/lib/constants.d.ts +36 -0
  55. package/dist/lib/constants.js +51 -0
  56. package/dist/lib/constants.js.map +1 -0
  57. package/dist/lib/environment-provisioner.d.ts +31 -0
  58. package/dist/lib/environment-provisioner.js +182 -0
  59. package/dist/lib/environment-provisioner.js.map +1 -0
  60. package/dist/lib/error-log-uploader.d.ts +19 -0
  61. package/dist/lib/error-log-uploader.js +138 -0
  62. package/dist/lib/error-log-uploader.js.map +1 -0
  63. package/dist/lib/event-dispatcher.d.ts +149 -0
  64. package/dist/lib/event-dispatcher.js +799 -0
  65. package/dist/lib/event-dispatcher.js.map +1 -0
  66. package/dist/lib/event-log-recorder.d.ts +11 -0
  67. package/dist/lib/event-log-recorder.js +77 -0
  68. package/dist/lib/event-log-recorder.js.map +1 -0
  69. package/dist/lib/event-stream.d.ts +26 -0
  70. package/dist/lib/event-stream.js +177 -0
  71. package/dist/lib/event-stream.js.map +1 -0
  72. package/dist/lib/fs-browser.d.ts +30 -0
  73. package/dist/lib/fs-browser.js +287 -0
  74. package/dist/lib/fs-browser.js.map +1 -0
  75. package/dist/lib/host-mcp/logs.d.ts +19 -0
  76. package/dist/lib/host-mcp/logs.js +102 -0
  77. package/dist/lib/host-mcp/logs.js.map +1 -0
  78. package/dist/lib/host-mcp/platform.d.ts +24 -0
  79. package/dist/lib/host-mcp/platform.js +133 -0
  80. package/dist/lib/host-mcp/platform.js.map +1 -0
  81. package/dist/lib/host-mcp/screens.d.ts +22 -0
  82. package/dist/lib/host-mcp/screens.js +172 -0
  83. package/dist/lib/host-mcp/screens.js.map +1 -0
  84. package/dist/lib/host-mcp/server.d.ts +3 -0
  85. package/dist/lib/host-mcp/server.js +233 -0
  86. package/dist/lib/host-mcp/server.js.map +1 -0
  87. package/dist/lib/host-mcp/tools.d.ts +172 -0
  88. package/dist/lib/host-mcp/tools.js +1241 -0
  89. package/dist/lib/host-mcp/tools.js.map +1 -0
  90. package/dist/lib/instance-heartbeat.d.ts +55 -0
  91. package/dist/lib/instance-heartbeat.js +118 -0
  92. package/dist/lib/instance-heartbeat.js.map +1 -0
  93. package/dist/lib/legacy-import.d.ts +17 -0
  94. package/dist/lib/legacy-import.js +70 -0
  95. package/dist/lib/legacy-import.js.map +1 -0
  96. package/dist/lib/logging.d.ts +3 -0
  97. package/dist/lib/logging.js +65 -0
  98. package/dist/lib/logging.js.map +1 -0
  99. package/dist/lib/managed-agent-context.d.ts +25 -0
  100. package/dist/lib/managed-agent-context.js +33 -0
  101. package/dist/lib/managed-agent-context.js.map +1 -0
  102. package/dist/lib/managed-agent-store.d.ts +34 -0
  103. package/dist/lib/managed-agent-store.js +160 -0
  104. package/dist/lib/managed-agent-store.js.map +1 -0
  105. package/dist/lib/managed-agents.d.ts +24 -0
  106. package/dist/lib/managed-agents.js +87 -0
  107. package/dist/lib/managed-agents.js.map +1 -0
  108. package/dist/lib/mcp-client.d.ts +8 -0
  109. package/dist/lib/mcp-client.js +122 -0
  110. package/dist/lib/mcp-client.js.map +1 -0
  111. package/dist/lib/orphan-cleanup.d.ts +6 -0
  112. package/dist/lib/orphan-cleanup.js +108 -0
  113. package/dist/lib/orphan-cleanup.js.map +1 -0
  114. package/dist/lib/presence-heartbeat.d.ts +8 -0
  115. package/dist/lib/presence-heartbeat.js +61 -0
  116. package/dist/lib/presence-heartbeat.js.map +1 -0
  117. package/dist/lib/prompts.d.ts +29 -0
  118. package/dist/lib/prompts.js +208 -0
  119. package/dist/lib/prompts.js.map +1 -0
  120. package/dist/lib/rest.d.ts +61 -0
  121. package/dist/lib/rest.js +307 -0
  122. package/dist/lib/rest.js.map +1 -0
  123. package/dist/lib/run-provisioner.d.ts +21 -0
  124. package/dist/lib/run-provisioner.js +115 -0
  125. package/dist/lib/run-provisioner.js.map +1 -0
  126. package/dist/lib/self-path.d.ts +7 -0
  127. package/dist/lib/self-path.js +29 -0
  128. package/dist/lib/self-path.js.map +1 -0
  129. package/dist/lib/self-update.d.ts +46 -0
  130. package/dist/lib/self-update.js +482 -0
  131. package/dist/lib/self-update.js.map +1 -0
  132. package/dist/lib/service-install.d.ts +23 -0
  133. package/dist/lib/service-install.js +673 -0
  134. package/dist/lib/service-install.js.map +1 -0
  135. package/dist/lib/setup.d.ts +16 -0
  136. package/dist/lib/setup.js +157 -0
  137. package/dist/lib/setup.js.map +1 -0
  138. package/dist/lib/subagent-manager.d.ts +84 -0
  139. package/dist/lib/subagent-manager.js +793 -0
  140. package/dist/lib/subagent-manager.js.map +1 -0
  141. package/dist/lib/subagent-monitor.d.ts +43 -0
  142. package/dist/lib/subagent-monitor.js +229 -0
  143. package/dist/lib/subagent-monitor.js.map +1 -0
  144. package/dist/lib/ticket-session-manager.d.ts +23 -0
  145. package/dist/lib/ticket-session-manager.js +471 -0
  146. package/dist/lib/ticket-session-manager.js.map +1 -0
  147. package/dist/lib/worktree-manager.d.ts +39 -0
  148. package/dist/lib/worktree-manager.js +226 -0
  149. package/dist/lib/worktree-manager.js.map +1 -0
  150. package/dist/main.d.ts +2 -0
  151. package/dist/main.js +670 -0
  152. package/dist/main.js.map +1 -0
  153. package/dist/package.json +57 -0
  154. package/package.json +57 -0
@@ -0,0 +1,115 @@
1
+ import { promises as fsp } from 'node:fs';
2
+ import { join, dirname, resolve, sep } from 'node:path';
3
+ import { execFile } from 'node:child_process';
4
+ import { AGENT_MANAGER_HOME } from './constants.js';
5
+ import { log } from './logging.js';
6
+ const RUN_GIT_TIMEOUT_MS = 20 * 60 * 1000;
7
+ function git(args, timeoutMs) {
8
+ return new Promise((resolve) => {
9
+ execFile('git', args, { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024, windowsHide: true }, (err, stdout, stderr) => {
10
+ resolve({
11
+ ok: !err,
12
+ code: err?.code ?? 0,
13
+ stdout: (stdout ?? '').toString(),
14
+ stderr: (stderr ?? err?.message ?? '').toString(),
15
+ });
16
+ });
17
+ });
18
+ }
19
+ async function pathExists(p) {
20
+ try {
21
+ await fsp.access(p);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ function tail(s, n = 1500) {
29
+ const t = (s || '').trim();
30
+ return t.length > n ? `…${t.slice(-n)}` : t;
31
+ }
32
+ export function parseRunProvision(raw) {
33
+ if (!raw || typeof raw !== 'object')
34
+ return null;
35
+ const o = raw;
36
+ const kind = o.kind === 'security' ? 'security' : o.kind === 'qa' ? 'qa' : null;
37
+ const run_id = typeof o.run_id === 'string' ? o.run_id : '';
38
+ const workspace_id = typeof o.workspace_id === 'string' ? o.workspace_id : '';
39
+ const folderRaw = typeof o.workspace_folder === 'string' ? o.workspace_folder : '';
40
+ if (!kind || !run_id || !workspace_id || !folderRaw)
41
+ return null;
42
+ const checkout_mode = o.checkout_mode === 'fresh' ? 'fresh' : 'reuse';
43
+ let repo = null;
44
+ const r = o.repo;
45
+ if (r && typeof r === 'object' && typeof r.url === 'string' && r.url.trim()) {
46
+ repo = { url: r.url.trim() };
47
+ if (typeof r.branch === 'string' && r.branch.trim())
48
+ repo.branch = r.branch.trim();
49
+ }
50
+ return { kind, run_id, workspace_id, workspace_folder: folderRaw, checkout_mode, repo };
51
+ }
52
+ export async function provisionRunWorkspace(p) {
53
+ const steps = [];
54
+ const rel = p.workspace_folder.replace(/^[/\\]+/, '');
55
+ const dir = join(AGENT_MANAGER_HOME, rel);
56
+ const gitDir = join(dir, '.git');
57
+ const home = resolve(AGENT_MANAGER_HOME);
58
+ const resolvedDir = resolve(dir);
59
+ if (!resolvedDir.startsWith(home + sep)) {
60
+ const error = `run workspace_folder escapes the agent home (path traversal): ${p.workspace_folder}`;
61
+ log(`[run-provision] ${p.kind} run=${p.run_id.slice(0, 8)} REJECTED: ${error}`);
62
+ return { ok: false, dir: resolvedDir, steps: [`reject ${rel}: path traversal`], error };
63
+ }
64
+ try {
65
+ if (p.checkout_mode === 'fresh') {
66
+ await fsp.rm(dir, { recursive: true, force: true });
67
+ steps.push(`wipe ${rel} → ok`);
68
+ }
69
+ if (!p.repo) {
70
+ await fsp.mkdir(dir, { recursive: true });
71
+ steps.push(`ensure folder ${rel} (no repo to clone) → ok`);
72
+ log(`[run-provision] ${p.kind} run=${p.run_id.slice(0, 8)} folder ready (no repo): ${dir}`);
73
+ return { ok: true, dir, steps };
74
+ }
75
+ const haveClone = p.checkout_mode === 'reuse' && (await pathExists(gitDir));
76
+ if (haveClone) {
77
+ const fetched = await git(['-C', dir, 'fetch', '--all', '--prune'], RUN_GIT_TIMEOUT_MS);
78
+ steps.push(`fetch ${rel} → ${fetched.ok ? 'ok' : `FAIL: ${tail(fetched.stderr)}`}`);
79
+ if (!fetched.ok)
80
+ throw new Error(`git fetch failed for ${rel}: ${tail(fetched.stderr)}`);
81
+ if (p.repo.branch) {
82
+ const co = await git(['-C', dir, 'checkout', p.repo.branch], RUN_GIT_TIMEOUT_MS);
83
+ steps.push(`checkout ${p.repo.branch} → ${co.ok ? 'ok' : `FAIL: ${tail(co.stderr)}`}`);
84
+ if (!co.ok)
85
+ throw new Error(`git checkout ${p.repo.branch} failed in ${rel}: ${tail(co.stderr)}`);
86
+ }
87
+ const pulled = await git(['-C', dir, 'pull', '--ff-only'], RUN_GIT_TIMEOUT_MS);
88
+ steps.push(`pull --ff-only ${rel} → ${pulled.ok ? 'ok' : `non-ff (left as-is): ${tail(pulled.stderr)}`}`);
89
+ }
90
+ else {
91
+ if (p.checkout_mode === 'reuse' && (await pathExists(dir))) {
92
+ await fsp.rm(dir, { recursive: true, force: true });
93
+ steps.push(`clear non-git ${rel} before clone → ok`);
94
+ }
95
+ await fsp.mkdir(dirname(dir), { recursive: true });
96
+ const args = ['clone'];
97
+ if (p.repo.branch)
98
+ args.push('--branch', p.repo.branch);
99
+ args.push(p.repo.url, dir);
100
+ log(`[run-provision] ${p.kind} run=${p.run_id.slice(0, 8)} clone ${p.repo.url} → ${dir}`);
101
+ const cloned = await git(args, RUN_GIT_TIMEOUT_MS);
102
+ steps.push(`clone ${p.repo.url} → ${rel} ${cloned.ok ? 'ok' : `FAIL: ${tail(cloned.stderr)}`}`);
103
+ if (!cloned.ok)
104
+ throw new Error(`git clone failed for ${p.repo.url}: ${tail(cloned.stderr)}`);
105
+ }
106
+ log(`[run-provision] ${p.kind} run=${p.run_id.slice(0, 8)} ready: ${dir}`);
107
+ return { ok: true, dir, steps };
108
+ }
109
+ catch (err) {
110
+ const error = String(err?.message ?? err);
111
+ log(`[run-provision] ${p.kind} run=${p.run_id.slice(0, 8)} FAILED: ${error}`);
112
+ return { ok: false, dir, steps, error };
113
+ }
114
+ }
115
+ //# sourceMappingURL=run-provisioner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-provisioner.js","sourceRoot":"","sources":["../../src/lib/run-provisioner.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAiCnC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAS1C,SAAS,GAAG,CAAC,IAAc,EAAE,SAAiB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,KAAK,EACL,IAAI,EACJ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EACrE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,OAAO,CAAC;gBACN,EAAE,EAAE,CAAC,GAAG;gBACR,IAAI,EAAG,GAAW,EAAE,IAAI,IAAI,CAAC;gBAC7B,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACjC,MAAM,EAAE,CAAC,MAAM,IAAK,GAAW,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;aAC3D,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,CAAS,EAAE,CAAC,GAAG,IAAI;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,aAAa,GAAoB,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvF,IAAI,IAAI,GAAuB,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAkD,CAAC;IAC/D,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5E,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC1F,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,CAAe;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAG3B,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAQjC,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,iEAAiE,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACpG,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAGZ,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,0BAA0B,CAAC,CAAC;YAC3D,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,IAAI,SAAS,EAAE,CAAC;YAEd,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACxF,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBACjF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,EAAE,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,cAAc,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5G,CAAC;aAAM,CAAC;YAIN,IAAI,CAAC,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3B,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAChG,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QAC1C,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface SelfCommand {
2
+ command: string;
3
+ prefixArgs: string[];
4
+ scriptPath: string;
5
+ isDevSource: boolean;
6
+ }
7
+ export declare function resolveSelfCommand(): SelfCommand;
@@ -0,0 +1,29 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ export function resolveSelfCommand() {
4
+ const script = process.argv[1] ? resolve(process.argv[1]) : '';
5
+ const isDevSource = script.endsWith('.ts') || script.endsWith('.tsx');
6
+ if (!script || !existsSync(script)) {
7
+ return {
8
+ command: 'awb-agent-manager',
9
+ prefixArgs: [],
10
+ scriptPath: script || '<unknown>',
11
+ isDevSource: false,
12
+ };
13
+ }
14
+ if (isDevSource) {
15
+ return {
16
+ command: 'tsx',
17
+ prefixArgs: [script],
18
+ scriptPath: script,
19
+ isDevSource: true,
20
+ };
21
+ }
22
+ return {
23
+ command: process.execPath || 'node',
24
+ prefixArgs: [script],
25
+ scriptPath: script,
26
+ isDevSource: false,
27
+ };
28
+ }
29
+ //# sourceMappingURL=self-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-path.js","sourceRoot":"","sources":["../../src/lib/self-path.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,UAAU,kBAAkB;IAIhC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAInC,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,MAAM,IAAI,WAAW;YACjC,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAGhB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAGD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;QACnC,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ export interface RepoInfo {
2
+ root: string;
3
+ branch: string;
4
+ }
5
+ export interface UpdateStatus {
6
+ current_version: string;
7
+ latest_version: string | null;
8
+ update_available: boolean;
9
+ repo_root: string | null;
10
+ branch: string | null;
11
+ last_checked_at: string | null;
12
+ last_error: string | null;
13
+ }
14
+ export interface SelfUpdateResult {
15
+ changed: boolean;
16
+ summary: string;
17
+ willReExec?: boolean;
18
+ }
19
+ export interface SelfUpdateOpts {
20
+ log?: (msg: string) => void;
21
+ noReExec?: boolean;
22
+ }
23
+ export declare function detectRepoRoot(startDir?: string): string | null;
24
+ export declare function readBundledVersion(): string;
25
+ export declare function compareSemver(a: string, b: string): number;
26
+ export declare class UpdateChecker {
27
+ #private;
28
+ constructor(opts?: {
29
+ intervalMs?: number;
30
+ log?: (msg: string) => void;
31
+ });
32
+ status(): UpdateStatus;
33
+ start(): void;
34
+ stop(): void;
35
+ checkNow(): Promise<UpdateStatus>;
36
+ }
37
+ export declare function _resetSelfUpdateInFlightForTests(): void;
38
+ export declare function runSelfUpdate(opts?: SelfUpdateOpts): Promise<SelfUpdateResult>;
39
+ export declare function isSystemdReExecPending(): boolean;
40
+ export declare function adoptRemoteBranch(repoRoot: string, branch: string, out: (msg: string) => void): Promise<{
41
+ ok: true;
42
+ } | {
43
+ ok: false;
44
+ summary: string;
45
+ }>;
46
+ export declare function restartManager(opts?: SelfUpdateOpts): Promise<SelfUpdateResult>;