mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
#!/usr/bin/env node
|
|
/** Inspect both public product-provider compositions without invoking them. */
|
|
|
|
import { boot, resolveConfigPath } from '@deepseek-ai/dsh-app-boot'
|
|
import type {} from '@deepseek-ai/dsh-subagent'
|
|
import type {} from '@deepseek-ai/dsh-tools'
|
|
|
|
const configPath = process.argv[2]
|
|
if (configPath === undefined) {
|
|
throw new Error('product-provider Loader composition driver requires a config path')
|
|
}
|
|
|
|
let starts = 0
|
|
const ctx = await boot(
|
|
'product-provider-loader-composition',
|
|
resolveConfigPath(configPath, undefined),
|
|
undefined,
|
|
(hostCtx) => {
|
|
hostCtx.on('subagent/start', () => {
|
|
starts += 1
|
|
})
|
|
},
|
|
)
|
|
|
|
try {
|
|
const providerNames = ['codex', 'claude-code'] as const
|
|
const toolNames = ['subagent_codex', 'subagent_claude_code'] as const
|
|
const providers = providerNames.map((providerName) => {
|
|
const provider = ctx.subagents.getProvider(providerName)
|
|
if (provider === undefined) {
|
|
throw new Error(`${providerName} provider was not registered`)
|
|
}
|
|
return {
|
|
name: provider.name,
|
|
capabilities: provider.capabilities,
|
|
inheritsParentContext: provider.inheritsParentContext,
|
|
}
|
|
})
|
|
const tools = toolNames.map((toolName) => {
|
|
const tool = ctx.tools.schemas().find(schema => schema.name === toolName)
|
|
if (tool === undefined) throw new Error(`${toolName} tool was not registered`)
|
|
const properties = tool.parameters.properties
|
|
if (
|
|
typeof properties !== 'object'
|
|
|| properties === null
|
|
|| Array.isArray(properties)
|
|
) {
|
|
throw new Error(`${toolName} has invalid parameter properties`)
|
|
}
|
|
return {
|
|
name: tool.name,
|
|
parameterNames: Object.keys(properties).sort(),
|
|
required: tool.parameters.required,
|
|
}
|
|
})
|
|
|
|
process.stdout.write(`${JSON.stringify({
|
|
registeredProviders: ctx.subagents.list(),
|
|
providers,
|
|
tools,
|
|
starts,
|
|
})}\n`)
|
|
} finally {
|
|
await ctx.fiber.dispose()
|
|
}
|