@botbotgo/agent-harness 0.0.136 → 0.0.137
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 +5 -10
- package/README.zh.md +5 -10
- package/dist/config/agents/direct.yaml +3 -6
- package/dist/config/agents/orchestra.yaml +4 -8
- package/dist/config/catalogs/tools.yaml +1 -1
- package/dist/init-project.js +8 -13
- package/dist/package-version.d.ts +1 -1
- package/dist/package-version.js +1 -1
- package/dist/workspace/agent-binding-compiler.js +9 -1
- package/dist/workspace/compile.js +5 -4
- package/dist/workspace/object-loader.js +70 -8
- package/dist/workspace/resource-compilers.js +6 -4
- package/dist/workspace/yaml-object-reader.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -688,10 +688,8 @@ spec:
|
|
|
688
688
|
subagents: []
|
|
689
689
|
mcpServers: []
|
|
690
690
|
config:
|
|
691
|
-
checkpointer:
|
|
692
|
-
|
|
693
|
-
store:
|
|
694
|
-
ref: store/default
|
|
691
|
+
checkpointer: default
|
|
692
|
+
store: default
|
|
695
693
|
interruptOn: {}
|
|
696
694
|
filesystem:
|
|
697
695
|
rootDir: .
|
|
@@ -722,12 +720,9 @@ spec:
|
|
|
722
720
|
subagents: []
|
|
723
721
|
mcpServers: []
|
|
724
722
|
config:
|
|
725
|
-
store:
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
ref: checkpointer/default
|
|
729
|
-
backend:
|
|
730
|
-
ref: backend/default
|
|
723
|
+
store: default
|
|
724
|
+
checkpointer: default
|
|
725
|
+
backend: default
|
|
731
726
|
interruptOn: {}
|
|
732
727
|
middleware: []
|
|
733
728
|
```
|
package/README.zh.md
CHANGED
|
@@ -677,10 +677,8 @@ spec:
|
|
|
677
677
|
subagents: []
|
|
678
678
|
mcpServers: []
|
|
679
679
|
config:
|
|
680
|
-
checkpointer:
|
|
681
|
-
|
|
682
|
-
store:
|
|
683
|
-
ref: store/default
|
|
680
|
+
checkpointer: default
|
|
681
|
+
store: default
|
|
684
682
|
interruptOn: {}
|
|
685
683
|
filesystem:
|
|
686
684
|
rootDir: .
|
|
@@ -711,12 +709,9 @@ spec:
|
|
|
711
709
|
subagents: []
|
|
712
710
|
mcpServers: []
|
|
713
711
|
config:
|
|
714
|
-
store:
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
ref: checkpointer/default
|
|
718
|
-
backend:
|
|
719
|
-
ref: backend/default
|
|
712
|
+
store: default
|
|
713
|
+
checkpointer: default
|
|
714
|
+
backend: default
|
|
720
715
|
interruptOn: {}
|
|
721
716
|
middleware: []
|
|
722
717
|
```
|
|
@@ -14,8 +14,7 @@ spec:
|
|
|
14
14
|
# This matches the workspace default and keeps the default config shape explicit.
|
|
15
15
|
runRoot: ./.agent
|
|
16
16
|
# agent-harness feature: workspace-level durable long-term memory defaults for this host profile.
|
|
17
|
-
runtimeMemory:
|
|
18
|
-
ref: runtime-memory/default
|
|
17
|
+
runtimeMemory: default
|
|
19
18
|
# =====================
|
|
20
19
|
# Runtime Agent Features
|
|
21
20
|
# =====================
|
|
@@ -39,12 +38,10 @@ spec:
|
|
|
39
38
|
# Even the lightweight direct path can benefit from resumable state during interactive use.
|
|
40
39
|
# Available `kind` options in this harness: `FileCheckpointer`, `MemorySaver`, `SqliteSaver`.
|
|
41
40
|
# `path` is only used by `FileCheckpointer` and `SqliteSaver`; omit it for `MemorySaver`.
|
|
42
|
-
checkpointer:
|
|
43
|
-
ref: checkpointer/sqlite
|
|
41
|
+
checkpointer: sqlite
|
|
44
42
|
# Upstream execution feature: LangGraph store available to middleware and runtime context hooks.
|
|
45
43
|
# The default direct host keeps this enabled so middleware can use the same durable store surface as other hosts.
|
|
46
|
-
store:
|
|
47
|
-
ref: store/default
|
|
44
|
+
store: default
|
|
48
45
|
# Upstream execution feature: no declarative HITL tool routing by default.
|
|
49
46
|
interruptOn: {}
|
|
50
47
|
# Upstream execution feature: filesystem middleware settings for LangChain v1 agents.
|
|
@@ -14,8 +14,7 @@ spec:
|
|
|
14
14
|
# This matches the workspace default and keeps the default config shape explicit.
|
|
15
15
|
runRoot: ./.agent
|
|
16
16
|
# agent-harness feature: workspace-level durable long-term memory defaults for this host profile.
|
|
17
|
-
runtimeMemory:
|
|
18
|
-
ref: runtime-memory/default
|
|
17
|
+
runtimeMemory: default
|
|
19
18
|
# =====================
|
|
20
19
|
# Runtime Agent Features
|
|
21
20
|
# =====================
|
|
@@ -46,14 +45,12 @@ spec:
|
|
|
46
45
|
# This persists resumable graph state for this agent.
|
|
47
46
|
# Available `kind` options in this harness: `FileCheckpointer`, `MemorySaver`, `SqliteSaver`.
|
|
48
47
|
# `path` is only used by `FileCheckpointer` and `SqliteSaver`; omit it for `MemorySaver`.
|
|
49
|
-
checkpointer:
|
|
50
|
-
ref: checkpointer/sqlite
|
|
48
|
+
checkpointer: sqlite
|
|
51
49
|
# Upstream execution feature: store config passed into the selected backend adapter.
|
|
52
50
|
# In the default deepagent adapter this is the LangGraph store used by `StoreBackend` routes.
|
|
53
51
|
# Built-in kinds in this harness today: `FileStore`, `InMemoryStore`.
|
|
54
52
|
# Other store kinds should flow through a custom runtime resolver instead of being claimed as built in.
|
|
55
|
-
store:
|
|
56
|
-
ref: store/default
|
|
53
|
+
store: default
|
|
57
54
|
# Upstream execution feature: backend config passed into the selected backend adapter.
|
|
58
55
|
# Prefer a reusable backend preset via `ref` so backend topology stays declarative and reusable in YAML.
|
|
59
56
|
# The default preset keeps DeepAgent execution semantics upstream-owned:
|
|
@@ -78,8 +75,7 @@ spec:
|
|
|
78
75
|
config:
|
|
79
76
|
# Upstream execution feature: backend config passed into the selected backend adapter.
|
|
80
77
|
# Keep this nested under `config` because `backend` already selects the adapter mode.
|
|
81
|
-
backend:
|
|
82
|
-
ref: backend/default
|
|
78
|
+
backend: default
|
|
83
79
|
# Upstream execution feature: system prompt for the orchestration host.
|
|
84
80
|
# This becomes the top-level instruction block for the selected execution backend and should hold the
|
|
85
81
|
# agent's durable role, priorities, and behavioral guardrails rather than bulky project facts.
|
package/dist/init-project.js
CHANGED
|
@@ -171,15 +171,14 @@ spec:
|
|
|
171
171
|
function renderToolsYaml(options) {
|
|
172
172
|
if (!options.withWebSearch) {
|
|
173
173
|
return `apiVersion: agent-harness/v1alpha1
|
|
174
|
-
kind:
|
|
174
|
+
kind: ToolSets
|
|
175
175
|
spec: []
|
|
176
176
|
`;
|
|
177
177
|
}
|
|
178
178
|
return `apiVersion: agent-harness/v1alpha1
|
|
179
|
-
kind:
|
|
179
|
+
kind: ToolSets
|
|
180
180
|
spec:
|
|
181
|
-
-
|
|
182
|
-
name: web-search
|
|
181
|
+
- name: web-search
|
|
183
182
|
type: provider
|
|
184
183
|
description: ${options.provider} web search tool for current research.
|
|
185
184
|
providerTool:
|
|
@@ -191,7 +190,7 @@ spec:
|
|
|
191
190
|
}
|
|
192
191
|
function renderResearchAgentYaml(options) {
|
|
193
192
|
const toolsBlock = options.withWebSearch ? " tools:\n - web-search\n" : " tools: []\n";
|
|
194
|
-
const subagentsBlock = options.template === "deep-research" ? " subagents:\n -
|
|
193
|
+
const subagentsBlock = options.template === "deep-research" ? " subagents:\n - research-analyst\n" : " subagents: []\n";
|
|
195
194
|
const prompt = options.withWebSearch
|
|
196
195
|
? "Break complex research requests into a clear plan, use web search when current information matters, and return a concise synthesis with sources and explicit uncertainty."
|
|
197
196
|
: "Break complex research requests into a clear plan and return a concise synthesis with explicit assumptions and uncertainty.";
|
|
@@ -205,15 +204,13 @@ metadata:
|
|
|
205
204
|
description: Host-facing research agent for investigating and synthesizing answers.
|
|
206
205
|
spec:
|
|
207
206
|
runtime:
|
|
208
|
-
runtimeMemory:
|
|
209
|
-
ref: runtime-memory/default
|
|
207
|
+
runtimeMemory: default
|
|
210
208
|
backend: deepagent
|
|
211
209
|
modelRef: model/default
|
|
212
210
|
${toolsBlock} skills:
|
|
213
211
|
- deep-research
|
|
214
212
|
${subagentsBlock} config:
|
|
215
|
-
backend:
|
|
216
|
-
ref: backend/default
|
|
213
|
+
backend: default
|
|
217
214
|
systemPrompt: ${prompt}${delegationLine}
|
|
218
215
|
`;
|
|
219
216
|
}
|
|
@@ -229,15 +226,13 @@ metadata:
|
|
|
229
226
|
description: Analyst subagent for source gathering, comparison, and evidence extraction.
|
|
230
227
|
spec:
|
|
231
228
|
runtime:
|
|
232
|
-
runtimeMemory:
|
|
233
|
-
ref: runtime-memory/default
|
|
229
|
+
runtimeMemory: default
|
|
234
230
|
backend: deepagent
|
|
235
231
|
modelRef: model/default
|
|
236
232
|
${toolsBlock} skills:
|
|
237
233
|
- deep-research
|
|
238
234
|
config:
|
|
239
|
-
backend:
|
|
240
|
-
ref: backend/default
|
|
235
|
+
backend: default
|
|
241
236
|
systemPrompt: ${prompt}
|
|
242
237
|
`;
|
|
243
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const AGENT_HARNESS_VERSION = "0.0.
|
|
1
|
+
export declare const AGENT_HARNESS_VERSION = "0.0.136";
|
package/dist/package-version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const AGENT_HARNESS_VERSION = "0.0.
|
|
1
|
+
export const AGENT_HARNESS_VERSION = "0.0.136";
|
|
@@ -131,7 +131,15 @@ function applyToolBindingOverrides(tool, binding) {
|
|
|
131
131
|
...(typeof overrides.description === "string" ? { description: overrides.description } : {}),
|
|
132
132
|
...(typeof overrides.implementationName === "string" ? { implementationName: overrides.implementationName } : {}),
|
|
133
133
|
...(typeof overrides.inputSchemaRef === "string" ? { inputSchemaRef: overrides.inputSchemaRef } : {}),
|
|
134
|
-
...(typeof overrides.embeddingModelRef === "string"
|
|
134
|
+
...(typeof overrides.embeddingModelRef === "string"
|
|
135
|
+
? { embeddingModelRef: overrides.embeddingModelRef }
|
|
136
|
+
: typeof overrides.embeddingModel === "string"
|
|
137
|
+
? {
|
|
138
|
+
embeddingModelRef: overrides.embeddingModel.startsWith("embedding-model/")
|
|
139
|
+
? overrides.embeddingModel
|
|
140
|
+
: `embedding-model/${overrides.embeddingModel}`,
|
|
141
|
+
}
|
|
142
|
+
: {}),
|
|
135
143
|
...(typeof overrides.backendOperation === "string" ? { backendOperation: overrides.backendOperation } : {}),
|
|
136
144
|
...(typeof overrides.mcpRef === "string" ? { mcpRef: overrides.mcpRef } : {}),
|
|
137
145
|
...(typeof overrides.subprocess === "boolean" ? { subprocess: overrides.subprocess } : {}),
|
|
@@ -184,20 +184,21 @@ function validateToolNameConflicts(tools) {
|
|
|
184
184
|
function resolveAgentSkillNames(agents, skillRegistry, skillCollectionRoots) {
|
|
185
185
|
for (const agent of agents) {
|
|
186
186
|
agent.skillPathRefs = agent.skillPathRefs.map((entry) => {
|
|
187
|
-
const
|
|
187
|
+
const normalizedEntry = entry.startsWith("skill/") ? entry.slice("skill/".length) : entry;
|
|
188
|
+
const registered = skillRegistry.get(normalizedEntry);
|
|
188
189
|
if (registered) {
|
|
189
190
|
return registered;
|
|
190
191
|
}
|
|
191
|
-
if (path.isAbsolute(entry) || entry.
|
|
192
|
+
if (path.isAbsolute(entry) || entry.startsWith("builtin://") || entry.startsWith("resource://")) {
|
|
192
193
|
return entry;
|
|
193
194
|
}
|
|
194
195
|
for (const skillsRoot of skillCollectionRoots) {
|
|
195
|
-
const candidate = path.join(skillsRoot,
|
|
196
|
+
const candidate = path.join(skillsRoot, normalizedEntry);
|
|
196
197
|
if (existsSync(path.join(candidate, "SKILL.md"))) {
|
|
197
198
|
return candidate;
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
|
-
return
|
|
201
|
+
return normalizedEntry;
|
|
201
202
|
});
|
|
202
203
|
}
|
|
203
204
|
}
|
|
@@ -93,12 +93,30 @@ function readRefArray(items) {
|
|
|
93
93
|
: undefined)
|
|
94
94
|
.filter((item) => Boolean(item));
|
|
95
95
|
}
|
|
96
|
+
function readPrefixedRefArray(items, prefix) {
|
|
97
|
+
return toArray(items)
|
|
98
|
+
.map((item) => {
|
|
99
|
+
if (typeof item === "string") {
|
|
100
|
+
const value = item.trim();
|
|
101
|
+
if (!value) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
return value.startsWith(`${prefix}/`) ? value : `${prefix}/${value}`;
|
|
105
|
+
}
|
|
106
|
+
if (typeof item === "object" && item && "ref" in item && typeof item.ref === "string") {
|
|
107
|
+
const value = String(item.ref).trim();
|
|
108
|
+
return value || undefined;
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
})
|
|
112
|
+
.filter((item) => Boolean(item));
|
|
113
|
+
}
|
|
96
114
|
function normalizeToolUsageOverrides(value) {
|
|
97
115
|
const record = asMutableObject(value);
|
|
98
116
|
if (!record) {
|
|
99
117
|
return undefined;
|
|
100
118
|
}
|
|
101
|
-
const directKeys = new Set(["config", "hitl", "retryable", "subprocess", "embeddingModelRef"]);
|
|
119
|
+
const directKeys = new Set(["config", "hitl", "retryable", "subprocess", "embeddingModel", "embeddingModelRef"]);
|
|
102
120
|
const directOverrides = {};
|
|
103
121
|
const configOverrides = {};
|
|
104
122
|
for (const [key, entry] of Object.entries(record)) {
|
|
@@ -177,6 +195,20 @@ function readObjectArray(items) {
|
|
|
177
195
|
.map((item) => ({ ...item }));
|
|
178
196
|
return records.length > 0 ? records : undefined;
|
|
179
197
|
}
|
|
198
|
+
function readMcpServerArray(items) {
|
|
199
|
+
const records = toArray(items)
|
|
200
|
+
.map((item) => {
|
|
201
|
+
if (typeof item === "string" && item.trim()) {
|
|
202
|
+
return { ref: item.startsWith("mcp/") ? item : `mcp/${item.trim()}` };
|
|
203
|
+
}
|
|
204
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
205
|
+
return { ...item };
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
})
|
|
209
|
+
.filter((item) => Boolean(item));
|
|
210
|
+
return records.length > 0 ? records : undefined;
|
|
211
|
+
}
|
|
180
212
|
function readCapabilities(value) {
|
|
181
213
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
182
214
|
return undefined;
|
|
@@ -285,10 +317,24 @@ function readRuntimeConfig(item) {
|
|
|
285
317
|
return asMutableObject(item.runtime);
|
|
286
318
|
}
|
|
287
319
|
function readRuntimeMemoryConfig(item, runtime) {
|
|
320
|
+
if (typeof runtime?.runtimeMemory === "string" && runtime.runtimeMemory.trim()) {
|
|
321
|
+
return {
|
|
322
|
+
ref: runtime.runtimeMemory.startsWith("runtime-memory/")
|
|
323
|
+
? runtime.runtimeMemory
|
|
324
|
+
: `runtime-memory/${runtime.runtimeMemory.trim()}`,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
288
327
|
if (typeof runtime?.runtimeMemory === "object" && runtime.runtimeMemory && !Array.isArray(runtime.runtimeMemory)) {
|
|
289
328
|
return cloneConfigValue(runtime.runtimeMemory);
|
|
290
329
|
}
|
|
291
330
|
const legacyExecutionConfig = readExecutionAgentConfig(item);
|
|
331
|
+
if (typeof legacyExecutionConfig.runtimeMemory === "string" && legacyExecutionConfig.runtimeMemory.trim()) {
|
|
332
|
+
return {
|
|
333
|
+
ref: legacyExecutionConfig.runtimeMemory.startsWith("runtime-memory/")
|
|
334
|
+
? legacyExecutionConfig.runtimeMemory
|
|
335
|
+
: `runtime-memory/${legacyExecutionConfig.runtimeMemory.trim()}`,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
292
338
|
if (typeof legacyExecutionConfig.runtimeMemory === "object" &&
|
|
293
339
|
legacyExecutionConfig.runtimeMemory &&
|
|
294
340
|
!Array.isArray(legacyExecutionConfig.runtimeMemory)) {
|
|
@@ -382,14 +428,27 @@ function readSharedAgentConfigFields(config, options = {}) {
|
|
|
382
428
|
}
|
|
383
429
|
function readSharedAgentConfig(config) {
|
|
384
430
|
const middleware = readMiddlewareArray(config.middleware);
|
|
431
|
+
const backend = typeof config.backend === "string" && config.backend.trim()
|
|
432
|
+
? { ref: config.backend.startsWith("backend/") ? config.backend : `backend/${config.backend.trim()}` }
|
|
433
|
+
: typeof config.backend === "object" && config.backend
|
|
434
|
+
? config.backend
|
|
435
|
+
: undefined;
|
|
436
|
+
const checkpointer = typeof config.checkpointer === "string" && config.checkpointer.trim()
|
|
437
|
+
? { ref: config.checkpointer.startsWith("checkpointer/") ? config.checkpointer : `checkpointer/${config.checkpointer.trim()}` }
|
|
438
|
+
: (typeof config.checkpointer === "object" && config.checkpointer) || typeof config.checkpointer === "boolean"
|
|
439
|
+
? config.checkpointer
|
|
440
|
+
: undefined;
|
|
441
|
+
const store = typeof config.store === "string" && config.store.trim()
|
|
442
|
+
? { ref: config.store.startsWith("store/") ? config.store : `store/${config.store.trim()}` }
|
|
443
|
+
: typeof config.store === "object" && config.store
|
|
444
|
+
? config.store
|
|
445
|
+
: undefined;
|
|
385
446
|
return {
|
|
386
447
|
...((typeof config.systemPrompt === "string" && config.systemPrompt)
|
|
387
448
|
|| (typeof config.systemPrompt === "object" && config.systemPrompt && !Array.isArray(config.systemPrompt))
|
|
388
449
|
? { systemPrompt: cloneConfigValue(config.systemPrompt) }
|
|
389
450
|
: {}),
|
|
390
|
-
...(
|
|
391
|
-
? { checkpointer: config.checkpointer }
|
|
392
|
-
: {}),
|
|
451
|
+
...(checkpointer !== undefined ? { checkpointer } : {}),
|
|
393
452
|
...(typeof config.interruptOn === "object" && config.interruptOn ? { interruptOn: config.interruptOn } : {}),
|
|
394
453
|
...(config.stateSchema !== undefined ? { stateSchema: config.stateSchema } : {}),
|
|
395
454
|
...(config.responseFormat !== undefined ? { responseFormat: config.responseFormat } : {}),
|
|
@@ -397,6 +456,8 @@ function readSharedAgentConfig(config) {
|
|
|
397
456
|
...(config.includeAgentName === "inline" ? { includeAgentName: "inline" } : {}),
|
|
398
457
|
...(config.version === "v1" || config.version === "v2" ? { version: config.version } : {}),
|
|
399
458
|
...(typeof config.filesystem === "object" && config.filesystem ? { filesystem: config.filesystem } : {}),
|
|
459
|
+
...(backend ? { backend } : {}),
|
|
460
|
+
...(store ? { store } : {}),
|
|
400
461
|
...(middleware ? { middleware } : {}),
|
|
401
462
|
};
|
|
402
463
|
}
|
|
@@ -406,7 +467,6 @@ function readAgentConfig(item, options = {}) {
|
|
|
406
467
|
return {
|
|
407
468
|
...readSharedAgentConfig(config),
|
|
408
469
|
...readSharedAgentConfigFields(config, { includeDelegationControls: options.includeDelegationControls }),
|
|
409
|
-
...(options.includeObjectBackend && typeof config.backend === "object" && config.backend ? { backend: config.backend } : {}),
|
|
410
470
|
...(passthrough ? { passthrough } : {}),
|
|
411
471
|
};
|
|
412
472
|
}
|
|
@@ -415,7 +475,9 @@ export function parseAgentItem(item, sourcePath) {
|
|
|
415
475
|
const moduleRoot = moduleRootForSourcePath(sourcePath, "agents");
|
|
416
476
|
const subagentRefs = readExecutionValue(normalizedItem, "subagents", readRefArray);
|
|
417
477
|
const toolBindings = readExecutionValue(normalizedItem, "tools", readToolBindingArray);
|
|
418
|
-
const subagentPathRefs = readExecutionValue(normalizedItem, "subagents", readPathArray)
|
|
478
|
+
const subagentPathRefs = readExecutionValue(normalizedItem, "subagents", readPathArray)
|
|
479
|
+
.filter((entry) => path.isAbsolute(entry) || entry.startsWith("./") || entry.startsWith("../"))
|
|
480
|
+
.map((entry) => resolveModuleRelativePath(entry, moduleRoot));
|
|
419
481
|
const executionMode = String(resolveExecutionBackend(normalizedItem) ?? "deepagent");
|
|
420
482
|
const runtime = readRuntimeConfig(normalizedItem);
|
|
421
483
|
return {
|
|
@@ -431,8 +493,8 @@ export function parseAgentItem(item, sourcePath) {
|
|
|
431
493
|
toolRefs: toolBindings.map((binding) => binding.ref),
|
|
432
494
|
toolBindings,
|
|
433
495
|
inlineTools: undefined,
|
|
434
|
-
mcpServers: readExecutionValue(normalizedItem, "mcpServers",
|
|
435
|
-
skillPathRefs: readExecutionValue(normalizedItem, "skills",
|
|
496
|
+
mcpServers: readExecutionValue(normalizedItem, "mcpServers", readMcpServerArray),
|
|
497
|
+
skillPathRefs: readExecutionValue(normalizedItem, "skills", (value) => readPrefixedRefArray(value, "skill")),
|
|
436
498
|
memorySources: readExecutionValue(normalizedItem, "memory", readPathArray).map((entry) => resolveModuleRelativePath(entry, moduleRoot)),
|
|
437
499
|
subagentRefs,
|
|
438
500
|
subagentPathRefs,
|
|
@@ -220,7 +220,7 @@ export function parseToolObject(object) {
|
|
|
220
220
|
const mcpServerConfig = mcp
|
|
221
221
|
? Object.fromEntries(Object.entries(mcp).filter(([key]) => key !== "ref" && key !== "serverRef" && key !== "tool"))
|
|
222
222
|
: undefined;
|
|
223
|
-
const bundleRefs = asRefArray(value.refs ?? value.bundle);
|
|
223
|
+
const bundleRefs = asRefArray(value.tools ?? value.refs ?? value.bundle);
|
|
224
224
|
const inferredType = typeof value.type === "string"
|
|
225
225
|
? value.type
|
|
226
226
|
: bundleRefs.length > 0
|
|
@@ -252,9 +252,11 @@ export function parseToolObject(object) {
|
|
|
252
252
|
inputSchemaRef: typeof asObject(value.inputSchema)?.ref === "string" ? String(asObject(value.inputSchema)?.ref) : undefined,
|
|
253
253
|
embeddingModelRef: typeof value.embeddingModelRef === "string"
|
|
254
254
|
? value.embeddingModelRef
|
|
255
|
-
: typeof
|
|
256
|
-
? String(
|
|
257
|
-
:
|
|
255
|
+
: typeof value.embeddingModel === "string"
|
|
256
|
+
? `embedding-model/${String(value.embeddingModel).trim()}`
|
|
257
|
+
: typeof asObject(value.embeddingModel)?.ref === "string"
|
|
258
|
+
? String(asObject(value.embeddingModel)?.ref)
|
|
259
|
+
: undefined,
|
|
258
260
|
backendOperation: typeof backend?.operation === "string"
|
|
259
261
|
? backend.operation
|
|
260
262
|
: typeof value.operation === "string"
|
|
@@ -144,7 +144,7 @@ async function objectItemsFromDocument(document, sourcePath) {
|
|
|
144
144
|
? normalizeCatalogSpec(document)
|
|
145
145
|
: catalogKind === "Backends"
|
|
146
146
|
? normalizeCatalogSpec(document, { defaultKind: "Backend" })
|
|
147
|
-
: catalogKind === "Tools"
|
|
147
|
+
: catalogKind === "Tools" || catalogKind === "ToolSets"
|
|
148
148
|
? normalizeCatalogSpec(document, { defaultKind: "Tool" })
|
|
149
149
|
: catalogKind === "McpServers"
|
|
150
150
|
? normalizeCatalogSpec(document, { defaultKind: "McpServer" })
|