@mono-agent/agent-app 0.4.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.
- package/README.md +15 -5
- package/dist/adapter-send-tools-main.js +2 -2
- package/dist/adapter-send-tools-main.js.map +1 -1
- package/dist/adapter-send-tools.d.ts +72 -6
- package/dist/adapter-send-tools.d.ts.map +1 -1
- package/dist/adapter-send-tools.js +413 -38
- package/dist/adapter-send-tools.js.map +1 -1
- package/dist/app-config.d.ts +48 -11
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +98 -24
- package/dist/app-config.js.map +1 -1
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +659 -48
- package/dist/app.js.map +1 -1
- package/dist/artifact-retention.d.ts +32 -0
- package/dist/artifact-retention.d.ts.map +1 -0
- package/dist/artifact-retention.js +111 -0
- package/dist/artifact-retention.js.map +1 -0
- package/dist/audit-runs.d.ts +12 -0
- package/dist/audit-runs.d.ts.map +1 -0
- package/dist/audit-runs.js +68 -0
- package/dist/audit-runs.js.map +1 -0
- package/dist/backfill.d.ts +3 -7
- package/dist/backfill.d.ts.map +1 -1
- package/dist/backfill.js +115 -11
- package/dist/backfill.js.map +1 -1
- package/dist/background.d.ts +8 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +202 -4
- package/dist/background.js.map +1 -1
- package/dist/broadcast-recorder.d.ts +27 -0
- package/dist/broadcast-recorder.d.ts.map +1 -0
- package/dist/broadcast-recorder.js +82 -0
- package/dist/broadcast-recorder.js.map +1 -0
- package/dist/channel-config-view.d.ts +28 -0
- package/dist/channel-config-view.d.ts.map +1 -0
- package/dist/channel-config-view.js +79 -0
- package/dist/channel-config-view.js.map +1 -0
- package/dist/channel-gate.d.ts +22 -0
- package/dist/channel-gate.d.ts.map +1 -0
- package/dist/channel-gate.js +35 -0
- package/dist/channel-gate.js.map +1 -0
- package/dist/channel-plugins.d.ts +39 -0
- package/dist/channel-plugins.d.ts.map +1 -0
- package/dist/channel-plugins.js +346 -0
- package/dist/channel-plugins.js.map +1 -0
- package/dist/channels.d.ts +62 -73
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +833 -126
- package/dist/channels.js.map +1 -1
- package/dist/cli.d.ts +53 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +696 -28
- package/dist/cli.js.map +1 -1
- package/dist/config-reference.d.ts +24 -0
- package/dist/config-reference.d.ts.map +1 -0
- package/dist/config-reference.js +580 -0
- package/dist/config-reference.js.map +1 -0
- package/dist/configured-agent.d.ts +104 -0
- package/dist/configured-agent.d.ts.map +1 -0
- package/dist/configured-agent.js +578 -0
- package/dist/configured-agent.js.map +1 -0
- package/dist/consumer-contract.d.ts +36 -0
- package/dist/consumer-contract.d.ts.map +1 -0
- package/dist/consumer-contract.js +290 -0
- package/dist/consumer-contract.js.map +1 -0
- package/dist/doctor.d.ts +9 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +252 -55
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +23 -7
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +91 -26
- package/dist/init.js.map +1 -1
- package/dist/install-skill.d.ts +1 -1
- package/dist/install-skill.js +2 -2
- package/dist/install-skill.js.map +1 -1
- package/dist/interaction-bridge.d.ts +72 -0
- package/dist/interaction-bridge.d.ts.map +1 -0
- package/dist/interaction-bridge.js +354 -0
- package/dist/interaction-bridge.js.map +1 -0
- package/dist/memory-command.d.ts +10 -0
- package/dist/memory-command.d.ts.map +1 -0
- package/dist/memory-command.js +649 -0
- package/dist/memory-command.js.map +1 -0
- package/dist/memory-recall-main.js +1 -1
- package/dist/memory-recall-main.js.map +1 -1
- package/dist/memory-recall.d.ts +41 -5
- package/dist/memory-recall.d.ts.map +1 -1
- package/dist/memory-recall.js +75 -5
- package/dist/memory-recall.js.map +1 -1
- package/dist/memory-rituals.d.ts +8 -11
- package/dist/memory-rituals.d.ts.map +1 -1
- package/dist/memory-rituals.js +26 -25
- package/dist/memory-rituals.js.map +1 -1
- package/dist/metrics.d.ts +13 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +105 -0
- package/dist/metrics.js.map +1 -0
- package/dist/notify-destinations.d.ts +23 -0
- package/dist/notify-destinations.d.ts.map +1 -0
- package/dist/notify-destinations.js +79 -0
- package/dist/notify-destinations.js.map +1 -0
- package/dist/posted-message-index.d.ts +61 -0
- package/dist/posted-message-index.d.ts.map +1 -0
- package/dist/posted-message-index.js +178 -0
- package/dist/posted-message-index.js.map +1 -0
- package/dist/proactive-notify.d.ts +32 -0
- package/dist/proactive-notify.d.ts.map +1 -0
- package/dist/proactive-notify.js +62 -0
- package/dist/proactive-notify.js.map +1 -0
- package/dist/recipes/base.d.ts +15 -0
- package/dist/recipes/base.d.ts.map +1 -0
- package/dist/recipes/base.js +51 -0
- package/dist/recipes/base.js.map +1 -0
- package/dist/recipes/catalog.d.ts +4 -0
- package/dist/recipes/catalog.d.ts.map +1 -0
- package/dist/recipes/catalog.js +509 -0
- package/dist/recipes/catalog.js.map +1 -0
- package/dist/recipes/index.d.ts +11 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +14 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/types.d.ts +70 -0
- package/dist/recipes/types.d.ts.map +1 -0
- package/dist/recipes/types.js +15 -0
- package/dist/recipes/types.js.map +1 -0
- package/dist/request-model-override.d.ts +67 -0
- package/dist/request-model-override.d.ts.map +1 -0
- package/dist/request-model-override.js +96 -0
- package/dist/request-model-override.js.map +1 -0
- package/dist/runs-health.d.ts +22 -0
- package/dist/runs-health.d.ts.map +1 -0
- package/dist/runs-health.js +144 -0
- package/dist/runs-health.js.map +1 -0
- package/dist/seen-conversations.d.ts +22 -0
- package/dist/seen-conversations.d.ts.map +1 -0
- package/dist/seen-conversations.js +120 -0
- package/dist/seen-conversations.js.map +1 -0
- package/dist/setup.d.ts +29 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +97 -0
- package/dist/setup.js.map +1 -0
- package/dist/trigger-overrides.d.ts +17 -0
- package/dist/trigger-overrides.d.ts.map +1 -0
- package/dist/trigger-overrides.js +30 -0
- package/dist/trigger-overrides.js.map +1 -0
- package/dist/tui-command.d.ts +56 -0
- package/dist/tui-command.d.ts.map +1 -0
- package/dist/tui-command.js +160 -0
- package/dist/tui-command.js.map +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +4 -0
- package/dist/ui.js.map +1 -1
- package/dist/web-command.d.ts +39 -0
- package/dist/web-command.d.ts.map +1 -0
- package/dist/web-command.js +151 -0
- package/dist/web-command.js.map +1 -0
- package/package.json +17 -17
- package/schema/mono-agent.config.schema.json +1686 -0
- package/skills/mono-agent-composer/SKILL.md +34 -9
- package/skills/mono-agent-composer/agents/openai.yaml +4 -0
- package/skills/mono-agent-composer/references/config-blueprint.md +52 -18
- package/skills/mono-agent-composer/references/discovery-questions.md +14 -16
- package/skills/mono-agent-composer/references/feature-coverage.md +19 -15
- package/skills/mono-agent-composer/references/package-map.md +17 -19
- package/skills/mono-agent-composer/references/playbooks.md +209 -0
- package/skills/mono-agent-composer/references/validation.md +9 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { monoAgentConfigWithSchema } from "../config-reference.js";
|
|
2
|
+
export const DEFAULT_MODEL = "claude:claude-sonnet-4-6";
|
|
3
|
+
/** The model input every recipe shares; overridable from `--model`. */
|
|
4
|
+
export const MODEL_INPUT = {
|
|
5
|
+
id: "model",
|
|
6
|
+
label: "Model",
|
|
7
|
+
description: "Primary runtime model reference, e.g. claude:claude-sonnet-4-6, codex:gpt-5.5, pi:ollama:gemma4:31b.",
|
|
8
|
+
default: DEFAULT_MODEL,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The adapter-neutral skeleton every recipe extends: runtime model, identity,
|
|
12
|
+
* empty tool policy, local artifacts, and the trace registry. Recipes spread
|
|
13
|
+
* this and add their channel / memory / sandbox / observability blocks. Mirrors
|
|
14
|
+
* `init.ts`'s scaffold so a recipe-built folder matches a hand-init'd one.
|
|
15
|
+
*/
|
|
16
|
+
export function baseConfig(input) {
|
|
17
|
+
return monoAgentConfigWithSchema({
|
|
18
|
+
runtime: {
|
|
19
|
+
model: input.model ?? DEFAULT_MODEL,
|
|
20
|
+
workspace: ".",
|
|
21
|
+
},
|
|
22
|
+
context: {
|
|
23
|
+
identityPath: "./IDENTITY.md",
|
|
24
|
+
selectedSkills: [],
|
|
25
|
+
},
|
|
26
|
+
tools: {
|
|
27
|
+
allowedTools: [],
|
|
28
|
+
disallowedTools: [],
|
|
29
|
+
},
|
|
30
|
+
artifacts: {
|
|
31
|
+
dir: "./.mono-agent/artifacts",
|
|
32
|
+
retention: {
|
|
33
|
+
maxAgeDays: 365,
|
|
34
|
+
maxCount: 50000,
|
|
35
|
+
dryRun: false,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
traceability: {
|
|
39
|
+
registryDir: "./.mono-agent/trace-sources",
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** A `memory` block for the given tier, rooted at the standard memory path. */
|
|
44
|
+
export function memoryBlock(mode) {
|
|
45
|
+
return {
|
|
46
|
+
mode,
|
|
47
|
+
path: "./.mono-agent/memory",
|
|
48
|
+
writeMode: mode === "bujo" ? "capture" : "append-host-summary",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/recipes/base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAExD,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,sGAAsG;IACnH,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,OAAO,yBAAyB,CAAC;QAC/B,OAAO,EAAE;YACP,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa;YACnC,SAAS,EAAE,GAAG;SACf;QACD,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,cAAc,EAAE,EAAE;SACnB;QACD,KAAK,EAAE;YACL,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,EAAE;SACpB;QACD,SAAS,EAAE;YACT,GAAG,EAAE,yBAAyB;YAC9B,SAAS,EAAE;gBACT,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK;aACd;SACF;QACD,YAAY,EAAE;YACZ,WAAW,EAAE,6BAA6B;SAC3C;KACqB,CAAC,CAAC;AAC5B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CACzB,IAAiC;IAEjC,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/recipes/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAogBjE,6EAA6E;AAC7E,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAchD,CAAC"}
|
|
@@ -0,0 +1,509 @@
|
|
|
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
|
+
/** `local-ollama-private` — fully local agent (ollama provider + local memory). */
|
|
283
|
+
const localOllamaPrivate = {
|
|
284
|
+
id: "local-ollama-private",
|
|
285
|
+
title: "Local Ollama private agent",
|
|
286
|
+
description: "Runs entirely on a local Ollama provider with local journal memory and embeddings — no remote calls.",
|
|
287
|
+
tags: ["local", "ollama", "private", "memory"],
|
|
288
|
+
riskLevel: "low",
|
|
289
|
+
playbook: "local-only-ollama-agent.md",
|
|
290
|
+
inputs: [
|
|
291
|
+
{ ...MODEL_INPUT, default: "pi:ollama:gemma4:31b" },
|
|
292
|
+
],
|
|
293
|
+
config: (input) => withSections(input, {
|
|
294
|
+
providers: {
|
|
295
|
+
local: [
|
|
296
|
+
{
|
|
297
|
+
id: "ollama",
|
|
298
|
+
type: "ollama",
|
|
299
|
+
baseUrl: "http://localhost:11434",
|
|
300
|
+
enabled: true,
|
|
301
|
+
},
|
|
302
|
+
],
|
|
303
|
+
},
|
|
304
|
+
memory: {
|
|
305
|
+
...memoryBlock("journal"),
|
|
306
|
+
embeddings: { provider: "ollama", model: "nomic-embed-text", endpoint: "http://localhost:11434" },
|
|
307
|
+
recallTool: { enabled: true },
|
|
308
|
+
},
|
|
309
|
+
webhook: { enabled: true },
|
|
310
|
+
}),
|
|
311
|
+
validateExpectations: [
|
|
312
|
+
{ sectionId: "runtime", mustBe: "ok", note: "Start ollama and pull the configured model." },
|
|
313
|
+
{ sectionId: "memory", mustBe: "ok" },
|
|
314
|
+
],
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* `local-lmstudio-private` — fully local agent (LM Studio provider + lite memory).
|
|
318
|
+
*
|
|
319
|
+
* Ships `lite` (FTS-only, no embeddings) rather than `journal`, even though LM
|
|
320
|
+
* Studio's own OpenAI-compatible /v1/embeddings endpoint works fine as a
|
|
321
|
+
* `memory.embeddings.provider: "openai"` target (see the playbook). Reason:
|
|
322
|
+
* `readMemoryEmbeddingsConfig` (packages/config/src/config.ts) treats a
|
|
323
|
+
* missing openai-embeddings API key as a FATAL core-config-load error, not a
|
|
324
|
+
* per-section `waiting` — unlike channel secrets, which fail independently
|
|
325
|
+
* per adapter. Every recipe here is tested to load with zero env vars set
|
|
326
|
+
* (recipes.test.ts), so a required-at-load secret can't be the shipped
|
|
327
|
+
* default. The playbook documents the journal-tier upgrade as an explicit
|
|
328
|
+
* opt-in step once `.env` is populated.
|
|
329
|
+
*/
|
|
330
|
+
const localLmStudioPrivate = {
|
|
331
|
+
id: "local-lmstudio-private",
|
|
332
|
+
title: "Local LM Studio private agent",
|
|
333
|
+
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.",
|
|
334
|
+
tags: ["local", "lmstudio", "private", "memory"],
|
|
335
|
+
riskLevel: "low",
|
|
336
|
+
playbook: "local-only-lmstudio-agent.md",
|
|
337
|
+
inputs: [
|
|
338
|
+
{ ...MODEL_INPUT, default: "pi:lmstudio:qwen3.6-32b" },
|
|
339
|
+
],
|
|
340
|
+
config: (input) => withSections(input, {
|
|
341
|
+
providers: {
|
|
342
|
+
local: [
|
|
343
|
+
{
|
|
344
|
+
id: "lmstudio",
|
|
345
|
+
type: "lmstudio",
|
|
346
|
+
baseUrl: "http://localhost:1234",
|
|
347
|
+
enabled: true,
|
|
348
|
+
},
|
|
349
|
+
],
|
|
350
|
+
},
|
|
351
|
+
memory: memoryBlock("lite"),
|
|
352
|
+
webhook: { enabled: true },
|
|
353
|
+
}),
|
|
354
|
+
validateExpectations: [
|
|
355
|
+
{ sectionId: "runtime", mustBe: "ok", note: "Start LM Studio's local server and load the configured model." },
|
|
356
|
+
{ sectionId: "memory", mustBe: "ok" },
|
|
357
|
+
],
|
|
358
|
+
};
|
|
359
|
+
/** `phoenix-observed` — local artifacts plus a Phoenix OTLP exporter. */
|
|
360
|
+
const phoenixObserved = {
|
|
361
|
+
id: "phoenix-observed",
|
|
362
|
+
title: "Phoenix-observed agent",
|
|
363
|
+
description: "Local JSONL artifacts plus a best-effort Phoenix OTLP exporter with includeSensitiveData disabled.",
|
|
364
|
+
tags: ["observability", "phoenix", "tracing"],
|
|
365
|
+
riskLevel: "low",
|
|
366
|
+
playbook: "phoenix-observed-agent.md",
|
|
367
|
+
inputs: [MODEL_INPUT],
|
|
368
|
+
config: (input) => withSections(input, {
|
|
369
|
+
observability: {
|
|
370
|
+
exporters: [{ type: "phoenix", includeSensitiveData: false }],
|
|
371
|
+
},
|
|
372
|
+
webhook: { enabled: true },
|
|
373
|
+
}),
|
|
374
|
+
validateExpectations: [
|
|
375
|
+
{ sectionId: "observability", mustBe: "ok", note: "Start Phoenix (or it reports `waiting`)." },
|
|
376
|
+
],
|
|
377
|
+
};
|
|
378
|
+
/** `sandboxed-code-agent` — explicit workspace policy + fail-closed sandbox. */
|
|
379
|
+
const sandboxedCodeAgent = {
|
|
380
|
+
id: "sandboxed-code-agent",
|
|
381
|
+
title: "Sandboxed code agent",
|
|
382
|
+
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.",
|
|
383
|
+
tags: ["sandbox", "code", "safe"],
|
|
384
|
+
riskLevel: "medium",
|
|
385
|
+
playbook: "sandboxed-code-agent.md",
|
|
386
|
+
inputs: [MODEL_INPUT],
|
|
387
|
+
config: (input) => withSections(input, {
|
|
388
|
+
tools: { allowedTools: ["Read", "Write", "Edit", "Glob", "Grep", "Bash"], disallowedTools: [] },
|
|
389
|
+
sandbox: {
|
|
390
|
+
mode: "native",
|
|
391
|
+
network: { mode: "localhost" },
|
|
392
|
+
readableRoots: ["."],
|
|
393
|
+
writableRoots: ["."],
|
|
394
|
+
fallback: "fail-closed",
|
|
395
|
+
},
|
|
396
|
+
webhook: { enabled: true },
|
|
397
|
+
}),
|
|
398
|
+
validateExpectations: [
|
|
399
|
+
{ sectionId: "sandbox", mustBe: "ok", note: SANDBOX_FAIL_CLOSED_ENGINE_NOTE },
|
|
400
|
+
{ sectionId: "tools", mustBe: "ok" },
|
|
401
|
+
],
|
|
402
|
+
};
|
|
403
|
+
const ALL_CHANNELS_SECTIONS = {
|
|
404
|
+
telegram: { enabled: true },
|
|
405
|
+
slack: { enabled: true },
|
|
406
|
+
webhook: { enabled: true },
|
|
407
|
+
openaiApi: { enabled: true },
|
|
408
|
+
cron: { enabled: true },
|
|
409
|
+
};
|
|
410
|
+
/** `full-safe` — every channel present, loopback/secret-externalized, fail-closed. */
|
|
411
|
+
const fullSafe = {
|
|
412
|
+
id: "full-safe",
|
|
413
|
+
title: "Full (safe) blueprint",
|
|
414
|
+
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.",
|
|
415
|
+
tags: ["full", "safe", "blueprint", "all-channels"],
|
|
416
|
+
riskLevel: "medium",
|
|
417
|
+
inputs: [MODEL_INPUT],
|
|
418
|
+
config: (input) => withSections(input, {
|
|
419
|
+
...ALL_CHANNELS_SECTIONS,
|
|
420
|
+
...a2aProviderPluginSection(),
|
|
421
|
+
memory: {
|
|
422
|
+
...memoryBlock("journal"),
|
|
423
|
+
embeddings: { provider: "ollama", model: "nomic-embed-text" },
|
|
424
|
+
recallTool: { enabled: true },
|
|
425
|
+
},
|
|
426
|
+
sandbox: {
|
|
427
|
+
mode: "native",
|
|
428
|
+
network: { mode: "localhost" },
|
|
429
|
+
readableRoots: ["."],
|
|
430
|
+
writableRoots: ["."],
|
|
431
|
+
fallback: "fail-closed",
|
|
432
|
+
},
|
|
433
|
+
observability: { exporters: [{ type: "phoenix", includeSensitiveData: false }] },
|
|
434
|
+
}),
|
|
435
|
+
envExample: () => [
|
|
436
|
+
"# Fill in only the channels you actually run; loopback channels need no secret.",
|
|
437
|
+
"MONO_AGENT_TELEGRAM_TOKEN=",
|
|
438
|
+
"MONO_AGENT_SLACK_BOT_TOKEN=",
|
|
439
|
+
"MONO_AGENT_SLACK_APP_TOKEN=",
|
|
440
|
+
"MONO_AGENT_A2A_BEARER_TOKEN=",
|
|
441
|
+
"MONO_AGENT_OPENAI_API_KEY=",
|
|
442
|
+
"",
|
|
443
|
+
].join("\n"),
|
|
444
|
+
validateExpectations: [
|
|
445
|
+
{ sectionId: "runtime", mustBe: "ok" },
|
|
446
|
+
{ sectionId: "sandbox", mustBe: "ok", note: SANDBOX_FAIL_CLOSED_ENGINE_NOTE },
|
|
447
|
+
{ sectionId: "channel:webhook", mustBe: "ok" },
|
|
448
|
+
],
|
|
449
|
+
};
|
|
450
|
+
/** `full-local-power` — explicitly high-risk local operator profile. */
|
|
451
|
+
const fullLocalPower = {
|
|
452
|
+
id: "full-local-power",
|
|
453
|
+
title: "Full (local power) blueprint",
|
|
454
|
+
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.",
|
|
455
|
+
tags: ["full", "power", "blueprint", "high-risk", "local"],
|
|
456
|
+
riskLevel: "high",
|
|
457
|
+
inputs: [MODEL_INPUT],
|
|
458
|
+
config: (input) => withSections(input, {
|
|
459
|
+
...ALL_CHANNELS_SECTIONS,
|
|
460
|
+
...a2aProviderPluginSection(),
|
|
461
|
+
tools: { allowedTools: ["Read", "Write", "Edit", "Glob", "Grep", "Bash", "WebFetch", "WebSearch"], disallowedTools: [] },
|
|
462
|
+
memory: {
|
|
463
|
+
...memoryBlock("bujo"),
|
|
464
|
+
embeddings: { provider: "ollama", model: "nomic-embed-text" },
|
|
465
|
+
llm: { provider: "agent-host", model: input.model ?? DEFAULT_MODEL },
|
|
466
|
+
recallTool: { enabled: true },
|
|
467
|
+
},
|
|
468
|
+
sandbox: {
|
|
469
|
+
mode: "native",
|
|
470
|
+
network: { mode: "all" },
|
|
471
|
+
readableRoots: ["."],
|
|
472
|
+
writableRoots: ["."],
|
|
473
|
+
fallback: "unsafe-host-process",
|
|
474
|
+
unsafeAllowHostProcess: true,
|
|
475
|
+
},
|
|
476
|
+
observability: { exporters: [{ type: "phoenix", includeSensitiveData: false }] },
|
|
477
|
+
}),
|
|
478
|
+
envExample: () => [
|
|
479
|
+
"# Local power profile — fill in channels you run; everything else is loopback.",
|
|
480
|
+
"MONO_AGENT_TELEGRAM_TOKEN=",
|
|
481
|
+
"MONO_AGENT_SLACK_BOT_TOKEN=",
|
|
482
|
+
"MONO_AGENT_SLACK_APP_TOKEN=",
|
|
483
|
+
"MONO_AGENT_A2A_BEARER_TOKEN=",
|
|
484
|
+
"MONO_AGENT_OPENAI_API_KEY=",
|
|
485
|
+
"",
|
|
486
|
+
].join("\n"),
|
|
487
|
+
validateExpectations: [
|
|
488
|
+
{ sectionId: "runtime", mustBe: "ok" },
|
|
489
|
+
{ sectionId: "sandbox", mustBe: "ok", note: SANDBOX_UNSAFE_ENGINE_NOTE },
|
|
490
|
+
{ sectionId: "channel:webhook", mustBe: "ok" },
|
|
491
|
+
],
|
|
492
|
+
};
|
|
493
|
+
/** Ordered catalog — starter recipes first, then the two full blueprints. */
|
|
494
|
+
export const RECIPE_CATALOG = [
|
|
495
|
+
minimalWebhook,
|
|
496
|
+
personalTelegramBujo,
|
|
497
|
+
personalTelegramSupermemory,
|
|
498
|
+
slackTeamBot,
|
|
499
|
+
openaiApiGateway,
|
|
500
|
+
cronDigest,
|
|
501
|
+
a2aProvider,
|
|
502
|
+
localOllamaPrivate,
|
|
503
|
+
localLmStudioPrivate,
|
|
504
|
+
phoenixObserved,
|
|
505
|
+
sandboxedCodeAgent,
|
|
506
|
+
fullSafe,
|
|
507
|
+
fullLocalPower,
|
|
508
|
+
];
|
|
509
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/recipes/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|