melchizedek-agents 0.16.2 → 0.17.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/.env.example +17 -0
- package/AGENT_SETUP.md +2 -1
- package/CHANGELOG.md +142 -0
- package/DOCUMENTATION.md +237 -7
- package/QUICKSTART.md +2 -2
- package/README.md +125 -149
- package/config/agents/examples/harness.yaml +135 -0
- package/config/agents/examples/model_zoo.yaml +23 -9
- package/config/agents/examples/pipeline.yaml +120 -0
- package/config/agents/examples/specs/open-meteo-forecast.json +77 -0
- package/config/agents/examples/specs/open-meteo-geocoding.json +53 -0
- package/config/agents/examples/weather.yaml +59 -0
- package/config/agents/syndicateSchema.yaml +112 -1
- package/db/migrations/0011_erase_expired.sql +198 -0
- package/dist/lib/a2a/app.d.ts +7 -0
- package/dist/lib/a2a/app.js +7 -1
- package/dist/lib/a2a/executor.js +41 -0
- package/dist/lib/compile.d.ts +40 -1
- package/dist/lib/compile.js +132 -14
- package/dist/lib/config.d.ts +17 -0
- package/dist/lib/config.js +17 -0
- package/dist/lib/doctor.js +17 -4
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +1 -0
- package/dist/lib/loadSyndicate.d.ts +46 -0
- package/dist/lib/loadSyndicate.js +19 -3
- package/dist/lib/memory/erase.d.ts +5 -0
- package/dist/lib/memory/erase.js +5 -0
- package/dist/lib/models/capabilities.js +10 -0
- package/dist/lib/models/endpoints.d.ts +1 -1
- package/dist/lib/models/endpoints.js +4 -1
- package/dist/lib/models/gateway.d.ts +2 -2
- package/dist/lib/models/gateway.js +4 -4
- package/dist/lib/models/kimiLlm.d.ts +123 -0
- package/dist/lib/models/kimiLlm.js +171 -0
- package/dist/lib/models/providerMap.d.ts +2 -2
- package/dist/lib/models/providerMap.js +4 -1
- package/dist/lib/models/registry.d.ts +1 -1
- package/dist/lib/models/registry.js +11 -3
- package/dist/lib/net/redirects.d.ts +14 -0
- package/dist/lib/net/redirects.js +94 -0
- package/dist/lib/observability/tracer.d.ts +1 -1
- package/dist/lib/persistence/supabaseProvider.d.ts +2 -6
- package/dist/lib/persistence/supabaseProvider.js +2 -31
- package/dist/lib/runtime/questions.d.ts +55 -0
- package/dist/lib/runtime/questions.js +107 -0
- package/dist/lib/runtime/syndicateTurn.d.ts +42 -4
- package/dist/lib/runtime/syndicateTurn.js +162 -16
- package/dist/lib/storage/postgres/index.d.ts +6 -0
- package/dist/lib/storage/postgres/index.js +11 -0
- package/dist/lib/storage/rlsStatus.d.ts +45 -0
- package/dist/lib/storage/rlsStatus.js +69 -0
- package/dist/lib/syndicateSchema.d.ts +169 -0
- package/dist/lib/syndicateSchema.js +327 -2
- package/dist/lib/toolRegistry.js +9 -0
- package/dist/lib/tools/openapiTools.d.ts +46 -0
- package/dist/lib/tools/openapiTools.js +195 -0
- package/dist/lib/tools/skillToolset.d.ts +135 -0
- package/dist/lib/tools/skillToolset.js +247 -0
- package/dist/lib/tools/urlContextTool.d.ts +29 -0
- package/dist/lib/tools/urlContextTool.js +39 -0
- package/dist/lib/workflow.d.ts +72 -0
- package/dist/lib/workflow.js +180 -0
- package/dist/lib/workflowConfig.d.ts +95 -0
- package/dist/lib/workflowConfig.js +93 -0
- package/dist/scripts/syndicate_chat.js +39 -5
- package/package.json +4 -1
- package/skills/briefs/_shared.md +1 -1
- package/skills/briefs/melchizedek-author.md +8 -4
- package/skills/briefs/melchizedek-memory.md +1 -1
- package/skills/briefs/melchizedek-models.md +1 -1
- package/skills/briefs/melchizedek-scribe.md +4 -4
- package/skills/briefs/melchizedek-serve.md +1 -1
- package/skills/briefs/melchizedek.md +4 -1
- package/skills/melchizedek/SKILL.md +4 -1
- package/skills/melchizedek-author/SKILL.md +7 -3
- package/skills/melchizedek-memory/SKILL.md +1 -1
- package/skills/melchizedek-models/SKILL.md +1 -1
- package/skills/melchizedek-scribe/SKILL.md +3 -3
- package/skills/melchizedek-serve/SKILL.md +1 -1
- /package/skills/melchizedek-author/{templates → assets}/minimal.yaml +0 -0
- /package/skills/melchizedek-scribe/{templates → assets}/brief.md +0 -0
|
@@ -19,6 +19,7 @@ import { PostgresSessionService } from './sessionService.js';
|
|
|
19
19
|
import { PostgresTaskStore, reapExpiredTasks, renewTaskLeases } from './taskStore.js';
|
|
20
20
|
import { postgresTaskBackend } from './taskQueue.js';
|
|
21
21
|
import { searchPathOption } from '../schema.js';
|
|
22
|
+
import { POSTGRES_RLS_QUERY, evaluatePostgresRls } from '../rlsStatus.js';
|
|
22
23
|
import { createHash, randomUUID } from 'node:crypto';
|
|
23
24
|
import { hostname } from 'node:os';
|
|
24
25
|
export { PostgresSessionService } from './sessionService.js';
|
|
@@ -121,6 +122,16 @@ export function postgresStorage(options) {
|
|
|
121
122
|
throw err;
|
|
122
123
|
}
|
|
123
124
|
},
|
|
125
|
+
async rlsHardening() {
|
|
126
|
+
try {
|
|
127
|
+
const r = await pool.query(POSTGRES_RLS_QUERY);
|
|
128
|
+
const row = r.rows[0];
|
|
129
|
+
return evaluatePostgresRls({ apiRoles: row.api_roles, schema: row.schema, rows: row.rows });
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
return { applied: false, detail: `hardening check failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
133
|
+
}
|
|
134
|
+
},
|
|
124
135
|
async erase(scopeKey, eraseOptions = {}) {
|
|
125
136
|
if (!scopeKey?.trim())
|
|
126
137
|
throw new Error('erase: a scope key is required');
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/storage/rlsStatus.ts — is db/hardening.sql in force? One set of rules
|
|
3
|
+
* for both storage paths.
|
|
4
|
+
*
|
|
5
|
+
* WHY: a Supabase project exposes the tables in `public` through its REST
|
|
6
|
+
* API, readable and writable with the published anon key wherever row-level
|
|
7
|
+
* security is off. The server refuses to start on a public deployment
|
|
8
|
+
* without the hardening (ADR 0021). The supabase-js path asked
|
|
9
|
+
* melchizedek_rls_status(); the DATABASE_URL path asked nothing, so a
|
|
10
|
+
* deployment that followed the recommended setup never had the check.
|
|
11
|
+
*
|
|
12
|
+
* Both paths now read the same rows and judge them here:
|
|
13
|
+
* - adk_memory_facts and adk_sessions must have RLS on;
|
|
14
|
+
* - adk_agent_registry, where it exists, must too (anon write access there
|
|
15
|
+
* is agent takeover);
|
|
16
|
+
* - adk_telemetry without RLS is reported but does not fail the check.
|
|
17
|
+
*/
|
|
18
|
+
export interface RlsHardeningStatus {
|
|
19
|
+
/** true when db/hardening.sql is in force, or when nothing exposes the tables. */
|
|
20
|
+
applied: boolean;
|
|
21
|
+
/** Human-readable explanation for logs. */
|
|
22
|
+
detail: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RlsRow {
|
|
25
|
+
table_name: string;
|
|
26
|
+
rls_enabled: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Judge the RLS flags of the shipped tables. */
|
|
29
|
+
export declare function evaluateRlsRows(rows: RlsRow[]): RlsHardeningStatus;
|
|
30
|
+
/** What a direct Postgres connection sees: the API roles, the schema, and the flags. */
|
|
31
|
+
export interface PostgresRlsFacts {
|
|
32
|
+
/** True when the Supabase API roles (anon, authenticated) exist. */
|
|
33
|
+
apiRoles: boolean;
|
|
34
|
+
/** The schema the tables live in (first on the search_path). */
|
|
35
|
+
schema: string;
|
|
36
|
+
rows: RlsRow[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The DATABASE_URL path's judgment. Without the API roles nothing serves the
|
|
40
|
+
* tables over HTTP; in a schema other than `public` the Supabase REST API
|
|
41
|
+
* does not expose them unless someone adds that schema to it.
|
|
42
|
+
*/
|
|
43
|
+
export declare function evaluatePostgresRls(facts: PostgresRlsFacts): RlsHardeningStatus;
|
|
44
|
+
/** The query evaluatePostgresRls reads. */
|
|
45
|
+
export declare const POSTGRES_RLS_QUERY = "\n SELECT\n EXISTS (SELECT 1 FROM pg_roles WHERE rolname IN ('anon', 'authenticated')) AS api_roles,\n current_schema() AS schema,\n coalesce(\n (SELECT json_agg(json_build_object('table_name', c.relname, 'rls_enabled', c.relrowsecurity))\n FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = current_schema()\n AND c.relname IN ('adk_memory_facts', 'adk_sessions', 'adk_agent_registry', 'adk_telemetry')),\n '[]'::json\n ) AS rows";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/storage/rlsStatus.ts — is db/hardening.sql in force? One set of rules
|
|
3
|
+
* for both storage paths.
|
|
4
|
+
*
|
|
5
|
+
* WHY: a Supabase project exposes the tables in `public` through its REST
|
|
6
|
+
* API, readable and writable with the published anon key wherever row-level
|
|
7
|
+
* security is off. The server refuses to start on a public deployment
|
|
8
|
+
* without the hardening (ADR 0021). The supabase-js path asked
|
|
9
|
+
* melchizedek_rls_status(); the DATABASE_URL path asked nothing, so a
|
|
10
|
+
* deployment that followed the recommended setup never had the check.
|
|
11
|
+
*
|
|
12
|
+
* Both paths now read the same rows and judge them here:
|
|
13
|
+
* - adk_memory_facts and adk_sessions must have RLS on;
|
|
14
|
+
* - adk_agent_registry, where it exists, must too (anon write access there
|
|
15
|
+
* is agent takeover);
|
|
16
|
+
* - adk_telemetry without RLS is reported but does not fail the check.
|
|
17
|
+
*/
|
|
18
|
+
/** Judge the RLS flags of the shipped tables. */
|
|
19
|
+
export function evaluateRlsRows(rows) {
|
|
20
|
+
const unprotected = ['adk_memory_facts', 'adk_sessions'].filter((t) => !rows.some((r) => r.table_name === t && r.rls_enabled));
|
|
21
|
+
if (unprotected.length > 0) {
|
|
22
|
+
return { applied: false, detail: `RLS is disabled on: ${unprotected.join(', ')}` };
|
|
23
|
+
}
|
|
24
|
+
const registryRow = rows.find((r) => r.table_name === 'adk_agent_registry');
|
|
25
|
+
if (registryRow && !registryRow.rls_enabled) {
|
|
26
|
+
return {
|
|
27
|
+
applied: false,
|
|
28
|
+
detail: 'RLS is disabled on: adk_agent_registry (agent definitions are '
|
|
29
|
+
+ 'writable with the anon key) — re-run db/hardening.sql',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const telemetryRow = rows.find((r) => r.table_name === 'adk_telemetry');
|
|
33
|
+
if (telemetryRow && !telemetryRow.rls_enabled) {
|
|
34
|
+
return {
|
|
35
|
+
applied: true,
|
|
36
|
+
detail: 'RLS enabled on adk_memory_facts and adk_sessions — but NOT on adk_telemetry; re-run db/hardening.sql',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return { applied: true, detail: 'RLS enabled on adk_memory_facts and adk_sessions' };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The DATABASE_URL path's judgment. Without the API roles nothing serves the
|
|
43
|
+
* tables over HTTP; in a schema other than `public` the Supabase REST API
|
|
44
|
+
* does not expose them unless someone adds that schema to it.
|
|
45
|
+
*/
|
|
46
|
+
export function evaluatePostgresRls(facts) {
|
|
47
|
+
if (!facts.apiRoles) {
|
|
48
|
+
return { applied: true, detail: 'no anon or authenticated role in this database, so no API exposes the tables' };
|
|
49
|
+
}
|
|
50
|
+
if (facts.schema !== 'public') {
|
|
51
|
+
return {
|
|
52
|
+
applied: true,
|
|
53
|
+
detail: `tables live in schema "${facts.schema}", which the Supabase API does not expose unless it is added to the exposed schemas`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return evaluateRlsRows(facts.rows);
|
|
57
|
+
}
|
|
58
|
+
/** The query evaluatePostgresRls reads. */
|
|
59
|
+
export const POSTGRES_RLS_QUERY = `
|
|
60
|
+
SELECT
|
|
61
|
+
EXISTS (SELECT 1 FROM pg_roles WHERE rolname IN ('anon', 'authenticated')) AS api_roles,
|
|
62
|
+
current_schema() AS schema,
|
|
63
|
+
coalesce(
|
|
64
|
+
(SELECT json_agg(json_build_object('table_name', c.relname, 'rls_enabled', c.relrowsecurity))
|
|
65
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
66
|
+
WHERE n.nspname = current_schema()
|
|
67
|
+
AND c.relname IN ('adk_memory_facts', 'adk_sessions', 'adk_agent_registry', 'adk_telemetry')),
|
|
68
|
+
'[]'::json
|
|
69
|
+
) AS rows`;
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
import { z } from 'zod';
|
|
25
25
|
import type { SyndicateYamlConfig } from './loadSyndicate.ts';
|
|
26
26
|
export declare const MEMORY_SYSTEMS: readonly ['internal-only', 'session-only', 'long-term'];
|
|
27
|
+
export declare const SKILL_SCRIPT_MODES: readonly ['none', 'local'];
|
|
27
28
|
export declare const agentSchema: z.ZodObject<{
|
|
28
29
|
name: z.ZodString;
|
|
29
30
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -61,6 +62,42 @@ export declare const agentSchema: z.ZodObject<{
|
|
|
61
62
|
}, z.core.$loose>>;
|
|
62
63
|
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
63
64
|
mcp_server_url: z.ZodOptional<z.ZodString>;
|
|
65
|
+
skills: z.ZodOptional<z.ZodObject<{
|
|
66
|
+
dir: z.ZodString;
|
|
67
|
+
scripts: z.ZodOptional<z.ZodEnum<{
|
|
68
|
+
local: "local";
|
|
69
|
+
none: "none";
|
|
70
|
+
}>>;
|
|
71
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
openapi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
74
|
+
spec: z.ZodString;
|
|
75
|
+
operations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
76
|
+
base_url: z.ZodOptional<z.ZodString>;
|
|
77
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
78
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
bearer_env: z.ZodOptional<z.ZodString>;
|
|
80
|
+
api_key: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
env: z.ZodString;
|
|
82
|
+
in: z.ZodEnum<{
|
|
83
|
+
header: "header";
|
|
84
|
+
query: "query";
|
|
85
|
+
}>;
|
|
86
|
+
name: z.ZodString;
|
|
87
|
+
}, z.core.$strict>>;
|
|
88
|
+
}, z.core.$strict>>;
|
|
89
|
+
}, z.core.$strict>>>;
|
|
90
|
+
code_execution: z.ZodOptional<z.ZodLiteral<"gemini">>;
|
|
91
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
92
|
+
compact_after_tokens: z.ZodNumber;
|
|
93
|
+
keep_recent_events: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
summary_model: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strict>>;
|
|
96
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
97
|
+
input: z.ZodString;
|
|
98
|
+
output: z.ZodString;
|
|
99
|
+
}, z.core.$strict>>>;
|
|
100
|
+
mode: z.ZodOptional<z.ZodLiteral<"task">>;
|
|
64
101
|
orchestration: z.ZodOptional<z.ZodObject<{
|
|
65
102
|
role: z.ZodOptional<z.ZodEnum<{
|
|
66
103
|
primary: "primary";
|
|
@@ -109,6 +146,42 @@ export declare const subagentSchema: z.ZodObject<{
|
|
|
109
146
|
}, z.core.$loose>>;
|
|
110
147
|
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
111
148
|
mcp_server_url: z.ZodOptional<z.ZodString>;
|
|
149
|
+
skills: z.ZodOptional<z.ZodObject<{
|
|
150
|
+
dir: z.ZodString;
|
|
151
|
+
scripts: z.ZodOptional<z.ZodEnum<{
|
|
152
|
+
local: "local";
|
|
153
|
+
none: "none";
|
|
154
|
+
}>>;
|
|
155
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
156
|
+
}, z.core.$strict>>;
|
|
157
|
+
openapi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
158
|
+
spec: z.ZodString;
|
|
159
|
+
operations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
160
|
+
base_url: z.ZodOptional<z.ZodString>;
|
|
161
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
162
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
163
|
+
bearer_env: z.ZodOptional<z.ZodString>;
|
|
164
|
+
api_key: z.ZodOptional<z.ZodObject<{
|
|
165
|
+
env: z.ZodString;
|
|
166
|
+
in: z.ZodEnum<{
|
|
167
|
+
header: "header";
|
|
168
|
+
query: "query";
|
|
169
|
+
}>;
|
|
170
|
+
name: z.ZodString;
|
|
171
|
+
}, z.core.$strict>>;
|
|
172
|
+
}, z.core.$strict>>;
|
|
173
|
+
}, z.core.$strict>>>;
|
|
174
|
+
code_execution: z.ZodOptional<z.ZodLiteral<"gemini">>;
|
|
175
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
176
|
+
compact_after_tokens: z.ZodNumber;
|
|
177
|
+
keep_recent_events: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
summary_model: z.ZodOptional<z.ZodString>;
|
|
179
|
+
}, z.core.$strict>>;
|
|
180
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
181
|
+
input: z.ZodString;
|
|
182
|
+
output: z.ZodString;
|
|
183
|
+
}, z.core.$strict>>>;
|
|
184
|
+
mode: z.ZodOptional<z.ZodLiteral<"task">>;
|
|
112
185
|
orchestration: z.ZodOptional<z.ZodObject<{
|
|
113
186
|
role: z.ZodOptional<z.ZodEnum<{
|
|
114
187
|
primary: "primary";
|
|
@@ -161,6 +234,42 @@ export declare const syndicateSchema: z.ZodObject<{
|
|
|
161
234
|
}, z.core.$loose>>;
|
|
162
235
|
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
163
236
|
mcp_server_url: z.ZodOptional<z.ZodString>;
|
|
237
|
+
skills: z.ZodOptional<z.ZodObject<{
|
|
238
|
+
dir: z.ZodString;
|
|
239
|
+
scripts: z.ZodOptional<z.ZodEnum<{
|
|
240
|
+
local: "local";
|
|
241
|
+
none: "none";
|
|
242
|
+
}>>;
|
|
243
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
244
|
+
}, z.core.$strict>>;
|
|
245
|
+
openapi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
246
|
+
spec: z.ZodString;
|
|
247
|
+
operations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
248
|
+
base_url: z.ZodOptional<z.ZodString>;
|
|
249
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
250
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
251
|
+
bearer_env: z.ZodOptional<z.ZodString>;
|
|
252
|
+
api_key: z.ZodOptional<z.ZodObject<{
|
|
253
|
+
env: z.ZodString;
|
|
254
|
+
in: z.ZodEnum<{
|
|
255
|
+
header: "header";
|
|
256
|
+
query: "query";
|
|
257
|
+
}>;
|
|
258
|
+
name: z.ZodString;
|
|
259
|
+
}, z.core.$strict>>;
|
|
260
|
+
}, z.core.$strict>>;
|
|
261
|
+
}, z.core.$strict>>>;
|
|
262
|
+
code_execution: z.ZodOptional<z.ZodLiteral<"gemini">>;
|
|
263
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
264
|
+
compact_after_tokens: z.ZodNumber;
|
|
265
|
+
keep_recent_events: z.ZodOptional<z.ZodNumber>;
|
|
266
|
+
summary_model: z.ZodOptional<z.ZodString>;
|
|
267
|
+
}, z.core.$strict>>;
|
|
268
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
269
|
+
input: z.ZodString;
|
|
270
|
+
output: z.ZodString;
|
|
271
|
+
}, z.core.$strict>>>;
|
|
272
|
+
mode: z.ZodOptional<z.ZodLiteral<"task">>;
|
|
164
273
|
orchestration: z.ZodOptional<z.ZodObject<{
|
|
165
274
|
role: z.ZodOptional<z.ZodEnum<{
|
|
166
275
|
primary: "primary";
|
|
@@ -203,6 +312,42 @@ export declare const syndicateSchema: z.ZodObject<{
|
|
|
203
312
|
}, z.core.$loose>>;
|
|
204
313
|
outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
205
314
|
mcp_server_url: z.ZodOptional<z.ZodString>;
|
|
315
|
+
skills: z.ZodOptional<z.ZodObject<{
|
|
316
|
+
dir: z.ZodString;
|
|
317
|
+
scripts: z.ZodOptional<z.ZodEnum<{
|
|
318
|
+
local: "local";
|
|
319
|
+
none: "none";
|
|
320
|
+
}>>;
|
|
321
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
322
|
+
}, z.core.$strict>>;
|
|
323
|
+
openapi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
324
|
+
spec: z.ZodString;
|
|
325
|
+
operations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
326
|
+
base_url: z.ZodOptional<z.ZodString>;
|
|
327
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
328
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
329
|
+
bearer_env: z.ZodOptional<z.ZodString>;
|
|
330
|
+
api_key: z.ZodOptional<z.ZodObject<{
|
|
331
|
+
env: z.ZodString;
|
|
332
|
+
in: z.ZodEnum<{
|
|
333
|
+
header: "header";
|
|
334
|
+
query: "query";
|
|
335
|
+
}>;
|
|
336
|
+
name: z.ZodString;
|
|
337
|
+
}, z.core.$strict>>;
|
|
338
|
+
}, z.core.$strict>>;
|
|
339
|
+
}, z.core.$strict>>>;
|
|
340
|
+
code_execution: z.ZodOptional<z.ZodLiteral<"gemini">>;
|
|
341
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
342
|
+
compact_after_tokens: z.ZodNumber;
|
|
343
|
+
keep_recent_events: z.ZodOptional<z.ZodNumber>;
|
|
344
|
+
summary_model: z.ZodOptional<z.ZodString>;
|
|
345
|
+
}, z.core.$strict>>;
|
|
346
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
347
|
+
input: z.ZodString;
|
|
348
|
+
output: z.ZodString;
|
|
349
|
+
}, z.core.$strict>>>;
|
|
350
|
+
mode: z.ZodOptional<z.ZodLiteral<"task">>;
|
|
206
351
|
orchestration: z.ZodOptional<z.ZodObject<{
|
|
207
352
|
role: z.ZodOptional<z.ZodEnum<{
|
|
208
353
|
primary: "primary";
|
|
@@ -227,6 +372,30 @@ export declare const syndicateSchema: z.ZodObject<{
|
|
|
227
372
|
reason: z.ZodOptional<z.ZodString>;
|
|
228
373
|
}, z.core.$strict>>>;
|
|
229
374
|
}, z.core.$strict>>;
|
|
375
|
+
workflow: z.ZodOptional<z.ZodObject<{
|
|
376
|
+
edges: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>]>>>;
|
|
377
|
+
nodes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
378
|
+
ask_user: z.ZodOptional<z.ZodString>;
|
|
379
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
380
|
+
join: z.ZodOptional<z.ZodLiteral<true>>;
|
|
381
|
+
map: z.ZodOptional<z.ZodString>;
|
|
382
|
+
max_parallel: z.ZodOptional<z.ZodNumber>;
|
|
383
|
+
tool: z.ZodOptional<z.ZodString>;
|
|
384
|
+
route_key: z.ZodOptional<z.ZodString>;
|
|
385
|
+
retry: z.ZodOptional<z.ZodObject<{
|
|
386
|
+
max_attempts: z.ZodOptional<z.ZodNumber>;
|
|
387
|
+
initial_delay: z.ZodOptional<z.ZodNumber>;
|
|
388
|
+
max_delay: z.ZodOptional<z.ZodNumber>;
|
|
389
|
+
backoff_factor: z.ZodOptional<z.ZodNumber>;
|
|
390
|
+
}, z.core.$strict>>;
|
|
391
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
392
|
+
}, z.core.$strict>>>;
|
|
393
|
+
max_concurrency: z.ZodOptional<z.ZodNumber>;
|
|
394
|
+
}, z.core.$strict>>;
|
|
395
|
+
retries: z.ZodOptional<z.ZodObject<{
|
|
396
|
+
model_errors: z.ZodOptional<z.ZodNumber>;
|
|
397
|
+
tool_errors: z.ZodOptional<z.ZodNumber>;
|
|
398
|
+
}, z.core.$strict>>;
|
|
230
399
|
variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
231
400
|
memory_system: z.ZodOptional<z.ZodEnum<{
|
|
232
401
|
"internal-only": "internal-only";
|