@mono-agent/agent-app 0.4.0 → 0.5.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 (173) hide show
  1. package/README.md +15 -5
  2. package/dist/adapter-send-tools-main.js +2 -2
  3. package/dist/adapter-send-tools-main.js.map +1 -1
  4. package/dist/adapter-send-tools.d.ts +72 -6
  5. package/dist/adapter-send-tools.d.ts.map +1 -1
  6. package/dist/adapter-send-tools.js +413 -38
  7. package/dist/adapter-send-tools.js.map +1 -1
  8. package/dist/app-config.d.ts +48 -11
  9. package/dist/app-config.d.ts.map +1 -1
  10. package/dist/app-config.js +98 -24
  11. package/dist/app-config.js.map +1 -1
  12. package/dist/app.d.ts +10 -0
  13. package/dist/app.d.ts.map +1 -1
  14. package/dist/app.js +659 -48
  15. package/dist/app.js.map +1 -1
  16. package/dist/artifact-retention.d.ts +32 -0
  17. package/dist/artifact-retention.d.ts.map +1 -0
  18. package/dist/artifact-retention.js +111 -0
  19. package/dist/artifact-retention.js.map +1 -0
  20. package/dist/audit-runs.d.ts +12 -0
  21. package/dist/audit-runs.d.ts.map +1 -0
  22. package/dist/audit-runs.js +68 -0
  23. package/dist/audit-runs.js.map +1 -0
  24. package/dist/backfill.d.ts +3 -7
  25. package/dist/backfill.d.ts.map +1 -1
  26. package/dist/backfill.js +115 -11
  27. package/dist/backfill.js.map +1 -1
  28. package/dist/background.d.ts +8 -1
  29. package/dist/background.d.ts.map +1 -1
  30. package/dist/background.js +202 -4
  31. package/dist/background.js.map +1 -1
  32. package/dist/broadcast-recorder.d.ts +27 -0
  33. package/dist/broadcast-recorder.d.ts.map +1 -0
  34. package/dist/broadcast-recorder.js +82 -0
  35. package/dist/broadcast-recorder.js.map +1 -0
  36. package/dist/channel-config-view.d.ts +28 -0
  37. package/dist/channel-config-view.d.ts.map +1 -0
  38. package/dist/channel-config-view.js +79 -0
  39. package/dist/channel-config-view.js.map +1 -0
  40. package/dist/channel-gate.d.ts +22 -0
  41. package/dist/channel-gate.d.ts.map +1 -0
  42. package/dist/channel-gate.js +35 -0
  43. package/dist/channel-gate.js.map +1 -0
  44. package/dist/channel-plugins.d.ts +39 -0
  45. package/dist/channel-plugins.d.ts.map +1 -0
  46. package/dist/channel-plugins.js +372 -0
  47. package/dist/channel-plugins.js.map +1 -0
  48. package/dist/channels.d.ts +62 -73
  49. package/dist/channels.d.ts.map +1 -1
  50. package/dist/channels.js +833 -126
  51. package/dist/channels.js.map +1 -1
  52. package/dist/cli.d.ts +65 -3
  53. package/dist/cli.d.ts.map +1 -1
  54. package/dist/cli.js +755 -30
  55. package/dist/cli.js.map +1 -1
  56. package/dist/config-reference.d.ts +24 -0
  57. package/dist/config-reference.d.ts.map +1 -0
  58. package/dist/config-reference.js +580 -0
  59. package/dist/config-reference.js.map +1 -0
  60. package/dist/configured-agent.d.ts +104 -0
  61. package/dist/configured-agent.d.ts.map +1 -0
  62. package/dist/configured-agent.js +578 -0
  63. package/dist/configured-agent.js.map +1 -0
  64. package/dist/consumer-contract.d.ts +36 -0
  65. package/dist/consumer-contract.d.ts.map +1 -0
  66. package/dist/consumer-contract.js +290 -0
  67. package/dist/consumer-contract.js.map +1 -0
  68. package/dist/doctor.d.ts +9 -0
  69. package/dist/doctor.d.ts.map +1 -1
  70. package/dist/doctor.js +352 -55
  71. package/dist/doctor.js.map +1 -1
  72. package/dist/index.d.ts +9 -3
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +5 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/init.d.ts +23 -7
  77. package/dist/init.d.ts.map +1 -1
  78. package/dist/init.js +91 -26
  79. package/dist/init.js.map +1 -1
  80. package/dist/install-skill.d.ts +1 -1
  81. package/dist/install-skill.js +2 -2
  82. package/dist/install-skill.js.map +1 -1
  83. package/dist/interaction-bridge.d.ts +72 -0
  84. package/dist/interaction-bridge.d.ts.map +1 -0
  85. package/dist/interaction-bridge.js +354 -0
  86. package/dist/interaction-bridge.js.map +1 -0
  87. package/dist/memory-command.d.ts +10 -0
  88. package/dist/memory-command.d.ts.map +1 -0
  89. package/dist/memory-command.js +649 -0
  90. package/dist/memory-command.js.map +1 -0
  91. package/dist/memory-recall-main.js +1 -1
  92. package/dist/memory-recall-main.js.map +1 -1
  93. package/dist/memory-recall.d.ts +41 -5
  94. package/dist/memory-recall.d.ts.map +1 -1
  95. package/dist/memory-recall.js +75 -5
  96. package/dist/memory-recall.js.map +1 -1
  97. package/dist/memory-rituals.d.ts +8 -11
  98. package/dist/memory-rituals.d.ts.map +1 -1
  99. package/dist/memory-rituals.js +26 -25
  100. package/dist/memory-rituals.js.map +1 -1
  101. package/dist/metrics.d.ts +13 -0
  102. package/dist/metrics.d.ts.map +1 -0
  103. package/dist/metrics.js +105 -0
  104. package/dist/metrics.js.map +1 -0
  105. package/dist/notify-destinations.d.ts +23 -0
  106. package/dist/notify-destinations.d.ts.map +1 -0
  107. package/dist/notify-destinations.js +79 -0
  108. package/dist/notify-destinations.js.map +1 -0
  109. package/dist/posted-message-index.d.ts +61 -0
  110. package/dist/posted-message-index.d.ts.map +1 -0
  111. package/dist/posted-message-index.js +178 -0
  112. package/dist/posted-message-index.js.map +1 -0
  113. package/dist/proactive-notify.d.ts +32 -0
  114. package/dist/proactive-notify.d.ts.map +1 -0
  115. package/dist/proactive-notify.js +62 -0
  116. package/dist/proactive-notify.js.map +1 -0
  117. package/dist/recipes/base.d.ts +15 -0
  118. package/dist/recipes/base.d.ts.map +1 -0
  119. package/dist/recipes/base.js +51 -0
  120. package/dist/recipes/base.js.map +1 -0
  121. package/dist/recipes/catalog.d.ts +4 -0
  122. package/dist/recipes/catalog.d.ts.map +1 -0
  123. package/dist/recipes/catalog.js +525 -0
  124. package/dist/recipes/catalog.js.map +1 -0
  125. package/dist/recipes/index.d.ts +11 -0
  126. package/dist/recipes/index.d.ts.map +1 -0
  127. package/dist/recipes/index.js +14 -0
  128. package/dist/recipes/index.js.map +1 -0
  129. package/dist/recipes/types.d.ts +70 -0
  130. package/dist/recipes/types.d.ts.map +1 -0
  131. package/dist/recipes/types.js +15 -0
  132. package/dist/recipes/types.js.map +1 -0
  133. package/dist/request-model-override.d.ts +67 -0
  134. package/dist/request-model-override.d.ts.map +1 -0
  135. package/dist/request-model-override.js +96 -0
  136. package/dist/request-model-override.js.map +1 -0
  137. package/dist/runs-health.d.ts +22 -0
  138. package/dist/runs-health.d.ts.map +1 -0
  139. package/dist/runs-health.js +144 -0
  140. package/dist/runs-health.js.map +1 -0
  141. package/dist/seen-conversations.d.ts +22 -0
  142. package/dist/seen-conversations.d.ts.map +1 -0
  143. package/dist/seen-conversations.js +120 -0
  144. package/dist/seen-conversations.js.map +1 -0
  145. package/dist/setup.d.ts +29 -0
  146. package/dist/setup.d.ts.map +1 -0
  147. package/dist/setup.js +97 -0
  148. package/dist/setup.js.map +1 -0
  149. package/dist/trigger-overrides.d.ts +17 -0
  150. package/dist/trigger-overrides.d.ts.map +1 -0
  151. package/dist/trigger-overrides.js +30 -0
  152. package/dist/trigger-overrides.js.map +1 -0
  153. package/dist/tui-command.d.ts +56 -0
  154. package/dist/tui-command.d.ts.map +1 -0
  155. package/dist/tui-command.js +160 -0
  156. package/dist/tui-command.js.map +1 -0
  157. package/dist/ui.d.ts.map +1 -1
  158. package/dist/ui.js +4 -0
  159. package/dist/ui.js.map +1 -1
  160. package/dist/web-command.d.ts +45 -0
  161. package/dist/web-command.d.ts.map +1 -0
  162. package/dist/web-command.js +152 -0
  163. package/dist/web-command.js.map +1 -0
  164. package/package.json +19 -18
  165. package/schema/mono-agent.config.schema.json +1686 -0
  166. package/skills/mono-agent-composer/SKILL.md +34 -9
  167. package/skills/mono-agent-composer/agents/openai.yaml +4 -0
  168. package/skills/mono-agent-composer/references/config-blueprint.md +92 -49
  169. package/skills/mono-agent-composer/references/discovery-questions.md +15 -17
  170. package/skills/mono-agent-composer/references/feature-coverage.md +22 -17
  171. package/skills/mono-agent-composer/references/package-map.md +19 -21
  172. package/skills/mono-agent-composer/references/playbooks.md +267 -0
  173. package/skills/mono-agent-composer/references/validation.md +9 -1
@@ -0,0 +1,354 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { readFile } from "node:fs/promises";
3
+ import { createServer } from "node:http";
4
+ /** Default port 0 = ephemeral: consumers get the URL via env, so a fixed port only invites collisions. */
5
+ export const DEFAULT_INTERACTION_BRIDGE_PORT = 0;
6
+ export const DEFAULT_ASK_USER_TIMEOUT_MS = 600_000;
7
+ /**
8
+ * Load the app-level `interaction` block from `mono-agent.config.json` with env
9
+ * overrides (`MONO_AGENT_INTERACTION_BRIDGE_HOST/PORT`,
10
+ * `MONO_AGENT_ASK_USER_TIMEOUT_MS`, `MONO_AGENT_PROGRESS_ENABLED`). Tolerant of
11
+ * a missing file/block: returns unconfigured defaults.
12
+ */
13
+ export async function loadInteractionSettings(input) {
14
+ let block = {};
15
+ let present = false;
16
+ try {
17
+ const parsed = JSON.parse(await readFile(input.configPath, "utf8"));
18
+ const interaction = parsed?.interaction;
19
+ if (typeof interaction === "object" && interaction !== null) {
20
+ block = interaction;
21
+ present = true;
22
+ }
23
+ }
24
+ catch {
25
+ // Missing or invalid config file: the core loader reports that; here we just
26
+ // fall back to defaults.
27
+ }
28
+ const bridge = (block.bridge ?? {});
29
+ const askUser = (block.askUser ?? {});
30
+ const progress = (block.progress ?? {});
31
+ const envHost = trimmed(input.env.MONO_AGENT_INTERACTION_BRIDGE_HOST);
32
+ const envPort = integerOf(input.env.MONO_AGENT_INTERACTION_BRIDGE_PORT);
33
+ const envTimeout = integerOf(input.env.MONO_AGENT_ASK_USER_TIMEOUT_MS);
34
+ const envProgress = trimmed(input.env.MONO_AGENT_PROGRESS_ENABLED);
35
+ const configured = present || envHost !== undefined || envPort !== undefined || envTimeout !== undefined || envProgress !== undefined;
36
+ return {
37
+ configured,
38
+ host: envHost ?? (typeof bridge.host === "string" ? bridge.host : "127.0.0.1"),
39
+ port: envPort ?? integerValue(bridge.port) ?? DEFAULT_INTERACTION_BRIDGE_PORT,
40
+ askTimeoutMs: envTimeout ?? integerValue(askUser.timeoutMs) ?? DEFAULT_ASK_USER_TIMEOUT_MS,
41
+ progressEnabled: envProgress !== undefined ? envProgress !== "false" : progress.enabled !== false,
42
+ };
43
+ }
44
+ function trimmed(value) {
45
+ const normalized = value?.trim();
46
+ return normalized === undefined || normalized.length === 0 ? undefined : normalized;
47
+ }
48
+ function integerOf(value) {
49
+ const normalized = trimmed(value);
50
+ if (normalized === undefined || !/^\d+$/u.test(normalized)) {
51
+ return undefined;
52
+ }
53
+ return Number.parseInt(normalized, 10);
54
+ }
55
+ function integerValue(value) {
56
+ return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : undefined;
57
+ }
58
+ /** Per-request long-poll wait cap, keeping every HTTP request comfortably short-lived. */
59
+ const MAX_LONG_POLL_WAIT_MS = 25_000;
60
+ const MAX_BODY_BYTES = 64 * 1024;
61
+ /** Strip the daily-rollover `#bucket` suffix so registry keys match the channel's base id. */
62
+ function normalizeConversationId(conversationId) {
63
+ return conversationId.split("#", 1)[0] ?? conversationId;
64
+ }
65
+ function channelIdOf(conversationId) {
66
+ return conversationId.split(":", 1)[0] ?? conversationId;
67
+ }
68
+ export async function startInteractionBridge(options = {}) {
69
+ const host = options.host ?? "127.0.0.1";
70
+ const askTimeoutMs = options.askTimeoutMs ?? DEFAULT_ASK_USER_TIMEOUT_MS;
71
+ const token = randomBytes(24).toString("base64url");
72
+ const sinks = new Map();
73
+ // One pending ask per conversation; a second concurrent ask is a 409 by design
74
+ // (the model must consolidate its questions instead of stacking them).
75
+ const asksByConversation = new Map();
76
+ const asksById = new Map();
77
+ let askCounter = 0;
78
+ function settleAsk(ask, status, answer) {
79
+ if (ask.status !== "pending") {
80
+ return;
81
+ }
82
+ ask.status = status;
83
+ if (answer !== undefined) {
84
+ ask.answer = answer;
85
+ }
86
+ clearTimeout(ask.expiryTimer);
87
+ asksByConversation.delete(ask.conversationId);
88
+ const snapshot = snapshotOf(ask);
89
+ for (const waiter of ask.waiters) {
90
+ waiter(snapshot);
91
+ }
92
+ ask.waiters.clear();
93
+ }
94
+ function snapshotOf(ask) {
95
+ return ask.status === "answered" && ask.answer !== undefined
96
+ ? { status: ask.status, answer: ask.answer }
97
+ : { status: ask.status };
98
+ }
99
+ function registerAsk(conversationId, question, timeoutMs) {
100
+ askCounter += 1;
101
+ const askId = `ask-${String(askCounter)}-${randomBytes(6).toString("base64url")}`;
102
+ const ask = {
103
+ askId,
104
+ conversationId,
105
+ status: "pending",
106
+ waiters: new Set(),
107
+ expiryTimer: setTimeout(() => settleAsk(ask, "expired"), timeoutMs),
108
+ };
109
+ ask.expiryTimer.unref?.();
110
+ asksByConversation.set(conversationId, ask);
111
+ asksById.set(askId, ask);
112
+ return ask;
113
+ }
114
+ async function handleCreateAsk(request, response) {
115
+ const body = await readJsonBody(request);
116
+ const conversationIdRaw = stringField(body, "conversationId");
117
+ const question = stringField(body, "question");
118
+ if (conversationIdRaw === undefined || question === undefined) {
119
+ sendJson(response, 400, { error: "conversationId and question are required." });
120
+ return;
121
+ }
122
+ const conversationId = normalizeConversationId(conversationIdRaw);
123
+ const sink = sinks.get(channelIdOf(conversationId));
124
+ if (sink === undefined) {
125
+ sendJson(response, 501, {
126
+ error: `no interactive channel is registered for "${channelIdOf(conversationId)}" — ask in your final reply instead.`,
127
+ });
128
+ return;
129
+ }
130
+ if (asksByConversation.has(conversationId)) {
131
+ sendJson(response, 409, { error: "a question is already pending on this conversation; wait for its answer." });
132
+ return;
133
+ }
134
+ const requested = numberField(body, "timeoutMs");
135
+ // The config value is both the default and the ceiling: tools may wait less,
136
+ // never more, than the operator allowed.
137
+ const timeoutMs = Math.min(requested ?? askTimeoutMs, askTimeoutMs);
138
+ const ask = registerAsk(conversationId, question, timeoutMs);
139
+ try {
140
+ await sink.postQuestion(conversationId, question);
141
+ }
142
+ catch (error) {
143
+ settleAsk(ask, "cancelled");
144
+ asksById.delete(ask.askId);
145
+ options.logger?.warn?.("interaction bridge: posting the ask question failed.", {
146
+ conversationId,
147
+ error: error instanceof Error ? error.message : String(error),
148
+ });
149
+ sendJson(response, 502, { error: "posting the question to the channel failed." });
150
+ return;
151
+ }
152
+ sendJson(response, 201, { askId: ask.askId, timeoutMs });
153
+ }
154
+ function handleAwaitAsk(request, response, askId, url) {
155
+ const ask = asksById.get(askId);
156
+ if (ask === undefined) {
157
+ sendJson(response, 404, { error: "unknown askId." });
158
+ return;
159
+ }
160
+ if (ask.status !== "pending") {
161
+ // Terminal snapshots are single-consumer: the asking tool reads it once.
162
+ asksById.delete(askId);
163
+ sendJson(response, 200, snapshotOf(ask));
164
+ return;
165
+ }
166
+ const waitMs = Math.min(Math.max(Number(url.searchParams.get("waitMs")) || 0, 0), MAX_LONG_POLL_WAIT_MS);
167
+ if (waitMs === 0) {
168
+ sendJson(response, 200, snapshotOf(ask));
169
+ return;
170
+ }
171
+ let settled = false;
172
+ const respond = (snapshot) => {
173
+ if (settled) {
174
+ return;
175
+ }
176
+ settled = true;
177
+ clearTimeout(pollTimer);
178
+ ask.waiters.delete(respond);
179
+ if (snapshot.status !== "pending") {
180
+ asksById.delete(askId);
181
+ }
182
+ sendJson(response, 200, snapshot);
183
+ };
184
+ const pollTimer = setTimeout(() => respond({ status: "pending" }), waitMs);
185
+ pollTimer.unref?.();
186
+ ask.waiters.add(respond);
187
+ request.on("close", () => {
188
+ clearTimeout(pollTimer);
189
+ ask.waiters.delete(respond);
190
+ });
191
+ }
192
+ async function handleProgress(request, response) {
193
+ const body = await readJsonBody(request);
194
+ const conversationIdRaw = stringField(body, "conversationId");
195
+ const key = stringField(body, "key");
196
+ const message = stringField(body, "message");
197
+ if (conversationIdRaw === undefined || key === undefined || message === undefined) {
198
+ sendJson(response, 400, { error: "conversationId, key, and message are required." });
199
+ return;
200
+ }
201
+ const state = stringField(body, "state");
202
+ const conversationId = normalizeConversationId(conversationIdRaw);
203
+ const sink = sinks.get(channelIdOf(conversationId));
204
+ if (sink === undefined) {
205
+ sendJson(response, 501, { error: "no interactive channel is registered for this conversation." });
206
+ return;
207
+ }
208
+ // Accepted before delivery: progress is best-effort by contract and a slow
209
+ // channel edit must not stall the reporting tool.
210
+ sendJson(response, 202, { ok: true });
211
+ void sink
212
+ .postStatus(conversationId, message, {
213
+ key,
214
+ state: state === "done" || state === "failed" ? state : "working",
215
+ })
216
+ .catch((error) => {
217
+ options.logger?.debug?.("interaction bridge: progress post failed (best-effort).", {
218
+ conversationId,
219
+ error: error instanceof Error ? error.message : String(error),
220
+ });
221
+ });
222
+ }
223
+ const server = createServer((request, response) => {
224
+ void routeRequest(request, response).catch((error) => {
225
+ options.logger?.warn?.("interaction bridge: request handling failed.", {
226
+ error: error instanceof Error ? error.message : String(error),
227
+ });
228
+ if (!response.headersSent) {
229
+ sendJson(response, 500, { error: "internal error." });
230
+ }
231
+ else {
232
+ response.end();
233
+ }
234
+ });
235
+ });
236
+ async function routeRequest(request, response) {
237
+ if (request.headers.authorization !== `Bearer ${token}`) {
238
+ sendJson(response, 401, { error: "missing or invalid bearer token." });
239
+ return;
240
+ }
241
+ const url = new URL(request.url ?? "/", "http://bridge.local");
242
+ if (request.method === "POST" && url.pathname === "/v1/asks") {
243
+ await handleCreateAsk(request, response);
244
+ return;
245
+ }
246
+ const askMatch = /^\/v1\/asks\/([^/]+)$/u.exec(url.pathname);
247
+ if (askMatch !== null && request.method === "GET") {
248
+ handleAwaitAsk(request, response, askMatch[1], url);
249
+ return;
250
+ }
251
+ if (askMatch !== null && request.method === "DELETE") {
252
+ const ask = asksById.get(askMatch[1]);
253
+ if (ask !== undefined) {
254
+ settleAsk(ask, "cancelled");
255
+ asksById.delete(ask.askId);
256
+ }
257
+ response.statusCode = 204;
258
+ response.end();
259
+ return;
260
+ }
261
+ if (request.method === "POST" && url.pathname === "/v1/progress") {
262
+ await handleProgress(request, response);
263
+ return;
264
+ }
265
+ sendJson(response, 404, { error: "unknown route." });
266
+ }
267
+ await listenOn(server, host, options.port ?? DEFAULT_INTERACTION_BRIDGE_PORT);
268
+ const address = server.address();
269
+ const port = typeof address === "object" && address !== null ? address.port : 0;
270
+ const url = `http://${host}:${String(port)}`;
271
+ return {
272
+ url,
273
+ token,
274
+ registerSink(channelId, sink) {
275
+ sinks.set(channelId, sink);
276
+ },
277
+ tryResolveAsk(conversationId, answer) {
278
+ const ask = asksByConversation.get(normalizeConversationId(conversationId));
279
+ if (ask === undefined) {
280
+ return false;
281
+ }
282
+ settleAsk(ask, "answered", answer);
283
+ return true;
284
+ },
285
+ cancelAsks(conversationId) {
286
+ const ask = asksByConversation.get(normalizeConversationId(conversationId));
287
+ if (ask !== undefined) {
288
+ settleAsk(ask, "cancelled");
289
+ }
290
+ },
291
+ env() {
292
+ return {
293
+ MONO_AGENT_INTERACTION_BRIDGE_URL: url,
294
+ MONO_AGENT_INTERACTION_BRIDGE_TOKEN: token,
295
+ MONO_AGENT_ASK_USER_TIMEOUT_MS: String(askTimeoutMs),
296
+ };
297
+ },
298
+ async stop() {
299
+ for (const ask of asksById.values()) {
300
+ settleAsk(ask, "cancelled");
301
+ }
302
+ asksById.clear();
303
+ await new Promise((resolve, reject) => {
304
+ server.close((error) => (error === undefined || error === null ? resolve() : reject(error)));
305
+ });
306
+ },
307
+ };
308
+ }
309
+ async function listenOn(server, host, port) {
310
+ await new Promise((resolve, reject) => {
311
+ server.once("error", reject);
312
+ server.listen(port, host, () => {
313
+ server.removeListener("error", reject);
314
+ resolve();
315
+ });
316
+ });
317
+ }
318
+ async function readJsonBody(request) {
319
+ const chunks = [];
320
+ let total = 0;
321
+ for await (const chunk of request) {
322
+ const buffer = chunk;
323
+ total += buffer.byteLength;
324
+ if (total > MAX_BODY_BYTES) {
325
+ throw new Error("request body too large.");
326
+ }
327
+ chunks.push(buffer);
328
+ }
329
+ if (total === 0) {
330
+ return {};
331
+ }
332
+ try {
333
+ const parsed = JSON.parse(Buffer.concat(chunks).toString("utf8"));
334
+ return typeof parsed === "object" && parsed !== null ? parsed : {};
335
+ }
336
+ catch {
337
+ return {};
338
+ }
339
+ }
340
+ function stringField(body, key) {
341
+ const value = body[key];
342
+ return typeof value === "string" && value.trim().length > 0 ? value : undefined;
343
+ }
344
+ function numberField(body, key) {
345
+ const value = body[key];
346
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
347
+ }
348
+ function sendJson(response, statusCode, body) {
349
+ const payload = JSON.stringify(body);
350
+ response.statusCode = statusCode;
351
+ response.setHeader("content-type", "application/json");
352
+ response.end(payload);
353
+ }
354
+ //# sourceMappingURL=interaction-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-bridge.js","sourceRoot":"","sources":["../src/interaction-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface RunMemoryCommandInput {
2
+ readonly cwd: string;
3
+ readonly env: Record<string, string | undefined>;
4
+ readonly configPath?: string;
5
+ readonly positionals: readonly string[];
6
+ readonly json: boolean;
7
+ readonly limit?: number;
8
+ }
9
+ export declare function runMemoryCommand(input: RunMemoryCommandInput): Promise<number>;
10
+ //# sourceMappingURL=memory-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-command.d.ts","sourceRoot":"","sources":["../src/memory-command.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAmBD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyCpF"}