@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,1686 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/robertsreberski/mono-agent/main/packages/agent-app/schema/mono-agent.config.schema.json",
4
+ "title": "mono-agent.config.json",
5
+ "type": "object",
6
+ "required": [
7
+ "runtime",
8
+ "context"
9
+ ],
10
+ "additionalProperties": false,
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string"
14
+ },
15
+ "runtime": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "properties": {
19
+ "model": {
20
+ "description": "Configures model for the runtime section.",
21
+ "examples": [
22
+ "claude:claude-sonnet-4-6"
23
+ ],
24
+ "type": "string"
25
+ },
26
+ "fallbackModels": {
27
+ "description": "Configures fallbackModels for the runtime section.",
28
+ "examples": [
29
+ [
30
+ "pi:ollama:gemma4:31b"
31
+ ]
32
+ ],
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string"
36
+ }
37
+ },
38
+ "executionMode": {
39
+ "description": "Configures executionMode for the runtime section.",
40
+ "examples": [
41
+ "inferred"
42
+ ],
43
+ "type": "string",
44
+ "default": "inferred"
45
+ },
46
+ "effort": {
47
+ "description": "Configures effort for the runtime section.",
48
+ "examples": [
49
+ "medium"
50
+ ],
51
+ "type": "string"
52
+ },
53
+ "permissionMode": {
54
+ "description": "Configures permissionMode for the runtime section.",
55
+ "examples": [
56
+ "default"
57
+ ],
58
+ "type": "string"
59
+ },
60
+ "maxTurns": {
61
+ "description": "Configures maxTurns for the runtime section.",
62
+ "examples": [
63
+ 1
64
+ ],
65
+ "type": "integer"
66
+ },
67
+ "workspace": {
68
+ "description": "Configures workspace for the runtime section.",
69
+ "examples": [
70
+ "."
71
+ ],
72
+ "type": "string",
73
+ "default": "."
74
+ },
75
+ "session": {
76
+ "type": "object",
77
+ "additionalProperties": false,
78
+ "properties": {
79
+ "mode": {
80
+ "description": "Configures session.mode for the runtime section.",
81
+ "examples": [
82
+ "continuous"
83
+ ],
84
+ "type": "string",
85
+ "default": "continuous"
86
+ },
87
+ "idleTimeoutMs": {
88
+ "description": "Configures session.idleTimeoutMs for the runtime section.",
89
+ "examples": [
90
+ 1800000
91
+ ],
92
+ "type": "integer",
93
+ "default": 1800000
94
+ },
95
+ "rollover": {
96
+ "description": "Configures session.rollover for the runtime section.",
97
+ "examples": [
98
+ "none"
99
+ ],
100
+ "type": "string",
101
+ "default": "none"
102
+ },
103
+ "rolloverTimezone": {
104
+ "description": "Configures session.rolloverTimezone for the runtime section.",
105
+ "examples": [
106
+ "example"
107
+ ],
108
+ "type": "string"
109
+ },
110
+ "rolloverNotice": {
111
+ "description": "Configures session.rolloverNotice for the runtime section.",
112
+ "examples": [
113
+ true
114
+ ],
115
+ "type": "boolean",
116
+ "default": false
117
+ },
118
+ "isolateProactive": {
119
+ "description": "Configures session.isolateProactive for the runtime section.",
120
+ "examples": [
121
+ true
122
+ ],
123
+ "type": "boolean",
124
+ "default": false
125
+ }
126
+ }
127
+ }
128
+ },
129
+ "required": [
130
+ "model"
131
+ ]
132
+ },
133
+ "concurrency": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "properties": {
137
+ "maxConcurrentRuns": {
138
+ "description": "Configures maxConcurrentRuns for the concurrency section.",
139
+ "examples": [
140
+ 1
141
+ ],
142
+ "type": "integer"
143
+ },
144
+ "maxPendingRuns": {
145
+ "description": "Configures maxPendingRuns for the concurrency section.",
146
+ "examples": [
147
+ 1
148
+ ],
149
+ "type": "integer"
150
+ }
151
+ }
152
+ },
153
+ "context": {
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "properties": {
157
+ "identityPath": {
158
+ "description": "Configures identityPath for the context section.",
159
+ "examples": [
160
+ "./IDENTITY.md"
161
+ ],
162
+ "type": "string"
163
+ },
164
+ "soulPath": {
165
+ "description": "Configures soulPath for the context section.",
166
+ "examples": [
167
+ "example"
168
+ ],
169
+ "type": "string"
170
+ },
171
+ "skillsRoot": {
172
+ "description": "Configures skillsRoot for the context section.",
173
+ "examples": [
174
+ "example"
175
+ ],
176
+ "type": "string"
177
+ },
178
+ "selectedSkills": {
179
+ "description": "Configures selectedSkills for the context section.",
180
+ "examples": [
181
+ [
182
+ "example"
183
+ ]
184
+ ],
185
+ "type": "array",
186
+ "items": {
187
+ "type": "string"
188
+ },
189
+ "default": []
190
+ },
191
+ "skillMaxBytes": {
192
+ "description": "Configures skillMaxBytes for the context section.",
193
+ "examples": [
194
+ 48000
195
+ ],
196
+ "type": "integer",
197
+ "default": 48000
198
+ },
199
+ "skillDisclosure": {
200
+ "description": "Configures skillDisclosure for the context section.",
201
+ "examples": [
202
+ "full"
203
+ ],
204
+ "type": "string",
205
+ "default": "full"
206
+ }
207
+ },
208
+ "required": [
209
+ "identityPath"
210
+ ]
211
+ },
212
+ "memory": {
213
+ "type": "object",
214
+ "additionalProperties": false,
215
+ "properties": {
216
+ "backend": {
217
+ "description": "Configures backend for the memory section.",
218
+ "examples": [
219
+ "bujo"
220
+ ],
221
+ "type": "string",
222
+ "default": "bujo"
223
+ },
224
+ "mode": {
225
+ "description": "Configures mode for the memory section.",
226
+ "examples": [
227
+ "journal"
228
+ ],
229
+ "type": "string"
230
+ },
231
+ "path": {
232
+ "description": "Configures path for the memory section.",
233
+ "examples": [
234
+ "./.mono-agent/memory"
235
+ ],
236
+ "type": "string"
237
+ },
238
+ "maxBytes": {
239
+ "description": "Configures maxBytes for the memory section.",
240
+ "examples": [
241
+ 64000
242
+ ],
243
+ "type": "integer",
244
+ "default": 64000
245
+ },
246
+ "writeMode": {
247
+ "description": "Configures writeMode for the memory section.",
248
+ "examples": [
249
+ "append-host-summary"
250
+ ],
251
+ "type": "string",
252
+ "default": "append-host-summary"
253
+ },
254
+ "supermemory": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "properties": {
258
+ "baseUrl": {
259
+ "description": "Configures supermemory.baseUrl for the memory section.",
260
+ "examples": [
261
+ "example"
262
+ ],
263
+ "type": "string"
264
+ },
265
+ "apiKey": {
266
+ "description": "Secret value for memory.supermemory.apiKey; prefer the env override.",
267
+ "examples": [
268
+ "example"
269
+ ],
270
+ "type": "string"
271
+ },
272
+ "apiKeyEnv": {
273
+ "description": "Secret value for memory.supermemory.apiKeyEnv; prefer the env override.",
274
+ "examples": [
275
+ "example"
276
+ ],
277
+ "type": "string"
278
+ },
279
+ "container": {
280
+ "description": "Configures supermemory.container for the memory section.",
281
+ "examples": [
282
+ "example"
283
+ ],
284
+ "type": "string"
285
+ },
286
+ "timeoutMs": {
287
+ "description": "Configures supermemory.timeoutMs for the memory section.",
288
+ "examples": [
289
+ 10000
290
+ ],
291
+ "type": "integer",
292
+ "default": 10000
293
+ },
294
+ "exposeMcpServer": {
295
+ "description": "Configures supermemory.exposeMcpServer for the memory section.",
296
+ "examples": [
297
+ true
298
+ ],
299
+ "type": "boolean",
300
+ "default": false
301
+ }
302
+ }
303
+ },
304
+ "embeddings": {
305
+ "type": "object",
306
+ "additionalProperties": false,
307
+ "properties": {
308
+ "provider": {
309
+ "description": "Configures embeddings.provider for the memory section.",
310
+ "examples": [
311
+ "ollama"
312
+ ],
313
+ "type": "string"
314
+ },
315
+ "model": {
316
+ "description": "Configures embeddings.model for the memory section.",
317
+ "examples": [
318
+ "nomic-embed-text"
319
+ ],
320
+ "type": "string"
321
+ },
322
+ "endpoint": {
323
+ "description": "Configures embeddings.endpoint for the memory section.",
324
+ "examples": [
325
+ "example"
326
+ ],
327
+ "type": "string"
328
+ },
329
+ "apiKey": {
330
+ "description": "Secret value for memory.embeddings.apiKey; prefer the env override.",
331
+ "examples": [
332
+ "example"
333
+ ],
334
+ "type": "string"
335
+ },
336
+ "apiKeyEnv": {
337
+ "description": "Secret value for memory.embeddings.apiKeyEnv; prefer the env override.",
338
+ "examples": [
339
+ "example"
340
+ ],
341
+ "type": "string"
342
+ },
343
+ "dim": {
344
+ "description": "Configures embeddings.dim for the memory section.",
345
+ "examples": [
346
+ 1
347
+ ],
348
+ "type": "integer"
349
+ },
350
+ "timeoutMs": {
351
+ "description": "Configures embeddings.timeoutMs for the memory section.",
352
+ "examples": [
353
+ 10000
354
+ ],
355
+ "type": "integer",
356
+ "default": 10000
357
+ },
358
+ "circuitBreaker": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "properties": {
362
+ "failureThreshold": {
363
+ "description": "Configures embeddings.circuitBreaker.failureThreshold for the memory section.",
364
+ "examples": [
365
+ 3
366
+ ],
367
+ "type": "integer",
368
+ "default": 3
369
+ },
370
+ "cooldownMs": {
371
+ "description": "Configures embeddings.circuitBreaker.cooldownMs for the memory section.",
372
+ "examples": [
373
+ 30000
374
+ ],
375
+ "type": "integer",
376
+ "default": 30000
377
+ }
378
+ }
379
+ }
380
+ }
381
+ },
382
+ "llm": {
383
+ "type": "object",
384
+ "additionalProperties": false,
385
+ "properties": {
386
+ "provider": {
387
+ "description": "Configures llm.provider for the memory section.",
388
+ "examples": [
389
+ "agent-host"
390
+ ],
391
+ "type": "string"
392
+ },
393
+ "model": {
394
+ "description": "Configures llm.model for the memory section.",
395
+ "examples": [
396
+ "claude:claude-sonnet-4-6"
397
+ ],
398
+ "type": "string"
399
+ },
400
+ "executionMode": {
401
+ "description": "Configures llm.executionMode for the memory section.",
402
+ "examples": [
403
+ "example"
404
+ ],
405
+ "type": "string"
406
+ },
407
+ "trace": {
408
+ "description": "Configures llm.trace for the memory section.",
409
+ "examples": [
410
+ true
411
+ ],
412
+ "type": "boolean",
413
+ "default": true
414
+ },
415
+ "timeoutMs": {
416
+ "description": "Configures llm.timeoutMs for the memory section.",
417
+ "examples": [
418
+ 60000
419
+ ],
420
+ "type": "integer",
421
+ "default": 60000
422
+ },
423
+ "endpoint": {
424
+ "description": "Configures llm.endpoint for the memory section.",
425
+ "examples": [
426
+ "example"
427
+ ],
428
+ "type": "string"
429
+ }
430
+ }
431
+ },
432
+ "recallTool": {
433
+ "type": "object",
434
+ "additionalProperties": false,
435
+ "properties": {
436
+ "enabled": {
437
+ "description": "Enables the memory capability.",
438
+ "examples": [
439
+ true
440
+ ],
441
+ "type": "boolean"
442
+ }
443
+ }
444
+ },
445
+ "consolidation": {
446
+ "type": "object",
447
+ "additionalProperties": false,
448
+ "properties": {
449
+ "enabled": {
450
+ "description": "Enables the memory capability.",
451
+ "examples": [
452
+ true
453
+ ],
454
+ "type": "boolean",
455
+ "default": true
456
+ },
457
+ "cron": {
458
+ "description": "Configures consolidation.cron for the memory section.",
459
+ "examples": [
460
+ "0 */2 * * *"
461
+ ],
462
+ "type": "string",
463
+ "default": "0 */2 * * *"
464
+ }
465
+ }
466
+ }
467
+ }
468
+ },
469
+ "tools": {
470
+ "type": "object",
471
+ "additionalProperties": false,
472
+ "properties": {
473
+ "allowedTools": {
474
+ "description": "Configures allowedTools for the tools section.",
475
+ "examples": [
476
+ [
477
+ "Read",
478
+ "Grep"
479
+ ]
480
+ ],
481
+ "type": "array",
482
+ "items": {
483
+ "type": "string"
484
+ },
485
+ "default": []
486
+ },
487
+ "disallowedTools": {
488
+ "description": "Configures disallowedTools for the tools section.",
489
+ "examples": [
490
+ [
491
+ "Read",
492
+ "Grep"
493
+ ]
494
+ ],
495
+ "type": "array",
496
+ "items": {
497
+ "type": "string"
498
+ },
499
+ "default": []
500
+ },
501
+ "mcpConfigPath": {
502
+ "description": "Configures mcpConfigPath for the tools section.",
503
+ "examples": [
504
+ "example"
505
+ ],
506
+ "type": "string"
507
+ },
508
+ "mcpCallTimeoutMs": {
509
+ "description": "Configures mcpCallTimeoutMs for the tools section.",
510
+ "examples": [
511
+ 120000
512
+ ],
513
+ "type": "integer",
514
+ "default": 120000
515
+ },
516
+ "mcpCallMaxTotalTimeoutMs": {
517
+ "description": "Configures mcpCallMaxTotalTimeoutMs for the tools section.",
518
+ "examples": [
519
+ 2700000
520
+ ],
521
+ "type": "integer",
522
+ "default": 2700000
523
+ }
524
+ }
525
+ },
526
+ "sandbox": {
527
+ "type": "object",
528
+ "additionalProperties": false,
529
+ "properties": {
530
+ "mode": {
531
+ "description": "Configures mode for the sandbox section.",
532
+ "examples": [
533
+ "native"
534
+ ],
535
+ "type": "string"
536
+ },
537
+ "network": {
538
+ "type": "object",
539
+ "additionalProperties": false,
540
+ "properties": {
541
+ "mode": {
542
+ "description": "Configures network.mode for the sandbox section.",
543
+ "examples": [
544
+ "none"
545
+ ],
546
+ "type": "string",
547
+ "default": "none"
548
+ },
549
+ "allowlist": {
550
+ "description": "Configures network.allowlist for the sandbox section.",
551
+ "examples": [
552
+ [
553
+ "example"
554
+ ]
555
+ ],
556
+ "type": "array",
557
+ "items": {
558
+ "type": "string"
559
+ }
560
+ }
561
+ }
562
+ },
563
+ "readableRoots": {
564
+ "description": "Configures readableRoots for the sandbox section.",
565
+ "examples": [
566
+ [
567
+ "example"
568
+ ]
569
+ ],
570
+ "type": "array",
571
+ "items": {
572
+ "type": "string"
573
+ }
574
+ },
575
+ "writableRoots": {
576
+ "description": "Configures writableRoots for the sandbox section.",
577
+ "examples": [
578
+ [
579
+ "example"
580
+ ]
581
+ ],
582
+ "type": "array",
583
+ "items": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ "denyWrite": {
588
+ "description": "Configures denyWrite for the sandbox section.",
589
+ "examples": [
590
+ [
591
+ "example"
592
+ ]
593
+ ],
594
+ "type": "array",
595
+ "items": {
596
+ "type": "string"
597
+ }
598
+ },
599
+ "fallback": {
600
+ "description": "Configures fallback for the sandbox section.",
601
+ "examples": [
602
+ "fail-closed"
603
+ ],
604
+ "type": "string",
605
+ "default": "fail-closed"
606
+ },
607
+ "unsafeAllowHostProcess": {
608
+ "description": "Configures unsafeAllowHostProcess for the sandbox section.",
609
+ "examples": [
610
+ true
611
+ ],
612
+ "type": "boolean",
613
+ "default": false
614
+ }
615
+ }
616
+ },
617
+ "artifacts": {
618
+ "type": "object",
619
+ "additionalProperties": false,
620
+ "properties": {
621
+ "dir": {
622
+ "description": "Configures dir for the artifacts section.",
623
+ "examples": [
624
+ ".mono-agent/artifacts"
625
+ ],
626
+ "type": "string",
627
+ "default": ".mono-agent/artifacts"
628
+ },
629
+ "retention": {
630
+ "type": "object",
631
+ "additionalProperties": false,
632
+ "properties": {
633
+ "maxAgeDays": {
634
+ "description": "Configures retention.maxAgeDays for the artifacts section.",
635
+ "examples": [
636
+ 365
637
+ ],
638
+ "type": "integer",
639
+ "default": 365
640
+ },
641
+ "maxCount": {
642
+ "description": "Configures retention.maxCount for the artifacts section.",
643
+ "examples": [
644
+ 50000
645
+ ],
646
+ "type": "integer",
647
+ "default": 50000
648
+ },
649
+ "dryRun": {
650
+ "description": "Configures retention.dryRun for the artifacts section.",
651
+ "examples": [
652
+ true
653
+ ],
654
+ "type": "boolean",
655
+ "default": false
656
+ }
657
+ }
658
+ },
659
+ "memoryRetention": {
660
+ "type": "object",
661
+ "additionalProperties": false,
662
+ "properties": {
663
+ "maxAgeDays": {
664
+ "description": "Configures memoryRetention.maxAgeDays for the artifacts section.",
665
+ "examples": [
666
+ 7
667
+ ],
668
+ "type": "integer",
669
+ "default": 7
670
+ },
671
+ "maxCount": {
672
+ "description": "Configures memoryRetention.maxCount for the artifacts section.",
673
+ "examples": [
674
+ 5000
675
+ ],
676
+ "type": "integer",
677
+ "default": 5000
678
+ },
679
+ "dryRun": {
680
+ "description": "Configures memoryRetention.dryRun for the artifacts section.",
681
+ "examples": [
682
+ true
683
+ ],
684
+ "type": "boolean",
685
+ "default": false
686
+ }
687
+ }
688
+ }
689
+ }
690
+ },
691
+ "traceability": {
692
+ "type": "object",
693
+ "additionalProperties": false,
694
+ "properties": {
695
+ "registryDir": {
696
+ "description": "Configures registryDir for the traceability section.",
697
+ "examples": [
698
+ ".mono-agent/trace-sources"
699
+ ],
700
+ "type": "string",
701
+ "default": ".mono-agent/trace-sources"
702
+ },
703
+ "sourceId": {
704
+ "description": "Configures sourceId for the traceability section.",
705
+ "examples": [
706
+ "my-agent"
707
+ ],
708
+ "type": "string"
709
+ },
710
+ "sourceLabel": {
711
+ "description": "Configures sourceLabel for the traceability section.",
712
+ "examples": [
713
+ "My Agent"
714
+ ],
715
+ "type": "string"
716
+ },
717
+ "heartbeatMs": {
718
+ "description": "Configures heartbeatMs for the traceability section.",
719
+ "examples": [
720
+ 10000
721
+ ],
722
+ "type": "integer",
723
+ "default": 10000
724
+ },
725
+ "staleAfterMs": {
726
+ "description": "Configures staleAfterMs for the traceability section.",
727
+ "examples": [
728
+ 30000
729
+ ],
730
+ "type": "integer",
731
+ "default": 30000
732
+ },
733
+ "globalDiscovery": {
734
+ "description": "Configures globalDiscovery for the traceability section.",
735
+ "examples": [
736
+ true
737
+ ],
738
+ "type": "boolean",
739
+ "default": true
740
+ }
741
+ }
742
+ },
743
+ "observability": {
744
+ "type": "object",
745
+ "additionalProperties": false,
746
+ "properties": {
747
+ "exporters": {
748
+ "description": "Configures exporters for the observability section.",
749
+ "examples": [
750
+ []
751
+ ],
752
+ "type": "array",
753
+ "items": {
754
+ "type": "object",
755
+ "additionalProperties": true
756
+ }
757
+ }
758
+ }
759
+ },
760
+ "providers": {
761
+ "type": "object",
762
+ "additionalProperties": false,
763
+ "properties": {
764
+ "piAuthPath": {
765
+ "description": "Configures piAuthPath for the providers section.",
766
+ "examples": [
767
+ "~/.pi/agent/auth.json"
768
+ ],
769
+ "type": "string"
770
+ },
771
+ "piNative": {
772
+ "type": "object",
773
+ "additionalProperties": false,
774
+ "properties": {
775
+ "piMaxRetries": {
776
+ "description": "Configures piNative.piMaxRetries for the providers section.",
777
+ "examples": [
778
+ 2
779
+ ],
780
+ "type": "integer",
781
+ "default": 2
782
+ },
783
+ "maxRetryDelayMs": {
784
+ "description": "Configures piNative.maxRetryDelayMs for the providers section.",
785
+ "examples": [
786
+ 60000
787
+ ],
788
+ "type": "integer",
789
+ "default": 60000
790
+ },
791
+ "piSessionsRoot": {
792
+ "description": "Configures piNative.piSessionsRoot for the providers section.",
793
+ "examples": [
794
+ "example"
795
+ ],
796
+ "type": "string"
797
+ }
798
+ }
799
+ },
800
+ "local": {
801
+ "description": "Configures local for the providers section.",
802
+ "examples": [
803
+ []
804
+ ],
805
+ "type": "array",
806
+ "items": {
807
+ "type": "object",
808
+ "additionalProperties": true
809
+ }
810
+ }
811
+ }
812
+ },
813
+ "interaction": {
814
+ "type": "object",
815
+ "additionalProperties": false,
816
+ "properties": {
817
+ "bridge": {
818
+ "type": "object",
819
+ "additionalProperties": false,
820
+ "properties": {
821
+ "host": {
822
+ "description": "Loopback host for the app-owned ask_user/tool-progress bridge.",
823
+ "examples": [
824
+ "127.0.0.1"
825
+ ],
826
+ "type": "string",
827
+ "default": "127.0.0.1"
828
+ },
829
+ "port": {
830
+ "description": "Bridge port. 0 chooses an ephemeral port.",
831
+ "examples": [
832
+ 0
833
+ ],
834
+ "type": "integer",
835
+ "default": 0
836
+ }
837
+ }
838
+ },
839
+ "askUser": {
840
+ "type": "object",
841
+ "additionalProperties": false,
842
+ "properties": {
843
+ "timeoutMs": {
844
+ "description": "Maximum wait for one ask_user question.",
845
+ "examples": [
846
+ 600000
847
+ ],
848
+ "type": "integer",
849
+ "default": 600000
850
+ }
851
+ }
852
+ },
853
+ "progress": {
854
+ "type": "object",
855
+ "additionalProperties": false,
856
+ "properties": {
857
+ "enabled": {
858
+ "description": "Whether tool progress posts are relayed to channel status messages.",
859
+ "examples": [
860
+ true
861
+ ],
862
+ "type": "boolean",
863
+ "default": true
864
+ }
865
+ }
866
+ }
867
+ }
868
+ },
869
+ "channels": {
870
+ "type": "object",
871
+ "additionalProperties": false,
872
+ "properties": {
873
+ "plugins": {
874
+ "type": "array",
875
+ "description": "External channel plugins loaded by package name.",
876
+ "items": {
877
+ "type": "object",
878
+ "additionalProperties": false,
879
+ "required": [
880
+ "package"
881
+ ],
882
+ "properties": {
883
+ "package": {
884
+ "type": "string",
885
+ "description": "Package name exporting createChannelDriver(options)."
886
+ },
887
+ "id": {
888
+ "type": "string",
889
+ "description": "Optional channel id override."
890
+ },
891
+ "label": {
892
+ "type": "string",
893
+ "description": "Optional operator-facing label."
894
+ },
895
+ "config": {
896
+ "type": "object",
897
+ "description": "Plugin-owned config payload.",
898
+ "additionalProperties": true
899
+ }
900
+ }
901
+ }
902
+ }
903
+ }
904
+ },
905
+ "cron": {
906
+ "type": "object",
907
+ "additionalProperties": false,
908
+ "properties": {
909
+ "jobs": {
910
+ "description": "Inline scheduled jobs. Folder-based cron jobs still merge from cron.dir.",
911
+ "examples": [
912
+ [
913
+ {
914
+ "id": "daily",
915
+ "expression": "0 8 * * *",
916
+ "prompt": "Summarize the overnight queue."
917
+ }
918
+ ]
919
+ ],
920
+ "type": "array",
921
+ "items": {
922
+ "type": "object",
923
+ "additionalProperties": true,
924
+ "required": [
925
+ "id",
926
+ "expression",
927
+ "prompt"
928
+ ],
929
+ "properties": {
930
+ "id": {
931
+ "type": "string"
932
+ },
933
+ "enabled": {
934
+ "type": "boolean"
935
+ },
936
+ "expression": {
937
+ "type": "string"
938
+ },
939
+ "timezone": {
940
+ "type": "string"
941
+ },
942
+ "prompt": {
943
+ "type": "string"
944
+ },
945
+ "conversationId": {
946
+ "type": "string"
947
+ },
948
+ "maxRunMs": {
949
+ "type": "integer"
950
+ },
951
+ "notify": {
952
+ "type": "boolean"
953
+ },
954
+ "notifyConversationId": {
955
+ "type": "string"
956
+ },
957
+ "notifyFailureCooldownHours": {
958
+ "type": "integer"
959
+ },
960
+ "model": {
961
+ "type": "string"
962
+ },
963
+ "effort": {
964
+ "type": "string"
965
+ }
966
+ }
967
+ },
968
+ "default": []
969
+ },
970
+ "enabled": {
971
+ "description": "Enables the cron capability.",
972
+ "examples": [
973
+ true
974
+ ],
975
+ "type": "boolean",
976
+ "default": false
977
+ },
978
+ "dir": {
979
+ "description": "Configures dir for the cron section.",
980
+ "examples": [
981
+ "cron"
982
+ ],
983
+ "type": "string",
984
+ "default": "cron"
985
+ },
986
+ "expression": {
987
+ "description": "Configures expression for the cron section.",
988
+ "examples": [
989
+ "example"
990
+ ],
991
+ "type": "string"
992
+ },
993
+ "timezone": {
994
+ "description": "Configures timezone for the cron section.",
995
+ "examples": [
996
+ "UTC"
997
+ ],
998
+ "type": "string",
999
+ "default": "UTC"
1000
+ },
1001
+ "prompt": {
1002
+ "description": "Configures prompt for the cron section.",
1003
+ "examples": [
1004
+ "example"
1005
+ ],
1006
+ "type": "string"
1007
+ },
1008
+ "conversationId": {
1009
+ "description": "Configures conversationId for the cron section.",
1010
+ "examples": [
1011
+ "example"
1012
+ ],
1013
+ "type": "string"
1014
+ },
1015
+ "notify": {
1016
+ "description": "Configures notify for the cron section.",
1017
+ "examples": [
1018
+ "false"
1019
+ ],
1020
+ "type": "boolean",
1021
+ "default": false
1022
+ },
1023
+ "notifyConversationId": {
1024
+ "description": "Configures notifyConversationId for the cron section.",
1025
+ "examples": [
1026
+ "example"
1027
+ ],
1028
+ "type": "string"
1029
+ },
1030
+ "notifyFailureCooldownHours": {
1031
+ "description": "Configures notifyFailureCooldownHours for the cron section.",
1032
+ "examples": [
1033
+ 6
1034
+ ],
1035
+ "type": "integer",
1036
+ "default": 6
1037
+ },
1038
+ "model": {
1039
+ "description": "Configures model for the cron section.",
1040
+ "examples": [
1041
+ "example"
1042
+ ],
1043
+ "type": "string"
1044
+ },
1045
+ "effort": {
1046
+ "description": "Configures effort for the cron section.",
1047
+ "examples": [
1048
+ "example"
1049
+ ],
1050
+ "type": "string"
1051
+ }
1052
+ }
1053
+ },
1054
+ "webhook": {
1055
+ "type": "object",
1056
+ "additionalProperties": false,
1057
+ "properties": {
1058
+ "endpoints": {
1059
+ "description": "Additional named webhook endpoints beyond webhook.path.",
1060
+ "examples": [
1061
+ [
1062
+ {
1063
+ "name": "triage",
1064
+ "path": "/webhook/triage",
1065
+ "prompt": "Triage this payload."
1066
+ }
1067
+ ]
1068
+ ],
1069
+ "type": "array",
1070
+ "items": {
1071
+ "type": "object",
1072
+ "additionalProperties": true,
1073
+ "required": [
1074
+ "path"
1075
+ ],
1076
+ "properties": {
1077
+ "name": {
1078
+ "type": "string"
1079
+ },
1080
+ "path": {
1081
+ "type": "string"
1082
+ },
1083
+ "mode": {
1084
+ "enum": [
1085
+ "sync",
1086
+ "async"
1087
+ ]
1088
+ },
1089
+ "enabled": {
1090
+ "type": "boolean"
1091
+ },
1092
+ "prompt": {
1093
+ "type": "string"
1094
+ },
1095
+ "notify": {
1096
+ "type": "boolean"
1097
+ },
1098
+ "notifyConversationId": {
1099
+ "type": "string"
1100
+ },
1101
+ "model": {
1102
+ "type": "string"
1103
+ },
1104
+ "effort": {
1105
+ "type": "string"
1106
+ }
1107
+ }
1108
+ },
1109
+ "default": []
1110
+ },
1111
+ "enabled": {
1112
+ "description": "Enables the webhook capability.",
1113
+ "examples": [
1114
+ true
1115
+ ],
1116
+ "type": "boolean",
1117
+ "default": false
1118
+ },
1119
+ "dir": {
1120
+ "description": "Configures dir for the webhook section.",
1121
+ "examples": [
1122
+ "webhook"
1123
+ ],
1124
+ "type": "string",
1125
+ "default": "webhook"
1126
+ },
1127
+ "host": {
1128
+ "description": "Configures host for the webhook section.",
1129
+ "examples": [
1130
+ "127.0.0.1"
1131
+ ],
1132
+ "type": "string",
1133
+ "default": "127.0.0.1"
1134
+ },
1135
+ "port": {
1136
+ "description": "Configures port for the webhook section.",
1137
+ "examples": [
1138
+ 0
1139
+ ],
1140
+ "type": "integer",
1141
+ "default": 0
1142
+ },
1143
+ "path": {
1144
+ "description": "Configures path for the webhook section.",
1145
+ "examples": [
1146
+ "/webhook/invoke"
1147
+ ],
1148
+ "type": "string",
1149
+ "default": "/webhook/invoke"
1150
+ },
1151
+ "prompt": {
1152
+ "description": "Configures prompt for the webhook section.",
1153
+ "examples": [
1154
+ "example"
1155
+ ],
1156
+ "type": "string"
1157
+ },
1158
+ "notify": {
1159
+ "description": "Configures notify for the webhook section.",
1160
+ "examples": [
1161
+ "example"
1162
+ ],
1163
+ "type": "boolean"
1164
+ },
1165
+ "notifyConversationId": {
1166
+ "description": "Configures notifyConversationId for the webhook section.",
1167
+ "examples": [
1168
+ "example"
1169
+ ],
1170
+ "type": "string"
1171
+ },
1172
+ "model": {
1173
+ "description": "Configures model for the webhook section.",
1174
+ "examples": [
1175
+ "example"
1176
+ ],
1177
+ "type": "string"
1178
+ },
1179
+ "effort": {
1180
+ "description": "Configures effort for the webhook section.",
1181
+ "examples": [
1182
+ "example"
1183
+ ],
1184
+ "type": "string"
1185
+ },
1186
+ "allowNonLoopback": {
1187
+ "description": "Configures allowNonLoopback for the webhook section.",
1188
+ "examples": [
1189
+ true
1190
+ ],
1191
+ "type": "boolean"
1192
+ },
1193
+ "defaultMode": {
1194
+ "description": "Configures defaultMode for the webhook section.",
1195
+ "examples": [
1196
+ "sync"
1197
+ ],
1198
+ "type": "string",
1199
+ "default": "sync"
1200
+ },
1201
+ "retentionMs": {
1202
+ "description": "Configures retentionMs for the webhook section.",
1203
+ "examples": [
1204
+ 300000
1205
+ ],
1206
+ "type": "integer",
1207
+ "default": 300000
1208
+ },
1209
+ "maxStoredRequests": {
1210
+ "description": "Configures maxStoredRequests for the webhook section.",
1211
+ "examples": [
1212
+ "100"
1213
+ ],
1214
+ "type": "integer",
1215
+ "default": 100
1216
+ },
1217
+ "maxRunMs": {
1218
+ "description": "Configures maxRunMs for the webhook section.",
1219
+ "examples": [
1220
+ 1
1221
+ ],
1222
+ "type": "integer"
1223
+ }
1224
+ }
1225
+ },
1226
+ "slack": {
1227
+ "type": "object",
1228
+ "additionalProperties": false,
1229
+ "properties": {
1230
+ "shortcuts": {
1231
+ "description": "Slack shortcut definitions handled by the Slack adapter.",
1232
+ "examples": [
1233
+ [
1234
+ {
1235
+ "callbackId": "triage",
1236
+ "prompt": "Triage this Slack request."
1237
+ }
1238
+ ]
1239
+ ],
1240
+ "type": "array",
1241
+ "items": {
1242
+ "type": "object",
1243
+ "additionalProperties": true
1244
+ },
1245
+ "default": []
1246
+ },
1247
+ "homeTab": {
1248
+ "description": "Slack app home tab configuration.",
1249
+ "examples": [
1250
+ {
1251
+ "enabled": true
1252
+ }
1253
+ ],
1254
+ "type": "object",
1255
+ "additionalProperties": true
1256
+ },
1257
+ "enabled": {
1258
+ "description": "Enables the slack capability.",
1259
+ "examples": [
1260
+ true
1261
+ ],
1262
+ "type": "boolean",
1263
+ "default": false
1264
+ },
1265
+ "botToken": {
1266
+ "description": "Secret value for slack.botToken; prefer the env override.",
1267
+ "examples": [
1268
+ "env:MONO_AGENT_SLACK_BOT_TOKEN"
1269
+ ],
1270
+ "type": "string"
1271
+ },
1272
+ "appToken": {
1273
+ "description": "Secret value for slack.appToken; prefer the env override.",
1274
+ "examples": [
1275
+ "env:MONO_AGENT_SLACK_APP_TOKEN"
1276
+ ],
1277
+ "type": "string"
1278
+ },
1279
+ "allowedChannelIds": {
1280
+ "description": "Configures allowedChannelIds for the slack section.",
1281
+ "examples": [
1282
+ [
1283
+ "example"
1284
+ ]
1285
+ ],
1286
+ "type": "array",
1287
+ "items": {
1288
+ "type": "string"
1289
+ }
1290
+ },
1291
+ "allowAllChannels": {
1292
+ "description": "Configures allowAllChannels for the slack section.",
1293
+ "examples": [
1294
+ true
1295
+ ],
1296
+ "type": "boolean",
1297
+ "default": false
1298
+ },
1299
+ "botUserIds": {
1300
+ "description": "Configures botUserIds for the slack section.",
1301
+ "examples": [
1302
+ [
1303
+ "example"
1304
+ ]
1305
+ ],
1306
+ "type": "array",
1307
+ "items": {
1308
+ "type": "string"
1309
+ }
1310
+ },
1311
+ "mentionTextAliases": {
1312
+ "description": "Configures mentionTextAliases for the slack section.",
1313
+ "examples": [
1314
+ [
1315
+ "example"
1316
+ ]
1317
+ ],
1318
+ "type": "array",
1319
+ "items": {
1320
+ "type": "string"
1321
+ }
1322
+ },
1323
+ "stripMentionText": {
1324
+ "description": "Configures stripMentionText for the slack section.",
1325
+ "examples": [
1326
+ "false"
1327
+ ],
1328
+ "type": "boolean",
1329
+ "default": false
1330
+ },
1331
+ "heartbeatIntervalMs": {
1332
+ "description": "Configures heartbeatIntervalMs for the slack section.",
1333
+ "examples": [
1334
+ 1
1335
+ ],
1336
+ "type": "integer"
1337
+ },
1338
+ "heartbeatTimeoutMs": {
1339
+ "description": "Configures heartbeatTimeoutMs for the slack section.",
1340
+ "examples": [
1341
+ 1
1342
+ ],
1343
+ "type": "integer"
1344
+ },
1345
+ "reconnectInitialBackoffMs": {
1346
+ "description": "Configures reconnectInitialBackoffMs for the slack section.",
1347
+ "examples": [
1348
+ 1
1349
+ ],
1350
+ "type": "integer"
1351
+ },
1352
+ "reconnectMaxBackoffMs": {
1353
+ "description": "Configures reconnectMaxBackoffMs for the slack section.",
1354
+ "examples": [
1355
+ 1
1356
+ ],
1357
+ "type": "integer"
1358
+ },
1359
+ "reconnectStabilityMs": {
1360
+ "description": "Configures reconnectStabilityMs for the slack section.",
1361
+ "examples": [
1362
+ 1
1363
+ ],
1364
+ "type": "integer"
1365
+ },
1366
+ "reconnectStartupGraceMs": {
1367
+ "description": "Configures reconnectStartupGraceMs for the slack section.",
1368
+ "examples": [
1369
+ 1
1370
+ ],
1371
+ "type": "integer"
1372
+ },
1373
+ "drainDeadlineMs": {
1374
+ "description": "Configures drainDeadlineMs for the slack section.",
1375
+ "examples": [
1376
+ 1
1377
+ ],
1378
+ "type": "integer"
1379
+ }
1380
+ }
1381
+ },
1382
+ "telegram": {
1383
+ "type": "object",
1384
+ "additionalProperties": false,
1385
+ "properties": {
1386
+ "commands": {
1387
+ "description": "Telegram command definitions handled by the Telegram adapter.",
1388
+ "examples": [
1389
+ [
1390
+ {
1391
+ "command": "status",
1392
+ "prompt": "Report current status."
1393
+ }
1394
+ ]
1395
+ ],
1396
+ "type": "array",
1397
+ "items": {
1398
+ "type": "object",
1399
+ "additionalProperties": true
1400
+ },
1401
+ "default": []
1402
+ },
1403
+ "reactions": {
1404
+ "description": "Telegram lifecycle reactions. The env override is boolean and toggles all states.",
1405
+ "examples": [
1406
+ {
1407
+ "working": true,
1408
+ "done": true,
1409
+ "error": true
1410
+ }
1411
+ ],
1412
+ "type": "object",
1413
+ "additionalProperties": true
1414
+ },
1415
+ "quietHours": {
1416
+ "description": "Quiet-hours rules for Telegram notifications.",
1417
+ "examples": [
1418
+ {
1419
+ "timezone": "Europe/Amsterdam",
1420
+ "start": "22:00",
1421
+ "end": "07:00"
1422
+ }
1423
+ ],
1424
+ "type": "object",
1425
+ "additionalProperties": true
1426
+ },
1427
+ "enabled": {
1428
+ "description": "Enables the telegram capability.",
1429
+ "examples": [
1430
+ true
1431
+ ],
1432
+ "type": "boolean",
1433
+ "default": false
1434
+ },
1435
+ "botToken": {
1436
+ "description": "Secret value for telegram.botToken; prefer the env override.",
1437
+ "examples": [
1438
+ "env:MONO_AGENT_TELEGRAM_BOT_TOKEN"
1439
+ ],
1440
+ "type": "string"
1441
+ },
1442
+ "allowedChatIds": {
1443
+ "description": "Configures allowedChatIds for the telegram section.",
1444
+ "examples": [
1445
+ [
1446
+ "example"
1447
+ ]
1448
+ ],
1449
+ "type": "array",
1450
+ "items": {
1451
+ "type": "string"
1452
+ }
1453
+ },
1454
+ "allowAllChats": {
1455
+ "description": "Configures allowAllChats for the telegram section.",
1456
+ "examples": [
1457
+ true
1458
+ ],
1459
+ "type": "boolean",
1460
+ "default": false
1461
+ },
1462
+ "transport": {
1463
+ "type": "object",
1464
+ "additionalProperties": false,
1465
+ "properties": {
1466
+ "ipFamily": {
1467
+ "description": "Configures transport.ipFamily for the telegram section.",
1468
+ "examples": [
1469
+ "example"
1470
+ ],
1471
+ "type": "integer"
1472
+ }
1473
+ }
1474
+ },
1475
+ "pollWatchdogMs": {
1476
+ "description": "Configures pollWatchdogMs for the telegram section.",
1477
+ "examples": [
1478
+ 1
1479
+ ],
1480
+ "type": "integer"
1481
+ },
1482
+ "apiRoot": {
1483
+ "description": "Configures apiRoot for the telegram section.",
1484
+ "examples": [
1485
+ "example"
1486
+ ],
1487
+ "type": "string"
1488
+ },
1489
+ "attachments": {
1490
+ "type": "object",
1491
+ "additionalProperties": false,
1492
+ "properties": {
1493
+ "maxBytes": {
1494
+ "description": "Configures attachments.maxBytes for the telegram section.",
1495
+ "examples": [
1496
+ 1
1497
+ ],
1498
+ "type": "integer"
1499
+ },
1500
+ "downloadTimeoutMs": {
1501
+ "description": "Configures attachments.downloadTimeoutMs for the telegram section.",
1502
+ "examples": [
1503
+ 1
1504
+ ],
1505
+ "type": "integer"
1506
+ },
1507
+ "maxUploadBytes": {
1508
+ "description": "Configures attachments.maxUploadBytes for the telegram section.",
1509
+ "examples": [
1510
+ 1
1511
+ ],
1512
+ "type": "integer"
1513
+ }
1514
+ }
1515
+ }
1516
+ }
1517
+ },
1518
+ "openaiApi": {
1519
+ "type": "object",
1520
+ "additionalProperties": false,
1521
+ "properties": {
1522
+ "enabled": {
1523
+ "description": "Enables the openaiApi capability.",
1524
+ "examples": [
1525
+ true
1526
+ ],
1527
+ "type": "boolean",
1528
+ "default": false
1529
+ },
1530
+ "host": {
1531
+ "description": "Configures host for the openaiApi section.",
1532
+ "examples": [
1533
+ "127.0.0.1"
1534
+ ],
1535
+ "type": "string",
1536
+ "default": "127.0.0.1"
1537
+ },
1538
+ "port": {
1539
+ "description": "Configures port for the openaiApi section.",
1540
+ "examples": [
1541
+ 0
1542
+ ],
1543
+ "type": "integer",
1544
+ "default": 0
1545
+ },
1546
+ "basePath": {
1547
+ "description": "Configures basePath for the openaiApi section.",
1548
+ "examples": [
1549
+ "/v1"
1550
+ ],
1551
+ "type": "string",
1552
+ "default": "/v1"
1553
+ },
1554
+ "allowNonLoopback": {
1555
+ "description": "Configures allowNonLoopback for the openaiApi section.",
1556
+ "examples": [
1557
+ true
1558
+ ],
1559
+ "type": "boolean",
1560
+ "default": false
1561
+ },
1562
+ "apiKey": {
1563
+ "description": "Secret value for openaiApi.apiKey; prefer the env override.",
1564
+ "examples": [
1565
+ "env:MONO_AGENT_OPENAI_API_KEY"
1566
+ ],
1567
+ "type": "string"
1568
+ },
1569
+ "modelId": {
1570
+ "description": "Configures modelId for the openaiApi section.",
1571
+ "examples": [
1572
+ "agent"
1573
+ ],
1574
+ "type": "string",
1575
+ "default": "agent"
1576
+ }
1577
+ }
1578
+ },
1579
+ "tui": {
1580
+ "type": "object",
1581
+ "additionalProperties": false,
1582
+ "properties": {
1583
+ "enabled": {
1584
+ "description": "Enables the tui capability.",
1585
+ "examples": [
1586
+ true
1587
+ ],
1588
+ "type": "boolean",
1589
+ "default": true
1590
+ },
1591
+ "host": {
1592
+ "description": "Configures host for the tui section.",
1593
+ "examples": [
1594
+ "127.0.0.1"
1595
+ ],
1596
+ "type": "string",
1597
+ "default": "127.0.0.1"
1598
+ },
1599
+ "port": {
1600
+ "description": "Configures port for the tui section.",
1601
+ "examples": [
1602
+ 0
1603
+ ],
1604
+ "type": "integer",
1605
+ "default": 0
1606
+ },
1607
+ "basePath": {
1608
+ "description": "Configures basePath for the tui section.",
1609
+ "examples": [
1610
+ "/tui"
1611
+ ],
1612
+ "type": "string",
1613
+ "default": "/tui"
1614
+ },
1615
+ "allowNonLoopback": {
1616
+ "description": "Configures allowNonLoopback for the tui section.",
1617
+ "examples": [
1618
+ true
1619
+ ],
1620
+ "type": "boolean",
1621
+ "default": false
1622
+ },
1623
+ "apiKey": {
1624
+ "description": "Secret value for tui.apiKey; prefer the env override.",
1625
+ "examples": [
1626
+ "example"
1627
+ ],
1628
+ "type": "string"
1629
+ }
1630
+ }
1631
+ },
1632
+ "live": {
1633
+ "type": "object",
1634
+ "additionalProperties": false,
1635
+ "properties": {
1636
+ "enabled": {
1637
+ "description": "Enables the live capability.",
1638
+ "examples": [
1639
+ true
1640
+ ],
1641
+ "type": "boolean",
1642
+ "default": true
1643
+ },
1644
+ "host": {
1645
+ "description": "Configures host for the live section.",
1646
+ "examples": [
1647
+ "127.0.0.1"
1648
+ ],
1649
+ "type": "string",
1650
+ "default": "127.0.0.1"
1651
+ },
1652
+ "port": {
1653
+ "description": "Configures port for the live section.",
1654
+ "examples": [
1655
+ 0
1656
+ ],
1657
+ "type": "integer",
1658
+ "default": 0
1659
+ },
1660
+ "basePath": {
1661
+ "description": "Configures basePath for the live section.",
1662
+ "examples": [
1663
+ "/live"
1664
+ ],
1665
+ "type": "string",
1666
+ "default": "/live"
1667
+ },
1668
+ "allowNonLoopback": {
1669
+ "description": "Configures allowNonLoopback for the live section.",
1670
+ "examples": [
1671
+ true
1672
+ ],
1673
+ "type": "boolean",
1674
+ "default": false
1675
+ },
1676
+ "apiKey": {
1677
+ "description": "Secret value for live.apiKey; prefer the env override.",
1678
+ "examples": [
1679
+ "example"
1680
+ ],
1681
+ "type": "string"
1682
+ }
1683
+ }
1684
+ }
1685
+ }
1686
+ }