@lobu/core 9.1.0 → 9.2.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.
- package/dist/__tests__/network-domains.test.d.ts +1 -1
- package/dist/__tests__/network-domains.test.js +1 -1
- package/dist/guardrails/types.d.ts +1 -1
- package/dist/guardrails/types.js +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/dist/__tests__/lobu-toml-schema-harden.test.d.ts +0 -10
- package/dist/__tests__/lobu-toml-schema-harden.test.d.ts.map +0 -1
- package/dist/__tests__/lobu-toml-schema-harden.test.js +0 -722
- package/dist/__tests__/lobu-toml-schema-harden.test.js.map +0 -1
- package/dist/__tests__/lobu-toml-schema.test.d.ts +0 -2
- package/dist/__tests__/lobu-toml-schema.test.d.ts.map +0 -1
- package/dist/__tests__/lobu-toml-schema.test.js +0 -100
- package/dist/__tests__/lobu-toml-schema.test.js.map +0 -1
- package/dist/lobu-toml-schema.d.ts +0 -379
- package/dist/lobu-toml-schema.d.ts.map +0 -1
- package/dist/lobu-toml-schema.js +0 -270
- package/dist/lobu-toml-schema.js.map +0 -1
package/dist/lobu-toml-schema.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Canonical zod schema for `lobu.toml`.
|
|
4
|
-
*
|
|
5
|
-
* This is the single source of truth for both the CLI (validation on disk)
|
|
6
|
-
* and the gateway (runtime loading). Uses zod@4.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.lobuConfigSchema = void 0;
|
|
10
|
-
const zod_1 = require("zod");
|
|
11
|
-
const network_domains_1 = require("./utils/network-domains");
|
|
12
|
-
// ── Provider ────────────────────────────────────────────────────────────────
|
|
13
|
-
const providerSchema = zod_1.z
|
|
14
|
-
.object({
|
|
15
|
-
id: zod_1.z.string(),
|
|
16
|
-
model: zod_1.z.string().optional(),
|
|
17
|
-
/** API key — literal value or `$ENV_VAR` reference. */
|
|
18
|
-
key: zod_1.z.string().optional(),
|
|
19
|
-
/** First-class durable secret reference. */
|
|
20
|
-
secret_ref: zod_1.z.string().optional(),
|
|
21
|
-
})
|
|
22
|
-
.refine((p) => !(p.key && p.secret_ref), {
|
|
23
|
-
message: "provider must set at most one of `key` or `secret_ref`",
|
|
24
|
-
});
|
|
25
|
-
// ── Platform ────────────────────────────────────────────────────────────────
|
|
26
|
-
const platformSchema = zod_1.z.object({
|
|
27
|
-
type: zod_1.z.string(),
|
|
28
|
-
/**
|
|
29
|
-
* Optional disambiguator when an agent has multiple platform instances of
|
|
30
|
-
* the same type (e.g. two Slack workspaces). Slugged and appended to the
|
|
31
|
-
* stable platform ID: `{agent}-{type}-{name}`. Omit when there is only one
|
|
32
|
-
* instance per type.
|
|
33
|
-
*/
|
|
34
|
-
name: zod_1.z
|
|
35
|
-
.string()
|
|
36
|
-
.regex(/^[a-z0-9][a-z0-9-]*$/, {
|
|
37
|
-
message: "platform name must be lowercase alphanumeric with hyphens",
|
|
38
|
-
})
|
|
39
|
-
.optional(),
|
|
40
|
-
/** Platform-specific config (e.g. `{ botToken: "$BOT_TOKEN" }`). */
|
|
41
|
-
config: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
|
|
42
|
-
/**
|
|
43
|
-
* Declarative channel routing (Slack only, for now): chat channels this agent
|
|
44
|
-
* should be reachable in. Each entry is `"<teamId>/<channelId>"` — e.g.
|
|
45
|
-
* `"T0ABCDEF/C0123ABCD"` (both appear in any Slack channel URL). `lobu apply`
|
|
46
|
-
* reconciles `agent_channel_bindings` to exactly this list for this agent on
|
|
47
|
-
* this connection: listed channels get bound, ones no longer listed get
|
|
48
|
-
* unbound. Channels linked ad-hoc via `/lobu link` on *other* connections are
|
|
49
|
-
* left alone.
|
|
50
|
-
*/
|
|
51
|
-
channels: zod_1.z.array(zod_1.z.string()).optional(),
|
|
52
|
-
});
|
|
53
|
-
// ── MCP Server ──────────────────────────────────────────────────────────────
|
|
54
|
-
const mcpOAuthSchema = zod_1.z.object({
|
|
55
|
-
auth_url: zod_1.z.string(),
|
|
56
|
-
token_url: zod_1.z.string(),
|
|
57
|
-
client_id: zod_1.z.string().optional(),
|
|
58
|
-
client_secret: zod_1.z.string().optional(),
|
|
59
|
-
scopes: zod_1.z.array(zod_1.z.string()).optional(),
|
|
60
|
-
token_endpoint_auth_method: zod_1.z.string().optional(),
|
|
61
|
-
});
|
|
62
|
-
const mcpServerSchema = zod_1.z.object({
|
|
63
|
-
/**
|
|
64
|
-
* Transport kind. `streamable-http` (default for HTTP URLs) posts to a single
|
|
65
|
-
* endpoint and accepts either JSON or SSE-framed responses per the MCP spec.
|
|
66
|
-
* `sse` is the legacy transport with a separate /sse GET channel. `stdio`
|
|
67
|
-
* runs a local command.
|
|
68
|
-
*/
|
|
69
|
-
type: zod_1.z.enum(["streamable-http", "sse", "stdio"]).optional(),
|
|
70
|
-
url: zod_1.z.string().optional(),
|
|
71
|
-
command: zod_1.z.string().optional(),
|
|
72
|
-
args: zod_1.z.array(zod_1.z.string()).optional(),
|
|
73
|
-
env: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
74
|
-
headers: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
75
|
-
oauth: mcpOAuthSchema.optional(),
|
|
76
|
-
/**
|
|
77
|
-
* Credential scope for OAuth-authenticated MCPs.
|
|
78
|
-
* - `"user"` (default): each chat user logs in separately. Safe default.
|
|
79
|
-
* - `"channel"`: a single credential is shared across all users in a chat
|
|
80
|
-
* channel/conversation. Use only for shared-data integrations (e.g. team
|
|
81
|
-
* wikis) where per-user attribution isn't required.
|
|
82
|
-
*/
|
|
83
|
-
auth_scope: zod_1.z.enum(["user", "channel"]).optional(),
|
|
84
|
-
});
|
|
85
|
-
// ── Skills ──────────────────────────────────────────────────────────────────
|
|
86
|
-
const skillsSchema = zod_1.z.object({
|
|
87
|
-
mcp: zod_1.z.record(zod_1.z.string(), mcpServerSchema).optional(),
|
|
88
|
-
});
|
|
89
|
-
// ── Network ─────────────────────────────────────────────────────────────────
|
|
90
|
-
const judgeDomainEntry = zod_1.z.union([
|
|
91
|
-
zod_1.z.string(),
|
|
92
|
-
zod_1.z.object({
|
|
93
|
-
domain: zod_1.z.string(),
|
|
94
|
-
judge: zod_1.z.string().optional(),
|
|
95
|
-
}),
|
|
96
|
-
]);
|
|
97
|
-
const networkSchema = zod_1.z
|
|
98
|
-
.object({
|
|
99
|
-
allowed: zod_1.z.array(zod_1.z.string()).optional(),
|
|
100
|
-
denied: zod_1.z.array(zod_1.z.string()).optional(),
|
|
101
|
-
/**
|
|
102
|
-
* Domains routed through the LLM egress judge. Each entry is either
|
|
103
|
-
* a bare domain string (uses the "default" judge policy) or an object
|
|
104
|
-
* `{ domain, judge }` naming a policy in {@link network.judges}.
|
|
105
|
-
*/
|
|
106
|
-
judge: zod_1.z.array(judgeDomainEntry).optional(),
|
|
107
|
-
/**
|
|
108
|
-
* Named judge policies referenced by `judge[].judge`. The key "default"
|
|
109
|
-
* is applied when an entry omits `judge`.
|
|
110
|
-
*/
|
|
111
|
-
judges: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
112
|
-
})
|
|
113
|
-
.transform((network) => ({
|
|
114
|
-
allowed: (0, network_domains_1.normalizeDomainPatterns)(network.allowed),
|
|
115
|
-
denied: (0, network_domains_1.normalizeDomainPatterns)(network.denied),
|
|
116
|
-
judge: network.judge?.map((entry) => typeof entry === "string"
|
|
117
|
-
? { domain: entry }
|
|
118
|
-
: {
|
|
119
|
-
domain: entry.domain,
|
|
120
|
-
...(entry.judge ? { judge: entry.judge } : {}),
|
|
121
|
-
}),
|
|
122
|
-
judges: network.judges,
|
|
123
|
-
}));
|
|
124
|
-
// ── Egress ──────────────────────────────────────────────────────────────────
|
|
125
|
-
const egressSchema = zod_1.z.object({
|
|
126
|
-
/** Operator policy appended to every judge prompt for this agent. */
|
|
127
|
-
extra_policy: zod_1.z.string().optional(),
|
|
128
|
-
/** Judge model identifier (defaults to a fast Haiku model). */
|
|
129
|
-
judge_model: zod_1.z.string().optional(),
|
|
130
|
-
});
|
|
131
|
-
// ── Guardrails (inline) ─────────────────────────────────────────────────────
|
|
132
|
-
/**
|
|
133
|
-
* Inline guardrail declared in `lobu.toml` as an array of `[[agents.<id>.guardrails_inline]]`
|
|
134
|
-
* tables. Sibling to the name-based `guardrails = ["secret-scan", ...]` list —
|
|
135
|
-
* use this when you want to attach an ad-hoc LLM-judge guardrail without
|
|
136
|
-
* registering a named guardrail at gateway boot.
|
|
137
|
-
*
|
|
138
|
-
* Example:
|
|
139
|
-
* [[agents.<id>.guardrails_inline]]
|
|
140
|
-
* stage = "output"
|
|
141
|
-
* judge = "Never mention competitors."
|
|
142
|
-
*
|
|
143
|
-
* [[agents.<id>.guardrails_inline]]
|
|
144
|
-
* stage = "pre-tool"
|
|
145
|
-
* tools = ["github.delete_repo"]
|
|
146
|
-
* judge = "Only allow when issue ref matches active sprint."
|
|
147
|
-
*
|
|
148
|
-
* `tools` is only meaningful for `pre-tool` and is silently ignored for
|
|
149
|
-
* other stages.
|
|
150
|
-
*/
|
|
151
|
-
const guardrailInlineSchema = zod_1.z.object({
|
|
152
|
-
stage: zod_1.z.enum(["input", "output", "pre-tool"]),
|
|
153
|
-
/**
|
|
154
|
-
* Inline LLM-judge policy text. Required for now — built-in references go
|
|
155
|
-
* in the sibling `guardrails = [...]` list. The judge runs through the
|
|
156
|
-
* shared TextJudge engine (Haiku + 5-min cache + circuit breaker).
|
|
157
|
-
*/
|
|
158
|
-
judge: zod_1.z.string().min(1),
|
|
159
|
-
/**
|
|
160
|
-
* Optional pre-tool narrowing. Only meaningful when `stage = "pre-tool"`.
|
|
161
|
-
* When omitted the guardrail runs on every tool call.
|
|
162
|
-
*/
|
|
163
|
-
tools: zod_1.z.array(zod_1.z.string()).optional(),
|
|
164
|
-
});
|
|
165
|
-
// ── Tools ───────────────────────────────────────────────────────────────────
|
|
166
|
-
/**
|
|
167
|
-
* Accepted `pre_approved` entry formats:
|
|
168
|
-
* /mcp/<id>/tools/<name>
|
|
169
|
-
* /mcp/<id>/tools/*
|
|
170
|
-
* Anything else will fail validation — typos like "gmail" silently produced
|
|
171
|
-
* a no-op grant previously.
|
|
172
|
-
*/
|
|
173
|
-
const MCP_TOOL_PATTERN = /^\/mcp\/[a-zA-Z0-9_-]+\/tools\/([a-zA-Z0-9_-]+|\*)$/;
|
|
174
|
-
const mcpToolPatternSchema = zod_1.z
|
|
175
|
-
.string()
|
|
176
|
-
.refine((value) => MCP_TOOL_PATTERN.test(value), {
|
|
177
|
-
message: 'pre_approved entries must match "/mcp/<mcp-id>/tools/<tool-name>" or "/mcp/<mcp-id>/tools/*"',
|
|
178
|
-
});
|
|
179
|
-
const toolsSchema = zod_1.z.object({
|
|
180
|
-
/**
|
|
181
|
-
* Operator override: MCP tool grant patterns that bypass the in-thread
|
|
182
|
-
* approval card. Synced to the grant store at deployment time. See
|
|
183
|
-
* {@link AgentSettings.preApprovedTools} for the runtime shape.
|
|
184
|
-
*/
|
|
185
|
-
pre_approved: zod_1.z.array(mcpToolPatternSchema).optional(),
|
|
186
|
-
/**
|
|
187
|
-
* Worker-side tool visibility filter. Patterns follow Claude Code's
|
|
188
|
-
* permission format: `Read`, `Bash(git:*)`, `mcp__github__*`, `*`.
|
|
189
|
-
*/
|
|
190
|
-
allowed: zod_1.z.array(zod_1.z.string()).optional(),
|
|
191
|
-
denied: zod_1.z.array(zod_1.z.string()).optional(),
|
|
192
|
-
/** If true, ONLY `allowed` tools are permitted (ignores worker defaults). */
|
|
193
|
-
strict: zod_1.z.boolean().optional(),
|
|
194
|
-
});
|
|
195
|
-
// ── Worker ──────────────────────────────────────────────────────────────────
|
|
196
|
-
const workerSchema = zod_1.z.object({
|
|
197
|
-
nix_packages: zod_1.z.array(zod_1.z.string()).optional(),
|
|
198
|
-
});
|
|
199
|
-
// ── Preview ─────────────────────────────────────────────────────────────────
|
|
200
|
-
// Per-platform "try this agent in the hosted Lobu workspace" config — the key
|
|
201
|
-
// in `[agents.<id>.preview.<platform>]` is the chat platform (slack, telegram,
|
|
202
|
-
// …). `lobu run` prints a `/lobu link <code>` (`/link <code>` on Telegram) for
|
|
203
|
-
// each enabled platform; redeem it by DMing the hosted bot.
|
|
204
|
-
const previewPlatformSchema = zod_1.z
|
|
205
|
-
.object({
|
|
206
|
-
/** Enable the hosted Lobu preview bot for this agent on this platform. */
|
|
207
|
-
enabled: zod_1.z.boolean().optional(),
|
|
208
|
-
/** Surfaces a preview code can bind: a DM with the bot, or a channel it's in. */
|
|
209
|
-
surfaces: zod_1.z.array(zod_1.z.enum(["dm", "channel"])).optional(),
|
|
210
|
-
/** Short-lived claim-code TTL. Capped by the hosted preview API. */
|
|
211
|
-
code_ttl_minutes: zod_1.z.number().int().positive().max(60).optional(),
|
|
212
|
-
})
|
|
213
|
-
.strict();
|
|
214
|
-
const previewSchema = zod_1.z.record(zod_1.z.string(), previewPlatformSchema);
|
|
215
|
-
// ── Agent ───────────────────────────────────────────────────────────────────
|
|
216
|
-
const agentEntrySchema = zod_1.z.object({
|
|
217
|
-
name: zod_1.z.string(),
|
|
218
|
-
description: zod_1.z.string().optional(),
|
|
219
|
-
/** Path to agent content directory (IDENTITY.md, SOUL.md, USER.md, skills/). */
|
|
220
|
-
dir: zod_1.z.string(),
|
|
221
|
-
providers: zod_1.z.array(providerSchema).default([]),
|
|
222
|
-
platforms: zod_1.z.array(platformSchema).default([]),
|
|
223
|
-
skills: skillsSchema.default({}),
|
|
224
|
-
network: networkSchema.optional(),
|
|
225
|
-
egress: egressSchema.optional(),
|
|
226
|
-
tools: toolsSchema.optional(),
|
|
227
|
-
/**
|
|
228
|
-
* Guardrails enabled for this agent. Each name must match a guardrail
|
|
229
|
-
* registered in the gateway's GuardrailRegistry. See packages/core/src/guardrails.
|
|
230
|
-
*/
|
|
231
|
-
guardrails: zod_1.z.array(zod_1.z.string()).optional(),
|
|
232
|
-
/**
|
|
233
|
-
* Operator's exclude list: built-in / skill-provided guardrails that
|
|
234
|
-
* should be turned off for this agent even if a skill declared them.
|
|
235
|
-
* Names are matched against {@link Guardrail.name}, including the
|
|
236
|
-
* synthesized `inline:<stage>:<hash8>` names for inline judges from skills.
|
|
237
|
-
*/
|
|
238
|
-
guardrails_disabled: zod_1.z.array(zod_1.z.string()).optional(),
|
|
239
|
-
/**
|
|
240
|
-
* Inline guardrails declared directly on the agent (no registry lookup).
|
|
241
|
-
* Each entry materializes into an ad-hoc registered guardrail named
|
|
242
|
-
* `inline:<stage>:<hash8>` (hash of policy text) and is merged into the
|
|
243
|
-
* effective per-agent list at startup.
|
|
244
|
-
*/
|
|
245
|
-
guardrails_inline: zod_1.z.array(guardrailInlineSchema).optional(),
|
|
246
|
-
worker: workerSchema.optional(),
|
|
247
|
-
preview: previewSchema.optional(),
|
|
248
|
-
});
|
|
249
|
-
// ── Memory ─────────────────────────────────────────────────────────────────
|
|
250
|
-
const memorySchema = zod_1.z
|
|
251
|
-
.object({
|
|
252
|
-
enabled: zod_1.z.boolean().optional(),
|
|
253
|
-
org: zod_1.z.string().optional(),
|
|
254
|
-
/** Resolved organization id, written back by `lobu apply` once the org is
|
|
255
|
-
* resolved or created. Committed so the whole team applies to the same org. */
|
|
256
|
-
organization_id: zod_1.z.string().optional(),
|
|
257
|
-
name: zod_1.z.string().optional(),
|
|
258
|
-
description: zod_1.z.string().optional(),
|
|
259
|
-
visibility: zod_1.z.enum(["public", "private"]).optional(),
|
|
260
|
-
models: zod_1.z.string().optional(),
|
|
261
|
-
data: zod_1.z.string().optional(),
|
|
262
|
-
connectors: zod_1.z.string().optional(),
|
|
263
|
-
})
|
|
264
|
-
.strict();
|
|
265
|
-
// ── Top Level ───────────────────────────────────────────────────────────────
|
|
266
|
-
exports.lobuConfigSchema = zod_1.z.object({
|
|
267
|
-
agents: zod_1.z.record(zod_1.z.string().regex(/^[a-z0-9][a-z0-9-]*$/), agentEntrySchema),
|
|
268
|
-
memory: memorySchema.optional(),
|
|
269
|
-
});
|
|
270
|
-
//# sourceMappingURL=lobu-toml-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lobu-toml-schema.js","sourceRoot":"","sources":["../src/lobu-toml-schema.ts"],"names":[],"mappings":"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"}
|