Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion apps/kimi-code/src/cli/v2/run-v2-print.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ import type {
ThinkingDelta,
ToolCallDelta,
} from '@moonshot-ai/agent-core-v2/agent/loop/turnEvents';
import type { TurnStepRetrying } from '@moonshot-ai/agent-core-v2/agent/stepRetry/stepRetryService';
import type { TurnStepRetrying } from '@moonshot-ai/agent-core-v2/agent/loop/turnEvents';
import type { HookResult } from '@moonshot-ai/agent-core-v2/features/externalHooks/agent/agentExternalHooksService';
import type {
ToolCallStarted,
Expand Down
8 changes: 4 additions & 4 deletions apps/kimi-inspect/src/components/ModelCatalogView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@

import { IAgentProfileService } from '@moonshot-ai/agent-core-v2/agent/profile/profile';
import { ISessionManager } from '@moonshot-ai/agent-core-v2/app/sessionManager/sessionManager';
import type { InspectionSource } from '@moonshot-ai/agent-core-v2/kosong/contract/inspection';
import type { TokenUsage } from '@moonshot-ai/agent-core-v2/kosong/contract/usage';
import type { TokenUsage } from '@moonshot-ai/agent-core-v2/human/llm/usage';
import type { InspectionSource } from '@moonshot-ai/agent-core-v2/llm-adapter/contract/inspection';
import {
IModelCatalog,
type ModelCatalogItem,
type ModelPingResult,
type ProviderCatalogItem,
} from '@moonshot-ai/agent-core-v2/kosong/model/catalog';
import { IModelService } from '@moonshot-ai/agent-core-v2/kosong/model/model';
} from '@moonshot-ai/agent-core-v2/llm-adapter/model/catalog';
import { IModelService } from '@moonshot-ai/agent-core-v2/llm-adapter/model/model';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useEffect, useRef, useState } from 'react';

Expand Down
2 changes: 1 addition & 1 deletion apps/kimi-inspect/src/components/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
IWorkspaceService,
type Workspace,
} from '@moonshot-ai/agent-core-v2/app/workspace/workspace';
import { IModelCatalog } from '@moonshot-ai/agent-core-v2/kosong/model/catalog';
import { IModelCatalog } from '@moonshot-ai/agent-core-v2/llm-adapter/model/catalog';
import { useInfiniteQuery, useQuery, useQueryClient } from '@tanstack/react-query';
import { useMemo, useState } from 'react';

Expand Down
2 changes: 1 addition & 1 deletion apps/kimi-inspect/src/panels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { IAgentToolRegistryService } from '@moonshot-ai/agent-core-v2/agent/tool
import { IAuthSummaryService } from '@moonshot-ai/agent-core-v2/app/auth/auth';
import { IConfigService } from '@moonshot-ai/agent-core-v2/app/config/config';
import { IFlagService } from '@moonshot-ai/agent-core-v2/app/flag/flag';
import { IProviderService } from '@moonshot-ai/agent-core-v2/kosong/provider/provider';
import { IProviderService } from '@moonshot-ai/agent-core-v2/llm-adapter/provider/provider';
import { ISessionApprovalService } from '@moonshot-ai/agent-core-v2/session/approval/approval';
import { ISessionQuestionService } from '@moonshot-ai/agent-core-v2/session/question/question';
import { ISessionInitService } from '@moonshot-ai/agent-core-v2/features/sessionInit/sessionInit';
Expand Down
3 changes: 2 additions & 1 deletion apps/kimi-inspect/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@
"vite",
"vite.config.ts",
"../../packages/agent-core-v2/src"
]
],
"exclude": ["../../packages/agent-core-v2/src/human"]
}
2 changes: 1 addition & 1 deletion apps/vis/server/src/lib/agent-record-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ import type {
} from '@moonshot-ai/agent-core-v2/agent/contextMemory/contextEvents';
import type { TurnCancel, TurnEnded, TurnPrompt, TurnSteer } from '@moonshot-ai/agent-core-v2/agent/loop/turnOps';
import type { TurnStepInterrupted } from '@moonshot-ai/agent-core-v2/agent/loop/turnEvents';
import type { TurnStepRetrying } from '@moonshot-ai/agent-core-v2/agent/stepRetry/stepRetryService';
import type { TurnStepRetrying } from '@moonshot-ai/agent-core-v2/agent/loop/turnEvents';
import type { UsageRecord } from '@moonshot-ai/agent-core-v2/agent/usage/usageOps';
import type {
ConfigUpdate,
Expand Down
2 changes: 1 addition & 1 deletion apps/vis/server/src/lib/context-projector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ const MICRO_MIN_CONTENT_TOKENS = 100;

/** Replicates the engine's per-char token weighting exactly, over the same
* `text` + `think` parts its gate counts. The engine
* (`packages/agent-core-v2/src/kosong/contract/tokens.ts`) sums per-part
* (`packages/agent-core-v2/src/llm-adapter/contract/tokens.ts`) sums per-part
* estimates, each
* `estimateTokens(s) = Math.ceil(asciiCount / 4) + nonAsciiCount` (ASCII ~4
* chars/token, every non-ASCII/CJK code point a full token); other part types
Expand Down
2 changes: 1 addition & 1 deletion apps/vis/server/test/lib/context-projector.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// apps/vis/server/test/lib/context-projector.test.ts
import { describe, it, expect, afterEach } from 'vitest';
import { estimateTokensForMessages } from '@moonshot-ai/agent-core-v2/kosong/contract/tokens';
import { estimateTokensForMessages } from '@moonshot-ai/agent-core-v2/llm-adapter/contract/tokens';
import { buildSessionFixture } from '../fixtures/build';
import { projectContext } from '../../src/lib/context-projector';
import { readAgentWire } from '../../src/lib/wire-reader';
Expand Down
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@
inherit (finalAttrs) pname version src pnpmWorkspaces;
inherit pnpm;
fetcherVersion = 3;
hash = "sha256-Fi5tYo53mOO6HV2melJ2OP2xtmOTP9mEnyOA6L70IY8=";
hash = "sha256-y7bnf/mLJ6oDYF6Pcf7Tws5kAzFD7Tkl8AQBYyksaRE=";
};

nativeBuildInputs = [
Expand Down
50 changes: 45 additions & 5 deletions packages/acp-server/test/_helpers/scriptedProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,19 @@
*/

import {
type FinishReason,
IProtocolAdapterRegistry,
type IProtocolAdapterRegistry as IProtocolAdapterRegistryType,
type Message,
type Model,
ProtocolAdapterRegistry,
type ProtocolAdapterConfig,
type StreamedMessagePart,
type TokenUsage,
type Tool,
} from '@moonshot-ai/agent-core-v2';
import type { FinishReason } from '@moonshot-ai/agent-core-v2/human/llm/finish-reason';
import { fromLlmMessage } from '@moonshot-ai/agent-core-v2/llm-adapter/contract/message';
import type { LlmRequester } from '@moonshot-ai/agent-core-v2/human/llm/requester/requester';

interface ScriptedResponse {
readonly parts: readonly StreamedMessagePart[];
Expand Down Expand Up @@ -137,11 +140,47 @@ export function createScriptedProvider(): ScriptedProvider {
// Single shared provider so every ModelImpl in the process (main agent,
// sub-agents) draws from the same FIFO queue.
const provider = new ScriptedChatProvider(queue, calls);
// Identity/capability resolution delegates to the real registry (the
const requester: LlmRequester = {
async generate(config, content, control) {
control.onEvent?.({ type: 'llm.sent' });
try {
const stream = await provider.generate(
config.systemPrompt ?? '',
[...(config.tools ?? [])],
content.messages.map(fromLlmMessage),
{ signal: control.signal },
);
for await (const part of stream) {
control.onEvent?.({ type: 'llm.delta', part });
control.signal.throwIfAborted();
}
control.onEvent?.({ type: 'llm.usage', usage: stream.usage ?? ZERO_USAGE });
control.onEvent?.({
type: 'llm.finish',
finish: {
finishReason: stream.finishReason,
rawFinishReason: stream.rawFinishReason,
},
});
if (stream.id !== null) {
control.onEvent?.({ type: 'llm.message-id', messageId: stream.id });
}
control.onEvent?.({ type: 'llm.done' });
} catch (error) {
control.onEvent?.({
type: 'llm.failed.remote',
error: {
kind: 'unknown',
message: error instanceof Error ? error.message : String(error),
},
});
}
},
};
// Identity/capability/model resolution delegates to the real registry (the
// interface grew `resolveAdapterIdentity` / `resolveProviderBaseId` /
// `resolveCapability` / `explainCapability` — delegating keeps the stub
// truthful and immune to further growth); only `createChatProvider` is
// scripted.
// `resolveCapability` / `explainCapability` / `resolve` — delegating keeps the
// stub truthful and immune to further growth); only the requester is scripted.
const real = new ProtocolAdapterRegistry();
const registry: IProtocolAdapterRegistryType = {
_serviceBrand: undefined,
Expand All @@ -150,6 +189,7 @@ export function createScriptedProvider(): ScriptedProvider {
resolveProviderBaseId: real.resolveProviderBaseId.bind(real),
resolveCapability: real.resolveCapability.bind(real),
explainCapability: real.explainCapability.bind(real),
resolve: (model: Model) => ({ ...real.resolve(model), requester }),
// `createChatProvider` is called by `ModelImpl` (a package-internal method
// not on the public interface); present at runtime, cast for the type gap.
createChatProvider: (_input: ProtocolAdapterConfig) => provider,
Expand Down
43 changes: 19 additions & 24 deletions packages/agent-core-v2/docs/state-manifest.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
// references become '(circular)', and class instances collapse to a '(ClassName)'
// marker — the wire shape of an entry is the JSON projection of the type here.
//
// Index (App: 0 keys · Workspace: 6 keys · Session: 9 keys · Agent: 83 keys)
// Index (App: 0 keys · Workspace: 6 keys · Session: 9 keys · Agent: 81 keys)
// App
// Workspace
// workspaceDirs.ephemeralDirs src/workspace/workspaceDirs/workspaceDirsService.ts
Expand Down Expand Up @@ -102,8 +102,6 @@
// runtime.binding src/agent/runtimeBinding/runtimeBindingService.ts
// runtimeBinding src/agent/runtimeBinding/runtimeBindingOps.ts
// shellCommand.tasks src/agent/shellCommand/shellCommandService.ts
// stepRetry.failedAttempts src/agent/stepRetry/stepRetryService.ts
// stepRetry.lastFailedDriverId src/agent/stepRetry/stepRetryService.ts
// swarm src/features/swarm/swarmOps.ts
// task src/agent/task/taskOps.ts
// task.activeTaskReminderPending src/agent/task/taskService.ts
Expand Down Expand Up @@ -1044,38 +1042,38 @@ export interface AgentStateSnapshot {
'agentsMdReminder.seeded': boolean;
// src/agent/contextMemory/contextOps.ts
// replayable · durable · undoable — folds: ContextAppendMessage, ContextAppendLoopEvent, ContextClear, ContextApplyCompaction
'contextMemory': (/* ContextMessage — packages/agent-core-v2/src/agent/contextMemory/types.ts */ /* Message — packages/agent-core-v2/src/kosong/contract/message.ts */ {
readonly role: /* Role — packages/agent-core-v2/src/kosong/contract/message.ts */ 'user' | 'assistant' | 'system' | 'tool';
'contextMemory': (/* ContextMessage — packages/agent-core-v2/src/agent/contextMemory/types.ts */ /* Message — packages/agent-core-v2/src/llm-adapter/contract/message.ts */ {
readonly role: /* Role — packages/agent-core-v2/src/human/llm/message.ts */ 'user' | 'assistant' | 'system' | 'tool';
readonly name?: string;
readonly content: (/* ContentPart — packages/agent-core-v2/src/kosong/contract/message.ts */ /* TextPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
readonly content: (/* ContentPart — packages/agent-core-v2/src/human/llm/message.ts */ /* TextPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'text';
text: string;
} | /* ThinkPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* ThinkPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'think';
think: string;
encrypted?: string;
} | /* ImageURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* ImageURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'image_url';
imageUrl: {
url: string;
id?: string;
name?: string;
};
} | /* AudioURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* AudioURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'audio_url';
audioUrl: {
url: string;
id?: string;
};
} | /* VideoURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* VideoURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'video_url';
videoUrl: {
url: string;
id?: string;
name?: string;
};
})[];
readonly toolCalls: /* ToolCall — packages/agent-core-v2/src/kosong/contract/message.ts */ {
readonly toolCalls: /* ToolCall — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'function';
id: string;
name: string;
Expand All @@ -1085,7 +1083,7 @@ export interface AgentStateSnapshot {
}[];
readonly toolCallId?: string;
readonly partial?: boolean;
readonly tools?: readonly /* Tool — packages/agent-core-v2/src/kosong/contract/tool.ts */ {
readonly tools?: readonly /* ToolDescription — packages/agent-core-v2/src/human/llm/message.ts */ {
name: string;
description: string;
parameters: Record<string, unknown>;
Expand Down Expand Up @@ -1208,7 +1206,7 @@ export interface AgentStateSnapshot {
'llmRequester.turnConfigs': Map<number, /* TurnRequestConfig — packages/agent-core-v2/src/agent/llmRequester/llmRequesterService.ts */ {
readonly resolved: /* ProfileModelContext — packages/agent-core-v2/src/agent/profile/profile.ts */ {
readonly modelAlias: string;
readonly modelCapabilities: /* ModelCapability — packages/agent-core-v2/src/kosong/contract/capability.ts */ {
readonly modelCapabilities: /* ModelCapability — packages/agent-core-v2/src/llm-adapter/contract/capability.ts */ {
readonly image_in: boolean;
readonly video_in: boolean;
readonly audio_in: boolean;
Expand All @@ -1220,13 +1218,13 @@ export interface AgentStateSnapshot {
};
readonly maxOutputSize: number | undefined;
readonly alwaysThinking: boolean | undefined;
readonly thinkingLevel: /* ThinkingEffort — packages/agent-core-v2/src/kosong/contract/provider.ts */ 'off' | 'on' | (string & {});
readonly thinkingLevel: /* ThinkingEffort — packages/agent-core-v2/src/human/llm/thinking.ts */ 'off' | 'on' | (string & {});
readonly reservedContextSize: number | undefined;
readonly compactionTriggerRatio: number | undefined;
};
readonly params: /* ModelRequestParams — packages/agent-core-v2/src/kosong/model/modelRequester.ts */ {
readonly params: /* ModelRequestParams — packages/agent-core-v2/src/llm-adapter/model/model-requester.ts */ {
readonly cacheKey?: string;
readonly sampling?: /* SamplingOptions — packages/agent-core-v2/src/kosong/contract/provider.ts */ {
readonly sampling?: /* SamplingOptions — packages/agent-core-v2/src/llm-adapter/model/model-requester.ts */ {
readonly temperature?: number;
readonly topP?: number;
};
Expand Down Expand Up @@ -1264,27 +1262,27 @@ export interface AgentStateSnapshot {
'mcp.discoveryWritesReady': boolean;
'mcp.mcpToolsByServer': Map<string, string[]>;
// src/agent/media/mediaResolverService.ts
'media.resolved': Map<string, /* ContentPart — packages/agent-core-v2/src/kosong/contract/message.ts */ /* TextPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
'media.resolved': Map<string, /* ContentPart — packages/agent-core-v2/src/human/llm/message.ts */ /* TextPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'text';
text: string;
} | /* ThinkPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* ThinkPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'think';
think: string;
encrypted?: string;
} | /* ImageURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* ImageURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'image_url';
imageUrl: {
url: string;
id?: string;
name?: string;
};
} | /* AudioURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* AudioURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'audio_url';
audioUrl: {
url: string;
id?: string;
};
} | /* VideoURLPart — packages/agent-core-v2/src/kosong/contract/message.ts */ {
} | /* VideoURLPart — packages/agent-core-v2/src/human/llm/message.ts */ {
type: 'video_url';
videoUrl: {
url: string;
Expand Down Expand Up @@ -1363,9 +1361,6 @@ export interface AgentStateSnapshot {
};
// src/agent/shellCommand/shellCommandService.ts
'shellCommand.tasks': Map<string, string>;
// src/agent/stepRetry/stepRetryService.ts
'stepRetry.failedAttempts': number;
'stepRetry.lastFailedDriverId': string | undefined;
// src/agent/task/taskOps.ts
// replayable · durable — folds: TaskStarted, TaskTerminated
'task': /* TaskModelState — packages/agent-core-v2/src/agent/task/taskOps.ts */ Map<string, /* AgentTaskInfo — packages/agent-core-v2/src/agent/task/types.ts */ /* QuestionTaskInfo — packages/agent-core-v2/src/agent/tools/ask-user-question/question-background-task.ts */ {
Expand Down
Loading
Loading