{"record":{"id":"f1c7bf3050b9e8f4","repo":"deepseek-ai/deepseek-harness","slug":"cordis-dynamic-tools-require-an-agent-backed-sessi","errorCode":null,"errorMessage":"Cordis dynamic tools require an Agent-backed session","messagePattern":"Cordis dynamic tools require an Agent-backed session","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/extensions/tool-cordis/src/index.ts","lineNumber":30,"sourceCode":"import { createUserMessage } from '@deepseek-ai/dsh-llm'\nimport type { JsonValue } from '@deepseek-ai/dsh-session'\nimport type { UserMessage } from '@deepseek-ai/dsh-session'\nimport { defineTool } from '@deepseek-ai/dsh-tools'\nimport type { ToolExecution } from '@deepseek-ai/dsh-tools'\nimport type {} from '@deepseek-ai/dsh-system-prompt'\nimport { missingServices, providedServices } from './inspect.ts'\nimport {\n  presentDefineCall, presentInspectListCall, presentInspectQueryCall, presentInspectSelfCall, presentRunCall,\n  presentStopCall, presentUndefineCall,\n} from './present.ts'\nimport { CORDIS_SYSTEM_PROMPT } from './prompt.ts'\nimport { hostInspectProviders } from './providers.ts'\n\nexport const name = 'tool-cordis'\nexport const inject = ['tools', 'systemPrompt', 'dynamicCordisRunner', 'cordisInspect']\n\nfunction requireAgent(exec: ToolExecution): Agent {\n  if (exec.agent === undefined) throw new Error('Cordis dynamic tools require an Agent-backed session')\n  return exec.agent\n}\n\n/** Register the Cordis tools and explicit `@pluginId` context injection. */\nexport function apply(ctx: Context): void {\n  ctx.systemPrompt.section({ name: 'tool:cordis', order: 115, text: CORDIS_SYSTEM_PROMPT })\n  for (const provider of hostInspectProviders(ctx)) {\n    ctx.effect(() => ctx.cordisInspect.register(provider), `tool-cordis: inspect ${provider.manifest.id}`)\n  }\n\n  ctx.tools.register(defineTool({\n    name: 'cordis_inspect_list',\n    description:\n      'List every Cordis Inspect Provider currently known to the Host, including local Host Providers and the latest '\n      + 'manifests synchronized from the Client. Each entry includes its platform, purpose, read-only methods, and '\n      + 'input/output schemas. Call this Tool before creating or modifying a Package, then select the provider and '\n      + 'method for cordis_inspect_query from its result. Do not guess names or treat an Inspect method as a business '\n      + 'Service that Plugin code can call.',","sourceCodeStart":12,"sourceCodeEnd":48,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/extensions/tool-cordis/src/index.ts#L12-L48","documentation":"Error \"Cordis dynamic tools require an Agent-backed session\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/extensions/tool-cordis/src/index.ts:30 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}