airlock-bot 0.2.37 → 0.2.38

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 (243) hide show
  1. package/README.md +26 -8
  2. package/dist/activity/stream.d.ts +29 -0
  3. package/dist/activity/stream.d.ts.map +1 -0
  4. package/dist/activity/stream.js +36 -0
  5. package/dist/activity/stream.js.map +1 -0
  6. package/dist/airlock/context.d.ts +12 -0
  7. package/dist/airlock/context.d.ts.map +1 -0
  8. package/dist/airlock/context.js +32 -0
  9. package/dist/airlock/context.js.map +1 -0
  10. package/dist/airlock/tools.d.ts +7 -0
  11. package/dist/airlock/tools.d.ts.map +1 -0
  12. package/dist/airlock/tools.js +13 -0
  13. package/dist/airlock/tools.js.map +1 -0
  14. package/dist/allowlist/engine.d.ts +12 -0
  15. package/dist/allowlist/engine.d.ts.map +1 -1
  16. package/dist/allowlist/engine.js +40 -15
  17. package/dist/allowlist/engine.js.map +1 -1
  18. package/dist/audit/api.d.ts +2 -0
  19. package/dist/audit/api.d.ts.map +1 -1
  20. package/dist/audit/api.js.map +1 -1
  21. package/dist/audit/db.d.ts +16 -0
  22. package/dist/audit/db.d.ts.map +1 -1
  23. package/dist/audit/db.js +73 -0
  24. package/dist/audit/db.js.map +1 -1
  25. package/dist/audit/logger.d.ts +8 -1
  26. package/dist/audit/logger.d.ts.map +1 -1
  27. package/dist/audit/logger.js +21 -0
  28. package/dist/audit/logger.js.map +1 -1
  29. package/dist/backend/airlock-adapter.d.ts +22 -0
  30. package/dist/backend/airlock-adapter.d.ts.map +1 -0
  31. package/dist/backend/airlock-adapter.js +136 -0
  32. package/dist/backend/airlock-adapter.js.map +1 -0
  33. package/dist/backend/factory.d.ts +5 -1
  34. package/dist/backend/factory.d.ts.map +1 -1
  35. package/dist/backend/factory.js +5 -5
  36. package/dist/backend/factory.js.map +1 -1
  37. package/dist/backend/mcp-adapter.d.ts.map +1 -1
  38. package/dist/backend/mcp-adapter.js +28 -4
  39. package/dist/backend/mcp-adapter.js.map +1 -1
  40. package/dist/backend/openapi/adapter.d.ts.map +1 -1
  41. package/dist/backend/openapi/adapter.js +33 -13
  42. package/dist/backend/openapi/adapter.js.map +1 -1
  43. package/dist/config/loader.d.ts +12 -1
  44. package/dist/config/loader.d.ts.map +1 -1
  45. package/dist/config/loader.js +799 -23
  46. package/dist/config/loader.js.map +1 -1
  47. package/dist/config/profiles.d.ts +44 -3
  48. package/dist/config/profiles.d.ts.map +1 -1
  49. package/dist/config/profiles.js +314 -3
  50. package/dist/config/profiles.js.map +1 -1
  51. package/dist/config/schema.d.ts +3300 -201
  52. package/dist/config/schema.d.ts.map +1 -1
  53. package/dist/config/schema.js +272 -71
  54. package/dist/config/schema.js.map +1 -1
  55. package/dist/configure-web/cli.d.ts +1 -0
  56. package/dist/configure-web/cli.d.ts.map +1 -1
  57. package/dist/configure-web/cli.js +238 -47
  58. package/dist/configure-web/cli.js.map +1 -1
  59. package/dist/gateway.d.ts +16 -1
  60. package/dist/gateway.d.ts.map +1 -1
  61. package/dist/gateway.js +263 -57
  62. package/dist/gateway.js.map +1 -1
  63. package/dist/hitl/api.d.ts +2 -0
  64. package/dist/hitl/api.d.ts.map +1 -1
  65. package/dist/hitl/api.js +8 -0
  66. package/dist/hitl/api.js.map +1 -1
  67. package/dist/hitl/approval-dashboard.d.ts +5 -9
  68. package/dist/hitl/approval-dashboard.d.ts.map +1 -1
  69. package/dist/hitl/approval-dashboard.js +8 -55
  70. package/dist/hitl/approval-dashboard.js.map +1 -1
  71. package/dist/hitl/approval-stream.d.ts +34 -0
  72. package/dist/hitl/approval-stream.d.ts.map +1 -0
  73. package/dist/hitl/approval-stream.js +111 -0
  74. package/dist/hitl/approval-stream.js.map +1 -0
  75. package/dist/hitl/engine.d.ts +16 -7
  76. package/dist/hitl/engine.d.ts.map +1 -1
  77. package/dist/hitl/engine.js +109 -35
  78. package/dist/hitl/engine.js.map +1 -1
  79. package/dist/hitl/formatter.d.ts.map +1 -1
  80. package/dist/hitl/formatter.js +2 -0
  81. package/dist/hitl/formatter.js.map +1 -1
  82. package/dist/hitl/provider-factory.d.ts +8 -2
  83. package/dist/hitl/provider-factory.d.ts.map +1 -1
  84. package/dist/hitl/provider-factory.js +23 -2
  85. package/dist/hitl/provider-factory.js.map +1 -1
  86. package/dist/hitl/providers/composite.d.ts +9 -0
  87. package/dist/hitl/providers/composite.d.ts.map +1 -1
  88. package/dist/hitl/providers/composite.js +14 -0
  89. package/dist/hitl/providers/composite.js.map +1 -1
  90. package/dist/hitl/providers/dashboard.d.ts +12 -2
  91. package/dist/hitl/providers/dashboard.d.ts.map +1 -1
  92. package/dist/hitl/providers/dashboard.js +11 -5
  93. package/dist/hitl/providers/dashboard.js.map +1 -1
  94. package/dist/hitl/providers/ios.d.ts +23 -0
  95. package/dist/hitl/providers/ios.d.ts.map +1 -0
  96. package/dist/hitl/providers/ios.js +183 -0
  97. package/dist/hitl/providers/ios.js.map +1 -0
  98. package/dist/hitl/providers/macos.d.ts.map +1 -1
  99. package/dist/hitl/providers/macos.js +8 -4
  100. package/dist/hitl/providers/macos.js.map +1 -1
  101. package/dist/hitl/providers/openclaw.js +2 -2
  102. package/dist/hitl/providers/openclaw.js.map +1 -1
  103. package/dist/hitl/providers/stdio.js +2 -2
  104. package/dist/hitl/providers/stdio.js.map +1 -1
  105. package/dist/hitl/providers/telegram.js +2 -2
  106. package/dist/hitl/providers/telegram.js.map +1 -1
  107. package/dist/hitl/providers/tui.d.ts.map +1 -1
  108. package/dist/hitl/providers/tui.js +8 -2
  109. package/dist/hitl/providers/tui.js.map +1 -1
  110. package/dist/hitl/providers/types.d.ts +14 -0
  111. package/dist/hitl/providers/types.d.ts.map +1 -1
  112. package/dist/hook/api.d.ts +2 -0
  113. package/dist/hook/api.d.ts.map +1 -1
  114. package/dist/hook/api.js.map +1 -1
  115. package/dist/hook/normalizer.js +2 -2
  116. package/dist/hook/normalizer.js.map +1 -1
  117. package/dist/index.js +28 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/introspect/cli.d.ts +31 -0
  120. package/dist/introspect/cli.d.ts.map +1 -0
  121. package/dist/introspect/cli.js +756 -0
  122. package/dist/introspect/cli.js.map +1 -0
  123. package/dist/middleware/chain-builder.d.ts +1 -1
  124. package/dist/middleware/chain-builder.d.ts.map +1 -1
  125. package/dist/middleware/chain-builder.js +6 -4
  126. package/dist/middleware/chain-builder.js.map +1 -1
  127. package/dist/middleware/core/allowlist.d.ts.map +1 -1
  128. package/dist/middleware/core/allowlist.js +14 -0
  129. package/dist/middleware/core/allowlist.js.map +1 -1
  130. package/dist/middleware/core/arg-policy.d.ts +2 -1
  131. package/dist/middleware/core/arg-policy.d.ts.map +1 -1
  132. package/dist/middleware/core/arg-policy.js +156 -46
  133. package/dist/middleware/core/arg-policy.js.map +1 -1
  134. package/dist/middleware/core/exec-policy.d.ts.map +1 -1
  135. package/dist/middleware/core/exec-policy.js +16 -1
  136. package/dist/middleware/core/exec-policy.js.map +1 -1
  137. package/dist/middleware/core/execute.d.ts.map +1 -1
  138. package/dist/middleware/core/execute.js +6 -2
  139. package/dist/middleware/core/execute.js.map +1 -1
  140. package/dist/middleware/core/hitl-gate.d.ts.map +1 -1
  141. package/dist/middleware/core/hitl-gate.js +15 -4
  142. package/dist/middleware/core/hitl-gate.js.map +1 -1
  143. package/dist/middleware/core/schema-validator.d.ts.map +1 -1
  144. package/dist/middleware/core/schema-validator.js +7 -3
  145. package/dist/middleware/core/schema-validator.js.map +1 -1
  146. package/dist/middleware/post/canary-token-injector.d.ts +4 -1
  147. package/dist/middleware/post/canary-token-injector.d.ts.map +1 -1
  148. package/dist/middleware/post/canary-token-injector.js +5 -1
  149. package/dist/middleware/post/canary-token-injector.js.map +1 -1
  150. package/dist/middleware/post/untrusted-envelope.d.ts.map +1 -1
  151. package/dist/middleware/post/untrusted-envelope.js +7 -1
  152. package/dist/middleware/post/untrusted-envelope.js.map +1 -1
  153. package/dist/mobile/api.d.ts +20 -0
  154. package/dist/mobile/api.d.ts.map +1 -0
  155. package/dist/mobile/api.js +255 -0
  156. package/dist/mobile/api.js.map +1 -0
  157. package/dist/mobile/apns.d.ts +68 -0
  158. package/dist/mobile/apns.d.ts.map +1 -0
  159. package/dist/mobile/apns.js +321 -0
  160. package/dist/mobile/apns.js.map +1 -0
  161. package/dist/pool/http-client.d.ts +3 -1
  162. package/dist/pool/http-client.d.ts.map +1 -1
  163. package/dist/pool/http-client.js +5 -2
  164. package/dist/pool/http-client.js.map +1 -1
  165. package/dist/pool/oauth-provider.d.ts +2 -0
  166. package/dist/pool/oauth-provider.d.ts.map +1 -1
  167. package/dist/pool/oauth-provider.js +23 -4
  168. package/dist/pool/oauth-provider.js.map +1 -1
  169. package/dist/pool/pool.d.ts +2 -1
  170. package/dist/pool/pool.d.ts.map +1 -1
  171. package/dist/pool/pool.js +2 -2
  172. package/dist/pool/pool.js.map +1 -1
  173. package/dist/pool/sse-client.d.ts +3 -1
  174. package/dist/pool/sse-client.d.ts.map +1 -1
  175. package/dist/pool/sse-client.js +5 -2
  176. package/dist/pool/sse-client.js.map +1 -1
  177. package/dist/pool/stdio-client.d.ts +3 -1
  178. package/dist/pool/stdio-client.d.ts.map +1 -1
  179. package/dist/pool/stdio-client.js +5 -2
  180. package/dist/pool/stdio-client.js.map +1 -1
  181. package/dist/registry/airlock-policy.d.ts +3 -0
  182. package/dist/registry/airlock-policy.d.ts.map +1 -0
  183. package/dist/registry/airlock-policy.js +50 -0
  184. package/dist/registry/airlock-policy.js.map +1 -0
  185. package/dist/registry/registry.d.ts +2 -0
  186. package/dist/registry/registry.d.ts.map +1 -1
  187. package/dist/registry/registry.js +19 -13
  188. package/dist/registry/registry.js.map +1 -1
  189. package/dist/security/blocked-hosts.d.ts +2 -0
  190. package/dist/security/blocked-hosts.d.ts.map +1 -1
  191. package/dist/security/blocked-hosts.js +61 -7
  192. package/dist/security/blocked-hosts.js.map +1 -1
  193. package/dist/security/request.d.ts +2 -0
  194. package/dist/security/request.d.ts.map +1 -1
  195. package/dist/security/request.js +6 -2
  196. package/dist/security/request.js.map +1 -1
  197. package/dist/security/secrets.d.ts +12 -0
  198. package/dist/security/secrets.d.ts.map +1 -0
  199. package/dist/security/secrets.js +138 -0
  200. package/dist/security/secrets.js.map +1 -0
  201. package/dist/setup-openclaw/cli.js +1 -1
  202. package/dist/stdio-mode.d.ts.map +1 -1
  203. package/dist/stdio-mode.js +125 -24
  204. package/dist/stdio-mode.js.map +1 -1
  205. package/dist/tools/api.d.ts +4 -1
  206. package/dist/tools/api.d.ts.map +1 -1
  207. package/dist/tools/api.js +58 -7
  208. package/dist/tools/api.js.map +1 -1
  209. package/dist/tools/exec.d.ts +2 -1
  210. package/dist/tools/exec.d.ts.map +1 -1
  211. package/dist/tools/exec.js +4 -3
  212. package/dist/tools/exec.js.map +1 -1
  213. package/dist/tools/http.d.ts.map +1 -1
  214. package/dist/tools/http.js +4 -7
  215. package/dist/tools/http.js.map +1 -1
  216. package/dist/transport/agent-server.d.ts +4 -0
  217. package/dist/transport/agent-server.d.ts.map +1 -1
  218. package/dist/transport/agent-server.js +23 -11
  219. package/dist/transport/agent-server.js.map +1 -1
  220. package/dist/transport/http-server.d.ts +2 -0
  221. package/dist/transport/http-server.d.ts.map +1 -1
  222. package/dist/transport/http-server.js +10 -6
  223. package/dist/transport/http-server.js.map +1 -1
  224. package/dist/transport/sse-server.d.ts +2 -0
  225. package/dist/transport/sse-server.d.ts.map +1 -1
  226. package/dist/transport/sse-server.js +10 -6
  227. package/dist/transport/sse-server.js.map +1 -1
  228. package/dist/transport/stdio-server.d.ts.map +1 -1
  229. package/dist/transport/stdio-server.js +4 -0
  230. package/dist/transport/stdio-server.js.map +1 -1
  231. package/dist/util/id.d.ts +1 -1
  232. package/dist/util/id.d.ts.map +1 -1
  233. package/dist/util/id.js +3 -3
  234. package/dist/util/id.js.map +1 -1
  235. package/examples/claude-code-setup.md +0 -2
  236. package/examples/docker-compose.yaml +4 -3
  237. package/examples/docker-gateway.yaml +8 -3
  238. package/examples/gateway.yaml +8 -5
  239. package/examples/profiles.yaml +0 -2
  240. package/extensions/openclaw/index.ts +9 -6
  241. package/extensions/openclaw/openclaw.plugin.json +5 -5
  242. package/package.json +3 -1
  243. package/schema.json +634 -28
package/dist/gateway.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { createConnection, isIP } from 'net';
1
3
  import Fastify from 'fastify';
2
4
  import { ClientPool } from './pool/pool.js';
3
5
  import { ToolRegistry } from './registry/registry.js';
@@ -7,15 +9,18 @@ import { HitlBatcher } from './hitl/batcher.js';
7
9
  import { AuditLogger } from './audit/logger.js';
8
10
  import { hitlApiPlugin } from './hitl/api.js';
9
11
  import { auditApiPlugin } from './audit/api.js';
12
+ import { mobileApiPlugin } from './mobile/api.js';
10
13
  import { hookApiPlugin } from './hook/api.js';
11
14
  import { toolsApiPlugin } from './tools/api.js';
12
15
  import { ApprovalDashboardRoutes } from './hitl/approval-dashboard.js';
16
+ import { ApprovalStreamHub } from './hitl/approval-stream.js';
13
17
  import { CompositeHitlProvider } from './hitl/providers/composite.js';
14
18
  import { sseServerPlugin } from './transport/sse-server.js';
15
19
  import { httpServerPlugin } from './transport/http-server.js';
16
20
  import { createHitlProvider } from './hitl/provider-factory.js';
17
21
  import { getMcpConfigs } from './config/schema.js';
18
22
  import { buildAdapters } from './backend/factory.js';
23
+ import { ActivityStream } from './activity/stream.js';
19
24
  import { childLogger } from './util/logger.js';
20
25
  import { checkRequestSecurity } from './security/request.js';
21
26
  const log = childLogger('gateway');
@@ -30,9 +35,16 @@ export class Gateway {
30
35
  hitlBatcher;
31
36
  hitlProvider;
32
37
  approvalRoutes;
38
+ approvalStream;
33
39
  auditLogger;
34
40
  app;
41
+ managementApp;
42
+ downstreamSessionIds = new Map();
43
+ activityStream = new ActivityStream();
44
+ unsubscribeActivityNotifications;
35
45
  startTime = Date.now();
46
+ dataPlaneRequestSecurity = {};
47
+ managementRequestSecurity = {};
36
48
  constructor(config, configPath, options = {}) {
37
49
  this.config = config;
38
50
  this.configPath = configPath;
@@ -40,22 +52,33 @@ export class Gateway {
40
52
  }
41
53
  async start() {
42
54
  log.info('Starting Airlock gateway');
55
+ this.assertManagementApiConfig(this.config);
56
+ this.updateRequestSecurity(this.config);
43
57
  // Audit logger
44
58
  this.auditLogger = new AuditLogger(this.config.audit);
45
59
  this.auditLogger.startDailyCleanup();
46
60
  // Approvals — provider needs approvalApi but engine doesn't exist yet, use forwarder
47
61
  this.hitlBatcher = new HitlBatcher(this.config.approvals.batch_window_ms);
62
+ this.approvalStream = new ApprovalStreamHub({ activityStream: this.activityStream });
48
63
  const approvalForwarder = {
49
- approve: (code) => this.hitlEngine.approve(code),
50
- deny: (code, reason) => this.hitlEngine.deny(code, reason),
64
+ approve: (id) => this.hitlEngine.approve(id),
65
+ deny: (id, reason) => this.hitlEngine.deny(id, reason),
66
+ approveByCode: (code) => this.hitlEngine.approveByCode(code),
67
+ denyByCode: (code, reason) => this.hitlEngine.denyByCode(code, reason),
51
68
  };
52
- this.approvalRoutes = new ApprovalDashboardRoutes(approvalForwarder);
69
+ this.approvalRoutes = new ApprovalDashboardRoutes(approvalForwarder, this.approvalStream);
53
70
  this.hitlProvider = this.buildHitlProvider(approvalForwarder);
71
+ this.unsubscribeActivityNotifications = this.activityStream.subscribe((event) => {
72
+ void this.hitlProvider
73
+ .notifyActivity?.(event)
74
+ .catch((err) => log.error({ err }, 'Failed to send activity notification'));
75
+ });
54
76
  this.hitlEngine = new HitlEngine(this.auditLogger, this.hitlProvider, this.config.approvals.timeout_ms);
55
77
  // Wire batcher → provider
56
78
  this.hitlBatcher.onBatchReady((_agentId, requests) => {
79
+ const badgeCount = this.hitlEngine.getPending().length;
57
80
  void this.hitlProvider
58
- .notify(requests)
81
+ .notify(requests.map((request) => ({ ...request, badgeCount })))
59
82
  .catch((err) => log.error({ err }, 'Failed to send approval notifications'));
60
83
  });
61
84
  await this.hitlProvider.init();
@@ -65,7 +88,7 @@ export class Gateway {
65
88
  this.pool = new ClientPool(mcpConfigs);
66
89
  await this.pool.initialize();
67
90
  // Build adapters from config (MCP, builtins, CLIs, APIs)
68
- const adapters = buildAdapters(this.config, this.pool);
91
+ const adapters = this.buildAdapters();
69
92
  // Allowlist + registry
70
93
  this.allowlist = new AllowlistEngine(this.config.agents);
71
94
  this.registry = new ToolRegistry(adapters, this.allowlist, this.config.agents);
@@ -77,67 +100,177 @@ export class Gateway {
77
100
  .catch((err) => log.error({ err }, 'Failed to refresh registry after MCP ready'));
78
101
  });
79
102
  await this.registry.refresh();
80
- // HTTP server
103
+ // Agent data-plane server. Control-plane routes are registered on a
104
+ // separate listener below and must never be added to this app.
81
105
  this.app = Fastify({ logger: false });
82
- const requestSecurity = {
83
- secret: this.config.server.api_secret,
84
- authRequired: this.config.server.auth_required,
85
- allowedOrigins: this.config.server.allowed_origins,
86
- };
87
- if (this.config.server.expose_management_api) {
88
- await this.app.register(hitlApiPlugin, { engine: this.hitlEngine, ...requestSecurity });
89
- await this.app.register(auditApiPlugin, {
90
- auditLogger: this.auditLogger,
91
- ...requestSecurity,
106
+ const getDataPlaneRequestSecurity = () => this.dataPlaneRequestSecurity;
107
+ const getManagementRequestSecurity = () => this.managementRequestSecurity;
108
+ await this.app.register(sseServerPlugin, {
109
+ getDeps: (agentId) => this.buildAgentDeps(agentId),
110
+ getRequestSecurity: getDataPlaneRequestSecurity,
111
+ });
112
+ await this.app.register(httpServerPlugin, {
113
+ getDeps: (agentId) => this.buildAgentDeps(agentId),
114
+ getRequestSecurity: getDataPlaneRequestSecurity,
115
+ });
116
+ if (this.config.server.expose_tools_api) {
117
+ await this.app.register(toolsApiPlugin, {
118
+ getDeps: (agentId, downstreamSessionKey) => this.buildAgentDeps(agentId, downstreamSessionKey),
119
+ requiresSessionId: (agentId, tool) => this.requiresToolsApiSessionId(agentId, tool),
120
+ getRequestSecurity: getDataPlaneRequestSecurity,
92
121
  });
93
- await this.app.register(async (adminApp) => {
94
- adminApp.addHook('preHandler', async (request, reply) => {
95
- if (!checkRequestSecurity(request, reply, requestSecurity)) {
96
- return;
97
- }
98
- });
99
- this.approvalRoutes.registerRoutes(adminApp);
100
- adminApp.get('/admin/tools', async (_request, reply) => {
101
- return reply.send({ tools: this.registry.getAllTools(), errors: [] });
122
+ }
123
+ const { port, host } = this.config.server;
124
+ await this.app.listen({ port, host });
125
+ log.info({ port, host }, 'Airlock agent data-plane listening');
126
+ if (this.config.server.management_api.enabled) {
127
+ try {
128
+ await this.startManagementApi(getManagementRequestSecurity);
129
+ }
130
+ catch (err) {
131
+ await this.app.close().catch((closeErr) => {
132
+ log.warn({ err: closeErr }, 'Failed to close agent data-plane after management API startup failure');
102
133
  });
103
- });
134
+ throw err;
135
+ }
104
136
  }
105
- if (this.config.server.expose_hook_api) {
106
- await this.app.register(hookApiPlugin, {
137
+ }
138
+ async startManagementApi(getRequestSecurity) {
139
+ const management = this.config.server.management_api;
140
+ this.managementApp = Fastify({ logger: false });
141
+ await this.managementApp.register(hitlApiPlugin, {
142
+ engine: this.hitlEngine,
143
+ getRequestSecurity,
144
+ });
145
+ await this.managementApp.register(auditApiPlugin, {
146
+ auditLogger: this.auditLogger,
147
+ getRequestSecurity,
148
+ });
149
+ await this.managementApp.register(mobileApiPlugin, {
150
+ auditLogger: this.auditLogger,
151
+ engine: this.hitlEngine,
152
+ activityStream: this.activityStream,
153
+ configPath: this.configPath,
154
+ getRequestSecurity,
155
+ approvalStream: this.approvalStream,
156
+ });
157
+ await this.managementApp.register((adminApp, _opts, done) => {
158
+ adminApp.addHook('preHandler', (request, reply, hookDone) => {
159
+ if (!checkRequestSecurity(request, reply, getRequestSecurity())) {
160
+ return;
161
+ }
162
+ hookDone();
163
+ });
164
+ this.approvalRoutes.registerRoutes(adminApp);
165
+ adminApp.get('/admin/tools', (_request, reply) => {
166
+ return reply.send({ tools: this.registry.getAllTools(), errors: [] });
167
+ });
168
+ adminApp.get('/activity', (_request, reply) => {
169
+ return reply.send({ events: this.activityStream.recent() });
170
+ });
171
+ done();
172
+ });
173
+ if (management.expose_hook_api) {
174
+ await this.managementApp.register(hookApiPlugin, {
107
175
  allowlist: this.allowlist,
108
176
  hitlEngine: this.hitlEngine,
109
177
  hitlBatcher: this.hitlBatcher,
110
178
  auditLogger: this.auditLogger,
111
- ...requestSecurity,
112
- });
113
- }
114
- if (this.config.server.expose_tools_api) {
115
- await this.app.register(toolsApiPlugin, {
116
- getDeps: (agentId) => this.buildAgentDeps(agentId),
117
- ...requestSecurity,
179
+ getRequestSecurity,
118
180
  });
119
181
  }
120
- await this.app.register(sseServerPlugin, {
121
- getDeps: (agentId) => this.buildAgentDeps(agentId),
122
- ...requestSecurity,
123
- });
124
- await this.app.register(httpServerPlugin, {
125
- getDeps: (agentId) => this.buildAgentDeps(agentId),
126
- ...requestSecurity,
182
+ this.managementApp.get('/health', async (request, reply) => {
183
+ if (!checkRequestSecurity(request, reply, getRequestSecurity()))
184
+ return;
185
+ const dataPlane = await this.dataPlaneHealth();
186
+ const mcpHealth = this.pool.healthCheck();
187
+ const pendingApprovals = this.hitlEngine.getPending().length;
188
+ const uptime = Math.floor((Date.now() - this.startTime) / 1000);
189
+ const status = dataPlane.status === 'ok' ? 'ok' : 'degraded';
190
+ return { status, dataPlane, mcpHealth, pendingApprovals, uptime };
127
191
  });
128
- if (this.config.server.expose_management_api) {
129
- this.app.get('/health', (request, reply) => {
130
- if (!checkRequestSecurity(request, reply, requestSecurity))
131
- return;
132
- const mcpHealth = this.pool.healthCheck();
133
- const pendingApprovals = this.hitlEngine.getPending().length;
134
- const uptime = Math.floor((Date.now() - this.startTime) / 1000);
135
- return { status: 'ok', mcpHealth, pendingApprovals, uptime };
136
- });
192
+ const { port, host, insecure_remote_bind } = management;
193
+ if (insecure_remote_bind) {
194
+ log.warn({ port, host }, 'Control-plane bound beyond loopback; admin/audit/approval routes may be reachable off-host. Restrict this listener with network ACLs.');
195
+ }
196
+ await this.managementApp.listen({ port, host });
197
+ log.info({ port, host }, 'Airlock control-plane management API listening');
198
+ }
199
+ async dataPlaneHealth() {
200
+ const address = this.app.server.address();
201
+ const host = typeof address === 'object' && address !== null ? address.address : this.config.server.host;
202
+ const port = typeof address === 'object' && address !== null ? address.port : this.config.server.port;
203
+ const status = await tcpProbe(connectableLoopbackHost(host), port, 250);
204
+ return { status: status ? 'ok' : 'down', host, port };
205
+ }
206
+ assertManagementApiConfig(config) {
207
+ const management = config.server.management_api;
208
+ if (!management.enabled)
209
+ return;
210
+ if (!management.api_secret && !config.server.api_secret) {
211
+ throw new Error('server.management_api.enabled requires server.management_api.api_secret or server.api_secret.');
212
+ }
213
+ const tokenlessAgents = Object.entries(config.agents)
214
+ .filter(([, agent]) => !agent.token)
215
+ .map(([agentId]) => agentId);
216
+ if (tokenlessAgents.length > 0) {
217
+ throw new Error(`server.management_api.enabled requires per-agent tokens. Add token to agents: ${tokenlessAgents.join(', ')}.`);
218
+ }
219
+ if (!isLoopbackHost(management.host) && !management.insecure_remote_bind) {
220
+ throw new Error('server.management_api.host is non-loopback while insecure_remote_bind is false. Keep it on 127.0.0.1/::1, or explicitly set server.management_api.insecure_remote_bind: true and restrict the control-plane port with network ACLs.');
221
+ }
222
+ if (management.port !== 0 && management.port === config.server.port) {
223
+ throw new Error('Control-plane and data-plane must not share a socket.');
224
+ }
225
+ }
226
+ updateRequestSecurity(config) {
227
+ this.dataPlaneRequestSecurity.secret = config.server.api_secret;
228
+ this.dataPlaneRequestSecurity.authRequired = config.server.auth_required;
229
+ this.dataPlaneRequestSecurity.allowedOrigins = config.server.allowed_origins;
230
+ this.managementRequestSecurity.secret =
231
+ config.server.management_api.api_secret ?? config.server.api_secret;
232
+ this.managementRequestSecurity.authRequired = true;
233
+ this.managementRequestSecurity.allowedOrigins = config.server.allowed_origins;
234
+ }
235
+ assertReloadCompatible(newConfig) {
236
+ const oldServer = this.config.server;
237
+ const newServer = newConfig.server;
238
+ const restartFields = [
239
+ ['server.host', oldServer.host, newServer.host],
240
+ ['server.port', oldServer.port, newServer.port],
241
+ ['server.expose_tools_api', oldServer.expose_tools_api, newServer.expose_tools_api],
242
+ [
243
+ 'server.management_api.enabled',
244
+ oldServer.management_api.enabled,
245
+ newServer.management_api.enabled,
246
+ ],
247
+ ['server.management_api.host', oldServer.management_api.host, newServer.management_api.host],
248
+ ['server.management_api.port', oldServer.management_api.port, newServer.management_api.port],
249
+ [
250
+ 'server.management_api.insecure_remote_bind',
251
+ oldServer.management_api.insecure_remote_bind,
252
+ newServer.management_api.insecure_remote_bind,
253
+ ],
254
+ [
255
+ 'server.management_api.expose_hook_api',
256
+ oldServer.management_api.expose_hook_api,
257
+ newServer.management_api.expose_hook_api,
258
+ ],
259
+ [
260
+ 'approvals.provider',
261
+ JSON.stringify(this.config.approvals.provider),
262
+ JSON.stringify(newConfig.approvals.provider),
263
+ ],
264
+ [
265
+ 'approvals.batch_window_ms',
266
+ this.config.approvals.batch_window_ms,
267
+ newConfig.approvals.batch_window_ms,
268
+ ],
269
+ ];
270
+ const changed = restartFields.find(([, oldValue, newValue]) => oldValue !== newValue);
271
+ if (changed) {
272
+ throw new Error(`${changed[0]} changed; restart Airlock to apply listener or approval-provider topology changes.`);
137
273
  }
138
- const { port, host } = this.config.server;
139
- await this.app.listen({ port, host });
140
- log.info({ port, host }, 'Airlock gateway listening');
141
274
  }
142
275
  buildHitlProvider(approvalForwarder) {
143
276
  const providers = [];
@@ -147,17 +280,23 @@ export class Gateway {
147
280
  if (configuredProvider) {
148
281
  providers.push(createHitlProvider(configuredProvider, approvalForwarder, {
149
282
  configPath: this.configPath,
283
+ auditLogger: this.auditLogger,
284
+ approvalStream: this.approvalStream,
150
285
  }));
151
286
  }
152
- providers.push(this.approvalRoutes);
287
+ providers.push(this.approvalStream);
153
288
  return providers.length === 1 ? providers[0] : new CompositeHitlProvider(providers);
154
289
  }
155
- buildAgentDeps(agentId) {
290
+ buildAgentDeps(agentId, downstreamSessionKey) {
156
291
  const agentConfig = this.config.agents[agentId];
157
292
  if (!agentConfig)
158
293
  return undefined;
294
+ const downstreamSessionId = downstreamSessionKey
295
+ ? this.downstreamSessionIdFor(downstreamSessionKey)
296
+ : undefined;
159
297
  return {
160
298
  agentId,
299
+ downstreamSessionId,
161
300
  agentConfig,
162
301
  getAgentConfig: () => this.config.agents[agentId] ?? agentConfig,
163
302
  registry: this.registry,
@@ -169,15 +308,38 @@ export class Gateway {
169
308
  securityConfig: this.config.security,
170
309
  };
171
310
  }
311
+ downstreamSessionIdFor(key) {
312
+ let id = this.downstreamSessionIds.get(key);
313
+ if (!id) {
314
+ id = randomUUID();
315
+ this.downstreamSessionIds.set(key, id);
316
+ }
317
+ return id;
318
+ }
319
+ requiresToolsApiSessionId(agentId, toolName) {
320
+ const agentConfig = this.config.agents[agentId];
321
+ if (!agentConfig)
322
+ return false;
323
+ const resolvedToolName = agentConfig.tool_overrides[toolName]?.alias_of ?? toolName;
324
+ const separatorIndex = resolvedToolName.indexOf('/');
325
+ if (separatorIndex <= 0)
326
+ return false;
327
+ const providerId = resolvedToolName.slice(0, separatorIndex);
328
+ return providerId in getMcpConfigs(this.config.providers);
329
+ }
172
330
  async reload(newConfig) {
173
331
  log.info('Reloading gateway config');
332
+ this.assertManagementApiConfig(newConfig);
333
+ this.assertReloadCompatible(newConfig);
174
334
  this.config = newConfig;
335
+ this.updateRequestSecurity(newConfig);
336
+ this.hitlEngine.setTimeoutMs(newConfig.approvals.timeout_ms);
175
337
  const mcpConfigs = getMcpConfigs(newConfig.providers);
176
338
  await this.pool.reload(mcpConfigs);
177
339
  this.allowlist.reload(newConfig.agents);
178
340
  this.registry.reloadAgents(newConfig.agents);
179
341
  // Rebuild adapters to pick up new CLIs/APIs
180
- const adapters = buildAdapters(newConfig, this.pool);
342
+ const adapters = this.buildAdapters();
181
343
  this.registry.setAdapters(adapters);
182
344
  await this.registry.refresh();
183
345
  log.info('Config reloaded: providers, allowlist, registry, and agent configs updated');
@@ -190,7 +352,10 @@ export class Gateway {
190
352
  log.info('Stopping Airlock gateway');
191
353
  this.pool?.disableReconnect();
192
354
  await this.pool?.stop();
355
+ await this.managementApp?.close();
193
356
  await this.app?.close();
357
+ this.unsubscribeActivityNotifications?.();
358
+ this.unsubscribeActivityNotifications = undefined;
194
359
  await this.registry?.stopAll();
195
360
  await this.hitlProvider?.stop();
196
361
  this.auditLogger?.stop();
@@ -199,6 +364,15 @@ export class Gateway {
199
364
  forceKill() {
200
365
  this.pool?.forceKill();
201
366
  }
367
+ buildAdapters() {
368
+ return buildAdapters(this.config, this.pool, {
369
+ airlock: {
370
+ hitlEngine: this.hitlEngine,
371
+ hitlBatcher: this.hitlBatcher,
372
+ activityStream: this.activityStream,
373
+ },
374
+ });
375
+ }
202
376
  }
203
377
  function withoutDashboardProvider(provider) {
204
378
  if (Array.isArray(provider)) {
@@ -209,4 +383,36 @@ function withoutDashboardProvider(provider) {
209
383
  }
210
384
  return provider.type === 'dashboard' ? undefined : provider;
211
385
  }
386
+ function isLoopbackHost(host) {
387
+ const normalized = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
388
+ if (normalized === 'localhost')
389
+ return true;
390
+ const ipVersion = isIP(normalized);
391
+ if (ipVersion === 6)
392
+ return normalized === '::1';
393
+ if (ipVersion !== 4)
394
+ return false;
395
+ const firstOctet = Number(normalized.split('.')[0]);
396
+ return firstOctet === 127;
397
+ }
398
+ function connectableLoopbackHost(host) {
399
+ if (host === '0.0.0.0')
400
+ return '127.0.0.1';
401
+ if (host === '::' || host === '[::]')
402
+ return '::1';
403
+ return host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
404
+ }
405
+ function tcpProbe(host, port, timeoutMs) {
406
+ return new Promise((resolve) => {
407
+ const socket = createConnection({ host, port });
408
+ const done = (ok) => {
409
+ socket.destroy();
410
+ resolve(ok);
411
+ };
412
+ socket.setTimeout(timeoutMs);
413
+ socket.once('connect', () => done(true));
414
+ socket.once('timeout', () => done(false));
415
+ socket.once('error', () => done(false));
416
+ });
417
+ }
212
418
  //# sourceMappingURL=gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import type { FastifyInstance } from 'fastify';
2
2
  import type { HitlEngine } from './engine.js';
3
+ import { type RequestSecurityOptions } from '../security/request.js';
3
4
  export declare function hitlApiPlugin(app: FastifyInstance, opts: {
4
5
  engine: HitlEngine;
5
6
  secret?: string;
6
7
  authRequired?: boolean;
7
8
  allowedOrigins?: string[];
9
+ getRequestSecurity?: () => RequestSecurityOptions;
8
10
  }): Promise<void>;
9
11
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/hitl/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,wBAAsB,aAAa,CACjC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/F,OAAO,CAAC,IAAI,CAAC,CAyBf"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/hitl/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAG3F,wBAAsB,aAAa,CACjC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE;IACJ,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,sBAAsB,CAAC;CACnD,GACA,OAAO,CAAC,IAAI,CAAC,CAiCf"}
package/dist/hitl/api.js CHANGED
@@ -9,11 +9,19 @@ export async function hitlApiPlugin(app, opts) {
9
9
  });
10
10
  app.post('/hitl/approve/:id', async (request, reply) => {
11
11
  const { id } = request.params;
12
+ if (!engine.hasPending(id)) {
13
+ reply.code(404);
14
+ return { error: 'No pending approval found for id' };
15
+ }
12
16
  engine.approve(id);
13
17
  return reply.send({ ok: true });
14
18
  });
15
19
  app.post('/hitl/deny/:id', async (request, reply) => {
16
20
  const { id } = request.params;
21
+ if (!engine.hasPending(id)) {
22
+ reply.code(404);
23
+ return { error: 'No pending approval found for id' };
24
+ }
17
25
  const body = request.body;
18
26
  engine.deny(id, body?.reason);
19
27
  return reply.send({ ok: true });
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/hitl/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAoB,EACpB,IAAgG;IAEhG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAClD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAuC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/hitl/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,wBAAwB,CAAC;AAE3F,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAoB,EACpB,IAMC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAClD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAuC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,19 +1,15 @@
1
1
  import type { FastifyInstance } from 'fastify';
2
- import type { ApprovalApi, HitlNotification, HitlProvider } from './providers/types.js';
3
- export declare class ApprovalDashboardRoutes implements HitlProvider {
2
+ import type { ApprovalStreamHub } from './approval-stream.js';
3
+ import type { ApprovalApi } from './providers/types.js';
4
+ export declare class ApprovalDashboardRoutes {
4
5
  private approvalApi;
5
- private clients;
6
- private pending;
7
- constructor(approvalApi: ApprovalApi);
8
- init(): Promise<void>;
6
+ private stream;
7
+ constructor(approvalApi: ApprovalApi, stream: ApprovalStreamHub);
9
8
  registerRoutes(app: FastifyInstance, configPath?: string): void;
10
- notify(requests: HitlNotification[]): Promise<void>;
11
- stop(): Promise<void>;
12
9
  private handleEvents;
13
10
  private handleApprove;
14
11
  private handleDeny;
15
12
  private handleLatestVersion;
16
13
  private rememberDecision;
17
- private broadcast;
18
14
  }
19
15
  //# sourceMappingURL=approval-dashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval-dashboard.d.ts","sourceRoot":"","sources":["../../src/hitl/approval-dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAK7E,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOxF,qBAAa,uBAAwB,YAAW,YAAY;IAI9C,OAAO,CAAC,WAAW;IAH/B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAuC;gBAElC,WAAW,EAAE,WAAW;IAE5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,OAAO,CAAC,YAAY;YAcN,aAAa;IA0B3B,OAAO,CAAC,UAAU;YAeJ,mBAAmB;IAmBjC,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,SAAS;CAUlB"}
1
+ {"version":3,"file":"approval-dashboard.d.ts","sourceRoot":"","sources":["../../src/hitl/approval-dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAI7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAO1E,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,iBAAiB;IAGnC,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ/D,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,UAAU;YAUJ,mBAAmB;IAqBjC,OAAO,CAAC,gBAAgB;CAsCzB"}