| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/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()
- }
|