@kb-labs/agent-runtime 2.16.0 → 2.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/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-prompt-context-selector.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-repository-diagnostics.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-response-requirements-selector.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-session-recall-resolver.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-tool-capability-resolver.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/profiles.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/default-turn-interpreter.ts","../../../../../../Users/kirillbaranov/Desktop/kb-labs-workspace/plugins/agents/runtime/src/index.ts"],"names":["useLLM","extractJsonObject","uniqueArray","mergeFingerprints"],"mappings":"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","file":"index.js","sourcesContent":["import type { KernelState, PromptContextSelection } from '@kb-labs/agent-contracts';\nimport type { PromptContextSelector } from '@kb-labs/agent-sdk';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport { createDefaultPromptContextSelection } from '@kb-labs/agent-kernel';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\n\nconst DEFAULT_SELECTOR_SYSTEM_PROMPT = [\n 'Select which structured memory sections should be shown to the model for the next answer.',\n 'Prefer evidence and tool-usage sections for recall questions about files, commands, previous runs, or what was verified.',\n 'Avoid including working summary when it may override direct evidence for the current question.',\n 'Return strict JSON only.',\n].join(' ');\n\nexport function createDefaultPromptContextSelector(): PromptContextSelector {\n return {\n id: 'default-prompt-context-selector',\n async select(input: {\n state: KernelState;\n messages: LLMMessage[];\n responseRequirements?: RuntimeResponseRequirements;\n }): Promise<PromptContextSelection> {\n const fallback = deterministicPromptContextSelection(input.state, input.messages, input.responseRequirements);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(buildSelectionPrompt(input.state, input.messages, input.responseRequirements), {\n systemPrompt: DEFAULT_SELECTOR_SYSTEM_PROMPT,\n temperature: 0,\n maxTokens: 220,\n });\n return normalizeSelection(response.content, fallback);\n } catch {\n return fallback;\n }\n },\n };\n}\n\nfunction buildSelectionPrompt(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n): string {\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n return JSON.stringify({\n currentUserMessage: typeof lastUserMessage?.content === 'string' ? lastUserMessage.content : '',\n objective: state.objective ?? state.currentTask,\n constraints: state.constraints,\n hasRollup: Boolean(state.rollup?.summary),\n latestSummary: truncateText(state.memory.latestSummary ?? '', 400),\n recentEvidence: state.memory.evidence.slice(-6).map((item) => ({\n toolName: item.toolName ?? item.source,\n toolInputSummary: item.toolInputSummary,\n summary: item.summary,\n })),\n pendingActions: state.memory.pendingActions.filter((item) => item.status !== 'done').slice(-5).map((item) => item.content),\n responseRequirements,\n schema: {\n includeObjective: 'boolean',\n includeSessionRollup: 'boolean',\n includeConstraints: 'boolean',\n includeRoutingHints: 'boolean',\n includeCorrections: 'boolean',\n includeDecisions: 'boolean',\n includeEvidence: 'boolean',\n includePreviousRunToolUsage: 'boolean',\n includePreviousRunHandoff: 'boolean',\n includeWorkingSummary: 'boolean',\n includePendingActions: 'boolean',\n correctionWindow: 'number',\n decisionWindow: 'number',\n evidenceWindow: 'number',\n toolUsageWindow: 'number',\n pendingActionWindow: 'number',\n rationale: 'string',\n },\n }, null, 2);\n}\n\nfunction normalizeSelection(content: string, fallback: PromptContextSelection): PromptContextSelection {\n const parsed = extractJsonObject(content);\n if (!parsed) {\n return fallback;\n }\n\n return {\n includeObjective: asBoolean(parsed.includeObjective, fallback.includeObjective),\n includeSessionRollup: asBoolean(parsed.includeSessionRollup, fallback.includeSessionRollup),\n includeConstraints: asBoolean(parsed.includeConstraints, fallback.includeConstraints),\n includeRoutingHints: asBoolean(parsed.includeRoutingHints, fallback.includeRoutingHints),\n includeCorrections: asBoolean(parsed.includeCorrections, fallback.includeCorrections),\n includeDecisions: asBoolean(parsed.includeDecisions, fallback.includeDecisions),\n includeEvidence: asBoolean(parsed.includeEvidence, fallback.includeEvidence),\n includePreviousRunToolUsage: asBoolean(parsed.includePreviousRunToolUsage, fallback.includePreviousRunToolUsage),\n includePreviousRunHandoff: asBoolean(parsed.includePreviousRunHandoff, fallback.includePreviousRunHandoff),\n includeWorkingSummary: asBoolean(parsed.includeWorkingSummary, fallback.includeWorkingSummary),\n includePendingActions: asBoolean(parsed.includePendingActions, fallback.includePendingActions),\n correctionWindow: asNumber(parsed.correctionWindow, fallback.correctionWindow),\n decisionWindow: asNumber(parsed.decisionWindow, fallback.decisionWindow),\n evidenceWindow: asNumber(parsed.evidenceWindow, fallback.evidenceWindow),\n toolUsageWindow: asNumber(parsed.toolUsageWindow, fallback.toolUsageWindow),\n pendingActionWindow: asNumber(parsed.pendingActionWindow, fallback.pendingActionWindow),\n rationale: typeof parsed.rationale === 'string' && parsed.rationale.trim() ? parsed.rationale.trim() : fallback.rationale,\n };\n}\n\nfunction deterministicPromptContextSelection(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n): PromptContextSelection {\n const selection = createDefaultPromptContextSelection(state);\n if (responseRequirements?.requirements.allowsMemoryOnlyRecall) {\n return {\n ...selection,\n includeSessionRollup: false,\n includeDecisions: false,\n includePreviousRunHandoff: false,\n includeWorkingSummary: false,\n includeEvidence: true,\n includePreviousRunToolUsage: true,\n evidenceWindow: Math.max(selection.evidenceWindow, 6),\n toolUsageWindow: Math.max(selection.toolUsageWindow, 5),\n rationale: responseRequirements.rationale,\n };\n }\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n const text = typeof lastUserMessage?.content === 'string' ? lastUserMessage.content.toLowerCase() : '';\n const recallSignal = /(which files|what files|inspected|read so far|previous run|previous shell command|latest shell command|used so far|what did you read|какие файлы|что ты читал|какую команду)/i.test(text);\n if (!recallSignal) {\n return selection;\n }\n return {\n ...selection,\n includeSessionRollup: false,\n includeDecisions: false,\n includePreviousRunHandoff: false,\n includeWorkingSummary: false,\n includeEvidence: true,\n includePreviousRunToolUsage: true,\n evidenceWindow: Math.max(selection.evidenceWindow, 6),\n toolUsageWindow: Math.max(selection.toolUsageWindow, 5),\n rationale: 'Recall-oriented selection prefers direct evidence and tool usage over prose summaries.',\n };\n}\n\nfunction extractJsonObject(content: string): Record<string, unknown> | null {\n const start = content.indexOf('{');\n const end = content.lastIndexOf('}');\n if (start === -1 || end === -1 || end <= start) {\n return null;\n }\n try {\n return JSON.parse(content.slice(start, end + 1)) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n\nfunction asBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction asNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction truncateText(value: string, maxChars: number): string {\n const normalized = value.trim();\n if (normalized.length <= maxChars) {\n return normalized;\n }\n return `${normalized.slice(0, maxChars - 1).trimEnd()}…`;\n}\n","import { readdir } from 'node:fs/promises';\nimport path from 'node:path';\nimport type {\n RepositoryDiagnosticsProvider,\n RepositoryProbe,\n RepositoryProbeObservation,\n} from '@kb-labs/agent-sdk';\nimport type {\n RepositoryFingerprints,\n RepositoryModel,\n RepositorySignal,\n RepositoryTopology,\n} from '@kb-labs/agent-contracts';\n\nexport function createBuiltInRepositoryProbes(): RepositoryProbe[] {\n return [\n createTopologyProbe(),\n createConventionsProbe(),\n createJavascriptTypescriptProbe(),\n createPythonProbe(),\n createGoProbe(),\n createPhpProbe(),\n createJvmProbe(),\n createRustProbe(),\n createRubyProbe(),\n createGenericLayoutProbe(),\n ];\n}\n\nexport function createDefaultRepositoryDiagnosticsProvider(input?: {\n probes?: RepositoryProbe[];\n}): RepositoryDiagnosticsProvider {\n return {\n id: 'default-repository-diagnostics',\n async describe({ workingDir, mode, profile, kernel }) {\n const fileNames = await safeReadDirNames(workingDir);\n const probes = input?.probes ?? createBuiltInRepositoryProbes();\n let observation: RepositoryProbeObservation = {};\n\n for (const probe of probes) {\n const next = await probe.probe({\n workingDir,\n mode,\n profile,\n kernel,\n fileNames,\n });\n if (next) {\n observation = mergeObservation(observation, next);\n }\n }\n\n return {\n topology: observation.topology ?? 'unknown',\n stack: buildStackFromFingerprints(observation.fingerprints),\n fingerprints: normalizeFingerprints(observation.fingerprints),\n workspace: {\n rootPath: workingDir,\n packageRoots: uniqueArray(observation.workspace?.packageRoots ?? []),\n appRoots: uniqueArray(observation.workspace?.appRoots ?? []),\n libraryRoots: uniqueArray(observation.workspace?.libraryRoots ?? []),\n infraRoots: uniqueArray(observation.workspace?.infraRoots ?? []),\n docsRoots: uniqueArray(observation.workspace?.docsRoots ?? []),\n },\n conventions: {\n hasAdr: observation.conventions?.hasAdr ?? false,\n hasOpenApi: observation.conventions?.hasOpenApi ?? false,\n hasCi: observation.conventions?.hasCi ?? false,\n hasLinting: observation.conventions?.hasLinting ?? false,\n hasFormatting: observation.conventions?.hasFormatting ?? false,\n },\n riskSignals: uniqueArray(observation.riskSignals ?? []),\n detectedAt: new Date().toISOString(),\n sources: uniqueArray(observation.sources ?? []),\n };\n },\n };\n}\n\nfunction createTopologyProbe(): RepositoryProbe {\n return {\n id: 'topology-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n let topology: RepositoryTopology = 'unknown';\n if (has('pnpm-workspace.yaml') || has('turbo.json') || has('nx.json') || has('lerna.json')) {\n topology = 'monorepo';\n } else if (has('package.json') || has('pyproject.toml') || has('go.mod') || has('composer.json') || has('Cargo.toml') || has('Gemfile') || has('pom.xml') || has('build.gradle')) {\n topology = 'single-package';\n }\n\n return {\n topology,\n sources: [\n ...[\n 'pnpm-workspace.yaml',\n 'turbo.json',\n 'nx.json',\n 'lerna.json',\n 'package.json',\n 'pyproject.toml',\n 'go.mod',\n 'composer.json',\n 'Cargo.toml',\n 'Gemfile',\n 'pom.xml',\n 'build.gradle',\n ]\n .filter((name) => has(name))\n .map((name) => path.join(workingDir, name)),\n ],\n };\n },\n };\n}\n\nfunction createConventionsProbe(): RepositoryProbe {\n return {\n id: 'conventions-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n return {\n conventions: {\n hasAdr: has('docs') || has('adr'),\n hasOpenApi: ['openapi.json', 'openapi.yaml', 'openapi.yml', 'swagger.json'].some(has),\n hasCi: has('.github') || has('.gitlab-ci.yml') || has('.circleci'),\n hasLinting: [\n '.eslintrc',\n '.eslintrc.js',\n '.eslintrc.cjs',\n '.flake8',\n 'ruff.toml',\n 'phpcs.xml',\n 'golangci.yml',\n 'golangci.yaml',\n ].some(has),\n hasFormatting: [\n '.prettierrc',\n '.prettierrc.js',\n 'prettier.config.js',\n 'ruff.toml',\n 'php-cs-fixer.php',\n '.php-cs-fixer.php',\n 'rustfmt.toml',\n ].some(has),\n },\n workspace: {\n docsRoots: has('docs') ? [path.join(workingDir, 'docs')] : [],\n },\n };\n },\n };\n}\n\nfunction createJavascriptTypescriptProbe(): RepositoryProbe {\n return {\n id: 'js-ts-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const fingerprints: Partial<RepositoryFingerprints> = {\n ecosystems: mergeSignals(\n createSignal(has('package.json'), 'javascript-ecosystem', 0.72, workingDir, 'package.json'),\n createSignal(has('tsconfig.json'), 'typescript-ecosystem', 0.84, workingDir, 'tsconfig.json'),\n ),\n languages: mergeSignals(\n createSignal(has('package.json'), 'javascript', 0.7, workingDir, 'package.json'),\n createSignal(has('tsconfig.json') || has('tsup.config.ts') || has('vite.config.ts'), 'typescript', 0.9, workingDir, 'tsconfig.json'),\n ),\n runtimes: createSignal(has('package.json'), 'node', 0.82, workingDir, 'package.json'),\n packageManagers: mergeSignals(\n createSignal(has('pnpm-lock.yaml') || has('pnpm-workspace.yaml'), 'pnpm', 0.95, workingDir, 'pnpm-lock.yaml'),\n createSignal(has('package-lock.json'), 'npm', 0.92, workingDir, 'package-lock.json'),\n createSignal(has('yarn.lock'), 'yarn', 0.92, workingDir, 'yarn.lock'),\n createSignal(has('bun.lockb') || has('bun.lock'), 'bun', 0.9, workingDir, 'bun.lockb'),\n ),\n buildTools: mergeSignals(\n createSignal(has('turbo.json'), 'turbo', 0.92, workingDir, 'turbo.json'),\n createSignal(has('nx.json'), 'nx', 0.92, workingDir, 'nx.json'),\n createSignal(has('tsup.config.ts'), 'tsup', 0.9, workingDir, 'tsup.config.ts'),\n createSignal(has('vite.config.ts') || has('vite.config.js'), 'vite', 0.9, workingDir, 'vite.config.ts'),\n ),\n testTools: mergeSignals(\n createSignal(has('vitest.config.ts') || has('vitest.config.js'), 'vitest', 0.92, workingDir, 'vitest.config.ts'),\n createSignal(has('jest.config.js') || has('jest.config.ts'), 'jest', 0.9, workingDir, 'jest.config.js'),\n createSignal(has('playwright.config.ts') || has('playwright.config.js'), 'playwright', 0.9, workingDir, 'playwright.config.ts'),\n ),\n frameworks: mergeSignals(\n createSignal(has('next.config.js') || has('next.config.mjs') || has('next.config.ts'), 'next', 0.92, workingDir, 'next.config.js'),\n createSignal(has('nuxt.config.ts') || has('nuxt.config.js'), 'nuxt', 0.92, workingDir, 'nuxt.config.ts'),\n createSignal(has('astro.config.mjs') || has('astro.config.js') || has('astro.config.ts'), 'astro', 0.92, workingDir, 'astro.config.mjs'),\n createSignal(has('svelte.config.js') || has('svelte.config.mjs'), 'svelte', 0.88, workingDir, 'svelte.config.js'),\n ),\n };\n\n return {\n fingerprints,\n workspace: {\n packageRoots: mapExistingRoots(workingDir, fileNames, ['packages']),\n appRoots: mapExistingRoots(workingDir, fileNames, ['apps', 'services']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['libs', 'lib']),\n },\n };\n },\n };\n}\n\nfunction createPythonProbe(): RepositoryProbe {\n return {\n id: 'python-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('pyproject.toml') || has('requirements.txt') || has('requirements-dev.txt') || has('poetry.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'python-ecosystem', 0.9, workingDir, 'pyproject.toml'),\n languages: createSignal(detected, 'python', 0.95, workingDir, has('pyproject.toml') ? 'pyproject.toml' : 'requirements.txt'),\n runtimes: createSignal(detected, 'python', 0.95, workingDir, has('pyproject.toml') ? 'pyproject.toml' : 'requirements.txt'),\n packageManagers: mergeSignals(\n createSignal(has('poetry.lock'), 'poetry', 0.94, workingDir, 'poetry.lock'),\n createSignal(has('requirements.txt') || has('requirements-dev.txt'), 'pip', 0.88, workingDir, 'requirements.txt'),\n ),\n testTools: mergeSignals(\n createSignal(has('pytest.ini') || has('conftest.py'), 'pytest', 0.9, workingDir, has('pytest.ini') ? 'pytest.ini' : 'conftest.py'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src', 'app']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createGoProbe(): RepositoryProbe {\n return {\n id: 'go-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('go.mod');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'go-ecosystem', 0.95, workingDir, 'go.mod'),\n languages: createSignal(detected, 'go', 0.98, workingDir, 'go.mod'),\n runtimes: createSignal(detected, 'go', 0.98, workingDir, 'go.mod'),\n buildTools: createSignal(detected && has('Makefile'), 'make', 0.8, workingDir, 'Makefile'),\n testTools: createSignal(detected, 'go-test', 0.72, workingDir, 'go.mod'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['cmd']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['internal', 'pkg']),\n },\n };\n },\n };\n}\n\nfunction createPhpProbe(): RepositoryProbe {\n return {\n id: 'php-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('composer.json') || has('composer.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'php-ecosystem', 0.92, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n languages: createSignal(detected, 'php', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n runtimes: createSignal(detected, 'php', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n packageManagers: createSignal(detected, 'composer', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n testTools: createSignal(has('phpunit.xml') || has('phpunit.xml.dist'), 'phpunit', 0.92, workingDir, has('phpunit.xml') ? 'phpunit.xml' : 'phpunit.xml.dist'),\n frameworks: mergeSignals(\n createSignal(has('artisan'), 'laravel', 0.94, workingDir, 'artisan'),\n createSignal(has('bin') && has('config') && has('public'), 'symfony', 0.7, workingDir, 'composer.json'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['app', 'src']),\n infraRoots: mapExistingRoots(workingDir, fileNames, ['config', 'database', 'routes']),\n },\n };\n },\n };\n}\n\nfunction createJvmProbe(): RepositoryProbe {\n return {\n id: 'jvm-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('pom.xml') || has('build.gradle') || has('build.gradle.kts');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'jvm-ecosystem', 0.9, workingDir, has('pom.xml') ? 'pom.xml' : 'build.gradle'),\n languages: mergeSignals(\n createSignal(detected, 'java', 0.82, workingDir, has('pom.xml') ? 'pom.xml' : 'build.gradle'),\n createSignal(has('build.gradle.kts'), 'kotlin', 0.84, workingDir, 'build.gradle.kts'),\n ),\n buildTools: mergeSignals(\n createSignal(has('pom.xml'), 'maven', 0.95, workingDir, 'pom.xml'),\n createSignal(has('build.gradle') || has('build.gradle.kts'), 'gradle', 0.95, workingDir, has('build.gradle') ? 'build.gradle' : 'build.gradle.kts'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createRustProbe(): RepositoryProbe {\n return {\n id: 'rust-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('Cargo.toml');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'rust-ecosystem', 0.95, workingDir, 'Cargo.toml'),\n languages: createSignal(detected, 'rust', 0.98, workingDir, 'Cargo.toml'),\n runtimes: createSignal(detected, 'rust', 0.98, workingDir, 'Cargo.toml'),\n buildTools: createSignal(detected, 'cargo', 0.98, workingDir, 'Cargo.toml'),\n packageManagers: createSignal(detected, 'cargo', 0.98, workingDir, 'Cargo.toml'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createRubyProbe(): RepositoryProbe {\n return {\n id: 'ruby-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('Gemfile') || has('Gemfile.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'ruby-ecosystem', 0.93, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n languages: createSignal(detected, 'ruby', 0.96, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n runtimes: createSignal(detected, 'ruby', 0.96, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n packageManagers: createSignal(detected, 'bundler', 0.94, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n buildTools: createSignal(detected && has('Rakefile'), 'rake', 0.9, workingDir, 'Rakefile'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['app', 'lib']),\n },\n };\n },\n };\n}\n\nfunction createGenericLayoutProbe(): RepositoryProbe {\n return {\n id: 'generic-layout-probe',\n probe({ workingDir, fileNames }) {\n return {\n workspace: {\n packageRoots: mapExistingRoots(workingDir, fileNames, ['packages']),\n appRoots: mapExistingRoots(workingDir, fileNames, ['apps', 'services', 'cmd', 'src']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['libs', 'lib', 'internal', 'pkg']),\n infraRoots: mapExistingRoots(workingDir, fileNames, ['infra', 'config', 'database', 'routes']),\n docsRoots: mapExistingRoots(workingDir, fileNames, ['docs']),\n },\n riskSignals: [\n ...(!fileNames.includes('README.md') ? ['missing_readme'] : []),\n ...(!fileNames.includes('.gitignore') ? ['missing_gitignore'] : []),\n ],\n };\n },\n };\n}\n\nasync function safeReadDirNames(dirPath: string): Promise<string[]> {\n try {\n const entries = await readdir(dirPath, { withFileTypes: true });\n return entries.map((entry) => entry.name);\n } catch {\n return [];\n }\n}\n\nfunction mergeObservation(\n base: RepositoryProbeObservation,\n next: RepositoryProbeObservation,\n): RepositoryProbeObservation {\n return {\n topology: next.topology && next.topology !== 'unknown' ? next.topology : base.topology,\n stack: {\n ...(base.stack ?? {}),\n ...(next.stack ?? {}),\n },\n fingerprints: mergeFingerprints(base.fingerprints, next.fingerprints),\n workspace: {\n ...(base.workspace ?? {}),\n rootPath: next.workspace?.rootPath ?? base.workspace?.rootPath,\n packageRoots: uniqueArray([...(base.workspace?.packageRoots ?? []), ...(next.workspace?.packageRoots ?? [])]),\n appRoots: uniqueArray([...(base.workspace?.appRoots ?? []), ...(next.workspace?.appRoots ?? [])]),\n libraryRoots: uniqueArray([...(base.workspace?.libraryRoots ?? []), ...(next.workspace?.libraryRoots ?? [])]),\n infraRoots: uniqueArray([...(base.workspace?.infraRoots ?? []), ...(next.workspace?.infraRoots ?? [])]),\n docsRoots: uniqueArray([...(base.workspace?.docsRoots ?? []), ...(next.workspace?.docsRoots ?? [])]),\n },\n conventions: {\n hasAdr: (base.conventions?.hasAdr ?? false) || (next.conventions?.hasAdr ?? false),\n hasOpenApi: (base.conventions?.hasOpenApi ?? false) || (next.conventions?.hasOpenApi ?? false),\n hasCi: (base.conventions?.hasCi ?? false) || (next.conventions?.hasCi ?? false),\n hasLinting: (base.conventions?.hasLinting ?? false) || (next.conventions?.hasLinting ?? false),\n hasFormatting: (base.conventions?.hasFormatting ?? false) || (next.conventions?.hasFormatting ?? false),\n },\n riskSignals: uniqueArray([...(base.riskSignals ?? []), ...(next.riskSignals ?? [])]),\n sources: uniqueArray([...(base.sources ?? []), ...(next.sources ?? [])]),\n };\n}\n\nfunction mergeFingerprints(\n base?: Partial<RepositoryFingerprints>,\n next?: Partial<RepositoryFingerprints>,\n): Partial<RepositoryFingerprints> {\n return {\n ecosystems: mergeSignals(base?.ecosystems, next?.ecosystems),\n languages: mergeSignals(base?.languages, next?.languages),\n frameworks: mergeSignals(base?.frameworks, next?.frameworks),\n runtimes: mergeSignals(base?.runtimes, next?.runtimes),\n packageManagers: mergeSignals(base?.packageManagers, next?.packageManagers),\n buildTools: mergeSignals(base?.buildTools, next?.buildTools),\n testTools: mergeSignals(base?.testTools, next?.testTools),\n };\n}\n\nfunction normalizeFingerprints(\n partial?: Partial<RepositoryFingerprints>,\n): RepositoryFingerprints {\n return {\n ecosystems: sortSignals(partial?.ecosystems),\n languages: sortSignals(partial?.languages),\n frameworks: sortSignals(partial?.frameworks),\n runtimes: sortSignals(partial?.runtimes),\n packageManagers: sortSignals(partial?.packageManagers),\n buildTools: sortSignals(partial?.buildTools),\n testTools: sortSignals(partial?.testTools),\n };\n}\n\nfunction buildStackFromFingerprints(\n partial?: Partial<RepositoryFingerprints>,\n): RepositoryModel['stack'] {\n const normalized = normalizeFingerprints(partial);\n return {\n languages: normalized.languages.map((signal) => signal.name),\n frameworks: normalized.frameworks.map((signal) => signal.name),\n runtimes: normalized.runtimes.map((signal) => signal.name),\n packageManagers: normalized.packageManagers.map((signal) => signal.name),\n buildTools: normalized.buildTools.map((signal) => signal.name),\n testTools: normalized.testTools.map((signal) => signal.name),\n };\n}\n\nfunction mergeSignals(\n ...collections: Array<RepositorySignal[] | RepositorySignal | undefined>\n): RepositorySignal[] {\n const merged = new Map<string, RepositorySignal>();\n for (const collection of collections) {\n const signals = Array.isArray(collection) ? collection : collection ? [collection] : [];\n for (const signal of signals) {\n const current = merged.get(signal.name);\n if (!current || signal.confidence > current.confidence) {\n merged.set(signal.name, {\n name: signal.name,\n confidence: signal.confidence,\n sources: uniqueArray([...(current?.sources ?? []), ...signal.sources]),\n });\n } else {\n current.sources = uniqueArray([...current.sources, ...signal.sources]);\n }\n }\n }\n return sortSignals(Array.from(merged.values()));\n}\n\nfunction sortSignals(signals?: RepositorySignal[]): RepositorySignal[] {\n return [...(signals ?? [])]\n .sort((left, right) => right.confidence - left.confidence || left.name.localeCompare(right.name));\n}\n\nfunction createSignal(\n condition: boolean,\n name: string,\n confidence: number,\n workingDir: string,\n source: string,\n): RepositorySignal[] {\n return condition\n ? [{ name, confidence, sources: [path.join(workingDir, source)] }]\n : [];\n}\n\nfunction mapExistingRoots(workingDir: string, fileNames: string[], names: string[]): string[] {\n const set = new Set(fileNames);\n return names.filter((name) => set.has(name)).map((name) => path.join(workingDir, name));\n}\n\nfunction createHas(fileNames: string[]): (name: string) => boolean {\n const set = new Set(fileNames);\n return (name) => set.has(name);\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n","import type { EvidenceRequirements, KernelState } from '@kb-labs/agent-contracts';\nimport type { ResponseRequirementsSelector } from '@kb-labs/agent-sdk';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\n\nconst DEFAULT_REQUIREMENTS: EvidenceRequirements = {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: false,\n needsFileBackedClaims: false,\n allowsInference: true,\n maxUnsupportedClaims: 1,\n};\n\nexport function createDefaultResponseRequirementsSelector(): ResponseRequirementsSelector {\n return {\n id: 'default-response-requirements-selector',\n async select(input: {\n state: KernelState | null;\n messages: LLMMessage[];\n task: string;\n }): Promise<RuntimeResponseRequirements> {\n const fallback = deterministicRequirements(input.task);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(buildRequirementsPrompt(input), {\n systemPrompt: [\n 'Determine how strictly the next answer must be grounded in evidence.',\n 'Allow evidence-only recall when the user asks about files, commands, or actions already observed in the session.',\n 'Require file-backed claims for architecture or code explanations.',\n 'Return strict JSON only.',\n ].join(' '),\n temperature: 0,\n maxTokens: 180,\n });\n return normalizeRequirements(response.content, fallback);\n } catch {\n return fallback;\n }\n },\n };\n}\n\nfunction buildRequirementsPrompt(input: {\n state: KernelState | null;\n messages: LLMMessage[];\n task: string;\n}): string {\n return JSON.stringify({\n task: input.task,\n objective: input.state?.objective ?? input.state?.currentTask ?? '',\n constraints: input.state?.constraints ?? [],\n recentEvidence: input.state?.memory.evidence.slice(-6).map((item) => ({\n toolName: item.toolName ?? item.source,\n toolInputSummary: item.toolInputSummary,\n summary: item.summary,\n })) ?? [],\n schema: {\n requirements: {\n allowsMemoryOnlyRecall: 'boolean',\n needsDirectToolEvidence: 'boolean',\n needsFileBackedClaims: 'boolean',\n allowsInference: 'boolean',\n maxUnsupportedClaims: 'number',\n },\n rationale: 'string',\n },\n }, null, 2);\n}\n\nfunction normalizeRequirements(content: string, fallback: RuntimeResponseRequirements): RuntimeResponseRequirements {\n const parsed = extractJsonObject(content);\n if (!parsed) {\n return fallback;\n }\n const requirements = normalizeEvidenceRequirements(parsed.requirements, fallback.requirements);\n const rationale = typeof parsed.rationale === 'string' && parsed.rationale.trim()\n ? parsed.rationale.trim()\n : fallback.rationale;\n return { requirements, rationale };\n}\n\nfunction deterministicRequirements(task: string): RuntimeResponseRequirements {\n const text = task.trim().toLowerCase();\n const recallSignal = /(which files|what files|which commands|what commands|did you inspect|did you read|used so far|previous run|previous shell command|latest shell command|какие файлы|что ты читал|какую команду)/i.test(text);\n if (recallSignal) {\n return {\n requirements: {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: true,\n needsFileBackedClaims: false,\n allowsInference: false,\n maxUnsupportedClaims: 0,\n },\n rationale: 'Task looks like session recall and can be answered from recorded evidence.',\n };\n }\n\n const codeExplanationSignal = /(how .*work|explain|architecture|responsibilit|continuity|rollup|claim verification|risk|summary of .*src\\/|inspect .*src\\/)/i.test(text);\n if (codeExplanationSignal) {\n return {\n requirements: {\n allowsMemoryOnlyRecall: false,\n needsDirectToolEvidence: true,\n needsFileBackedClaims: true,\n allowsInference: false,\n maxUnsupportedClaims: 0,\n },\n rationale: 'Task looks like code or architecture explanation and requires file-backed evidence.',\n };\n }\n\n return {\n requirements: DEFAULT_REQUIREMENTS,\n rationale: 'Default requirements allow bounded inference unless the task is clearly evidence-heavy.',\n };\n}\n\nfunction normalizeEvidenceRequirements(\n value: unknown,\n fallback: EvidenceRequirements,\n): EvidenceRequirements {\n if (!value || typeof value !== 'object') {\n return fallback;\n }\n const input = value as Record<string, unknown>;\n return {\n allowsMemoryOnlyRecall: typeof input.allowsMemoryOnlyRecall === 'boolean'\n ? input.allowsMemoryOnlyRecall\n : fallback.allowsMemoryOnlyRecall,\n needsDirectToolEvidence: typeof input.needsDirectToolEvidence === 'boolean'\n ? input.needsDirectToolEvidence\n : fallback.needsDirectToolEvidence,\n needsFileBackedClaims: typeof input.needsFileBackedClaims === 'boolean'\n ? input.needsFileBackedClaims\n : fallback.needsFileBackedClaims,\n allowsInference: typeof input.allowsInference === 'boolean'\n ? input.allowsInference\n : fallback.allowsInference,\n maxUnsupportedClaims: typeof input.maxUnsupportedClaims === 'number'\n ? input.maxUnsupportedClaims\n : fallback.maxUnsupportedClaims,\n };\n}\n\nfunction extractJsonObject(content: string): Record<string, unknown> | null {\n const start = content.indexOf('{');\n const end = content.lastIndexOf('}');\n if (start === -1 || end === -1 || end <= start) {\n return null;\n }\n try {\n return JSON.parse(content.slice(start, end + 1)) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n","import type { KernelState, ToolCallRecord } from '@kb-labs/agent-contracts';\nimport type { SessionRecallResolver } from '@kb-labs/agent-sdk';\n\nexport function createDefaultSessionRecallResolver(): SessionRecallResolver {\n return {\n id: 'default-session-recall-resolver',\n resolve(input) {\n const fileAnswer = resolveFileRecallAnswer(input.task, input.state, input.toolRecords);\n if (fileAnswer) {\n return {\n answer: fileAnswer.answer,\n confidence: 0.98,\n filesRead: fileAnswer.files,\n };\n }\n\n if (!input.responseRequirements?.requirements.allowsMemoryOnlyRecall) {\n return null;\n }\n\n const commandAnswer = resolveCommandRecallAnswer(input.task, input.state, input.toolRecords);\n if (commandAnswer) {\n return {\n answer: commandAnswer.answer,\n confidence: 0.98,\n filesRead: [],\n };\n }\n\n return null;\n },\n };\n}\n\nfunction resolveFileRecallAnswer(\n task: string,\n kernel: KernelState,\n toolRecords: ToolCallRecord[],\n): { answer: string; files: string[] } | null {\n if (!/(which files|what files|did you inspect|did you read|files have you inspected|какие файлы|что ты читал|какие файлы ты смотрел)/i.test(task)) {\n return null;\n }\n\n const files = uniqueStrings([\n ...toolRecords\n .filter((record) => record.toolName === 'fs_read')\n .map((record) => typeof record.input.path === 'string' ? record.input.path : undefined),\n ...kernel.memory.evidence\n .filter((item) => item.toolName === 'fs_read')\n .map((item) => item.toolInputSummary),\n ...(kernel.handoff?.filesRead ?? []),\n ]);\n\n if (files.length === 0) {\n return null;\n }\n\n return {\n answer: files.length === 1\n ? `I inspected exactly this file in the session: ${files[0]}.`\n : `I inspected these files in the session:\\n- ${files.join('\\n- ')}`,\n files,\n };\n}\n\nfunction resolveCommandRecallAnswer(\n task: string,\n kernel: KernelState,\n toolRecords: ToolCallRecord[],\n): { answer: string } | null {\n if (!/(which commands|what commands|previous shell command|latest shell command|какую команду|какие команды)/i.test(task)) {\n return null;\n }\n\n const commands = uniqueStrings([\n ...toolRecords\n .filter((record) => record.toolName === 'shell_exec')\n .map((record) => typeof record.input.command === 'string' ? record.input.command : undefined),\n ...kernel.memory.evidence\n .filter((item) => item.toolName === 'shell_exec')\n .map((item) => item.toolInputSummary),\n ]);\n\n if (commands.length === 0) {\n return null;\n }\n\n return {\n answer: commands.length === 1\n ? `I used this shell command in the session: ${commands[0]}.`\n : `I used these shell commands in the session:\\n- ${commands.join('\\n- ')}`,\n };\n}\n\nfunction uniqueStrings(values: Array<string | undefined>): string[] {\n const normalized = values.filter((value): value is string => typeof value === 'string' && value.trim().length > 0);\n return [...new Set(normalized)];\n}\n","import type { ToolCapabilityResolver } from '@kb-labs/agent-sdk';\nimport type { ToolCapability } from '@kb-labs/agent-contracts';\n\nconst DEFAULT_CAPABILITIES: ToolCapability[] = [\n 'filesystem',\n 'search',\n 'code-navigation',\n 'shell',\n 'memory',\n 'planning',\n 'todo',\n 'interaction',\n 'reporting',\n 'delegation',\n];\n\nexport function createDefaultToolCapabilityResolver(): ToolCapabilityResolver {\n return {\n id: 'default-tool-capability-resolver',\n resolve() {\n return DEFAULT_CAPABILITIES;\n },\n };\n}\n","import type { AgentMode } from '@kb-labs/agent-contracts';\nimport type { AgentSDK, RuntimeProfile } from '@kb-labs/agent-sdk';\n\nexport function resolveRuntimeMode(mode?: AgentMode): 'assistant' | 'autonomous' {\n return mode === 'execute' ? 'autonomous' : 'assistant';\n}\n\nexport function createBuiltInRuntimeProfiles(): RuntimeProfile[] {\n return [\n {\n id: 'assistant-profile',\n mode: 'assistant',\n description: 'Dialogue-first profile for AI-assisted work with controlled tool usage.',\n toolPolicy: {\n access: 'controlled',\n },\n completionPolicy: {\n requireReportTool: true,\n },\n },\n {\n id: 'autonomous-profile',\n mode: 'autonomous',\n description: 'Execution-first profile for longer-running autonomous task completion.',\n toolPolicy: {\n access: 'aggressive',\n },\n completionPolicy: {\n requireReportTool: true,\n },\n },\n ];\n}\n\nexport function resolveRuntimeProfile(\n sdk: AgentSDK,\n mode: AgentMode | 'assistant' | 'autonomous',\n): RuntimeProfile {\n const candidates = [\n ...createBuiltInRuntimeProfiles().filter((profile) => profile.mode === mode),\n ...sdk.runtimeProfiles.filter((profile) => profile.mode === mode),\n ];\n\n if (candidates.length === 0) {\n throw new Error(`No runtime profile registered for mode \"${mode}\"`);\n }\n\n return mergeRuntimeProfiles(candidates);\n}\n\nfunction mergeRuntimeProfiles(profiles: RuntimeProfile[]): RuntimeProfile {\n const first = profiles[0];\n if (!first) {\n throw new Error('Cannot merge runtime profiles from an empty candidate set');\n }\n const rest = profiles.slice(1);\n let merged: RuntimeProfile = {\n id: first.id,\n mode: first.mode,\n description: first.description,\n toolPolicy: first.toolPolicy,\n repositoryDiagnosticsProviders: [...(first.repositoryDiagnosticsProviders ?? [])],\n repositoryProbes: [...(first.repositoryProbes ?? [])],\n toolCapabilityResolvers: [...(first.toolCapabilityResolvers ?? [])],\n completionPolicy: first.completionPolicy,\n promptContextSelectors: [...(first.promptContextSelectors ?? [])],\n responseRequirementsSelectors: [...(first.responseRequirementsSelectors ?? [])],\n promptProjectors: [...(first.promptProjectors ?? [])],\n sessionRecallResolvers: [...(first.sessionRecallResolvers ?? [])],\n runEvaluators: [...(first.runEvaluators ?? [])],\n resultMappers: [...(first.resultMappers ?? [])],\n outputValidators: [...(first.outputValidators ?? [])],\n artifactWriters: [...(first.artifactWriters ?? [])],\n };\n\n for (const profile of rest) {\n merged = {\n ...merged,\n ...profile,\n description: profile.description ?? merged.description,\n toolPolicy: mergeToolPolicies(merged.toolPolicy, profile.toolPolicy),\n repositoryDiagnosticsProviders: [\n ...(merged.repositoryDiagnosticsProviders ?? []),\n ...(profile.repositoryDiagnosticsProviders ?? []),\n ],\n repositoryProbes: [\n ...(merged.repositoryProbes ?? []),\n ...(profile.repositoryProbes ?? []),\n ],\n toolCapabilityResolvers: [\n ...(merged.toolCapabilityResolvers ?? []),\n ...(profile.toolCapabilityResolvers ?? []),\n ],\n completionPolicy: profile.completionPolicy ?? merged.completionPolicy,\n promptContextSelectors: [\n ...(merged.promptContextSelectors ?? []),\n ...(profile.promptContextSelectors ?? []),\n ],\n responseRequirementsSelectors: [\n ...(merged.responseRequirementsSelectors ?? []),\n ...(profile.responseRequirementsSelectors ?? []),\n ],\n promptProjectors: [\n ...(merged.promptProjectors ?? []),\n ...(profile.promptProjectors ?? []),\n ],\n sessionRecallResolvers: [\n ...(merged.sessionRecallResolvers ?? []),\n ...(profile.sessionRecallResolvers ?? []),\n ],\n runEvaluators: [\n ...(merged.runEvaluators ?? []),\n ...(profile.runEvaluators ?? []),\n ],\n resultMappers: [\n ...(merged.resultMappers ?? []),\n ...(profile.resultMappers ?? []),\n ],\n outputValidators: [\n ...(merged.outputValidators ?? []),\n ...(profile.outputValidators ?? []),\n ],\n artifactWriters: [\n ...(merged.artifactWriters ?? []),\n ...(profile.artifactWriters ?? []),\n ],\n };\n }\n\n return merged;\n}\n\nfunction mergeToolPolicies(\n base: RuntimeProfile['toolPolicy'],\n next: RuntimeProfile['toolPolicy'],\n): RuntimeProfile['toolPolicy'] {\n if (!base) {\n return next;\n }\n if (!next) {\n return base;\n }\n\n return {\n access: next.access ?? base.access,\n allowedToolNames: mergeAllowedArrays(base.allowedToolNames, next.allowedToolNames),\n allowedCapabilities: mergeAllowedArrays(base.allowedCapabilities, next.allowedCapabilities),\n blockedCapabilities: uniqueArray([\n ...(base.blockedCapabilities ?? []),\n ...(next.blockedCapabilities ?? []),\n ]),\n };\n}\n\nfunction mergeAllowedArrays<T>(base?: T[], next?: T[]): T[] | undefined {\n if (!base && !next) {\n return undefined;\n }\n if (!base) {\n return uniqueArray(next ?? []);\n }\n if (!next) {\n return uniqueArray(base);\n }\n const nextSet = new Set(next);\n return uniqueArray(base.filter((item) => nextSet.has(item)));\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n","import type { TurnInterpretation, AgentMode, KernelState, TurnKind } from '@kb-labs/agent-contracts';\nimport type { TurnInterpreter } from '@kb-labs/agent-sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\n\ntype InterpreterInput = {\n sessionId?: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n message: string;\n kernel: KernelState | null;\n};\n\nconst INTERPRET_TURN_TOOL = {\n name: 'interpret_turn',\n description: 'Classify the latest user turn relative to the current session and determine whether it should be persisted as session memory.',\n inputSchema: {\n type: 'object',\n properties: {\n kind: {\n type: 'string',\n enum: ['new_task', 'follow_up', 'correction', 'constraint', 'mixed'],\n description: 'Kind of user turn relative to current session state.',\n },\n shouldPersist: {\n type: 'boolean',\n description: 'True when this turn adds a lasting correction or instruction that should be committed to session memory.',\n },\n persistenceKind: {\n type: 'string',\n enum: ['correction', 'constraint'],\n description: 'When shouldPersist is true, describe whether this is a correction or lasting constraint.',\n },\n persistStrategy: {\n type: 'string',\n enum: ['record_directly', 'explicit_commit'],\n description: 'Use record_directly for baseline task constraints that should enter kernel immediately. Use explicit_commit for follow-up corrections that must be committed via memory tools before report.',\n },\n content: {\n type: 'string',\n description: 'Compact normalized content to persist when shouldPersist is true.',\n },\n invalidates: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional list of prior assumptions or directions invalidated by this turn.',\n },\n confidence: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n description: 'Confidence in the interpretation.',\n },\n suggestedMode: {\n type: 'string',\n enum: ['assistant', 'autonomous', 'spec', 'debug', 'execute', 'plan', 'edit'],\n description: 'Optional suggested mode for downstream routing.',\n },\n suggestedSkills: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional suggested skill ids for prompt/routing layers.',\n },\n suggestedPromptProfile: {\n type: 'string',\n description: 'Optional prompt profile hint for later routing layers.',\n },\n suggestedToolCapabilities: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional tool capability hints for later routing layers.',\n },\n rationale: {\n type: 'string',\n description: 'Short explanation of why this interpretation was selected.',\n },\n },\n required: ['kind', 'shouldPersist', 'confidence'],\n },\n};\n\nexport function createDefaultTurnInterpreter(): TurnInterpreter {\n return {\n id: 'default-turn-interpreter',\n supports(_mode: AgentMode | 'assistant' | 'autonomous'): boolean {\n return true;\n },\n async interpret(input: InterpreterInput): Promise<TurnInterpretation | null> {\n const normalized = input.message.trim();\n if (!normalized) {\n return null;\n }\n\n const llmInterpretation = await interpretWithLLM(input);\n if (llmInterpretation) {\n return llmInterpretation;\n }\n\n return interpretHeuristic(input);\n },\n };\n}\n\nasync function interpretWithLLM(input: InterpreterInput): Promise<TurnInterpretation | null> {\n const llm = useLLM({ tier: 'small' });\n if (!llm?.chatWithTools) {\n return null;\n }\n\n try {\n const response = await llm.chatWithTools(\n [\n {\n role: 'system',\n content: [\n 'Classify the latest user turn relative to the current session.',\n 'Call interpret_turn exactly once.',\n 'Persist only when the user changed direction, corrected prior understanding, or added a lasting instruction/constraint.',\n 'Do not persist ordinary follow-up questions.',\n 'Keep rationale short.',\n ].join(' '),\n },\n {\n role: 'user',\n content: buildInterpreterPrompt(input),\n },\n ],\n {\n tools: [INTERPRET_TURN_TOOL],\n toolChoice: { type: 'function', function: { name: 'interpret_turn' } },\n temperature: 0,\n maxTokens: 180,\n },\n );\n\n const call = response.toolCalls?.find((toolCall) => toolCall.name === 'interpret_turn');\n if (!call?.input || typeof call.input !== 'object') {\n return null;\n }\n\n return normalizeInterpretation(call.input as Record<string, unknown>);\n } catch {\n return null;\n }\n}\n\nfunction buildInterpreterPrompt(input: InterpreterInput): string {\n const sections = [\n `Mode: ${input.mode}`,\n `Current message:\\n${input.message.trim()}`,\n ];\n\n if (input.kernel) {\n sections.push(`Current objective:\\n${input.kernel.objective ?? input.kernel.currentTask}`);\n if (input.kernel.constraints.length > 0) {\n sections.push(`Active constraints:\\n- ${input.kernel.constraints.join('\\n- ')}`);\n }\n const recentCorrections = input.kernel.memory.corrections.slice(-3).map((item) => item.content);\n if (recentCorrections.length > 0) {\n sections.push(`Recent corrections:\\n- ${recentCorrections.join('\\n- ')}`);\n }\n const pendingActions = input.kernel.memory.pendingActions\n .filter((item) => item.status !== 'done')\n .slice(-3)\n .map((item) => item.content);\n if (pendingActions.length > 0) {\n sections.push(`Open pending actions:\\n- ${pendingActions.join('\\n- ')}`);\n }\n }\n\n return sections.join('\\n\\n');\n}\n\nfunction normalizeInterpretation(input: Record<string, unknown>): TurnInterpretation | null {\n const kind = normalizeTurnKind(input.kind);\n if (!kind) {\n return null;\n }\n\n const shouldPersist = Boolean(input.shouldPersist);\n const persistenceKind = normalizePersistenceKind(input.persistenceKind);\n const persistStrategy = normalizePersistStrategy(input.persistStrategy);\n const confidence = clampConfidence(input.confidence);\n\n return {\n kind,\n shouldPersist,\n persistenceKind: shouldPersist ? persistenceKind ?? defaultPersistenceKind(kind) : undefined,\n persistStrategy: shouldPersist ? persistStrategy : undefined,\n content: typeof input.content === 'string' && input.content.trim()\n ? input.content.trim()\n : undefined,\n invalidates: Array.isArray(input.invalidates)\n ? input.invalidates.filter((item): item is string => typeof item === 'string' && item.trim().length > 0)\n : undefined,\n confidence,\n suggestedMode: typeof input.suggestedMode === 'string' ? input.suggestedMode as TurnInterpretation['suggestedMode'] : undefined,\n suggestedSkills: normalizeStringArray(input.suggestedSkills),\n suggestedPromptProfile: typeof input.suggestedPromptProfile === 'string' && input.suggestedPromptProfile.trim()\n ? input.suggestedPromptProfile.trim()\n : undefined,\n suggestedToolCapabilities: normalizeStringArray(input.suggestedToolCapabilities),\n rationale: typeof input.rationale === 'string' && input.rationale.trim()\n ? input.rationale.trim()\n : 'Structured default interpreter classification.',\n };\n}\n\nfunction interpretHeuristic(input: InterpreterInput): TurnInterpretation | null {\n const normalized = input.message.trim();\n if (!normalized) {\n return null;\n }\n const lower = normalized.toLowerCase();\n const correctionMarkers = [\n 'correction:',\n 'correct:',\n 'from now on',\n 'do not',\n 'don’t',\n 'dont',\n 'only answer',\n 'теперь',\n 'только',\n 'я имел в виду',\n 'не это',\n ];\n const isCorrectionLike = correctionMarkers.some((marker) => lower.includes(marker));\n if (!isCorrectionLike) {\n return {\n kind: 'follow_up',\n shouldPersist: false,\n confidence: 0.2,\n rationale: 'Fallback heuristic interpreter found no lasting-instruction markers.',\n };\n }\n const isConstraint = lower.includes('from now on')\n || lower.includes('only answer')\n || lower.includes('do not')\n || lower.includes('только')\n || lower.includes('не ');\n return {\n kind: isConstraint ? 'constraint' : 'correction',\n shouldPersist: true,\n persistenceKind: isConstraint ? 'constraint' : 'correction',\n content: normalized,\n invalidates: [],\n confidence: 0.55,\n rationale: 'Fallback heuristic interpreter matched correction markers.',\n };\n}\n\nfunction normalizeTurnKind(value: unknown): TurnKind | null {\n return value === 'new_task'\n || value === 'follow_up'\n || value === 'correction'\n || value === 'constraint'\n || value === 'mixed'\n ? value\n : null;\n}\n\nfunction normalizePersistenceKind(value: unknown): 'correction' | 'constraint' | undefined {\n return value === 'correction' || value === 'constraint' ? value : undefined;\n}\n\nfunction normalizePersistStrategy(value: unknown): 'record_directly' | 'explicit_commit' | undefined {\n return value === 'record_directly' || value === 'explicit_commit' ? value : undefined;\n}\n\nfunction defaultPersistenceKind(kind: TurnKind): 'correction' | 'constraint' | undefined {\n if (kind === 'constraint') {\n return 'constraint';\n }\n if (kind === 'correction' || kind === 'mixed') {\n return 'correction';\n }\n return undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const normalized = value.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction clampConfidence(value: unknown): number {\n const num = typeof value === 'number' ? value : Number(value);\n if (Number.isNaN(num)) {\n return 0.5;\n }\n return Math.min(1, Math.max(0, num));\n}\n","import type {\n AgentEvent,\n AgentMode,\n KernelState,\n PromptContextSelection,\n RepositoryFingerprints,\n RepositoryModel,\n RepositorySignal,\n RunHandoff,\n ToolCallRecord,\n ToolCapability,\n ToolResultArtifact,\n TurnInterpretation,\n} from '@kb-labs/agent-contracts';\nimport {\n applyMemoryCapabilities,\n compactKernelState,\n completePendingActions,\n createKernelState,\n ingestUserTurn,\n isCorrectionPendingAction,\n projectKernelPrompt,\n recordCorrection,\n recordRunHandoff,\n recordToolArtifact,\n summarizeAssistantTurn,\n} from '@kb-labs/agent-kernel';\nimport type { AgentSDK, RuntimeProfile } from '@kb-labs/agent-sdk';\nimport { SessionArtifactStore } from '@kb-labs/agent-store';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport { createDefaultPromptContextSelector } from './default-prompt-context-selector.js';\nimport {\n createBuiltInRepositoryProbes,\n createDefaultRepositoryDiagnosticsProvider,\n} from './default-repository-diagnostics.js';\nimport { createDefaultResponseRequirementsSelector } from './default-response-requirements-selector.js';\nimport { createDefaultSessionRecallResolver } from './default-session-recall-resolver.js';\nimport { createDefaultToolCapabilityResolver } from './default-tool-capability-resolver.js';\nimport { resolveRuntimeProfile, resolveRuntimeMode } from './profiles.js';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\nimport { createDefaultTurnInterpreter } from './default-turn-interpreter.js';\n\nexport { createDefaultResponseRequirementsSelector } from './default-response-requirements-selector.js';\nexport { resolveRuntimeMode, resolveRuntimeProfile } from './profiles.js';\n\nexport interface RunCompletionResult {\n persisted: boolean;\n validationResults: Array<{\n verdict: 'allow' | 'warn' | 'block';\n rationale: string;\n }>;\n artifactResults: unknown[];\n blockedByPolicy: boolean;\n}\n\nexport class RuntimeEngine {\n private kernel: KernelState | null = null;\n private activeProfile: RuntimeProfile | null = null;\n private repositoryModel: RepositoryModel | null = null;\n private activeToolCapabilities: ToolCapability[] = [];\n private readonly pendingToolInputs = new Map<string, { toolName: string; input: Record<string, unknown> }>();\n private lastResponseRequirements: RuntimeResponseRequirements | null = null;\n\n constructor(\n private readonly sdk: AgentSDK,\n private readonly store: SessionArtifactStore,\n ) {}\n\n async loadOrCreateKernel(input: {\n sessionId: string;\n workingDir: string;\n mode?: AgentMode;\n task: string;\n }): Promise<KernelState> {\n const existing = await this.store.loadKernelState(input.sessionId);\n const runtimeMode = resolveRuntimeMode(input.mode);\n const state = existing ?? createKernelState({\n sessionId: input.sessionId,\n workingDir: input.workingDir,\n mode: runtimeMode,\n task: input.task,\n });\n this.activeProfile = resolveRuntimeProfile(this.sdk, runtimeMode);\n this.repositoryModel = await this.describeRepository({\n workingDir: input.workingDir,\n mode: runtimeMode,\n profile: this.activeProfile,\n kernel: state,\n });\n this.activeToolCapabilities = await this.resolveToolCapabilities({\n workingDir: input.workingDir,\n mode: runtimeMode,\n profile: this.activeProfile,\n repositoryModel: this.repositoryModel,\n kernel: state,\n });\n const interpretation = await this.interpretTurn({\n sessionId: input.sessionId,\n mode: runtimeMode,\n message: input.task,\n kernel: state,\n });\n const normalizedInterpretation = normalizeInterpretationPersistence(interpretation, Boolean(existing));\n this.kernel = ingestUserTurn(state, {\n content: input.task,\n interpretation: normalizedInterpretation,\n });\n this.kernel = await applyMemoryCapabilities(this.kernel, this.sdk.memoryCapabilities);\n await this.store.saveKernelState(input.sessionId, this.kernel);\n await this.store.appendTurn(input.sessionId, {\n id: `turn-user-${Date.now()}`,\n sessionId: input.sessionId,\n role: 'user',\n content: input.task,\n timestamp: new Date().toISOString(),\n metadata: normalizedInterpretation ? { interpretation: normalizedInterpretation } : undefined,\n });\n for (const observer of this.sdk.observers) {\n await observer.onKernelUpdated?.(this.kernel);\n }\n return this.kernel;\n }\n\n getKernel(): KernelState | null {\n return this.kernel;\n }\n\n getLastResponseRequirements(): RuntimeResponseRequirements | null {\n return this.lastResponseRequirements;\n }\n\n getActiveProfile(): RuntimeProfile | null {\n return this.activeProfile;\n }\n\n getRepositoryModel(): RepositoryModel | null {\n return this.repositoryModel;\n }\n\n getActiveToolCapabilities(): ToolCapability[] {\n return [...this.activeToolCapabilities];\n }\n\n async tryResolveDirectAnswer(messages: LLMMessage[]): Promise<{\n answer: string;\n confidence: number;\n filesRead: string[];\n } | null> {\n if (!this.kernel) {\n return null;\n }\n const task = getCurrentTaskForMessages(this.kernel, messages);\n const toolRecords = await this.store.loadToolRecords(this.kernel.sessionId, 300);\n const requirements = await this.selectResponseRequirements(this.kernel, messages);\n const resolvers = [\n ...(this.activeProfile?.sessionRecallResolvers ?? []),\n ...this.sdk.sessionRecallResolvers,\n createDefaultSessionRecallResolver(),\n ];\n for (const resolver of resolvers) {\n const resolution = await resolver.resolve({\n state: this.kernel,\n messages,\n task,\n toolRecords,\n responseRequirements: requirements,\n });\n if (resolution) {\n return {\n answer: resolution.answer,\n confidence: resolution.confidence,\n filesRead: resolution.filesRead ?? [],\n };\n }\n }\n return null;\n }\n\n async projectPrompt(messages: LLMMessage[]): Promise<string> {\n if (!this.kernel) {\n return '';\n }\n const responseRequirements = await this.selectResponseRequirements(this.kernel, messages);\n const selection = await this.selectPromptContext(this.kernel, messages, responseRequirements);\n const promptProjectors = [\n createRepositoryContextProjector(),\n ...(this.activeProfile?.promptProjectors ?? []),\n ...this.sdk.promptProjectors,\n ];\n return projectKernelPrompt(this.kernel, messages, promptProjectors, selection, {\n repositoryModel: this.repositoryModel,\n toolCapabilities: this.activeToolCapabilities,\n });\n }\n\n async recordEvent(event: AgentEvent): Promise<void> {\n if (!this.kernel?.sessionId) {\n return;\n }\n const sessionId = this.kernel.sessionId;\n if (event.type === 'tool:start') {\n this.pendingToolInputs.set(\n event.toolCallId || `${event.runId || 'run'}:${event.data.toolName}`,\n {\n toolName: event.data.toolName,\n input: normalizeToolInput(event.data.input),\n },\n );\n }\n if (event.type === 'tool:end') {\n const toolName = event.data.toolName;\n if (shouldRefreshKernelFromStore(toolName)) {\n const persisted = await this.store.loadKernelState(sessionId);\n if (persisted) {\n this.kernel = persisted;\n }\n }\n const pendingKey = event.toolCallId || `${event.runId || 'run'}:${toolName}`;\n const pending = this.pendingToolInputs.get(pendingKey);\n const input = pending?.input ?? {};\n this.pendingToolInputs.delete(pendingKey);\n const toolInputSummary = summarizeToolInput(toolName, input);\n const summary = typeof event.data.output === 'string'\n ? event.data.output\n : event.data.metadata?.summary\n ? String(event.data.metadata.summary)\n : `${toolName} completed`;\n const metadata = event.data.metadata\n ? event.data.metadata as unknown as Record<string, unknown>\n : undefined;\n const shouldPromote = shouldPromoteToolEvidence(toolName, summary, metadata, input, event.data.success);\n const evidenceSummary = shouldPromote\n ? buildKernelEvidenceSummary(toolName, summary, metadata, input, toolInputSummary)\n : '';\n const artifact: ToolResultArtifact = {\n status: event.data.success ? 'success' : 'error',\n summary,\n artifact: {\n ...metadata,\n toolName,\n toolInputSummary,\n },\n evidence: shouldPromote ? [{\n id: `ev-${event.timestamp}-${toolName}`,\n summary: summarizeToolEvidence(evidenceSummary, toolInputSummary),\n source: toolName,\n createdAt: event.timestamp,\n toolName,\n toolInputSummary,\n artifact: metadata,\n filePaths: extractFilePaths(metadata),\n pinned: shouldPinToolEvidence(toolName, input),\n }] : [],\n mutations: {\n filesRead: extractFilePaths(metadata),\n },\n };\n this.kernel = recordToolArtifact(this.kernel, artifact);\n if (event.data.success && (toolName === 'memory_correction' || toolName === 'memory_constraint')) {\n this.kernel = completePendingActions(this.kernel, isCorrectionPendingAction);\n }\n const record: ToolCallRecord = {\n id: event.toolCallId || `tool-${Date.now()}`,\n sessionId,\n runId: event.runId,\n timestamp: event.timestamp,\n toolName,\n input,\n artifact,\n };\n await this.store.appendToolRecord(sessionId, record);\n for (const observer of this.sdk.observers) {\n await observer.onToolCall?.(record);\n }\n }\n if (event.type === 'status:change') {\n const message = typeof event.data?.message === 'string' ? event.data.message : '';\n if (/correction/i.test(message)) {\n this.kernel = recordCorrection(this.kernel, message);\n }\n }\n await this.store.saveKernelState(sessionId, this.kernel);\n }\n\n async completeRun(input: {\n sessionId: string;\n runId?: string;\n mode?: AgentMode;\n summary: string;\n filesRead?: string[];\n filesModified?: string[];\n filesCreated?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<RunCompletionResult> {\n if (!this.kernel) {\n return {\n persisted: false,\n validationResults: [],\n artifactResults: [],\n blockedByPolicy: false,\n };\n }\n const validationResults = await Promise.all(\n (this.activeProfile?.outputValidators ?? []).map((validator) =>\n validator.validate({\n state: this.kernel!,\n answer: input.summary,\n mode: resolveRuntimeMode(input.mode),\n metadata: input.metadata,\n }),\n ),\n );\n const normalizedValidationResults = validationResults.filter(\n (result): result is NonNullable<typeof result> => Boolean(result),\n );\n const blockedByPolicy =\n (this.activeProfile?.completionPolicy?.requireValidatorsToPass ?? false)\n && normalizedValidationResults.some((result) => result.verdict === 'block');\n if (blockedByPolicy) {\n return {\n persisted: false,\n validationResults: normalizedValidationResults,\n artifactResults: [],\n blockedByPolicy: true,\n };\n }\n this.kernel = summarizeAssistantTurn(this.kernel, input.summary);\n const handoff: RunHandoff = {\n runId: input.runId || `run-${Date.now()}`,\n mode: resolveRuntimeMode(input.mode),\n createdAt: new Date().toISOString(),\n summary: input.summary,\n filesRead: input.filesRead,\n filesModified: input.filesModified,\n filesCreated: input.filesCreated,\n };\n this.kernel = recordRunHandoff(this.kernel, handoff);\n await this.store.appendTurn(input.sessionId, {\n id: `turn-assistant-${Date.now()}`,\n sessionId: input.sessionId,\n runId: input.runId,\n role: 'assistant',\n content: input.summary,\n timestamp: new Date().toISOString(),\n });\n await this.store.appendRunRecord(input.sessionId, {\n runId: handoff.runId,\n mode: handoff.mode,\n summary: handoff.summary,\n createdAt: handoff.createdAt,\n filesRead: handoff.filesRead,\n filesModified: handoff.filesModified,\n filesCreated: handoff.filesCreated,\n });\n const [turnCount, toolCallCount] = await Promise.all([\n this.store.countArtifactLines(input.sessionId, 'turns.jsonl'),\n this.store.countArtifactLines(input.sessionId, 'tool-ledger.jsonl'),\n ]);\n const narrativeSummary = await generateNarrativeRollupSummary(this.kernel, {\n turnCount,\n toolCallCount,\n });\n this.kernel = compactKernelState(this.kernel, {\n turnCount,\n toolCallCount,\n narrativeSummary,\n });\n await this.store.saveKernelState(input.sessionId, this.kernel);\n const artifactResults = await Promise.all(\n (this.activeProfile?.artifactWriters ?? []).map((writer) =>\n writer.write({\n state: this.kernel!,\n sessionId: input.sessionId,\n summary: input.summary,\n runId: input.runId,\n metadata: input.metadata,\n }),\n ),\n );\n for (const observer of this.sdk.observers) {\n await observer.onKernelUpdated?.(this.kernel);\n }\n return {\n persisted: true,\n validationResults: normalizedValidationResults,\n artifactResults,\n blockedByPolicy: false,\n };\n }\n\n private async interpretTurn(input: {\n sessionId?: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n message: string;\n kernel: KernelState | null;\n }): Promise<TurnInterpretation | null> {\n const interpreters = [\n ...this.sdk.turnInterpreters.filter((interpreter) => interpreter.supports(input.mode)),\n createDefaultTurnInterpreter(),\n ];\n let best: TurnInterpretation | null = null;\n for (const interpreter of interpreters) {\n const result = await interpreter.interpret(input);\n if (!result) {\n continue;\n }\n if (!best || result.confidence > best.confidence) {\n best = result;\n }\n if (result.confidence >= 0.9) {\n return result;\n }\n }\n return best;\n }\n\n private async selectPromptContext(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n ): Promise<PromptContextSelection> {\n const selectors = [\n ...(this.activeProfile?.promptContextSelectors ?? []),\n ...this.sdk.promptContextSelectors,\n createDefaultPromptContextSelector(),\n ];\n let selected: PromptContextSelection | null = null;\n for (const selector of selectors) {\n const result = await selector.select({ state, messages, responseRequirements });\n if (result) {\n selected = result;\n }\n }\n if (!selected) {\n throw new Error('Prompt context selection failed to produce a result');\n }\n return selected;\n }\n\n private async selectResponseRequirements(\n state: KernelState,\n messages: LLMMessage[],\n ): Promise<RuntimeResponseRequirements> {\n const task = getCurrentTaskForMessages(state, messages);\n const selectors = [\n ...(this.activeProfile?.responseRequirementsSelectors ?? []),\n ...this.sdk.responseRequirementsSelectors,\n createDefaultResponseRequirementsSelector(),\n ];\n let selected: RuntimeResponseRequirements | null = null;\n for (const selector of selectors) {\n const result = await selector.select({ state, messages, task });\n if (!selected || result.requirements.maxUnsupportedClaims < selected.requirements.maxUnsupportedClaims) {\n selected = result;\n }\n }\n this.lastResponseRequirements = selected;\n return selected ?? {\n requirements: {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: false,\n needsFileBackedClaims: false,\n allowsInference: true,\n maxUnsupportedClaims: 1,\n },\n rationale: 'Default runtime response requirements.',\n };\n }\n\n private async describeRepository(input: {\n workingDir: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n profile: RuntimeProfile | null;\n kernel: KernelState | null;\n }): Promise<RepositoryModel | null> {\n const providers = [\n createDefaultRepositoryDiagnosticsProvider({\n probes: [\n ...createBuiltInRepositoryProbes(),\n ...this.sdk.repositoryProbes,\n ...(input.profile?.repositoryProbes ?? []),\n ],\n }),\n ...this.sdk.repositoryDiagnosticsProviders,\n ...(input.profile?.repositoryDiagnosticsProviders ?? []),\n ];\n let model: RepositoryModel | null = null;\n for (const provider of providers) {\n const next = await provider.describe(input);\n if (!next) {\n continue;\n }\n model = model ? mergeRepositoryModels(model, next) : next;\n }\n return model;\n }\n\n private async resolveToolCapabilities(input: {\n workingDir: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n profile: RuntimeProfile | null;\n repositoryModel: RepositoryModel | null;\n kernel: KernelState | null;\n }): Promise<ToolCapability[]> {\n const resolvers = [\n createDefaultToolCapabilityResolver(),\n ...this.sdk.toolCapabilityResolvers,\n ...(input.profile?.toolCapabilityResolvers ?? []),\n ];\n const capabilities = new Set<ToolCapability>();\n for (const resolver of resolvers) {\n const resolved = await resolver.resolve(input);\n for (const capability of resolved ?? []) {\n capabilities.add(capability);\n }\n }\n const blocked = new Set(input.profile?.toolPolicy?.blockedCapabilities ?? []);\n const allowed = input.profile?.toolPolicy?.allowedCapabilities;\n const filtered = Array.from(capabilities).filter((capability) => !blocked.has(capability));\n return allowed?.length\n ? filtered.filter((capability) => allowed.includes(capability))\n : filtered;\n }\n}\n\nfunction normalizeInterpretationPersistence(\n interpretation: TurnInterpretation | null,\n hasExistingSession: boolean,\n): TurnInterpretation | null {\n if (!interpretation || !interpretation.shouldPersist || interpretation.persistStrategy) {\n return interpretation;\n }\n\n return {\n ...interpretation,\n persistStrategy: hasExistingSession ? 'explicit_commit' : 'record_directly',\n };\n}\n\nfunction mergeRepositoryModels(\n base: RepositoryModel,\n next: RepositoryModel,\n): RepositoryModel {\n return {\n topology: next.topology !== 'unknown' ? next.topology : base.topology,\n stack: {\n languages: uniqueArray([...base.stack.languages, ...next.stack.languages]),\n frameworks: uniqueArray([...base.stack.frameworks, ...next.stack.frameworks]),\n runtimes: uniqueArray([...base.stack.runtimes, ...next.stack.runtimes]),\n packageManagers: uniqueArray([...base.stack.packageManagers, ...next.stack.packageManagers]),\n buildTools: uniqueArray([...base.stack.buildTools, ...next.stack.buildTools]),\n testTools: uniqueArray([...base.stack.testTools, ...next.stack.testTools]),\n },\n fingerprints: mergeFingerprints(base.fingerprints, next.fingerprints),\n workspace: {\n rootPath: next.workspace.rootPath || base.workspace.rootPath,\n packageRoots: uniqueArray([...base.workspace.packageRoots, ...next.workspace.packageRoots]),\n appRoots: uniqueArray([...base.workspace.appRoots, ...next.workspace.appRoots]),\n libraryRoots: uniqueArray([...base.workspace.libraryRoots, ...next.workspace.libraryRoots]),\n infraRoots: uniqueArray([...base.workspace.infraRoots, ...next.workspace.infraRoots]),\n docsRoots: uniqueArray([...base.workspace.docsRoots, ...next.workspace.docsRoots]),\n },\n conventions: {\n hasAdr: base.conventions.hasAdr || next.conventions.hasAdr,\n hasOpenApi: base.conventions.hasOpenApi || next.conventions.hasOpenApi,\n hasCi: base.conventions.hasCi || next.conventions.hasCi,\n hasLinting: base.conventions.hasLinting || next.conventions.hasLinting,\n hasFormatting: base.conventions.hasFormatting || next.conventions.hasFormatting,\n },\n riskSignals: uniqueArray([...base.riskSignals, ...next.riskSignals]),\n detectedAt: next.detectedAt,\n sources: uniqueArray([...base.sources, ...next.sources]),\n };\n}\n\nfunction mergeFingerprints(\n base: RepositoryFingerprints,\n next: RepositoryFingerprints,\n): RepositoryFingerprints {\n return {\n ecosystems: mergeSignalLists(base.ecosystems, next.ecosystems),\n languages: mergeSignalLists(base.languages, next.languages),\n frameworks: mergeSignalLists(base.frameworks, next.frameworks),\n runtimes: mergeSignalLists(base.runtimes, next.runtimes),\n packageManagers: mergeSignalLists(base.packageManagers, next.packageManagers),\n buildTools: mergeSignalLists(base.buildTools, next.buildTools),\n testTools: mergeSignalLists(base.testTools, next.testTools),\n };\n}\n\nfunction mergeSignalLists(\n base: RepositorySignal[],\n next: RepositorySignal[],\n): RepositorySignal[] {\n const merged = new Map<string, RepositorySignal>();\n for (const signal of [...base, ...next]) {\n const current = merged.get(signal.name);\n if (!current || signal.confidence > current.confidence) {\n merged.set(signal.name, {\n ...signal,\n sources: uniqueArray([...(current?.sources ?? []), ...signal.sources]),\n });\n } else {\n current.sources = uniqueArray([...current.sources, ...signal.sources]);\n }\n }\n return Array.from(merged.values()).sort((left, right) => right.confidence - left.confidence || left.name.localeCompare(right.name));\n}\n\nfunction getCurrentTaskForMessages(state: KernelState, messages: LLMMessage[]): string {\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n return typeof lastUserMessage?.content === 'string'\n ? lastUserMessage.content\n : state.currentTask;\n}\n\nfunction normalizeToolInput(input: unknown): Record<string, unknown> {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n return {};\n }\n return input as Record<string, unknown>;\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n\nfunction createRepositoryContextProjector() {\n return {\n id: 'repository-context-projector',\n project(input: {\n repositoryModel?: RepositoryModel | null;\n toolCapabilities?: ToolCapability[];\n }): string {\n const model = input.repositoryModel;\n if (!model) {\n return '';\n }\n\n const lines: string[] = ['# Repository Context'];\n lines.push(`- Topology: ${model.topology}`);\n\n const primarySignals = [\n model.fingerprints.ecosystems[0],\n model.fingerprints.languages[0],\n ].filter(Boolean) as RepositorySignal[];\n if (primarySignals.length > 0) {\n lines.push(\n `- Primary signals: ${primarySignals.map((signal) => `${signal.name} (${signal.confidence.toFixed(2)})`).join(', ')}`,\n );\n }\n\n if (model.stack.frameworks.length > 0) {\n lines.push(`- Frameworks: ${model.stack.frameworks.join(', ')}`);\n }\n if (model.stack.packageManagers.length > 0) {\n lines.push(`- Package managers: ${model.stack.packageManagers.join(', ')}`);\n }\n if (model.stack.buildTools.length > 0) {\n lines.push(`- Build tools: ${model.stack.buildTools.join(', ')}`);\n }\n if ((input.toolCapabilities ?? []).length > 0) {\n lines.push(`- Active tool capabilities: ${input.toolCapabilities?.join(', ')}`);\n }\n if (model.workspace.appRoots.length > 0 || model.workspace.packageRoots.length > 0 || model.workspace.libraryRoots.length > 0) {\n const layoutParts = [\n ...(model.workspace.packageRoots.length > 0 ? [`packages=${model.workspace.packageRoots.length}`] : []),\n ...(model.workspace.appRoots.length > 0 ? [`apps=${model.workspace.appRoots.length}`] : []),\n ...(model.workspace.libraryRoots.length > 0 ? [`libs=${model.workspace.libraryRoots.length}`] : []),\n ];\n if (layoutParts.length > 0) {\n lines.push(`- Workspace layout: ${layoutParts.join(', ')}`);\n }\n }\n\n return lines.join('\\n');\n },\n };\n}\n\nfunction extractFilePaths(metadata?: Record<string, unknown>): string[] | undefined {\n const direct = metadata?.filePath;\n if (typeof direct === 'string' && direct.trim()) {\n return [direct];\n }\n const paths = metadata?.filePaths;\n if (Array.isArray(paths)) {\n const normalized = paths.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n return normalized.length > 0 ? normalized : undefined;\n }\n return undefined;\n}\n\nfunction summarizeToolInput(toolName: string, input: Record<string, unknown>): string | undefined {\n if (typeof input.command === 'string' && input.command.trim()) {\n return input.command;\n }\n if (typeof input.path === 'string' && input.path.trim()) {\n return input.path;\n }\n if (typeof input.pattern === 'string' && input.pattern.trim()) {\n return input.pattern;\n }\n if (typeof input.query === 'string' && input.query.trim()) {\n return input.query;\n }\n if (typeof input.filePath === 'string' && input.filePath.trim()) {\n return input.filePath;\n }\n const firstPrimitive = Object.entries(input).find(([, value]) =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean',\n );\n if (firstPrimitive) {\n return `${firstPrimitive[0]}=${String(firstPrimitive[1])}`;\n }\n return toolName;\n}\n\nfunction summarizeToolEvidence(summary: string, toolInputSummary?: string): string {\n if (!summary.trim()) {\n return toolInputSummary ? `Executed ${toolInputSummary}` : 'Tool executed successfully';\n }\n return summary;\n}\n\nfunction shouldPromoteToolEvidence(\n toolName: string,\n summary: string,\n metadata: Record<string, unknown> | undefined,\n input: Record<string, unknown>,\n success: boolean,\n): boolean {\n if (toolName === 'report') {\n return false;\n }\n if (!success && toolName !== 'memory_correction' && toolName !== 'memory_constraint' && toolName !== 'shell_exec') {\n return false;\n }\n if (typeof metadata?.filePath === 'string' || Array.isArray(metadata?.filePaths)) {\n return true;\n }\n if (typeof input.command === 'string' && input.command.trim()) {\n return true;\n }\n if (typeof input.path === 'string' && input.path.trim()) {\n return true;\n }\n return summary.trim().length > 0;\n}\n\nconst MAX_EVIDENCE_SUMMARY_CHARS = 240;\n\nfunction buildKernelEvidenceSummary(\n toolName: string,\n summary: string,\n metadata: Record<string, unknown> | undefined,\n input: Record<string, unknown>,\n toolInputSummary?: string,\n): string {\n if (toolName === 'fs_read') {\n const filePath = typeof metadata?.filePath === 'string' ? metadata.filePath : toolInputSummary;\n const readFrom = typeof metadata?.readFrom === 'number' ? metadata.readFrom : undefined;\n const readTo = typeof metadata?.readTo === 'number' ? metadata.readTo : undefined;\n const totalLines = typeof metadata?.totalLines === 'number' ? metadata.totalLines : undefined;\n const range = readFrom && readTo ? ` lines ${readFrom}-${readTo}` : '';\n const total = totalLines ? ` of ${totalLines}` : '';\n return truncateEvidenceSummary(`Read ${filePath ?? 'file'}${range}${total}.`, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'grep_search') {\n const matches = typeof metadata?.totalMatches === 'number' ? metadata.totalMatches : undefined;\n const pattern = toolInputSummary ?? 'pattern';\n const base = matches !== undefined\n ? `Found ${matches} match(es) for \"${pattern}\".`\n : `Searched for \"${pattern}\".`;\n const refs = extractMatchReferences(summary, 3);\n return truncateEvidenceSummary(refs.length > 0 ? `${base} Top refs: ${refs.join(', ')}` : base, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'fs_list') {\n const targetPath = typeof metadata?.path === 'string' ? metadata.path : toolInputSummary;\n const directories = typeof metadata?.directoryCount === 'number' ? metadata.directoryCount : undefined;\n const files = typeof metadata?.fileCount === 'number' ? metadata.fileCount : undefined;\n return truncateEvidenceSummary(\n `Listed ${targetPath ?? 'directory'}${directories !== undefined || files !== undefined ? ` (${directories ?? 0} dirs, ${files ?? 0} files)` : ''}.`,\n MAX_EVIDENCE_SUMMARY_CHARS,\n );\n }\n\n if (toolName === 'shell_exec') {\n const compactOutput = compactMultilineSummary(summary, 4);\n const base = toolInputSummary ? `Command ${toolInputSummary}` : 'Shell command';\n return truncateEvidenceSummary(`${base} -> ${compactOutput}`, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'memory_correction' || toolName === 'memory_constraint') {\n return truncateEvidenceSummary(summary, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n return truncateEvidenceSummary(summary, MAX_EVIDENCE_SUMMARY_CHARS);\n}\n\nfunction truncateEvidenceSummary(summary: string, maxChars: number): string {\n const normalized = summary.replace(/\\s+\\n/g, '\\n').trim();\n if (normalized.length <= maxChars) {\n return normalized;\n }\n return `${normalized.slice(0, maxChars - 1).trimEnd()}…`;\n}\n\nfunction compactMultilineSummary(summary: string, maxLines: number): string {\n const lines = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean)\n .slice(0, maxLines);\n return lines.join(' | ');\n}\n\nfunction extractMatchReferences(summary: string, limit: number): string[] {\n const refs = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => /:\\d+/.test(line) && !line.startsWith('['))\n .slice(0, limit);\n return refs;\n}\n\nfunction shouldPinToolEvidence(toolName: string, input: Record<string, unknown>): boolean {\n return toolName === 'shell_exec' && typeof input.command === 'string' && input.command.trim().length > 0;\n}\n\nfunction shouldRefreshKernelFromStore(toolName: string): boolean {\n return toolName === 'memory_correction' || toolName === 'memory_constraint';\n}\n\nasync function generateNarrativeRollupSummary(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): Promise<string | undefined> {\n if (!shouldGenerateNarrativeRollup(kernel, stats)) {\n return undefined;\n }\n\n const fallback = createDeterministicNarrativeSummary(kernel, stats);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(\n buildRollupPrompt(kernel, stats),\n {\n systemPrompt: [\n 'Write a compact session rollup for an AI coding agent.',\n 'Use only the provided structured state.',\n 'Do not invent facts.',\n 'Mention only durable context that helps the next turn.',\n 'Keep it under 90 words.',\n ].join(' '),\n temperature: 0.1,\n maxTokens: 140,\n },\n );\n const text = response.content.trim();\n return text || fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction shouldGenerateNarrativeRollup(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): boolean {\n return stats.turnCount >= 8 || stats.toolCallCount >= 6 || kernel.memory.evidence.length >= 6;\n}\n\nfunction buildRollupPrompt(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): string {\n const sections = [\n `Objective: ${kernel.objective ?? kernel.currentTask}`,\n `Session stats: ${stats.turnCount} turns, ${stats.toolCallCount} tool calls`,\n ];\n\n if (kernel.constraints.length > 0) {\n sections.push(`Constraints:\\n- ${kernel.constraints.join('\\n- ')}`);\n }\n const corrections = kernel.memory.corrections.slice(-3).map((item) => item.content);\n if (corrections.length > 0) {\n sections.push(`Corrections:\\n- ${corrections.join('\\n- ')}`);\n }\n const decisions = kernel.memory.decisions.slice(-3).map((item) => item.content);\n if (decisions.length > 0) {\n sections.push(`Decisions:\\n- ${decisions.join('\\n- ')}`);\n }\n const evidence = kernel.memory.evidence\n .slice(-4)\n .map((item) => `${item.toolName ?? item.source}${item.toolInputSummary ? ` (${item.toolInputSummary})` : ''}: ${item.summary}`);\n if (evidence.length > 0) {\n sections.push(`Evidence:\\n- ${evidence.join('\\n- ')}`);\n }\n if (kernel.handoff?.summary) {\n sections.push(`Latest handoff:\\n${kernel.handoff.summary}`);\n }\n\n return sections.join('\\n\\n');\n}\n\nfunction createDeterministicNarrativeSummary(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): string {\n const parts = [\n `Long session in progress with ${stats.turnCount} turns and ${stats.toolCallCount} tool calls.`,\n ];\n if (kernel.constraints.length > 0) {\n parts.push(`Keep honoring constraints: ${kernel.constraints.join('; ')}.`);\n }\n const anchors = kernel.memory.evidence\n .slice(-2)\n .map((item) => `${item.toolName ?? item.source}${item.toolInputSummary ? ` (${item.toolInputSummary})` : ''}`);\n if (anchors.length > 0) {\n parts.push(`Most recent anchors: ${anchors.join('; ')}.`);\n }\n if (kernel.handoff?.summary) {\n parts.push(`Latest outcome: ${kernel.handoff.summary}`);\n }\n return parts.join(' ');\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/default-prompt-context-selector.ts","../src/default-repository-diagnostics.ts","../src/default-response-requirements-selector.ts","../src/default-session-recall-resolver.ts","../src/default-tool-capability-resolver.ts","../src/profiles.ts","../src/default-turn-interpreter.ts","../src/index.ts"],"names":["useLLM","extractJsonObject","uniqueArray","mergeFingerprints"],"mappings":"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","file":"index.js","sourcesContent":["import type { KernelState, PromptContextSelection } from '@kb-labs/agent-contracts';\nimport type { PromptContextSelector } from '@kb-labs/agent-sdk';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport { createDefaultPromptContextSelection } from '@kb-labs/agent-kernel';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\n\nconst DEFAULT_SELECTOR_SYSTEM_PROMPT = [\n 'Select which structured memory sections should be shown to the model for the next answer.',\n 'Prefer evidence and tool-usage sections for recall questions about files, commands, previous runs, or what was verified.',\n 'Avoid including working summary when it may override direct evidence for the current question.',\n 'Return strict JSON only.',\n].join(' ');\n\nexport function createDefaultPromptContextSelector(): PromptContextSelector {\n return {\n id: 'default-prompt-context-selector',\n async select(input: {\n state: KernelState;\n messages: LLMMessage[];\n responseRequirements?: RuntimeResponseRequirements;\n }): Promise<PromptContextSelection> {\n const fallback = deterministicPromptContextSelection(input.state, input.messages, input.responseRequirements);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(buildSelectionPrompt(input.state, input.messages, input.responseRequirements), {\n systemPrompt: DEFAULT_SELECTOR_SYSTEM_PROMPT,\n temperature: 0,\n maxTokens: 220,\n });\n return normalizeSelection(response.content, fallback);\n } catch {\n return fallback;\n }\n },\n };\n}\n\nfunction buildSelectionPrompt(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n): string {\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n return JSON.stringify({\n currentUserMessage: typeof lastUserMessage?.content === 'string' ? lastUserMessage.content : '',\n objective: state.objective ?? state.currentTask,\n constraints: state.constraints,\n hasRollup: Boolean(state.rollup?.summary),\n latestSummary: truncateText(state.memory.latestSummary ?? '', 400),\n recentEvidence: state.memory.evidence.slice(-6).map((item) => ({\n toolName: item.toolName ?? item.source,\n toolInputSummary: item.toolInputSummary,\n summary: item.summary,\n })),\n pendingActions: state.memory.pendingActions.filter((item) => item.status !== 'done').slice(-5).map((item) => item.content),\n responseRequirements,\n schema: {\n includeObjective: 'boolean',\n includeSessionRollup: 'boolean',\n includeConstraints: 'boolean',\n includeRoutingHints: 'boolean',\n includeCorrections: 'boolean',\n includeDecisions: 'boolean',\n includeEvidence: 'boolean',\n includePreviousRunToolUsage: 'boolean',\n includePreviousRunHandoff: 'boolean',\n includeWorkingSummary: 'boolean',\n includePendingActions: 'boolean',\n correctionWindow: 'number',\n decisionWindow: 'number',\n evidenceWindow: 'number',\n toolUsageWindow: 'number',\n pendingActionWindow: 'number',\n rationale: 'string',\n },\n }, null, 2);\n}\n\nfunction normalizeSelection(content: string, fallback: PromptContextSelection): PromptContextSelection {\n const parsed = extractJsonObject(content);\n if (!parsed) {\n return fallback;\n }\n\n return {\n includeObjective: asBoolean(parsed.includeObjective, fallback.includeObjective),\n includeSessionRollup: asBoolean(parsed.includeSessionRollup, fallback.includeSessionRollup),\n includeConstraints: asBoolean(parsed.includeConstraints, fallback.includeConstraints),\n includeRoutingHints: asBoolean(parsed.includeRoutingHints, fallback.includeRoutingHints),\n includeCorrections: asBoolean(parsed.includeCorrections, fallback.includeCorrections),\n includeDecisions: asBoolean(parsed.includeDecisions, fallback.includeDecisions),\n includeEvidence: asBoolean(parsed.includeEvidence, fallback.includeEvidence),\n includePreviousRunToolUsage: asBoolean(parsed.includePreviousRunToolUsage, fallback.includePreviousRunToolUsage),\n includePreviousRunHandoff: asBoolean(parsed.includePreviousRunHandoff, fallback.includePreviousRunHandoff),\n includeWorkingSummary: asBoolean(parsed.includeWorkingSummary, fallback.includeWorkingSummary),\n includePendingActions: asBoolean(parsed.includePendingActions, fallback.includePendingActions),\n correctionWindow: asNumber(parsed.correctionWindow, fallback.correctionWindow),\n decisionWindow: asNumber(parsed.decisionWindow, fallback.decisionWindow),\n evidenceWindow: asNumber(parsed.evidenceWindow, fallback.evidenceWindow),\n toolUsageWindow: asNumber(parsed.toolUsageWindow, fallback.toolUsageWindow),\n pendingActionWindow: asNumber(parsed.pendingActionWindow, fallback.pendingActionWindow),\n rationale: typeof parsed.rationale === 'string' && parsed.rationale.trim() ? parsed.rationale.trim() : fallback.rationale,\n };\n}\n\nfunction deterministicPromptContextSelection(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n): PromptContextSelection {\n const selection = createDefaultPromptContextSelection(state);\n if (responseRequirements?.requirements.allowsMemoryOnlyRecall) {\n return {\n ...selection,\n includeSessionRollup: false,\n includeDecisions: false,\n includePreviousRunHandoff: false,\n includeWorkingSummary: false,\n includeEvidence: true,\n includePreviousRunToolUsage: true,\n evidenceWindow: Math.max(selection.evidenceWindow, 6),\n toolUsageWindow: Math.max(selection.toolUsageWindow, 5),\n rationale: responseRequirements.rationale,\n };\n }\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n const text = typeof lastUserMessage?.content === 'string' ? lastUserMessage.content.toLowerCase() : '';\n const recallSignal = /(which files|what files|inspected|read so far|previous run|previous shell command|latest shell command|used so far|what did you read|какие файлы|что ты читал|какую команду)/i.test(text);\n if (!recallSignal) {\n return selection;\n }\n return {\n ...selection,\n includeSessionRollup: false,\n includeDecisions: false,\n includePreviousRunHandoff: false,\n includeWorkingSummary: false,\n includeEvidence: true,\n includePreviousRunToolUsage: true,\n evidenceWindow: Math.max(selection.evidenceWindow, 6),\n toolUsageWindow: Math.max(selection.toolUsageWindow, 5),\n rationale: 'Recall-oriented selection prefers direct evidence and tool usage over prose summaries.',\n };\n}\n\nfunction extractJsonObject(content: string): Record<string, unknown> | null {\n const start = content.indexOf('{');\n const end = content.lastIndexOf('}');\n if (start === -1 || end === -1 || end <= start) {\n return null;\n }\n try {\n return JSON.parse(content.slice(start, end + 1)) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n\nfunction asBoolean(value: unknown, fallback: boolean): boolean {\n return typeof value === 'boolean' ? value : fallback;\n}\n\nfunction asNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction truncateText(value: string, maxChars: number): string {\n const normalized = value.trim();\n if (normalized.length <= maxChars) {\n return normalized;\n }\n return `${normalized.slice(0, maxChars - 1).trimEnd()}…`;\n}\n","import { readdir } from 'node:fs/promises';\nimport path from 'node:path';\nimport type {\n RepositoryDiagnosticsProvider,\n RepositoryProbe,\n RepositoryProbeObservation,\n} from '@kb-labs/agent-sdk';\nimport type {\n RepositoryFingerprints,\n RepositoryModel,\n RepositorySignal,\n RepositoryTopology,\n} from '@kb-labs/agent-contracts';\n\nexport function createBuiltInRepositoryProbes(): RepositoryProbe[] {\n return [\n createTopologyProbe(),\n createConventionsProbe(),\n createJavascriptTypescriptProbe(),\n createPythonProbe(),\n createGoProbe(),\n createPhpProbe(),\n createJvmProbe(),\n createRustProbe(),\n createRubyProbe(),\n createGenericLayoutProbe(),\n ];\n}\n\nexport function createDefaultRepositoryDiagnosticsProvider(input?: {\n probes?: RepositoryProbe[];\n}): RepositoryDiagnosticsProvider {\n return {\n id: 'default-repository-diagnostics',\n async describe({ workingDir, mode, profile, kernel }) {\n const fileNames = await safeReadDirNames(workingDir);\n const probes = input?.probes ?? createBuiltInRepositoryProbes();\n let observation: RepositoryProbeObservation = {};\n\n for (const probe of probes) {\n const next = await probe.probe({\n workingDir,\n mode,\n profile,\n kernel,\n fileNames,\n });\n if (next) {\n observation = mergeObservation(observation, next);\n }\n }\n\n return {\n topology: observation.topology ?? 'unknown',\n stack: buildStackFromFingerprints(observation.fingerprints),\n fingerprints: normalizeFingerprints(observation.fingerprints),\n workspace: {\n rootPath: workingDir,\n packageRoots: uniqueArray(observation.workspace?.packageRoots ?? []),\n appRoots: uniqueArray(observation.workspace?.appRoots ?? []),\n libraryRoots: uniqueArray(observation.workspace?.libraryRoots ?? []),\n infraRoots: uniqueArray(observation.workspace?.infraRoots ?? []),\n docsRoots: uniqueArray(observation.workspace?.docsRoots ?? []),\n },\n conventions: {\n hasAdr: observation.conventions?.hasAdr ?? false,\n hasOpenApi: observation.conventions?.hasOpenApi ?? false,\n hasCi: observation.conventions?.hasCi ?? false,\n hasLinting: observation.conventions?.hasLinting ?? false,\n hasFormatting: observation.conventions?.hasFormatting ?? false,\n },\n riskSignals: uniqueArray(observation.riskSignals ?? []),\n detectedAt: new Date().toISOString(),\n sources: uniqueArray(observation.sources ?? []),\n };\n },\n };\n}\n\nfunction createTopologyProbe(): RepositoryProbe {\n return {\n id: 'topology-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n let topology: RepositoryTopology = 'unknown';\n if (has('pnpm-workspace.yaml') || has('turbo.json') || has('nx.json') || has('lerna.json')) {\n topology = 'monorepo';\n } else if (has('package.json') || has('pyproject.toml') || has('go.mod') || has('composer.json') || has('Cargo.toml') || has('Gemfile') || has('pom.xml') || has('build.gradle')) {\n topology = 'single-package';\n }\n\n return {\n topology,\n sources: [\n ...[\n 'pnpm-workspace.yaml',\n 'turbo.json',\n 'nx.json',\n 'lerna.json',\n 'package.json',\n 'pyproject.toml',\n 'go.mod',\n 'composer.json',\n 'Cargo.toml',\n 'Gemfile',\n 'pom.xml',\n 'build.gradle',\n ]\n .filter((name) => has(name))\n .map((name) => path.join(workingDir, name)),\n ],\n };\n },\n };\n}\n\nfunction createConventionsProbe(): RepositoryProbe {\n return {\n id: 'conventions-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n return {\n conventions: {\n hasAdr: has('docs') || has('adr'),\n hasOpenApi: ['openapi.json', 'openapi.yaml', 'openapi.yml', 'swagger.json'].some(has),\n hasCi: has('.github') || has('.gitlab-ci.yml') || has('.circleci'),\n hasLinting: [\n '.eslintrc',\n '.eslintrc.js',\n '.eslintrc.cjs',\n '.flake8',\n 'ruff.toml',\n 'phpcs.xml',\n 'golangci.yml',\n 'golangci.yaml',\n ].some(has),\n hasFormatting: [\n '.prettierrc',\n '.prettierrc.js',\n 'prettier.config.js',\n 'ruff.toml',\n 'php-cs-fixer.php',\n '.php-cs-fixer.php',\n 'rustfmt.toml',\n ].some(has),\n },\n workspace: {\n docsRoots: has('docs') ? [path.join(workingDir, 'docs')] : [],\n },\n };\n },\n };\n}\n\nfunction createJavascriptTypescriptProbe(): RepositoryProbe {\n return {\n id: 'js-ts-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const fingerprints: Partial<RepositoryFingerprints> = {\n ecosystems: mergeSignals(\n createSignal(has('package.json'), 'javascript-ecosystem', 0.72, workingDir, 'package.json'),\n createSignal(has('tsconfig.json'), 'typescript-ecosystem', 0.84, workingDir, 'tsconfig.json'),\n ),\n languages: mergeSignals(\n createSignal(has('package.json'), 'javascript', 0.7, workingDir, 'package.json'),\n createSignal(has('tsconfig.json') || has('tsup.config.ts') || has('vite.config.ts'), 'typescript', 0.9, workingDir, 'tsconfig.json'),\n ),\n runtimes: createSignal(has('package.json'), 'node', 0.82, workingDir, 'package.json'),\n packageManagers: mergeSignals(\n createSignal(has('pnpm-lock.yaml') || has('pnpm-workspace.yaml'), 'pnpm', 0.95, workingDir, 'pnpm-lock.yaml'),\n createSignal(has('package-lock.json'), 'npm', 0.92, workingDir, 'package-lock.json'),\n createSignal(has('yarn.lock'), 'yarn', 0.92, workingDir, 'yarn.lock'),\n createSignal(has('bun.lockb') || has('bun.lock'), 'bun', 0.9, workingDir, 'bun.lockb'),\n ),\n buildTools: mergeSignals(\n createSignal(has('turbo.json'), 'turbo', 0.92, workingDir, 'turbo.json'),\n createSignal(has('nx.json'), 'nx', 0.92, workingDir, 'nx.json'),\n createSignal(has('tsup.config.ts'), 'tsup', 0.9, workingDir, 'tsup.config.ts'),\n createSignal(has('vite.config.ts') || has('vite.config.js'), 'vite', 0.9, workingDir, 'vite.config.ts'),\n ),\n testTools: mergeSignals(\n createSignal(has('vitest.config.ts') || has('vitest.config.js'), 'vitest', 0.92, workingDir, 'vitest.config.ts'),\n createSignal(has('jest.config.js') || has('jest.config.ts'), 'jest', 0.9, workingDir, 'jest.config.js'),\n createSignal(has('playwright.config.ts') || has('playwright.config.js'), 'playwright', 0.9, workingDir, 'playwright.config.ts'),\n ),\n frameworks: mergeSignals(\n createSignal(has('next.config.js') || has('next.config.mjs') || has('next.config.ts'), 'next', 0.92, workingDir, 'next.config.js'),\n createSignal(has('nuxt.config.ts') || has('nuxt.config.js'), 'nuxt', 0.92, workingDir, 'nuxt.config.ts'),\n createSignal(has('astro.config.mjs') || has('astro.config.js') || has('astro.config.ts'), 'astro', 0.92, workingDir, 'astro.config.mjs'),\n createSignal(has('svelte.config.js') || has('svelte.config.mjs'), 'svelte', 0.88, workingDir, 'svelte.config.js'),\n ),\n };\n\n return {\n fingerprints,\n workspace: {\n packageRoots: mapExistingRoots(workingDir, fileNames, ['packages']),\n appRoots: mapExistingRoots(workingDir, fileNames, ['apps', 'services']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['libs', 'lib']),\n },\n };\n },\n };\n}\n\nfunction createPythonProbe(): RepositoryProbe {\n return {\n id: 'python-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('pyproject.toml') || has('requirements.txt') || has('requirements-dev.txt') || has('poetry.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'python-ecosystem', 0.9, workingDir, 'pyproject.toml'),\n languages: createSignal(detected, 'python', 0.95, workingDir, has('pyproject.toml') ? 'pyproject.toml' : 'requirements.txt'),\n runtimes: createSignal(detected, 'python', 0.95, workingDir, has('pyproject.toml') ? 'pyproject.toml' : 'requirements.txt'),\n packageManagers: mergeSignals(\n createSignal(has('poetry.lock'), 'poetry', 0.94, workingDir, 'poetry.lock'),\n createSignal(has('requirements.txt') || has('requirements-dev.txt'), 'pip', 0.88, workingDir, 'requirements.txt'),\n ),\n testTools: mergeSignals(\n createSignal(has('pytest.ini') || has('conftest.py'), 'pytest', 0.9, workingDir, has('pytest.ini') ? 'pytest.ini' : 'conftest.py'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src', 'app']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createGoProbe(): RepositoryProbe {\n return {\n id: 'go-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('go.mod');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'go-ecosystem', 0.95, workingDir, 'go.mod'),\n languages: createSignal(detected, 'go', 0.98, workingDir, 'go.mod'),\n runtimes: createSignal(detected, 'go', 0.98, workingDir, 'go.mod'),\n buildTools: createSignal(detected && has('Makefile'), 'make', 0.8, workingDir, 'Makefile'),\n testTools: createSignal(detected, 'go-test', 0.72, workingDir, 'go.mod'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['cmd']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['internal', 'pkg']),\n },\n };\n },\n };\n}\n\nfunction createPhpProbe(): RepositoryProbe {\n return {\n id: 'php-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('composer.json') || has('composer.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'php-ecosystem', 0.92, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n languages: createSignal(detected, 'php', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n runtimes: createSignal(detected, 'php', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n packageManagers: createSignal(detected, 'composer', 0.96, workingDir, has('composer.json') ? 'composer.json' : 'composer.lock'),\n testTools: createSignal(has('phpunit.xml') || has('phpunit.xml.dist'), 'phpunit', 0.92, workingDir, has('phpunit.xml') ? 'phpunit.xml' : 'phpunit.xml.dist'),\n frameworks: mergeSignals(\n createSignal(has('artisan'), 'laravel', 0.94, workingDir, 'artisan'),\n createSignal(has('bin') && has('config') && has('public'), 'symfony', 0.7, workingDir, 'composer.json'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['app', 'src']),\n infraRoots: mapExistingRoots(workingDir, fileNames, ['config', 'database', 'routes']),\n },\n };\n },\n };\n}\n\nfunction createJvmProbe(): RepositoryProbe {\n return {\n id: 'jvm-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('pom.xml') || has('build.gradle') || has('build.gradle.kts');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'jvm-ecosystem', 0.9, workingDir, has('pom.xml') ? 'pom.xml' : 'build.gradle'),\n languages: mergeSignals(\n createSignal(detected, 'java', 0.82, workingDir, has('pom.xml') ? 'pom.xml' : 'build.gradle'),\n createSignal(has('build.gradle.kts'), 'kotlin', 0.84, workingDir, 'build.gradle.kts'),\n ),\n buildTools: mergeSignals(\n createSignal(has('pom.xml'), 'maven', 0.95, workingDir, 'pom.xml'),\n createSignal(has('build.gradle') || has('build.gradle.kts'), 'gradle', 0.95, workingDir, has('build.gradle') ? 'build.gradle' : 'build.gradle.kts'),\n ),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createRustProbe(): RepositoryProbe {\n return {\n id: 'rust-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('Cargo.toml');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'rust-ecosystem', 0.95, workingDir, 'Cargo.toml'),\n languages: createSignal(detected, 'rust', 0.98, workingDir, 'Cargo.toml'),\n runtimes: createSignal(detected, 'rust', 0.98, workingDir, 'Cargo.toml'),\n buildTools: createSignal(detected, 'cargo', 0.98, workingDir, 'Cargo.toml'),\n packageManagers: createSignal(detected, 'cargo', 0.98, workingDir, 'Cargo.toml'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['src']),\n },\n };\n },\n };\n}\n\nfunction createRubyProbe(): RepositoryProbe {\n return {\n id: 'ruby-probe',\n probe({ workingDir, fileNames }) {\n const has = createHas(fileNames);\n const detected = has('Gemfile') || has('Gemfile.lock');\n return {\n fingerprints: {\n ecosystems: createSignal(detected, 'ruby-ecosystem', 0.93, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n languages: createSignal(detected, 'ruby', 0.96, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n runtimes: createSignal(detected, 'ruby', 0.96, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n packageManagers: createSignal(detected, 'bundler', 0.94, workingDir, has('Gemfile') ? 'Gemfile' : 'Gemfile.lock'),\n buildTools: createSignal(detected && has('Rakefile'), 'rake', 0.9, workingDir, 'Rakefile'),\n },\n workspace: {\n appRoots: mapExistingRoots(workingDir, fileNames, ['app', 'lib']),\n },\n };\n },\n };\n}\n\nfunction createGenericLayoutProbe(): RepositoryProbe {\n return {\n id: 'generic-layout-probe',\n probe({ workingDir, fileNames }) {\n return {\n workspace: {\n packageRoots: mapExistingRoots(workingDir, fileNames, ['packages']),\n appRoots: mapExistingRoots(workingDir, fileNames, ['apps', 'services', 'cmd', 'src']),\n libraryRoots: mapExistingRoots(workingDir, fileNames, ['libs', 'lib', 'internal', 'pkg']),\n infraRoots: mapExistingRoots(workingDir, fileNames, ['infra', 'config', 'database', 'routes']),\n docsRoots: mapExistingRoots(workingDir, fileNames, ['docs']),\n },\n riskSignals: [\n ...(!fileNames.includes('README.md') ? ['missing_readme'] : []),\n ...(!fileNames.includes('.gitignore') ? ['missing_gitignore'] : []),\n ],\n };\n },\n };\n}\n\nasync function safeReadDirNames(dirPath: string): Promise<string[]> {\n try {\n const entries = await readdir(dirPath, { withFileTypes: true });\n return entries.map((entry) => entry.name);\n } catch {\n return [];\n }\n}\n\nfunction mergeObservation(\n base: RepositoryProbeObservation,\n next: RepositoryProbeObservation,\n): RepositoryProbeObservation {\n return {\n topology: next.topology && next.topology !== 'unknown' ? next.topology : base.topology,\n stack: {\n ...(base.stack ?? {}),\n ...(next.stack ?? {}),\n },\n fingerprints: mergeFingerprints(base.fingerprints, next.fingerprints),\n workspace: {\n ...(base.workspace ?? {}),\n rootPath: next.workspace?.rootPath ?? base.workspace?.rootPath,\n packageRoots: uniqueArray([...(base.workspace?.packageRoots ?? []), ...(next.workspace?.packageRoots ?? [])]),\n appRoots: uniqueArray([...(base.workspace?.appRoots ?? []), ...(next.workspace?.appRoots ?? [])]),\n libraryRoots: uniqueArray([...(base.workspace?.libraryRoots ?? []), ...(next.workspace?.libraryRoots ?? [])]),\n infraRoots: uniqueArray([...(base.workspace?.infraRoots ?? []), ...(next.workspace?.infraRoots ?? [])]),\n docsRoots: uniqueArray([...(base.workspace?.docsRoots ?? []), ...(next.workspace?.docsRoots ?? [])]),\n },\n conventions: {\n hasAdr: (base.conventions?.hasAdr ?? false) || (next.conventions?.hasAdr ?? false),\n hasOpenApi: (base.conventions?.hasOpenApi ?? false) || (next.conventions?.hasOpenApi ?? false),\n hasCi: (base.conventions?.hasCi ?? false) || (next.conventions?.hasCi ?? false),\n hasLinting: (base.conventions?.hasLinting ?? false) || (next.conventions?.hasLinting ?? false),\n hasFormatting: (base.conventions?.hasFormatting ?? false) || (next.conventions?.hasFormatting ?? false),\n },\n riskSignals: uniqueArray([...(base.riskSignals ?? []), ...(next.riskSignals ?? [])]),\n sources: uniqueArray([...(base.sources ?? []), ...(next.sources ?? [])]),\n };\n}\n\nfunction mergeFingerprints(\n base?: Partial<RepositoryFingerprints>,\n next?: Partial<RepositoryFingerprints>,\n): Partial<RepositoryFingerprints> {\n return {\n ecosystems: mergeSignals(base?.ecosystems, next?.ecosystems),\n languages: mergeSignals(base?.languages, next?.languages),\n frameworks: mergeSignals(base?.frameworks, next?.frameworks),\n runtimes: mergeSignals(base?.runtimes, next?.runtimes),\n packageManagers: mergeSignals(base?.packageManagers, next?.packageManagers),\n buildTools: mergeSignals(base?.buildTools, next?.buildTools),\n testTools: mergeSignals(base?.testTools, next?.testTools),\n };\n}\n\nfunction normalizeFingerprints(\n partial?: Partial<RepositoryFingerprints>,\n): RepositoryFingerprints {\n return {\n ecosystems: sortSignals(partial?.ecosystems),\n languages: sortSignals(partial?.languages),\n frameworks: sortSignals(partial?.frameworks),\n runtimes: sortSignals(partial?.runtimes),\n packageManagers: sortSignals(partial?.packageManagers),\n buildTools: sortSignals(partial?.buildTools),\n testTools: sortSignals(partial?.testTools),\n };\n}\n\nfunction buildStackFromFingerprints(\n partial?: Partial<RepositoryFingerprints>,\n): RepositoryModel['stack'] {\n const normalized = normalizeFingerprints(partial);\n return {\n languages: normalized.languages.map((signal) => signal.name),\n frameworks: normalized.frameworks.map((signal) => signal.name),\n runtimes: normalized.runtimes.map((signal) => signal.name),\n packageManagers: normalized.packageManagers.map((signal) => signal.name),\n buildTools: normalized.buildTools.map((signal) => signal.name),\n testTools: normalized.testTools.map((signal) => signal.name),\n };\n}\n\nfunction mergeSignals(\n ...collections: Array<RepositorySignal[] | RepositorySignal | undefined>\n): RepositorySignal[] {\n const merged = new Map<string, RepositorySignal>();\n for (const collection of collections) {\n const signals = Array.isArray(collection) ? collection : collection ? [collection] : [];\n for (const signal of signals) {\n const current = merged.get(signal.name);\n if (!current || signal.confidence > current.confidence) {\n merged.set(signal.name, {\n name: signal.name,\n confidence: signal.confidence,\n sources: uniqueArray([...(current?.sources ?? []), ...signal.sources]),\n });\n } else {\n current.sources = uniqueArray([...current.sources, ...signal.sources]);\n }\n }\n }\n return sortSignals(Array.from(merged.values()));\n}\n\nfunction sortSignals(signals?: RepositorySignal[]): RepositorySignal[] {\n return [...(signals ?? [])]\n .sort((left, right) => right.confidence - left.confidence || left.name.localeCompare(right.name));\n}\n\nfunction createSignal(\n condition: boolean,\n name: string,\n confidence: number,\n workingDir: string,\n source: string,\n): RepositorySignal[] {\n return condition\n ? [{ name, confidence, sources: [path.join(workingDir, source)] }]\n : [];\n}\n\nfunction mapExistingRoots(workingDir: string, fileNames: string[], names: string[]): string[] {\n const set = new Set(fileNames);\n return names.filter((name) => set.has(name)).map((name) => path.join(workingDir, name));\n}\n\nfunction createHas(fileNames: string[]): (name: string) => boolean {\n const set = new Set(fileNames);\n return (name) => set.has(name);\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n","import type { EvidenceRequirements, KernelState } from '@kb-labs/agent-contracts';\nimport type { ResponseRequirementsSelector } from '@kb-labs/agent-sdk';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\n\nconst DEFAULT_REQUIREMENTS: EvidenceRequirements = {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: false,\n needsFileBackedClaims: false,\n allowsInference: true,\n maxUnsupportedClaims: 1,\n};\n\nexport function createDefaultResponseRequirementsSelector(): ResponseRequirementsSelector {\n return {\n id: 'default-response-requirements-selector',\n async select(input: {\n state: KernelState | null;\n messages: LLMMessage[];\n task: string;\n }): Promise<RuntimeResponseRequirements> {\n const fallback = deterministicRequirements(input.task);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(buildRequirementsPrompt(input), {\n systemPrompt: [\n 'Determine how strictly the next answer must be grounded in evidence.',\n 'Allow evidence-only recall when the user asks about files, commands, or actions already observed in the session.',\n 'Require file-backed claims for architecture or code explanations.',\n 'Return strict JSON only.',\n ].join(' '),\n temperature: 0,\n maxTokens: 180,\n });\n return normalizeRequirements(response.content, fallback);\n } catch {\n return fallback;\n }\n },\n };\n}\n\nfunction buildRequirementsPrompt(input: {\n state: KernelState | null;\n messages: LLMMessage[];\n task: string;\n}): string {\n return JSON.stringify({\n task: input.task,\n objective: input.state?.objective ?? input.state?.currentTask ?? '',\n constraints: input.state?.constraints ?? [],\n recentEvidence: input.state?.memory.evidence.slice(-6).map((item) => ({\n toolName: item.toolName ?? item.source,\n toolInputSummary: item.toolInputSummary,\n summary: item.summary,\n })) ?? [],\n schema: {\n requirements: {\n allowsMemoryOnlyRecall: 'boolean',\n needsDirectToolEvidence: 'boolean',\n needsFileBackedClaims: 'boolean',\n allowsInference: 'boolean',\n maxUnsupportedClaims: 'number',\n },\n rationale: 'string',\n },\n }, null, 2);\n}\n\nfunction normalizeRequirements(content: string, fallback: RuntimeResponseRequirements): RuntimeResponseRequirements {\n const parsed = extractJsonObject(content);\n if (!parsed) {\n return fallback;\n }\n const requirements = normalizeEvidenceRequirements(parsed.requirements, fallback.requirements);\n const rationale = typeof parsed.rationale === 'string' && parsed.rationale.trim()\n ? parsed.rationale.trim()\n : fallback.rationale;\n return { requirements, rationale };\n}\n\nfunction deterministicRequirements(task: string): RuntimeResponseRequirements {\n const text = task.trim().toLowerCase();\n const recallSignal = /(which files|what files|which commands|what commands|did you inspect|did you read|used so far|previous run|previous shell command|latest shell command|какие файлы|что ты читал|какую команду)/i.test(text);\n if (recallSignal) {\n return {\n requirements: {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: true,\n needsFileBackedClaims: false,\n allowsInference: false,\n maxUnsupportedClaims: 0,\n },\n rationale: 'Task looks like session recall and can be answered from recorded evidence.',\n };\n }\n\n const codeExplanationSignal = /(how .*work|explain|architecture|responsibilit|continuity|rollup|claim verification|risk|summary of .*src\\/|inspect .*src\\/)/i.test(text);\n if (codeExplanationSignal) {\n return {\n requirements: {\n allowsMemoryOnlyRecall: false,\n needsDirectToolEvidence: true,\n needsFileBackedClaims: true,\n allowsInference: false,\n maxUnsupportedClaims: 0,\n },\n rationale: 'Task looks like code or architecture explanation and requires file-backed evidence.',\n };\n }\n\n return {\n requirements: DEFAULT_REQUIREMENTS,\n rationale: 'Default requirements allow bounded inference unless the task is clearly evidence-heavy.',\n };\n}\n\nfunction normalizeEvidenceRequirements(\n value: unknown,\n fallback: EvidenceRequirements,\n): EvidenceRequirements {\n if (!value || typeof value !== 'object') {\n return fallback;\n }\n const input = value as Record<string, unknown>;\n return {\n allowsMemoryOnlyRecall: typeof input.allowsMemoryOnlyRecall === 'boolean'\n ? input.allowsMemoryOnlyRecall\n : fallback.allowsMemoryOnlyRecall,\n needsDirectToolEvidence: typeof input.needsDirectToolEvidence === 'boolean'\n ? input.needsDirectToolEvidence\n : fallback.needsDirectToolEvidence,\n needsFileBackedClaims: typeof input.needsFileBackedClaims === 'boolean'\n ? input.needsFileBackedClaims\n : fallback.needsFileBackedClaims,\n allowsInference: typeof input.allowsInference === 'boolean'\n ? input.allowsInference\n : fallback.allowsInference,\n maxUnsupportedClaims: typeof input.maxUnsupportedClaims === 'number'\n ? input.maxUnsupportedClaims\n : fallback.maxUnsupportedClaims,\n };\n}\n\nfunction extractJsonObject(content: string): Record<string, unknown> | null {\n const start = content.indexOf('{');\n const end = content.lastIndexOf('}');\n if (start === -1 || end === -1 || end <= start) {\n return null;\n }\n try {\n return JSON.parse(content.slice(start, end + 1)) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n","import type { KernelState, ToolCallRecord } from '@kb-labs/agent-contracts';\nimport type { SessionRecallResolver } from '@kb-labs/agent-sdk';\n\nexport function createDefaultSessionRecallResolver(): SessionRecallResolver {\n return {\n id: 'default-session-recall-resolver',\n resolve(input) {\n const fileAnswer = resolveFileRecallAnswer(input.task, input.state, input.toolRecords);\n if (fileAnswer) {\n return {\n answer: fileAnswer.answer,\n confidence: 0.98,\n filesRead: fileAnswer.files,\n };\n }\n\n if (!input.responseRequirements?.requirements.allowsMemoryOnlyRecall) {\n return null;\n }\n\n const commandAnswer = resolveCommandRecallAnswer(input.task, input.state, input.toolRecords);\n if (commandAnswer) {\n return {\n answer: commandAnswer.answer,\n confidence: 0.98,\n filesRead: [],\n };\n }\n\n return null;\n },\n };\n}\n\nfunction resolveFileRecallAnswer(\n task: string,\n kernel: KernelState,\n toolRecords: ToolCallRecord[],\n): { answer: string; files: string[] } | null {\n if (!/(which files|what files|did you inspect|did you read|files have you inspected|какие файлы|что ты читал|какие файлы ты смотрел)/i.test(task)) {\n return null;\n }\n\n const files = uniqueStrings([\n ...toolRecords\n .filter((record) => record.toolName === 'fs_read')\n .map((record) => typeof record.input.path === 'string' ? record.input.path : undefined),\n ...kernel.memory.evidence\n .filter((item) => item.toolName === 'fs_read')\n .map((item) => item.toolInputSummary),\n ...(kernel.handoff?.filesRead ?? []),\n ]);\n\n if (files.length === 0) {\n return null;\n }\n\n return {\n answer: files.length === 1\n ? `I inspected exactly this file in the session: ${files[0]}.`\n : `I inspected these files in the session:\\n- ${files.join('\\n- ')}`,\n files,\n };\n}\n\nfunction resolveCommandRecallAnswer(\n task: string,\n kernel: KernelState,\n toolRecords: ToolCallRecord[],\n): { answer: string } | null {\n if (!/(which commands|what commands|previous shell command|latest shell command|какую команду|какие команды)/i.test(task)) {\n return null;\n }\n\n const commands = uniqueStrings([\n ...toolRecords\n .filter((record) => record.toolName === 'shell_exec')\n .map((record) => typeof record.input.command === 'string' ? record.input.command : undefined),\n ...kernel.memory.evidence\n .filter((item) => item.toolName === 'shell_exec')\n .map((item) => item.toolInputSummary),\n ]);\n\n if (commands.length === 0) {\n return null;\n }\n\n return {\n answer: commands.length === 1\n ? `I used this shell command in the session: ${commands[0]}.`\n : `I used these shell commands in the session:\\n- ${commands.join('\\n- ')}`,\n };\n}\n\nfunction uniqueStrings(values: Array<string | undefined>): string[] {\n const normalized = values.filter((value): value is string => typeof value === 'string' && value.trim().length > 0);\n return [...new Set(normalized)];\n}\n","import type { ToolCapabilityResolver } from '@kb-labs/agent-sdk';\nimport type { ToolCapability } from '@kb-labs/agent-contracts';\n\nconst DEFAULT_CAPABILITIES: ToolCapability[] = [\n 'filesystem',\n 'search',\n 'code-navigation',\n 'shell',\n 'memory',\n 'planning',\n 'todo',\n 'interaction',\n 'reporting',\n 'delegation',\n];\n\nexport function createDefaultToolCapabilityResolver(): ToolCapabilityResolver {\n return {\n id: 'default-tool-capability-resolver',\n resolve() {\n return DEFAULT_CAPABILITIES;\n },\n };\n}\n","import type { AgentMode } from '@kb-labs/agent-contracts';\nimport type { AgentSDK, RuntimeProfile } from '@kb-labs/agent-sdk';\n\nexport function resolveRuntimeMode(mode?: AgentMode): 'assistant' | 'autonomous' {\n return mode === 'execute' ? 'autonomous' : 'assistant';\n}\n\nexport function createBuiltInRuntimeProfiles(): RuntimeProfile[] {\n return [\n {\n id: 'assistant-profile',\n mode: 'assistant',\n description: 'Dialogue-first profile for AI-assisted work with controlled tool usage.',\n toolPolicy: {\n access: 'controlled',\n },\n completionPolicy: {\n requireReportTool: true,\n },\n },\n {\n id: 'autonomous-profile',\n mode: 'autonomous',\n description: 'Execution-first profile for longer-running autonomous task completion.',\n toolPolicy: {\n access: 'aggressive',\n },\n completionPolicy: {\n requireReportTool: true,\n },\n },\n ];\n}\n\nexport function resolveRuntimeProfile(\n sdk: AgentSDK,\n mode: AgentMode | 'assistant' | 'autonomous',\n): RuntimeProfile {\n const candidates = [\n ...createBuiltInRuntimeProfiles().filter((profile) => profile.mode === mode),\n ...sdk.runtimeProfiles.filter((profile) => profile.mode === mode),\n ];\n\n if (candidates.length === 0) {\n throw new Error(`No runtime profile registered for mode \"${mode}\"`);\n }\n\n return mergeRuntimeProfiles(candidates);\n}\n\nfunction mergeRuntimeProfiles(profiles: RuntimeProfile[]): RuntimeProfile {\n const first = profiles[0];\n if (!first) {\n throw new Error('Cannot merge runtime profiles from an empty candidate set');\n }\n const rest = profiles.slice(1);\n let merged: RuntimeProfile = {\n id: first.id,\n mode: first.mode,\n description: first.description,\n toolPolicy: first.toolPolicy,\n repositoryDiagnosticsProviders: [...(first.repositoryDiagnosticsProviders ?? [])],\n repositoryProbes: [...(first.repositoryProbes ?? [])],\n toolCapabilityResolvers: [...(first.toolCapabilityResolvers ?? [])],\n completionPolicy: first.completionPolicy,\n promptContextSelectors: [...(first.promptContextSelectors ?? [])],\n responseRequirementsSelectors: [...(first.responseRequirementsSelectors ?? [])],\n promptProjectors: [...(first.promptProjectors ?? [])],\n sessionRecallResolvers: [...(first.sessionRecallResolvers ?? [])],\n runEvaluators: [...(first.runEvaluators ?? [])],\n resultMappers: [...(first.resultMappers ?? [])],\n outputValidators: [...(first.outputValidators ?? [])],\n artifactWriters: [...(first.artifactWriters ?? [])],\n };\n\n for (const profile of rest) {\n merged = {\n ...merged,\n ...profile,\n description: profile.description ?? merged.description,\n toolPolicy: mergeToolPolicies(merged.toolPolicy, profile.toolPolicy),\n repositoryDiagnosticsProviders: [\n ...(merged.repositoryDiagnosticsProviders ?? []),\n ...(profile.repositoryDiagnosticsProviders ?? []),\n ],\n repositoryProbes: [\n ...(merged.repositoryProbes ?? []),\n ...(profile.repositoryProbes ?? []),\n ],\n toolCapabilityResolvers: [\n ...(merged.toolCapabilityResolvers ?? []),\n ...(profile.toolCapabilityResolvers ?? []),\n ],\n completionPolicy: profile.completionPolicy ?? merged.completionPolicy,\n promptContextSelectors: [\n ...(merged.promptContextSelectors ?? []),\n ...(profile.promptContextSelectors ?? []),\n ],\n responseRequirementsSelectors: [\n ...(merged.responseRequirementsSelectors ?? []),\n ...(profile.responseRequirementsSelectors ?? []),\n ],\n promptProjectors: [\n ...(merged.promptProjectors ?? []),\n ...(profile.promptProjectors ?? []),\n ],\n sessionRecallResolvers: [\n ...(merged.sessionRecallResolvers ?? []),\n ...(profile.sessionRecallResolvers ?? []),\n ],\n runEvaluators: [\n ...(merged.runEvaluators ?? []),\n ...(profile.runEvaluators ?? []),\n ],\n resultMappers: [\n ...(merged.resultMappers ?? []),\n ...(profile.resultMappers ?? []),\n ],\n outputValidators: [\n ...(merged.outputValidators ?? []),\n ...(profile.outputValidators ?? []),\n ],\n artifactWriters: [\n ...(merged.artifactWriters ?? []),\n ...(profile.artifactWriters ?? []),\n ],\n };\n }\n\n return merged;\n}\n\nfunction mergeToolPolicies(\n base: RuntimeProfile['toolPolicy'],\n next: RuntimeProfile['toolPolicy'],\n): RuntimeProfile['toolPolicy'] {\n if (!base) {\n return next;\n }\n if (!next) {\n return base;\n }\n\n return {\n access: next.access ?? base.access,\n allowedToolNames: mergeAllowedArrays(base.allowedToolNames, next.allowedToolNames),\n allowedCapabilities: mergeAllowedArrays(base.allowedCapabilities, next.allowedCapabilities),\n blockedCapabilities: uniqueArray([\n ...(base.blockedCapabilities ?? []),\n ...(next.blockedCapabilities ?? []),\n ]),\n };\n}\n\nfunction mergeAllowedArrays<T>(base?: T[], next?: T[]): T[] | undefined {\n if (!base && !next) {\n return undefined;\n }\n if (!base) {\n return uniqueArray(next ?? []);\n }\n if (!next) {\n return uniqueArray(base);\n }\n const nextSet = new Set(next);\n return uniqueArray(base.filter((item) => nextSet.has(item)));\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n","import type { TurnInterpretation, AgentMode, KernelState, TurnKind } from '@kb-labs/agent-contracts';\nimport type { TurnInterpreter } from '@kb-labs/agent-sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\n\ntype InterpreterInput = {\n sessionId?: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n message: string;\n kernel: KernelState | null;\n};\n\nconst INTERPRET_TURN_TOOL = {\n name: 'interpret_turn',\n description: 'Classify the latest user turn relative to the current session and determine whether it should be persisted as session memory.',\n inputSchema: {\n type: 'object',\n properties: {\n kind: {\n type: 'string',\n enum: ['new_task', 'follow_up', 'correction', 'constraint', 'mixed'],\n description: 'Kind of user turn relative to current session state.',\n },\n shouldPersist: {\n type: 'boolean',\n description: 'True when this turn adds a lasting correction or instruction that should be committed to session memory.',\n },\n persistenceKind: {\n type: 'string',\n enum: ['correction', 'constraint'],\n description: 'When shouldPersist is true, describe whether this is a correction or lasting constraint.',\n },\n persistStrategy: {\n type: 'string',\n enum: ['record_directly', 'explicit_commit'],\n description: 'Use record_directly for baseline task constraints that should enter kernel immediately. Use explicit_commit for follow-up corrections that must be committed via memory tools before report.',\n },\n content: {\n type: 'string',\n description: 'Compact normalized content to persist when shouldPersist is true.',\n },\n invalidates: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional list of prior assumptions or directions invalidated by this turn.',\n },\n confidence: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n description: 'Confidence in the interpretation.',\n },\n suggestedMode: {\n type: 'string',\n enum: ['assistant', 'autonomous', 'spec', 'debug', 'execute', 'plan', 'edit'],\n description: 'Optional suggested mode for downstream routing.',\n },\n suggestedSkills: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional suggested skill ids for prompt/routing layers.',\n },\n suggestedPromptProfile: {\n type: 'string',\n description: 'Optional prompt profile hint for later routing layers.',\n },\n suggestedToolCapabilities: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional tool capability hints for later routing layers.',\n },\n rationale: {\n type: 'string',\n description: 'Short explanation of why this interpretation was selected.',\n },\n },\n required: ['kind', 'shouldPersist', 'confidence'],\n },\n};\n\nexport function createDefaultTurnInterpreter(): TurnInterpreter {\n return {\n id: 'default-turn-interpreter',\n supports(_mode: AgentMode | 'assistant' | 'autonomous'): boolean {\n return true;\n },\n async interpret(input: InterpreterInput): Promise<TurnInterpretation | null> {\n const normalized = input.message.trim();\n if (!normalized) {\n return null;\n }\n\n const llmInterpretation = await interpretWithLLM(input);\n if (llmInterpretation) {\n return llmInterpretation;\n }\n\n return interpretHeuristic(input);\n },\n };\n}\n\nasync function interpretWithLLM(input: InterpreterInput): Promise<TurnInterpretation | null> {\n const llm = useLLM({ tier: 'small' });\n if (!llm?.chatWithTools) {\n return null;\n }\n\n try {\n const response = await llm.chatWithTools(\n [\n {\n role: 'system',\n content: [\n 'Classify the latest user turn relative to the current session.',\n 'Call interpret_turn exactly once.',\n 'Persist only when the user changed direction, corrected prior understanding, or added a lasting instruction/constraint.',\n 'Do not persist ordinary follow-up questions.',\n 'Keep rationale short.',\n ].join(' '),\n },\n {\n role: 'user',\n content: buildInterpreterPrompt(input),\n },\n ],\n {\n tools: [INTERPRET_TURN_TOOL],\n toolChoice: { type: 'function', function: { name: 'interpret_turn' } },\n temperature: 0,\n maxTokens: 180,\n },\n );\n\n const call = response.toolCalls?.find((toolCall) => toolCall.name === 'interpret_turn');\n if (!call?.input || typeof call.input !== 'object') {\n return null;\n }\n\n return normalizeInterpretation(call.input as Record<string, unknown>);\n } catch {\n return null;\n }\n}\n\nfunction buildInterpreterPrompt(input: InterpreterInput): string {\n const sections = [\n `Mode: ${input.mode}`,\n `Current message:\\n${input.message.trim()}`,\n ];\n\n if (input.kernel) {\n sections.push(`Current objective:\\n${input.kernel.objective ?? input.kernel.currentTask}`);\n if (input.kernel.constraints.length > 0) {\n sections.push(`Active constraints:\\n- ${input.kernel.constraints.join('\\n- ')}`);\n }\n const recentCorrections = input.kernel.memory.corrections.slice(-3).map((item) => item.content);\n if (recentCorrections.length > 0) {\n sections.push(`Recent corrections:\\n- ${recentCorrections.join('\\n- ')}`);\n }\n const pendingActions = input.kernel.memory.pendingActions\n .filter((item) => item.status !== 'done')\n .slice(-3)\n .map((item) => item.content);\n if (pendingActions.length > 0) {\n sections.push(`Open pending actions:\\n- ${pendingActions.join('\\n- ')}`);\n }\n }\n\n return sections.join('\\n\\n');\n}\n\nfunction normalizeInterpretation(input: Record<string, unknown>): TurnInterpretation | null {\n const kind = normalizeTurnKind(input.kind);\n if (!kind) {\n return null;\n }\n\n const shouldPersist = Boolean(input.shouldPersist);\n const persistenceKind = normalizePersistenceKind(input.persistenceKind);\n const persistStrategy = normalizePersistStrategy(input.persistStrategy);\n const confidence = clampConfidence(input.confidence);\n\n return {\n kind,\n shouldPersist,\n persistenceKind: shouldPersist ? persistenceKind ?? defaultPersistenceKind(kind) : undefined,\n persistStrategy: shouldPersist ? persistStrategy : undefined,\n content: typeof input.content === 'string' && input.content.trim()\n ? input.content.trim()\n : undefined,\n invalidates: Array.isArray(input.invalidates)\n ? input.invalidates.filter((item): item is string => typeof item === 'string' && item.trim().length > 0)\n : undefined,\n confidence,\n suggestedMode: typeof input.suggestedMode === 'string' ? input.suggestedMode as TurnInterpretation['suggestedMode'] : undefined,\n suggestedSkills: normalizeStringArray(input.suggestedSkills),\n suggestedPromptProfile: typeof input.suggestedPromptProfile === 'string' && input.suggestedPromptProfile.trim()\n ? input.suggestedPromptProfile.trim()\n : undefined,\n suggestedToolCapabilities: normalizeStringArray(input.suggestedToolCapabilities),\n rationale: typeof input.rationale === 'string' && input.rationale.trim()\n ? input.rationale.trim()\n : 'Structured default interpreter classification.',\n };\n}\n\nfunction interpretHeuristic(input: InterpreterInput): TurnInterpretation | null {\n const normalized = input.message.trim();\n if (!normalized) {\n return null;\n }\n const lower = normalized.toLowerCase();\n const correctionMarkers = [\n 'correction:',\n 'correct:',\n 'from now on',\n 'do not',\n 'don’t',\n 'dont',\n 'only answer',\n 'теперь',\n 'только',\n 'я имел в виду',\n 'не это',\n ];\n const isCorrectionLike = correctionMarkers.some((marker) => lower.includes(marker));\n if (!isCorrectionLike) {\n return {\n kind: 'follow_up',\n shouldPersist: false,\n confidence: 0.2,\n rationale: 'Fallback heuristic interpreter found no lasting-instruction markers.',\n };\n }\n const isConstraint = lower.includes('from now on')\n || lower.includes('only answer')\n || lower.includes('do not')\n || lower.includes('только')\n || lower.includes('не ');\n return {\n kind: isConstraint ? 'constraint' : 'correction',\n shouldPersist: true,\n persistenceKind: isConstraint ? 'constraint' : 'correction',\n content: normalized,\n invalidates: [],\n confidence: 0.55,\n rationale: 'Fallback heuristic interpreter matched correction markers.',\n };\n}\n\nfunction normalizeTurnKind(value: unknown): TurnKind | null {\n return value === 'new_task'\n || value === 'follow_up'\n || value === 'correction'\n || value === 'constraint'\n || value === 'mixed'\n ? value\n : null;\n}\n\nfunction normalizePersistenceKind(value: unknown): 'correction' | 'constraint' | undefined {\n return value === 'correction' || value === 'constraint' ? value : undefined;\n}\n\nfunction normalizePersistStrategy(value: unknown): 'record_directly' | 'explicit_commit' | undefined {\n return value === 'record_directly' || value === 'explicit_commit' ? value : undefined;\n}\n\nfunction defaultPersistenceKind(kind: TurnKind): 'correction' | 'constraint' | undefined {\n if (kind === 'constraint') {\n return 'constraint';\n }\n if (kind === 'correction' || kind === 'mixed') {\n return 'correction';\n }\n return undefined;\n}\n\nfunction normalizeStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const normalized = value.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction clampConfidence(value: unknown): number {\n const num = typeof value === 'number' ? value : Number(value);\n if (Number.isNaN(num)) {\n return 0.5;\n }\n return Math.min(1, Math.max(0, num));\n}\n","import type {\n AgentEvent,\n AgentMode,\n KernelState,\n PromptContextSelection,\n RepositoryFingerprints,\n RepositoryModel,\n RepositorySignal,\n RunHandoff,\n ToolCallRecord,\n ToolCapability,\n ToolResultArtifact,\n TurnInterpretation,\n} from '@kb-labs/agent-contracts';\nimport {\n applyMemoryCapabilities,\n compactKernelState,\n completePendingActions,\n createKernelState,\n ingestUserTurn,\n isCorrectionPendingAction,\n projectKernelPrompt,\n recordCorrection,\n recordRunHandoff,\n recordToolArtifact,\n summarizeAssistantTurn,\n} from '@kb-labs/agent-kernel';\nimport type { AgentSDK, RuntimeProfile } from '@kb-labs/agent-sdk';\nimport { SessionArtifactStore } from '@kb-labs/agent-store';\nimport type { LLMMessage } from '@kb-labs/sdk';\nimport { useLLM } from '@kb-labs/sdk/hooks';\nimport { createDefaultPromptContextSelector } from './default-prompt-context-selector.js';\nimport {\n createBuiltInRepositoryProbes,\n createDefaultRepositoryDiagnosticsProvider,\n} from './default-repository-diagnostics.js';\nimport { createDefaultResponseRequirementsSelector } from './default-response-requirements-selector.js';\nimport { createDefaultSessionRecallResolver } from './default-session-recall-resolver.js';\nimport { createDefaultToolCapabilityResolver } from './default-tool-capability-resolver.js';\nimport { resolveRuntimeProfile, resolveRuntimeMode } from './profiles.js';\nimport type { RuntimeResponseRequirements } from './response-requirements.js';\nimport { createDefaultTurnInterpreter } from './default-turn-interpreter.js';\n\nexport { createDefaultResponseRequirementsSelector } from './default-response-requirements-selector.js';\nexport { resolveRuntimeMode, resolveRuntimeProfile } from './profiles.js';\n\nexport interface RunCompletionResult {\n persisted: boolean;\n validationResults: Array<{\n verdict: 'allow' | 'warn' | 'block';\n rationale: string;\n }>;\n artifactResults: unknown[];\n blockedByPolicy: boolean;\n}\n\nexport class RuntimeEngine {\n private kernel: KernelState | null = null;\n private activeProfile: RuntimeProfile | null = null;\n private repositoryModel: RepositoryModel | null = null;\n private activeToolCapabilities: ToolCapability[] = [];\n private readonly pendingToolInputs = new Map<string, { toolName: string; input: Record<string, unknown> }>();\n private lastResponseRequirements: RuntimeResponseRequirements | null = null;\n\n constructor(\n private readonly sdk: AgentSDK,\n private readonly store: SessionArtifactStore,\n ) {}\n\n async loadOrCreateKernel(input: {\n sessionId: string;\n workingDir: string;\n mode?: AgentMode;\n task: string;\n }): Promise<KernelState> {\n const existing = await this.store.loadKernelState(input.sessionId);\n const runtimeMode = resolveRuntimeMode(input.mode);\n const state = existing ?? createKernelState({\n sessionId: input.sessionId,\n workingDir: input.workingDir,\n mode: runtimeMode,\n task: input.task,\n });\n this.activeProfile = resolveRuntimeProfile(this.sdk, runtimeMode);\n this.repositoryModel = await this.describeRepository({\n workingDir: input.workingDir,\n mode: runtimeMode,\n profile: this.activeProfile,\n kernel: state,\n });\n this.activeToolCapabilities = await this.resolveToolCapabilities({\n workingDir: input.workingDir,\n mode: runtimeMode,\n profile: this.activeProfile,\n repositoryModel: this.repositoryModel,\n kernel: state,\n });\n const interpretation = await this.interpretTurn({\n sessionId: input.sessionId,\n mode: runtimeMode,\n message: input.task,\n kernel: state,\n });\n const normalizedInterpretation = normalizeInterpretationPersistence(interpretation, Boolean(existing));\n this.kernel = ingestUserTurn(state, {\n content: input.task,\n interpretation: normalizedInterpretation,\n });\n this.kernel = await applyMemoryCapabilities(this.kernel, this.sdk.memoryCapabilities);\n await this.store.saveKernelState(input.sessionId, this.kernel);\n await this.store.appendTurn(input.sessionId, {\n id: `turn-user-${Date.now()}`,\n sessionId: input.sessionId,\n role: 'user',\n content: input.task,\n timestamp: new Date().toISOString(),\n metadata: normalizedInterpretation ? { interpretation: normalizedInterpretation } : undefined,\n });\n for (const observer of this.sdk.observers) {\n await observer.onKernelUpdated?.(this.kernel);\n }\n return this.kernel;\n }\n\n getKernel(): KernelState | null {\n return this.kernel;\n }\n\n getLastResponseRequirements(): RuntimeResponseRequirements | null {\n return this.lastResponseRequirements;\n }\n\n getActiveProfile(): RuntimeProfile | null {\n return this.activeProfile;\n }\n\n getRepositoryModel(): RepositoryModel | null {\n return this.repositoryModel;\n }\n\n getActiveToolCapabilities(): ToolCapability[] {\n return [...this.activeToolCapabilities];\n }\n\n async tryResolveDirectAnswer(messages: LLMMessage[]): Promise<{\n answer: string;\n confidence: number;\n filesRead: string[];\n } | null> {\n if (!this.kernel) {\n return null;\n }\n const task = getCurrentTaskForMessages(this.kernel, messages);\n const toolRecords = await this.store.loadToolRecords(this.kernel.sessionId, 300);\n const requirements = await this.selectResponseRequirements(this.kernel, messages);\n const resolvers = [\n ...(this.activeProfile?.sessionRecallResolvers ?? []),\n ...this.sdk.sessionRecallResolvers,\n createDefaultSessionRecallResolver(),\n ];\n for (const resolver of resolvers) {\n const resolution = await resolver.resolve({\n state: this.kernel,\n messages,\n task,\n toolRecords,\n responseRequirements: requirements,\n });\n if (resolution) {\n return {\n answer: resolution.answer,\n confidence: resolution.confidence,\n filesRead: resolution.filesRead ?? [],\n };\n }\n }\n return null;\n }\n\n async projectPrompt(messages: LLMMessage[]): Promise<string> {\n if (!this.kernel) {\n return '';\n }\n const responseRequirements = await this.selectResponseRequirements(this.kernel, messages);\n const selection = await this.selectPromptContext(this.kernel, messages, responseRequirements);\n const promptProjectors = [\n createRepositoryContextProjector(),\n ...(this.activeProfile?.promptProjectors ?? []),\n ...this.sdk.promptProjectors,\n ];\n return projectKernelPrompt(this.kernel, messages, promptProjectors, selection, {\n repositoryModel: this.repositoryModel,\n toolCapabilities: this.activeToolCapabilities,\n });\n }\n\n async recordEvent(event: AgentEvent): Promise<void> {\n if (!this.kernel?.sessionId) {\n return;\n }\n const sessionId = this.kernel.sessionId;\n if (event.type === 'tool:start') {\n this.pendingToolInputs.set(\n event.toolCallId || `${event.runId || 'run'}:${event.data.toolName}`,\n {\n toolName: event.data.toolName,\n input: normalizeToolInput(event.data.input),\n },\n );\n }\n if (event.type === 'tool:end') {\n const toolName = event.data.toolName;\n if (shouldRefreshKernelFromStore(toolName)) {\n const persisted = await this.store.loadKernelState(sessionId);\n if (persisted) {\n this.kernel = persisted;\n }\n }\n const pendingKey = event.toolCallId || `${event.runId || 'run'}:${toolName}`;\n const pending = this.pendingToolInputs.get(pendingKey);\n const input = pending?.input ?? {};\n this.pendingToolInputs.delete(pendingKey);\n const toolInputSummary = summarizeToolInput(toolName, input);\n const summary = typeof event.data.output === 'string'\n ? event.data.output\n : event.data.metadata?.summary\n ? String(event.data.metadata.summary)\n : `${toolName} completed`;\n const metadata = event.data.metadata\n ? event.data.metadata as unknown as Record<string, unknown>\n : undefined;\n const shouldPromote = shouldPromoteToolEvidence(toolName, summary, metadata, input, event.data.success);\n const evidenceSummary = shouldPromote\n ? buildKernelEvidenceSummary(toolName, summary, metadata, input, toolInputSummary)\n : '';\n const artifact: ToolResultArtifact = {\n status: event.data.success ? 'success' : 'error',\n summary,\n artifact: {\n ...metadata,\n toolName,\n toolInputSummary,\n },\n evidence: shouldPromote ? [{\n id: `ev-${event.timestamp}-${toolName}`,\n summary: summarizeToolEvidence(evidenceSummary, toolInputSummary),\n source: toolName,\n createdAt: event.timestamp,\n toolName,\n toolInputSummary,\n artifact: metadata,\n filePaths: extractFilePaths(metadata),\n pinned: shouldPinToolEvidence(toolName, input),\n }] : [],\n mutations: {\n filesRead: extractFilePaths(metadata),\n },\n };\n this.kernel = recordToolArtifact(this.kernel, artifact);\n if (event.data.success && (toolName === 'memory_correction' || toolName === 'memory_constraint')) {\n this.kernel = completePendingActions(this.kernel, isCorrectionPendingAction);\n }\n const record: ToolCallRecord = {\n id: event.toolCallId || `tool-${Date.now()}`,\n sessionId,\n runId: event.runId,\n timestamp: event.timestamp,\n toolName,\n input,\n artifact,\n };\n await this.store.appendToolRecord(sessionId, record);\n for (const observer of this.sdk.observers) {\n await observer.onToolCall?.(record);\n }\n }\n if (event.type === 'status:change') {\n const message = typeof event.data?.message === 'string' ? event.data.message : '';\n if (/correction/i.test(message)) {\n this.kernel = recordCorrection(this.kernel, message);\n }\n }\n await this.store.saveKernelState(sessionId, this.kernel);\n }\n\n async completeRun(input: {\n sessionId: string;\n runId?: string;\n mode?: AgentMode;\n summary: string;\n filesRead?: string[];\n filesModified?: string[];\n filesCreated?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<RunCompletionResult> {\n if (!this.kernel) {\n return {\n persisted: false,\n validationResults: [],\n artifactResults: [],\n blockedByPolicy: false,\n };\n }\n const validationResults = await Promise.all(\n (this.activeProfile?.outputValidators ?? []).map((validator) =>\n validator.validate({\n state: this.kernel!,\n answer: input.summary,\n mode: resolveRuntimeMode(input.mode),\n metadata: input.metadata,\n }),\n ),\n );\n const normalizedValidationResults = validationResults.filter(\n (result): result is NonNullable<typeof result> => Boolean(result),\n );\n const blockedByPolicy =\n (this.activeProfile?.completionPolicy?.requireValidatorsToPass ?? false)\n && normalizedValidationResults.some((result) => result.verdict === 'block');\n if (blockedByPolicy) {\n return {\n persisted: false,\n validationResults: normalizedValidationResults,\n artifactResults: [],\n blockedByPolicy: true,\n };\n }\n this.kernel = summarizeAssistantTurn(this.kernel, input.summary);\n const handoff: RunHandoff = {\n runId: input.runId || `run-${Date.now()}`,\n mode: resolveRuntimeMode(input.mode),\n createdAt: new Date().toISOString(),\n summary: input.summary,\n filesRead: input.filesRead,\n filesModified: input.filesModified,\n filesCreated: input.filesCreated,\n };\n this.kernel = recordRunHandoff(this.kernel, handoff);\n await this.store.appendTurn(input.sessionId, {\n id: `turn-assistant-${Date.now()}`,\n sessionId: input.sessionId,\n runId: input.runId,\n role: 'assistant',\n content: input.summary,\n timestamp: new Date().toISOString(),\n });\n await this.store.appendRunRecord(input.sessionId, {\n runId: handoff.runId,\n mode: handoff.mode,\n summary: handoff.summary,\n createdAt: handoff.createdAt,\n filesRead: handoff.filesRead,\n filesModified: handoff.filesModified,\n filesCreated: handoff.filesCreated,\n });\n const [turnCount, toolCallCount] = await Promise.all([\n this.store.countArtifactLines(input.sessionId, 'turns.jsonl'),\n this.store.countArtifactLines(input.sessionId, 'tool-ledger.jsonl'),\n ]);\n const narrativeSummary = await generateNarrativeRollupSummary(this.kernel, {\n turnCount,\n toolCallCount,\n });\n this.kernel = compactKernelState(this.kernel, {\n turnCount,\n toolCallCount,\n narrativeSummary,\n });\n await this.store.saveKernelState(input.sessionId, this.kernel);\n const artifactResults = await Promise.all(\n (this.activeProfile?.artifactWriters ?? []).map((writer) =>\n writer.write({\n state: this.kernel!,\n sessionId: input.sessionId,\n summary: input.summary,\n runId: input.runId,\n metadata: input.metadata,\n }),\n ),\n );\n for (const observer of this.sdk.observers) {\n await observer.onKernelUpdated?.(this.kernel);\n }\n return {\n persisted: true,\n validationResults: normalizedValidationResults,\n artifactResults,\n blockedByPolicy: false,\n };\n }\n\n private async interpretTurn(input: {\n sessionId?: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n message: string;\n kernel: KernelState | null;\n }): Promise<TurnInterpretation | null> {\n const interpreters = [\n ...this.sdk.turnInterpreters.filter((interpreter) => interpreter.supports(input.mode)),\n createDefaultTurnInterpreter(),\n ];\n let best: TurnInterpretation | null = null;\n for (const interpreter of interpreters) {\n const result = await interpreter.interpret(input);\n if (!result) {\n continue;\n }\n if (!best || result.confidence > best.confidence) {\n best = result;\n }\n if (result.confidence >= 0.9) {\n return result;\n }\n }\n return best;\n }\n\n private async selectPromptContext(\n state: KernelState,\n messages: LLMMessage[],\n responseRequirements?: RuntimeResponseRequirements,\n ): Promise<PromptContextSelection> {\n const selectors = [\n ...(this.activeProfile?.promptContextSelectors ?? []),\n ...this.sdk.promptContextSelectors,\n createDefaultPromptContextSelector(),\n ];\n let selected: PromptContextSelection | null = null;\n for (const selector of selectors) {\n const result = await selector.select({ state, messages, responseRequirements });\n if (result) {\n selected = result;\n }\n }\n if (!selected) {\n throw new Error('Prompt context selection failed to produce a result');\n }\n return selected;\n }\n\n private async selectResponseRequirements(\n state: KernelState,\n messages: LLMMessage[],\n ): Promise<RuntimeResponseRequirements> {\n const task = getCurrentTaskForMessages(state, messages);\n const selectors = [\n ...(this.activeProfile?.responseRequirementsSelectors ?? []),\n ...this.sdk.responseRequirementsSelectors,\n createDefaultResponseRequirementsSelector(),\n ];\n let selected: RuntimeResponseRequirements | null = null;\n for (const selector of selectors) {\n const result = await selector.select({ state, messages, task });\n if (!selected || result.requirements.maxUnsupportedClaims < selected.requirements.maxUnsupportedClaims) {\n selected = result;\n }\n }\n this.lastResponseRequirements = selected;\n return selected ?? {\n requirements: {\n allowsMemoryOnlyRecall: true,\n needsDirectToolEvidence: false,\n needsFileBackedClaims: false,\n allowsInference: true,\n maxUnsupportedClaims: 1,\n },\n rationale: 'Default runtime response requirements.',\n };\n }\n\n private async describeRepository(input: {\n workingDir: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n profile: RuntimeProfile | null;\n kernel: KernelState | null;\n }): Promise<RepositoryModel | null> {\n const providers = [\n createDefaultRepositoryDiagnosticsProvider({\n probes: [\n ...createBuiltInRepositoryProbes(),\n ...this.sdk.repositoryProbes,\n ...(input.profile?.repositoryProbes ?? []),\n ],\n }),\n ...this.sdk.repositoryDiagnosticsProviders,\n ...(input.profile?.repositoryDiagnosticsProviders ?? []),\n ];\n let model: RepositoryModel | null = null;\n for (const provider of providers) {\n const next = await provider.describe(input);\n if (!next) {\n continue;\n }\n model = model ? mergeRepositoryModels(model, next) : next;\n }\n return model;\n }\n\n private async resolveToolCapabilities(input: {\n workingDir: string;\n mode: AgentMode | 'assistant' | 'autonomous';\n profile: RuntimeProfile | null;\n repositoryModel: RepositoryModel | null;\n kernel: KernelState | null;\n }): Promise<ToolCapability[]> {\n const resolvers = [\n createDefaultToolCapabilityResolver(),\n ...this.sdk.toolCapabilityResolvers,\n ...(input.profile?.toolCapabilityResolvers ?? []),\n ];\n const capabilities = new Set<ToolCapability>();\n for (const resolver of resolvers) {\n const resolved = await resolver.resolve(input);\n for (const capability of resolved ?? []) {\n capabilities.add(capability);\n }\n }\n const blocked = new Set(input.profile?.toolPolicy?.blockedCapabilities ?? []);\n const allowed = input.profile?.toolPolicy?.allowedCapabilities;\n const filtered = Array.from(capabilities).filter((capability) => !blocked.has(capability));\n return allowed?.length\n ? filtered.filter((capability) => allowed.includes(capability))\n : filtered;\n }\n}\n\nfunction normalizeInterpretationPersistence(\n interpretation: TurnInterpretation | null,\n hasExistingSession: boolean,\n): TurnInterpretation | null {\n if (!interpretation || !interpretation.shouldPersist || interpretation.persistStrategy) {\n return interpretation;\n }\n\n return {\n ...interpretation,\n persistStrategy: hasExistingSession ? 'explicit_commit' : 'record_directly',\n };\n}\n\nfunction mergeRepositoryModels(\n base: RepositoryModel,\n next: RepositoryModel,\n): RepositoryModel {\n return {\n topology: next.topology !== 'unknown' ? next.topology : base.topology,\n stack: {\n languages: uniqueArray([...base.stack.languages, ...next.stack.languages]),\n frameworks: uniqueArray([...base.stack.frameworks, ...next.stack.frameworks]),\n runtimes: uniqueArray([...base.stack.runtimes, ...next.stack.runtimes]),\n packageManagers: uniqueArray([...base.stack.packageManagers, ...next.stack.packageManagers]),\n buildTools: uniqueArray([...base.stack.buildTools, ...next.stack.buildTools]),\n testTools: uniqueArray([...base.stack.testTools, ...next.stack.testTools]),\n },\n fingerprints: mergeFingerprints(base.fingerprints, next.fingerprints),\n workspace: {\n rootPath: next.workspace.rootPath || base.workspace.rootPath,\n packageRoots: uniqueArray([...base.workspace.packageRoots, ...next.workspace.packageRoots]),\n appRoots: uniqueArray([...base.workspace.appRoots, ...next.workspace.appRoots]),\n libraryRoots: uniqueArray([...base.workspace.libraryRoots, ...next.workspace.libraryRoots]),\n infraRoots: uniqueArray([...base.workspace.infraRoots, ...next.workspace.infraRoots]),\n docsRoots: uniqueArray([...base.workspace.docsRoots, ...next.workspace.docsRoots]),\n },\n conventions: {\n hasAdr: base.conventions.hasAdr || next.conventions.hasAdr,\n hasOpenApi: base.conventions.hasOpenApi || next.conventions.hasOpenApi,\n hasCi: base.conventions.hasCi || next.conventions.hasCi,\n hasLinting: base.conventions.hasLinting || next.conventions.hasLinting,\n hasFormatting: base.conventions.hasFormatting || next.conventions.hasFormatting,\n },\n riskSignals: uniqueArray([...base.riskSignals, ...next.riskSignals]),\n detectedAt: next.detectedAt,\n sources: uniqueArray([...base.sources, ...next.sources]),\n };\n}\n\nfunction mergeFingerprints(\n base: RepositoryFingerprints,\n next: RepositoryFingerprints,\n): RepositoryFingerprints {\n return {\n ecosystems: mergeSignalLists(base.ecosystems, next.ecosystems),\n languages: mergeSignalLists(base.languages, next.languages),\n frameworks: mergeSignalLists(base.frameworks, next.frameworks),\n runtimes: mergeSignalLists(base.runtimes, next.runtimes),\n packageManagers: mergeSignalLists(base.packageManagers, next.packageManagers),\n buildTools: mergeSignalLists(base.buildTools, next.buildTools),\n testTools: mergeSignalLists(base.testTools, next.testTools),\n };\n}\n\nfunction mergeSignalLists(\n base: RepositorySignal[],\n next: RepositorySignal[],\n): RepositorySignal[] {\n const merged = new Map<string, RepositorySignal>();\n for (const signal of [...base, ...next]) {\n const current = merged.get(signal.name);\n if (!current || signal.confidence > current.confidence) {\n merged.set(signal.name, {\n ...signal,\n sources: uniqueArray([...(current?.sources ?? []), ...signal.sources]),\n });\n } else {\n current.sources = uniqueArray([...current.sources, ...signal.sources]);\n }\n }\n return Array.from(merged.values()).sort((left, right) => right.confidence - left.confidence || left.name.localeCompare(right.name));\n}\n\nfunction getCurrentTaskForMessages(state: KernelState, messages: LLMMessage[]): string {\n const lastUserMessage = [...messages].reverse().find((message) => message.role === 'user');\n return typeof lastUserMessage?.content === 'string'\n ? lastUserMessage.content\n : state.currentTask;\n}\n\nfunction normalizeToolInput(input: unknown): Record<string, unknown> {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n return {};\n }\n return input as Record<string, unknown>;\n}\n\nfunction uniqueArray<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n\nfunction createRepositoryContextProjector() {\n return {\n id: 'repository-context-projector',\n project(input: {\n repositoryModel?: RepositoryModel | null;\n toolCapabilities?: ToolCapability[];\n }): string {\n const model = input.repositoryModel;\n if (!model) {\n return '';\n }\n\n const lines: string[] = ['# Repository Context'];\n lines.push(`- Topology: ${model.topology}`);\n\n const primarySignals = [\n model.fingerprints.ecosystems[0],\n model.fingerprints.languages[0],\n ].filter(Boolean) as RepositorySignal[];\n if (primarySignals.length > 0) {\n lines.push(\n `- Primary signals: ${primarySignals.map((signal) => `${signal.name} (${signal.confidence.toFixed(2)})`).join(', ')}`,\n );\n }\n\n if (model.stack.frameworks.length > 0) {\n lines.push(`- Frameworks: ${model.stack.frameworks.join(', ')}`);\n }\n if (model.stack.packageManagers.length > 0) {\n lines.push(`- Package managers: ${model.stack.packageManagers.join(', ')}`);\n }\n if (model.stack.buildTools.length > 0) {\n lines.push(`- Build tools: ${model.stack.buildTools.join(', ')}`);\n }\n if ((input.toolCapabilities ?? []).length > 0) {\n lines.push(`- Active tool capabilities: ${input.toolCapabilities?.join(', ')}`);\n }\n if (model.workspace.appRoots.length > 0 || model.workspace.packageRoots.length > 0 || model.workspace.libraryRoots.length > 0) {\n const layoutParts = [\n ...(model.workspace.packageRoots.length > 0 ? [`packages=${model.workspace.packageRoots.length}`] : []),\n ...(model.workspace.appRoots.length > 0 ? [`apps=${model.workspace.appRoots.length}`] : []),\n ...(model.workspace.libraryRoots.length > 0 ? [`libs=${model.workspace.libraryRoots.length}`] : []),\n ];\n if (layoutParts.length > 0) {\n lines.push(`- Workspace layout: ${layoutParts.join(', ')}`);\n }\n }\n\n return lines.join('\\n');\n },\n };\n}\n\nfunction extractFilePaths(metadata?: Record<string, unknown>): string[] | undefined {\n const direct = metadata?.filePath;\n if (typeof direct === 'string' && direct.trim()) {\n return [direct];\n }\n const paths = metadata?.filePaths;\n if (Array.isArray(paths)) {\n const normalized = paths.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n return normalized.length > 0 ? normalized : undefined;\n }\n return undefined;\n}\n\nfunction summarizeToolInput(toolName: string, input: Record<string, unknown>): string | undefined {\n if (typeof input.command === 'string' && input.command.trim()) {\n return input.command;\n }\n if (typeof input.path === 'string' && input.path.trim()) {\n return input.path;\n }\n if (typeof input.pattern === 'string' && input.pattern.trim()) {\n return input.pattern;\n }\n if (typeof input.query === 'string' && input.query.trim()) {\n return input.query;\n }\n if (typeof input.filePath === 'string' && input.filePath.trim()) {\n return input.filePath;\n }\n const firstPrimitive = Object.entries(input).find(([, value]) =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean',\n );\n if (firstPrimitive) {\n return `${firstPrimitive[0]}=${String(firstPrimitive[1])}`;\n }\n return toolName;\n}\n\nfunction summarizeToolEvidence(summary: string, toolInputSummary?: string): string {\n if (!summary.trim()) {\n return toolInputSummary ? `Executed ${toolInputSummary}` : 'Tool executed successfully';\n }\n return summary;\n}\n\nfunction shouldPromoteToolEvidence(\n toolName: string,\n summary: string,\n metadata: Record<string, unknown> | undefined,\n input: Record<string, unknown>,\n success: boolean,\n): boolean {\n if (toolName === 'report') {\n return false;\n }\n if (!success && toolName !== 'memory_correction' && toolName !== 'memory_constraint' && toolName !== 'shell_exec') {\n return false;\n }\n if (typeof metadata?.filePath === 'string' || Array.isArray(metadata?.filePaths)) {\n return true;\n }\n if (typeof input.command === 'string' && input.command.trim()) {\n return true;\n }\n if (typeof input.path === 'string' && input.path.trim()) {\n return true;\n }\n return summary.trim().length > 0;\n}\n\nconst MAX_EVIDENCE_SUMMARY_CHARS = 240;\n\nfunction buildKernelEvidenceSummary(\n toolName: string,\n summary: string,\n metadata: Record<string, unknown> | undefined,\n input: Record<string, unknown>,\n toolInputSummary?: string,\n): string {\n if (toolName === 'fs_read') {\n const filePath = typeof metadata?.filePath === 'string' ? metadata.filePath : toolInputSummary;\n const readFrom = typeof metadata?.readFrom === 'number' ? metadata.readFrom : undefined;\n const readTo = typeof metadata?.readTo === 'number' ? metadata.readTo : undefined;\n const totalLines = typeof metadata?.totalLines === 'number' ? metadata.totalLines : undefined;\n const range = readFrom && readTo ? ` lines ${readFrom}-${readTo}` : '';\n const total = totalLines ? ` of ${totalLines}` : '';\n return truncateEvidenceSummary(`Read ${filePath ?? 'file'}${range}${total}.`, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'grep_search') {\n const matches = typeof metadata?.totalMatches === 'number' ? metadata.totalMatches : undefined;\n const pattern = toolInputSummary ?? 'pattern';\n const base = matches !== undefined\n ? `Found ${matches} match(es) for \"${pattern}\".`\n : `Searched for \"${pattern}\".`;\n const refs = extractMatchReferences(summary, 3);\n return truncateEvidenceSummary(refs.length > 0 ? `${base} Top refs: ${refs.join(', ')}` : base, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'fs_list') {\n const targetPath = typeof metadata?.path === 'string' ? metadata.path : toolInputSummary;\n const directories = typeof metadata?.directoryCount === 'number' ? metadata.directoryCount : undefined;\n const files = typeof metadata?.fileCount === 'number' ? metadata.fileCount : undefined;\n return truncateEvidenceSummary(\n `Listed ${targetPath ?? 'directory'}${directories !== undefined || files !== undefined ? ` (${directories ?? 0} dirs, ${files ?? 0} files)` : ''}.`,\n MAX_EVIDENCE_SUMMARY_CHARS,\n );\n }\n\n if (toolName === 'shell_exec') {\n const compactOutput = compactMultilineSummary(summary, 4);\n const base = toolInputSummary ? `Command ${toolInputSummary}` : 'Shell command';\n return truncateEvidenceSummary(`${base} -> ${compactOutput}`, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n if (toolName === 'memory_correction' || toolName === 'memory_constraint') {\n return truncateEvidenceSummary(summary, MAX_EVIDENCE_SUMMARY_CHARS);\n }\n\n return truncateEvidenceSummary(summary, MAX_EVIDENCE_SUMMARY_CHARS);\n}\n\nfunction truncateEvidenceSummary(summary: string, maxChars: number): string {\n const normalized = summary.replace(/\\s+\\n/g, '\\n').trim();\n if (normalized.length <= maxChars) {\n return normalized;\n }\n return `${normalized.slice(0, maxChars - 1).trimEnd()}…`;\n}\n\nfunction compactMultilineSummary(summary: string, maxLines: number): string {\n const lines = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean)\n .slice(0, maxLines);\n return lines.join(' | ');\n}\n\nfunction extractMatchReferences(summary: string, limit: number): string[] {\n const refs = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => /:\\d+/.test(line) && !line.startsWith('['))\n .slice(0, limit);\n return refs;\n}\n\nfunction shouldPinToolEvidence(toolName: string, input: Record<string, unknown>): boolean {\n return toolName === 'shell_exec' && typeof input.command === 'string' && input.command.trim().length > 0;\n}\n\nfunction shouldRefreshKernelFromStore(toolName: string): boolean {\n return toolName === 'memory_correction' || toolName === 'memory_constraint';\n}\n\nasync function generateNarrativeRollupSummary(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): Promise<string | undefined> {\n if (!shouldGenerateNarrativeRollup(kernel, stats)) {\n return undefined;\n }\n\n const fallback = createDeterministicNarrativeSummary(kernel, stats);\n const llm = useLLM({ tier: 'small' });\n if (!llm?.complete) {\n return fallback;\n }\n\n try {\n const response = await llm.complete(\n buildRollupPrompt(kernel, stats),\n {\n systemPrompt: [\n 'Write a compact session rollup for an AI coding agent.',\n 'Use only the provided structured state.',\n 'Do not invent facts.',\n 'Mention only durable context that helps the next turn.',\n 'Keep it under 90 words.',\n ].join(' '),\n temperature: 0.1,\n maxTokens: 140,\n },\n );\n const text = response.content.trim();\n return text || fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction shouldGenerateNarrativeRollup(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): boolean {\n return stats.turnCount >= 8 || stats.toolCallCount >= 6 || kernel.memory.evidence.length >= 6;\n}\n\nfunction buildRollupPrompt(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): string {\n const sections = [\n `Objective: ${kernel.objective ?? kernel.currentTask}`,\n `Session stats: ${stats.turnCount} turns, ${stats.toolCallCount} tool calls`,\n ];\n\n if (kernel.constraints.length > 0) {\n sections.push(`Constraints:\\n- ${kernel.constraints.join('\\n- ')}`);\n }\n const corrections = kernel.memory.corrections.slice(-3).map((item) => item.content);\n if (corrections.length > 0) {\n sections.push(`Corrections:\\n- ${corrections.join('\\n- ')}`);\n }\n const decisions = kernel.memory.decisions.slice(-3).map((item) => item.content);\n if (decisions.length > 0) {\n sections.push(`Decisions:\\n- ${decisions.join('\\n- ')}`);\n }\n const evidence = kernel.memory.evidence\n .slice(-4)\n .map((item) => `${item.toolName ?? item.source}${item.toolInputSummary ? ` (${item.toolInputSummary})` : ''}: ${item.summary}`);\n if (evidence.length > 0) {\n sections.push(`Evidence:\\n- ${evidence.join('\\n- ')}`);\n }\n if (kernel.handoff?.summary) {\n sections.push(`Latest handoff:\\n${kernel.handoff.summary}`);\n }\n\n return sections.join('\\n\\n');\n}\n\nfunction createDeterministicNarrativeSummary(\n kernel: KernelState,\n stats: {\n turnCount: number;\n toolCallCount: number;\n },\n): string {\n const parts = [\n `Long session in progress with ${stats.turnCount} turns and ${stats.toolCallCount} tool calls.`,\n ];\n if (kernel.constraints.length > 0) {\n parts.push(`Keep honoring constraints: ${kernel.constraints.join('; ')}.`);\n }\n const anchors = kernel.memory.evidence\n .slice(-2)\n .map((item) => `${item.toolName ?? item.source}${item.toolInputSummary ? ` (${item.toolInputSummary})` : ''}`);\n if (anchors.length > 0) {\n parts.push(`Most recent anchors: ${anchors.join('; ')}.`);\n }\n if (kernel.handoff?.summary) {\n parts.push(`Latest outcome: ${kernel.handoff.summary}`);\n }\n return parts.join(' ');\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"@kb-labs/agent-contracts": "2.
|
|
4
|
-
"@kb-labs/agent-
|
|
3
|
+
"@kb-labs/agent-contracts": "2.17.0",
|
|
4
|
+
"@kb-labs/agent-sdk": "2.17.0",
|
|
5
|
+
"@kb-labs/agent-store": "2.17.0",
|
|
5
6
|
"@kb-labs/sdk": "2.16.0",
|
|
6
|
-
"@kb-labs/agent-kernel": "2.
|
|
7
|
-
"@kb-labs/agent-sdk": "2.16.0"
|
|
7
|
+
"@kb-labs/agent-kernel": "2.17.0"
|
|
8
8
|
},
|
|
9
9
|
"description": "Shared runtime engine and mode routing for KB Labs Agents.",
|
|
10
10
|
"devDependencies": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"tsup": "^8.5.0",
|
|
15
15
|
"typescript": "^5.6.3",
|
|
16
16
|
"vitest": "^3.2.4",
|
|
17
|
-
"@kb-labs/devkit": "2.
|
|
17
|
+
"@kb-labs/devkit": "2.17.0"
|
|
18
18
|
},
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=20.0.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"sideEffects": false,
|
|
37
37
|
"type": "module",
|
|
38
38
|
"types": "./dist/index.d.ts",
|
|
39
|
-
"version": "2.
|
|
39
|
+
"version": "2.17.0",
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsup --config tsup.config.ts",
|
|
42
42
|
"clean": "rimraf dist",
|