@mono-agent/agent-app 0.3.0 → 0.4.1

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 (186) hide show
  1. package/README.md +24 -10
  2. package/dist/adapter-send-tools-main.d.ts +3 -0
  3. package/dist/adapter-send-tools-main.d.ts.map +1 -0
  4. package/dist/adapter-send-tools-main.js +20 -0
  5. package/dist/adapter-send-tools-main.js.map +1 -0
  6. package/dist/adapter-send-tools.d.ts +125 -0
  7. package/dist/adapter-send-tools.d.ts.map +1 -0
  8. package/dist/adapter-send-tools.js +629 -0
  9. package/dist/adapter-send-tools.js.map +1 -0
  10. package/dist/app-config.d.ts +86 -26
  11. package/dist/app-config.d.ts.map +1 -1
  12. package/dist/app-config.js +284 -90
  13. package/dist/app-config.js.map +1 -1
  14. package/dist/app.d.ts +51 -20
  15. package/dist/app.d.ts.map +1 -1
  16. package/dist/app.js +889 -119
  17. package/dist/app.js.map +1 -1
  18. package/dist/artifact-retention.d.ts +32 -0
  19. package/dist/artifact-retention.d.ts.map +1 -0
  20. package/dist/artifact-retention.js +111 -0
  21. package/dist/artifact-retention.js.map +1 -0
  22. package/dist/audit-runs.d.ts +12 -0
  23. package/dist/audit-runs.d.ts.map +1 -0
  24. package/dist/audit-runs.js +68 -0
  25. package/dist/audit-runs.js.map +1 -0
  26. package/dist/backfill.d.ts +75 -0
  27. package/dist/backfill.d.ts.map +1 -0
  28. package/dist/backfill.js +350 -0
  29. package/dist/backfill.js.map +1 -0
  30. package/dist/background.d.ts +8 -5
  31. package/dist/background.d.ts.map +1 -1
  32. package/dist/background.js +279 -53
  33. package/dist/background.js.map +1 -1
  34. package/dist/broadcast-recorder.d.ts +27 -0
  35. package/dist/broadcast-recorder.d.ts.map +1 -0
  36. package/dist/broadcast-recorder.js +82 -0
  37. package/dist/broadcast-recorder.js.map +1 -0
  38. package/dist/channel-config-view.d.ts +28 -0
  39. package/dist/channel-config-view.d.ts.map +1 -0
  40. package/dist/channel-config-view.js +79 -0
  41. package/dist/channel-config-view.js.map +1 -0
  42. package/dist/channel-gate.d.ts +22 -0
  43. package/dist/channel-gate.d.ts.map +1 -0
  44. package/dist/channel-gate.js +35 -0
  45. package/dist/channel-gate.js.map +1 -0
  46. package/dist/channel-plugins.d.ts +39 -0
  47. package/dist/channel-plugins.d.ts.map +1 -0
  48. package/dist/channel-plugins.js +346 -0
  49. package/dist/channel-plugins.js.map +1 -0
  50. package/dist/channels.d.ts +62 -66
  51. package/dist/channels.d.ts.map +1 -1
  52. package/dist/channels.js +850 -120
  53. package/dist/channels.js.map +1 -1
  54. package/dist/cli.d.ts +103 -4
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +984 -112
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config-reference.d.ts +24 -0
  59. package/dist/config-reference.d.ts.map +1 -0
  60. package/dist/config-reference.js +580 -0
  61. package/dist/config-reference.js.map +1 -0
  62. package/dist/configured-agent.d.ts +104 -0
  63. package/dist/configured-agent.d.ts.map +1 -0
  64. package/dist/configured-agent.js +578 -0
  65. package/dist/configured-agent.js.map +1 -0
  66. package/dist/consumer-contract.d.ts +36 -0
  67. package/dist/consumer-contract.d.ts.map +1 -0
  68. package/dist/consumer-contract.js +290 -0
  69. package/dist/consumer-contract.js.map +1 -0
  70. package/dist/doctor.d.ts +17 -0
  71. package/dist/doctor.d.ts.map +1 -1
  72. package/dist/doctor.js +392 -95
  73. package/dist/doctor.js.map +1 -1
  74. package/dist/index.d.ts +14 -6
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +7 -3
  77. package/dist/index.js.map +1 -1
  78. package/dist/init.d.ts +23 -7
  79. package/dist/init.d.ts.map +1 -1
  80. package/dist/init.js +91 -26
  81. package/dist/init.js.map +1 -1
  82. package/dist/install-skill.d.ts +1 -1
  83. package/dist/install-skill.js +2 -2
  84. package/dist/install-skill.js.map +1 -1
  85. package/dist/interaction-bridge.d.ts +72 -0
  86. package/dist/interaction-bridge.d.ts.map +1 -0
  87. package/dist/interaction-bridge.js +354 -0
  88. package/dist/interaction-bridge.js.map +1 -0
  89. package/dist/launchd.d.ts +0 -2
  90. package/dist/launchd.d.ts.map +1 -1
  91. package/dist/launchd.js +0 -2
  92. package/dist/launchd.js.map +1 -1
  93. package/dist/memory-command.d.ts +10 -0
  94. package/dist/memory-command.d.ts.map +1 -0
  95. package/dist/memory-command.js +649 -0
  96. package/dist/memory-command.js.map +1 -0
  97. package/dist/memory-recall-main.d.ts +3 -0
  98. package/dist/memory-recall-main.d.ts.map +1 -0
  99. package/dist/memory-recall-main.js +30 -0
  100. package/dist/memory-recall-main.js.map +1 -0
  101. package/dist/memory-recall.d.ts +147 -0
  102. package/dist/memory-recall.d.ts.map +1 -0
  103. package/dist/memory-recall.js +345 -0
  104. package/dist/memory-recall.js.map +1 -0
  105. package/dist/memory-rituals.d.ts +8 -11
  106. package/dist/memory-rituals.d.ts.map +1 -1
  107. package/dist/memory-rituals.js +26 -25
  108. package/dist/memory-rituals.js.map +1 -1
  109. package/dist/metrics.d.ts +13 -0
  110. package/dist/metrics.d.ts.map +1 -0
  111. package/dist/metrics.js +105 -0
  112. package/dist/metrics.js.map +1 -0
  113. package/dist/notify-destinations.d.ts +23 -0
  114. package/dist/notify-destinations.d.ts.map +1 -0
  115. package/dist/notify-destinations.js +79 -0
  116. package/dist/notify-destinations.js.map +1 -0
  117. package/dist/posted-message-index.d.ts +61 -0
  118. package/dist/posted-message-index.d.ts.map +1 -0
  119. package/dist/posted-message-index.js +178 -0
  120. package/dist/posted-message-index.js.map +1 -0
  121. package/dist/proactive-notify.d.ts +32 -0
  122. package/dist/proactive-notify.d.ts.map +1 -0
  123. package/dist/proactive-notify.js +62 -0
  124. package/dist/proactive-notify.js.map +1 -0
  125. package/dist/recipes/base.d.ts +15 -0
  126. package/dist/recipes/base.d.ts.map +1 -0
  127. package/dist/recipes/base.js +51 -0
  128. package/dist/recipes/base.js.map +1 -0
  129. package/dist/recipes/catalog.d.ts +4 -0
  130. package/dist/recipes/catalog.d.ts.map +1 -0
  131. package/dist/recipes/catalog.js +509 -0
  132. package/dist/recipes/catalog.js.map +1 -0
  133. package/dist/recipes/index.d.ts +11 -0
  134. package/dist/recipes/index.d.ts.map +1 -0
  135. package/dist/recipes/index.js +14 -0
  136. package/dist/recipes/index.js.map +1 -0
  137. package/dist/recipes/types.d.ts +70 -0
  138. package/dist/recipes/types.d.ts.map +1 -0
  139. package/dist/recipes/types.js +15 -0
  140. package/dist/recipes/types.js.map +1 -0
  141. package/dist/request-model-override.d.ts +67 -0
  142. package/dist/request-model-override.d.ts.map +1 -0
  143. package/dist/request-model-override.js +96 -0
  144. package/dist/request-model-override.js.map +1 -0
  145. package/dist/runs-health.d.ts +22 -0
  146. package/dist/runs-health.d.ts.map +1 -0
  147. package/dist/runs-health.js +144 -0
  148. package/dist/runs-health.js.map +1 -0
  149. package/dist/seen-conversations.d.ts +22 -0
  150. package/dist/seen-conversations.d.ts.map +1 -0
  151. package/dist/seen-conversations.js +120 -0
  152. package/dist/seen-conversations.js.map +1 -0
  153. package/dist/sessions.d.ts +21 -0
  154. package/dist/sessions.d.ts.map +1 -0
  155. package/dist/sessions.js +45 -0
  156. package/dist/sessions.js.map +1 -0
  157. package/dist/setup.d.ts +29 -0
  158. package/dist/setup.d.ts.map +1 -0
  159. package/dist/setup.js +97 -0
  160. package/dist/setup.js.map +1 -0
  161. package/dist/trigger-overrides.d.ts +17 -0
  162. package/dist/trigger-overrides.d.ts.map +1 -0
  163. package/dist/trigger-overrides.js +30 -0
  164. package/dist/trigger-overrides.js.map +1 -0
  165. package/dist/tui-command.d.ts +56 -0
  166. package/dist/tui-command.d.ts.map +1 -0
  167. package/dist/tui-command.js +160 -0
  168. package/dist/tui-command.js.map +1 -0
  169. package/dist/ui.d.ts +54 -0
  170. package/dist/ui.d.ts.map +1 -0
  171. package/dist/ui.js +157 -0
  172. package/dist/ui.js.map +1 -0
  173. package/dist/web-command.d.ts +39 -0
  174. package/dist/web-command.d.ts.map +1 -0
  175. package/dist/web-command.js +151 -0
  176. package/dist/web-command.js.map +1 -0
  177. package/package.json +22 -17
  178. package/schema/mono-agent.config.schema.json +1686 -0
  179. package/skills/mono-agent-composer/SKILL.md +38 -12
  180. package/skills/mono-agent-composer/agents/openai.yaml +4 -0
  181. package/skills/mono-agent-composer/references/config-blueprint.md +84 -31
  182. package/skills/mono-agent-composer/references/discovery-questions.md +49 -36
  183. package/skills/mono-agent-composer/references/feature-coverage.md +26 -19
  184. package/skills/mono-agent-composer/references/package-map.md +20 -22
  185. package/skills/mono-agent-composer/references/playbooks.md +209 -0
  186. package/skills/mono-agent-composer/references/validation.md +14 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-contract.d.ts","sourceRoot":"","sources":["../src/consumer-contract.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,qBAAqB,oDAAqD,CAAC;AAExF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACnD;AAKD,eAAO,MAAM,kCAAkC;;;;;;CAML,CAAC;AAE3C,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC;AAC5E,KAAK,gBAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;AA+EvE,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC,CAgDxC"}
@@ -0,0 +1,290 @@
1
+ import { cp, mkdtemp, readdir, readFile, rm } from "node:fs/promises";
2
+ import { readFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join, relative } from "node:path";
5
+ import { readMonoAgentConfigJson } from "@mono-agent/config";
6
+ import { loadAppCoreConfig } from "./app-config.js";
7
+ import { validateMonoAgentFolder } from "./doctor.js";
8
+ export const consumerContractNames = ["local-agent-alpha", "local-agent-beta"];
9
+ const forbiddenFixtureSecretPattern = /(sk-|xoxb-|bot[0-9]+:|apiKey|token)/u;
10
+ const forbiddenMcpMemoryPattern = /@mono-agent\/memory-mcp|\bmemory-mcp\b|\bmemory_note\b|\bmemory_recall\b/u;
11
+ export const consumerContractRunSummaryStatuses = {
12
+ running: true,
13
+ succeeded: true,
14
+ failed: true,
15
+ cancelled: true,
16
+ interrupted: true,
17
+ };
18
+ const expectedContracts = {
19
+ "local-agent-alpha": {
20
+ memoryMode: "bujo",
21
+ allowedTools: [
22
+ "Read",
23
+ "Write",
24
+ "Edit",
25
+ "Glob",
26
+ "Grep",
27
+ "Bash",
28
+ "WebFetch",
29
+ "WebSearch",
30
+ "telegram_send_message",
31
+ ],
32
+ channels: {
33
+ telegram: "active",
34
+ slack: "disabled",
35
+ webhook: "active",
36
+ "openai-api": "active",
37
+ cron: "active",
38
+ // Default-ON operator surfaces: active with no `tui`/`live` section in the fixture.
39
+ tui: "active",
40
+ live: "active",
41
+ },
42
+ enabledFlags: {
43
+ telegram: true,
44
+ slack: false,
45
+ webhook: true,
46
+ "openai-api": true,
47
+ },
48
+ },
49
+ "local-agent-beta": {
50
+ memoryMode: "journal",
51
+ allowedTools: [
52
+ "Read",
53
+ "Write",
54
+ "Edit",
55
+ "Glob",
56
+ "Grep",
57
+ "Bash",
58
+ "WebFetch",
59
+ "WebSearch",
60
+ "slack_send_message",
61
+ "memory_recall",
62
+ ],
63
+ channels: {
64
+ telegram: "disabled",
65
+ slack: "active",
66
+ webhook: "disabled",
67
+ "openai-api": "active",
68
+ cron: "active",
69
+ // Default-ON operator surfaces: active with no `tui`/`live` section in the fixture.
70
+ tui: "active",
71
+ live: "active",
72
+ },
73
+ enabledFlags: {
74
+ telegram: false,
75
+ slack: true,
76
+ webhook: false,
77
+ "openai-api": true,
78
+ },
79
+ },
80
+ };
81
+ export async function validateConsumerContractFixture(options) {
82
+ const issues = [];
83
+ let reportOk;
84
+ let sections = [];
85
+ let networkCallCount = 0;
86
+ const secretHits = await scanConsumerFixtureSecrets(options.fixtureDir);
87
+ if (secretHits.length > 0) {
88
+ issues.push(issue("fixture-secrets", `Fixture contains forbidden secret markers: ${secretHits.join(", ")}`));
89
+ }
90
+ const dir = await mkdtemp(join(tmpdir(), `agent-app-consumer-${options.name}-`));
91
+ const restoreFetch = installNetworkGuard(() => {
92
+ networkCallCount += 1;
93
+ });
94
+ try {
95
+ await cp(options.fixtureDir, dir, { recursive: true });
96
+ const configPath = join(dir, "mono-agent.config.json");
97
+ const sourceJson = (await readMonoAgentConfigJson(configPath)).json;
98
+ const config = await loadAppCoreConfig({ env: options.env ?? {}, cwd: dir, configPath });
99
+ const report = await validateMonoAgentFolder({
100
+ env: options.env ?? {},
101
+ cwd: dir,
102
+ configPath,
103
+ liveness: false,
104
+ });
105
+ reportOk = report.ok;
106
+ sections = sectionStatuses(report);
107
+ issues.push(...consumerContractIssues({ name: options.name, sourceJson, config, report }));
108
+ }
109
+ catch (error) {
110
+ issues.push(issue("consumer-contract", reasonOf(error)));
111
+ }
112
+ finally {
113
+ restoreFetch();
114
+ await rm(dir, { recursive: true, force: true });
115
+ }
116
+ if (networkCallCount > 0) {
117
+ issues.push(issue("offline", `Validation attempted ${networkCallCount} network call(s) under liveness:false.`));
118
+ }
119
+ return {
120
+ name: options.name,
121
+ ok: issues.length === 0,
122
+ ...(reportOk === undefined ? {} : { reportOk }),
123
+ networkCallCount,
124
+ sections,
125
+ issues,
126
+ };
127
+ }
128
+ function consumerContractIssues(fixture) {
129
+ const issues = [];
130
+ const expected = expectedContracts[fixture.name];
131
+ if (!fixture.report.ok) {
132
+ issues.push(issue("validation", "validateMonoAgentFolder returned ok=false."));
133
+ }
134
+ issues.push(...channelContractIssues(fixture.report, expected.channels));
135
+ issues.push(...sourceEnabledFlagIssues(fixture.sourceJson, expected.enabledFlags));
136
+ issues.push(...arrayEqualsIssues("tools.allowedTools", fixture.config.tools.allowedTools, expected.allowedTools));
137
+ issues.push(...arrayEqualsIssues("tools.disallowedTools", fixture.config.tools.disallowedTools, []));
138
+ if (fixture.config.tools.allowedTools.length === 0) {
139
+ issues.push(issue("tools.allowedTools", "Allowed tools must not be empty."));
140
+ }
141
+ if (fixture.config.memory?.mode !== expected.memoryMode) {
142
+ issues.push(issue("memory.mode", `Expected ${expected.memoryMode}, got ${String(fixture.config.memory?.mode)}.`));
143
+ }
144
+ if (fixture.config.memory?.recallTool?.enabled !== true) {
145
+ issues.push(issue("memory.recallTool.enabled", "Expected memory recall tool to be enabled."));
146
+ }
147
+ if (!["ok", "waiting"].includes(sectionStatus(fixture.report, "memory") ?? "")) {
148
+ issues.push(issue("memory.section", "Memory doctor section must be ok or waiting."));
149
+ }
150
+ if (typeof fixture.sourceJson.artifacts?.dir !== "string" || fixture.sourceJson.artifacts.dir.trim().length === 0) {
151
+ issues.push(issue("artifacts.dir", "Source fixture must explicitly include artifacts.dir."));
152
+ }
153
+ if (fixture.config.observability?.exporters[0]?.type !== "phoenix") {
154
+ issues.push(issue("observability.exporters", "Expected first observability exporter type to be phoenix."));
155
+ }
156
+ issues.push(...retiredMcpMemorySurfaceIssues(fixture));
157
+ return issues;
158
+ }
159
+ function channelContractIssues(report, expected) {
160
+ const issues = [];
161
+ const statuses = channelStatuses(report);
162
+ const actualKeys = [...statuses.keys()].sort();
163
+ const expectedKeys = Object.keys(expected).sort();
164
+ if (!arraysEqual(actualKeys, expectedKeys)) {
165
+ issues.push(issue("channels", `Expected channel ids ${expectedKeys.join(", ")}, got ${actualKeys.join(", ")}.`));
166
+ }
167
+ for (const [id, expectedState] of Object.entries(expected)) {
168
+ const status = statuses.get(id);
169
+ if (status === undefined) {
170
+ issues.push(issue(`channel:${id}`, "Missing channel section."));
171
+ continue;
172
+ }
173
+ if (status === "error") {
174
+ issues.push(issue(`channel:${id}`, "Channel section must not be error."));
175
+ }
176
+ if (expectedState === "active") {
177
+ if (status !== "ok" && status !== "waiting") {
178
+ issues.push(issue(`channel:${id}`, `Expected active channel to be ok or waiting, got ${status}.`));
179
+ }
180
+ }
181
+ else if (status !== "disabled") {
182
+ issues.push(issue(`channel:${id}`, `Expected disabled channel, got ${status}.`));
183
+ }
184
+ }
185
+ return issues;
186
+ }
187
+ function sourceEnabledFlagIssues(sourceJson, expected) {
188
+ const issues = [];
189
+ for (const [id, enabled] of Object.entries(expected)) {
190
+ const actual = sourceEnabledFlag(sourceJson, id);
191
+ if (actual !== enabled) {
192
+ issues.push(issue(`${id}.enabled`, `Expected ${String(enabled)}, got ${String(actual)}.`));
193
+ }
194
+ }
195
+ return issues;
196
+ }
197
+ function sourceEnabledFlag(sourceJson, id) {
198
+ switch (id) {
199
+ case "telegram":
200
+ return sourceJson.telegram?.enabled === true;
201
+ case "slack":
202
+ return sourceJson.slack?.enabled === true;
203
+ case "webhook":
204
+ return sourceJson.webhook?.enabled === true;
205
+ case "openai-api":
206
+ return sourceJson.openaiApi?.enabled === true;
207
+ default:
208
+ throw new Error(`unknown channel enabled flag: ${id}`);
209
+ }
210
+ }
211
+ function retiredMcpMemorySurfaceIssues(fixture) {
212
+ const issues = [];
213
+ if (fixture.config.tools.allowedTools.includes("memory_note")) {
214
+ issues.push(issue("tools.allowedTools", "Allowed tools must not expose retired memory_note."));
215
+ }
216
+ if (fixture.config.tools.mcpConfigPath === undefined) {
217
+ issues.push(issue("tools.mcpConfigPath", "Expected fixture to resolve tools.mcpConfigPath."));
218
+ return issues;
219
+ }
220
+ const mcpText = readFileSync(fixture.config.tools.mcpConfigPath, "utf8");
221
+ if (forbiddenMcpMemoryPattern.test(mcpText)) {
222
+ issues.push(issue("tools.mcpConfigPath", "MCP config exposes a retired memory MCP surface."));
223
+ }
224
+ return issues;
225
+ }
226
+ function channelStatuses(report) {
227
+ const result = new Map();
228
+ for (const section of report.sections) {
229
+ if (section.id.startsWith("channel:")) {
230
+ result.set(section.id.slice("channel:".length), section.status);
231
+ }
232
+ }
233
+ return result;
234
+ }
235
+ function sectionStatus(report, id) {
236
+ return report.sections.find((section) => section.id === id)?.status;
237
+ }
238
+ function sectionStatuses(report) {
239
+ return report.sections.map(({ id, status }) => ({ id, status }));
240
+ }
241
+ function arrayEqualsIssues(check, actual, expected) {
242
+ if (arraysEqual(actual, expected)) {
243
+ return [];
244
+ }
245
+ return [issue(check, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}.`)];
246
+ }
247
+ function arraysEqual(actual, expected) {
248
+ return actual.length === expected.length && actual.every((value, index) => value === expected[index]);
249
+ }
250
+ async function scanConsumerFixtureSecrets(root) {
251
+ const files = await readFixtureFiles(root);
252
+ return files.flatMap(({ path, content }) => forbiddenFixtureSecretPattern.test(content) ? [relative(root, path)] : []);
253
+ }
254
+ async function readFixtureFiles(root) {
255
+ const entries = await readdir(root, { withFileTypes: true });
256
+ const files = await Promise.all(entries.map(async (entry) => {
257
+ const path = join(root, entry.name);
258
+ if (entry.isDirectory()) {
259
+ return await readFixtureFiles(path);
260
+ }
261
+ if (!entry.isFile()) {
262
+ return [];
263
+ }
264
+ return [{ path, content: await readFile(path, "utf8") }];
265
+ }));
266
+ return files.flat();
267
+ }
268
+ function installNetworkGuard(onCall) {
269
+ const globalWithFetch = globalThis;
270
+ const originalFetch = globalWithFetch.fetch;
271
+ globalWithFetch.fetch = (() => {
272
+ onCall();
273
+ throw new Error("consumer contract fixtures must validate without network access");
274
+ });
275
+ return () => {
276
+ if (originalFetch === undefined) {
277
+ delete globalWithFetch.fetch;
278
+ }
279
+ else {
280
+ globalWithFetch.fetch = originalFetch;
281
+ }
282
+ };
283
+ }
284
+ function issue(check, message) {
285
+ return { check, message };
286
+ }
287
+ function reasonOf(error) {
288
+ return error instanceof Error ? error.message : String(error);
289
+ }
290
+ //# sourceMappingURL=consumer-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-contract.js","sourceRoot":"","sources":["../src/consumer-contract.ts"],"names":[],"mappings":"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"}
package/dist/doctor.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { SandboxEngine } from "@mono-agent/runtime-adapter";
1
2
  import type { MonoAgentAppConfigInput } from "./app-config.js";
2
3
  import type { ChannelDriver } from "./channels.js";
3
4
  export type ValidationStatus = "ok" | "waiting" | "disabled" | "error";
@@ -14,6 +15,22 @@ export interface ValidationReport {
14
15
  }
15
16
  export interface ValidateMonoAgentFolderOptions extends MonoAgentAppConfigInput {
16
17
  readonly drivers?: readonly ChannelDriver[];
18
+ /** Optional sandbox engine override for deterministic validation tests. */
19
+ readonly sandboxEngine?: SandboxEngine;
20
+ /**
21
+ * When false, validation must not create directories or otherwise mutate the
22
+ * target filesystem. This is used for downstream consumer validation from a
23
+ * different working directory. Defaults to true.
24
+ */
25
+ readonly allowFilesystemWrites?: boolean;
26
+ /**
27
+ * When false, skip the live network probes (Ollama reachability and the
28
+ * Phoenix export probe) and validate only structure/shape. Those probes can
29
+ * only ever downgrade a section to `waiting`, never `error`, so skipping them
30
+ * leaves the pass/fail verdict (`ok`) unchanged while removing up to two
31
+ * 3s timeouts — the start preflight relies on this. Defaults to true.
32
+ */
33
+ readonly liveness?: boolean;
17
34
  }
18
35
  /**
19
36
  * Loads every config section the app would use at start and reports it
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAiC3B"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAUjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAuD3B"}