@mono-agent/agent-app 0.6.2 → 0.9.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 (313) hide show
  1. package/README.md +259 -19
  2. package/dist/account-home.d.ts +6 -0
  3. package/dist/account-home.d.ts.map +1 -0
  4. package/dist/account-home.js +9 -0
  5. package/dist/account-home.js.map +1 -0
  6. package/dist/adapter-send-proxy.d.ts +18 -0
  7. package/dist/adapter-send-proxy.d.ts.map +1 -0
  8. package/dist/adapter-send-proxy.js +229 -0
  9. package/dist/adapter-send-proxy.js.map +1 -0
  10. package/dist/adapter-send-tools-main.js +62 -4
  11. package/dist/adapter-send-tools-main.js.map +1 -1
  12. package/dist/adapter-send-tools.d.ts +33 -6
  13. package/dist/adapter-send-tools.d.ts.map +1 -1
  14. package/dist/adapter-send-tools.js +485 -87
  15. package/dist/adapter-send-tools.js.map +1 -1
  16. package/dist/app-config.d.ts +3 -1
  17. package/dist/app-config.d.ts.map +1 -1
  18. package/dist/app-config.js +16 -5
  19. package/dist/app-config.js.map +1 -1
  20. package/dist/app.d.ts +27 -0
  21. package/dist/app.d.ts.map +1 -1
  22. package/dist/app.js +761 -147
  23. package/dist/app.js.map +1 -1
  24. package/dist/background-environment.d.ts +16 -0
  25. package/dist/background-environment.d.ts.map +1 -0
  26. package/dist/background-environment.js +68 -0
  27. package/dist/background-environment.js.map +1 -0
  28. package/dist/background-runtime.d.ts +62 -0
  29. package/dist/background-runtime.d.ts.map +1 -0
  30. package/dist/background-runtime.js +1115 -0
  31. package/dist/background-runtime.js.map +1 -0
  32. package/dist/background-snapshot-key.d.ts +13 -0
  33. package/dist/background-snapshot-key.d.ts.map +1 -0
  34. package/dist/background-snapshot-key.js +194 -0
  35. package/dist/background-snapshot-key.js.map +1 -0
  36. package/dist/background-snapshot.d.ts +96 -0
  37. package/dist/background-snapshot.d.ts.map +1 -0
  38. package/dist/background-snapshot.js +450 -0
  39. package/dist/background-snapshot.js.map +1 -0
  40. package/dist/background-worker-lease.d.ts +39 -0
  41. package/dist/background-worker-lease.d.ts.map +1 -0
  42. package/dist/background-worker-lease.js +356 -0
  43. package/dist/background-worker-lease.js.map +1 -0
  44. package/dist/background.d.ts +74 -2
  45. package/dist/background.d.ts.map +1 -1
  46. package/dist/background.js +815 -73
  47. package/dist/background.js.map +1 -1
  48. package/dist/broadcast-recorder.d.ts.map +1 -1
  49. package/dist/broadcast-recorder.js +24 -2
  50. package/dist/broadcast-recorder.js.map +1 -1
  51. package/dist/channel-plugins.d.ts +2 -0
  52. package/dist/channel-plugins.d.ts.map +1 -1
  53. package/dist/channel-plugins.js +8 -0
  54. package/dist/channel-plugins.js.map +1 -1
  55. package/dist/channels.d.ts +10 -0
  56. package/dist/channels.d.ts.map +1 -1
  57. package/dist/channels.js +87 -9
  58. package/dist/channels.js.map +1 -1
  59. package/dist/cli.d.ts +86 -4
  60. package/dist/cli.d.ts.map +1 -1
  61. package/dist/cli.js +2421 -143
  62. package/dist/cli.js.map +1 -1
  63. package/dist/config-reference.d.ts.map +1 -1
  64. package/dist/config-reference.js +448 -6
  65. package/dist/config-reference.js.map +1 -1
  66. package/dist/configuration-proposal-main.d.ts +3 -0
  67. package/dist/configuration-proposal-main.d.ts.map +1 -0
  68. package/dist/configuration-proposal-main.js +13 -0
  69. package/dist/configuration-proposal-main.js.map +1 -0
  70. package/dist/configuration-proposal-tool.d.ts +33 -0
  71. package/dist/configuration-proposal-tool.d.ts.map +1 -0
  72. package/dist/configuration-proposal-tool.js +188 -0
  73. package/dist/configuration-proposal-tool.js.map +1 -0
  74. package/dist/configured-agent.d.ts +16 -0
  75. package/dist/configured-agent.d.ts.map +1 -1
  76. package/dist/configured-agent.js +165 -18
  77. package/dist/configured-agent.js.map +1 -1
  78. package/dist/consumer-contract.d.ts +3 -0
  79. package/dist/consumer-contract.d.ts.map +1 -1
  80. package/dist/consumer-contract.js +44 -1
  81. package/dist/consumer-contract.js.map +1 -1
  82. package/dist/continuation-command.d.ts +15 -0
  83. package/dist/continuation-command.d.ts.map +1 -0
  84. package/dist/continuation-command.js +170 -0
  85. package/dist/continuation-command.js.map +1 -0
  86. package/dist/continuation-config.d.ts +25 -0
  87. package/dist/continuation-config.d.ts.map +1 -0
  88. package/dist/continuation-config.js +236 -0
  89. package/dist/continuation-config.js.map +1 -0
  90. package/dist/continuation-service.d.ts +99 -0
  91. package/dist/continuation-service.d.ts.map +1 -0
  92. package/dist/continuation-service.js +1313 -0
  93. package/dist/continuation-service.js.map +1 -0
  94. package/dist/continuation-store.d.ts +104 -0
  95. package/dist/continuation-store.d.ts.map +1 -0
  96. package/dist/continuation-store.js +688 -0
  97. package/dist/continuation-store.js.map +1 -0
  98. package/dist/continuations.d.ts +167 -0
  99. package/dist/continuations.d.ts.map +1 -0
  100. package/dist/continuations.js +71 -0
  101. package/dist/continuations.js.map +1 -0
  102. package/dist/doctor.d.ts +29 -5
  103. package/dist/doctor.d.ts.map +1 -1
  104. package/dist/doctor.js +1611 -116
  105. package/dist/doctor.js.map +1 -1
  106. package/dist/first-run-managed-memory.d.ts +39 -0
  107. package/dist/first-run-managed-memory.d.ts.map +1 -0
  108. package/dist/first-run-managed-memory.js +584 -0
  109. package/dist/first-run-managed-memory.js.map +1 -0
  110. package/dist/first-run-readiness.d.ts +111 -0
  111. package/dist/first-run-readiness.d.ts.map +1 -0
  112. package/dist/first-run-readiness.js +728 -0
  113. package/dist/first-run-readiness.js.map +1 -0
  114. package/dist/index.d.ts +17 -3
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +8 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/init.d.ts +95 -3
  119. package/dist/init.d.ts.map +1 -1
  120. package/dist/init.js +1218 -24
  121. package/dist/init.js.map +1 -1
  122. package/dist/interaction-bridge.d.ts +25 -1
  123. package/dist/interaction-bridge.d.ts.map +1 -1
  124. package/dist/interaction-bridge.js +281 -19
  125. package/dist/interaction-bridge.js.map +1 -1
  126. package/dist/launchd.d.ts +16 -6
  127. package/dist/launchd.d.ts.map +1 -1
  128. package/dist/launchd.js +30 -15
  129. package/dist/launchd.js.map +1 -1
  130. package/dist/local-configuration.d.ts +99 -0
  131. package/dist/local-configuration.d.ts.map +1 -0
  132. package/dist/local-configuration.js +1299 -0
  133. package/dist/local-configuration.js.map +1 -0
  134. package/dist/managed-runtime-packages.d.ts +9 -0
  135. package/dist/managed-runtime-packages.d.ts.map +1 -0
  136. package/dist/managed-runtime-packages.js +56 -0
  137. package/dist/managed-runtime-packages.js.map +1 -0
  138. package/dist/memory-command.d.ts +4 -0
  139. package/dist/memory-command.d.ts.map +1 -1
  140. package/dist/memory-command.js +751 -27
  141. package/dist/memory-command.js.map +1 -1
  142. package/dist/memory-embedding-service.d.ts +33 -0
  143. package/dist/memory-embedding-service.d.ts.map +1 -0
  144. package/dist/memory-embedding-service.js +207 -0
  145. package/dist/memory-embedding-service.js.map +1 -0
  146. package/dist/memory-recall.d.ts +43 -14
  147. package/dist/memory-recall.d.ts.map +1 -1
  148. package/dist/memory-recall.js +103 -33
  149. package/dist/memory-recall.js.map +1 -1
  150. package/dist/memory-retrieval.d.ts +66 -0
  151. package/dist/memory-retrieval.d.ts.map +1 -0
  152. package/dist/memory-retrieval.js +332 -0
  153. package/dist/memory-retrieval.js.map +1 -0
  154. package/dist/modules/base.d.ts +6 -5
  155. package/dist/modules/base.d.ts.map +1 -1
  156. package/dist/modules/base.js +11 -7
  157. package/dist/modules/base.js.map +1 -1
  158. package/dist/modules/catalog.d.ts.map +1 -1
  159. package/dist/modules/catalog.js +141 -25
  160. package/dist/modules/catalog.js.map +1 -1
  161. package/dist/modules/index.d.ts +2 -2
  162. package/dist/modules/index.d.ts.map +1 -1
  163. package/dist/modules/index.js +1 -1
  164. package/dist/modules/index.js.map +1 -1
  165. package/dist/modules/known-tools.d.ts +3 -0
  166. package/dist/modules/known-tools.d.ts.map +1 -1
  167. package/dist/modules/known-tools.js +11 -1
  168. package/dist/modules/known-tools.js.map +1 -1
  169. package/dist/modules/types.d.ts +20 -6
  170. package/dist/modules/types.d.ts.map +1 -1
  171. package/dist/modules/types.js.map +1 -1
  172. package/dist/notify-runtime.d.ts +26 -0
  173. package/dist/notify-runtime.d.ts.map +1 -0
  174. package/dist/notify-runtime.js +27 -0
  175. package/dist/notify-runtime.js.map +1 -0
  176. package/dist/notify-tool.d.ts +51 -0
  177. package/dist/notify-tool.d.ts.map +1 -0
  178. package/dist/notify-tool.js +182 -0
  179. package/dist/notify-tool.js.map +1 -0
  180. package/dist/package-version.d.ts +3 -0
  181. package/dist/package-version.d.ts.map +1 -0
  182. package/dist/package-version.js +14 -0
  183. package/dist/package-version.js.map +1 -0
  184. package/dist/pi-auth-store-inspection.d.ts +21 -0
  185. package/dist/pi-auth-store-inspection.d.ts.map +1 -0
  186. package/dist/pi-auth-store-inspection.js +120 -0
  187. package/dist/pi-auth-store-inspection.js.map +1 -0
  188. package/dist/pi-oauth-login-main.d.ts +3 -0
  189. package/dist/pi-oauth-login-main.d.ts.map +1 -0
  190. package/dist/pi-oauth-login-main.js +14 -0
  191. package/dist/pi-oauth-login-main.js.map +1 -0
  192. package/dist/pi-oauth-login.d.ts +22 -0
  193. package/dist/pi-oauth-login.d.ts.map +1 -0
  194. package/dist/pi-oauth-login.js +79 -0
  195. package/dist/pi-oauth-login.js.map +1 -0
  196. package/dist/proactive-notify.d.ts +2 -0
  197. package/dist/proactive-notify.d.ts.map +1 -1
  198. package/dist/proactive-notify.js +1 -0
  199. package/dist/proactive-notify.js.map +1 -1
  200. package/dist/process-incarnation.d.ts +23 -0
  201. package/dist/process-incarnation.d.ts.map +1 -0
  202. package/dist/process-incarnation.js +208 -0
  203. package/dist/process-incarnation.js.map +1 -0
  204. package/dist/project-skills.d.ts +40 -0
  205. package/dist/project-skills.d.ts.map +1 -0
  206. package/dist/project-skills.js +573 -0
  207. package/dist/project-skills.js.map +1 -0
  208. package/dist/provider-setup.d.ts +117 -2
  209. package/dist/provider-setup.d.ts.map +1 -1
  210. package/dist/provider-setup.js +1505 -49
  211. package/dist/provider-setup.js.map +1 -1
  212. package/dist/readiness-probe-worker.d.ts +12 -0
  213. package/dist/readiness-probe-worker.d.ts.map +1 -0
  214. package/dist/readiness-probe-worker.js +276 -0
  215. package/dist/readiness-probe-worker.js.map +1 -0
  216. package/dist/readiness-probe.d.ts +100 -0
  217. package/dist/readiness-probe.d.ts.map +1 -0
  218. package/dist/readiness-probe.js +780 -0
  219. package/dist/readiness-probe.js.map +1 -0
  220. package/dist/recipes/base.d.ts +15 -0
  221. package/dist/recipes/base.d.ts.map +1 -0
  222. package/dist/recipes/base.js +51 -0
  223. package/dist/recipes/base.js.map +1 -0
  224. package/dist/recipes/catalog.d.ts +4 -0
  225. package/dist/recipes/catalog.d.ts.map +1 -0
  226. package/dist/recipes/catalog.js +525 -0
  227. package/dist/recipes/catalog.js.map +1 -0
  228. package/dist/recipes/index.d.ts +11 -0
  229. package/dist/recipes/index.d.ts.map +1 -0
  230. package/dist/recipes/index.js +14 -0
  231. package/dist/recipes/index.js.map +1 -0
  232. package/dist/recipes/types.d.ts +70 -0
  233. package/dist/recipes/types.d.ts.map +1 -0
  234. package/dist/recipes/types.js +15 -0
  235. package/dist/recipes/types.js.map +1 -0
  236. package/dist/request-model-override.d.ts +43 -1
  237. package/dist/request-model-override.d.ts.map +1 -1
  238. package/dist/request-model-override.js +178 -19
  239. package/dist/request-model-override.js.map +1 -1
  240. package/dist/run-history.d.ts +32 -0
  241. package/dist/run-history.d.ts.map +1 -0
  242. package/dist/run-history.js +859 -0
  243. package/dist/run-history.js.map +1 -0
  244. package/dist/runs-health.d.ts.map +1 -1
  245. package/dist/runs-health.js +12 -4
  246. package/dist/runs-health.js.map +1 -1
  247. package/dist/runtime-option-extensions.d.ts +14 -0
  248. package/dist/runtime-option-extensions.d.ts.map +1 -0
  249. package/dist/runtime-option-extensions.js +98 -0
  250. package/dist/runtime-option-extensions.js.map +1 -0
  251. package/dist/runtime-routes.d.ts +9 -0
  252. package/dist/runtime-routes.d.ts.map +1 -0
  253. package/dist/runtime-routes.js +13 -0
  254. package/dist/runtime-routes.js.map +1 -0
  255. package/dist/sandbox-manager.d.ts +86 -0
  256. package/dist/sandbox-manager.d.ts.map +1 -0
  257. package/dist/sandbox-manager.js +1402 -0
  258. package/dist/sandbox-manager.js.map +1 -0
  259. package/dist/setup.d.ts +29 -0
  260. package/dist/setup.d.ts.map +1 -0
  261. package/dist/setup.js +97 -0
  262. package/dist/setup.js.map +1 -0
  263. package/dist/supermemory-plugin.d.ts +56 -0
  264. package/dist/supermemory-plugin.d.ts.map +1 -0
  265. package/dist/supermemory-plugin.js +142 -0
  266. package/dist/supermemory-plugin.js.map +1 -0
  267. package/dist/tui-command.d.ts +56 -0
  268. package/dist/tui-command.d.ts.map +1 -1
  269. package/dist/tui-command.js +305 -31
  270. package/dist/tui-command.js.map +1 -1
  271. package/dist/web-command.d.ts +8 -0
  272. package/dist/web-command.d.ts.map +1 -1
  273. package/dist/web-command.js +174 -17
  274. package/dist/web-command.js.map +1 -1
  275. package/dist/wizard/answers.d.ts +31 -4
  276. package/dist/wizard/answers.d.ts.map +1 -1
  277. package/dist/wizard/answers.js +141 -29
  278. package/dist/wizard/answers.js.map +1 -1
  279. package/dist/wizard/from-flags.d.ts +7 -0
  280. package/dist/wizard/from-flags.d.ts.map +1 -1
  281. package/dist/wizard/from-flags.js +36 -2
  282. package/dist/wizard/from-flags.js.map +1 -1
  283. package/dist/wizard/index.d.ts +4 -4
  284. package/dist/wizard/index.d.ts.map +1 -1
  285. package/dist/wizard/index.js +2 -2
  286. package/dist/wizard/index.js.map +1 -1
  287. package/dist/wizard/model-discovery.d.ts +33 -2
  288. package/dist/wizard/model-discovery.d.ts.map +1 -1
  289. package/dist/wizard/model-discovery.js +826 -108
  290. package/dist/wizard/model-discovery.js.map +1 -1
  291. package/dist/wizard/presets.d.ts +1 -1
  292. package/dist/wizard/presets.d.ts.map +1 -1
  293. package/dist/wizard/presets.js +7 -12
  294. package/dist/wizard/presets.js.map +1 -1
  295. package/dist/wizard/prompts.d.ts +56 -9
  296. package/dist/wizard/prompts.d.ts.map +1 -1
  297. package/dist/wizard/prompts.js +172 -20
  298. package/dist/wizard/prompts.js.map +1 -1
  299. package/dist/wizard/run.d.ts +59 -3
  300. package/dist/wizard/run.d.ts.map +1 -1
  301. package/dist/wizard/run.js +1290 -191
  302. package/dist/wizard/run.js.map +1 -1
  303. package/package.json +21 -16
  304. package/resources/srt/package-lock.json +66 -0
  305. package/resources/srt/package.json +9 -0
  306. package/schema/mono-agent.config.schema.json +587 -20
  307. package/skills/mono-agent-composer/SKILL.md +6 -6
  308. package/skills/mono-agent-composer/references/config-blueprint.md +11 -10
  309. package/skills/mono-agent-composer/references/discovery-questions.md +33 -18
  310. package/skills/mono-agent-composer/references/feature-coverage.md +14 -12
  311. package/skills/mono-agent-composer/references/package-map.md +2 -2
  312. package/skills/mono-agent-composer/references/playbooks.md +8 -7
  313. package/skills/mono-agent-composer/references/validation.md +3 -3
@@ -0,0 +1,525 @@
1
+ import { baseConfig, DEFAULT_MODEL, memoryBlock, MODEL_INPUT } from "./base.js";
2
+ function withSections(input, extra) {
3
+ return { ...baseConfig(input), ...extra };
4
+ }
5
+ function a2aProviderPluginSection() {
6
+ return {
7
+ channels: {
8
+ plugins: [
9
+ {
10
+ package: "@mono-agent/a2a-adapter",
11
+ config: {
12
+ enabled: true,
13
+ agent: {
14
+ name: "Mono Agent",
15
+ description: "A mono-agent provider exposed over A2A.",
16
+ version: "0.1.0",
17
+ },
18
+ skill: {
19
+ id: "default",
20
+ name: "Default agent skill",
21
+ description: "Send a task to this mono-agent and receive its response.",
22
+ tags: ["agent"],
23
+ },
24
+ },
25
+ },
26
+ ],
27
+ },
28
+ };
29
+ }
30
+ const SANDBOX_FAIL_CLOSED_ENGINE_NOTE = "Install `srt` and keep it on PATH; without it, fail-closed sandboxed commands stop with `sandbox_unavailable` instead of running unsandboxed.";
31
+ const SANDBOX_UNSAFE_ENGINE_NOTE = "Install `srt` and keep it on PATH. If it is missing, unsafe-host-process fallback is active: all sandbox roots/denyWrite entries are inert and commands run unsandboxed on the host.";
32
+ /** `minimal-webhook` — the zero-credential smoke agent (matches default init). */
33
+ const minimalWebhook = {
34
+ id: "minimal-webhook",
35
+ title: "Minimal webhook agent",
36
+ description: "Lowest-friction smoke agent: webhook loopback enabled, no credentials, no memory.",
37
+ tags: ["webhook", "starter", "no-secrets"],
38
+ riskLevel: "low",
39
+ playbook: "webhook-automation-sync-async.md",
40
+ inputs: [MODEL_INPUT],
41
+ config: (input) => withSections(input, { webhook: { enabled: true } }),
42
+ validateExpectations: [
43
+ { sectionId: "runtime", mustBe: "ok" },
44
+ { sectionId: "channel:webhook", mustBe: "ok" },
45
+ ],
46
+ };
47
+ /** `personal-telegram-bujo` — Telegram personal assistant with BuJo memory. */
48
+ const personalTelegramBujo = {
49
+ id: "personal-telegram-bujo",
50
+ title: "Personal Telegram assistant (BuJo memory)",
51
+ description: "Telegram bot with bujo-tier memory (capture + recall), local ollama embeddings, and the runtime model as the memory LLM.",
52
+ tags: ["telegram", "memory", "bujo", "personal"],
53
+ riskLevel: "medium",
54
+ playbook: "telegram-personal-assistant-bujo.md",
55
+ inputs: [
56
+ MODEL_INPUT,
57
+ {
58
+ id: "allowedChatIds",
59
+ label: "Allowed chat IDs",
60
+ description: "Comma-separated Telegram chat IDs the bot may answer (leave blank to set later).",
61
+ },
62
+ {
63
+ id: "telegramToken",
64
+ label: "Telegram bot token",
65
+ description: "BotFather token. Externalized to .env.example; never written into JSON.",
66
+ secret: true,
67
+ envVar: "MONO_AGENT_TELEGRAM_TOKEN",
68
+ },
69
+ ],
70
+ config: (input) => withSections(input, {
71
+ memory: {
72
+ ...memoryBlock("bujo"),
73
+ embeddings: { provider: "ollama", model: "nomic-embed-text" },
74
+ llm: { provider: "agent-host", model: input.model ?? DEFAULT_MODEL },
75
+ recallTool: { enabled: true },
76
+ },
77
+ telegram: {
78
+ enabled: true,
79
+ ...(input.allowedChatIds === undefined || input.allowedChatIds.length === 0
80
+ ? {}
81
+ : { allowedChatIds: input.allowedChatIds.split(",").map((id) => id.trim()).filter(Boolean) }),
82
+ },
83
+ }),
84
+ envExample: () => "# Telegram bot token from @BotFather\nMONO_AGENT_TELEGRAM_TOKEN=\n",
85
+ validateExpectations: [
86
+ { sectionId: "memory", mustBe: "ok", note: "Start ollama (or configure embeddings) so memory leaves `waiting`." },
87
+ { sectionId: "channel:telegram", mustBe: "ok", note: "Set MONO_AGENT_TELEGRAM_TOKEN in .env." },
88
+ ],
89
+ };
90
+ /** `personal-telegram-supermemory` — Telegram assistant backed by a local Supermemory instance. */
91
+ const personalTelegramSupermemory = {
92
+ id: "personal-telegram-supermemory",
93
+ title: "Personal Telegram assistant (Supermemory)",
94
+ description: "Telegram bot backed by an external Supermemory instance (local OSS binary by default): server-side extraction + recall, no bujo chat LLM needed.",
95
+ tags: ["telegram", "memory", "supermemory", "external", "personal"],
96
+ riskLevel: "medium",
97
+ playbook: "telegram-supermemory-memory.md",
98
+ inputs: [
99
+ MODEL_INPUT,
100
+ {
101
+ id: "supermemoryBaseUrl",
102
+ label: "Supermemory base URL",
103
+ description: "REST URL of your supermemory-server (local default http://127.0.0.1:6767) or the hosted cloud.",
104
+ default: "http://127.0.0.1:6767",
105
+ },
106
+ {
107
+ id: "allowedChatIds",
108
+ label: "Allowed chat IDs",
109
+ description: "Comma-separated Telegram chat IDs the bot may answer (leave blank to set later).",
110
+ },
111
+ {
112
+ id: "telegramToken",
113
+ label: "Telegram bot token",
114
+ description: "BotFather token. Externalized to .env.example; never written into JSON.",
115
+ secret: true,
116
+ envVar: "MONO_AGENT_TELEGRAM_TOKEN",
117
+ },
118
+ {
119
+ id: "supermemoryApiKey",
120
+ label: "Supermemory API key",
121
+ description: "Bearer key printed by supermemory-server on first boot. Externalized to .env.example.",
122
+ secret: true,
123
+ envVar: "MONO_AGENT_MEMORY_SUPERMEMORY_API_KEY",
124
+ },
125
+ ],
126
+ config: (input) => withSections(input, {
127
+ memory: {
128
+ backend: "supermemory",
129
+ // No `mode`/`path`: those are bujo-only and the loader defaults them for external backends.
130
+ // `capture` posts full turns for Supermemory's server-side extraction.
131
+ writeMode: "capture",
132
+ supermemory: { baseUrl: input.supermemoryBaseUrl ?? "http://127.0.0.1:6767" },
133
+ recallTool: { enabled: true },
134
+ },
135
+ telegram: {
136
+ enabled: true,
137
+ ...(input.allowedChatIds === undefined || input.allowedChatIds.length === 0
138
+ ? {}
139
+ : { allowedChatIds: input.allowedChatIds.split(",").map((id) => id.trim()).filter(Boolean) }),
140
+ },
141
+ }),
142
+ envExample: () => "# Telegram bot token from @BotFather\nMONO_AGENT_TELEGRAM_TOKEN=\n# Supermemory bearer key (printed by supermemory-server on first boot)\nMONO_AGENT_MEMORY_SUPERMEMORY_API_KEY=\n",
143
+ validateExpectations: [
144
+ { sectionId: "memory", mustBe: "ok", note: "Run `supermemory-server` (or point baseUrl at your instance) before sending turns." },
145
+ { sectionId: "channel:telegram", mustBe: "ok", note: "Set MONO_AGENT_TELEGRAM_TOKEN in .env." },
146
+ ],
147
+ };
148
+ /** `slack-team-bot` — Slack Socket Mode with an allowlist and the send tool. */
149
+ const slackTeamBot = {
150
+ id: "slack-team-bot",
151
+ title: "Slack team bot",
152
+ description: "Slack Socket Mode bot scoped to an allowlist of channels, with the slack_send_message tool enabled.",
153
+ tags: ["slack", "team", "tools"],
154
+ riskLevel: "medium",
155
+ playbook: "slack-team-bot-mcp-tools.md",
156
+ inputs: [
157
+ MODEL_INPUT,
158
+ {
159
+ id: "allowedChannelIds",
160
+ label: "Allowed channel IDs",
161
+ description: "Comma-separated Slack channel/DM IDs the bot may respond to.",
162
+ },
163
+ {
164
+ id: "botToken",
165
+ label: "Slack bot token",
166
+ description: "xoxb-… token. Externalized to .env.example.",
167
+ secret: true,
168
+ envVar: "MONO_AGENT_SLACK_BOT_TOKEN",
169
+ },
170
+ {
171
+ id: "appToken",
172
+ label: "Slack app token",
173
+ description: "xapp-… connections:write token for Socket Mode.",
174
+ secret: true,
175
+ envVar: "MONO_AGENT_SLACK_APP_TOKEN",
176
+ },
177
+ ],
178
+ config: (input) => withSections(input, {
179
+ tools: { allowedTools: ["slack_send_message"], disallowedTools: [] },
180
+ slack: {
181
+ enabled: true,
182
+ ...(input.allowedChannelIds === undefined || input.allowedChannelIds.length === 0
183
+ ? {}
184
+ : { allowedChannelIds: input.allowedChannelIds.split(",").map((id) => id.trim()).filter(Boolean) }),
185
+ },
186
+ }),
187
+ envExample: () => "# Slack Socket Mode tokens\nMONO_AGENT_SLACK_BOT_TOKEN=\nMONO_AGENT_SLACK_APP_TOKEN=\n",
188
+ validateExpectations: [
189
+ { sectionId: "channel:slack", mustBe: "ok", note: "Set MONO_AGENT_SLACK_BOT_TOKEN and MONO_AGENT_SLACK_APP_TOKEN in .env." },
190
+ ],
191
+ };
192
+ /** `openai-api-gateway` — expose the agent as an OpenAI-compatible endpoint. */
193
+ const openaiApiGateway = {
194
+ id: "openai-api-gateway",
195
+ title: "OpenAI-compatible API gateway",
196
+ description: "Expose the configured runtime as an OpenAI-compatible loopback endpoint (e.g. for OpenWebUI).",
197
+ tags: ["openai-api", "gateway", "loopback"],
198
+ riskLevel: "medium",
199
+ playbook: "openai-endpoint-open-webui.md",
200
+ inputs: [
201
+ MODEL_INPUT,
202
+ {
203
+ id: "apiKey",
204
+ label: "Client bearer key",
205
+ description: "Optional bearer clients must present (sk-…). Externalized to .env.example.",
206
+ secret: true,
207
+ envVar: "MONO_AGENT_OPENAI_API_KEY",
208
+ },
209
+ ],
210
+ config: (input) => withSections(input, {
211
+ openaiApi: { enabled: true },
212
+ }),
213
+ envExample: () => "# Optional bearer required from OpenAI-API clients\nMONO_AGENT_OPENAI_API_KEY=\n",
214
+ validateExpectations: [
215
+ { sectionId: "channel:openai-api", mustBe: "ok" },
216
+ ],
217
+ };
218
+ /** `cron-digest` — a scheduled digest job that notifies a channel. */
219
+ const cronDigest = {
220
+ id: "cron-digest",
221
+ title: "Cron digest agent",
222
+ description: "A scheduled cron job (authored as cron/digest.md) that can use native notification when a Telegram or Slack destination is configured.",
223
+ tags: ["cron", "proactive", "digest"],
224
+ riskLevel: "low",
225
+ playbook: "cron-digest-proactive-notify.md",
226
+ inputs: [
227
+ MODEL_INPUT,
228
+ {
229
+ id: "cronExpression",
230
+ label: "Cron expression",
231
+ description: "When the digest runs (default 08:00 daily).",
232
+ default: "0 8 * * *",
233
+ },
234
+ ],
235
+ config: (input) => withSections(input, {
236
+ cron: { enabled: true },
237
+ }),
238
+ files: (input) => [
239
+ {
240
+ path: "cron/digest.md",
241
+ contents: [
242
+ "---",
243
+ `expression: "${input.cronExpression ?? "0 8 * * *"}"`,
244
+ "conversationId: cron-digest",
245
+ "notify: true",
246
+ "---",
247
+ "",
248
+ "Produce a concise digest of anything noteworthy since the last run.",
249
+ "Your final reply is delivered to the user verbatim as the notification — write it as the finished message, with no preface. If nothing is noteworthy, reply with exactly NOTHING_TO_REPORT.",
250
+ "",
251
+ ].join("\n"),
252
+ },
253
+ ],
254
+ validateExpectations: [
255
+ { sectionId: "channel:cron", mustBe: "ok", note: "Author at least one cron/*.md job." },
256
+ ],
257
+ };
258
+ /** `a2a-provider` — expose an Agent Card / A2A provider endpoint (loopback). */
259
+ const a2aProvider = {
260
+ id: "a2a-provider",
261
+ title: "A2A provider",
262
+ description: "Expose this agent over A2A (Agent Card + provider endpoint) on loopback, with a bearer-token placeholder.",
263
+ tags: ["a2a", "provider", "loopback"],
264
+ riskLevel: "medium",
265
+ playbook: "a2a-provider-and-consumer.md",
266
+ inputs: [
267
+ MODEL_INPUT,
268
+ {
269
+ id: "bearerToken",
270
+ label: "A2A bearer token",
271
+ description: "Bearer required from A2A consumers when requireBearer is set. Externalized to .env.example.",
272
+ secret: true,
273
+ envVar: "MONO_AGENT_A2A_BEARER_TOKEN",
274
+ },
275
+ ],
276
+ config: (input) => withSections(input, a2aProviderPluginSection()),
277
+ envExample: () => "# Bearer token A2A consumers must present (when requireBearer is set)\nMONO_AGENT_A2A_BEARER_TOKEN=\n",
278
+ validateExpectations: [
279
+ { sectionId: "channel:a2a", mustBe: "ok" },
280
+ ],
281
+ };
282
+ /**
283
+ * `local-ollama-private` — fully local agent (ollama provider + local memory).
284
+ *
285
+ * Defaults to a light 8B model (`llama3.1:8b`) on purpose: a fresh user runs the
286
+ * recipe and expects the first turn in seconds-to-minutes (goal #164 premise). A
287
+ * large local model is the opposite experience — a 30B/Q4 loaded at its full
288
+ * (often 128k–256k) context window makes Ollama allocate a huge KV cache, and on
289
+ * typical hardware the FIRST turn measured 274s to 570s+ (client-timeout). Pi
290
+ * talks to Ollama over the OpenAI-compatible endpoint, which has no `num_ctx`
291
+ * knob, so the honest lever is model choice, not a context cap. Users who have
292
+ * sized their hardware override with `--model` (the tradeoff is called out on the
293
+ * model input and in the playbook).
294
+ */
295
+ const localOllamaPrivate = {
296
+ id: "local-ollama-private",
297
+ title: "Local Ollama private agent",
298
+ description: "Runs entirely on a local Ollama provider with local journal memory and embeddings — no remote calls. Defaults to a light 8B model so the first turn stays fast on typical hardware.",
299
+ tags: ["local", "ollama", "private", "memory"],
300
+ riskLevel: "low",
301
+ playbook: "local-only-ollama-agent.md",
302
+ inputs: [
303
+ {
304
+ ...MODEL_INPUT,
305
+ default: "pi:ollama:llama3.1:8b",
306
+ description: "Local Ollama model, e.g. pi:ollama:llama3.1:8b. Heavier models (30B+, or a large context window) can push the FIRST turn to many minutes on typical hardware — size your machine before choosing one.",
307
+ },
308
+ ],
309
+ config: (input) => withSections(input, {
310
+ providers: {
311
+ local: [
312
+ {
313
+ id: "ollama",
314
+ type: "ollama",
315
+ baseUrl: "http://localhost:11434",
316
+ enabled: true,
317
+ },
318
+ ],
319
+ },
320
+ memory: {
321
+ ...memoryBlock("journal"),
322
+ embeddings: { provider: "ollama", model: "nomic-embed-text", endpoint: "http://localhost:11434" },
323
+ recallTool: { enabled: true },
324
+ },
325
+ webhook: { enabled: true },
326
+ }),
327
+ validateExpectations: [
328
+ { sectionId: "runtime", mustBe: "ok", note: "Start ollama and pull the configured model." },
329
+ { sectionId: "memory", mustBe: "ok" },
330
+ ],
331
+ };
332
+ /**
333
+ * `local-lmstudio-private` — fully local agent (LM Studio provider + lite memory).
334
+ *
335
+ * Ships `lite` (FTS-only, no embeddings) rather than `journal`, even though LM
336
+ * Studio's own OpenAI-compatible /v1/embeddings endpoint works fine as a
337
+ * `memory.embeddings.provider: "openai"` target (see the playbook). Reason:
338
+ * `readMemoryEmbeddingsConfig` (packages/config/src/config.ts) treats a
339
+ * missing openai-embeddings API key as a FATAL core-config-load error, not a
340
+ * per-section `waiting` — unlike channel secrets, which fail independently
341
+ * per adapter. Every recipe here is tested to load with zero env vars set
342
+ * (recipes.test.ts), so a required-at-load secret can't be the shipped
343
+ * default. The playbook documents the journal-tier upgrade as an explicit
344
+ * opt-in step once `.env` is populated.
345
+ */
346
+ const localLmStudioPrivate = {
347
+ id: "local-lmstudio-private",
348
+ title: "Local LM Studio private agent",
349
+ description: "Runs entirely on a local LM Studio provider with lite-tier (FTS-only) memory — no remote calls, no external embeddings dependency. See the playbook to upgrade to journal-tier semantic recall using LM Studio's own embeddings endpoint.",
350
+ tags: ["local", "lmstudio", "private", "memory"],
351
+ riskLevel: "low",
352
+ playbook: "local-only-lmstudio-agent.md",
353
+ inputs: [
354
+ { ...MODEL_INPUT, default: "pi:lmstudio:qwen3.6-32b" },
355
+ ],
356
+ config: (input) => withSections(input, {
357
+ providers: {
358
+ local: [
359
+ {
360
+ id: "lmstudio",
361
+ type: "lmstudio",
362
+ baseUrl: "http://localhost:1234",
363
+ enabled: true,
364
+ },
365
+ ],
366
+ },
367
+ memory: memoryBlock("lite"),
368
+ webhook: { enabled: true },
369
+ }),
370
+ validateExpectations: [
371
+ { sectionId: "runtime", mustBe: "ok", note: "Start LM Studio's local server and load the configured model." },
372
+ { sectionId: "memory", mustBe: "ok" },
373
+ ],
374
+ };
375
+ /** `phoenix-observed` — local artifacts plus a Phoenix OTLP exporter. */
376
+ const phoenixObserved = {
377
+ id: "phoenix-observed",
378
+ title: "Phoenix-observed agent",
379
+ description: "Local JSONL artifacts plus a best-effort Phoenix OTLP exporter with includeSensitiveData disabled.",
380
+ tags: ["observability", "phoenix", "tracing"],
381
+ riskLevel: "low",
382
+ playbook: "phoenix-observed-agent.md",
383
+ inputs: [MODEL_INPUT],
384
+ config: (input) => withSections(input, {
385
+ observability: {
386
+ exporters: [{ type: "phoenix", includeSensitiveData: false }],
387
+ },
388
+ webhook: { enabled: true },
389
+ }),
390
+ validateExpectations: [
391
+ { sectionId: "observability", mustBe: "ok", note: "Start Phoenix (or it reports `waiting`)." },
392
+ ],
393
+ };
394
+ /** `sandboxed-code-agent` — explicit workspace policy + fail-closed sandbox. */
395
+ const sandboxedCodeAgent = {
396
+ id: "sandboxed-code-agent",
397
+ title: "Sandboxed code agent",
398
+ description: "Native srt sandbox (requires `srt` on PATH), workspace-only filesystem, localhost-only network, and fail-closed `sandbox_unavailable` errors instead of unsandboxed host execution when the engine is unavailable.",
399
+ tags: ["sandbox", "code", "safe"],
400
+ riskLevel: "medium",
401
+ playbook: "sandboxed-code-agent.md",
402
+ inputs: [MODEL_INPUT],
403
+ config: (input) => withSections(input, {
404
+ tools: { allowedTools: ["Read", "Write", "Edit", "Glob", "Grep", "Bash"], disallowedTools: [] },
405
+ sandbox: {
406
+ mode: "native",
407
+ network: { mode: "localhost" },
408
+ readableRoots: ["."],
409
+ writableRoots: ["."],
410
+ fallback: "fail-closed",
411
+ },
412
+ webhook: { enabled: true },
413
+ }),
414
+ validateExpectations: [
415
+ { sectionId: "sandbox", mustBe: "ok", note: SANDBOX_FAIL_CLOSED_ENGINE_NOTE },
416
+ { sectionId: "tools", mustBe: "ok" },
417
+ ],
418
+ };
419
+ const ALL_CHANNELS_SECTIONS = {
420
+ telegram: { enabled: true },
421
+ slack: { enabled: true },
422
+ webhook: { enabled: true },
423
+ openaiApi: { enabled: true },
424
+ cron: { enabled: true },
425
+ };
426
+ /** `full-safe` — every channel present, loopback/secret-externalized, fail-closed. */
427
+ const fullSafe = {
428
+ id: "full-safe",
429
+ title: "Full (safe) blueprint",
430
+ description: "Every channel structurally configured but loopback-only: secrets externalized to .env.example, allowlists required, observability with includeSensitiveData=false, and a native `srt` sandbox that fails closed with `sandbox_unavailable` instead of falling back to host execution.",
431
+ tags: ["full", "safe", "blueprint", "all-channels"],
432
+ riskLevel: "medium",
433
+ inputs: [MODEL_INPUT],
434
+ config: (input) => withSections(input, {
435
+ ...ALL_CHANNELS_SECTIONS,
436
+ ...a2aProviderPluginSection(),
437
+ memory: {
438
+ ...memoryBlock("journal"),
439
+ embeddings: { provider: "ollama", model: "nomic-embed-text" },
440
+ recallTool: { enabled: true },
441
+ },
442
+ sandbox: {
443
+ mode: "native",
444
+ network: { mode: "localhost" },
445
+ readableRoots: ["."],
446
+ writableRoots: ["."],
447
+ fallback: "fail-closed",
448
+ },
449
+ observability: { exporters: [{ type: "phoenix", includeSensitiveData: false }] },
450
+ }),
451
+ envExample: () => [
452
+ "# Fill in only the channels you actually run; loopback channels need no secret.",
453
+ "MONO_AGENT_TELEGRAM_TOKEN=",
454
+ "MONO_AGENT_SLACK_BOT_TOKEN=",
455
+ "MONO_AGENT_SLACK_APP_TOKEN=",
456
+ "MONO_AGENT_A2A_BEARER_TOKEN=",
457
+ "MONO_AGENT_OPENAI_API_KEY=",
458
+ "",
459
+ ].join("\n"),
460
+ validateExpectations: [
461
+ { sectionId: "runtime", mustBe: "ok" },
462
+ { sectionId: "sandbox", mustBe: "ok", note: SANDBOX_FAIL_CLOSED_ENGINE_NOTE },
463
+ { sectionId: "channel:webhook", mustBe: "ok" },
464
+ ],
465
+ };
466
+ /** `full-local-power` — explicitly high-risk local operator profile. */
467
+ const fullLocalPower = {
468
+ id: "full-local-power",
469
+ title: "Full (local power) blueprint",
470
+ description: "UNSAFE local operator profile: all channels, broad tool access, unrestricted network, and `unsafe-host-process` fallback. If `srt` is missing, all sandbox roots/denyWrite entries are inert and commands run unsandboxed on the host. No committed secrets, but intentionally unsafe — trusted local use only.",
471
+ tags: ["full", "power", "blueprint", "high-risk", "local"],
472
+ riskLevel: "high",
473
+ inputs: [MODEL_INPUT],
474
+ config: (input) => withSections(input, {
475
+ ...ALL_CHANNELS_SECTIONS,
476
+ ...a2aProviderPluginSection(),
477
+ tools: { allowedTools: ["Read", "Write", "Edit", "Glob", "Grep", "Bash", "WebFetch", "WebSearch"], disallowedTools: [] },
478
+ memory: {
479
+ ...memoryBlock("bujo"),
480
+ embeddings: { provider: "ollama", model: "nomic-embed-text" },
481
+ llm: { provider: "agent-host", model: input.model ?? DEFAULT_MODEL },
482
+ recallTool: { enabled: true },
483
+ },
484
+ sandbox: {
485
+ mode: "native",
486
+ network: { mode: "all" },
487
+ readableRoots: ["."],
488
+ writableRoots: ["."],
489
+ fallback: "unsafe-host-process",
490
+ unsafeAllowHostProcess: true,
491
+ },
492
+ observability: { exporters: [{ type: "phoenix", includeSensitiveData: false }] },
493
+ }),
494
+ envExample: () => [
495
+ "# Local power profile — fill in channels you run; everything else is loopback.",
496
+ "MONO_AGENT_TELEGRAM_TOKEN=",
497
+ "MONO_AGENT_SLACK_BOT_TOKEN=",
498
+ "MONO_AGENT_SLACK_APP_TOKEN=",
499
+ "MONO_AGENT_A2A_BEARER_TOKEN=",
500
+ "MONO_AGENT_OPENAI_API_KEY=",
501
+ "",
502
+ ].join("\n"),
503
+ validateExpectations: [
504
+ { sectionId: "runtime", mustBe: "ok" },
505
+ { sectionId: "sandbox", mustBe: "ok", note: SANDBOX_UNSAFE_ENGINE_NOTE },
506
+ { sectionId: "channel:webhook", mustBe: "ok" },
507
+ ],
508
+ };
509
+ /** Ordered catalog — starter recipes first, then the two full blueprints. */
510
+ export const RECIPE_CATALOG = [
511
+ minimalWebhook,
512
+ personalTelegramBujo,
513
+ personalTelegramSupermemory,
514
+ slackTeamBot,
515
+ openaiApiGateway,
516
+ cronDigest,
517
+ a2aProvider,
518
+ localOllamaPrivate,
519
+ localLmStudioPrivate,
520
+ phoenixObserved,
521
+ sandboxedCodeAgent,
522
+ fullSafe,
523
+ fullLocalPower,
524
+ ];
525
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/recipes/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGhF,SAAS,YAAY,CACnB,KAAwB,EACxB,KAA6D;IAE7D,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAyB,CAAC;AACnE,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,yBAAyB;oBAClC,MAAM,EAAE;wBACN,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,YAAY;4BAClB,WAAW,EAAE,yCAAyC;4BACtD,OAAO,EAAE,OAAO;yBACjB;wBACD,KAAK,EAAE;4BACL,EAAE,EAAE,SAAS;4BACb,IAAI,EAAE,qBAAqB;4BAC3B,WAAW,EAAE,0DAA0D;4BACvE,IAAI,EAAE,CAAC,OAAO,CAAC;yBAChB;qBACF;iBACF;aACF;SACF;KACwD,CAAC;AAC9D,CAAC;AAED,MAAM,+BAA+B,GACnC,+IAA+I,CAAC;AAClJ,MAAM,0BAA0B,GAC9B,sLAAsL,CAAC;AAEzL,kFAAkF;AAClF,MAAM,cAAc,GAAgB;IAClC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,mFAAmF;IAChG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;IAC1C,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,kCAAkC;IAC5C,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IACtE,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/C;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,oBAAoB,GAAgB;IACxC,EAAE,EAAE,wBAAwB;IAC5B,KAAK,EAAE,2CAA2C;IAClD,WAAW,EAAE,0HAA0H;IACvI,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;IAChD,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,qCAAqC;IAC/C,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,kFAAkF;SAChG;QACD;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,yEAAyE;YACtF,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B;SACpC;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,MAAM,CAAC;YACtB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAC7D,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE;YACpE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;gBACzE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;SAChG;KACF,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CAAC,oEAAoE;IACtF,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,oEAAoE,EAAE;QACjH,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,wCAAwC,EAAE;KAChG;CACF,CAAC;AAEF,mGAAmG;AACnG,MAAM,2BAA2B,GAAgB;IAC/C,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,2CAA2C;IAClD,WAAW,EAAE,kJAAkJ;IAC/J,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;IACnE,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,gCAAgC;IAC1C,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,oBAAoB;YACxB,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,gGAAgG;YAC7G,OAAO,EAAE,uBAAuB;SACjC;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,kFAAkF;SAChG;QACD;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,yEAAyE;YACtF,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B;SACpC;QACD;YACE,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE,uFAAuF;YACpG,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,uCAAuC;SAChD;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,MAAM,EAAE;YACN,OAAO,EAAE,aAAa;YACtB,4FAA4F;YAC5F,uEAAuE;YACvE,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,kBAAkB,IAAI,uBAAuB,EAAE;YAC7E,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;gBACzE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;SAChG;KACF,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CACf,oLAAoL;IACtL,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,oFAAoF,EAAE;QACjI,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,wCAAwC,EAAE;KAChG;CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,YAAY,GAAgB;IAChC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,qGAAqG;IAClH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,6BAA6B;IACvC,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE,8DAA8D;SAC5E;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,6CAA6C;YAC1D,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,4BAA4B;SACrC;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,iDAAiD;YAC9D,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,4BAA4B;SACrC;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;QACpE,KAAK,EAAE;YACL,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;gBAC/E,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;SACtG;KACF,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CAAC,wFAAwF;IAC1G,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,wEAAwE,EAAE;KAC7H;CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,gBAAgB,GAAgB;IACpC,EAAE,EAAE,oBAAoB;IACxB,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,+FAA+F;IAC5G,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC;IAC3C,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,+BAA+B;IACzC,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,4EAA4E;YACzF,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,2BAA2B;SACpC;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CAAC,kFAAkF;IACpG,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE;KAClD;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,GAAgB;IAC9B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,wIAAwI;IACrJ,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;IACrC,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,iCAAiC;IAC3C,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,6CAA6C;YAC1D,OAAO,EAAE,WAAW;SACrB;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KACxB,CAAC;IACF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB;YACE,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE;gBACR,KAAK;gBACL,gBAAgB,KAAK,CAAC,cAAc,IAAI,WAAW,GAAG;gBACtD,6BAA6B;gBAC7B,cAAc;gBACd,KAAK;gBACL,EAAE;gBACF,qEAAqE;gBACrE,6LAA6L;gBAC7L,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,oCAAoC,EAAE;KACxF;CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,GAAgB;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,2GAA2G;IACxH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC;IACrC,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE;QACN,WAAW;QACX;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,6FAA6F;YAC1G,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,6BAA6B;SACtC;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClE,UAAU,EAAE,GAAG,EAAE,CAAC,uGAAuG;IACzH,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE;KAC3C;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,kBAAkB,GAAgB;IACtC,EAAE,EAAE,sBAAsB;IAC1B,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,qLAAqL;IAClM,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC9C,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,4BAA4B;IACtC,MAAM,EAAE;QACN;YACE,GAAG,WAAW;YACd,OAAO,EAAE,uBAAuB;YAChC,WAAW,EACT,uMAAuM;SAC1M;KACF;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE;YACT,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,wBAAwB;oBACjC,OAAO,EAAE,IAAI;iBACd;aACF;SACF;QACD,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;YACjG,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B;QACD,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,6CAA6C,EAAE;QAC3F,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;KACtC;CACF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,oBAAoB,GAAgB;IACxC,EAAE,EAAE,wBAAwB;IAC5B,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,2OAA2O;IACxP,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;IAChD,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE;QACN,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,yBAAyB,EAAE;KACvD;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE;YACT,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,IAAI;iBACd;aACF;SACF;QACD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,+DAA+D,EAAE;QAC7G,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;KACtC;CACF,CAAC;AAEF,yEAAyE;AACzE,MAAM,eAAe,GAAgB;IACnC,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EAAE,oGAAoG;IACjH,IAAI,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC;IAC7C,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,2BAA2B;IACrC,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,aAAa,EAAE;YACb,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;SAC9D;QACD,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,0CAA0C,EAAE;KAC/F;CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,kBAAkB,GAAgB;IACtC,EAAE,EAAE,sBAAsB;IAC1B,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,oNAAoN;IACjO,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;QAC/F,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;YAC9B,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,QAAQ,EAAE,aAAa;SACxB;QACD,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,+BAA+B,EAAE;QAC7E,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;KACrC;CACF,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACxB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CACf,CAAC;AAEX,sFAAsF;AACtF,MAAM,QAAQ,GAAgB;IAC5B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,uRAAuR;IACpS,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC;IACnD,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,GAAG,qBAAqB;QACxB,GAAG,wBAAwB,EAAE;QAC7B,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAC7D,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;YAC9B,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,QAAQ,EAAE,aAAa;SACxB;QACD,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE;KACjF,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CAAC;QAChB,iFAAiF;QACjF,4BAA4B;QAC5B,6BAA6B;QAC7B,6BAA6B;QAC7B,8BAA8B;QAC9B,4BAA4B;QAC5B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,+BAA+B,EAAE;QAC7E,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/C;CACF,CAAC;AAEF,wEAAwE;AACxE,MAAM,cAAc,GAAgB;IAClC,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,iTAAiT;IAC9T,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC;IAC1D,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE;QACrC,GAAG,qBAAqB;QACxB,GAAG,wBAAwB,EAAE;QAC7B,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;QACxH,MAAM,EAAE;YACN,GAAG,WAAW,CAAC,MAAM,CAAC;YACtB,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAC7D,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE;YACpE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,CAAC,GAAG,CAAC;YACpB,QAAQ,EAAE,qBAAqB;YAC/B,sBAAsB,EAAE,IAAI;SAC7B;QACD,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE;KACjF,CAAC;IACF,UAAU,EAAE,GAAG,EAAE,CAAC;QAChB,gFAAgF;QAChF,4BAA4B;QAC5B,6BAA6B;QAC7B,6BAA6B;QAC7B,8BAA8B;QAC9B,4BAA4B;QAC5B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,oBAAoB,EAAE;QACpB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,0BAA0B,EAAE;QACxE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/C;CACF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,cAAc;IACd,oBAAoB;IACpB,2BAA2B;IAC3B,YAAY;IACZ,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,kBAAkB;IAClB,QAAQ;IACR,cAAc;CACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AgentRecipe } from "./types.js";
2
+ export type { AgentRecipe, GeneratedFile, RecipeInput, RecipeInputValues, RecipeValidateExpectation, } from "./types.js";
3
+ export { resolveRecipeInputs } from "./types.js";
4
+ export { RECIPE_CATALOG } from "./catalog.js";
5
+ /** id -> recipe, for O(1) lookup by the CLI. */
6
+ export declare const RECIPES: ReadonlyMap<string, AgentRecipe>;
7
+ /** Look up a recipe by id, or undefined when unknown. */
8
+ export declare function findRecipe(id: string): AgentRecipe | undefined;
9
+ /** Every recipe id, in catalog order. */
10
+ export declare function recipeIds(): readonly string[];
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recipes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,gDAAgD;AAChD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAEpD,CAAC;AAEF,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE9D;AAED,yCAAyC;AACzC,wBAAgB,SAAS,IAAI,SAAS,MAAM,EAAE,CAE7C"}
@@ -0,0 +1,14 @@
1
+ import { RECIPE_CATALOG } from "./catalog.js";
2
+ export { resolveRecipeInputs } from "./types.js";
3
+ export { RECIPE_CATALOG } from "./catalog.js";
4
+ /** id -> recipe, for O(1) lookup by the CLI. */
5
+ export const RECIPES = new Map(RECIPE_CATALOG.map((recipe) => [recipe.id, recipe]));
6
+ /** Look up a recipe by id, or undefined when unknown. */
7
+ export function findRecipe(id) {
8
+ return RECIPES.get(id);
9
+ }
10
+ /** Every recipe id, in catalog order. */
11
+ export function recipeIds() {
12
+ return RECIPE_CATALOG.map((recipe) => recipe.id);
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recipes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAU9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAqC,IAAI,GAAG,CAC9D,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CACpD,CAAC;AAEF,yDAAyD;AACzD,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,SAAS;IACvB,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,70 @@
1
+ import type { MonoAgentConfigJson } from "@mono-agent/config";
2
+ import type { ValidationStatus } from "../doctor.js";
3
+ /**
4
+ * A value the recipe templates against. Non-secret inputs carry a default and
5
+ * may be overridden from the CLI; secret inputs are never written into JSON —
6
+ * they only emit a `.env.example` placeholder via {@link AgentRecipe.envExample}.
7
+ */
8
+ export interface RecipeInput {
9
+ readonly id: string;
10
+ readonly label: string;
11
+ readonly description: string;
12
+ /** Default used when the CLI does not override the input. */
13
+ readonly default?: string;
14
+ /** Secret inputs are externalized to `.env.example`, never inlined in JSON. */
15
+ readonly secret?: boolean;
16
+ /** The `MONO_AGENT_*` env var a secret input maps to (for `.env.example`). */
17
+ readonly envVar?: string;
18
+ }
19
+ /** Resolved input values keyed by {@link RecipeInput.id}. */
20
+ export type RecipeInputValues = Readonly<Record<string, string | undefined>>;
21
+ /** An auxiliary file a recipe scaffolds beside the config (e.g. a cron job markdown). */
22
+ export interface GeneratedFile {
23
+ /** Path relative to the agent folder. */
24
+ readonly path: string;
25
+ readonly contents: string;
26
+ }
27
+ /**
28
+ * A capability the recipe promises once secrets are filled in. `mono-agent
29
+ * validate --recipe <id>` checks each expectation against the doctor report and
30
+ * reports "selected recipe incomplete" when a required section is not yet at the
31
+ * promised status (e.g. a channel still `waiting` on a token).
32
+ */
33
+ export interface RecipeValidateExpectation {
34
+ /** Doctor section id, e.g. `runtime`, `memory`, `channel:telegram`. */
35
+ readonly sectionId: string;
36
+ /** The status the section must reach for the recipe to be considered live. */
37
+ readonly mustBe: ValidationStatus;
38
+ /** Human note explaining what to do if the expectation is unmet. */
39
+ readonly note?: string;
40
+ }
41
+ /**
42
+ * A typed, testable blueprint that compiles to an ordinary
43
+ * `mono-agent.config.json` plus optional `.env.example` placeholders and
44
+ * follow-up files. Recipes never change runtime contracts — they only emit JSON
45
+ * the existing loader already accepts — and never write secrets into the config.
46
+ */
47
+ export interface AgentRecipe {
48
+ readonly id: string;
49
+ readonly title: string;
50
+ readonly description: string;
51
+ readonly tags: readonly string[];
52
+ readonly riskLevel: "low" | "medium" | "high";
53
+ /**
54
+ * The `docs/playbooks/<playbook>.md` this recipe mirrors, parity-checked to
55
+ * exist. The composite "full" blueprints have no single playbook and omit it.
56
+ */
57
+ readonly playbook?: string;
58
+ readonly inputs: readonly RecipeInput[];
59
+ /** Build the `mono-agent.config.json` contents from resolved inputs. */
60
+ readonly config: (input: RecipeInputValues) => MonoAgentConfigJson;
61
+ /** `.env.example` lines for the secrets this recipe needs (never in JSON). */
62
+ readonly envExample?: (input: RecipeInputValues) => string;
63
+ /** Extra files to scaffold (cron job markdown, etc.). */
64
+ readonly files?: (input: RecipeInputValues) => readonly GeneratedFile[];
65
+ /** Capabilities `validate --recipe` checks once secrets are supplied. */
66
+ readonly validateExpectations: readonly RecipeValidateExpectation[];
67
+ }
68
+ /** Resolve declared input defaults, then layer CLI overrides on top. */
69
+ export declare function resolveRecipeInputs(recipe: AgentRecipe, overrides?: RecipeInputValues): RecipeInputValues;
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/recipes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE7E,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;IACnE,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,MAAM,CAAC;IAC3D,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,aAAa,EAAE,CAAC;IACxE,yEAAyE;IACzE,QAAQ,CAAC,oBAAoB,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACrE;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,SAAS,GAAE,iBAAsB,GAChC,iBAAiB,CAYnB"}