diff --git a/apps/kimi-code/test/cli/main.test.ts b/apps/kimi-code/test/cli/main.test.ts index 4a0c30b1f..5ec3a7afd 100644 --- a/apps/kimi-code/test/cli/main.test.ts +++ b/apps/kimi-code/test/cli/main.test.ts @@ -422,36 +422,36 @@ describe('main entry command handling', () => { }); }); -describe('kimi v2 prefix', () => { +describe('kimi beta prefix', () => { const ON = { KIMI_CODE_EXPERIMENTAL_FLAG: '1' }; const OFF: Readonly> = {}; describe('applyV2Prefix', () => { - it('passes argv through unchanged when there is no v2 token', () => { + it('passes argv through unchanged when there is no beta token', () => { const argv = ['node', 'kimi', 'server', 'run']; expect(applyV2Prefix(argv, ON)).toEqual({ argv }); expect(applyV2Prefix(argv, OFF)).toEqual({ argv }); }); - it('strips the v2 token when the experimental flag is on', () => { - expect(applyV2Prefix(['node', 'kimi', 'v2', 'server', 'run'], ON)).toEqual({ + it('strips the beta token when the experimental flag is on', () => { + expect(applyV2Prefix(['node', 'kimi', 'beta', 'server', 'run'], ON)).toEqual({ argv: ['node', 'kimi', 'server', 'run'], }); }); - it('strips a lone v2 token (default chat) when the flag is on', () => { - expect(applyV2Prefix(['node', 'kimi', 'v2'], ON)).toEqual({ + it('strips a lone beta token (default chat) when the flag is on', () => { + expect(applyV2Prefix(['node', 'kimi', 'beta'], ON)).toEqual({ argv: ['node', 'kimi'], }); }); - it('rejects the v2 prefix with a hint when the flag is off', () => { - const outcome = applyV2Prefix(['node', 'kimi', 'v2', 'server', 'run'], OFF); + it('rejects the beta prefix with a hint when the flag is off', () => { + const outcome = applyV2Prefix(['node', 'kimi', 'beta', 'server', 'run'], OFF); expect('error' in outcome && outcome.error).toMatch(/KIMI_CODE_EXPERIMENTAL_FLAG/); }); - it('does not treat a later v2 token as the prefix', () => { - const argv = ['node', 'kimi', 'server', 'v2']; + it('does not treat a later beta token as the prefix', () => { + const argv = ['node', 'kimi', 'server', 'beta']; expect(applyV2Prefix(argv, ON)).toEqual({ argv }); }); }); @@ -472,7 +472,7 @@ describe('kimi v2 prefix', () => { it('parses the stripped argv when the flag is on', () => { vi.stubEnv('KIMI_CODE_EXPERIMENTAL_FLAG', '1'); - process.argv = ['node', 'kimi', 'v2', 'server', 'run']; + process.argv = ['node', 'kimi', 'beta', 'server', 'run']; main(); @@ -481,7 +481,7 @@ describe('kimi v2 prefix', () => { it('exits with a hint and never parses when the flag is off', () => { vi.stubEnv('KIMI_CODE_EXPERIMENTAL_FLAG', ''); - process.argv = ['node', 'kimi', 'v2', 'server', 'run']; + process.argv = ['node', 'kimi', 'beta', 'server', 'run']; const writes: string[] = []; vi.spyOn(process.stderr, 'write').mockImplementation((chunk) => { writes.push(String(chunk)); diff --git a/apps/kimi-code/test/cli/server/server.test.ts b/apps/kimi-code/test/cli/server/server.test.ts index cf2f654a5..a60f52bc2 100644 --- a/apps/kimi-code/test/cli/server/server.test.ts +++ b/apps/kimi-code/test/cli/server/server.test.ts @@ -693,11 +693,11 @@ describe('server-v2 routing (KIMI_CODE_EXPERIMENTAL_FLAG)', () => { } }); - it('is the canonical experimental-v2 gate shared with the `kimi v2` prefix', async () => { + it('is the canonical experimental-v2 gate shared with the `kimi beta` prefix', async () => { const { isServerV2Enabled } = await import('#/cli/sub/server/run'); const { isKimiV2Enabled, KIMI_V2_ENV } = await import('#/cli/experimental-v2'); expect(KIMI_V2_ENV).toBe('KIMI_CODE_EXPERIMENTAL_FLAG'); - // Server routing and the `kimi v2` prefix must agree on the exact same gate. + // Server routing and the `kimi beta` prefix must agree on the exact same gate. expect(isServerV2Enabled).toBe(isKimiV2Enabled); }); }); diff --git a/packages/agent-core-v2/scripts/debarrel.mjs b/packages/agent-core-v2/scripts/debarrel.mjs new file mode 100644 index 000000000..5d03460ca --- /dev/null +++ b/packages/agent-core-v2/scripts/debarrel.mjs @@ -0,0 +1,515 @@ +#!/usr/bin/env node +/** + * debarrel.mjs — agent-core-v2 barrel removal tool (ts-morph). + * + * Rewrites `#/` barrel imports/exports to precise leaf-file specifiers and + * regenerates the package entry `src/index.ts` so it loads every domain leaf + * (triggering all top-level `register*` side effects) without domain barrels. + * + * Modes: + * (default) rewrite all consumer files (src + test) EXCEPT src/index.ts + * --only= limit consumer rewriting to one barrel, e.g. app/event + * --entry regenerate src/index.ts only (no consumer rewriting) + * --delete-barrels delete every domain barrel (src/**/index.ts except entry) + * --list-registers print the top-level register* files (coverage set) + * --verify-coverage exit non-zero if any register file is unreachable from entry + * --dry-run report planned edits without writing + */ +import { Project } from 'ts-morph'; +import path from 'node:path'; +import fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const PKG = path.resolve(__dirname, '..'); +const SRC = path.join(PKG, 'src'); +const ENTRY = path.join(SRC, 'index.ts'); + +const args = process.argv.slice(2); +const DRY = args.includes('--dry-run'); +const ONLY = (args.find((a) => a.startsWith('--only=')) || '').slice('--only='.length) || null; +const ENTRY_ONLY = args.includes('--entry'); +const DELETE_BARRELS = args.includes('--delete-barrels'); +const LIST_REGS = args.includes('--list-registers'); +const VERIFY = args.includes('--verify-coverage'); + +const project = new Project({ tsConfigFilePath: path.join(PKG, 'tsconfig.json') }); + +const relSpec = (absFile) => + '#/' + path.relative(SRC, absFile).split(path.sep).join('/').replace(/\.ts$/, ''); + +const isUnderSrc = (abs) => abs === SRC || abs.startsWith(SRC + path.sep); +const isIndexBasename = (abs) => path.basename(abs) === 'index.ts'; +const isBarrelFile = (sf) => { + const f = sf.getFilePath(); + return isUnderSrc(f) && isIndexBasename(f) && f !== ENTRY; +}; +const resolvedFile = (decl) => decl.getModuleSpecifierSourceFile() || null; +const barrelOfDecl = (decl) => { + const sf = resolvedFile(decl); + return sf && isBarrelFile(sf) ? sf : null; +}; + +// Resolve a name exported by `barrel` to the leaf file that declares it and the +// name that leaf uses to export it (handles `export { A as B }` at barrel level). +function resolveName(barrel, name) { + const decls = barrel.getExportedDeclarations().get(name); + if (!decls || decls.length === 0) return null; + const decl = decls[0]; + const leaf = decl.getSourceFile(); + const sym = decl.getSymbol(); + let leafName = null; + for (const [ln, lds] of leaf.getExportedDeclarations()) { + if (lds.some((d) => d.getSymbol() === sym)) { + leafName = ln; + break; + } + } + if (leafName == null) leafName = (sym && sym.getName()) || name; + return { leafFile: leaf.getFilePath(), leafName }; +} + +// Ordered re-export clauses of a barrel (recursively inlines nested barrels), +// preserving source order so `export *` collision resolution is unchanged. +function expandBarrelClauses(barrel) { + const clauses = []; + for (const ed of barrel.getExportDeclarations()) { + const target = resolvedFile(ed); + if (!target) continue; + if (isBarrelFile(target)) { + clauses.push(...expandBarrelClauses(target)); + continue; + } + const file = target.getFilePath(); + const isStar = + ed.getNamedExports().length === 0 && !ed.getNamespaceExport(); + if (isStar) { + clauses.push({ kind: 'star', file }); + } else if (ed.getNamespaceExport()) { + clauses.push({ kind: 'namespace', file, name: ed.getNamespaceExport().getName() }); + } else { + const declType = ed.isTypeOnly(); + const specs = ed.getNamedExports().map((s) => ({ + name: s.getName(), + alias: s.getAliasNode()?.getText(), + isTypeOnly: declType || s.isTypeOnly(), + })); + clauses.push({ kind: 'named', file, isTypeOnly: declType, specs }); + } + } + return clauses; +} + +function allLeavesUnderDir(dirAbs) { + const out = []; + const walk = (d) => { + for (const ent of fs.readdirSync(d, { withFileTypes: true })) { + const p = path.join(d, ent.name); + if (ent.isDirectory()) walk(p); + else if ( + ent.isFile() && + p.endsWith('.ts') && + !p.endsWith('.test.ts') && + !p.endsWith('.d.ts') && + path.basename(p) !== 'index.ts' + ) { + out.push(p); + } + } + }; + walk(dirAbs); + return out.sort(); +} + +// --------------------------------------------------------------------------- +// Consumer rewriting (imports + named exports + export *) for a single file. +// --------------------------------------------------------------------------- +function rewriteConsumerFile(sf, onlyBarrelPath) { + const report = { imports: 0, exports: 0, manuals: [], sideEffects: 0 }; + + // Imports. + for (const decl of [...sf.getImportDeclarations()]) { + const barrel = barrelOfDecl(decl); + if (!barrel) continue; + if (onlyBarrelPath && barrel.getFilePath() !== onlyBarrelPath) continue; + + if (decl.getNamespaceImport()) { + report.manuals.push({ sf: sf.getFilePath(), text: decl.getText(), why: 'namespace import' }); + continue; + } + const hasDefault = !!decl.getDefaultImport(); + const named = decl.getNamedImports(); + if (!hasDefault && named.length === 0) { + // side-effect: import '#/B' -> load each leaf of B. + const leaves = [...new Set(expandBarrelClauses(barrel).map((c) => c.file))]; + const idx = sf.getImportDeclarations().indexOf(decl); + sf.insertImportDeclarations( + idx, + leaves.map((leaf) => ({ moduleSpecifier: relSpec(leaf) })), + ); + decl.remove(); + report.sideEffects += leaves.length; + report.imports++; + continue; + } + + const declType = decl.isTypeOnly(); + const groups = new Map(); // leafFile -> [{name, alias, isTypeOnly}] + const add = (leaf, spec) => { + if (!groups.has(leaf)) groups.set(leaf, []); + groups.get(leaf).push(spec); + }; + + if (hasDefault) { + const r = resolveName(barrel, 'default'); + if (!r) report.manuals.push({ sf: sf.getFilePath(), text: decl.getText(), why: 'default import unresolved' }); + else add(r.leafFile, { default: decl.getDefaultImport().getText() }); + } + for (const s of named) { + const lookup = s.getName(); // module-exported name + const local = s.getAliasNode()?.getText() || s.getName(); + const r = resolveName(barrel, lookup); + if (!r) { + report.manuals.push({ sf: sf.getFilePath(), text: s.getText(), why: 'named import unresolved' }); + continue; + } + add(r.leafFile, { + name: r.leafName, + alias: local !== r.leafName ? local : undefined, + isTypeOnly: declType || s.isTypeOnly(), + }); + } + const structures = buildImportStructures(groups); + const idx = sf.getImportDeclarations().indexOf(decl); + if (structures.length) sf.insertImportDeclarations(idx, structures); + decl.remove(); + report.imports++; + } + + // Exports. + for (const decl of [...sf.getExportDeclarations()]) { + const barrel = barrelOfDecl(decl); + if (!barrel) continue; + if (onlyBarrelPath && barrel.getFilePath() !== onlyBarrelPath) continue; + + const isStar = decl.getNamedExports().length === 0 && !decl.getNamespaceExport(); + if (isStar) { + const clauses = expandBarrelClauses(barrel); + decl.replaceWithText(clauses.map(exportClauseToText).join('\n')); + report.exports++; + continue; + } + if (decl.getNamespaceExport()) { + report.manuals.push({ sf: sf.getFilePath(), text: decl.getText(), why: 'namespace export' }); + continue; + } + // named re-export + const declType = decl.isTypeOnly(); + const groups = new Map(); + for (const s of decl.getNamedExports()) { + const lookup = s.getName(); // name the consumer re-exports (= barrel's exported name) + const exportedAs = s.getAliasNode()?.getText() || s.getName(); + const r = resolveName(barrel, lookup); + if (!r) { + report.manuals.push({ sf: sf.getFilePath(), text: s.getText(), why: 'named export unresolved' }); + continue; + } + if (!groups.has(r.leafFile)) groups.set(r.leafFile, { specs: [], allType: true }); + const g = groups.get(r.leafFile); + const t = declType || s.isTypeOnly(); + g.allType = g.allType && t; + g.specs.push({ + name: r.leafName, + alias: exportedAs !== r.leafName ? exportedAs : undefined, + isTypeOnly: t, + }); + } + const lines = []; + for (const [leaf, { specs, allType }] of groups) { + lines.push(renderNamedExport(relSpec(leaf), specs, allType)); + } + decl.replaceWithText(lines.join('\n')); + report.exports++; + } + return report; +} + +function buildImportStructures(groups) { + const structures = []; + for (const [leaf, specs] of groups) { + const spec = relSpec(leaf); + const defaults = specs.filter((s) => s.default); + const namedSpecs = specs.filter((s) => !s.default); + for (const d of defaults) { + structures.push({ moduleSpecifier: spec, defaultImport: d.default }); + } + const values = namedSpecs.filter((s) => !s.isTypeOnly); + const types = namedSpecs.filter((s) => s.isTypeOnly); + if (values.length) + structures.push({ + moduleSpecifier: spec, + namedImports: values.map((v) => ({ name: v.name, alias: v.alias })), + }); + if (types.length) + structures.push({ + moduleSpecifier: spec, + isTypeOnly: true, + namedImports: types.map((t) => ({ name: t.name, alias: t.alias })), + }); + } + return structures; +} + +function renderNamedExport(spec, specs, allType) { + const body = specs + .map((s) => `${allType ? '' : s.isTypeOnly ? 'type ' : ''}${s.name}${s.alias ? ' as ' + s.alias : ''}`) + .join(', '); + return `${allType ? 'export type' : 'export'} { ${body} } from '${spec}';`; +} + +function exportClauseToText(c) { + if (c.kind === 'star') return `export * from '${relSpec(c.file)}';`; + if (c.kind === 'namespace') return `export * as ${c.name} from '${relSpec(c.file)}';`; + return renderNamedExport(relSpec(c.file), c.specs, c.isTypeOnly); +} + +// --------------------------------------------------------------------------- +// Entry (src/index.ts) regeneration. +// --------------------------------------------------------------------------- +function regenerateEntry() { + const entrySf = project.getSourceFileOrThrow(ENTRY); + const original = entrySf.getFullText(); + const headerMatch = original.match(/^\s*\/\*\*[\s\S]*?\*\//); + const header = headerMatch ? headerMatch[0] : '/** agent-core-v2 public surface. */'; + + // First pass: classify each referenced barrel and how it is referenced. + /** @type {Array<{decl: any, barrel: any, mode: 'star'|'named'|'side'}>} */ + const refs = []; + for (const decl of [...entrySf.getExportDeclarations(), ...entrySf.getImportDeclarations()]) { + const barrel = barrelOfDecl(decl); + if (!barrel) continue; + let mode; + if (decl.getKindName() === 'ImportDeclaration') mode = 'side'; + else { + const isStar = decl.getNamedExports().length === 0 && !decl.getNamespaceExport(); + mode = isStar ? 'star' : 'named'; + } + refs.push({ decl, barrel, mode }); + } + + const publicLines = []; + const loadingLines = []; + const processed = new Set(); + + for (const { decl, barrel, mode } of refs) { + const bf = barrel.getFilePath(); + const dirAbs = path.dirname(bf); + const allLeaves = allLeavesUnderDir(dirAbs); + const clauses = expandBarrelClauses(barrel); + const starLeaves = new Set(clauses.filter((c) => c.kind === 'star').map((c) => c.file)); + + if (mode === 'star') { + // Public: replay the barrel's clauses in order against precise leaves. + for (const c of clauses) publicLines.push(exportClauseToText(c)); + } else if (mode === 'named') { + const declType = decl.isTypeOnly(); + const groups = new Map(); + for (const s of decl.getNamedExports()) { + const lookup = s.getName(); + const exportedAs = s.getAliasNode()?.getText() || s.getName(); + const r = resolveName(barrel, lookup); + if (!r) continue; + if (!groups.has(r.leafFile)) groups.set(r.leafFile, { specs: [], allType: true }); + const g = groups.get(r.leafFile); + const t = declType || s.isTypeOnly(); + g.allType = g.allType && t; + g.specs.push({ + name: r.leafName, + alias: exportedAs !== r.leafName ? exportedAs : undefined, + isTypeOnly: t, + }); + } + for (const [leaf, { specs, allType }] of groups) { + publicLines.push(renderNamedExport(relSpec(leaf), specs, allType)); + } + } + // Loading: any leaf of this domain not already pulled in by an `export *` + // line must be imported for its side effects (registers). + for (const leaf of allLeaves) { + const key = leaf; + if (starLeaves.has(leaf)) continue; // loaded by export * + if (processed.has(key)) continue; + processed.add(key); + loadingLines.push(`import '${relSpec(leaf)}';`); + } + } + + const body = [ + header, + '', + '// Public surface — precise re-exports of each domain leaf (no barrels).', + ...publicLines, + '', + '// Side-effect loading — ensure every domain leaf (and its top-level', + '// `register*` calls) is evaluated when the package is imported.', + ...loadingLines, + '', + ].join('\n'); + + if (!DRY) fs.writeFileSync(ENTRY, body); + return { publicLines: publicLines.length, loadingLines: loadingLines.length }; +} + +// --------------------------------------------------------------------------- +// Register-file enumeration + coverage verification. +// --------------------------------------------------------------------------- +const REGISTER_NAMES = new Set([ + 'registerScopedService', + 'registerTool', + 'registerErrorDomain', + 'registerConfigSection', + 'registerAgentProfile', + 'registerFlagDefinition', +]); + +function isModuleScoped(call) { + let n = call.getParent(); + while (n) { + const k = n.getKindName(); + if ( + k === 'FunctionDeclaration' || + k === 'FunctionExpression' || + k === 'ArrowFunction' || + k === 'MethodDeclaration' || + k === 'Constructor' || + k === 'ClassDeclaration' + ) { + return false; + } + n = n.getParent(); + } + return true; +} + +function findRegisterFiles() { + const files = []; + for (const sf of project.getSourceFiles()) { + const f = sf.getFilePath(); + if (!isUnderSrc(f) || f.endsWith('.test.ts')) continue; + let hit = false; + sf.forEachDescendant((node) => { + if (hit) return; + if (node.getKindName() !== 'CallExpression') return; + const expr = node.getExpression(); + if (expr.getKindName() !== 'Identifier') return; + if (!REGISTER_NAMES.has(expr.getText())) return; + if (isModuleScoped(node)) hit = true; + }); + if (hit) files.push(f); + } + return files.sort(); +} + +function reachedFromEntry() { + const reached = new Set(); + const visit = (sf) => { + const f = sf.getFilePath(); + if (reached.has(f)) return; + reached.add(f); + if (!isUnderSrc(f)) return; + const edges = [...sf.getImportDeclarations(), ...sf.getExportDeclarations()]; + for (const d of edges) { + if (d.isTypeOnly && d.isTypeOnly()) continue; // type-only edges don't execute + const t = resolvedFile(d); + if (t && isUnderSrc(t.getFilePath())) visit(t); + } + }; + visit(project.getSourceFileOrThrow(ENTRY)); + return reached; +} + +function verifyCoverage() { + const regs = findRegisterFiles(); + const reached = reachedFromEntry(); + const missing = regs.filter((f) => !reached.has(f)); + console.log(`register files: ${regs.length}; reachable from entry: ${reached.size}; missing: ${missing.length}`); + if (missing.length) { + console.log('MISSING (not reachable from src/index.ts):'); + for (const m of missing) console.log(' ' + path.relative(PKG, m)); + return false; + } + return true; +} + +function deleteBarrels() { + let n = 0; + for (const sf of project.getSourceFiles()) { + if (!isBarrelFile(sf)) continue; + const f = sf.getFilePath(); + if (!DRY) fs.unlinkSync(f); + n++; + } + return n; +} + +// --------------------------------------------------------------------------- +// Main dispatch. +// --------------------------------------------------------------------------- +function main() { + if (LIST_REGS) { + for (const f of findRegisterFiles()) console.log(path.relative(PKG, f)); + return; + } + if (VERIFY) { + const ok = verifyCoverage(); + process.exit(ok ? 0 : 1); + } + if (ENTRY_ONLY) { + const r = regenerateEntry(); + console.log(`entry regenerated: ${r.publicLines} public lines, ${r.loadingLines} loading lines${DRY ? ' (dry-run)' : ''}`); + return; + } + + let onlyBarrelPath = null; + if (ONLY) { + onlyBarrelPath = path.join(SRC, ONLY, 'index.ts'); + if (!fs.existsSync(onlyBarrelPath)) { + console.error(`--only target not a barrel: ${path.relative(PKG, onlyBarrelPath)}`); + process.exit(2); + } + } + + const totals = { files: 0, imports: 0, exports: 0, sideEffects: 0, manuals: [] }; + for (const sf of project.getSourceFiles()) { + const f = sf.getFilePath(); + if (!isUnderSrc(f) && !f.startsWith(path.join(PKG, 'test') + path.sep)) continue; + if (f === ENTRY) continue; // entry handled by --entry + const before = sf.getFullText(); + const r = rewriteConsumerFile(sf, onlyBarrelPath); + if (sf.getFullText() !== before) { + totals.files++; + totals.imports += r.imports; + totals.exports += r.exports; + totals.sideEffects += r.sideEffects; + } + totals.manuals.push(...r.manuals); + } + + if (!DRY) project.saveSync(); + + console.log( + `rewrote ${totals.files} files: ${totals.imports} barrel imports, ${totals.exports} barrel exports, ${totals.sideEffects} side-effect loads${DRY ? ' (dry-run)' : ''}`, + ); + if (totals.manuals.length) { + console.log(`MANUAL (${totals.manuals.length}) — could not auto-split:`); + for (const m of totals.manuals) + console.log(` ${path.relative(PKG, m.sf)} :: ${m.why} :: ${m.text.replace(/\s+/g, ' ').slice(0, 120)}`); + } + + if (DELETE_BARRELS) { + const n = deleteBarrels(); + console.log(`deleted ${n} domain barrels${DRY ? ' (dry-run)' : ''}`); + } +} + +main(); diff --git a/packages/agent-core-v2/src/_base/errors/serialize.ts b/packages/agent-core-v2/src/_base/errors/serialize.ts index d054183c1..d6af2bcfc 100644 --- a/packages/agent-core-v2/src/_base/errors/serialize.ts +++ b/packages/agent-core-v2/src/_base/errors/serialize.ts @@ -3,13 +3,7 @@ * portable `ErrorPayload` that crosses process / language boundaries. */ -import { - APIConnectionError, - APIEmptyResponseError, - APIStatusError, - APITimeoutError, - ChatProviderError, -} from '#/app/llmProtocol'; +import { APIConnectionError, APIEmptyResponseError, APIStatusError, APITimeoutError, ChatProviderError } from '#/app/llmProtocol/errors'; import { CoreErrors, errorInfo, isErrorCode } from './codes'; import type { ErrorCode } from './codes'; diff --git a/packages/agent-core-v2/src/_base/tools/support/image-compress.ts b/packages/agent-core-v2/src/_base/tools/support/image-compress.ts index 5ddd20af4..fb98431de 100644 --- a/packages/agent-core-v2/src/_base/tools/support/image-compress.ts +++ b/packages/agent-core-v2/src/_base/tools/support/image-compress.ts @@ -23,7 +23,7 @@ * caller read a region of the original back at full fidelity. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { sniffImageDimensions } from './file-type'; diff --git a/packages/agent-core-v2/src/_base/utils/tokens.ts b/packages/agent-core-v2/src/_base/utils/tokens.ts index 0f87e7c63..5a5229af0 100644 --- a/packages/agent-core-v2/src/_base/utils/tokens.ts +++ b/packages/agent-core-v2/src/_base/utils/tokens.ts @@ -2,7 +2,8 @@ * Character-based token-count estimates for messages, tools, and content parts. */ -import type { ContentPart, Message, Tool } from '#/app/llmProtocol'; +import type { ContentPart, Message } from '#/app/llmProtocol/message'; +import type { Tool } from '#/app/llmProtocol/tool'; const messageTokenEstimateCache = new WeakMap(); diff --git a/packages/agent-core-v2/src/agent/blob/agentBlobService.ts b/packages/agent-core-v2/src/agent/blob/agentBlobService.ts index 585bbbbd5..2c9def700 100644 --- a/packages/agent-core-v2/src/agent/blob/agentBlobService.ts +++ b/packages/agent-core-v2/src/agent/blob/agentBlobService.ts @@ -5,9 +5,9 @@ * loads them back on read. Bound at Agent scope. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; export const BLOBREF_PROTOCOL = 'blobref:'; export const MISSING_MEDIA_PLACEHOLDER = '[media missing]'; diff --git a/packages/agent-core-v2/src/agent/blob/agentBlobServiceImpl.ts b/packages/agent-core-v2/src/agent/blob/agentBlobServiceImpl.ts index 9ef97cef2..ee1107aa4 100644 --- a/packages/agent-core-v2/src/agent/blob/agentBlobServiceImpl.ts +++ b/packages/agent-core-v2/src/agent/blob/agentBlobServiceImpl.ts @@ -8,7 +8,7 @@ */ import { createHash } from 'node:crypto'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentScopeContext } from '#/agent/scopeContext'; diff --git a/packages/agent-core-v2/src/agent/contextInjector/contextInjector.ts b/packages/agent-core-v2/src/agent/contextInjector/contextInjector.ts index 570adc619..d5b126e5c 100644 --- a/packages/agent-core-v2/src/agent/contextInjector/contextInjector.ts +++ b/packages/agent-core-v2/src/agent/contextInjector/contextInjector.ts @@ -1,5 +1,5 @@ -import { createDecorator } from "#/_base/di"; -import type { IDisposable } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; +import type { IDisposable } from "#/_base/di/lifecycle"; export interface ContextInjectionContext { /** Live positions of this variant's injections in the current history, ascending. */ diff --git a/packages/agent-core-v2/src/agent/contextInjector/contextInjectorService.ts b/packages/agent-core-v2/src/agent/contextInjector/contextInjectorService.ts index faf542447..d853e1064 100644 --- a/packages/agent-core-v2/src/agent/contextInjector/contextInjectorService.ts +++ b/packages/agent-core-v2/src/agent/contextInjector/contextInjectorService.ts @@ -1,7 +1,4 @@ -import { - Disposable, - toDisposable, -} from "#/_base/di"; +import { Disposable, toDisposable } from "#/_base/di/lifecycle"; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; @@ -9,7 +6,7 @@ import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentLoopService } from '#/agent/loop'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; import { IAgentTurnService } from '#/agent/turn'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import type { ContextMessage } from '#/agent/contextMemory'; import { IAgentContextInjectorService, diff --git a/packages/agent-core-v2/src/agent/contextInjector/pluginSessionStart.ts b/packages/agent-core-v2/src/agent/contextInjector/pluginSessionStart.ts index b92b615e1..722f44397 100644 --- a/packages/agent-core-v2/src/agent/contextInjector/pluginSessionStart.ts +++ b/packages/agent-core-v2/src/agent/contextInjector/pluginSessionStart.ts @@ -17,11 +17,11 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { escapeXmlAttr } from '#/_base/utils/xml-escape'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; -import { ILogService } from '#/_base/log'; -import { IPluginService } from '#/app/plugin'; +import { ILogService } from '#/_base/log/log'; +import { IPluginService } from '#/app/plugin/plugin'; import type { EnabledPluginSessionStart } from '#/app/plugin/types'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import type { SkillCatalog, SkillDefinition } from '#/app/skillCatalog/types'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; diff --git a/packages/agent-core-v2/src/agent/contextMemory/contextMemory.ts b/packages/agent-core-v2/src/agent/contextMemory/contextMemory.ts index 0217e7839..e88295a81 100644 --- a/packages/agent-core-v2/src/agent/contextMemory/contextMemory.ts +++ b/packages/agent-core-v2/src/agent/contextMemory/contextMemory.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { UndoCut } from './contextOps'; import type { ContextMessage } from './types'; diff --git a/packages/agent-core-v2/src/agent/contextMemory/contextMemoryService.ts b/packages/agent-core-v2/src/agent/contextMemory/contextMemoryService.ts index 7cda8fcd8..252de61d3 100644 --- a/packages/agent-core-v2/src/agent/contextMemory/contextMemoryService.ts +++ b/packages/agent-core-v2/src/agent/contextMemory/contextMemoryService.ts @@ -14,10 +14,10 @@ * Agent scope. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentWireService, type IWireService } from '#/wire'; import { IAgentContextMemoryService, type ContextCompactionInput } from './contextMemory'; diff --git a/packages/agent-core-v2/src/agent/contextMemory/contextOps.ts b/packages/agent-core-v2/src/agent/contextMemory/contextOps.ts index e49fb8af2..e66732960 100644 --- a/packages/agent-core-v2/src/agent/contextMemory/contextOps.ts +++ b/packages/agent-core-v2/src/agent/contextMemory/contextOps.ts @@ -31,7 +31,7 @@ * data that was compacted away during the session. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { defineModel, defineOp, type PartsTransformer } from '#/wire'; import type { PersistedRecord } from '#/wire'; diff --git a/packages/agent-core-v2/src/agent/contextMemory/loopEventFold.ts b/packages/agent-core-v2/src/agent/contextMemory/loopEventFold.ts index 614279648..1b5a69d73 100644 --- a/packages/agent-core-v2/src/agent/contextMemory/loopEventFold.ts +++ b/packages/agent-core-v2/src/agent/contextMemory/loopEventFold.ts @@ -32,7 +32,7 @@ * concurrent replays of different agent scopes never share fold state. */ -import { createToolMessage, type ContentPart, type ToolCall } from '#/app/llmProtocol'; +import { createToolMessage, type ContentPart, type ToolCall } from '#/app/llmProtocol/message'; import type { ContextMessage } from './types'; diff --git a/packages/agent-core-v2/src/agent/contextMemory/types.ts b/packages/agent-core-v2/src/agent/contextMemory/types.ts index 83412323a..a1542bf0b 100644 --- a/packages/agent-core-v2/src/agent/contextMemory/types.ts +++ b/packages/agent-core-v2/src/agent/contextMemory/types.ts @@ -1,4 +1,4 @@ -import type { ContentPart, Message } from '#/app/llmProtocol'; +import type { ContentPart, Message } from '#/app/llmProtocol/message'; import type { AgentTaskStatus } from '#/agent/task'; import type { CronJobOrigin, CronMissedOrigin } from '@moonshot-ai/protocol'; diff --git a/packages/agent-core-v2/src/agent/contextProjector/contextProjector.ts b/packages/agent-core-v2/src/agent/contextProjector/contextProjector.ts index a3ab95b43..6e86d341a 100644 --- a/packages/agent-core-v2/src/agent/contextProjector/contextProjector.ts +++ b/packages/agent-core-v2/src/agent/contextProjector/contextProjector.ts @@ -1,5 +1,5 @@ -import { createDecorator } from "#/_base/di"; -import type { Message } from '#/app/llmProtocol'; +import { createDecorator } from "#/_base/di/instantiation"; +import type { Message } from '#/app/llmProtocol/message'; import type { ContextMessage } from '#/agent/contextMemory'; diff --git a/packages/agent-core-v2/src/agent/contextProjector/contextProjectorService.ts b/packages/agent-core-v2/src/agent/contextProjector/contextProjectorService.ts index 8995dbb90..21a0031f5 100644 --- a/packages/agent-core-v2/src/agent/contextProjector/contextProjectorService.ts +++ b/packages/agent-core-v2/src/agent/contextProjector/contextProjectorService.ts @@ -1,12 +1,10 @@ -import { - IInstantiationService, -} from "#/_base/di"; +import { IInstantiationService } from "#/_base/di/instantiation"; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import type { ContextMessage } from '#/agent/contextMemory/types'; import { ErrorCodes, KimiError } from '#/errors'; import { IAgentMicroCompactionService } from '#/agent/microCompaction'; -import type { ContentPart, Message } from '#/app/llmProtocol'; +import type { ContentPart, Message } from '#/app/llmProtocol/message'; import { IAgentContextProjectorService } from './contextProjector'; export class AgentContextProjectorService implements IAgentContextProjectorService { diff --git a/packages/agent-core-v2/src/agent/contextSize/contextSize.ts b/packages/agent-core-v2/src/agent/contextSize/contextSize.ts index 70f79785d..eeeac6e9c 100644 --- a/packages/agent-core-v2/src/agent/contextSize/contextSize.ts +++ b/packages/agent-core-v2/src/agent/contextSize/contextSize.ts @@ -1,5 +1,6 @@ -import { createDecorator } from '#/_base/di'; -import type { Message, TokenUsage } from '#/app/llmProtocol'; +import { createDecorator } from '#/_base/di/instantiation'; +import type { Message } from '#/app/llmProtocol/message'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; export interface ContextSizeStatus { readonly contextTokens: number; diff --git a/packages/agent-core-v2/src/agent/contextSize/contextSizeService.ts b/packages/agent-core-v2/src/agent/contextSize/contextSizeService.ts index fb3c30120..7ce75953f 100644 --- a/packages/agent-core-v2/src/agent/contextSize/contextSizeService.ts +++ b/packages/agent-core-v2/src/agent/contextSize/contextSizeService.ts @@ -14,13 +14,14 @@ * persisted (see `contextSizeOps`). Bound at Agent scope. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { estimateTokensForMessage } from '#/_base/utils/tokens'; import type { ContextMessage } from '#/agent/contextMemory'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; -import type { Message, TokenUsage } from '#/app/llmProtocol'; +import type { Message } from '#/app/llmProtocol/message'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import { IAgentWireService, type IWireService } from '#/wire'; import { IAgentContextSizeService, type ContextSizeStatus } from './contextSize'; diff --git a/packages/agent-core-v2/src/agent/externalHooks/externalHooks.ts b/packages/agent-core-v2/src/agent/externalHooks/externalHooks.ts index 217e26e3f..3eec4f23b 100644 --- a/packages/agent-core-v2/src/agent/externalHooks/externalHooks.ts +++ b/packages/agent-core-v2/src/agent/externalHooks/externalHooks.ts @@ -7,7 +7,7 @@ * to invoke configured external commands. */ -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; import type { HookEngine } from './engine'; export interface RenderedExternalHookResult { diff --git a/packages/agent-core-v2/src/agent/externalHooks/externalHooksService.ts b/packages/agent-core-v2/src/agent/externalHooks/externalHooksService.ts index c1a6c9a43..69fd0c1cb 100644 --- a/packages/agent-core-v2/src/agent/externalHooks/externalHooksService.ts +++ b/packages/agent-core-v2/src/agent/externalHooks/externalHooksService.ts @@ -13,7 +13,8 @@ * this service directly. */ -import { Disposable, IInstantiationService } from '#/_base/di'; +import { IInstantiationService } from '#/_base/di/instantiation'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { isUserCancellation } from '#/_base/utils/abort'; @@ -34,7 +35,7 @@ import { type PromptSubmitContext, } from '#/agent/prompt'; import type { HookResultEvent, TurnEndReason } from '@moonshot-ai/protocol'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import type { ExecutableToolResult, ToolDidExecuteContext, @@ -44,9 +45,9 @@ import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentTurnService, } from '#/agent/turn'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigService } from '#/app/config'; -import { IPluginService } from '#/app/plugin'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigService } from '#/app/config/config'; +import { IPluginService } from '#/app/plugin/plugin'; import { toKimiErrorPayload } from '#/errors'; import { HOOKS_SECTION, type HookDefConfig } from './configSection'; diff --git a/packages/agent-core-v2/src/agent/externalHooks/types.ts b/packages/agent-core-v2/src/agent/externalHooks/types.ts index 5bb90ad47..aa614f369 100644 --- a/packages/agent-core-v2/src/agent/externalHooks/types.ts +++ b/packages/agent-core-v2/src/agent/externalHooks/types.ts @@ -1,4 +1,4 @@ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; export const HOOK_EVENT_TYPES = [ 'PreToolUse', diff --git a/packages/agent-core-v2/src/agent/fullCompaction/errors.ts b/packages/agent-core-v2/src/agent/fullCompaction/errors.ts index 843e5aebd..0aa153ce7 100644 --- a/packages/agent-core-v2/src/agent/fullCompaction/errors.ts +++ b/packages/agent-core-v2/src/agent/fullCompaction/errors.ts @@ -2,7 +2,7 @@ * `fullCompaction` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const FullCompactionErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/fullCompaction/fullCompaction.ts b/packages/agent-core-v2/src/agent/fullCompaction/fullCompaction.ts index 217253758..2d91eff9b 100644 --- a/packages/agent-core-v2/src/agent/fullCompaction/fullCompaction.ts +++ b/packages/agent-core-v2/src/agent/fullCompaction/fullCompaction.ts @@ -2,7 +2,7 @@ import type { CompactionResult, CompactionSource, } from './types'; -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { Hooks } from '#/hooks'; export type FullCompactionCompleteData = Omit; diff --git a/packages/agent-core-v2/src/agent/fullCompaction/fullCompactionService.ts b/packages/agent-core-v2/src/agent/fullCompaction/fullCompactionService.ts index b06c7c2b3..a51800d9a 100644 --- a/packages/agent-core-v2/src/agent/fullCompaction/fullCompactionService.ts +++ b/packages/agent-core-v2/src/agent/fullCompaction/fullCompactionService.ts @@ -1,6 +1,4 @@ -import { - Disposable, -} from "#/_base/di"; +import { Disposable } from "#/_base/di/lifecycle"; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { renderPrompt } from "#/_base/utils/render-prompt"; @@ -18,16 +16,13 @@ import { IAgentLoopService, type TurnErrorContext } from '#/agent/loop'; import { isAbortError, isContextOverflowError } from '#/agent/loop/errors'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentTurnService } from '#/agent/turn'; -import { ISessionTodoService, renderTodoList, type TodoItem } from '#/session/todo'; -import { - APIContextOverflowError, - APIEmptyResponseError, - createUserMessage, - type Message, - type TokenUsage -} from '#/app/llmProtocol'; -import { IEventBus } from '#/app/event'; -import { ITelemetryService } from '#/app/telemetry'; +import { ISessionTodoService } from '#/session/todo/sessionTodo'; +import { renderTodoList, type TodoItem } from '#/session/todo/todoItem'; +import { APIContextOverflowError, APIEmptyResponseError } from '#/app/llmProtocol/errors'; +import { createUserMessage, type Message } from '#/app/llmProtocol/message'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; +import { IEventBus } from '#/app/event/eventBus'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ErrorCodes, KimiError, isKimiError, toKimiErrorPayload } from "#/errors"; import { IAgentWireService, type IWireService } from '#/wire'; import compactionInstructionTemplate from './compaction-instruction.md?raw'; diff --git a/packages/agent-core-v2/src/agent/fullCompaction/strategy.ts b/packages/agent-core-v2/src/agent/fullCompaction/strategy.ts index 0659b8360..9de12fe7b 100644 --- a/packages/agent-core-v2/src/agent/fullCompaction/strategy.ts +++ b/packages/agent-core-v2/src/agent/fullCompaction/strategy.ts @@ -1,7 +1,7 @@ -import type { Message } from '#/app/llmProtocol'; +import type { Message } from '#/app/llmProtocol/message'; import type { ProfileModelContext } from '#/agent/profile'; import type { CompactionSource } from './types'; -import { estimateTokensForMessage } from '#/_base/utils'; +import { estimateTokensForMessage } from '#/_base/utils/tokens'; export interface CompactionConfig { triggerRatio: number; diff --git a/packages/agent-core-v2/src/agent/goal/errors.ts b/packages/agent-core-v2/src/agent/goal/errors.ts index 63c8b87cc..1f4d7ee3e 100644 --- a/packages/agent-core-v2/src/agent/goal/errors.ts +++ b/packages/agent-core-v2/src/agent/goal/errors.ts @@ -2,7 +2,7 @@ * `goal` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const GoalErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/goal/goal.ts b/packages/agent-core-v2/src/agent/goal/goal.ts index 338e36c9e..73a676c07 100644 --- a/packages/agent-core-v2/src/agent/goal/goal.ts +++ b/packages/agent-core-v2/src/agent/goal/goal.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { CreateGoalInput, GoalActor, diff --git a/packages/agent-core-v2/src/agent/goal/goalService.ts b/packages/agent-core-v2/src/agent/goal/goalService.ts index 4faab750b..9c59e323d 100644 --- a/packages/agent-core-v2/src/agent/goal/goalService.ts +++ b/packages/agent-core-v2/src/agent/goal/goalService.ts @@ -21,7 +21,7 @@ import { randomUUID } from 'node:crypto'; -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; @@ -43,12 +43,12 @@ import { } from '#/agent/loop'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; import { IAgentTurnService, type TurnResult } from '#/agent/turn'; -import type { TokenUsage } from '#/app/llmProtocol'; -import type { TelemetryProperties } from '#/app/telemetry'; -import { ITelemetryService } from '#/app/telemetry'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; +import type { TelemetryProperties } from '#/app/telemetry/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ErrorCodes, KimiError, toKimiErrorPayload, type KimiErrorPayload } from '#/errors'; import { IAgentWireService, type IWireService } from '#/wire'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentGoalService, type GoalReasonInput } from './goal'; import { clearGoal, createGoal, GoalModel, updateGoal, type GoalState } from './goalOps'; diff --git a/packages/agent-core-v2/src/agent/goal/injection/goalInjection.ts b/packages/agent-core-v2/src/agent/goal/injection/goalInjection.ts index f3cf91a20..5913fd0c5 100644 --- a/packages/agent-core-v2/src/agent/goal/injection/goalInjection.ts +++ b/packages/agent-core-v2/src/agent/goal/injection/goalInjection.ts @@ -1,5 +1,5 @@ import type { GoalSnapshot } from '#/agent/goal'; -import { Disposable } from "#/_base/di"; +import { Disposable } from "#/_base/di/lifecycle"; import { renderPrompt } from "#/_base/utils/render-prompt"; import { IAgentContextInjectorService } from '#/agent/contextInjector/contextInjector'; import GOAL_ACTIVE_REMINDER from './goal-active-reminder.md?raw'; diff --git a/packages/agent-core-v2/src/agent/llmRequester/llmRequester.ts b/packages/agent-core-v2/src/agent/llmRequester/llmRequester.ts index 23efb853e..e824a0f6e 100644 --- a/packages/agent-core-v2/src/agent/llmRequester/llmRequester.ts +++ b/packages/agent-core-v2/src/agent/llmRequester/llmRequester.ts @@ -1,12 +1,9 @@ -import { createDecorator } from '#/_base/di'; -import type { - FinishReason, - Message, - StreamedMessagePart, - TokenUsage, - Tool, -} from '#/app/llmProtocol'; -import type { LogContext } from '#/_base/log'; +import { createDecorator } from '#/_base/di/instantiation'; +import type { FinishReason } from '#/app/llmProtocol/finishReason'; +import type { Message, StreamedMessagePart } from '#/app/llmProtocol/message'; +import type { Tool } from '#/app/llmProtocol/tool'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; +import type { LogContext } from '#/_base/log/log'; export type LLMRequestLogFields = Readonly; diff --git a/packages/agent-core-v2/src/agent/llmRequester/llmRequesterService.ts b/packages/agent-core-v2/src/agent/llmRequester/llmRequesterService.ts index 7377aaa87..3868e29a4 100644 --- a/packages/agent-core-v2/src/agent/llmRequester/llmRequesterService.ts +++ b/packages/agent-core-v2/src/agent/llmRequester/llmRequesterService.ts @@ -22,26 +22,18 @@ import { IAgentContextSizeService } from '#/agent/contextSize'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { IAgentUsageService } from '#/agent/usage'; -import { IConfigService } from '#/app/config'; -import { - APIConnectionError, - APIContextOverflowError, - APIEmptyResponseError, - APIStatusError, - APITimeoutError, - emptyUsage, - isContextOverflowStatusError, - isRetryableGenerateError, - type Message, - type ThinkingEffort, - type TokenUsage, - type Tool, -} from '#/app/llmProtocol'; -import { ILogService, type LogContext } from '#/_base/log'; -import type { KimiModelOverrides, Model, ModelRequestEvent } from '#/app/model'; +import { IConfigService } from '#/app/config/config'; +import { APIConnectionError, APIContextOverflowError, APIEmptyResponseError, APIStatusError, APITimeoutError, isContextOverflowStatusError, isRetryableGenerateError } from '#/app/llmProtocol/errors'; +import { type Message } from '#/app/llmProtocol/message'; +import { type ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import { type Tool } from '#/app/llmProtocol/tool'; +import { emptyUsage, type TokenUsage } from '#/app/llmProtocol/usage'; +import { ILogService, type LogContext } from '#/_base/log/log'; +import type { Model, LLMEvent as ModelRequestEvent } from '#/app/model/modelInstance'; +import type { KimiModelOverrides } from '#/app/model/modelOverrides'; import { applyCompletionBudget, resolveCompletionBudget } from '#/app/model/completionBudget'; -import type { Protocol } from '#/app/protocol'; -import { ITelemetryService } from '#/app/telemetry'; +import type { Protocol } from '#/app/protocol/protocol'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import type { LLMRequestFinish, diff --git a/packages/agent-core-v2/src/agent/loop/errors.ts b/packages/agent-core-v2/src/agent/loop/errors.ts index 28e7dab56..a436f3dfe 100644 --- a/packages/agent-core-v2/src/agent/loop/errors.ts +++ b/packages/agent-core-v2/src/agent/loop/errors.ts @@ -2,8 +2,9 @@ * `loop` domain error codes and loop-local error helpers. */ -import { KimiError, isKimiError, registerErrorDomain, type ErrorDomain } from '#/_base/errors'; -import { APIContextOverflowError } from '#/app/llmProtocol'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; +import { KimiError, isKimiError } from '#/_base/errors/errors'; +import { APIContextOverflowError } from '#/app/llmProtocol/errors'; export const LoopErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/loop/loop.ts b/packages/agent-core-v2/src/agent/loop/loop.ts index c7f4b690b..b991d8511 100644 --- a/packages/agent-core-v2/src/agent/loop/loop.ts +++ b/packages/agent-core-v2/src/agent/loop/loop.ts @@ -1,5 +1,6 @@ -import { createDecorator } from '#/_base/di'; -import type { FinishReason, TokenUsage } from '#/app/llmProtocol'; +import { createDecorator } from '#/_base/di/instantiation'; +import type { FinishReason } from '#/app/llmProtocol/finishReason'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import type { Hooks } from '#/hooks'; import type { TurnEndReason } from '@moonshot-ai/protocol'; diff --git a/packages/agent-core-v2/src/agent/loop/loopService.ts b/packages/agent-core-v2/src/agent/loop/loopService.ts index 09f691e96..eb892cd6a 100644 --- a/packages/agent-core-v2/src/agent/loop/loopService.ts +++ b/packages/agent-core-v2/src/agent/loop/loopService.ts @@ -14,15 +14,11 @@ import type { import { IAgentLLMRequesterService, type LLMRequestFinish } from '#/agent/llmRequester'; import type { ToolResult } from '#/agent/tool'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; -import { IConfigService } from '#/app/config'; -import { IEventBus } from '#/app/event'; -import { - createToolMessage, - type ContentPart, - type FinishReason, - type StreamedMessagePart, - type TokenUsage, -} from '#/app/llmProtocol'; +import { IConfigService } from '#/app/config/config'; +import { IEventBus } from '#/app/event/eventBus'; +import { type FinishReason } from '#/app/llmProtocol/finishReason'; +import { createToolMessage, type ContentPart, type StreamedMessagePart } from '#/app/llmProtocol/message'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; import { ErrorCodes, KimiError } from '#/errors'; import { OrderedHookSlot } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/mcp/config-loader.ts b/packages/agent-core-v2/src/agent/mcp/config-loader.ts index d797baf3a..d3bc7564f 100644 --- a/packages/agent-core-v2/src/agent/mcp/config-loader.ts +++ b/packages/agent-core-v2/src/agent/mcp/config-loader.ts @@ -1,7 +1,7 @@ import { readFile, stat } from 'node:fs/promises'; import { dirname, isAbsolute, join, normalize, resolve } from 'pathe'; -import { resolveKimiHome } from '#/app/bootstrap'; +import { resolveKimiHome } from '#/app/bootstrap/bootstrap'; import { McpServerConfigSchema, type McpServerConfig } from './config-schema'; import { ErrorCodes, KimiError } from '#/errors'; import { z } from 'zod'; diff --git a/packages/agent-core-v2/src/agent/mcp/connection-manager.ts b/packages/agent-core-v2/src/agent/mcp/connection-manager.ts index 8c3751ef8..8933afb58 100644 --- a/packages/agent-core-v2/src/agent/mcp/connection-manager.ts +++ b/packages/agent-core-v2/src/agent/mcp/connection-manager.ts @@ -11,8 +11,8 @@ import { ErrorCodes, KimiError } from '#/errors'; import type { McpServerConfig } from './config-schema'; -import type { ILogger as Logger } from '#/_base/log'; -import type { Tool } from '#/app/llmProtocol'; +import type { ILogger as Logger } from '#/_base/log/log'; +import type { Tool } from '#/app/llmProtocol/tool'; import { abortable } from '#/_base/utils/abort'; import { HttpMcpClient } from './client-http'; diff --git a/packages/agent-core-v2/src/agent/mcp/errors.ts b/packages/agent-core-v2/src/agent/mcp/errors.ts index 3a4559d8a..f568f57a3 100644 --- a/packages/agent-core-v2/src/agent/mcp/errors.ts +++ b/packages/agent-core-v2/src/agent/mcp/errors.ts @@ -2,7 +2,7 @@ * `mcp` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const McpErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/mcp/mcp.ts b/packages/agent-core-v2/src/agent/mcp/mcp.ts index 6cb195b00..e042117fe 100644 --- a/packages/agent-core-v2/src/agent/mcp/mcp.ts +++ b/packages/agent-core-v2/src/agent/mcp/mcp.ts @@ -1,6 +1,7 @@ -import type { Tool as KosongTool } from '#/app/llmProtocol'; +import type { Tool as KosongTool } from '#/app/llmProtocol/tool'; -import { createDecorator, type IDisposable } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; +import { type IDisposable } from "#/_base/di/lifecycle"; import type { McpConnectionManager, McpServerEntry, diff --git a/packages/agent-core-v2/src/agent/mcp/mcpService.ts b/packages/agent-core-v2/src/agent/mcp/mcpService.ts index aaee660f7..d732c3269 100644 --- a/packages/agent-core-v2/src/agent/mcp/mcpService.ts +++ b/packages/agent-core-v2/src/agent/mcp/mcpService.ts @@ -1,18 +1,15 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import type { Tool as KosongTool } from '#/app/llmProtocol'; +import type { Tool as KosongTool } from '#/app/llmProtocol/tool'; -import { - Disposable, - type IDisposable, -} from "#/_base/di"; +import { Disposable, type IDisposable } from "#/_base/di/lifecycle"; import { ErrorCodes, makeErrorPayload } from "#/errors"; import type { ErrorEvent, McpServerStatusEvent, ToolListUpdatedEvent, } from '@moonshot-ai/protocol'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { createMcpAuthTool } from '#/agent/mcp/tools/auth'; diff --git a/packages/agent-core-v2/src/agent/mcp/output.ts b/packages/agent-core-v2/src/agent/mcp/output.ts index f331e1889..990297e69 100644 --- a/packages/agent-core-v2/src/agent/mcp/output.ts +++ b/packages/agent-core-v2/src/agent/mcp/output.ts @@ -25,7 +25,7 @@ * helpers stay private so callers cannot bypass the limits. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { compressImageContentParts } from '#/_base/tools/support/image-compress'; import { persistOriginalImage } from '#/_base/tools/support/image-originals'; diff --git a/packages/agent-core-v2/src/agent/mcp/tools/mcp.ts b/packages/agent-core-v2/src/agent/mcp/tools/mcp.ts index d062e0fd3..4fcacf071 100644 --- a/packages/agent-core-v2/src/agent/mcp/tools/mcp.ts +++ b/packages/agent-core-v2/src/agent/mcp/tools/mcp.ts @@ -6,7 +6,7 @@ * and normalizes the result. */ -import type { Tool as KosongTool } from '#/app/llmProtocol'; +import type { Tool as KosongTool } from '#/app/llmProtocol/tool'; import type { ExecutableTool, ExecutableToolResult } from '#/agent/tool'; import { mcpResultToExecutableOutput } from '#/agent/mcp/output'; diff --git a/packages/agent-core-v2/src/agent/media/registerMediaTools.ts b/packages/agent-core-v2/src/agent/media/registerMediaTools.ts index 6872575ca..dbe1ffcd4 100644 --- a/packages/agent-core-v2/src/agent/media/registerMediaTools.ts +++ b/packages/agent-core-v2/src/agent/media/registerMediaTools.ts @@ -13,10 +13,10 @@ * closure; media tooling doesn't need to know about tokens. */ -import type { ModelCapability } from '#/app/llmProtocol'; -import type { Model } from '#/app/model'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { Model } from '#/app/model/modelInstance'; -import { toDisposable, type IDisposable } from '#/_base/di'; +import { toDisposable, type IDisposable } from '#/_base/di/lifecycle'; import type { WorkspaceConfig } from '#/_base/tools/support/workspace'; import type { IHostFileSystem } from '#/os/interface/hostFileSystem'; import type { IHostEnvironment } from '#/os/interface/hostEnvironment'; diff --git a/packages/agent-core-v2/src/agent/media/tools/read-media.ts b/packages/agent-core-v2/src/agent/media/tools/read-media.ts index 8b9de4ca9..8004d3bc6 100644 --- a/packages/agent-core-v2/src/agent/media/tools/read-media.ts +++ b/packages/agent-core-v2/src/agent/media/tools/read-media.ts @@ -27,12 +27,9 @@ * only registered when the active model supports image or video input. */ -import type { - ContentPart, - ModelCapability, - VideoUploadInput as ProviderVideoUploadInput, - VideoURLPart, -} from '#/app/llmProtocol'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { ContentPart, VideoURLPart } from '#/app/llmProtocol/message'; +import type { VideoUploadInput as ProviderVideoUploadInput } from '#/app/llmProtocol/request'; import { z } from 'zod'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; diff --git a/packages/agent-core-v2/src/agent/microCompaction/flag.ts b/packages/agent-core-v2/src/agent/microCompaction/flag.ts index a7fb38f5c..f8a835139 100644 --- a/packages/agent-core-v2/src/agent/microCompaction/flag.ts +++ b/packages/agent-core-v2/src/agent/microCompaction/flag.ts @@ -5,7 +5,7 @@ * flag is available process-wide before any consumer resolves `IFlagService`. */ -import { type FlagDefinitionInput, registerFlagDefinition } from '#/app/flag'; +import { type FlagDefinitionInput, registerFlagDefinition } from '#/app/flag/flagRegistry'; export const microCompactionFlag: FlagDefinitionInput = { id: 'micro_compaction', diff --git a/packages/agent-core-v2/src/agent/microCompaction/microCompaction.ts b/packages/agent-core-v2/src/agent/microCompaction/microCompaction.ts index 2f5d29ad2..0c77178b0 100644 --- a/packages/agent-core-v2/src/agent/microCompaction/microCompaction.ts +++ b/packages/agent-core-v2/src/agent/microCompaction/microCompaction.ts @@ -5,7 +5,7 @@ * `IAgentMicroCompactionService` used by context projection. Bound at Agent scope. */ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { ContextMessage } from '#/agent/contextMemory'; export interface MicroCompactionConfig { diff --git a/packages/agent-core-v2/src/agent/microCompaction/microCompactionService.ts b/packages/agent-core-v2/src/agent/microCompaction/microCompactionService.ts index 92ebda56f..8e144b286 100644 --- a/packages/agent-core-v2/src/agent/microCompaction/microCompactionService.ts +++ b/packages/agent-core-v2/src/agent/microCompaction/microCompactionService.ts @@ -15,26 +15,24 @@ * Agent scope. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { - Disposable, -} from "#/_base/di"; +import { Disposable } from "#/_base/di/lifecycle"; import { estimateTokensForContentParts, estimateTokensForMessages, } from "#/_base/utils/tokens"; -import type { TelemetryProperties } from '#/app/telemetry'; -import { IConfigService } from '#/app/config'; -import { IEventBus } from '#/app/event'; +import type { TelemetryProperties } from '#/app/telemetry/telemetry'; +import { IConfigService } from '#/app/config/config'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentContextSizeService } from '#/agent/contextSize'; -import { IFlagService } from '#/app/flag'; +import { IFlagService } from '#/app/flag/flag'; import { IAgentLoopService } from '#/agent/loop'; import { IAgentProfileService } from '#/agent/profile'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import type { ContextMessage } from '#/agent/contextMemory'; import { IAgentWireService, type IWireService } from '#/wire'; import { diff --git a/packages/agent-core-v2/src/agent/permissionGate/permissionGate.ts b/packages/agent-core-v2/src/agent/permissionGate/permissionGate.ts index 179572de4..c9cea4be2 100644 --- a/packages/agent-core-v2/src/agent/permissionGate/permissionGate.ts +++ b/packages/agent-core-v2/src/agent/permissionGate/permissionGate.ts @@ -3,7 +3,7 @@ import type { ApprovalResponse, PermissionData, } from '#/agent/permissionPolicy'; -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { AuthorizeToolExecutionResult, ResolvedToolExecutionHookContext, diff --git a/packages/agent-core-v2/src/agent/permissionGate/permissionGateService.ts b/packages/agent-core-v2/src/agent/permissionGate/permissionGateService.ts index 58af81496..adfbe69b0 100644 --- a/packages/agent-core-v2/src/agent/permissionGate/permissionGateService.ts +++ b/packages/agent-core-v2/src/agent/permissionGate/permissionGateService.ts @@ -5,10 +5,8 @@ import { type PermissionPolicyResolution, type PermissionPolicyResult, } from '#/agent/permissionPolicy'; -import { - Disposable, - IInstantiationService, -} from "#/_base/di"; +import { IInstantiationService } from "#/_base/di/instantiation"; +import { Disposable } from "#/_base/di/lifecycle"; import { abortable, isUserCancellation } from '#/_base/utils/abort'; import type { AuthorizeToolExecutionResult, @@ -18,8 +16,8 @@ import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import { ISessionApprovalService } from "#/session/approval/approval"; import { IAgentPermissionModeService } from '#/agent/permissionMode'; import { IAgentPermissionRulesService } from '#/agent/permissionRules'; -import { ISessionContext } from '#/session/sessionContext'; -import { ITelemetryService } from '#/app/telemetry'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentScopeContext } from '#/agent/scopeContext'; import { @@ -29,7 +27,7 @@ import { } from './permissionGate'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; declare module '#/app/event/eventBus' { interface DomainEventMap { diff --git a/packages/agent-core-v2/src/agent/permissionMode/injection/permissionModeInjection.ts b/packages/agent-core-v2/src/agent/permissionMode/injection/permissionModeInjection.ts index 0d16bad37..90cb95e6a 100644 --- a/packages/agent-core-v2/src/agent/permissionMode/injection/permissionModeInjection.ts +++ b/packages/agent-core-v2/src/agent/permissionMode/injection/permissionModeInjection.ts @@ -1,5 +1,5 @@ import type { PermissionMode } from '#/agent/permissionPolicy'; -import type { IDisposable } from "#/_base/di"; +import type { IDisposable } from "#/_base/di/lifecycle"; import type { IAgentContextInjectorService } from '#/agent/contextInjector/contextInjector'; import type { IAgentPermissionModeService } from '#/agent/permissionMode/permissionMode'; import AUTO_MODE_ENTER_REMINDER from './permission-mode-auto-enter-reminder.md?raw'; diff --git a/packages/agent-core-v2/src/agent/permissionMode/permissionMode.ts b/packages/agent-core-v2/src/agent/permissionMode/permissionMode.ts index 70070426e..389effc52 100644 --- a/packages/agent-core-v2/src/agent/permissionMode/permissionMode.ts +++ b/packages/agent-core-v2/src/agent/permissionMode/permissionMode.ts @@ -1,5 +1,5 @@ import type { PermissionMode } from '#/agent/permissionPolicy'; -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/permissionMode/permissionModeService.ts b/packages/agent-core-v2/src/agent/permissionMode/permissionModeService.ts index 47afc0b83..7c3dc760d 100644 --- a/packages/agent-core-v2/src/agent/permissionMode/permissionModeService.ts +++ b/packages/agent-core-v2/src/agent/permissionMode/permissionModeService.ts @@ -10,7 +10,7 @@ */ import type { PermissionMode } from '#/agent/permissionPolicy'; -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; diff --git a/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicy.ts b/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicy.ts index 841e65d56..b8cd1f34e 100644 --- a/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicy.ts +++ b/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicy.ts @@ -1,4 +1,5 @@ -import { createDecorator, type IDisposable } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; +import { type IDisposable } from "#/_base/di/lifecycle"; import type { ResolvedToolExecutionHookContext } from '#/agent/tool'; diff --git a/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicyService.ts b/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicyService.ts index 438f1b8a5..18528c28d 100644 --- a/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicyService.ts +++ b/packages/agent-core-v2/src/agent/permissionPolicy/permissionPolicyService.ts @@ -1,8 +1,5 @@ -import { - Disposable, - IInstantiationService, - type IDisposable, -} from "#/_base/di"; +import { IInstantiationService } from "#/_base/di/instantiation"; +import { Disposable, type IDisposable } from "#/_base/di/lifecycle"; import type { ResolvedToolExecutionHookContext } from '#/agent/tool'; import { AgentSwarmExclusiveDenyPermissionPolicyService } from '#/agent/permissionPolicy/policies/agent-swarm-exclusive-deny'; import { AutoModeApprovePermissionPolicyService } from '#/agent/permissionPolicy/policies/auto-mode-approve'; diff --git a/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-control-path-access-ask.ts b/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-control-path-access-ask.ts index 8ae132ede..cc83cc087 100644 --- a/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-control-path-access-ask.ts +++ b/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-control-path-access-ask.ts @@ -1,8 +1,8 @@ import type { ResolvedToolExecutionHookContext } from '#/agent/tool'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import type { IHostEnvironment as HostEnvironment } from '#/os/interface/hostEnvironment'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; -import type { ISessionWorkspaceContext as WorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; +import type { ISessionWorkspaceContext as WorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import type { PermissionPolicy, PermissionPolicyResult, diff --git a/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-cwd-write-approve.ts b/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-cwd-write-approve.ts index 9d6929c27..3d392a8df 100644 --- a/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-cwd-write-approve.ts +++ b/packages/agent-core-v2/src/agent/permissionPolicy/policies/git-cwd-write-approve.ts @@ -2,8 +2,8 @@ import type { ResolvedToolExecutionHookContext } from '#/agent/tool'; import { isWithinWorkspace } from '#/_base/tools/policies/path-access'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import type { IHostEnvironment as HostEnvironment } from '#/os/interface/hostEnvironment'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; -import type { ISessionWorkspaceContext as WorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; +import type { ISessionWorkspaceContext as WorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import type { PermissionPolicy, PermissionPolicyResult, diff --git a/packages/agent-core-v2/src/agent/permissionRules/permissionRules.ts b/packages/agent-core-v2/src/agent/permissionRules/permissionRules.ts index d0ba1c8aa..8ad4ff46e 100644 --- a/packages/agent-core-v2/src/agent/permissionRules/permissionRules.ts +++ b/packages/agent-core-v2/src/agent/permissionRules/permissionRules.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { ApprovalResponse } from "@moonshot-ai/protocol"; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/permissionRules/permissionRulesService.ts b/packages/agent-core-v2/src/agent/permissionRules/permissionRulesService.ts index 6ebadf532..b56c67a57 100644 --- a/packages/agent-core-v2/src/agent/permissionRules/permissionRulesService.ts +++ b/packages/agent-core-v2/src/agent/permissionRules/permissionRulesService.ts @@ -11,7 +11,7 @@ * consumers read the getters instead. Bound at Agent scope. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; diff --git a/packages/agent-core-v2/src/agent/plan/plan.ts b/packages/agent-core-v2/src/agent/plan/plan.ts index df909b1d8..aa6016f54 100644 --- a/packages/agent-core-v2/src/agent/plan/plan.ts +++ b/packages/agent-core-v2/src/agent/plan/plan.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; export type PlanData = null | { readonly id: string; diff --git a/packages/agent-core-v2/src/agent/plan/planService.ts b/packages/agent-core-v2/src/agent/plan/planService.ts index 5fb35fe64..57ae6b098 100644 --- a/packages/agent-core-v2/src/agent/plan/planService.ts +++ b/packages/agent-core-v2/src/agent/plan/planService.ts @@ -8,15 +8,14 @@ import { join } from 'pathe'; -import { - Disposable, -} from "#/_base/di"; +import { Disposable } from "#/_base/di/lifecycle"; import { generateHeroSlug } from "#/_base/utils/hero-slug"; import { IAgentContextMemoryService, type ContextMessage } from '#/agent/contextMemory'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; import { IAgentProfileService } from '#/agent/profile'; -import { IAgentTelemetryContextService, ITelemetryService } from '#/app/telemetry'; +import { IAgentTelemetryContextService } from '#/app/telemetry/agentTelemetryContext'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentWireService, type IWireService } from '#/wire'; import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import type { ExecutableToolResult } from '#/agent/tool'; diff --git a/packages/agent-core-v2/src/agent/plan/profile/plan.ts b/packages/agent-core-v2/src/agent/plan/profile/plan.ts index 0523661b1..50c0c0275 100644 --- a/packages/agent-core-v2/src/agent/plan/profile/plan.ts +++ b/packages/agent-core-v2/src/agent/plan/profile/plan.ts @@ -11,7 +11,7 @@ * before `AgentProfileCatalogService` constructs. */ -import { registerAgentProfile } from '#/app/agentProfileCatalog'; +import { registerAgentProfile } from '#/app/agentProfileCatalog/contribution'; import { renderSystemPrompt, TASK_AGENT_ROLE_PREFIX, diff --git a/packages/agent-core-v2/src/agent/plan/tools/enter-plan-mode.ts b/packages/agent-core-v2/src/agent/plan/tools/enter-plan-mode.ts index b59dda857..c9d2cc924 100644 --- a/packages/agent-core-v2/src/agent/plan/tools/enter-plan-mode.ts +++ b/packages/agent-core-v2/src/agent/plan/tools/enter-plan-mode.ts @@ -11,7 +11,7 @@ import type { BuiltinTool } from '#/agent/tool'; import type { ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentPlanService } from '#/agent/plan/plan'; import DESCRIPTION from './enter-plan-mode.md?raw'; diff --git a/packages/agent-core-v2/src/agent/plan/tools/exit-plan-mode.ts b/packages/agent-core-v2/src/agent/plan/tools/exit-plan-mode.ts index 3b094fb76..06ae4abc0 100644 --- a/packages/agent-core-v2/src/agent/plan/tools/exit-plan-mode.ts +++ b/packages/agent-core-v2/src/agent/plan/tools/exit-plan-mode.ts @@ -13,7 +13,7 @@ import type { BuiltinTool } from '#/agent/tool'; import type { ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentPlanService } from '#/agent/plan/plan'; import type { PlanData } from '#/agent/plan/plan'; import DESCRIPTION from './exit-plan-mode.md?raw'; diff --git a/packages/agent-core-v2/src/agent/profile/configSection.ts b/packages/agent-core-v2/src/agent/profile/configSection.ts index a0ce18850..643e92214 100644 --- a/packages/agent-core-v2/src/agent/profile/configSection.ts +++ b/packages/agent-core-v2/src/agent/profile/configSection.ts @@ -9,8 +9,8 @@ import { z } from 'zod'; -import { parseBooleanEnv } from '#/_base/utils'; -import { type EnvBindings, envBindings } from '#/app/config'; +import { parseBooleanEnv } from '#/_base/utils/env'; +import { type EnvBindings, envBindings } from '#/app/config/config'; import { registerConfigSection } from '#/app/config/configSectionContributions'; export const THINKING_SECTION = 'thinking'; diff --git a/packages/agent-core-v2/src/agent/profile/errors.ts b/packages/agent-core-v2/src/agent/profile/errors.ts index c0360ca0b..41c5ca1f4 100644 --- a/packages/agent-core-v2/src/agent/profile/errors.ts +++ b/packages/agent-core-v2/src/agent/profile/errors.ts @@ -2,7 +2,7 @@ * `profile` domain error codes — model/provider configuration failures. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const ProfileErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/profile/profile.ts b/packages/agent-core-v2/src/agent/profile/profile.ts index 6e1ed0195..4d6ff38a4 100644 --- a/packages/agent-core-v2/src/agent/profile/profile.ts +++ b/packages/agent-core-v2/src/agent/profile/profile.ts @@ -1,8 +1,9 @@ -import type { AgentProfile, AgentProfileContext } from '#/app/agentProfileCatalog'; -import type { ModelCapability, ThinkingEffort } from '#/app/llmProtocol'; -import type { Model } from '#/app/model'; +import type { AgentProfile, AgentProfileContext } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import type { Model } from '#/app/model/modelInstance'; -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { ToolSource } from '#/agent/tool'; /** diff --git a/packages/agent-core-v2/src/agent/profile/profileOps.ts b/packages/agent-core-v2/src/agent/profile/profileOps.ts index 31ceb25fc..d3ccd0b7d 100644 --- a/packages/agent-core-v2/src/agent/profile/profileOps.ts +++ b/packages/agent-core-v2/src/agent/profile/profileOps.ts @@ -26,7 +26,7 @@ * Consumed by the Agent-scope `profileService`. */ -import type { ThinkingEffort } from '#/app/llmProtocol'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; import { defineModel, defineOp } from '#/wire'; export interface ProfileModelState { diff --git a/packages/agent-core-v2/src/agent/profile/profileService.ts b/packages/agent-core-v2/src/agent/profile/profileService.ts index 34eb01dce..18df2f605 100644 --- a/packages/agent-core-v2/src/agent/profile/profileService.ts +++ b/packages/agent-core-v2/src/agent/profile/profileService.ts @@ -23,37 +23,33 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { - UNKNOWN_CAPABILITY, - type GenerationKwargs, - type ModelCapability, - type ThinkingEffort, -} from '#/app/llmProtocol'; -import { - DEFAULT_AGENT_PROFILE_NAME, - IAgentProfileCatalogService, -} from '#/app/agentProfileCatalog'; -import { IModelResolver, type KimiModelOverrides, type Model } from '#/app/model'; +import { UNKNOWN_CAPABILITY, type ModelCapability } from '#/app/llmProtocol/capability'; +import { type GenerationKwargs } from '#/app/llmProtocol/kimiOptions'; +import { type ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import { DEFAULT_AGENT_PROFILE_NAME, IAgentProfileCatalogService } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import { type Model } from '#/app/model/modelInstance'; +import { type KimiModelOverrides } from '#/app/model/modelOverrides'; +import { IModelResolver } from '#/app/model/modelResolver'; import picomatch from 'picomatch'; import { ErrorCodes, KimiError } from "#/errors"; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigService } from '#/app/config'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigService } from '#/app/config/config'; import { resolveThinkingEffort } from './thinking'; import type { LoopControl } from '#/agent/loop/configSection'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { isMcpToolName } from '#/agent/tool'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; import type { ResolvedAgentProfile, SystemPromptContext } from '#/agent/profile'; import type { WarningEvent } from '@moonshot-ai/protocol'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import type { ToolSource } from '#/agent/tool'; import { IAgentWireService, type IWireService } from '#/wire'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { prepareSystemPromptContext } from './context'; import type { ApplyProfileOptions, diff --git a/packages/agent-core-v2/src/agent/profile/thinking.ts b/packages/agent-core-v2/src/agent/profile/thinking.ts index a64c5e4ca..a0bbe89ea 100644 --- a/packages/agent-core-v2/src/agent/profile/thinking.ts +++ b/packages/agent-core-v2/src/agent/profile/thinking.ts @@ -6,7 +6,7 @@ * the `defaultThinking` toggle. Pure functions; own no scoped state. */ -import type { ThinkingEffort } from '#/app/llmProtocol'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; import { type ModelThinkingMetadata, resolveThinkingEffortForModel, diff --git a/packages/agent-core-v2/src/agent/prompt/errors.ts b/packages/agent-core-v2/src/agent/prompt/errors.ts index 14e4cc30b..ce5651d60 100644 --- a/packages/agent-core-v2/src/agent/prompt/errors.ts +++ b/packages/agent-core-v2/src/agent/prompt/errors.ts @@ -2,7 +2,7 @@ * `prompt` domain error codes — request/input validation failures. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const PromptErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/prompt/prompt.ts b/packages/agent-core-v2/src/agent/prompt/prompt.ts index b1dac6615..24e0c8b30 100644 --- a/packages/agent-core-v2/src/agent/prompt/prompt.ts +++ b/packages/agent-core-v2/src/agent/prompt/prompt.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { ContextMessage } from "#/agent/contextMemory"; import type { Turn } from "#/agent/turn"; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/promptLegacy/promptLegacyService.ts b/packages/agent-core-v2/src/agent/promptLegacy/promptLegacyService.ts index d016aa754..ea95f7374 100644 --- a/packages/agent-core-v2/src/agent/promptLegacy/promptLegacyService.ts +++ b/packages/agent-core-v2/src/agent/promptLegacy/promptLegacyService.ts @@ -16,7 +16,14 @@ import { IAgentPermissionModeService } from '#/agent/permissionMode/permissionMo import { IAgentProfileService } from '#/agent/profile/profile'; import { IAgentPromptService } from '#/agent/prompt/prompt'; import { IAgentTurnService, type Turn, type TurnResult } from '#/agent/turn/turn'; -import type { ContentPart } from '#/app/llmProtocol'; +import { + applyPromptMetadataUpdate, + promptMetadataTextFromContentParts, +} from '#/agent/rpc/prompt-metadata'; +import type { ContentPart } from '#/app/llmProtocol/message'; +import { IEventService } from '#/app/event/event'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import type { PromptAbortResponse, PromptItem, @@ -53,6 +60,9 @@ export class AgentPromptLegacyService implements IAgentPromptLegacyService { @IAgentTurnService private readonly turnService: IAgentTurnService, @IAgentProfileService private readonly profile: IAgentProfileService, @IAgentPermissionModeService private readonly permissionMode: IAgentPermissionModeService, + @ISessionMetadata private readonly metadata: ISessionMetadata, + @IEventService private readonly eventService: IEventService, + @ISessionContext private readonly sessionContext: ISessionContext, ) {} list(): PromptListResponse { @@ -144,6 +154,18 @@ export class AgentPromptLegacyService implements IAgentPromptLegacyService { if (parts.length === 0) { throw new KimiError(ErrorCodes.REQUEST_INVALID, 'prompt content has no supported parts'); } + // Mirror v1 (web REST submit -> core.rpc.prompt -> updatePromptMetadata): + // persist `lastPrompt` and derive an easy title from the first prompt so the + // web session title is populated as soon as the conversation starts. This is + // the entry the web actually uses (`POST /api/v1/sessions/{id}/prompts`). + await applyPromptMetadataUpdate( + { + metadata: this.metadata, + eventService: this.eventService, + sessionId: this.sessionContext.sessionId, + }, + promptMetadataTextFromContentParts(parts), + ); const turn = await this.prompt.prompt({ id: record.promptId, role: 'user', diff --git a/packages/agent-core-v2/src/agent/questionTools/tools/ask-user.ts b/packages/agent-core-v2/src/agent/questionTools/tools/ask-user.ts index 91c4948e2..e1e0d16de 100644 --- a/packages/agent-core-v2/src/agent/questionTools/tools/ask-user.ts +++ b/packages/agent-core-v2/src/agent/questionTools/tools/ask-user.ts @@ -12,8 +12,8 @@ import { z } from 'zod'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; import { IAgentTaskService } from '#/agent/task'; -import { ITelemetryService } from '#/app/telemetry'; -import type { TelemetryProperties } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; +import type { TelemetryProperties } from '#/app/telemetry/telemetry'; import type { BuiltinTool, ExecutableToolContext, diff --git a/packages/agent-core-v2/src/agent/replayBuilder/types.ts b/packages/agent-core-v2/src/agent/replayBuilder/types.ts index 5a3a8a726..585ce8979 100644 --- a/packages/agent-core-v2/src/agent/replayBuilder/types.ts +++ b/packages/agent-core-v2/src/agent/replayBuilder/types.ts @@ -9,7 +9,7 @@ import type { PlanData } from '#/agent/plan'; import type { ToolInfo } from '#/agent/tool'; import type { SessionSummary } from '#/agent/rpc/core-api'; import type { UsageStatus } from '@moonshot-ai/protocol'; -import type { SessionMeta } from '#/session/sessionMetadata'; +import type { SessionMeta } from '#/session/sessionMetadata/sessionMetadata'; /** * Wire projection of the agent's role in the resume DTO: `'main'` when diff --git a/packages/agent-core-v2/src/agent/rpc/core-api.ts b/packages/agent-core-v2/src/agent/rpc/core-api.ts index 2cf36c748..0df3f3168 100644 --- a/packages/agent-core-v2/src/agent/rpc/core-api.ts +++ b/packages/agent-core-v2/src/agent/rpc/core-api.ts @@ -14,24 +14,19 @@ import type { PermissionData, PermissionMode } from '#/agent/permissionPolicy'; import type { PlanData } from '#/agent/plan'; import type { SwarmModeTrigger } from '#/agent/swarm'; import type { ToolInfo } from '#/agent/tool'; -import type { ResolvedConfig } from '#/app/config'; +import type { ResolvedConfig } from '#/app/config/config'; import type { McpServerConfig } from '#/agent/mcp'; -import type { ExperimentalFeatureState } from '#/app/flag'; +import type { ExperimentalFeatureState } from '#/app/flag/flag'; import type { ResumeSessionResult } from '#/agent/replayBuilder/types'; -import type { SessionMeta } from '#/session/sessionMetadata'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { SessionMeta } from '#/session/sessionMetadata/sessionMetadata'; +import type { ContentPart } from '#/app/llmProtocol/message'; import type { SessionWarning, UsageStatus } from '@moonshot-ai/protocol'; -import type { ExportSessionPayload, ExportSessionResult } from '#/app/sessionExport'; -import type { PluginCommandDef, PluginInfo, PluginSummary, ReloadSummary } from '#/app/plugin'; +import type { ExportSessionPayload, ExportSessionResult } from '#/app/sessionExport/sessionExport'; +import type { PluginCommandDef, PluginInfo, PluginSummary, ReloadSummary } from '#/app/plugin/types'; import type { WithAgentId, WithSessionId } from './types'; -export type { - ExportSessionManifest, - ExportSessionPayload, - ExportSessionResult, - ShellEnvironment, -} from '#/app/sessionExport'; +export type { ExportSessionManifest, ExportSessionPayload, ExportSessionResult, ShellEnvironment } from '#/app/sessionExport/sessionExport'; export type JsonPrimitive = string | number | boolean | null; export type JsonValue = JsonPrimitive | JsonValue[] | { readonly [key: string]: JsonValue }; diff --git a/packages/agent-core-v2/src/agent/rpc/prompt-metadata.ts b/packages/agent-core-v2/src/agent/rpc/prompt-metadata.ts index 03083bd5e..a338b907d 100644 --- a/packages/agent-core-v2/src/agent/rpc/prompt-metadata.ts +++ b/packages/agent-core-v2/src/agent/rpc/prompt-metadata.ts @@ -1,4 +1,6 @@ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; +import type { IEventService } from '#/app/event/event'; +import type { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import type { ActivatePluginCommandPayload, @@ -14,12 +16,27 @@ export function titleFromPromptMetadataText(text: string): string { } export function promptMetadataTextFromPayload(payload: PromptPayload): string | undefined { - const parts: string[] = []; - for (const part of payload.input) { + return promptMetadataTextFromContentParts(payload.input); +} + +/** + * Extract the title/lastPrompt source text from already-projected core + * `ContentPart`s (the `{ text | image_url | video_url | ... }` shape). Shared by + * the `/api/v2` RPC entry (`PromptPayload.input`) and the `/api/v1` legacy + * entry (`PromptSubmission.content` projected via `contentToCoreParts`), so the + * easy-title derivation is identical on both surfaces — mirroring v1, where + * the web REST submit funnels through the same `core.rpc.prompt` that derives + * the title. + */ +export function promptMetadataTextFromContentParts( + parts: readonly ContentPart[], +): string | undefined { + const texts: string[] = []; + for (const part of parts) { const text = promptPartText(part); - if (text !== undefined) parts.push(text); + if (text !== undefined) texts.push(text); } - return sanitizeAndTruncatePromptText(parts.join('\n'), MAX_LAST_PROMPT_LENGTH); + return sanitizeAndTruncatePromptText(texts.join('\n'), MAX_LAST_PROMPT_LENGTH); } export function promptMetadataTextFromSkill(payload: ActivateSkillPayload): string | undefined { @@ -41,6 +58,58 @@ export function promptMetadataTextFromPluginCommand( ); } +/** Mirrors v1's `isUntitled`: empty / missing / the default "New Session". */ +export function isUntitled(title: string | undefined): boolean { + return title === undefined || title.trim().length === 0 || title === 'New Session'; +} + +export interface PromptMetadataUpdateTarget { + readonly metadata: ISessionMetadata; + readonly eventService: IEventService; + readonly sessionId: string; +} + +/** + * Mirror v1's `Session.updatePromptMetadata`: persist the prompt text as + * `lastPrompt` and, when the session is still untitled and has no custom title, + * derive an easy `title` from it. Then broadcast `session.meta.updated` on the + * global `IEventService` so the web session list / title updates live (the edge + * fans it out to every connection, not just this session's subscribers). + * + * Single source of truth shared by the `/api/v2` RPC entry (`AgentRPCService`) + * and the `/api/v1` legacy entry (`AgentPromptLegacyService`); v1 keeps this + * logic in the one `core.rpc.prompt` that both the TUI and the web funnel + * through. + */ +export async function applyPromptMetadataUpdate( + target: PromptMetadataUpdateTarget, + text: string | undefined, +): Promise { + if (text === undefined) return; + const current = await target.metadata.read(); + const patch: { lastPrompt: string; title?: string; isCustomTitle?: boolean } = { + lastPrompt: text, + }; + if (!current.isCustomTitle && isUntitled(current.title)) { + patch.title = titleFromPromptMetadataText(text); + patch.isCustomTitle = false; + } + await target.metadata.update(patch); + target.eventService.publish({ + type: 'session.meta.updated', + payload: { + agentId: 'main', + sessionId: target.sessionId, + title: patch.title, + patch: { + title: patch.title, + isCustomTitle: patch.isCustomTitle, + lastPrompt: text, + }, + }, + }); +} + function promptPartText(part: ContentPart): string | undefined { switch (part.type) { case 'text': diff --git a/packages/agent-core-v2/src/agent/rpc/rpc.ts b/packages/agent-core-v2/src/agent/rpc/rpc.ts index ee898b348..66115e906 100644 --- a/packages/agent-core-v2/src/agent/rpc/rpc.ts +++ b/packages/agent-core-v2/src/agent/rpc/rpc.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { AgentAPI, SessionAPI, diff --git a/packages/agent-core-v2/src/agent/rpc/rpcService.ts b/packages/agent-core-v2/src/agent/rpc/rpcService.ts index a20faf852..a22947f3e 100644 --- a/packages/agent-core-v2/src/agent/rpc/rpcService.ts +++ b/packages/agent-core-v2/src/agent/rpc/rpcService.ts @@ -12,21 +12,23 @@ import type { ShellOutputEvent, ShellStartedEvent, } from '@moonshot-ai/protocol'; -import { IEventBus, IEventService } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; +import { IEventService } from '#/app/event/event'; import { ErrorCodes, KimiError } from '#/errors'; import { userCancellationReason } from '#/_base/utils/abort'; import { IAgentPermissionGate } from '#/agent/permissionGate'; import { IAgentPermissionModeService } from '#/agent/permissionMode/permissionMode'; import { IAgentPlanService } from '#/agent/plan'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { expandCommandArguments, IPluginService } from '#/app/plugin'; +import { expandCommandArguments } from '#/app/plugin/commands'; +import { IPluginService } from '#/app/plugin/plugin'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionMetadata, type SessionMetaPatch } from '#/session/sessionMetadata'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { IAgentSkillService } from '#/agent/skill'; import { IAgentSwarmService } from '#/agent/swarm'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import type { ToolUpdate } from '#/agent/tool'; import { IAgentTurnService } from '#/agent/turn'; @@ -61,10 +63,10 @@ import type { } from './core-api'; import { IAgentRPCService } from './rpc'; import { + applyPromptMetadataUpdate, promptMetadataTextFromPayload, promptMetadataTextFromPluginCommand, promptMetadataTextFromSkill, - titleFromPromptMetadataText, } from './prompt-metadata'; declare module '#/app/event/eventBus' { @@ -340,37 +342,19 @@ export class AgentRPCService implements IAgentRPCService { } /** - * Mirror v1's `Session.updatePromptMetadata`: persist the prompt text as - * `lastPrompt` and, when the session is still untitled and has no custom - * title, derive an easy `title` from it. Then broadcast `session.meta.updated` - * on the global `IEventService` so the web session list / title updates live - * (the edge fans it out to every connection, not just this session's - * subscribers) — exactly like v1's `session.rpc.emitEvent`. + * Delegate to the shared `applyPromptMetadataUpdate` helper (same one the + * `/api/v1` legacy entry uses), so the easy-title / `lastPrompt` derivation + * and the `session.meta.updated` broadcast stay identical on both surfaces. */ private async updatePromptMetadata(text: string | undefined): Promise { - if (text === undefined) return; - const current = await this.metadata.read(); - const patch: { lastPrompt: string; title?: string; isCustomTitle?: boolean } = { - lastPrompt: text, - }; - if (!current.isCustomTitle && isUntitled(current.title)) { - patch.title = titleFromPromptMetadataText(text); - patch.isCustomTitle = false; - } - await this.metadata.update(patch satisfies SessionMetaPatch); - this.eventService.publish({ - type: 'session.meta.updated', - payload: { - agentId: 'main', + await applyPromptMetadataUpdate( + { + metadata: this.metadata, + eventService: this.eventService, sessionId: this.sessionContext.sessionId, - title: patch.title, - patch: { - title: patch.title, - isCustomTitle: patch.isCustomTitle, - lastPrompt: text, - }, }, - }); + text, + ); } createGoal(payload: CreateGoalPayload) { @@ -434,10 +418,6 @@ export class AgentRPCService implements IAgentRPCService { } } -function isUntitled(title: string | undefined): boolean { - return typeof title !== 'string' || title.trim().length === 0 || title === 'New Session'; -} - registerScopedService( LifecycleScope.Agent, IAgentRPCService, diff --git a/packages/agent-core-v2/src/agent/skill/skill.ts b/packages/agent-core-v2/src/agent/skill/skill.ts index 334a6db22..6a77c1a9f 100644 --- a/packages/agent-core-v2/src/agent/skill/skill.ts +++ b/packages/agent-core-v2/src/agent/skill/skill.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { SkillActivationOrigin } from '#/agent/contextMemory'; import type { Turn } from '#/agent/turn'; diff --git a/packages/agent-core-v2/src/agent/skill/skillService.ts b/packages/agent-core-v2/src/agent/skill/skillService.ts index ddfd55ab7..8238c66b2 100644 --- a/packages/agent-core-v2/src/agent/skill/skillService.ts +++ b/packages/agent-core-v2/src/agent/skill/skillService.ts @@ -15,16 +15,16 @@ import { randomUUID } from 'node:crypto'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import type { ContextMessage, SkillActivationOrigin } from '#/agent/contextMemory'; import { renderUserSlashSkillPrompt } from './prompt'; -import { ISessionContext } from '#/session/sessionContext'; -import { Disposable } from '#/_base/di'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { Disposable } from '#/_base/di/lifecycle'; import { ErrorCodes, KimiError } from '#/errors'; import { isUserActivatableSkillType, type SkillDefinition } from '#/app/skillCatalog/types'; import { IAgentPromptService } from '#/agent/prompt'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import type { Turn } from '#/agent/turn'; import { IAgentWireService, type IWireService } from '#/wire'; import { IAgentSkillService, type SkillActivationInput } from './skill'; diff --git a/packages/agent-core-v2/src/agent/skill/tools/skill.ts b/packages/agent-core-v2/src/agent/skill/tools/skill.ts index f0e553473..6397b8637 100644 --- a/packages/agent-core-v2/src/agent/skill/tools/skill.ts +++ b/packages/agent-core-v2/src/agent/skill/tools/skill.ts @@ -32,8 +32,8 @@ import type { BuiltinTool } from '#/agent/tool'; import type { ExecutableToolResult, ToolDeliveryMessage, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; import { isInlineSkillType } from '#/app/skillCatalog/types'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { renderPrompt } from '#/_base/utils/render-prompt'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; import { matchesGlobRuleSubject } from '#/_base/tools/support/rule-match'; diff --git a/packages/agent-core-v2/src/agent/swarm/swarm.ts b/packages/agent-core-v2/src/agent/swarm/swarm.ts index e421b3209..76da8f65b 100644 --- a/packages/agent-core-v2/src/agent/swarm/swarm.ts +++ b/packages/agent-core-v2/src/agent/swarm/swarm.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; export type SwarmModeTrigger = 'manual' | 'task' | 'tool'; diff --git a/packages/agent-core-v2/src/agent/swarm/swarmService.ts b/packages/agent-core-v2/src/agent/swarm/swarmService.ts index 5dafd8688..c67004602 100644 --- a/packages/agent-core-v2/src/agent/swarm/swarmService.ts +++ b/packages/agent-core-v2/src/agent/swarm/swarmService.ts @@ -12,12 +12,12 @@ * `tools/agent-swarm.ts`. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; import { IAgentTurnService } from '#/agent/turn'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentWireService, type IWireService } from '#/wire'; import SWARM_MODE_ENTER_REMINDER from './enter-reminder.md?raw'; import SWARM_MODE_EXIT_REMINDER from './exit-reminder.md?raw'; diff --git a/packages/agent-core-v2/src/agent/swarm/tools/agent-swarm.ts b/packages/agent-core-v2/src/agent/swarm/tools/agent-swarm.ts index d90a483aa..0f4c141ac 100644 --- a/packages/agent-core-v2/src/agent/swarm/tools/agent-swarm.ts +++ b/packages/agent-core-v2/src/agent/swarm/tools/agent-swarm.ts @@ -15,8 +15,7 @@ import { registerTool } from '#/agent/toolRegistry'; import { ToolAccesses } from '#/agent/tool'; import type { ExecutableToolContext, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; -import { ISessionSwarmService } from '#/session/swarm'; -import type { SessionSwarmTask } from '#/session/swarm'; +import { ISessionSwarmService, type SessionSwarmTask } from '#/session/swarm/sessionSwarm'; import { IAgentScopeContext } from '#/agent/scopeContext'; import { IAgentSwarmService } from '#/agent/swarm/swarm'; import AGENT_SWARM_DESCRIPTION from './agent-swarm.md?raw'; diff --git a/packages/agent-core-v2/src/agent/systemReminder/systemReminder.ts b/packages/agent-core-v2/src/agent/systemReminder/systemReminder.ts index 0699203c8..df26951c2 100644 --- a/packages/agent-core-v2/src/agent/systemReminder/systemReminder.ts +++ b/packages/agent-core-v2/src/agent/systemReminder/systemReminder.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { ContextMessage, PromptOrigin } from '#/agent/contextMemory'; diff --git a/packages/agent-core-v2/src/agent/systemReminder/systemReminderService.ts b/packages/agent-core-v2/src/agent/systemReminder/systemReminderService.ts index ca6730d22..8e5d8ef1c 100644 --- a/packages/agent-core-v2/src/agent/systemReminder/systemReminderService.ts +++ b/packages/agent-core-v2/src/agent/systemReminder/systemReminderService.ts @@ -1,6 +1,4 @@ -import { - Disposable, -} from "#/_base/di"; +import { Disposable } from "#/_base/di/lifecycle"; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; diff --git a/packages/agent-core-v2/src/agent/task/errors.ts b/packages/agent-core-v2/src/agent/task/errors.ts index 081401815..7be6f5b05 100644 --- a/packages/agent-core-v2/src/agent/task/errors.ts +++ b/packages/agent-core-v2/src/agent/task/errors.ts @@ -2,7 +2,7 @@ * `task` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const TaskErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/task/task.ts b/packages/agent-core-v2/src/agent/task/task.ts index 2d537f395..7f59ee35e 100644 --- a/packages/agent-core-v2/src/agent/task/task.ts +++ b/packages/agent-core-v2/src/agent/task/task.ts @@ -8,8 +8,8 @@ * Bound at Agent scope. */ -import { createDecorator } from '#/_base/di'; -import type { ITaskHandle } from '#/app/task'; +import { createDecorator } from '#/_base/di/instantiation'; +import type { ITaskHandle } from '#/app/task/task'; import type { Hooks } from '#/hooks'; import type { AgentTask, diff --git a/packages/agent-core-v2/src/agent/task/taskService.ts b/packages/agent-core-v2/src/agent/task/taskService.ts index aae8068c3..6d366f596 100644 --- a/packages/agent-core-v2/src/agent/task/taskService.ts +++ b/packages/agent-core-v2/src/agent/task/taskService.ts @@ -15,13 +15,13 @@ import { randomBytes } from 'node:crypto'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { escapeXml, escapeXmlAttr } from '#/_base/utils/xml-escape'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import type { TaskOrigin } from '#/agent/contextMemory'; -import { ITaskService, type ITaskHandle, TERMINAL_TASK_STATES } from '#/app/task'; +import { ITaskService, type ITaskHandle, TERMINAL_TASK_STATES } from '#/app/task/task'; import { TERMINAL_STATUSES, type AgentTaskInfoBase, @@ -30,12 +30,12 @@ import { import { renderNotificationXml } from './notificationXml'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; -import { IConfigService } from '#/app/config'; +import { IConfigService } from '#/app/config/config'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentWireService, type IWireService } from '#/wire'; import { IAgentTaskService, diff --git a/packages/agent-core-v2/src/agent/tool/toolContract.ts b/packages/agent-core-v2/src/agent/tool/toolContract.ts index f89ee4226..fd1f1d536 100644 --- a/packages/agent-core-v2/src/agent/tool/toolContract.ts +++ b/packages/agent-core-v2/src/agent/tool/toolContract.ts @@ -12,7 +12,8 @@ * in `tool-access`, execution hook contexts in `toolHooks`. No scoped service. */ -import type { ContentPart, Tool, ToolCall } from '#/app/llmProtocol'; +import type { ContentPart, ToolCall } from '#/app/llmProtocol/message'; +import type { Tool } from '#/app/llmProtocol/tool'; import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import type { ToolAccesses } from './tool-access'; diff --git a/packages/agent-core-v2/src/agent/tool/toolHooks.ts b/packages/agent-core-v2/src/agent/tool/toolHooks.ts index 3c08aa398..af3c7c841 100644 --- a/packages/agent-core-v2/src/agent/tool/toolHooks.ts +++ b/packages/agent-core-v2/src/agent/tool/toolHooks.ts @@ -9,7 +9,7 @@ * `loop` / `turn`. Pure contract (types only); no scoped service. */ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ExecutableTool, ExecutableToolResult, RunnableToolExecution } from './toolContract'; diff --git a/packages/agent-core-v2/src/agent/toolDedupe/toolDedupe.ts b/packages/agent-core-v2/src/agent/toolDedupe/toolDedupe.ts index b5dffd598..498d03aec 100644 --- a/packages/agent-core-v2/src/agent/toolDedupe/toolDedupe.ts +++ b/packages/agent-core-v2/src/agent/toolDedupe/toolDedupe.ts @@ -10,7 +10,7 @@ * instance per agent. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; diff --git a/packages/agent-core-v2/src/agent/toolDedupe/toolDedupeService.ts b/packages/agent-core-v2/src/agent/toolDedupe/toolDedupeService.ts index 57c00cc4a..4f52034fa 100644 --- a/packages/agent-core-v2/src/agent/toolDedupe/toolDedupeService.ts +++ b/packages/agent-core-v2/src/agent/toolDedupe/toolDedupeService.ts @@ -17,7 +17,7 @@ import { canonicalTelemetryArgs } from '#/_base/utils/canonical-args'; import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentLoopService } from '#/agent/loop'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { IAgentToolDedupeService, type ToolDedupResult } from './toolDedupe'; const REMINDER_TEXT_1 = diff --git a/packages/agent-core-v2/src/agent/toolExecutor/toolExecutor.ts b/packages/agent-core-v2/src/agent/toolExecutor/toolExecutor.ts index 1a2fe8d78..12c4a65d0 100644 --- a/packages/agent-core-v2/src/agent/toolExecutor/toolExecutor.ts +++ b/packages/agent-core-v2/src/agent/toolExecutor/toolExecutor.ts @@ -1,10 +1,10 @@ -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; import type { ToolResult, ToolDidExecuteContext, ToolWillExecuteContext, } from '#/agent/tool'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { OrderedHookSlot } from '#/hooks'; export interface ToolExecutorExecuteOptions { diff --git a/packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts b/packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts index 6adada66d..cf8f5e960 100644 --- a/packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts +++ b/packages/agent-core-v2/src/agent/toolExecutor/toolExecutorService.ts @@ -1,6 +1,6 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import type { ToolCallStartedEvent, ToolInputDisplay, @@ -17,7 +17,7 @@ import { import { PathSecurityError } from '#/_base/tools/policies/path-access'; import { isUserCancellation } from "#/_base/utils/abort"; import { isAbortError } from '#/agent/loop/errors'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { ToolAccesses, type ExecutableTool, @@ -30,9 +30,9 @@ import { type ToolWillExecuteContext, } from '#/agent/tool'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; -import type { ToolCall } from '#/app/llmProtocol'; -import { ILogService } from '#/_base/log'; -import { ITelemetryService } from '#/app/telemetry'; +import type { ToolCall } from '#/app/llmProtocol/message'; +import { ILogService } from '#/_base/log/log'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { OrderedHookSlot } from '#/hooks'; import { IAgentToolExecutorService, diff --git a/packages/agent-core-v2/src/agent/toolRegistry/toolRegistry.ts b/packages/agent-core-v2/src/agent/toolRegistry/toolRegistry.ts index e0046da29..5b2047f5f 100644 --- a/packages/agent-core-v2/src/agent/toolRegistry/toolRegistry.ts +++ b/packages/agent-core-v2/src/agent/toolRegistry/toolRegistry.ts @@ -8,7 +8,8 @@ * scope. */ -import { createDecorator, type IDisposable } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; +import { type IDisposable } from '#/_base/di/lifecycle'; import type { ExecutableTool, ToolInfo, ToolSource } from '#/agent/tool'; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/toolRegistry/toolRegistryService.ts b/packages/agent-core-v2/src/agent/toolRegistry/toolRegistryService.ts index f3c0233f9..7a1d0cc0b 100644 --- a/packages/agent-core-v2/src/agent/toolRegistry/toolRegistryService.ts +++ b/packages/agent-core-v2/src/agent/toolRegistry/toolRegistryService.ts @@ -1,8 +1,4 @@ -import { - Disposable, - toDisposable, - type IDisposable, -} from "#/_base/di"; +import { Disposable, toDisposable, type IDisposable } from "#/_base/di/lifecycle"; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import type { ExecutableTool, ToolInfo, ToolSource } from '#/agent/tool'; diff --git a/packages/agent-core-v2/src/agent/toolState/toolState.ts b/packages/agent-core-v2/src/agent/toolState/toolState.ts index ddf0ba551..73289bcb9 100644 --- a/packages/agent-core-v2/src/agent/toolState/toolState.ts +++ b/packages/agent-core-v2/src/agent/toolState/toolState.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { Hooks } from '#/hooks'; export interface ToolStoreData { } diff --git a/packages/agent-core-v2/src/agent/toolState/toolStateService.ts b/packages/agent-core-v2/src/agent/toolState/toolStateService.ts index 92ee027ed..966f09389 100644 --- a/packages/agent-core-v2/src/agent/toolState/toolStateService.ts +++ b/packages/agent-core-v2/src/agent/toolState/toolStateService.ts @@ -9,7 +9,7 @@ * former `!restoring` gate). Bound at Agent scope. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { OrderedHookSlot } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/turn/errors.ts b/packages/agent-core-v2/src/agent/turn/errors.ts index eb02f5c9b..7551a2cce 100644 --- a/packages/agent-core-v2/src/agent/turn/errors.ts +++ b/packages/agent-core-v2/src/agent/turn/errors.ts @@ -2,7 +2,7 @@ * `turn` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const TurnErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/turn/turn.ts b/packages/agent-core-v2/src/agent/turn/turn.ts index 1c39489c0..293d90741 100644 --- a/packages/agent-core-v2/src/agent/turn/turn.ts +++ b/packages/agent-core-v2/src/agent/turn/turn.ts @@ -1,4 +1,4 @@ -import { createDecorator } from "#/_base/di"; +import { createDecorator } from "#/_base/di/instantiation"; import type { TurnResult } from '#/agent/loop'; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/src/agent/turn/turnService.ts b/packages/agent-core-v2/src/agent/turn/turnService.ts index fde53e464..9a5d7cac2 100644 --- a/packages/agent-core-v2/src/agent/turn/turnService.ts +++ b/packages/agent-core-v2/src/agent/turn/turnService.ts @@ -22,8 +22,9 @@ import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { ErrorCodes, KimiError, toKimiErrorPayload } from '#/errors'; import { OrderedHookSlot } from '#/hooks'; import { IAgentLoopService } from '#/agent/loop'; -import { IEventBus } from '#/app/event'; -import { IAgentTelemetryContextService, ITelemetryService } from '#/app/telemetry'; +import { IEventBus } from '#/app/event/eventBus'; +import { IAgentTelemetryContextService } from '#/app/telemetry/agentTelemetryContext'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentWireService, type IWireService } from '#/wire'; import type { Turn, TurnResult } from './turn'; import { IAgentTurnService } from './turn'; diff --git a/packages/agent-core-v2/src/agent/usage/usage.ts b/packages/agent-core-v2/src/agent/usage/usage.ts index d29a399ce..101180901 100644 --- a/packages/agent-core-v2/src/agent/usage/usage.ts +++ b/packages/agent-core-v2/src/agent/usage/usage.ts @@ -1,7 +1,7 @@ import type { LLMRequestSource } from '#/agent/llmRequester/llmRequester'; -import type { TokenUsage } from '#/app/llmProtocol'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; export interface UsageStatus { readonly byModel?: Record; diff --git a/packages/agent-core-v2/src/agent/usage/usageOps.ts b/packages/agent-core-v2/src/agent/usage/usageOps.ts index cc56df7ac..62385a05b 100644 --- a/packages/agent-core-v2/src/agent/usage/usageOps.ts +++ b/packages/agent-core-v2/src/agent/usage/usageOps.ts @@ -12,7 +12,7 @@ * `usageService`. */ -import { addUsage, type TokenUsage } from '#/app/llmProtocol'; +import { addUsage, type TokenUsage } from '#/app/llmProtocol/usage'; import type { LLMRequestSource } from '#/agent/llmRequester/llmRequester'; import { defineModel, defineOp } from '#/wire'; diff --git a/packages/agent-core-v2/src/agent/usage/usageService.ts b/packages/agent-core-v2/src/agent/usage/usageService.ts index 4454f3b06..9fbcf5869 100644 --- a/packages/agent-core-v2/src/agent/usage/usageService.ts +++ b/packages/agent-core-v2/src/agent/usage/usageService.ts @@ -7,7 +7,7 @@ * event is derived from the `usage.record` Op's `toEvent`. Bound at Agent scope. */ -import { type TokenUsage } from '#/app/llmProtocol'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; diff --git a/packages/agent-core-v2/src/agent/userTool/userTool.ts b/packages/agent-core-v2/src/agent/userTool/userTool.ts index f423eaacf..86a05c640 100644 --- a/packages/agent-core-v2/src/agent/userTool/userTool.ts +++ b/packages/agent-core-v2/src/agent/userTool/userTool.ts @@ -1,4 +1,4 @@ -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; export interface UserToolRegistration { readonly name: string; diff --git a/packages/agent-core-v2/src/agent/userTool/userToolService.ts b/packages/agent-core-v2/src/agent/userTool/userToolService.ts index 48853bafb..a4c7c351a 100644 --- a/packages/agent-core-v2/src/agent/userTool/userToolService.ts +++ b/packages/agent-core-v2/src/agent/userTool/userToolService.ts @@ -13,7 +13,7 @@ * Bound at Agent scope. */ -import { Disposable, type IDisposable } from '#/_base/di'; +import { Disposable, type IDisposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { abortable } from '#/_base/utils/abort'; @@ -24,7 +24,7 @@ import type { ExecutableToolResult, } from '#/agent/tool'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { IAgentWireService, type IWireService } from '#/wire'; import { IAgentUserToolService, type UserToolRegistration } from './userTool'; diff --git a/packages/agent-core-v2/src/agent/wireRecord/errors.ts b/packages/agent-core-v2/src/agent/wireRecord/errors.ts index 741ee5e1f..a5b6f3156 100644 --- a/packages/agent-core-v2/src/agent/wireRecord/errors.ts +++ b/packages/agent-core-v2/src/agent/wireRecord/errors.ts @@ -2,7 +2,7 @@ * `wireRecord` domain error codes — record persistence failures. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const WireRecordErrors = { codes: { diff --git a/packages/agent-core-v2/src/agent/wireRecord/wireRecord.ts b/packages/agent-core-v2/src/agent/wireRecord/wireRecord.ts index 1151ce81c..a05d4bcc6 100644 --- a/packages/agent-core-v2/src/agent/wireRecord/wireRecord.ts +++ b/packages/agent-core-v2/src/agent/wireRecord/wireRecord.ts @@ -1,4 +1,4 @@ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { createDecorator } from "#/_base/di/instantiation"; import type { IDisposable } from "#/_base/di/lifecycle"; diff --git a/packages/agent-core-v2/src/agent/wireRecord/wireRecordService.ts b/packages/agent-core-v2/src/agent/wireRecord/wireRecordService.ts index 2c45760bf..85469797b 100644 --- a/packages/agent-core-v2/src/agent/wireRecord/wireRecordService.ts +++ b/packages/agent-core-v2/src/agent/wireRecord/wireRecordService.ts @@ -2,12 +2,9 @@ import { relative } from 'pathe'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { - Disposable, - toDisposable, -} from "#/_base/di"; +import { Disposable, toDisposable } from "#/_base/di/lifecycle"; import { IAgentBlobService } from '#/agent/blob'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { OrderedHookSlot } from '#/hooks'; import type { WireRecord, WireRecordMap } from './index'; diff --git a/packages/agent-core-v2/src/app/agentProfileCatalog/agentProfileCatalog.ts b/packages/agent-core-v2/src/app/agentProfileCatalog/agentProfileCatalog.ts index 6d7d0bc4c..fec244be4 100644 --- a/packages/agent-core-v2/src/app/agentProfileCatalog/agentProfileCatalog.ts +++ b/packages/agent-core-v2/src/app/agentProfileCatalog/agentProfileCatalog.ts @@ -24,8 +24,8 @@ import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; -import type { ILogger } from '#/_base/log'; -import type { ISessionProcessRunner } from '#/session/process'; +import type { ILogger } from '#/_base/log/log'; +import type { ISessionProcessRunner } from '#/session/process/processRunner'; /** Name of the builtin default profile (the top-level interactive agent). */ export const DEFAULT_AGENT_PROFILE_NAME = 'agent'; diff --git a/packages/agent-core-v2/src/app/auth/authService.ts b/packages/agent-core-v2/src/app/auth/authService.ts index 99279815e..7294051fd 100644 --- a/packages/agent-core-v2/src/app/auth/authService.ts +++ b/packages/agent-core-v2/src/app/auth/authService.ts @@ -42,7 +42,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { Disposable } from '#/_base/di/lifecycle'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { ErrorCodes, KimiError } from '#/errors'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IConfigService } from '#/app/config/config'; import { IEventService } from '#/app/event/event'; import { ILogService } from '#/_base/log/log'; diff --git a/packages/agent-core-v2/src/app/auth/errors.ts b/packages/agent-core-v2/src/app/auth/errors.ts index 79bf70fdb..3ab43029c 100644 --- a/packages/agent-core-v2/src/app/auth/errors.ts +++ b/packages/agent-core-v2/src/app/auth/errors.ts @@ -2,7 +2,7 @@ * `auth` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const AuthErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/config/errors.ts b/packages/agent-core-v2/src/app/config/errors.ts index 351e96618..b263e6336 100644 --- a/packages/agent-core-v2/src/app/config/errors.ts +++ b/packages/agent-core-v2/src/app/config/errors.ts @@ -2,7 +2,7 @@ * `config` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const ConfigErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/cron/configSection.ts b/packages/agent-core-v2/src/app/cron/configSection.ts index 08918af12..385bb09df 100644 --- a/packages/agent-core-v2/src/app/cron/configSection.ts +++ b/packages/agent-core-v2/src/app/cron/configSection.ts @@ -7,7 +7,7 @@ * persisted to `config.toml`. */ -import { type ConfigStripEnv, type EnvBindings, envBindings } from '#/app/config'; +import { type ConfigStripEnv, type EnvBindings, envBindings } from '#/app/config/config'; import { registerConfigSection } from '#/app/config/configSectionContributions'; export const CRON_SECTION = 'cron'; diff --git a/packages/agent-core-v2/src/app/cron/cronTaskPersistence.ts b/packages/agent-core-v2/src/app/cron/cronTaskPersistence.ts index 6d8a7f35d..5df4796a7 100644 --- a/packages/agent-core-v2/src/app/cron/cronTaskPersistence.ts +++ b/packages/agent-core-v2/src/app/cron/cronTaskPersistence.ts @@ -8,7 +8,7 @@ * `ISessionCronService` at Session scope. Bound at App scope. */ -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; import type { CronTask } from './cronTask'; diff --git a/packages/agent-core-v2/src/app/cron/cronTaskPersistenceService.ts b/packages/agent-core-v2/src/app/cron/cronTaskPersistenceService.ts index 8132940c2..4c67f49f6 100644 --- a/packages/agent-core-v2/src/app/cron/cronTaskPersistenceService.ts +++ b/packages/agent-core-v2/src/app/cron/cronTaskPersistenceService.ts @@ -6,11 +6,11 @@ * Pure CRUD — no scheduling logic. Bound at App scope. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAtomicDocumentStore } from '#/persistence/interface'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { ICronTaskPersistence, type CronTaskQuery } from './cronTaskPersistence'; import type { CronTask } from './cronTask'; diff --git a/packages/agent-core-v2/src/app/edit/tools/edit.ts b/packages/agent-core-v2/src/app/edit/tools/edit.ts index 3474f2121..6601c9893 100644 --- a/packages/agent-core-v2/src/app/edit/tools/edit.ts +++ b/packages/agent-core-v2/src/app/edit/tools/edit.ts @@ -27,7 +27,7 @@ import type { WorkspaceConfig } from '#/_base/tools/support/workspace'; import { renderPrompt } from '#/_base/utils/render-prompt'; import { IFileEditService } from '../fileEdit'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { ToolAccesses } from '#/agent/tool'; import type { BuiltinTool, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; diff --git a/packages/agent-core-v2/src/app/event/event.ts b/packages/agent-core-v2/src/app/event/event.ts index 08396bc57..cbb23b7f7 100644 --- a/packages/agent-core-v2/src/app/event/event.ts +++ b/packages/agent-core-v2/src/app/event/event.ts @@ -6,7 +6,8 @@ * unknown set of consumers. Bound at App scope; a single global instance. */ -import { createDecorator, type IDisposable, type ServiceIdentifier } from '#/_base/di'; +import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; +import { type IDisposable } from '#/_base/di/lifecycle'; import type { Event } from '#/_base/event'; export interface DomainEvent { diff --git a/packages/agent-core-v2/src/app/event/eventBus.ts b/packages/agent-core-v2/src/app/event/eventBus.ts index ddcb229c9..006e45007 100644 --- a/packages/agent-core-v2/src/app/event/eventBus.ts +++ b/packages/agent-core-v2/src/app/event/eventBus.ts @@ -18,7 +18,8 @@ * server consumer, not here. Agent-scope; scope-agnostic contract. */ -import { createDecorator, type IDisposable, type ServiceIdentifier } from '#/_base/di'; +import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; +import { type IDisposable } from '#/_base/di/lifecycle'; // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface DomainEventMap {} diff --git a/packages/agent-core-v2/src/app/event/eventBusService.ts b/packages/agent-core-v2/src/app/event/eventBusService.ts index e1bed3872..b3e77afef 100644 --- a/packages/agent-core-v2/src/app/event/eventBusService.ts +++ b/packages/agent-core-v2/src/app/event/eventBusService.ts @@ -10,7 +10,7 @@ * companion `IEventService` (`./eventService`) stays registered until Phase 3. */ -import { Disposable, type IDisposable } from '#/_base/di'; +import { Disposable, type IDisposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { Emitter } from '#/_base/event'; diff --git a/packages/agent-core-v2/src/app/event/eventService.ts b/packages/agent-core-v2/src/app/event/eventService.ts index 91a408702..d1e029be4 100644 --- a/packages/agent-core-v2/src/app/event/eventService.ts +++ b/packages/agent-core-v2/src/app/event/eventService.ts @@ -5,7 +5,7 @@ * primitive. Bound at App scope. */ -import { Disposable, type IDisposable } from '#/_base/di'; +import { Disposable, type IDisposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { Emitter, type Event } from '#/_base/event'; diff --git a/packages/agent-core-v2/src/app/event/index.ts b/packages/agent-core-v2/src/app/event/index.ts deleted file mode 100644 index 2eeb0e149..000000000 --- a/packages/agent-core-v2/src/app/event/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * `event` domain barrel — re-exports the canonical `IEventBus` contract and its - * scoped service, plus the legacy `IEventService` binding (kept until Phase 3 - * cuts its consumers over and deletes it). Importing this barrel registers both - * bindings into the scope registry. - * - * The legacy `DomainEvent` payload type (`./event`) is intentionally NOT - * re-exported here: the barrel-level `DomainEvent` is the new discriminated - * union (`./eventBus`). Consumers that still need the legacy payload type - * import it directly from `#/app/event/event`. - */ - -export * from './eventBus'; -export * from './eventBusService'; -export { IEventService, type DomainEvent as GlobalEvent } from './event'; -export * from './eventService'; diff --git a/packages/agent-core-v2/src/app/file/fileService.ts b/packages/agent-core-v2/src/app/file/fileService.ts index 622368594..756c3d10d 100644 --- a/packages/agent-core-v2/src/app/file/fileService.ts +++ b/packages/agent-core-v2/src/app/file/fileService.ts @@ -11,7 +11,8 @@ import type { Readable } from 'node:stream'; import type { FileMeta } from '@moonshot-ai/protocol'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; -import { KimiError, registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; +import { KimiError } from '#/_base/errors/errors'; /** Hard upload cap mirrored from the v1 server (50 MiB). */ export const DEFAULT_MAX_UPLOAD_BYTES = 50 * 1024 * 1024; diff --git a/packages/agent-core-v2/src/app/flag/flagService.ts b/packages/agent-core-v2/src/app/flag/flagService.ts index acd66bbb1..d3229396d 100644 --- a/packages/agent-core-v2/src/app/flag/flagService.ts +++ b/packages/agent-core-v2/src/app/flag/flagService.ts @@ -10,7 +10,7 @@ import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { parseBooleanEnv } from '#/_base/utils'; +import { parseBooleanEnv } from '#/_base/utils/env'; import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IConfigService } from '#/app/config/config'; diff --git a/packages/agent-core-v2/src/app/gateway/gatewayService.ts b/packages/agent-core-v2/src/app/gateway/gatewayService.ts index 37fddac40..f22793337 100644 --- a/packages/agent-core-v2/src/app/gateway/gatewayService.ts +++ b/packages/agent-core-v2/src/app/gateway/gatewayService.ts @@ -13,8 +13,8 @@ import { InstantiationType } from '#/_base/di/extensions'; import { type IAgentScopeHandle, LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; -import { ILogService } from '#/_base/log'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; +import { ILogService } from '#/_base/log/log'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; import { IAgentPromptService } from '#/agent/prompt'; import { IAgentTurnService } from '#/agent/turn'; diff --git a/packages/agent-core-v2/src/app/hostFolderBrowser/hostFolderBrowserService.ts b/packages/agent-core-v2/src/app/hostFolderBrowser/hostFolderBrowserService.ts index 8aa3fd081..27c2218cf 100644 --- a/packages/agent-core-v2/src/app/hostFolderBrowser/hostFolderBrowserService.ts +++ b/packages/agent-core-v2/src/app/hostFolderBrowser/hostFolderBrowserService.ts @@ -16,7 +16,7 @@ import type { FsBrowseEntry, FsBrowseResponse, FsHomeResponse } from '@moonshot- import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IWorkspaceRegistry } from '#/app/workspaceRegistry'; +import { IWorkspaceRegistry } from '#/app/workspaceRegistry/workspaceRegistry'; import { HostFolderNotAbsoluteError, diff --git a/packages/agent-core-v2/src/app/messageLegacy/messageLegacyService.ts b/packages/agent-core-v2/src/app/messageLegacy/messageLegacyService.ts index c2aa4999d..bd5114325 100644 --- a/packages/agent-core-v2/src/app/messageLegacy/messageLegacyService.ts +++ b/packages/agent-core-v2/src/app/messageLegacy/messageLegacyService.ts @@ -16,14 +16,14 @@ import type { Message, PageResponse } from '@moonshot-ai/protocol'; import { InstantiationType } from '#/_base/di/extensions'; import { type IAgentScopeHandle, LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ensureMainAgent } from '#/session/agentLifecycle'; +import { ensureMainAgent } from '#/session/agentLifecycle/mainAgent'; import { IAgentContextMemoryService, toProtocolMessage, } from '#/agent/contextMemory'; import { ErrorCodes, KimiError } from '#/errors'; -import { ISessionIndex } from '#/app/sessionIndex'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; +import { ISessionIndex } from '#/app/sessionIndex/sessionIndex'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; import { IMessageLegacyService, type MessageListQuery } from './messageLegacy'; diff --git a/packages/agent-core-v2/src/app/model/completionBudget.ts b/packages/agent-core-v2/src/app/model/completionBudget.ts index 459f27aaa..19872b727 100644 --- a/packages/agent-core-v2/src/app/model/completionBudget.ts +++ b/packages/agent-core-v2/src/app/model/completionBudget.ts @@ -4,8 +4,8 @@ * facade; no wire coupling. */ -import type { ModelCapability } from '#/app/llmProtocol'; -import type { Model } from '#/app/model'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { Model } from '#/app/model/modelInstance'; export interface CompletionBudgetConfig { readonly hardCap?: number; diff --git a/packages/agent-core-v2/src/app/model/envOverlay.ts b/packages/agent-core-v2/src/app/model/envOverlay.ts index a753f4a62..1d5de5e1d 100644 --- a/packages/agent-core-v2/src/app/model/envOverlay.ts +++ b/packages/agent-core-v2/src/app/model/envOverlay.ts @@ -12,7 +12,7 @@ * semantics. */ -import { parseBooleanEnv } from '#/_base/utils'; +import { parseBooleanEnv } from '#/_base/utils/env'; import type { ConfigEffectiveOverlay } from '#/app/config/config'; import { ErrorCodes, KimiError } from '#/errors'; import { ENV_MODEL_PROVIDER_KEY } from '#/app/provider/provider'; diff --git a/packages/agent-core-v2/src/app/model/model.ts b/packages/agent-core-v2/src/app/model/model.ts index d45a8c62a..548a9b279 100644 --- a/packages/agent-core-v2/src/app/model/model.ts +++ b/packages/agent-core-v2/src/app/model/model.ts @@ -28,8 +28,8 @@ import { z } from 'zod'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; import type { Event } from '#/_base/event'; -import { OAuthRefSchema } from '#/app/provider'; -import { ProtocolSchema } from '#/app/protocol'; +import { OAuthRefSchema } from '#/app/provider/provider'; +import { ProtocolSchema } from '#/app/protocol/protocol'; export const MODELS_SECTION = 'models'; diff --git a/packages/agent-core-v2/src/app/model/modelImpl.ts b/packages/agent-core-v2/src/app/model/modelImpl.ts index e99bd7c9c..d5134ef8b 100644 --- a/packages/agent-core-v2/src/app/model/modelImpl.ts +++ b/packages/agent-core-v2/src/app/model/modelImpl.ts @@ -18,20 +18,15 @@ */ import { AsyncEventQueue } from '#/_base/asyncEventQueue'; -import { - APIStatusError, - type GenerateCallbacks, - type GenerationKwargs, - type MaxCompletionTokensOptions, - type ModelCapability, - type ProviderRequestAuth, - type StreamDecodeStats, - type ThinkingEffort, - type VideoUploadInput, - type VideoURLPart, -} from '#/app/llmProtocol'; -import type { ChatProvider, Protocol, ProtocolProviderOptions } from '#/app/protocol'; -import { generate } from '#/app/protocol'; +import { type ModelCapability } from '#/app/llmProtocol/capability'; +import { APIStatusError } from '#/app/llmProtocol/errors'; +import { type GenerationKwargs } from '#/app/llmProtocol/kimiOptions'; +import { type VideoURLPart } from '#/app/llmProtocol/message'; +import { type GenerateCallbacks, type MaxCompletionTokensOptions, type ProviderRequestAuth, type StreamDecodeStats, type VideoUploadInput } from '#/app/llmProtocol/request'; +import { type ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import type { ChatProvider } from '#/app/llmProtocol/provider'; +import type { Protocol, ProtocolProviderOptions } from '#/app/protocol/protocol'; +import { generate } from '#/app/llmProtocol/generate'; import { type ProtocolAdapterRegistry } from '#/app/protocol/protocolAdapterRegistry'; import { ErrorCodes, KimiError } from '#/errors'; diff --git a/packages/agent-core-v2/src/app/model/modelInstance.ts b/packages/agent-core-v2/src/app/model/modelInstance.ts index 3a576f91a..7e9844780 100644 --- a/packages/agent-core-v2/src/app/model/modelInstance.ts +++ b/packages/agent-core-v2/src/app/model/modelInstance.ts @@ -17,21 +17,15 @@ * sources; the running system only ever sees Models. */ -import type { - FinishReason, - GenerationKwargs, - MaxCompletionTokensOptions, - Message, - ModelCapability, - ProviderRequestAuth, - StreamedMessagePart, - ThinkingEffort, - TokenUsage, - Tool, - VideoUploadInput, - VideoURLPart, -} from '#/app/llmProtocol'; -import type { Protocol, ProtocolProviderOptions } from '#/app/protocol'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { FinishReason } from '#/app/llmProtocol/finishReason'; +import type { GenerationKwargs } from '#/app/llmProtocol/kimiOptions'; +import type { Message, StreamedMessagePart, VideoURLPart } from '#/app/llmProtocol/message'; +import type { MaxCompletionTokensOptions, ProviderRequestAuth, VideoUploadInput } from '#/app/llmProtocol/request'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import type { Tool } from '#/app/llmProtocol/tool'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; +import type { Protocol, ProtocolProviderOptions } from '#/app/protocol/protocol'; /** * Closure that produces a fresh `ProviderRequestAuth` on demand. Wraps an diff --git a/packages/agent-core-v2/src/app/model/modelResolverService.ts b/packages/agent-core-v2/src/app/model/modelResolverService.ts index e40d5090a..d7ae578a0 100644 --- a/packages/agent-core-v2/src/app/model/modelResolverService.ts +++ b/packages/agent-core-v2/src/app/model/modelResolverService.ts @@ -18,23 +18,17 @@ import { InstantiationType } from '#/_base/di/extensions'; import { Disposable } from '#/_base/di/lifecycle'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IOAuthService } from '#/app/auth'; -import { IConfigService } from '#/app/config'; +import { IOAuthService } from '#/app/auth/auth'; +import { IConfigService } from '#/app/config/config'; import { ErrorCodes, KimiError } from '#/errors'; -import { - type ModelCapability, - type ProviderRequestAuth, - type ThinkingEffort, -} from '#/app/llmProtocol'; +import { type ModelCapability } from '#/app/llmProtocol/capability'; +import { type ProviderRequestAuth } from '#/app/llmProtocol/request'; +import { type ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; import { getModelCapability } from '#/app/llmProtocol/providers'; -import { IPlatformService, UNKNOWN_PLATFORM_KEY } from '#/app/platform'; -import type { OAuthRef, ProviderConfig } from '#/app/provider'; -import { IProviderService } from '#/app/provider'; -import { - IProtocolAdapterRegistry, - type Protocol, - type ProtocolProviderOptions, -} from '#/app/protocol'; +import { IPlatformService, UNKNOWN_PLATFORM_KEY } from '#/app/platform/platform'; +import type { OAuthRef, ProviderConfig } from '#/app/provider/provider'; +import { IProviderService } from '#/app/provider/provider'; +import { IProtocolAdapterRegistry, type Protocol, type ProtocolProviderOptions } from '#/app/protocol/protocol'; import { type ProtocolAdapterRegistry } from '#/app/protocol/protocolAdapterRegistry'; import type { ModelConfig } from './model'; diff --git a/packages/agent-core-v2/src/app/model/thinking.ts b/packages/agent-core-v2/src/app/model/thinking.ts index e7bd86b47..20850143a 100644 --- a/packages/agent-core-v2/src/app/model/thinking.ts +++ b/packages/agent-core-v2/src/app/model/thinking.ts @@ -6,7 +6,8 @@ * Agent-scope `profile` domain so both paths keep v1-compatible defaults. */ -import type { ModelCapability, ThinkingEffort } from '#/app/llmProtocol'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; export interface ThinkingDefaults { readonly defaultThinking?: boolean; diff --git a/packages/agent-core-v2/src/app/modelCatalog/errors.ts b/packages/agent-core-v2/src/app/modelCatalog/errors.ts index 8a4045ff4..15ca9df3d 100644 --- a/packages/agent-core-v2/src/app/modelCatalog/errors.ts +++ b/packages/agent-core-v2/src/app/modelCatalog/errors.ts @@ -2,7 +2,7 @@ * `modelCatalog` domain error codes — provider/model catalog lookup failures. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const ModelCatalogErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/platform/platform.ts b/packages/agent-core-v2/src/app/platform/platform.ts index 4c3ff2691..677d280b3 100644 --- a/packages/agent-core-v2/src/app/platform/platform.ts +++ b/packages/agent-core-v2/src/app/platform/platform.ts @@ -20,7 +20,7 @@ import { z } from 'zod'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; import type { Event } from '#/_base/event'; -import { OAuthRefSchema } from '#/app/provider'; +import { OAuthRefSchema } from '#/app/provider/provider'; const StringRecordSchema = z.record(z.string(), z.string()); diff --git a/packages/agent-core-v2/src/app/plugin/errors.ts b/packages/agent-core-v2/src/app/plugin/errors.ts index e4578083d..7d66166e8 100644 --- a/packages/agent-core-v2/src/app/plugin/errors.ts +++ b/packages/agent-core-v2/src/app/plugin/errors.ts @@ -2,7 +2,7 @@ * `plugin` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const PluginErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/plugin/pluginService.ts b/packages/agent-core-v2/src/app/plugin/pluginService.ts index e0bea2eb6..45d464ccc 100644 --- a/packages/agent-core-v2/src/app/plugin/pluginService.ts +++ b/packages/agent-core-v2/src/app/plugin/pluginService.ts @@ -2,7 +2,7 @@ import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { Emitter, type Event } from '#/_base/event'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import type { HookDef } from '#/agent/externalHooks/types'; import type { McpServerConfig } from '#/agent/mcp/config-schema'; import type { SkillRoot } from '#/app/skillCatalog/types'; diff --git a/packages/agent-core-v2/src/app/protocol/errors.ts b/packages/agent-core-v2/src/app/protocol/errors.ts index ae1e28f99..1fea83fd8 100644 --- a/packages/agent-core-v2/src/app/protocol/errors.ts +++ b/packages/agent-core-v2/src/app/protocol/errors.ts @@ -6,7 +6,7 @@ * as a re-exported alias so existing call sites don't have to migrate. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const ProtocolErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/sessionExport/errors.ts b/packages/agent-core-v2/src/app/sessionExport/errors.ts index 1f0f2014e..c6b83004b 100644 --- a/packages/agent-core-v2/src/app/sessionExport/errors.ts +++ b/packages/agent-core-v2/src/app/sessionExport/errors.ts @@ -2,7 +2,7 @@ * `sessionExport` domain error codes — export precondition failures. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const SessionExportErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts b/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts index bf384de07..918dc8e58 100644 --- a/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts +++ b/packages/agent-core-v2/src/app/sessionExport/sessionExportService.ts @@ -12,16 +12,16 @@ import { resolve } from 'pathe'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ILogService } from '#/_base/log'; +import { ILogService } from '#/_base/log/log'; import { resolveGlobalLogPath } from '#/_base/log/logConfig'; import { IAgentWireRecordService } from '#/agent/wireRecord'; -import { IBootstrapService } from '#/app/bootstrap'; -import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; -import { IWorkspaceRegistry } from '#/app/workspaceRegistry'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; +import { IWorkspaceRegistry } from '#/app/workspaceRegistry/workspaceRegistry'; import { ErrorCodes, KimiError } from '#/errors'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; -import { ISessionMetadata } from '#/session/sessionMetadata'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import { buildExportManifest, type ExportSessionManifestSummary } from './manifest'; import { diff --git a/packages/agent-core-v2/src/app/sessionIndex/sessionIndexService.ts b/packages/agent-core-v2/src/app/sessionIndex/sessionIndexService.ts index 6d51e816b..29c94e9de 100644 --- a/packages/agent-core-v2/src/app/sessionIndex/sessionIndexService.ts +++ b/packages/agent-core-v2/src/app/sessionIndex/sessionIndexService.ts @@ -30,8 +30,8 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IFlagService } from '#/app/flag'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IFlagService } from '#/app/flag/flag'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IQueryStore, type Page } from '#/persistence/interface/queryStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; diff --git a/packages/agent-core-v2/src/app/sessionLegacy/sessionLegacyService.ts b/packages/agent-core-v2/src/app/sessionLegacy/sessionLegacyService.ts index 235d5732c..319ff3530 100644 --- a/packages/agent-core-v2/src/app/sessionLegacy/sessionLegacyService.ts +++ b/packages/agent-core-v2/src/app/sessionLegacy/sessionLegacyService.ts @@ -11,7 +11,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { type IAgentScopeHandle, LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ensureMainAgent } from '#/session/agentLifecycle'; +import { ensureMainAgent } from '#/session/agentLifecycle/mainAgent'; import { IAgentContextMemoryService, toProtocolMessage, type ContextMessage } from '#/agent/contextMemory'; import { IAgentContextSizeService } from '#/agent/contextSize'; import { ErrorCodes, isKimiError, KimiError } from '#/errors'; @@ -23,13 +23,13 @@ import { IAgentPlanService } from '#/agent/plan'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentPromptService } from '#/agent/prompt'; import { IAgentRPCService } from '#/agent/rpc'; -import { ISessionActivity } from '#/session/sessionActivity'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; -import { ISessionMetadata } from '#/session/sessionMetadata'; +import { ISessionActivity } from '#/session/sessionActivity/sessionActivity'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import { IAgentSwarmService } from '#/agent/swarm'; -import { IWorkspaceRegistry } from '#/app/workspaceRegistry'; +import { IWorkspaceRegistry } from '#/app/workspaceRegistry/workspaceRegistry'; import type { ArchiveSessionResponse, CompactSessionRequest, diff --git a/packages/agent-core-v2/src/app/sessionLifecycle/sessionLifecycleService.ts b/packages/agent-core-v2/src/app/sessionLifecycle/sessionLifecycleService.ts index 6c56632d2..be15bcaae 100644 --- a/packages/agent-core-v2/src/app/sessionLifecycle/sessionLifecycleService.ts +++ b/packages/agent-core-v2/src/app/sessionLifecycle/sessionLifecycleService.ts @@ -23,20 +23,21 @@ import { import { Disposable } from '#/_base/di/lifecycle'; import { Emitter, type Event } from '#/_base/event'; import { encodeWorkDirKey } from '#/_base/utils/workdir-slug'; -import { IAgentLifecycleService, ensureMainAgent, MAIN_AGENT_ID } from '#/session/agentLifecycle'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IEventService } from '#/app/event'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { ensureMainAgent, MAIN_AGENT_ID } from '#/session/agentLifecycle/mainAgent'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IEventService } from '#/app/event/event'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { ErrorCodes, KimiError } from '#/errors'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { ISessionActivity } from '#/session/sessionActivity'; -import { ISessionIndex } from '#/app/sessionIndex'; +import { ISessionActivity } from '#/session/sessionActivity/sessionActivity'; +import { ISessionIndex } from '#/app/sessionIndex/sessionIndex'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; -import { IWorkspaceRegistry } from '#/app/workspaceRegistry'; -import { ISessionContext, sessionContextSeed } from '#/session/sessionContext'; -import { ISessionMetadata, type SessionMeta } from '#/session/sessionMetadata'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; +import { IWorkspaceRegistry } from '#/app/workspaceRegistry/workspaceRegistry'; +import { ISessionContext, sessionContextSeed } from '#/session/sessionContext/sessionContext'; +import { ISessionMetadata, type SessionMeta } from '#/session/sessionMetadata/sessionMetadata'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; import { AGENT_WIRE_PROTOCOL_VERSION, IAgentWireRecordService, diff --git a/packages/agent-core-v2/src/app/skillCatalog/errors.ts b/packages/agent-core-v2/src/app/skillCatalog/errors.ts index f840a5034..601cf2177 100644 --- a/packages/agent-core-v2/src/app/skillCatalog/errors.ts +++ b/packages/agent-core-v2/src/app/skillCatalog/errors.ts @@ -2,7 +2,7 @@ * `skillCatalog` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const SkillErrors = { codes: { diff --git a/packages/agent-core-v2/src/app/skillCatalog/userFileSkillSource.ts b/packages/agent-core-v2/src/app/skillCatalog/userFileSkillSource.ts index 7cc5df5e6..b4804d7c6 100644 --- a/packages/agent-core-v2/src/app/skillCatalog/userFileSkillSource.ts +++ b/packages/agent-core-v2/src/app/skillCatalog/userFileSkillSource.ts @@ -9,7 +9,7 @@ import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { ISkillDiscovery } from './skillDiscovery'; import { userRoots } from './skillRoots'; diff --git a/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQuery.ts b/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQuery.ts index c85ecf1cb..f8ebcbcf9 100644 --- a/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQuery.ts +++ b/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQuery.ts @@ -10,7 +10,7 @@ import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; -import type { SessionSummary } from '#/app/sessionIndex'; +import type { SessionSummary } from '#/app/sessionIndex/sessionIndex'; export type { SessionSummary }; diff --git a/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQueryService.ts b/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQueryService.ts index c6e5f4d96..cf5b5f5e3 100644 --- a/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQueryService.ts +++ b/packages/agent-core-v2/src/app/workspaceRegistry/workspaceQueryService.ts @@ -8,7 +8,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex'; +import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; import { IWorkspaceQueryService, RECENT_SESSIONS_LIMIT } from './workspaceQuery'; diff --git a/packages/agent-core-v2/src/errors.ts b/packages/agent-core-v2/src/errors.ts index 635c42b8b..67f8fe96f 100644 --- a/packages/agent-core-v2/src/errors.ts +++ b/packages/agent-core-v2/src/errors.ts @@ -7,7 +7,7 @@ * from here: `import { ErrorCodes, KimiError } from '#/errors'`. */ -import { CoreErrors } from '#/_base/errors'; +import { CoreErrors } from '#/_base/errors/codes'; import { AgentLifecycleErrors } from '#/session/agentLifecycle/errors'; import { AuthErrors } from '#/app/auth/errors'; import { TaskErrors } from '#/agent/task/errors'; diff --git a/packages/agent-core-v2/src/hooks.ts b/packages/agent-core-v2/src/hooks.ts index e5423fe96..24b024940 100644 --- a/packages/agent-core-v2/src/hooks.ts +++ b/packages/agent-core-v2/src/hooks.ts @@ -4,7 +4,7 @@ * Provides typed extension points with repeatable chaining and isolated context * forks. Bound as utility infrastructure, not a scoped Service. */ -import { toDisposable, type IDisposable } from "#/_base/di"; +import { toDisposable, type IDisposable } from "#/_base/di/lifecycle"; export type Hooks> = { readonly [K in keyof TEvents]: HookSlot; diff --git a/packages/agent-core-v2/src/index.ts b/packages/agent-core-v2/src/index.ts index 18539bfdd..3a72dd944 100644 --- a/packages/agent-core-v2/src/index.ts +++ b/packages/agent-core-v2/src/index.ts @@ -20,7 +20,10 @@ export * from '#/os/interface'; export * from '#/os/backends/node-local'; export * from '#/session/terminal'; export * from '#/app/task'; -export { IEventService, IEventBus, type DomainEvent, type GlobalEvent } from '#/app/event'; +import '#/app/event/eventBusService'; +import '#/app/event/eventService'; +export { IEventBus, type DomainEvent } from '#/app/event/eventBus'; +export { IEventService, type DomainEvent as GlobalEvent } from '#/app/event/event'; export * from '#/app/llmProtocol'; export * from '#/app/sessionIndex'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/hostEnvironmentService.ts b/packages/agent-core-v2/src/os/backends/node-local/hostEnvironmentService.ts index 5472c4dd6..7c129330a 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/hostEnvironmentService.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/hostEnvironmentService.ts @@ -9,7 +9,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { probeHostEnvironmentFromNode } from '#/_base/execEnv'; +import { probeHostEnvironmentFromNode } from '#/_base/execEnv/environmentProbe'; import { type HostEnvironmentInfo, diff --git a/packages/agent-core-v2/src/os/backends/node-local/hostFsService.ts b/packages/agent-core-v2/src/os/backends/node-local/hostFsService.ts index 0f8dda28a..c5531b2ae 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/hostFsService.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/hostFsService.ts @@ -9,7 +9,7 @@ import { open, readFile, readdir, stat, mkdir, rm, writeFile } from 'node:fs/pro import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { decodeTextWithErrors, type TextDecodeErrors } from '#/_base/execEnv'; +import { decodeTextWithErrors, type TextDecodeErrors } from '#/_base/execEnv/decodeText'; import { type HostDirEntry, type HostFileStat, IHostFileSystem } from '#/os/interface/hostFileSystem'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/hostProcessService.ts b/packages/agent-core-v2/src/os/backends/node-local/hostProcessService.ts index 005f2b1e1..8c25db873 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/hostProcessService.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/hostProcessService.ts @@ -10,7 +10,7 @@ import { spawn, type ChildProcess, type SpawnOptions } from 'node:child_process'; import type { Readable, Writable } from 'node:stream'; -import { BufferedReadable } from '#/_base/execEnv'; +import { BufferedReadable } from '#/_base/execEnv/bufferedReadable'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/bash.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/bash.ts index ed73e1495..091119ca7 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/bash.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/bash.ts @@ -34,9 +34,8 @@ import { z } from 'zod'; import { IAgentTaskService } from '#/agent/task'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionProcessRunner } from '#/session/process'; -import type { IProcess } from '#/session/process'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionProcessRunner, type IProcess } from '#/session/process/processRunner'; import { IAgentProfileService } from '#/agent/profile'; import type { BuiltinTool, ExecutableToolResult, ToolExecution, ToolUpdate } from '#/agent/tool'; import { ToolResultBuilder } from '#/agent/tool/result-builder'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/glob.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/glob.ts index 094deb24c..770f034fc 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/glob.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/glob.ts @@ -57,8 +57,8 @@ import { import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; import { IHostProcessService } from '#/os/interface/hostProcess'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; -import { ITelemetryService } from '#/app/telemetry'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ToolAccesses } from '#/agent/tool'; import type { BuiltinTool, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/grep.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/grep.ts index 9f7e6814a..af9034a90 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/grep.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/grep.ts @@ -31,7 +31,7 @@ import { ErrorCodes, isKimiError } from '#/errors'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; import { IHostProcessService } from '#/os/interface/hostProcess'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { ToolAccesses } from '#/agent/tool'; import type { BuiltinTool, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/process-task.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/process-task.ts index fd9b296ee..0bd00107f 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/process-task.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/process-task.ts @@ -1,6 +1,6 @@ import type { Readable } from 'node:stream'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import type { AgentTask, diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/read.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/read.ts index 5a59ff42c..e2b7e6214 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/read.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/read.ts @@ -26,7 +26,7 @@ import { z } from 'zod'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { ToolAccesses } from '#/agent/tool'; import type { BuiltinTool, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; diff --git a/packages/agent-core-v2/src/os/backends/node-local/tools/write.ts b/packages/agent-core-v2/src/os/backends/node-local/tools/write.ts index 4c006e130..7ecce6579 100644 --- a/packages/agent-core-v2/src/os/backends/node-local/tools/write.ts +++ b/packages/agent-core-v2/src/os/backends/node-local/tools/write.ts @@ -22,7 +22,7 @@ import { z } from 'zod'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { type HostFileStat, IHostFileSystem } from '#/os/interface/hostFileSystem'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { ToolAccesses } from '#/agent/tool'; import type { BuiltinTool, ExecutableToolResult, ToolExecution } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; diff --git a/packages/agent-core-v2/src/os/interface/hostEnvironment.ts b/packages/agent-core-v2/src/os/interface/hostEnvironment.ts index c9e33612a..8ddb5c8fb 100644 --- a/packages/agent-core-v2/src/os/interface/hostEnvironment.ts +++ b/packages/agent-core-v2/src/os/interface/hostEnvironment.ts @@ -24,7 +24,7 @@ import type { OsKind, PathClass, ShellName, -} from '#/_base/execEnv'; +} from '#/_base/execEnv/environmentProbe'; export type { HostEnvironmentInfo, OsKind, PathClass, ShellName }; diff --git a/packages/agent-core-v2/src/os/interface/hostFileSystem.ts b/packages/agent-core-v2/src/os/interface/hostFileSystem.ts index f6a49312c..17d1755bb 100644 --- a/packages/agent-core-v2/src/os/interface/hostFileSystem.ts +++ b/packages/agent-core-v2/src/os/interface/hostFileSystem.ts @@ -8,7 +8,7 @@ */ import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; -import type { TextDecodeErrors } from '#/_base/execEnv'; +import type { TextDecodeErrors } from '#/_base/execEnv/decodeText'; export interface HostFileStat { readonly isFile: boolean; diff --git a/packages/agent-core-v2/src/os/interface/hostProcess.ts b/packages/agent-core-v2/src/os/interface/hostProcess.ts index cf9695b97..b76a3d513 100644 --- a/packages/agent-core-v2/src/os/interface/hostProcess.ts +++ b/packages/agent-core-v2/src/os/interface/hostProcess.ts @@ -11,7 +11,8 @@ import type { Readable, Writable } from 'node:stream'; -import { KimiError, type ErrorCode } from '#/_base/errors'; +import type { ErrorCode } from '#/_base/errors/codes'; +import { KimiError } from '#/_base/errors/errors'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; export interface HostProcessOptions { diff --git a/packages/agent-core-v2/src/os/interface/terminalErrors.ts b/packages/agent-core-v2/src/os/interface/terminalErrors.ts index 578c21902..92208f7bb 100644 --- a/packages/agent-core-v2/src/os/interface/terminalErrors.ts +++ b/packages/agent-core-v2/src/os/interface/terminalErrors.ts @@ -2,7 +2,7 @@ * `terminal` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const TerminalErrors = { codes: { diff --git a/packages/agent-core-v2/src/persistence/backends/minidb/flag.ts b/packages/agent-core-v2/src/persistence/backends/minidb/flag.ts index 7703bd8c9..8b0b7aa4b 100644 --- a/packages/agent-core-v2/src/persistence/backends/minidb/flag.ts +++ b/packages/agent-core-v2/src/persistence/backends/minidb/flag.ts @@ -8,7 +8,7 @@ * the backend barrel. */ -import { type FlagDefinitionInput, registerFlagDefinition } from '#/app/flag'; +import { type FlagDefinitionInput, registerFlagDefinition } from '#/app/flag/flagRegistry'; export const persistenceMiniDbReadModelFlag: FlagDefinitionInput = { id: 'persistence_minidb_readmodel', diff --git a/packages/agent-core-v2/src/persistence/backends/minidb/miniDbQueryStore.ts b/packages/agent-core-v2/src/persistence/backends/minidb/miniDbQueryStore.ts index e993676a8..4cabec2ec 100644 --- a/packages/agent-core-v2/src/persistence/backends/minidb/miniDbQueryStore.ts +++ b/packages/agent-core-v2/src/persistence/backends/minidb/miniDbQueryStore.ts @@ -32,8 +32,8 @@ import { MiniDb, type QueryOptions } from '@moonshot-ai/minidb'; import { InstantiationType } from '#/_base/di/extensions'; import { Disposable, toDisposable } from '#/_base/di/lifecycle'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ILogService } from '#/_base/log'; -import { IBootstrapService } from '#/app/bootstrap'; +import { ILogService } from '#/_base/log/log'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IQueryStore, type Checkpoint, diff --git a/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycle.ts b/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycle.ts index 9df98e5cf..7ae4a2983 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycle.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycle.ts @@ -25,8 +25,8 @@ import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; import type { IAgentScopeHandle } from '#/_base/di/scope'; import type { Event } from '#/_base/event'; -import type { TokenUsage } from '#/app/llmProtocol'; -import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; +import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog/agentProfileCatalog'; import type { BindAgentInput } from '#/agent/profile'; import type { Turn } from '#/agent/turn'; diff --git a/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts b/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts index 8ffd32331..f219d9a25 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/agentLifecycleService.ts @@ -25,21 +25,21 @@ import { LifecycleScope, registerScopedService, } from '#/_base/di/scope'; -import { IBootstrapService } from '#/app/bootstrap'; -import { ITelemetryService } from '#/app/telemetry'; -import { ILogService } from '#/_base/log'; -import { IAgentProfileCatalogService } from '#/app/agentProfileCatalog'; -import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; +import { ILogService } from '#/_base/log/log'; +import { IAgentProfileCatalogService } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog/agentProfileCatalog'; import { AgentMcpService, IAgentMcpService } from '#/agent/mcp'; import { McpConnectionManager } from '#/agent/mcp/connection-manager'; import { createMcpOAuthStore, McpOAuthService } from '#/agent/mcp/oauth'; import { resolveSessionMcpConfig } from '#/agent/mcp/session-config'; -import { IPluginService } from '#/app/plugin'; +import { IPluginService } from '#/app/plugin/plugin'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionMetadata } from '#/session/sessionMetadata'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { IAgentScopeContext } from '#/agent/scopeContext'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; diff --git a/packages/agent-core-v2/src/session/agentLifecycle/errors.ts b/packages/agent-core-v2/src/session/agentLifecycle/errors.ts index 862430030..cfe09345a 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/errors.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/errors.ts @@ -2,7 +2,7 @@ * `agentLifecycle` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const AgentLifecycleErrors = { codes: { diff --git a/packages/agent-core-v2/src/session/agentLifecycle/mirrorAgentRun.ts b/packages/agent-core-v2/src/session/agentLifecycle/mirrorAgentRun.ts index 6ab87a7fd..aa392b856 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/mirrorAgentRun.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/mirrorAgentRun.ts @@ -20,8 +20,9 @@ import type { IAgentScopeHandle } from '#/_base/di/scope'; import { userCancellationReason } from '#/_base/utils/abort'; -import { isProviderRateLimitError, type TokenUsage } from '#/app/llmProtocol'; -import { ITelemetryService } from '#/app/telemetry'; +import { isProviderRateLimitError } from '#/app/llmProtocol/errors'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentExternalHooksService } from '#/agent/externalHooks'; import type { SubagentCompletedEvent, @@ -29,7 +30,7 @@ import type { SubagentSpawnedEvent, SubagentStartedEvent, } from '@moonshot-ai/protocol'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { isAbortError } from '#/agent/loop/errors'; import type { AgentRunHandle } from './agentLifecycle'; diff --git a/packages/agent-core-v2/src/session/agentLifecycle/profile/profiles.ts b/packages/agent-core-v2/src/session/agentLifecycle/profile/profiles.ts index a915857cc..498d4d1e8 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/profile/profiles.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/profile/profiles.ts @@ -12,8 +12,8 @@ * list before `AgentProfileCatalogService` constructs. */ -import { collectGitContext } from '#/session/sessionFs'; -import { registerAgentProfile } from '#/app/agentProfileCatalog'; +import { collectGitContext } from '#/session/sessionFs/gitContext'; +import { registerAgentProfile } from '#/app/agentProfileCatalog/contribution'; import { renderSystemPrompt, TASK_AGENT_ROLE_PREFIX, diff --git a/packages/agent-core-v2/src/session/agentLifecycle/runAgentTurn.ts b/packages/agent-core-v2/src/session/agentLifecycle/runAgentTurn.ts index 54124d9c5..5b13a6e89 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/runAgentTurn.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/runAgentTurn.ts @@ -15,11 +15,8 @@ * flow. */ -import { - APIProviderRateLimitError, - isProviderRateLimitError, - type TokenUsage, -} from '#/app/llmProtocol'; +import { APIProviderRateLimitError, isProviderRateLimitError } from '#/app/llmProtocol/errors'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; import { linkAbortSignal, userCancellationReason } from '#/_base/utils/abort'; import type { IAgentScopeHandle } from '#/_base/di/scope'; @@ -32,7 +29,7 @@ import { ErrorCodes, toKimiErrorPayload, type KimiErrorPayload } from '#/errors' import { IAgentPromptService } from '#/agent/prompt'; import { IAgentUsageService } from '#/agent/usage'; import type { Turn } from '#/agent/turn'; -import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog'; +import type { AgentProfileSummaryPolicy } from '#/app/agentProfileCatalog/agentProfileCatalog'; import type { AgentRunHandle, AgentRunRequest } from './agentLifecycle'; diff --git a/packages/agent-core-v2/src/session/agentLifecycle/tools/agent.ts b/packages/agent-core-v2/src/session/agentLifecycle/tools/agent.ts index 0360f689d..3df738339 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/tools/agent.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/tools/agent.ts @@ -33,14 +33,11 @@ import type { } from '#/agent/tool'; import { ToolAccesses } from '#/agent/tool'; import { registerTool } from '#/agent/toolRegistry'; -import { - applyProfilePromptPrefix, - IAgentProfileCatalogService, - type AgentProfile, -} from '#/app/agentProfileCatalog'; -import { ILogService } from '#/_base/log'; -import { ISessionProcessRunner } from '#/session/process'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { IAgentProfileCatalogService, type AgentProfile } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import { applyProfilePromptPrefix } from '#/app/agentProfileCatalog/promptPrefix'; +import { ILogService } from '#/_base/log/log'; +import { ISessionProcessRunner } from '#/session/process/processRunner'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { IAgentLifecycleService } from '../agentLifecycle'; import { emitAgentRunSpawned, mirrorAgentRun } from '../mirrorAgentRun'; diff --git a/packages/agent-core-v2/src/session/agentLifecycle/tools/subagent-task.ts b/packages/agent-core-v2/src/session/agentLifecycle/tools/subagent-task.ts index 42c3950fb..a7e4ee5e6 100644 --- a/packages/agent-core-v2/src/session/agentLifecycle/tools/subagent-task.ts +++ b/packages/agent-core-v2/src/session/agentLifecycle/tools/subagent-task.ts @@ -1,4 +1,4 @@ -import type { TokenUsage } from '#/app/llmProtocol'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import { type AgentTask, diff --git a/packages/agent-core-v2/src/session/approval/approvalService.ts b/packages/agent-core-v2/src/session/approval/approvalService.ts index 2a8f68c57..e8a96dfbb 100644 --- a/packages/agent-core-v2/src/session/approval/approvalService.ts +++ b/packages/agent-core-v2/src/session/approval/approvalService.ts @@ -7,7 +7,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { type ApprovalRequest, diff --git a/packages/agent-core-v2/src/session/btw/btwService.ts b/packages/agent-core-v2/src/session/btw/btwService.ts index df991d473..6038bf8d3 100644 --- a/packages/agent-core-v2/src/session/btw/btwService.ts +++ b/packages/agent-core-v2/src/session/btw/btwService.ts @@ -17,7 +17,7 @@ import { IAgentPermissionPolicyService, } from '#/agent/permissionPolicy'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import { ISessionBtwService, SIDE_QUESTION_SYSTEM_REMINDER, TOOL_CALL_DISABLED_MESSAGE } from './btw'; diff --git a/packages/agent-core-v2/src/session/cron/cronOps.ts b/packages/agent-core-v2/src/session/cron/cronOps.ts index 63c612500..329a65022 100644 --- a/packages/agent-core-v2/src/session/cron/cronOps.ts +++ b/packages/agent-core-v2/src/session/cron/cronOps.ts @@ -24,7 +24,7 @@ import type { CronJobOrigin } from '@moonshot-ai/protocol'; import { defineModel, defineOp } from '#/wire'; -import type { CronTask } from '#/app/cron'; +import type { CronTask } from '#/app/cron/cronTask'; export type CronModelState = Map; diff --git a/packages/agent-core-v2/src/session/cron/sessionCronService.ts b/packages/agent-core-v2/src/session/cron/sessionCronService.ts index 8291cbee8..747ad15d1 100644 --- a/packages/agent-core-v2/src/session/cron/sessionCronService.ts +++ b/packages/agent-core-v2/src/session/cron/sessionCronService.ts @@ -8,11 +8,11 @@ * turn. Bound at Session scope. */ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; import type { Turn } from '#/agent/turn'; -import type { CronTask, CronTaskInit } from '#/app/cron'; +import type { CronTask, CronTaskInit } from '#/app/cron/cronTask'; export interface CronLoadOptions { readonly replace?: boolean; diff --git a/packages/agent-core-v2/src/session/cron/sessionCronServiceImpl.ts b/packages/agent-core-v2/src/session/cron/sessionCronServiceImpl.ts index 678b9229f..54ad6a402 100644 --- a/packages/agent-core-v2/src/session/cron/sessionCronServiceImpl.ts +++ b/packages/agent-core-v2/src/session/cron/sessionCronServiceImpl.ts @@ -16,40 +16,30 @@ import { randomBytes } from 'node:crypto'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import type { CronJobOrigin, CronMissedOrigin } from '@moonshot-ai/protocol'; -import { Disposable, toDisposable } from '#/_base/di'; +import { Disposable, toDisposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { IInstantiationService } from '#/_base/di/instantiation'; import { type IAgentScopeHandle, LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { IntervalTimer } from '#/_base/utils'; +import { IntervalTimer } from '#/_base/utils/timer'; -import { IConfigService } from '#/app/config'; -import { ITelemetryService } from '#/app/telemetry'; -import { - computeNextCronRun, - type ClockSources, - type CronConfig, - type CronTask, - type CronTaskInit, - CRON_SECTION, - DEFAULT_CRON_CONFIG, - ICronTaskPersistence, - jitteredNextCronRunMs, - oneShotJitteredNextCronRunMs, - parseCronExpression, - type ParsedCronExpression, - renderCronFireXml, - resolveClockSources, - SYSTEM_CLOCKS, -} from '#/app/cron'; -import { ISessionContext } from '#/session/sessionContext'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; +import { IConfigService } from '#/app/config/config'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; +import { type ClockSources, resolveClockSources, SYSTEM_CLOCKS } from '#/app/cron/clock'; +import { type CronConfig, CRON_SECTION, DEFAULT_CRON_CONFIG } from '#/app/cron/configSection'; +import { computeNextCronRun, parseCronExpression, type ParsedCronExpression } from '#/app/cron/cron-expr'; +import { type CronTask, type CronTaskInit } from '#/app/cron/cronTask'; +import { ICronTaskPersistence } from '#/app/cron/cronTaskPersistence'; +import { renderCronFireXml } from '#/app/cron/format'; +import { jitteredNextCronRunMs, oneShotJitteredNextCronRunMs } from '#/app/cron/jitter'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import type { ContextMessage } from '#/agent/contextMemory'; import { IAgentPromptService } from '#/agent/prompt'; import { IAgentWireService, type Op } from '#/wire'; -import { type DomainEvent, IEventBus } from '#/app/event'; +import { type DomainEvent, IEventBus } from '#/app/event/eventBus'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import type { Turn } from '#/agent/turn'; import { IAgentTurnService } from '#/agent/turn'; diff --git a/packages/agent-core-v2/src/session/cron/tools/cron-create.ts b/packages/agent-core-v2/src/session/cron/tools/cron-create.ts index cad632072..68df48171 100644 --- a/packages/agent-core-v2/src/session/cron/tools/cron-create.ts +++ b/packages/agent-core-v2/src/session/cron/tools/cron-create.ts @@ -28,17 +28,10 @@ import { z } from 'zod'; import type { ExecutableTool as BuiltinTool, ToolExecution } from '#/agent/tool'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; import { literalRulePattern } from '#/_base/tools/support/rule-match'; -import { ISessionCronService } from '#/session/cron'; -import { - computeNextCronRun, - cronToHuman, - formatLocalIsoWithOffset, - hasFireWithinYears, - jitteredNextCronRunMs, - oneShotJitteredNextCronRunMs, - parseCronExpression, - type ParsedCronExpression, -} from '#/app/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; +import { computeNextCronRun, cronToHuman, hasFireWithinYears, parseCronExpression, type ParsedCronExpression } from '#/app/cron/cron-expr'; +import { formatLocalIsoWithOffset } from '#/app/cron/format'; +import { jitteredNextCronRunMs, oneShotJitteredNextCronRunMs } from '#/app/cron/jitter'; import CRON_CREATE_DESCRIPTION from './cron-create.md?raw'; // ── Constants ──────────────────────────────────────────────────────── diff --git a/packages/agent-core-v2/src/session/cron/tools/cron-delete.ts b/packages/agent-core-v2/src/session/cron/tools/cron-delete.ts index fac9c417b..03fc3fc77 100644 --- a/packages/agent-core-v2/src/session/cron/tools/cron-delete.ts +++ b/packages/agent-core-v2/src/session/cron/tools/cron-delete.ts @@ -39,7 +39,7 @@ import { z } from 'zod'; import type { ExecutableTool as BuiltinTool, ToolExecution } from '#/agent/tool'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import CRON_DELETE_DESCRIPTION from './cron-delete.md?raw'; // ── Constants ──────────────────────────────────────────────────────── diff --git a/packages/agent-core-v2/src/session/cron/tools/cron-list.ts b/packages/agent-core-v2/src/session/cron/tools/cron-list.ts index 03ee1cd70..aebcaa172 100644 --- a/packages/agent-core-v2/src/session/cron/tools/cron-list.ts +++ b/packages/agent-core-v2/src/session/cron/tools/cron-list.ts @@ -44,13 +44,10 @@ import { z } from 'zod'; import type { ExecutableTool as BuiltinTool, ToolExecution } from '#/agent/tool'; import { toInputJsonSchema } from '#/_base/tools/support/input-schema'; -import { ISessionCronService } from '#/session/cron'; -import { - cronToHuman, - formatLocalIsoWithOffset, - parseCronExpression, - type CronTask, -} from '#/app/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; +import { cronToHuman, parseCronExpression } from '#/app/cron/cron-expr'; +import { type CronTask } from '#/app/cron/cronTask'; +import { formatLocalIsoWithOffset } from '#/app/cron/format'; import CRON_LIST_DESCRIPTION from './cron-list.md?raw'; // ── Input schema ───────────────────────────────────────────────────── diff --git a/packages/agent-core-v2/src/session/errors.ts b/packages/agent-core-v2/src/session/errors.ts index 8f86176f5..68807f3fd 100644 --- a/packages/agent-core-v2/src/session/errors.ts +++ b/packages/agent-core-v2/src/session/errors.ts @@ -3,7 +3,7 @@ * (`sessionLifecycle` / `sessionLegacy` / `messageLegacy`). */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const SessionErrors = { codes: { diff --git a/packages/agent-core-v2/src/session/process/processRunnerService.ts b/packages/agent-core-v2/src/session/process/processRunnerService.ts index 70fdf503d..9b1126519 100644 --- a/packages/agent-core-v2/src/session/process/processRunnerService.ts +++ b/packages/agent-core-v2/src/session/process/processRunnerService.ts @@ -13,7 +13,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IHostProcessService } from '#/os/interface/hostProcess'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { type IProcess, ISessionProcessRunner, type ProcessExecOptions } from './processRunner'; diff --git a/packages/agent-core-v2/src/session/question/questionService.ts b/packages/agent-core-v2/src/session/question/questionService.ts index 9182bd141..14a27ac7a 100644 --- a/packages/agent-core-v2/src/session/question/questionService.ts +++ b/packages/agent-core-v2/src/session/question/questionService.ts @@ -7,7 +7,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { type QuestionRequest, diff --git a/packages/agent-core-v2/src/session/sessionActivity/sessionActivityService.ts b/packages/agent-core-v2/src/session/sessionActivity/sessionActivityService.ts index 93c00134e..887ec3bee 100644 --- a/packages/agent-core-v2/src/session/sessionActivity/sessionActivityService.ts +++ b/packages/agent-core-v2/src/session/sessionActivity/sessionActivityService.ts @@ -10,7 +10,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { IAgentTurnService } from '#/agent/turn'; import { ISessionActivity, type SessionStatus } from './sessionActivity'; diff --git a/packages/agent-core-v2/src/session/sessionFs/errors.ts b/packages/agent-core-v2/src/session/sessionFs/errors.ts index fcc7217ab..058370a2f 100644 --- a/packages/agent-core-v2/src/session/sessionFs/errors.ts +++ b/packages/agent-core-v2/src/session/sessionFs/errors.ts @@ -2,7 +2,7 @@ * `sessionFs` domain error codes. */ -import { registerErrorDomain, type ErrorDomain } from '#/_base/errors'; +import { registerErrorDomain, type ErrorDomain } from '#/_base/errors/codes'; export const FsErrors = { codes: { diff --git a/packages/agent-core-v2/src/session/sessionFs/fsProcess.ts b/packages/agent-core-v2/src/session/sessionFs/fsProcess.ts index b3d0132e1..b1fa6ac04 100644 --- a/packages/agent-core-v2/src/session/sessionFs/fsProcess.ts +++ b/packages/agent-core-v2/src/session/sessionFs/fsProcess.ts @@ -10,7 +10,7 @@ import { type Readable } from 'node:stream'; -import { type IProcess, type ISessionProcessRunner } from '#/session/process'; +import { type IProcess, type ISessionProcessRunner } from '#/session/process/processRunner'; export interface RunResult { readonly exitCode: number; diff --git a/packages/agent-core-v2/src/session/sessionFs/fsService.ts b/packages/agent-core-v2/src/session/sessionFs/fsService.ts index cb76347a8..f64dbcfd3 100644 --- a/packages/agent-core-v2/src/session/sessionFs/fsService.ts +++ b/packages/agent-core-v2/src/session/sessionFs/fsService.ts @@ -47,11 +47,11 @@ import ignore, { type Ignore } from 'ignore'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { ErrorCodes, KimiError } from '#/errors'; -import { IGitService } from '#/app/git'; -import { ITelemetryService } from '#/app/telemetry'; +import { IGitService } from '#/app/git/git'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IHostFileSystem, type HostFileStat } from '#/os/interface/hostFileSystem'; -import { ISessionProcessRunner } from '#/session/process'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionProcessRunner } from '#/session/process/processRunner'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { type FsDownloadResolved, type FsPathResolved, ISessionFsService } from './fs'; import { runCommand } from './fsProcess'; diff --git a/packages/agent-core-v2/src/session/sessionFs/gitContext.ts b/packages/agent-core-v2/src/session/sessionFs/gitContext.ts index e0d74810c..5f04c17d7 100644 --- a/packages/agent-core-v2/src/session/sessionFs/gitContext.ts +++ b/packages/agent-core-v2/src/session/sessionFs/gitContext.ts @@ -15,8 +15,8 @@ import type { Readable } from 'node:stream'; -import type { ILogger } from '#/_base/log'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import type { ILogger } from '#/_base/log/log'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; const GIT_TIMEOUT_MS = 5_000; const MAX_DIRTY_FILES = 20; diff --git a/packages/agent-core-v2/src/session/sessionFs/runRg.ts b/packages/agent-core-v2/src/session/sessionFs/runRg.ts index bbc40fdab..aa3767dcc 100644 --- a/packages/agent-core-v2/src/session/sessionFs/runRg.ts +++ b/packages/agent-core-v2/src/session/sessionFs/runRg.ts @@ -16,7 +16,7 @@ import type { Readable } from 'node:stream'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; export const DEFAULT_TIMEOUT_MS = 20_000; export const SIGTERM_GRACE_MS = 5_000; diff --git a/packages/agent-core-v2/src/session/sessionLog/sessionLogService.ts b/packages/agent-core-v2/src/session/sessionLog/sessionLogService.ts index fcdc3f97b..66b0f11b0 100644 --- a/packages/agent-core-v2/src/session/sessionLog/sessionLogService.ts +++ b/packages/agent-core-v2/src/session/sessionLog/sessionLogService.ts @@ -11,7 +11,7 @@ import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { ILogService, type LogLevel } from '#/_base/log/log'; import { createFileLogWriter, type FileLogWriter } from '#/_base/log/fileLog'; diff --git a/packages/agent-core-v2/src/session/sessionMetadata/sessionMetadataService.ts b/packages/agent-core-v2/src/session/sessionMetadata/sessionMetadataService.ts index fdda33059..a7d44d88b 100644 --- a/packages/agent-core-v2/src/session/sessionMetadata/sessionMetadataService.ts +++ b/packages/agent-core-v2/src/session/sessionMetadata/sessionMetadataService.ts @@ -20,11 +20,11 @@ import { InstantiationType } from '#/_base/di/extensions'; import { Disposable } from '#/_base/di/lifecycle'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { Emitter, type Event } from '#/_base/event'; -import { ILogService } from '#/_base/log'; -import { IFlagService } from '#/app/flag'; +import { ILogService } from '#/_base/log/log'; +import { IFlagService } from '#/app/flag/flag'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IQueryStore } from '#/persistence/interface/queryStore'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { ISessionMetadata, diff --git a/packages/agent-core-v2/src/session/sessionSkillCatalog/pluginSkillSource.ts b/packages/agent-core-v2/src/session/sessionSkillCatalog/pluginSkillSource.ts index 779cc4931..8d9130789 100644 --- a/packages/agent-core-v2/src/session/sessionSkillCatalog/pluginSkillSource.ts +++ b/packages/agent-core-v2/src/session/sessionSkillCatalog/pluginSkillSource.ts @@ -14,7 +14,7 @@ import type { Event } from '#/_base/event'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { ISkillDiscovery } from '#/app/skillCatalog/skillDiscovery'; import type { ISkillSource, SkillContribution } from '#/app/skillCatalog/skillSource'; -import { IPluginService } from '#/app/plugin'; +import { IPluginService } from '#/app/plugin/plugin'; export interface IPluginSkillSource extends ISkillSource { readonly _serviceBrand: undefined; diff --git a/packages/agent-core-v2/src/session/sessionSkillCatalog/skillCatalogService.ts b/packages/agent-core-v2/src/session/sessionSkillCatalog/skillCatalogService.ts index 5ef128e44..09c570a0f 100644 --- a/packages/agent-core-v2/src/session/sessionSkillCatalog/skillCatalogService.ts +++ b/packages/agent-core-v2/src/session/sessionSkillCatalog/skillCatalogService.ts @@ -11,7 +11,7 @@ * `ISessionSkillCatalog` read view. */ -import { Disposable } from '#/_base/di'; +import { Disposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { Emitter, type Event } from '#/_base/event'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; diff --git a/packages/agent-core-v2/src/session/sessionSkillCatalog/workspaceFileSkillSource.ts b/packages/agent-core-v2/src/session/sessionSkillCatalog/workspaceFileSkillSource.ts index 60b0d67fe..33aa969e5 100644 --- a/packages/agent-core-v2/src/session/sessionSkillCatalog/workspaceFileSkillSource.ts +++ b/packages/agent-core-v2/src/session/sessionSkillCatalog/workspaceFileSkillSource.ts @@ -13,7 +13,7 @@ import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { ISkillDiscovery } from '#/app/skillCatalog/skillDiscovery'; import { projectRoots } from '#/app/skillCatalog/skillRoots'; import type { ISkillSource, SkillContribution } from '#/app/skillCatalog/skillSource'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; export interface IWorkspaceFileSkillSource extends ISkillSource { readonly _serviceBrand: undefined; diff --git a/packages/agent-core-v2/src/session/swarm/agentRunBatch.ts b/packages/agent-core-v2/src/session/swarm/agentRunBatch.ts index 36a607022..de06f5664 100644 --- a/packages/agent-core-v2/src/session/swarm/agentRunBatch.ts +++ b/packages/agent-core-v2/src/session/swarm/agentRunBatch.ts @@ -8,7 +8,8 @@ * `SessionSwarmService` imports it. */ -import { isProviderRateLimitError, type TokenUsage } from '#/app/llmProtocol'; +import { isProviderRateLimitError } from '#/app/llmProtocol/errors'; +import { type TokenUsage } from '#/app/llmProtocol/usage'; import * as retry from 'retry'; import { isUserCancellation } from '#/_base/utils/abort'; diff --git a/packages/agent-core-v2/src/session/swarm/sessionSwarm.ts b/packages/agent-core-v2/src/session/swarm/sessionSwarm.ts index 36a69c1da..2adbc76a9 100644 --- a/packages/agent-core-v2/src/session/swarm/sessionSwarm.ts +++ b/packages/agent-core-v2/src/session/swarm/sessionSwarm.ts @@ -7,7 +7,7 @@ * lives in the internal `agentRunBatch` module. Bound at Session scope. */ -import type { TokenUsage } from '#/app/llmProtocol'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; diff --git a/packages/agent-core-v2/src/session/swarm/sessionSwarmService.ts b/packages/agent-core-v2/src/session/swarm/sessionSwarmService.ts index a30b81a0c..66a244042 100644 --- a/packages/agent-core-v2/src/session/swarm/sessionSwarmService.ts +++ b/packages/agent-core-v2/src/session/swarm/sessionSwarmService.ts @@ -13,7 +13,7 @@ * itself stays flat. Bound at Session scope. */ -import type { TokenUsage } from '#/app/llmProtocol'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; @@ -21,19 +21,14 @@ import { linkAbortSignal } from '#/_base/utils/abort'; import type { IAgentScopeHandle } from '#/_base/di/scope'; import { IAgentProfileService } from '#/agent/profile'; import type { SubagentSuspendedEvent } from '@moonshot-ai/protocol'; -import { IEventBus } from '#/app/event'; -import { - applyProfilePromptPrefix, - IAgentProfileCatalogService, -} from '#/app/agentProfileCatalog'; -import { - emitAgentRunSpawned, - IAgentLifecycleService, - mirrorAgentRun, -} from '#/session/agentLifecycle'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionProcessRunner } from '#/session/process'; -import { ILogService } from '#/_base/log'; +import { IEventBus } from '#/app/event/eventBus'; +import { IAgentProfileCatalogService } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import { applyProfilePromptPrefix } from '#/app/agentProfileCatalog/promptPrefix'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { emitAgentRunSpawned, mirrorAgentRun } from '#/session/agentLifecycle/mirrorAgentRun'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionProcessRunner } from '#/session/process/processRunner'; +import { ILogService } from '#/_base/log/log'; import { ISessionSwarmService, diff --git a/packages/agent-core-v2/src/session/terminal/terminalService.ts b/packages/agent-core-v2/src/session/terminal/terminalService.ts index f962d360b..c4b79869c 100644 --- a/packages/agent-core-v2/src/session/terminal/terminalService.ts +++ b/packages/agent-core-v2/src/session/terminal/terminalService.ts @@ -25,8 +25,8 @@ import type { } from '#/os/interface/terminal'; import { IHostTerminalService } from '#/os/interface/terminal'; import { ErrorCodes, KimiError } from '#/errors'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; const DEFAULT_COLS = 80; const DEFAULT_ROWS = 24; diff --git a/packages/agent-core-v2/src/session/todo/sessionTodo.ts b/packages/agent-core-v2/src/session/todo/sessionTodo.ts index 548067e85..cee4d96c5 100644 --- a/packages/agent-core-v2/src/session/todo/sessionTodo.ts +++ b/packages/agent-core-v2/src/session/todo/sessionTodo.ts @@ -7,7 +7,7 @@ * the session. Bound at Session scope. */ -import { createDecorator } from '#/_base/di'; +import { createDecorator } from '#/_base/di/instantiation'; import type { Event } from '#/_base/event'; import type { TodoItem } from './todoItem'; diff --git a/packages/agent-core-v2/src/session/todo/sessionTodoService.ts b/packages/agent-core-v2/src/session/todo/sessionTodoService.ts index 31b291c9a..2d630a554 100644 --- a/packages/agent-core-v2/src/session/todo/sessionTodoService.ts +++ b/packages/agent-core-v2/src/session/todo/sessionTodoService.ts @@ -12,7 +12,7 @@ * is disposed. Bound at Session scope. */ -import { Disposable, toDisposable, type IDisposable } from '#/_base/di'; +import { Disposable, toDisposable, type IDisposable } from '#/_base/di/lifecycle'; import { InstantiationType } from '#/_base/di/extensions'; import { type IAgentScopeHandle, LifecycleScope, registerScopedService } from '#/_base/di/scope'; import { Emitter } from '#/_base/event'; @@ -20,7 +20,7 @@ import { Emitter } from '#/_base/event'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentProfileService } from '#/agent/profile'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import { IAgentWireService } from '#/wire'; import { ISessionTodoService } from './sessionTodo'; diff --git a/packages/agent-core-v2/src/session/workspaceContext/workspaceContextService.ts b/packages/agent-core-v2/src/session/workspaceContext/workspaceContextService.ts index dc9a66bf8..c0b5d5c3c 100644 --- a/packages/agent-core-v2/src/session/workspaceContext/workspaceContextService.ts +++ b/packages/agent-core-v2/src/session/workspaceContext/workspaceContextService.ts @@ -10,7 +10,7 @@ import { isAbsolute, relative, resolve } from 'node:path'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, registerScopedService } from '#/_base/di/scope'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { ISessionWorkspaceContext, type PathAccessOperation } from './workspaceContext'; diff --git a/packages/agent-core-v2/src/wire/wireServiceImpl.ts b/packages/agent-core-v2/src/wire/wireServiceImpl.ts index d0f46b7ca..9c5981bc2 100644 --- a/packages/agent-core-v2/src/wire/wireServiceImpl.ts +++ b/packages/agent-core-v2/src/wire/wireServiceImpl.ts @@ -49,8 +49,8 @@ import { Disposable, type IDisposable } from '#/_base/di/lifecycle'; import { onUnexpectedError } from '#/_base/errors/unexpectedError'; import { Emitter } from '#/_base/event'; import { IAgentBlobService } from '#/agent/blob'; -import { type DomainEvent, IEventBus } from '#/app/event'; -import type { ContentPart } from '#/app/llmProtocol'; +import { type DomainEvent, IEventBus } from '#/app/event/eventBus'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import type { DeepReadonly, DerivedModelDef, ModelDef, PartsTransformer } from './model'; diff --git a/packages/agent-core-v2/test/_base/utils/completion-budget.test.ts b/packages/agent-core-v2/test/_base/utils/completion-budget.test.ts index 84d771bdd..d6dd824e8 100644 --- a/packages/agent-core-v2/test/_base/utils/completion-budget.test.ts +++ b/packages/agent-core-v2/test/_base/utils/completion-budget.test.ts @@ -1,5 +1,5 @@ -import type { ModelCapability } from '#/app/llmProtocol'; -import type { Model } from '#/app/model'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { Model } from '#/app/model/modelInstance'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { diff --git a/packages/agent-core-v2/test/_base/utils/timer.test.ts b/packages/agent-core-v2/test/_base/utils/timer.test.ts index 2b89a745d..9665cf91a 100644 --- a/packages/agent-core-v2/test/_base/utils/timer.test.ts +++ b/packages/agent-core-v2/test/_base/utils/timer.test.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { IntervalTimer } from '#/_base/utils'; +import { IntervalTimer } from '#/_base/utils/timer'; describe('IntervalTimer', () => { beforeEach(() => { diff --git a/packages/agent-core-v2/test/agentLifecycle/agentLifecycle.test.ts b/packages/agent-core-v2/test/agentLifecycle/agentLifecycle.test.ts index b7388f863..a9787b067 100644 --- a/packages/agent-core-v2/test/agentLifecycle/agentLifecycle.test.ts +++ b/packages/agent-core-v2/test/agentLifecycle/agentLifecycle.test.ts @@ -8,12 +8,12 @@ import { IAgentMcpService, type McpServerConfig } from '#/agent/mcp'; import { McpConnectionManager } from '#/agent/mcp/connection-manager'; import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import { AgentLifecycleService } from '#/session/agentLifecycle/agentLifecycleService'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigService } from '#/app/config'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigService } from '#/app/config/config'; import { IAgentBlobService } from '#/agent/blob'; import { IPluginSessionStartInjectorService } from '#/agent/contextInjector'; -import { ILogService } from '#/_base/log'; -import { IPluginService } from '#/app/plugin'; +import { ILogService } from '#/_base/log/log'; +import { IPluginService } from '#/app/plugin/plugin'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { ISessionContext } from '#/session/sessionContext/sessionContext'; @@ -21,7 +21,7 @@ import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import { AGENT_WIRE_PROTOCOL_VERSION, type PersistedWireRecord } from '#/agent/wireRecord'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentToolRegistryService, _clearToolContributionsForTests } from '#/agent/toolRegistry'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import type { OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js'; const noopLog = { diff --git a/packages/agent-core-v2/test/approval/approval.test.ts b/packages/agent-core-v2/test/approval/approval.test.ts index 4a9a815aa..24bd41b2b 100644 --- a/packages/agent-core-v2/test/approval/approval.test.ts +++ b/packages/agent-core-v2/test/approval/approval.test.ts @@ -4,10 +4,9 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import type { ApprovalRequest } from '#/session/approval'; -import { ISessionApprovalService } from '#/session/approval'; +import { type ApprovalRequest, ISessionApprovalService } from '#/session/approval/approval'; import { SessionApprovalService } from '#/session/approval/approvalService'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { SessionInteractionService } from '#/session/interaction/interactionService'; const display: ToolInputDisplay = { kind: 'command', command: 'bash' }; diff --git a/packages/agent-core-v2/test/auth/auth.test.ts b/packages/agent-core-v2/test/auth/auth.test.ts index 93af6d322..65f7d8172 100644 --- a/packages/agent-core-v2/test/auth/auth.test.ts +++ b/packages/agent-core-v2/test/auth/auth.test.ts @@ -14,7 +14,8 @@ import { IAuthSummaryService, IOAuthService, IOAuthToolkit } from '#/app/auth/au import { AuthSummaryService, OAuthService } from '#/app/auth/authService'; import { IWebSearchProviderService } from '#/app/auth/webSearch/webSearch'; import { WebSearchProviderService } from '#/app/auth/webSearch/webSearchService'; -import { AuthLegacyService, IAuthLegacyService } from '#/app/authLegacy'; +import { IAuthLegacyService } from '#/app/authLegacy/authLegacy'; +import { AuthLegacyService } from '#/app/authLegacy/authLegacyService'; import { IConfigService } from '#/app/config/config'; import { type DomainEvent, IEventService } from '#/app/event/event'; import { ILogService } from '#/_base/log/log'; diff --git a/packages/agent-core-v2/test/blob/blobService.test.ts b/packages/agent-core-v2/test/blob/blobService.test.ts index 711f6c446..f379bc704 100644 --- a/packages/agent-core-v2/test/blob/blobService.test.ts +++ b/packages/agent-core-v2/test/blob/blobService.test.ts @@ -1,13 +1,13 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { type ServiceIdentifier } from '#/_base/di/instantiation'; import { LifecycleScope } from '#/_base/di/scope'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; import { AgentBlobServiceImpl, IAgentBlobService } from '#/agent/blob'; import { IAgentScopeContext, makeAgentScopeContext } from '#/agent/scopeContext'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IBlobStore } from '#/persistence/interface/blobStore'; diff --git a/packages/agent-core-v2/test/blob/blobref.test.ts b/packages/agent-core-v2/test/blob/blobref.test.ts index 9c98f5d9e..7f473cf62 100644 --- a/packages/agent-core-v2/test/blob/blobref.test.ts +++ b/packages/agent-core-v2/test/blob/blobref.test.ts @@ -3,7 +3,7 @@ import { mkdir, readdir, readFile, rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'pathe'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { afterEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; @@ -15,7 +15,7 @@ import { IAgentBlobService, MISSING_MEDIA_PLACEHOLDER, } from '#/agent/blob'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IAgentScopeContext, makeAgentScopeContext } from '#/agent/scopeContext'; import { FileStorageService } from '#/persistence/backends/node-fs/fileStorageService'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; diff --git a/packages/agent-core-v2/test/bootstrap/bootstrapService.test.ts b/packages/agent-core-v2/test/bootstrap/bootstrapService.test.ts index 89258f070..d3272107e 100644 --- a/packages/agent-core-v2/test/bootstrap/bootstrapService.test.ts +++ b/packages/agent-core-v2/test/bootstrap/bootstrapService.test.ts @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it } from 'vitest'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, _clearScopedRegistryForTests, registerScopedService } from '#/_base/di/scope'; import { createScopedTestHost } from '#/_base/di/test'; -import { IBootstrapService, bootstrapSeed, resolveBootstrapOptions } from '#/app/bootstrap'; +import { IBootstrapService, bootstrapSeed, resolveBootstrapOptions } from '#/app/bootstrap/bootstrap'; import { bootstrap } from '#/app/bootstrap/bootstrap'; import { BootstrapService } from '#/app/bootstrap/bootstrapService'; import { FileStorageService } from '#/persistence/backends/node-fs/fileStorageService'; diff --git a/packages/agent-core-v2/test/bootstrap/paths.test.ts b/packages/agent-core-v2/test/bootstrap/paths.test.ts index d4394fef5..81b69d92c 100644 --- a/packages/agent-core-v2/test/bootstrap/paths.test.ts +++ b/packages/agent-core-v2/test/bootstrap/paths.test.ts @@ -4,7 +4,7 @@ import { join } from 'node:path'; import { afterEach, describe, expect, it } from 'vitest'; -import { ensureKimiHome, resolveConfigPath, resolveKimiHome } from '#/app/bootstrap'; +import { ensureKimiHome, resolveConfigPath, resolveKimiHome } from '#/app/bootstrap/bootstrap'; describe('bootstrap path helpers', () => { describe('resolveKimiHome', () => { diff --git a/packages/agent-core-v2/test/btw/btw.test.ts b/packages/agent-core-v2/test/btw/btw.test.ts index d92456065..cbeb1dc62 100644 --- a/packages/agent-core-v2/test/btw/btw.test.ts +++ b/packages/agent-core-v2/test/btw/btw.test.ts @@ -8,7 +8,7 @@ import { IAgentPermissionPolicyService, } from '#/agent/permissionPolicy'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import { ISessionBtwService, SIDE_QUESTION_SYSTEM_REMINDER } from '#/session/btw/btw'; import { SessionBtwService } from '#/session/btw/btwService'; diff --git a/packages/agent-core-v2/test/config/config.test.ts b/packages/agent-core-v2/test/config/config.test.ts index 04b7b7dc0..b8828193d 100644 --- a/packages/agent-core-v2/test/config/config.test.ts +++ b/packages/agent-core-v2/test/config/config.test.ts @@ -1,4 +1,5 @@ -import type { ModelCapability, ToolCall } from '#/app/llmProtocol'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ProviderConfig } from '#/app/llmProtocol/providers'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; diff --git a/packages/agent-core-v2/test/contextMemory/context.test.ts b/packages/agent-core-v2/test/contextMemory/context.test.ts index ded4dde87..0d43449b1 100644 --- a/packages/agent-core-v2/test/contextMemory/context.test.ts +++ b/packages/agent-core-v2/test/contextMemory/context.test.ts @@ -1,4 +1,4 @@ -import type { Message } from '#/app/llmProtocol'; +import type { Message } from '#/app/llmProtocol/message'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { estimateTokensForMessages } from '#/_base/utils/tokens'; diff --git a/packages/agent-core-v2/test/contextMemory/splice-replay.test.ts b/packages/agent-core-v2/test/contextMemory/splice-replay.test.ts index 62ce85061..3a7df2fe4 100644 --- a/packages/agent-core-v2/test/contextMemory/splice-replay.test.ts +++ b/packages/agent-core-v2/test/contextMemory/splice-replay.test.ts @@ -24,7 +24,7 @@ import { IAgentContextMemoryService, type ContextMessage, } from '#/agent/contextMemory'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; diff --git a/packages/agent-core-v2/test/contextMemory/stubs.ts b/packages/agent-core-v2/test/contextMemory/stubs.ts index a949ae4bd..0764eef24 100644 --- a/packages/agent-core-v2/test/contextMemory/stubs.ts +++ b/packages/agent-core-v2/test/contextMemory/stubs.ts @@ -7,7 +7,7 @@ * `../contextMemory/stubs`). */ -import { toDisposable } from '#/_base/di'; +import { toDisposable } from '#/_base/di/lifecycle'; import type { ServiceRegistration } from '#/_base/di/test'; import { createHooks } from '#/hooks'; import type { Hooks } from '#/hooks'; diff --git a/packages/agent-core-v2/test/contextProjector/projector-tool-exchanges.test.ts b/packages/agent-core-v2/test/contextProjector/projector-tool-exchanges.test.ts index d64b3fe68..e6671e290 100644 --- a/packages/agent-core-v2/test/contextProjector/projector-tool-exchanges.test.ts +++ b/packages/agent-core-v2/test/contextProjector/projector-tool-exchanges.test.ts @@ -9,7 +9,7 @@ import { IAgentContextProjectorService, } from '#/agent/contextProjector'; import { IAgentMicroCompactionService } from '#/agent/microCompaction'; -import type { Message } from '#/app/llmProtocol'; +import type { Message } from '#/app/llmProtocol/message'; // Tests for how the projector normalizes tool exchanges: results are pulled up // right after their call, messages that landed between a call and its results diff --git a/packages/agent-core-v2/test/contextProjector/projector.bench.ts b/packages/agent-core-v2/test/contextProjector/projector.bench.ts index dc9fbb12e..79700a6bb 100644 --- a/packages/agent-core-v2/test/contextProjector/projector.bench.ts +++ b/packages/agent-core-v2/test/contextProjector/projector.bench.ts @@ -23,7 +23,7 @@ import { } from '#/agent/contextProjector'; import { IAgentMicroCompactionService } from '#/agent/microCompaction'; import { ErrorCodes, KimiError } from '#/errors'; -import type { ContentPart, Message, TextPart, ToolCall } from '#/app/llmProtocol'; +import type { ContentPart, Message, TextPart, ToolCall } from '#/app/llmProtocol/message'; // --------------------------------------------------------------------------- // Legacy implementation (verbatim copy of the pre-rewrite `project`) diff --git a/packages/agent-core-v2/test/cron/agent-integration.test.ts b/packages/agent-core-v2/test/cron/agent-integration.test.ts index 497cf57bf..4b4f908b7 100644 --- a/packages/agent-core-v2/test/cron/agent-integration.test.ts +++ b/packages/agent-core-v2/test/cron/agent-integration.test.ts @@ -9,7 +9,7 @@ import { CronCreateTool, type CronCreateInput, } from '#/session/cron/tools/cron-create'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { createTestAgent, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/cron/cron.e2e.test.ts b/packages/agent-core-v2/test/cron/cron.e2e.test.ts index 3dd24a53f..c2f933124 100644 --- a/packages/agent-core-v2/test/cron/cron.e2e.test.ts +++ b/packages/agent-core-v2/test/cron/cron.e2e.test.ts @@ -12,7 +12,7 @@ import { CronDeleteTool } from '#/session/cron/tools/cron-delete'; import { CronListTool } from '#/session/cron/tools/cron-list'; import type { ExecutableToolOutput } from '#/agent/tool'; import type { ContextMessage } from '#/agent/contextMemory'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { IAgentPromptService } from '#/agent/prompt'; import { createTestAgent, cronServices, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/cron/cron.test.ts b/packages/agent-core-v2/test/cron/cron.test.ts index c1390950e..ef161f4f6 100644 --- a/packages/agent-core-v2/test/cron/cron.test.ts +++ b/packages/agent-core-v2/test/cron/cron.test.ts @@ -3,20 +3,20 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigRegistry, IConfigService } from '#/app/config'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigRegistry, IConfigService } from '#/app/config/config'; import { ConfigRegistry, ConfigService } from '#/app/config/configService'; import type { ContextMessage } from '#/agent/contextMemory'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { SessionCronServiceImpl } from '#/session/cron/sessionCronServiceImpl'; -import { ILogService } from '#/_base/log'; +import { ILogService } from '#/_base/log/log'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; import { IAtomicDocumentStore, IAtomicTomlDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { TomlAtomicDocumentStore } from '#/persistence/backends/node-fs/atomicDocumentStore'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { IAgentTurnService, type Turn } from '#/agent/turn'; import { IAgentWireRecordService } from '#/agent/wireRecord'; diff --git a/packages/agent-core-v2/test/cron/manager.test.ts b/packages/agent-core-v2/test/cron/manager.test.ts index d7deac19d..9937112aa 100644 --- a/packages/agent-core-v2/test/cron/manager.test.ts +++ b/packages/agent-core-v2/test/cron/manager.test.ts @@ -5,17 +5,17 @@ */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; -import type { CronTask } from '#/app/cron'; +import type { CronTask } from '#/app/cron/cronTask'; import { CRON_FIRED, CRON_MISSED, } from '#/session/cron/sessionCronServiceImpl'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { IAgentPromptService } from '#/agent/prompt'; import type { ContextMessage, PromptOrigin } from '#/agent/contextMemory'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentTurnService, type Turn } from '#/agent/turn'; import { createTestAgent, cronServices, type TestAgentContext } from '../harness'; import type { TelemetryRecord } from '../telemetry/stubs'; diff --git a/packages/agent-core-v2/test/cron/manual-tick.test.ts b/packages/agent-core-v2/test/cron/manual-tick.test.ts index 268d22b54..a350b7230 100644 --- a/packages/agent-core-v2/test/cron/manual-tick.test.ts +++ b/packages/agent-core-v2/test/cron/manual-tick.test.ts @@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import type { ContextMessage } from '#/agent/contextMemory'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { IAgentPromptService } from '#/agent/prompt'; import { createTestAgent, cronServices, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/cron/persist.test.ts b/packages/agent-core-v2/test/cron/persist.test.ts index 66273a3fb..63017cefa 100644 --- a/packages/agent-core-v2/test/cron/persist.test.ts +++ b/packages/agent-core-v2/test/cron/persist.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; -import type { CronTask } from '#/app/cron'; -import { CRON_ID_REGEX, isValidCronTask } from '#/app/cron'; +import type { CronTask } from '#/app/cron/cronTask'; +import { CRON_ID_REGEX, isValidCronTask } from '#/app/cron/cronTaskPersistenceService'; const validTask: CronTask = { id: '0123abcd', diff --git a/packages/agent-core-v2/test/cron/resume.test.ts b/packages/agent-core-v2/test/cron/resume.test.ts index d309527f9..4f08b6886 100644 --- a/packages/agent-core-v2/test/cron/resume.test.ts +++ b/packages/agent-core-v2/test/cron/resume.test.ts @@ -15,14 +15,14 @@ import { join, relative } from 'pathe'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import type { ContextMessage, PromptOrigin } from '#/agent/contextMemory'; import { IAgentPromptService } from '#/agent/prompt'; -import type { CronTask } from '#/app/cron'; -import { ISessionCronService } from '#/session/cron'; -import { IBootstrapService } from '#/app/bootstrap'; +import type { CronTask } from '#/app/cron/cronTask'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { createTestAgent, cronServices, diff --git a/packages/agent-core-v2/test/cron/subagent-skip.test.ts b/packages/agent-core-v2/test/cron/subagent-skip.test.ts index 14f4d14a1..66125b729 100644 --- a/packages/agent-core-v2/test/cron/subagent-skip.test.ts +++ b/packages/agent-core-v2/test/cron/subagent-skip.test.ts @@ -16,7 +16,7 @@ */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { ISessionCronService } from '#/session/cron'; +import { ISessionCronService } from '#/session/cron/sessionCronService'; import { IAgentProfileService } from '#/agent/profile'; import { createTestAgent, cronServices, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/cron/tools.test.ts b/packages/agent-core-v2/test/cron/tools.test.ts index 2c0fb52f8..dd463f8f2 100644 --- a/packages/agent-core-v2/test/cron/tools.test.ts +++ b/packages/agent-core-v2/test/cron/tools.test.ts @@ -8,8 +8,8 @@ import type { RunnableToolExecution, ToolExecution, } from '#/agent/tool'; -import type { CronTask, CronTaskInit } from '#/app/cron'; -import type { ISessionCronService } from '#/session/cron'; +import type { CronTask, CronTaskInit } from '#/app/cron/cronTask'; +import type { ISessionCronService } from '#/session/cron/sessionCronService'; import { computeNextCronRun, parseCronExpression, diff --git a/packages/agent-core-v2/test/errors/serialize.test.ts b/packages/agent-core-v2/test/errors/serialize.test.ts index a7f23a2bf..9a6b3c32c 100644 --- a/packages/agent-core-v2/test/errors/serialize.test.ts +++ b/packages/agent-core-v2/test/errors/serialize.test.ts @@ -1,4 +1,4 @@ -import { APIStatusError } from '#/app/llmProtocol'; +import { APIStatusError } from '#/app/llmProtocol/errors'; import { describe, expect, it } from 'vitest'; import { toErrorPayload } from '../../src/_base/errors/serialize'; diff --git a/packages/agent-core-v2/test/event/eventBus.test.ts b/packages/agent-core-v2/test/event/eventBus.test.ts index 5ef8e931f..956fcb1ec 100644 --- a/packages/agent-core-v2/test/event/eventBus.test.ts +++ b/packages/agent-core-v2/test/event/eventBus.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { type DomainEvent, EventBusService } from '#/app/event'; +import { type DomainEvent } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; declare module '#/app/event/eventBus' { interface DomainEventMap { diff --git a/packages/agent-core-v2/test/externalHooks/engine.test.ts b/packages/agent-core-v2/test/externalHooks/engine.test.ts index c9395c126..1fc315dc9 100644 --- a/packages/agent-core-v2/test/externalHooks/engine.test.ts +++ b/packages/agent-core-v2/test/externalHooks/engine.test.ts @@ -1,7 +1,7 @@ import { realpathSync } from 'node:fs'; import { tmpdir } from 'node:os'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { describe, expect, it, vi } from 'vitest'; import { HookEngine } from '#/agent/externalHooks/engine'; diff --git a/packages/agent-core-v2/test/externalHooks/integration.test.ts b/packages/agent-core-v2/test/externalHooks/integration.test.ts index b8baab699..746959718 100644 --- a/packages/agent-core-v2/test/externalHooks/integration.test.ts +++ b/packages/agent-core-v2/test/externalHooks/integration.test.ts @@ -7,7 +7,7 @@ import { type TestInstantiationService, } from '#/_base/di/test'; import { Event } from '#/_base/event'; -import { emptyUsage } from '#/app/llmProtocol'; +import { emptyUsage } from '#/app/llmProtocol/usage'; import { computeUndoCut, ensureMessageId, IAgentContextMemoryService, type ContextMessage } from '#/agent/contextMemory'; import { IAgentTaskService } from '#/agent/task'; import { @@ -26,9 +26,9 @@ import { IAgentPermissionGate } from '#/agent/permissionGate'; import { IAgentPromptService } from '#/agent/prompt'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentTurnService, type Turn } from '#/agent/turn'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigService } from '#/app/config'; -import { IPluginService } from '#/app/plugin'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigService } from '#/app/config/config'; +import { IPluginService } from '#/app/plugin/plugin'; import { createHooks } from '#/hooks'; import { IAgentWireService, WireService } from '#/wire'; diff --git a/packages/agent-core-v2/test/file/fileService.test.ts b/packages/agent-core-v2/test/file/fileService.test.ts index 88cde995c..ee24c35bb 100644 --- a/packages/agent-core-v2/test/file/fileService.test.ts +++ b/packages/agent-core-v2/test/file/fileService.test.ts @@ -10,12 +10,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { createServices, type TestInstantiationService } from '#/_base/di/test'; -import { - DEFAULT_MAX_UPLOAD_BYTES, - FileErrors, - FileServiceImpl, - IFileService, -} from '#/app/file'; +import { DEFAULT_MAX_UPLOAD_BYTES, FileErrors, IFileService } from '#/app/file/fileService'; +import { FileServiceImpl } from '#/app/file/fileServiceImpl'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IBlobStore } from '#/persistence/interface/blobStore'; diff --git a/packages/agent-core-v2/test/fileTools/edit.test.ts b/packages/agent-core-v2/test/fileTools/edit.test.ts index 4dcac65c7..f9809ebb6 100644 --- a/packages/agent-core-v2/test/fileTools/edit.test.ts +++ b/packages/agent-core-v2/test/fileTools/edit.test.ts @@ -15,11 +15,12 @@ import { PathSecurityError } from '../../src/_base/tools/policies/path-access'; import { stubWorkspaceContext } from './stub-workspace-context'; import { DisposableStore } from '#/_base/di/lifecycle'; import { createServices } from '#/_base/di/test'; -import { type EditInput, EditInputSchema, EditTool } from '#/app/edit'; -import { FileEditService, IFileEditService } from '#/app/edit'; +import { type EditInput, EditInputSchema, EditTool } from '#/app/edit/tools/edit'; +import { IFileEditService } from '#/app/edit/fileEdit'; +import { FileEditService } from '#/app/edit/fileEditService'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import type { ExecutableToolContext, ExecutableToolResult, ToolExecution } from '#/agent/tool'; const signal = new AbortController().signal; diff --git a/packages/agent-core-v2/test/fileTools/glob.test.ts b/packages/agent-core-v2/test/fileTools/glob.test.ts index 81b1bc459..5f62a7e5c 100644 --- a/packages/agent-core-v2/test/fileTools/glob.test.ts +++ b/packages/agent-core-v2/test/fileTools/glob.test.ts @@ -18,8 +18,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { ensureRgPath } from '#/os/backends/node-local/tools/rgLocator'; import { PathSecurityError, type PathClass } from '../../src/_base/tools/policies/path-access'; -import { noopTelemetryService } from '#/app/telemetry'; -import type { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { noopTelemetryService } from '#/app/telemetry/telemetry'; +import type { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { stubWorkspaceContext } from './stub-workspace-context'; import { type GlobInput, @@ -33,8 +33,8 @@ import type { IHostFileSystem } from '#/os/interface/hostFileSystem'; import type { IHostProcess, IHostProcessService } from '#/os/interface/hostProcess'; import { HostFileSystem } from '#/os/backends/node-local/hostFsService'; import { HostProcessService } from '#/os/backends/node-local/hostProcessService'; -import { probeHostEnvironmentFromNode } from '#/_base/execEnv'; -import type { ITelemetryService } from '#/app/telemetry'; +import { probeHostEnvironmentFromNode } from '#/_base/execEnv/environmentProbe'; +import type { ITelemetryService } from '#/app/telemetry/telemetry'; import type { ExecutableToolContext, ExecutableToolResult, ToolExecution } from '#/agent/tool'; // The ripgrep binary locator is mocked out for the unit tests so they assert diff --git a/packages/agent-core-v2/test/fileTools/stub-workspace-context.ts b/packages/agent-core-v2/test/fileTools/stub-workspace-context.ts index 176eff7b5..a7be4a81e 100644 --- a/packages/agent-core-v2/test/fileTools/stub-workspace-context.ts +++ b/packages/agent-core-v2/test/fileTools/stub-workspace-context.ts @@ -1,4 +1,4 @@ -import type { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import type { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; /** * Builds a minimal `ISessionWorkspaceContext` stub for file-tool unit tests. diff --git a/packages/agent-core-v2/test/fullCompaction/full.test.ts b/packages/agent-core-v2/test/fullCompaction/full.test.ts index 05848f241..d8372a909 100644 --- a/packages/agent-core-v2/test/fullCompaction/full.test.ts +++ b/packages/agent-core-v2/test/fullCompaction/full.test.ts @@ -2,15 +2,9 @@ import { existsSync, mkdtempSync, readFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'pathe'; -import { - APIConnectionError, - APIContextOverflowError, - APIStatusError, - UNKNOWN_CAPABILITY, - type Message, - type StreamedMessagePart, - type ToolCall, -} from '#/app/llmProtocol'; +import { UNKNOWN_CAPABILITY } from '#/app/llmProtocol/capability'; +import { APIConnectionError, APIContextOverflowError, APIStatusError } from '#/app/llmProtocol/errors'; +import { type Message, type StreamedMessagePart, type ToolCall } from '#/app/llmProtocol/message'; import { generate as runKosongGenerate } from '#/app/llmProtocol/generate'; import type { ChatProvider, StreamedMessage } from '#/app/llmProtocol/provider'; import { afterEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/agent-core-v2/test/fullCompaction/fullCompaction-wire.test.ts b/packages/agent-core-v2/test/fullCompaction/fullCompaction-wire.test.ts index acf26bb84..8582fc3b8 100644 --- a/packages/agent-core-v2/test/fullCompaction/fullCompaction-wire.test.ts +++ b/packages/agent-core-v2/test/fullCompaction/fullCompaction-wire.test.ts @@ -3,7 +3,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { EventBusService, IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { CompactionModel, fullCompactionBegin, diff --git a/packages/agent-core-v2/test/fullCompaction/strategy.test.ts b/packages/agent-core-v2/test/fullCompaction/strategy.test.ts index 2397fc3f0..c2d779b5a 100644 --- a/packages/agent-core-v2/test/fullCompaction/strategy.test.ts +++ b/packages/agent-core-v2/test/fullCompaction/strategy.test.ts @@ -1,6 +1,4 @@ -import { - type Message -} from '#/app/llmProtocol'; +import { type Message } from '#/app/llmProtocol/message'; import { describe, expect, it } from 'vitest'; import { estimateTokensForMessages } from '#/_base/utils/tokens'; diff --git a/packages/agent-core-v2/test/gateway/gateway.test.ts b/packages/agent-core-v2/test/gateway/gateway.test.ts index 97c96c902..5e7db9c1b 100644 --- a/packages/agent-core-v2/test/gateway/gateway.test.ts +++ b/packages/agent-core-v2/test/gateway/gateway.test.ts @@ -7,11 +7,11 @@ import { type IAgentScopeHandle, type ISessionScopeHandle, LifecycleScope } from import { TestInstantiationService } from '#/_base/di/test'; import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import type { ContextMessage } from '#/agent/contextMemory'; -import { IRestGateway } from '#/app/gateway'; +import { IRestGateway } from '#/app/gateway/gateway'; import { RestGateway } from '#/app/gateway/gatewayService'; -import { ILogService } from '#/_base/log'; +import { ILogService } from '#/_base/log/log'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; import { IAgentTurnService } from '#/agent/turn'; import { createHooks } from '#/hooks'; import { stubLog } from '../log/stubs'; diff --git a/packages/agent-core-v2/test/goal/goal-wire.test.ts b/packages/agent-core-v2/test/goal/goal-wire.test.ts index 1b4fba7ad..f27e0bc23 100644 --- a/packages/agent-core-v2/test/goal/goal-wire.test.ts +++ b/packages/agent-core-v2/test/goal/goal-wire.test.ts @@ -3,7 +3,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { EventBusService, IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { AgentGoalService, IAgentGoalService } from '#/agent/goal'; @@ -11,7 +12,7 @@ import { GoalModel } from '#/agent/goal/goalOps'; import { IAgentLoopService } from '#/agent/loop'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; import { IAgentTurnService } from '#/agent/turn'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; diff --git a/packages/agent-core-v2/test/goal/goal.test.ts b/packages/agent-core-v2/test/goal/goal.test.ts index 466215123..cd20ae3fc 100644 --- a/packages/agent-core-v2/test/goal/goal.test.ts +++ b/packages/agent-core-v2/test/goal/goal.test.ts @@ -6,7 +6,7 @@ import { IAgentGoalService, type AgentGoalService } from '#/agent/goal'; import { IAgentLoopService, type TurnAfterStepContext } from '#/agent/loop'; import { IAgentTurnService, type Turn, type TurnResult } from '#/agent/turn'; import type { PersistedWireRecord, WireRecord } from '#/agent/wireRecord'; -import type { TokenUsage } from '#/app/llmProtocol'; +import type { TokenUsage } from '#/app/llmProtocol/usage'; import { ErrorCodes } from '#/errors'; import { diff --git a/packages/agent-core-v2/test/goal/injection.test.ts b/packages/agent-core-v2/test/goal/injection.test.ts index 6f3519a55..858b211d9 100644 --- a/packages/agent-core-v2/test/goal/injection.test.ts +++ b/packages/agent-core-v2/test/goal/injection.test.ts @@ -1,5 +1,5 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; diff --git a/packages/agent-core-v2/test/harness/agent.ts b/packages/agent-core-v2/test/harness/agent.ts index 0d66ae2ac..1ae20500b 100644 --- a/packages/agent-core-v2/test/harness/agent.ts +++ b/packages/agent-core-v2/test/harness/agent.ts @@ -5,7 +5,7 @@ import { Readable, type Writable } from 'node:stream'; import { createControlledPromise } from '@antfu/utils'; import { expect, vi } from 'vitest'; -import { toDisposable } from '#/_base/di'; +import { toDisposable } from '#/_base/di/lifecycle'; import { Event } from '#/_base/event'; import type { PromisifyMethods } from '#/_base/utils/types'; import { escapeXmlAttr } from '#/_base/utils/xml-escape'; @@ -43,23 +43,18 @@ import type { WireRecordRestoreResult, } from '#/agent/wireRecord'; import { IOAuthService } from '#/app/auth/auth'; -import { IProtocolAdapterRegistry, type ProtocolAdapterConfig } from '#/app/protocol'; +import { IProtocolAdapterRegistry, type ProtocolAdapterConfig } from '#/app/protocol/protocol'; import type { SkillCatalog } from '#/app/skillCatalog/types'; -import { - isToolCall, - isToolCallPart, - type ContentPart, - type Message as KosongMessage, - type ModelCapability, - type StreamedMessagePart, - type ThinkingEffort, - type Tool as KosongTool, -} from '#/app/llmProtocol'; +import { type ModelCapability } from '#/app/llmProtocol/capability'; +import { isToolCall, isToolCallPart, type ContentPart, type Message as KosongMessage, type StreamedMessagePart } from '#/app/llmProtocol/message'; +import { type ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import { type Tool as KosongTool } from '#/app/llmProtocol/tool'; import type { generate as kosongGenerate } from '#/app/llmProtocol/generate'; import type { ChatProvider, GenerateOptions, StreamedMessage } from '#/app/llmProtocol/provider'; import type { ProviderConfig } from '#/app/llmProtocol/providers'; import { KimiChatProvider } from '#/app/llmProtocol/providers/kimi'; -import { ILogOptions, type ILogger, type LogContext, type LogLevel } from '#/_base/log'; +import type { ILogger, LogContext, LogLevel } from '#/_base/log/log'; +import { ILogOptions } from '#/_base/log/logConfig'; import type { EnabledPluginSessionStart } from '#/app/plugin/types'; import { AGENT_WIRE_PROTOCOL_VERSION, @@ -125,24 +120,27 @@ import { type ScopeSeed, type ServiceIdentifier, } from '#/index'; -import { IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; import { IAgentWireService, WireService, type PersistedRecord } from '#/wire'; -import { IModelResolver, IModelService, ModelResolverService, type Model } from '#/app/model'; -import { IPlatformService } from '#/app/platform'; -import { IProviderService } from '#/app/provider'; -import type { ApprovalResponse } from '#/session/approval'; +import { IModelService } from '#/app/model/model'; +import { type Model } from '#/app/model/modelInstance'; +import { IModelResolver } from '#/app/model/modelResolver'; +import { ModelResolverService } from '#/app/model/modelResolverService'; +import { IPlatformService } from '#/app/platform/platform'; +import { IProviderService } from '#/app/provider/provider'; +import type { ApprovalResponse } from '#/session/approval/approval'; import { ISessionInteractionService, type Interaction, type InteractionRequest, type InteractionPendingChangedEvent, type InteractionResolution, -} from '#/session/interaction'; -import type { IProcess } from '#/session/process'; +} from '#/session/interaction/interaction'; +import type { IProcess } from '#/session/process/processRunner'; import { ISessionQuestionService, type QuestionResult } from '#/session/question/question'; import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; -import { ISessionSwarmService } from '#/session/swarm'; -import type { PathAccessOperation } from '#/session/workspaceContext'; +import { ISessionSwarmService } from '#/session/swarm/sessionSwarm'; +import type { PathAccessOperation } from '#/session/workspaceContext/workspaceContext'; import { recordAgentEvents, type RecordedEventEntry } from '../snapshot/events'; import { createFakeHostFs, createFakeProcessRunner } from '../tools/fixtures/fake-exec'; diff --git a/packages/agent-core-v2/test/harness/scripted-generate.ts b/packages/agent-core-v2/test/harness/scripted-generate.ts index faee32e7c..12751ff43 100644 --- a/packages/agent-core-v2/test/harness/scripted-generate.ts +++ b/packages/agent-core-v2/test/harness/scripted-generate.ts @@ -1,10 +1,5 @@ -import { - isContentPart, - isToolCall, - type FinishReason, - type Message, - type StreamedMessagePart, -} from '#/app/llmProtocol'; +import { type FinishReason } from '#/app/llmProtocol/finishReason'; +import { isContentPart, isToolCall, type Message, type StreamedMessagePart } from '#/app/llmProtocol/message'; import type { generate as kosongGenerate } from '#/app/llmProtocol/generate'; import { estimateTokensForMessages } from '#/_base/utils/tokens'; diff --git a/packages/agent-core-v2/test/harness/snapshots.ts b/packages/agent-core-v2/test/harness/snapshots.ts index 190e049eb..f4db737d7 100644 --- a/packages/agent-core-v2/test/harness/snapshots.ts +++ b/packages/agent-core-v2/test/harness/snapshots.ts @@ -1,4 +1,5 @@ -import type { Message, Tool as LLMTool } from '#/app/llmProtocol'; +import type { Message } from '#/app/llmProtocol/message'; +import type { Tool as LLMTool } from '#/app/llmProtocol/tool'; import { expect } from 'vitest'; import { AGENT_WIRE_PROTOCOL_VERSION } from '#/agent/wireRecord/migration'; diff --git a/packages/agent-core-v2/test/llmRequester/kosong-llm.test.ts b/packages/agent-core-v2/test/llmRequester/kosong-llm.test.ts index 6ee30c72a..5baddf151 100644 --- a/packages/agent-core-v2/test/llmRequester/kosong-llm.test.ts +++ b/packages/agent-core-v2/test/llmRequester/kosong-llm.test.ts @@ -1,4 +1,6 @@ -import { APIConnectionError, emptyUsage, type StreamedMessagePart } from '#/app/llmProtocol'; +import { APIConnectionError } from '#/app/llmProtocol/errors'; +import { type StreamedMessagePart } from '#/app/llmProtocol/message'; +import { emptyUsage } from '#/app/llmProtocol/usage'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { @@ -7,7 +9,7 @@ import { type LLMRequestRetryContext, } from '#/agent/llmRequester'; import { IAgentProfileService } from '#/agent/profile'; -import type { ILogger as Logger, LogPayload } from '#/_base/log'; +import type { ILogger as Logger, LogPayload } from '#/_base/log/log'; import { configServices, createTestAgent, diff --git a/packages/agent-core-v2/test/log/sessionLogService.test.ts b/packages/agent-core-v2/test/log/sessionLogService.test.ts index 72449ce19..c5299d5d1 100644 --- a/packages/agent-core-v2/test/log/sessionLogService.test.ts +++ b/packages/agent-core-v2/test/log/sessionLogService.test.ts @@ -11,15 +11,15 @@ import { registerScopedService, } from '#/_base/di/scope'; import { createScopedTestHost } from '#/_base/di/test'; +import { ILogService } from '#/_base/log/log'; import { - ILogService, logSeed, resolveLoggingConfig, resolveSessionLogPath, -} from '#/_base/log'; +} from '#/_base/log/logConfig'; import { AppLogService } from '#/_base/log/logService'; import { SessionLogService } from '#/session/sessionLog/sessionLogService'; -import { makeSessionContext, sessionContextSeed } from '#/session/sessionContext'; +import { makeSessionContext, sessionContextSeed } from '#/session/sessionContext/sessionContext'; let homeDir: string; let sessionDir: string; diff --git a/packages/agent-core-v2/test/loop/basic.test.ts b/packages/agent-core-v2/test/loop/basic.test.ts index 227e16d6c..22df01d2e 100644 --- a/packages/agent-core-v2/test/loop/basic.test.ts +++ b/packages/agent-core-v2/test/loop/basic.test.ts @@ -1,4 +1,5 @@ -import { emptyUsage, type ToolCall } from '#/app/llmProtocol'; +import { type ToolCall } from '#/app/llmProtocol/message'; +import { emptyUsage } from '#/app/llmProtocol/usage'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { IAgentProfileService } from '#/index'; diff --git a/packages/agent-core-v2/test/mcp/mcp.test.ts b/packages/agent-core-v2/test/mcp/mcp.test.ts index 2cb43d7e1..bb952b3f6 100644 --- a/packages/agent-core-v2/test/mcp/mcp.test.ts +++ b/packages/agent-core-v2/test/mcp/mcp.test.ts @@ -1,5 +1,6 @@ import type { AgentEvent } from '@moonshot-ai/protocol'; -import type { ContentPart, Tool as KosongTool } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; +import type { Tool as KosongTool } from '#/app/llmProtocol/tool'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; diff --git a/packages/agent-core-v2/test/mcp/output.test.ts b/packages/agent-core-v2/test/mcp/output.test.ts index cc31517fb..e18c77739 100644 --- a/packages/agent-core-v2/test/mcp/output.test.ts +++ b/packages/agent-core-v2/test/mcp/output.test.ts @@ -1,5 +1,5 @@ import { ContentBlockSchema } from '@modelcontextprotocol/sdk/types.js'; -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { Jimp } from 'jimp'; import { mkdtemp, readFile, rm, unlink } from 'node:fs/promises'; import { tmpdir } from 'node:os'; diff --git a/packages/agent-core-v2/test/mcp/stubs.ts b/packages/agent-core-v2/test/mcp/stubs.ts index f340b1864..083dc899e 100644 --- a/packages/agent-core-v2/test/mcp/stubs.ts +++ b/packages/agent-core-v2/test/mcp/stubs.ts @@ -5,7 +5,7 @@ import type { AddressInfo } from 'node:net'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; -import type { Tool as KosongTool } from '#/app/llmProtocol'; +import type { Tool as KosongTool } from '#/app/llmProtocol/tool'; import { z } from 'zod'; import type { McpOAuthStore } from '#/agent/mcp/oauth'; diff --git a/packages/agent-core-v2/test/media/read-media.test.ts b/packages/agent-core-v2/test/media/read-media.test.ts index bf2df68ca..9b16d46e1 100644 --- a/packages/agent-core-v2/test/media/read-media.test.ts +++ b/packages/agent-core-v2/test/media/read-media.test.ts @@ -5,7 +5,8 @@ * be exercised without the missing composition root. */ -import type { ContentPart, ModelCapability } from '#/app/llmProtocol'; +import type { ModelCapability } from '#/app/llmProtocol/capability'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { Jimp } from 'jimp'; import { describe, expect, it, vi } from 'vitest'; diff --git a/packages/agent-core-v2/test/microCompaction/micro.test.ts b/packages/agent-core-v2/test/microCompaction/micro.test.ts index e2ede9873..848499878 100644 --- a/packages/agent-core-v2/test/microCompaction/micro.test.ts +++ b/packages/agent-core-v2/test/microCompaction/micro.test.ts @@ -1,9 +1,9 @@ -import type { ContentPart } from '#/app/llmProtocol'; +import type { ContentPart } from '#/app/llmProtocol/message'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { estimateTokensForMessages } from '#/_base/utils/tokens'; import { microCompactionFlag } from '#/agent/microCompaction/flag'; -import { IFlagService } from '#/app/flag'; +import { IFlagService } from '#/app/flag/flag'; import { MASTER_ENV } from '#/app/flag/flagService'; import { AGENT_WIRE_PROTOCOL_VERSION, diff --git a/packages/agent-core-v2/test/model/modelResolver.test.ts b/packages/agent-core-v2/test/model/modelResolver.test.ts index b7c4cdb99..39dcffc25 100644 --- a/packages/agent-core-v2/test/model/modelResolver.test.ts +++ b/packages/agent-core-v2/test/model/modelResolver.test.ts @@ -17,18 +17,16 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { DisposableStore } from '#/_base/di/lifecycle'; import { createServices, type TestInstantiationService } from '#/_base/di/test'; -import { IOAuthService } from '#/app/auth'; +import { IOAuthService } from '#/app/auth/auth'; import { IConfigService } from '#/app/config/config'; -import { APIStatusError } from '#/app/llmProtocol'; -import { type ModelConfig, IModelResolver, IModelService } from '#/app/model'; +import { APIStatusError } from '#/app/llmProtocol/errors'; +import { type ModelConfig, IModelService } from '#/app/model/model'; +import { IModelResolver } from '#/app/model/modelResolver'; import { ModelResolverService } from '#/app/model/modelResolverService'; -import { type PlatformConfig, IPlatformService } from '#/app/platform'; -import { type ProviderConfig, IProviderService } from '#/app/provider'; -import { - type ChatProvider, - IProtocolAdapterRegistry, - type ProtocolAdapterConfig, -} from '#/app/protocol'; +import { type PlatformConfig, IPlatformService } from '#/app/platform/platform'; +import { type ProviderConfig, IProviderService } from '#/app/provider/provider'; +import { type ChatProvider } from '#/app/llmProtocol/provider'; +import { IProtocolAdapterRegistry, type ProtocolAdapterConfig } from '#/app/protocol/protocol'; let generateImpl: ChatProvider['generate']; let uploadVideoImpl: NonNullable | undefined; diff --git a/packages/agent-core-v2/test/modelRuntime/modelResolver.test.ts b/packages/agent-core-v2/test/modelRuntime/modelResolver.test.ts index e2994e6b1..7187c3a8b 100644 --- a/packages/agent-core-v2/test/modelRuntime/modelResolver.test.ts +++ b/packages/agent-core-v2/test/modelRuntime/modelResolver.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from 'vitest'; -import { IOAuthService } from '#/app/auth'; -import { IConfigService } from '#/app/config'; -import { IModelResolver } from '#/app/model'; +import { IOAuthService } from '#/app/auth/auth'; +import { IConfigService } from '#/app/config/config'; +import { IModelResolver } from '#/app/model/modelResolver'; import { createAppScope } from '#/_base/di/scope'; import { ErrorCodes, KimiError } from '#/errors'; // Load every domain barrel so all App-scope services (provider / platform / diff --git a/packages/agent-core-v2/test/permission/permissionGate.test.ts b/packages/agent-core-v2/test/permission/permissionGate.test.ts index 9f6f120ea..c8ccb52b3 100644 --- a/packages/agent-core-v2/test/permission/permissionGate.test.ts +++ b/packages/agent-core-v2/test/permission/permissionGate.test.ts @@ -1,6 +1,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { SyncDescriptor } from '#/_base/di'; +import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { createServices } from '#/_base/di/test'; import type { TestInstantiationService } from '#/_base/di/test'; @@ -26,13 +26,13 @@ import { } from '#/agent/permissionRules'; import { IAgentPlanService } from '#/agent/plan'; import { IAgentProfileService, type ProfileData } from '#/agent/profile'; -import { ISessionContext, makeSessionContext } from '#/session/sessionContext'; +import { ISessionContext, makeSessionContext } from '#/session/sessionContext/sessionContext'; import { IAgentSwarmService } from '#/agent/swarm'; import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { IAgentTurnService } from '#/agent/turn'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; -import type { ToolCall } from '#/app/llmProtocol'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import { stubApprovalService } from '../approval/stubs'; diff --git a/packages/agent-core-v2/test/permissionPolicy/default-tool-approve.test.ts b/packages/agent-core-v2/test/permissionPolicy/default-tool-approve.test.ts index f43be0da7..e308e681f 100644 --- a/packages/agent-core-v2/test/permissionPolicy/default-tool-approve.test.ts +++ b/packages/agent-core-v2/test/permissionPolicy/default-tool-approve.test.ts @@ -1,4 +1,4 @@ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { describe, expect, it } from 'vitest'; import type { ResolvedToolExecutionHookContext } from '#/agent/tool'; diff --git a/packages/agent-core-v2/test/permissionPolicy/exit-plan-mode-review-ask-telemetry.test.ts b/packages/agent-core-v2/test/permissionPolicy/exit-plan-mode-review-ask-telemetry.test.ts index 794b414b9..1f489caba 100644 --- a/packages/agent-core-v2/test/permissionPolicy/exit-plan-mode-review-ask-telemetry.test.ts +++ b/packages/agent-core-v2/test/permissionPolicy/exit-plan-mode-review-ask-telemetry.test.ts @@ -1,4 +1,4 @@ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ApprovalResponse, ToolInputDisplay } from '@moonshot-ai/protocol'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -9,7 +9,7 @@ import { IAgentPermissionModeService } from '#/agent/permissionMode'; import type { PermissionMode } from '#/agent/permissionPolicy'; import { ExitPlanModeReviewAskPermissionPolicyService } from '#/agent/permissionPolicy/policies/exit-plan-mode-review-ask'; import { IAgentPlanService, type IAgentPlanService as AgentPlanService } from '#/agent/plan'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ToolAccesses } from '#/agent/tool'; import { stubPermissionModeService } from '../permissionMode/stubs'; diff --git a/packages/agent-core-v2/test/permissionPolicy/goal-start-review-ask.test.ts b/packages/agent-core-v2/test/permissionPolicy/goal-start-review-ask.test.ts index 18aa4f765..10e660cb3 100644 --- a/packages/agent-core-v2/test/permissionPolicy/goal-start-review-ask.test.ts +++ b/packages/agent-core-v2/test/permissionPolicy/goal-start-review-ask.test.ts @@ -1,4 +1,4 @@ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import { describe, expect, it } from 'vitest'; diff --git a/packages/agent-core-v2/test/permissionPolicy/permission-policy-service.test.ts b/packages/agent-core-v2/test/permissionPolicy/permission-policy-service.test.ts index 2e5176229..65832cfec 100644 --- a/packages/agent-core-v2/test/permissionPolicy/permission-policy-service.test.ts +++ b/packages/agent-core-v2/test/permissionPolicy/permission-policy-service.test.ts @@ -2,7 +2,7 @@ import { mkdir, mkdtemp, rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { ToolInputDisplay } from '@moonshot-ai/protocol'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -33,9 +33,9 @@ import { } from '#/agent/permissionRules'; import { IAgentPlanService, type PlanData } from '#/agent/plan'; import { IAgentSwarmService } from '#/agent/swarm'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ToolAccesses, type ToolAccesses as ToolAccessList } from '#/agent/tool'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { stubPermissionModeService } from '../permissionMode/stubs'; import { recordingTelemetry } from '../telemetry/stubs'; diff --git a/packages/agent-core-v2/test/persistence/miniDbQueryStore.test.ts b/packages/agent-core-v2/test/persistence/miniDbQueryStore.test.ts index 464039aff..2990bd54c 100644 --- a/packages/agent-core-v2/test/persistence/miniDbQueryStore.test.ts +++ b/packages/agent-core-v2/test/persistence/miniDbQueryStore.test.ts @@ -7,8 +7,8 @@ import { join } from 'node:path'; import { InstantiationType } from '#/_base/di/extensions'; import { LifecycleScope, _clearScopedRegistryForTests, registerScopedService } from '#/_base/di/scope'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; -import { ILogService } from '#/_base/log'; -import { IBootstrapService } from '#/app/bootstrap'; +import { ILogService } from '#/_base/log/log'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { MiniDbQueryStore } from '#/persistence/backends/minidb/miniDbQueryStore'; import { IQueryStore } from '#/persistence/interface/queryStore'; import { stubBootstrap } from '../bootstrap/stubs'; diff --git a/packages/agent-core-v2/test/plan/plan-tools-telemetry.test.ts b/packages/agent-core-v2/test/plan/plan-tools-telemetry.test.ts index 83cda6a75..034534079 100644 --- a/packages/agent-core-v2/test/plan/plan-tools-telemetry.test.ts +++ b/packages/agent-core-v2/test/plan/plan-tools-telemetry.test.ts @@ -1,4 +1,4 @@ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import type { IAgentPlanService, PlanData } from '#/agent/plan'; @@ -8,7 +8,7 @@ import { type ExitPlanModeInput, } from '#/agent/plan/tools/exit-plan-mode'; import type { ToolResult } from '#/agent/tool'; -import type { ITelemetryService } from '#/app/telemetry'; +import type { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { executeTool } from '../tools/fixtures/execute-tool'; diff --git a/packages/agent-core-v2/test/plan/plan-wire.test.ts b/packages/agent-core-v2/test/plan/plan-wire.test.ts index fbb900e99..2999163e2 100644 --- a/packages/agent-core-v2/test/plan/plan-wire.test.ts +++ b/packages/agent-core-v2/test/plan/plan-wire.test.ts @@ -3,7 +3,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { EventBusService, IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { PlanModel, planModeCancel, diff --git a/packages/agent-core-v2/test/plan/plan.test.ts b/packages/agent-core-v2/test/plan/plan.test.ts index f40c5540c..498d0b2ba 100644 --- a/packages/agent-core-v2/test/plan/plan.test.ts +++ b/packages/agent-core-v2/test/plan/plan.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { join } from 'pathe'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -11,7 +11,7 @@ import { IAgentPlanService, type PlanData } from '#/agent/plan'; import { IAgentPermissionRulesService } from '#/agent/permissionRules'; import { IAgentProfileService } from '#/agent/profile'; import type { IHostFileSystem } from '#/os/interface/hostFileSystem'; -import type { ISessionProcessRunner } from '#/session/process'; +import type { ISessionProcessRunner } from '#/session/process/processRunner'; import { createFakeHostFs, createFakeProcessRunner } from '../tools/fixtures/fake-exec'; import { createCommandRunner, diff --git a/packages/agent-core-v2/test/plugin/plugin-session-start.test.ts b/packages/agent-core-v2/test/plugin/plugin-session-start.test.ts index 1c48a11ee..fb86d438c 100644 --- a/packages/agent-core-v2/test/plugin/plugin-session-start.test.ts +++ b/packages/agent-core-v2/test/plugin/plugin-session-start.test.ts @@ -6,11 +6,11 @@ import { IPluginSessionStartInjectorService, PluginSessionStartInjectorService, } from '#/agent/contextInjector/pluginSessionStart'; -import { IPluginService } from '#/app/plugin'; +import { IPluginService } from '#/app/plugin/plugin'; import type { EnabledPluginSessionStart, ReloadSummary } from '#/app/plugin/types'; import { InMemorySkillCatalog } from '#/app/skillCatalog/registry'; import type { SkillDefinition } from '#/app/skillCatalog/types'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; import { agentService, appService, createTestAgent, skillServices, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/process/processRunnerService.test.ts b/packages/agent-core-v2/test/process/processRunnerService.test.ts index 78566a1de..4490f341c 100644 --- a/packages/agent-core-v2/test/process/processRunnerService.test.ts +++ b/packages/agent-core-v2/test/process/processRunnerService.test.ts @@ -14,8 +14,9 @@ import { import { createScopedTestHost, stubPair } from '#/_base/di/test'; import { IHostProcessService } from '#/os/interface/hostProcess'; import { HostProcessService } from '#/os/backends/node-local/hostProcessService'; -import { ISessionProcessRunner, SessionProcessRunner } from '#/session/process'; -import { ISessionContext, makeSessionContext } from '#/session/sessionContext'; +import { ISessionProcessRunner } from '#/session/process/processRunner'; +import { SessionProcessRunner } from '#/session/process/processRunnerService'; +import { ISessionContext, makeSessionContext } from '#/session/sessionContext/sessionContext'; async function collect(stream: Readable): Promise { const chunks: Buffer[] = []; diff --git a/packages/agent-core-v2/test/profile/binding.test.ts b/packages/agent-core-v2/test/profile/binding.test.ts index 7eacb3b63..76117881f 100644 --- a/packages/agent-core-v2/test/profile/binding.test.ts +++ b/packages/agent-core-v2/test/profile/binding.test.ts @@ -4,10 +4,7 @@ import { join } from 'pathe'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import { - DEFAULT_AGENT_PROFILE_NAME, - IAgentProfileCatalogService, -} from '#/app/agentProfileCatalog'; +import { DEFAULT_AGENT_PROFILE_NAME, IAgentProfileCatalogService } from '#/app/agentProfileCatalog/agentProfileCatalog'; import { IAgentProfileService } from '#/agent/profile'; import { createTestAgent, execEnvServices, type TestAgentContext } from '../harness'; diff --git a/packages/agent-core-v2/test/profile/config-state.test.ts b/packages/agent-core-v2/test/profile/config-state.test.ts index 83bc20514..225a0e1d1 100644 --- a/packages/agent-core-v2/test/profile/config-state.test.ts +++ b/packages/agent-core-v2/test/profile/config-state.test.ts @@ -1,4 +1,4 @@ -import { emptyUsage } from '#/app/llmProtocol'; +import { emptyUsage } from '#/app/llmProtocol/usage'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { IAgentLLMRequesterService } from '#/agent/llmRequester'; diff --git a/packages/agent-core-v2/test/profile/profile-wire.test.ts b/packages/agent-core-v2/test/profile/profile-wire.test.ts index 3783f61f1..34616cb42 100644 --- a/packages/agent-core-v2/test/profile/profile-wire.test.ts +++ b/packages/agent-core-v2/test/profile/profile-wire.test.ts @@ -5,21 +5,23 @@ import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; import { AgentProfileService, IAgentProfileService } from '#/agent/profile'; import { ProfileModel } from '#/agent/profile/profileOps'; -import { DEFAULT_AGENT_PROFILE_NAME, IAgentProfileCatalogService } from '#/app/agentProfileCatalog'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IConfigService } from '#/app/config'; -import type { GenerationKwargs, ThinkingEffort } from '#/app/llmProtocol'; -import { IModelResolver, type Model } from '#/app/model'; -import { ITelemetryService } from '#/app/telemetry'; +import { DEFAULT_AGENT_PROFILE_NAME, IAgentProfileCatalogService } from '#/app/agentProfileCatalog/agentProfileCatalog'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IConfigService } from '#/app/config/config'; +import type { GenerationKwargs } from '#/app/llmProtocol/kimiOptions'; +import type { ThinkingEffort } from '#/app/llmProtocol/thinkingEffort'; +import { type Model } from '#/app/model/modelInstance'; +import { IModelResolver } from '#/app/model/modelResolver'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; -import { ISessionContext } from '#/session/sessionContext'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import { IAgentWireService, WireService, type IWireService, type PersistedRecord } from '#/wire'; const SCOPE = 'wire'; diff --git a/packages/agent-core-v2/test/question/question.test.ts b/packages/agent-core-v2/test/question/question.test.ts index a8043a4a9..1c349c747 100644 --- a/packages/agent-core-v2/test/question/question.test.ts +++ b/packages/agent-core-v2/test/question/question.test.ts @@ -9,8 +9,10 @@ import { type Scope, } from '#/_base/di/scope'; import { createScopedTestHost, type ScopedTestHost } from '#/_base/di/test'; -import { ISessionInteractionService, SessionInteractionService } from '#/session/interaction'; -import { type QuestionRequest, ISessionQuestionService, SessionQuestionService } from '#/session/question'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; +import { SessionInteractionService } from '#/session/interaction/interactionService'; +import { type QuestionRequest, ISessionQuestionService } from '#/session/question/question'; +import { SessionQuestionService } from '#/session/question/questionService'; function makeRequest(id: string): QuestionRequest { return { diff --git a/packages/agent-core-v2/test/resume-debug.test.ts b/packages/agent-core-v2/test/resume-debug.test.ts index 4f5533f9f..78820d23f 100644 --- a/packages/agent-core-v2/test/resume-debug.test.ts +++ b/packages/agent-core-v2/test/resume-debug.test.ts @@ -19,7 +19,7 @@ import { describe, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { TestInstantiationService } from '#/_base/di/test'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { AgentWireRecordService, AGENT_WIRE_PROTOCOL_VERSION, diff --git a/packages/agent-core-v2/test/resume-roundtrip.test.ts b/packages/agent-core-v2/test/resume-roundtrip.test.ts index a1dcd656b..3afa3024b 100644 --- a/packages/agent-core-v2/test/resume-roundtrip.test.ts +++ b/packages/agent-core-v2/test/resume-roundtrip.test.ts @@ -27,7 +27,7 @@ import { describe, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { TestInstantiationService } from '#/_base/di/test'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { AgentWireRecordService, AGENT_WIRE_PROTOCOL_VERSION, diff --git a/packages/agent-core-v2/test/sessionActivity/sessionActivity.test.ts b/packages/agent-core-v2/test/sessionActivity/sessionActivity.test.ts index 0d34fe32f..c2bd1c46d 100644 --- a/packages/agent-core-v2/test/sessionActivity/sessionActivity.test.ts +++ b/packages/agent-core-v2/test/sessionActivity/sessionActivity.test.ts @@ -6,7 +6,7 @@ import { DisposableStore } from '#/_base/di/lifecycle'; import { type IAgentScopeHandle, LifecycleScope } from '#/_base/di/scope'; import { TestInstantiationService } from '#/_base/di/test'; import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; -import { ISessionInteractionService, type Interaction, type InteractionKind } from '#/session/interaction'; +import { ISessionInteractionService, type Interaction, type InteractionKind } from '#/session/interaction/interaction'; import { ISessionActivity } from '#/session/sessionActivity/sessionActivity'; import { SessionActivity } from '#/session/sessionActivity/sessionActivityService'; import { IAgentTurnService, type Turn } from '#/agent/turn'; diff --git a/packages/agent-core-v2/test/sessionExport/sessionExport.test.ts b/packages/agent-core-v2/test/sessionExport/sessionExport.test.ts index 1bdcc8aa3..64c076438 100644 --- a/packages/agent-core-v2/test/sessionExport/sessionExport.test.ts +++ b/packages/agent-core-v2/test/sessionExport/sessionExport.test.ts @@ -12,20 +12,20 @@ import { } from '#/_base/di/test'; import { LifecycleScope, type IAgentScopeHandle, type ISessionScopeHandle } from '#/_base/di/scope'; import type { ServiceIdentifier, ServicesAccessor } from '#/_base/di/instantiation'; -import { ILogService, type ILogService as LogService } from '#/_base/log'; +import { ILogService, type ILogService as LogService } from '#/_base/log/log'; import { IAgentWireRecordService } from '#/agent/wireRecord'; -import { IBootstrapService } from '#/app/bootstrap'; -import { ISessionExportService } from '#/app/sessionExport'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { ISessionExportService } from '#/app/sessionExport/sessionExport'; import { exportSessionDirectory, SessionExportService, } from '#/app/sessionExport/sessionExportService'; -import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex'; -import { ISessionLifecycleService } from '#/app/sessionLifecycle'; -import { IWorkspaceRegistry } from '#/app/workspaceRegistry'; +import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; +import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; +import { IWorkspaceRegistry } from '#/app/workspaceRegistry/workspaceRegistry'; import { KimiError } from '#/errors'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; -import { ISessionMetadata, type SessionMeta } from '#/session/sessionMetadata'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { ISessionMetadata, type SessionMeta } from '#/session/sessionMetadata/sessionMetadata'; import { stubBootstrap } from '../bootstrap/stubs'; import { stubLog } from '../log/stubs'; diff --git a/packages/agent-core-v2/test/sessionFs/fsProcess.test.ts b/packages/agent-core-v2/test/sessionFs/fsProcess.test.ts index 31368626e..7d86ceaaf 100644 --- a/packages/agent-core-v2/test/sessionFs/fsProcess.test.ts +++ b/packages/agent-core-v2/test/sessionFs/fsProcess.test.ts @@ -2,7 +2,7 @@ import { Readable, Writable } from 'node:stream'; import { describe, expect, it } from 'vitest'; -import { type IProcess, type ISessionProcessRunner } from '#/session/process'; +import { type IProcess, type ISessionProcessRunner } from '#/session/process/processRunner'; import { runCommand, type RunCommandOptions } from '#/session/sessionFs/fsProcess'; diff --git a/packages/agent-core-v2/test/sessionFs/fsService.test.ts b/packages/agent-core-v2/test/sessionFs/fsService.test.ts index d0eee2495..8ecebb3cd 100644 --- a/packages/agent-core-v2/test/sessionFs/fsService.test.ts +++ b/packages/agent-core-v2/test/sessionFs/fsService.test.ts @@ -10,14 +10,14 @@ import { registerScopedService, } from '#/_base/di/scope'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; -import { IGitService } from '#/app/git'; +import { IGitService } from '#/app/git/git'; import { ErrorCodes, KimiError } from '#/errors'; import { type HostDirEntry, IHostFileSystem } from '#/os/interface/hostFileSystem'; import { ISessionFsService } from '#/session/sessionFs/fs'; import { SessionFsService } from '#/session/sessionFs/fsService'; -import { ISessionProcessRunner, type IProcess } from '#/session/process'; -import { ITelemetryService } from '#/app/telemetry'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionProcessRunner, type IProcess } from '#/session/process/processRunner'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; const WORK_DIR = '/repo'; diff --git a/packages/agent-core-v2/test/sessionFs/gitContext.test.ts b/packages/agent-core-v2/test/sessionFs/gitContext.test.ts index 3c70b80ab..64b3b40bc 100644 --- a/packages/agent-core-v2/test/sessionFs/gitContext.test.ts +++ b/packages/agent-core-v2/test/sessionFs/gitContext.test.ts @@ -7,8 +7,8 @@ import { parseProjectName, sanitizeRemoteUrl, } from '#/session/sessionFs/gitContext'; -import type { ILogger } from '#/_base/log'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import type { ILogger } from '#/_base/log/log'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; function processWith(stdout: string, exitCode: number, stderr = ''): IProcess { const stdoutStream = Readable.from([Buffer.from(stdout)]); diff --git a/packages/agent-core-v2/test/sessionIndex/sessionIndex.test.ts b/packages/agent-core-v2/test/sessionIndex/sessionIndex.test.ts index 0f97ec37e..97e0c4ede 100644 --- a/packages/agent-core-v2/test/sessionIndex/sessionIndex.test.ts +++ b/packages/agent-core-v2/test/sessionIndex/sessionIndex.test.ts @@ -5,12 +5,12 @@ import os from 'node:os'; import { join } from 'node:path'; import { InstantiationType } from '#/_base/di/extensions'; -import { ILogService } from '#/_base/log'; +import { ILogService } from '#/_base/log/log'; import { LifecycleScope, _clearScopedRegistryForTests, registerScopedService } from '#/_base/di/scope'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; import { encodeWorkDirKey } from '#/_base/utils/workdir-slug'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IFlagService } from '#/app/flag'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IFlagService } from '#/app/flag/flag'; import { ISessionIndex, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; import { FileSessionIndex } from '#/app/sessionIndex/sessionIndexService'; import { MiniDbQueryStore } from '#/persistence/backends/minidb/miniDbQueryStore'; diff --git a/packages/agent-core-v2/test/sessionLifecycle/sessionLifecycle.test.ts b/packages/agent-core-v2/test/sessionLifecycle/sessionLifecycle.test.ts index 481e4e0b7..ac30a7971 100644 --- a/packages/agent-core-v2/test/sessionLifecycle/sessionLifecycle.test.ts +++ b/packages/agent-core-v2/test/sessionLifecycle/sessionLifecycle.test.ts @@ -8,18 +8,18 @@ import { registerScopedService, } from '#/_base/di/scope'; import { type ScopedTestHost, createScopedTestHost, stubPair } from '#/_base/di/test'; -import { IBootstrapService } from '#/app/bootstrap'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { IEventService } from '#/app/event'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; +import { IEventService } from '#/app/event/event'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; import { ISessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycle'; import { SessionLifecycleService } from '#/app/sessionLifecycle/sessionLifecycleService'; -import { ISessionMetadata } from '#/session/sessionMetadata'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; -import { ISessionIndex } from '#/app/sessionIndex'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; +import { ISessionIndex } from '#/app/sessionIndex/sessionIndex'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; -import { IWorkspaceRegistry, type Workspace } from '#/app/workspaceRegistry'; +import { IWorkspaceRegistry, type Workspace } from '#/app/workspaceRegistry/workspaceRegistry'; function bootstrapStub(): IBootstrapService { return { diff --git a/packages/agent-core-v2/test/sessionMetadata/sessionMetadata.test.ts b/packages/agent-core-v2/test/sessionMetadata/sessionMetadata.test.ts index 35362876a..f27e709f0 100644 --- a/packages/agent-core-v2/test/sessionMetadata/sessionMetadata.test.ts +++ b/packages/agent-core-v2/test/sessionMetadata/sessionMetadata.test.ts @@ -3,10 +3,10 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { IFlagService } from '#/app/flag'; -import { ILogService } from '#/_base/log'; -import { ISessionContext, makeSessionContext } from '#/session/sessionContext'; -import { ISessionMetadata } from '#/session/sessionMetadata'; +import { IFlagService } from '#/app/flag/flag'; +import { ILogService } from '#/_base/log/log'; +import { ISessionContext, makeSessionContext } from '#/session/sessionContext/sessionContext'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import { SessionMetadata } from '#/session/sessionMetadata/sessionMetadataService'; import { JsonAtomicDocumentStore } from '#/persistence/backends/node-fs/atomicDocumentStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; diff --git a/packages/agent-core-v2/test/shellTools/bash.test.ts b/packages/agent-core-v2/test/shellTools/bash.test.ts index 0fb974710..605558936 100644 --- a/packages/agent-core-v2/test/shellTools/bash.test.ts +++ b/packages/agent-core-v2/test/shellTools/bash.test.ts @@ -34,8 +34,8 @@ import type { AgentTaskSettlement } from '#/agent/task/types'; import { ProcessTask } from '#/os/backends/node-local/tools/process-task'; import type { IHostEnvironment } from '#/os/interface/hostEnvironment'; import type { IAgentProfileService } from '#/agent/profile'; -import { type ISessionContext, makeSessionContext } from '#/session/sessionContext'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import { type ISessionContext, makeSessionContext } from '#/session/sessionContext/sessionContext'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; import { type BashInput, BashInputSchema, BashTool } from '#/os/backends/node-local/tools/bash'; import type { ExecutableToolContext, ExecutableToolResult, ToolExecution } from '#/agent/tool'; diff --git a/packages/agent-core-v2/test/skill/plugin-session-start.test.ts b/packages/agent-core-v2/test/skill/plugin-session-start.test.ts index ab6da8227..08f966ab2 100644 --- a/packages/agent-core-v2/test/skill/plugin-session-start.test.ts +++ b/packages/agent-core-v2/test/skill/plugin-session-start.test.ts @@ -2,9 +2,9 @@ import { describe, expect, it } from 'vitest'; import { IAgentContextInjectorService } from '#/agent/contextInjector'; import type { ContextMessage } from '#/agent/contextMemory'; -import type { LogContext, LogPayload } from '#/_base/log'; +import type { LogContext, LogPayload } from '#/_base/log/log'; import type { EnabledPluginSessionStart } from '#/app/plugin/types'; -import { InMemorySkillCatalog } from '#/app/skillCatalog'; +import { InMemorySkillCatalog } from '#/app/skillCatalog/registry'; import type { SkillDefinition } from '#/app/skillCatalog/types'; import { testAgent } from '../harness'; import { stubSkill } from './stubs'; diff --git a/packages/agent-core-v2/test/skill/registry.test.ts b/packages/agent-core-v2/test/skill/registry.test.ts index a431d23d4..f7cde21a1 100644 --- a/packages/agent-core-v2/test/skill/registry.test.ts +++ b/packages/agent-core-v2/test/skill/registry.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { InMemorySkillCatalog } from '#/app/skillCatalog'; +import { InMemorySkillCatalog } from '#/app/skillCatalog/registry'; import type { SkillDefinition, SkillSource } from '#/app/skillCatalog/types'; import { stubSkill } from './stubs'; diff --git a/packages/agent-core-v2/test/skill/skill-tool-manager.test.ts b/packages/agent-core-v2/test/skill/skill-tool-manager.test.ts index 7b81577ee..b0a5a468a 100644 --- a/packages/agent-core-v2/test/skill/skill-tool-manager.test.ts +++ b/packages/agent-core-v2/test/skill/skill-tool-manager.test.ts @@ -2,13 +2,14 @@ import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'pathe'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentEventSinkService } from '#/agent/eventSink'; import { IAgentProfileService } from '#/agent/profile'; -import { InMemorySkillCatalog, type SkillCatalog, type SkillDefinition } from '#/app/skillCatalog'; +import { InMemorySkillCatalog } from '#/app/skillCatalog/registry'; +import { type SkillCatalog, type SkillDefinition } from '#/app/skillCatalog/types'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { InMemoryWireRecordPersistence, diff --git a/packages/agent-core-v2/test/skill/skill.test.ts b/packages/agent-core-v2/test/skill/skill.test.ts index 816f710c3..7213d07b8 100644 --- a/packages/agent-core-v2/test/skill/skill.test.ts +++ b/packages/agent-core-v2/test/skill/skill.test.ts @@ -6,16 +6,16 @@ import { createServices, type TestInstantiationService } from '#/_base/di/test'; import type { ContextMessage } from '#/agent/contextMemory'; import { IAgentPromptService } from '#/agent/prompt'; import { IAgentSkillService } from '#/agent/skill'; -import { InMemorySkillCatalog } from '#/app/skillCatalog'; -import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog'; -import { ISessionContext } from '#/session/sessionContext'; +import { InMemorySkillCatalog } from '#/app/skillCatalog/registry'; +import { ISessionSkillCatalog } from '#/session/sessionSkillCatalog/skillCatalog'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { AgentSkillService } from '#/agent/skill/skillService'; import { MAX_SKILL_QUERY_DEPTH, NestedSkillTooDeepError, SkillTool, } from '#/agent/skill/tools/skill'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import type { Turn } from '#/agent/turn'; import { IAgentWireService, WireService } from '#/wire'; diff --git a/packages/agent-core-v2/test/skill/skillCatalog.test.ts b/packages/agent-core-v2/test/skill/skillCatalog.test.ts index b8d2b7926..7df173c31 100644 --- a/packages/agent-core-v2/test/skill/skillCatalog.test.ts +++ b/packages/agent-core-v2/test/skill/skillCatalog.test.ts @@ -2,9 +2,9 @@ import { describe, expect, it } from 'vitest'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; import { LifecycleScope } from '#/_base/di/scope'; -import { IBootstrapService } from '#/app/bootstrap'; -import { IPluginService } from '#/app/plugin'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { IBootstrapService } from '#/app/bootstrap/bootstrap'; +import { IPluginService } from '#/app/plugin/plugin'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; import '#/app/skillCatalog'; import '#/session/sessionSkillCatalog'; import '#/agent/skill';; diff --git a/packages/agent-core-v2/test/store/store-event.test.ts b/packages/agent-core-v2/test/store/store-event.test.ts index 9ca9ef6f9..52122f44a 100644 --- a/packages/agent-core-v2/test/store/store-event.test.ts +++ b/packages/agent-core-v2/test/store/store-event.test.ts @@ -3,7 +3,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { type DomainEvent, EventBusService, IEventBus } from '#/app/event'; +import { type DomainEvent, IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; diff --git a/packages/agent-core-v2/test/swarm/swarm.test.ts b/packages/agent-core-v2/test/swarm/swarm.test.ts index 125a96e88..1c06ec94f 100644 --- a/packages/agent-core-v2/test/swarm/swarm.test.ts +++ b/packages/agent-core-v2/test/swarm/swarm.test.ts @@ -6,12 +6,8 @@ import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; const DEFAULT_SUBAGENT_TIMEOUT_MS = 30 * 60 * 1000; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; -import { ISessionSwarmService } from '#/session/swarm'; -import type { - SessionSwarmRunResult, - SessionSwarmTask, -} from '#/session/swarm'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { ISessionSwarmService, type SessionSwarmRunResult, type SessionSwarmTask } from '#/session/swarm/sessionSwarm'; import { IAgentScopeContext } from '#/agent/scopeContext'; import { IAgentSystemReminderService } from '#/agent/systemReminder'; import { AgentSystemReminderService } from '#/agent/systemReminder/systemReminderService'; @@ -28,7 +24,8 @@ import { InMemoryStorageService } from '#/persistence/backends/memory/inMemorySt import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; import { IAgentWireService, WireService, type PersistedRecord } from '#/wire'; -import { EventBusService, IEventBus, type DomainEvent } from '#/app/event'; +import { type DomainEvent, IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { stubContextMemory, stubWireRecord } from '../contextMemory/stubs'; import { executeTool } from '../tools/fixtures/execute-tool'; diff --git a/packages/agent-core-v2/test/task/foreground-persistence.test.ts b/packages/agent-core-v2/test/task/foreground-persistence.test.ts index 26fbded5e..353882f48 100644 --- a/packages/agent-core-v2/test/task/foreground-persistence.test.ts +++ b/packages/agent-core-v2/test/task/foreground-persistence.test.ts @@ -11,7 +11,7 @@ import { Readable } from 'node:stream'; import type { Writable } from 'node:stream'; import { join } from 'pathe'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { IAgentTaskService } from '#/agent/task'; diff --git a/packages/agent-core-v2/test/task/ids.test.ts b/packages/agent-core-v2/test/task/ids.test.ts index e9ea2ccff..98c540f5c 100644 --- a/packages/agent-core-v2/test/task/ids.test.ts +++ b/packages/agent-core-v2/test/task/ids.test.ts @@ -1,7 +1,7 @@ import { Readable } from 'node:stream'; import type { Writable } from 'node:stream'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { diff --git a/packages/agent-core-v2/test/task/manager.test.ts b/packages/agent-core-v2/test/task/manager.test.ts index 9c42cb5f8..96e45f90f 100644 --- a/packages/agent-core-v2/test/task/manager.test.ts +++ b/packages/agent-core-v2/test/task/manager.test.ts @@ -8,7 +8,7 @@ import { PassThrough, Readable } from 'node:stream'; import type { Writable } from 'node:stream'; import { join } from 'pathe'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import { afterEach, describe, expect, it, vi } from 'vitest'; import { diff --git a/packages/agent-core-v2/test/task/output-access.test.ts b/packages/agent-core-v2/test/task/output-access.test.ts index b36260c4e..09523925f 100644 --- a/packages/agent-core-v2/test/task/output-access.test.ts +++ b/packages/agent-core-v2/test/task/output-access.test.ts @@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'; import { Readable } from 'node:stream'; import type { Writable } from 'node:stream'; import { join } from 'pathe'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { IAgentTaskService } from '#/agent/task'; import { ProcessTask } from '#/os/backends/node-local/tools/process-task'; diff --git a/packages/agent-core-v2/test/task/rpc-events.test.ts b/packages/agent-core-v2/test/task/rpc-events.test.ts index bba92e4c3..a1d009b2a 100644 --- a/packages/agent-core-v2/test/task/rpc-events.test.ts +++ b/packages/agent-core-v2/test/task/rpc-events.test.ts @@ -8,7 +8,7 @@ import { Readable } from 'node:stream'; import type { Writable } from 'node:stream'; import { join } from 'pathe'; -import type { IProcess } from '#/session/process'; +import type { IProcess } from '#/session/process/processRunner'; import { afterEach, describe, expect, it, vi } from 'vitest'; import { @@ -24,7 +24,7 @@ import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentEventSinkService } from '#/agent/eventSink'; import type { HookEngine } from '#/agent/externalHooks/engine'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionMetadata } from '#/session/sessionMetadata'; +import { ISessionMetadata } from '#/session/sessionMetadata/sessionMetadata'; import { configServices, createTestAgent, diff --git a/packages/agent-core-v2/test/task/service.test.ts b/packages/agent-core-v2/test/task/service.test.ts index 952ec09b4..3be8211d9 100644 --- a/packages/agent-core-v2/test/task/service.test.ts +++ b/packages/agent-core-v2/test/task/service.test.ts @@ -6,13 +6,13 @@ import { TestInstantiationService } from '#/_base/di/test'; import { IAgentTaskService, type AgentTask } from '#/agent/task'; import { renderNotificationXml } from '#/agent/task/notificationXml'; import { AgentTaskService } from '#/agent/task/taskService'; -import { IConfigRegistry, IConfigService } from '#/app/config'; +import { IConfigRegistry, IConfigService } from '#/app/config/config'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentPromptService } from '#/agent/prompt'; -import { ISessionContext } from '#/session/sessionContext'; +import { ISessionContext } from '#/session/sessionContext/sessionContext'; import { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; import { IAgentWireRecordService } from '#/agent/wireRecord'; import { IAgentWireService, type IWireService } from '#/wire'; diff --git a/packages/agent-core-v2/test/task/task-wire.test.ts b/packages/agent-core-v2/test/task/task-wire.test.ts index b0f00cbcc..0bd38352a 100644 --- a/packages/agent-core-v2/test/task/task-wire.test.ts +++ b/packages/agent-core-v2/test/task/task-wire.test.ts @@ -3,7 +3,8 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { SyncDescriptor } from '#/_base/di/descriptors'; import { DisposableStore } from '#/_base/di/lifecycle'; import { TestInstantiationService } from '#/_base/di/test'; -import { EventBusService, IEventBus } from '#/app/event'; +import { IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; import { TaskModel, taskStarted, taskTerminated, type AgentTaskInfo } from '#/agent/task'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; diff --git a/packages/agent-core-v2/test/telemetry/agent-telemetry-context.test.ts b/packages/agent-core-v2/test/telemetry/agent-telemetry-context.test.ts index 9ed5f77ee..8a4ad4c4e 100644 --- a/packages/agent-core-v2/test/telemetry/agent-telemetry-context.test.ts +++ b/packages/agent-core-v2/test/telemetry/agent-telemetry-context.test.ts @@ -4,7 +4,7 @@ import { describe, expect, it } from 'vitest'; -import { AgentTelemetryContextService } from '#/app/telemetry'; +import { AgentTelemetryContextService } from '#/app/telemetry/agentTelemetryContextService'; import { recordingTelemetry, type TelemetryRecord } from './stubs'; describe('AgentTelemetryContextService', () => { diff --git a/packages/agent-core-v2/test/telemetry/telemetryService.test.ts b/packages/agent-core-v2/test/telemetry/telemetryService.test.ts index 7fd31b32c..df4d86e36 100644 --- a/packages/agent-core-v2/test/telemetry/telemetryService.test.ts +++ b/packages/agent-core-v2/test/telemetry/telemetryService.test.ts @@ -7,12 +7,8 @@ import { resetUnexpectedErrorHandler, setUnexpectedErrorHandler, } from '#/_base/errors/unexpectedError'; -import { - type ITelemetryAppender, - type TelemetryProperties, - ITelemetryService, - TelemetryService, -} from '#/app/telemetry'; +import { type ITelemetryAppender, type TelemetryProperties, ITelemetryService } from '#/app/telemetry/telemetry'; +import { TelemetryService } from '#/app/telemetry/telemetryService'; class CapturingAppender implements ITelemetryAppender { readonly events: { event: string; properties?: TelemetryProperties }[] = []; diff --git a/packages/agent-core-v2/test/terminal/terminalService.test.ts b/packages/agent-core-v2/test/terminal/terminalService.test.ts index 51bab93c2..e288cbd00 100644 --- a/packages/agent-core-v2/test/terminal/terminalService.test.ts +++ b/packages/agent-core-v2/test/terminal/terminalService.test.ts @@ -6,7 +6,7 @@ import { DisposableStore, toDisposable } from '#/_base/di/lifecycle'; import { createServices, type TestInstantiationService } from '#/_base/di/test'; import { Emitter } from '#/_base/event'; import { ErrorCodes } from '#/errors'; -import { ISessionContext, makeSessionContext } from '#/session/sessionContext'; +import { ISessionContext, makeSessionContext } from '#/session/sessionContext/sessionContext'; import { type TerminalAttachSink, type TerminalFrame, @@ -19,7 +19,7 @@ import { ISessionTerminalService, SessionTerminalService, } from '#/session/terminal/terminalService'; -import { ISessionWorkspaceContext } from '#/session/workspaceContext'; +import { ISessionWorkspaceContext } from '#/session/workspaceContext/workspaceContext'; vi.mock('node-pty', () => ({ spawn: vi.fn(), diff --git a/packages/agent-core-v2/test/todo/session-todo.test.ts b/packages/agent-core-v2/test/todo/session-todo.test.ts index a680f2d6d..d52374dc1 100644 --- a/packages/agent-core-v2/test/todo/session-todo.test.ts +++ b/packages/agent-core-v2/test/todo/session-todo.test.ts @@ -9,13 +9,11 @@ import { IAgentContextInjectorService } from '#/agent/contextInjector'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; -import { IAgentLifecycleService } from '#/session/agentLifecycle'; -import { - ISessionTodoService, - SessionTodoService, - TODO_LIST_REMINDER_VARIANT, - type TodoItem, -} from '#/session/todo'; +import { IAgentLifecycleService } from '#/session/agentLifecycle/agentLifecycle'; +import { ISessionTodoService } from '#/session/todo/sessionTodo'; +import { SessionTodoService } from '#/session/todo/sessionTodoService'; +import { type TodoItem } from '#/session/todo/todoItem'; +import { TODO_LIST_REMINDER_VARIANT } from '#/session/todo/todoListReminder'; import { IAgentWireService, type IWireService } from '#/wire'; interface RecordedTodoSet { diff --git a/packages/agent-core-v2/test/todo/todo-list-reminder.test.ts b/packages/agent-core-v2/test/todo/todo-list-reminder.test.ts index 7360e73a0..48e2481b6 100644 --- a/packages/agent-core-v2/test/todo/todo-list-reminder.test.ts +++ b/packages/agent-core-v2/test/todo/todo-list-reminder.test.ts @@ -1,7 +1,8 @@ import { describe, expect, it } from 'vitest'; import type { ContextMessage } from '#/agent/contextMemory'; -import { todoListStaleReminder, type TodoItem } from '#/session/todo'; +import { type TodoItem } from '#/session/todo/todoItem'; +import { todoListStaleReminder } from '#/session/todo/todoListReminder'; function assistantMessage(): ContextMessage { return { diff --git a/packages/agent-core-v2/test/todo/todo-list.test.ts b/packages/agent-core-v2/test/todo/todo-list.test.ts index 0be8bf692..9ba3ea4dd 100644 --- a/packages/agent-core-v2/test/todo/todo-list.test.ts +++ b/packages/agent-core-v2/test/todo/todo-list.test.ts @@ -1,12 +1,8 @@ import { describe, expect, it } from 'vitest'; -import { - TODO_LIST_TOOL_NAME, - TodoListInputSchema, - TodoListTool, - type ISessionTodoService, - type TodoItem, -} from '#/session/todo'; +import { type ISessionTodoService } from '#/session/todo/sessionTodo'; +import { TODO_LIST_TOOL_NAME, type TodoItem } from '#/session/todo/todoItem'; +import { TodoListInputSchema, TodoListTool } from '#/session/todo/tools/todo-list'; import { executeTool } from '../tools/fixtures/execute-tool'; const signal = new AbortController().signal; diff --git a/packages/agent-core-v2/test/tool/tool.test.ts b/packages/agent-core-v2/test/tool/tool.test.ts index 8c4508e29..12cca746b 100644 --- a/packages/agent-core-v2/test/tool/tool.test.ts +++ b/packages/agent-core-v2/test/tool/tool.test.ts @@ -1,13 +1,13 @@ import { Readable, type Writable } from 'node:stream'; -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { IAgentContextMemoryService } from '#/agent/contextMemory'; import { HookEngine } from '#/agent/externalHooks/engine'; import { IAgentProfileService } from '#/agent/profile'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; import { createFakeProcessRunner } from '../tools/fixtures/fake-exec'; import { createCommandRunner, diff --git a/packages/agent-core-v2/test/toolDedup/tool-dedup.test.ts b/packages/agent-core-v2/test/toolDedup/tool-dedup.test.ts index 1ed87c4fc..02dc3bb18 100644 --- a/packages/agent-core-v2/test/toolDedup/tool-dedup.test.ts +++ b/packages/agent-core-v2/test/toolDedup/tool-dedup.test.ts @@ -2,8 +2,9 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { DisposableStore } from '#/_base/di/lifecycle'; import { createServices, type TestInstantiationService } from '#/_base/di/test'; -import { emptyUsage, type ToolCall } from '#/app/llmProtocol'; -import { ITelemetryService } from '#/app/telemetry'; +import { type ToolCall } from '#/app/llmProtocol/message'; +import { emptyUsage } from '#/app/llmProtocol/usage'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { IAgentLoopService } from '#/agent/loop'; import type { ExecutableTool, diff --git a/packages/agent-core-v2/test/toolExecutor/tool-executor.test.ts b/packages/agent-core-v2/test/toolExecutor/tool-executor.test.ts index 52a99e05b..fa27b626e 100644 --- a/packages/agent-core-v2/test/toolExecutor/tool-executor.test.ts +++ b/packages/agent-core-v2/test/toolExecutor/tool-executor.test.ts @@ -1,4 +1,4 @@ -import type { ToolCall } from '#/app/llmProtocol'; +import type { ToolCall } from '#/app/llmProtocol/message'; import type { AgentEvent, ToolInputDisplay } from '@moonshot-ai/protocol'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; @@ -11,7 +11,7 @@ import { IAgentToolRegistryService, AgentToolRegistryService } from '#/agent/too import { IAgentWireRecordService } from '#/agent/wireRecord'; import { IAgentWireService, WireService } from '#/wire'; import { IEventBus } from '#/app/event/eventBus'; -import { ITelemetryService } from '#/app/telemetry'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { stubWireRecord } from '../contextMemory/stubs'; import { registerLogServices } from '../log/stubs'; import { recordingTelemetry, type TelemetryRecord } from '../telemetry/stubs'; diff --git a/packages/agent-core-v2/test/tools/fixtures/fake-exec.ts b/packages/agent-core-v2/test/tools/fixtures/fake-exec.ts index 646eb215b..c6c64b219 100644 --- a/packages/agent-core-v2/test/tools/fixtures/fake-exec.ts +++ b/packages/agent-core-v2/test/tools/fixtures/fake-exec.ts @@ -1,5 +1,5 @@ import type { IHostFileSystem } from '#/os/interface/hostFileSystem'; -import type { ISessionProcessRunner } from '#/session/process'; +import type { ISessionProcessRunner } from '#/session/process/processRunner'; function notImplemented(name: string): never { throw new Error(`${name} not implemented - override it in the test`); diff --git a/packages/agent-core-v2/test/turn/turn-ready.test.ts b/packages/agent-core-v2/test/turn/turn-ready.test.ts index c2669e905..fca46a0a7 100644 --- a/packages/agent-core-v2/test/turn/turn-ready.test.ts +++ b/packages/agent-core-v2/test/turn/turn-ready.test.ts @@ -10,10 +10,11 @@ import { IAgentLLMRequesterService } from '#/agent/llmRequester'; import { IAgentToolExecutorService } from '#/agent/toolExecutor'; import { AgentTurnService, IAgentTurnService } from '#/agent/turn'; import { TurnModel } from '#/agent/turn/turnOps'; -import { IConfigService } from '#/app/config'; -import { emptyUsage } from '#/app/llmProtocol'; -import { ILogService } from '#/_base/log'; -import { IAgentTelemetryContextService, ITelemetryService } from '#/app/telemetry'; +import { IConfigService } from '#/app/config/config'; +import { emptyUsage } from '#/app/llmProtocol/usage'; +import { ILogService } from '#/_base/log/log'; +import { IAgentTelemetryContextService } from '#/app/telemetry/agentTelemetryContext'; +import { ITelemetryService } from '#/app/telemetry/telemetry'; import { ErrorCodes, KimiError } from '#/errors'; import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; diff --git a/packages/agent-core-v2/test/turn/turn.test.ts b/packages/agent-core-v2/test/turn/turn.test.ts index e24cb0c8a..59f7b1153 100644 --- a/packages/agent-core-v2/test/turn/turn.test.ts +++ b/packages/agent-core-v2/test/turn/turn.test.ts @@ -4,15 +4,10 @@ import { Readable } from 'node:stream'; import { join } from 'pathe'; import { setTimeout as delay } from 'node:timers/promises'; -import { - APIConnectionError, - APIEmptyResponseError, - APIStatusError, - APITimeoutError, - type ModelCapability, - type ProviderRequestAuth, - type ToolCall, -} from '#/app/llmProtocol'; +import { type ModelCapability } from '#/app/llmProtocol/capability'; +import { APIConnectionError, APIEmptyResponseError, APIStatusError, APITimeoutError } from '#/app/llmProtocol/errors'; +import { type ToolCall } from '#/app/llmProtocol/message'; +import { type ProviderRequestAuth } from '#/app/llmProtocol/request'; import type { ChatProvider } from '#/app/llmProtocol/provider'; import { describe, expect, it, vi } from 'vitest'; @@ -20,11 +15,11 @@ import { abortError, abortable } from '#/_base/utils/abort'; import { IHostFileSystem } from '#/os/interface/hostFileSystem'; import type { ContextMessage } from '#/agent/contextMemory'; import { IHostEnvironment } from '#/os/interface/hostEnvironment'; -import { IOAuthService } from '#/app/auth'; -import { IAgentTelemetryContextService } from '#/app/telemetry'; +import { IOAuthService } from '#/app/auth/auth'; +import { IAgentTelemetryContextService } from '#/app/telemetry/agentTelemetryContext'; import { ErrorCodes, KimiError } from '#/errors'; import { HookEngine } from '#/agent/externalHooks/engine'; -import type { ILogger as Logger, LogPayload } from '#/_base/log'; +import type { ILogger as Logger, LogPayload } from '#/_base/log/log'; import { IAgentMcpService } from '#/agent/mcp'; import { McpConnectionManager } from '#/agent/mcp/connection-manager'; import { registerMediaTools, type VideoUploader } from '#/agent/media'; @@ -33,11 +28,11 @@ import { IAgentProfileService } from '#/agent/profile'; import { IAgentSwarmService } from '#/agent/swarm'; import { IAgentTurnService } from '#/agent/turn'; import { IAgentToolRegistryService } from '#/agent/toolRegistry'; -import type { IProcess, ISessionProcessRunner } from '#/session/process'; +import type { IProcess, ISessionProcessRunner } from '#/session/process/processRunner'; import type { SessionSwarmRunResult as QueuedSubagentRunResult, SessionSwarmTask as QueuedSubagentTask, -} from '#/session/swarm'; +} from '#/session/swarm/sessionSwarm'; import { recordingTelemetry, type TelemetryRecord } from '../telemetry/stubs'; import { createFakeHostFs, createFakeProcessRunner } from '../tools/fixtures/fake-exec'; import { diff --git a/packages/agent-core-v2/test/usage/usage.test.ts b/packages/agent-core-v2/test/usage/usage.test.ts index e84bb3d14..b7d91a1d5 100644 --- a/packages/agent-core-v2/test/usage/usage.test.ts +++ b/packages/agent-core-v2/test/usage/usage.test.ts @@ -11,7 +11,8 @@ import { InMemoryStorageService } from '#/persistence/backends/memory/inMemorySt import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; import { IAgentWireService, WireService, type PersistedRecord } from '#/wire'; -import { EventBusService, IEventBus, type DomainEvent } from '#/app/event'; +import { type DomainEvent, IEventBus } from '#/app/event/eventBus'; +import { EventBusService } from '#/app/event/eventBusService'; const SCOPE = 'wire'; const KEY = 'usage-test'; diff --git a/packages/agent-core-v2/test/userTool/userTool.test.ts b/packages/agent-core-v2/test/userTool/userTool.test.ts index a90230bcb..fe34695ff 100644 --- a/packages/agent-core-v2/test/userTool/userTool.test.ts +++ b/packages/agent-core-v2/test/userTool/userTool.test.ts @@ -15,7 +15,7 @@ import { AppendLogStore } from '#/persistence/backends/node-fs/appendLogStore'; import { InMemoryStorageService } from '#/persistence/backends/memory/inMemoryStorageService'; import { IAppendLogStore } from '#/persistence/interface/appendLogStore'; import { IFileSystemStorageService } from '#/persistence/interface/storage'; -import { ISessionInteractionService } from '#/session/interaction'; +import { ISessionInteractionService } from '#/session/interaction/interaction'; import { IAgentWireService, WireService, type IWireService, type PersistedRecord } from '#/wire'; const SCOPE = 'wire'; diff --git a/packages/agent-core-v2/test/workspaceRegistry/workspaceQueryService.test.ts b/packages/agent-core-v2/test/workspaceRegistry/workspaceQueryService.test.ts index 6968286ba..c88d06cfd 100644 --- a/packages/agent-core-v2/test/workspaceRegistry/workspaceQueryService.test.ts +++ b/packages/agent-core-v2/test/workspaceRegistry/workspaceQueryService.test.ts @@ -7,11 +7,7 @@ import { registerScopedService, } from '#/_base/di/scope'; import { createScopedTestHost, stubPair } from '#/_base/di/test'; -import { - ISessionIndex, - type SessionListQuery, - type SessionSummary, -} from '#/app/sessionIndex'; +import { ISessionIndex, type SessionListQuery, type SessionSummary } from '#/app/sessionIndex/sessionIndex'; import { IWorkspaceQueryService, RECENT_SESSIONS_LIMIT, diff --git a/packages/server-v2/test/sessions.test.ts b/packages/server-v2/test/sessions.test.ts index 821a2007b..22b11a1fd 100644 --- a/packages/server-v2/test/sessions.test.ts +++ b/packages/server-v2/test/sessions.test.ts @@ -654,4 +654,31 @@ describe('server-v2 /api/v1/sessions', () => { }); expect(body.code).toBe(40401); }); + + it('derives the session title from the first prompt submitted via /api/v1', async () => { + const cwd = home as string; + const created = await postJson('/api/v1/sessions', { metadata: { cwd } }); + const id = created.body.data.id; + expect(created.body.data.title).toBe(''); + + const events: { type: string; payload: unknown }[] = []; + const sub = (server as RunningServer).core.accessor + .get(IEventService) + .subscribe((event) => events.push(event)); + + const submitted = await postJson<{ prompt_id: string; status: string }>( + `/api/v1/sessions/${id}/prompts`, + { content: [{ type: 'text', text: 'hello web title' }] }, + ); + expect(submitted.body.code).toBe(0); + sub.dispose(); + + const got = await getJson(`/api/v1/sessions/${id}`); + expect(got.body.code).toBe(0); + expect(got.body.data.title).toBe('hello web title'); + + const meta = events.find((e) => e.type === 'session.meta.updated'); + expect(meta).toBeDefined(); + expect((meta?.payload as { title?: string } | undefined)?.title).toBe('hello web title'); + }); });