refactor: replace overloaded surface terminology

This commit is contained in:
Turtle
2026-07-24 19:54:25 +08:00
parent c172faed37
commit 0c708cb10d
626 changed files with 1396 additions and 1397 deletions

View File

@@ -13,7 +13,7 @@ import type {} from '@deepseek-ai/dsh-system-prompt'
import { computeHunkDiffs, diffsFromMeta } from './diff.ts'
import { remediateFsError } from './error.ts'
import { sessionResolveOptions } from './session-cwd.ts'
import type { FsSandboxSurface } from './sandbox.ts'
import type { FsSandboxController } from './sandbox.ts'
/** Validated `edit` arguments after defaulting. */
interface EditInput {
@@ -71,9 +71,9 @@ export function formatEditOutput(displayPath: string, replaceAll: boolean): stri
/**
* Register the `edit` tool and its system-prompt guidance.
* @param ctx - the plugin context; registrations are effects scoped to it, and execution uses its `fs` service.
* @param sandbox - the shared sandbox-escalation surface (advertisement, mode stamping, denial mapping).
* @param sandbox - the shared sandbox-escalation API (advertisement, mode stamping, denial mapping).
*/
export function applyEditTool(ctx: Context, sandbox: FsSandboxSurface): void {
export function applyEditTool(ctx: Context, sandbox: FsSandboxController): void {
ctx.systemPrompt.section({
name: 'tool:edit',
order: 102,

View File

@@ -13,7 +13,7 @@ import { applyWriteTool } from './write.ts'
import { applyEditTool } from './edit.ts'
import { applyReadImageTool } from './read-image.ts'
import { READ_MAX_BYTES, READ_MAX_LINE_LENGTH } from './read-render.ts'
import { FsSandboxSurface } from './sandbox.ts'
import { FsSandboxController } from './sandbox.ts'
/** Cordis plugin name used by loader diagnostics. */
export const name = 'tool-fs'
@@ -70,10 +70,10 @@ export function apply(ctx: Context, config: Config): void {
ctx.inject(['attachments'], (imageCtx) => {
applyReadImageTool(imageCtx)
})
// One escalation surface shared by both mutating tools: advertisement gating,
// One escalation API shared by both mutating tools: advertisement gating,
// per-call policy resolution, and denial-marker mapping, all keyed off whether
// the mounted ctx.fs confines (ctx.fs.sandboxMode).
const sandbox = new FsSandboxSurface(ctx)
const sandbox = new FsSandboxController(ctx)
applyWriteTool(ctx, sandbox)
applyEditTool(ctx, sandbox)
}

View File

@@ -1,5 +1,5 @@
/**
* The sandbox-escalation surface shared by the `write` and `edit` tools: the
* The sandbox-escalation API shared by the `write` and `edit` tools: the
* per-call policy resolution, the advertised escalation fields, and the denial-marker
* mapping — all delegating the vocabulary and the fail-closed approval
* sequence to `@deepseek-ai/dsh-sandbox` (the same pieces `@deepseek-ai/dsh-tool-bash`
@@ -30,11 +30,11 @@ export interface EscalationSchemaFields {
}
/**
* The filesystem escalation surface: advertisement gating, per-call policy
* The filesystem escalation API: advertisement gating, per-call policy
* resolution, the one-approved wider retry, and denial-marker mapping. A pure
* product of `ctx` at plugin apply time.
*/
export class FsSandboxSurface {
export class FsSandboxController {
/** The escalation targets this composition advertises (`[]` when no confining backend is mounted). */
readonly escalationModes: readonly SandboxMode[]
/** Shared per-session policy resolver, required by a confining backend. */

View File

@@ -14,7 +14,7 @@ import type {} from '@deepseek-ai/dsh-system-prompt'
import { computeHunkDiffs, diffsFromMeta } from './diff.ts'
import { remediateFsError } from './error.ts'
import { sessionResolveOptions } from './session-cwd.ts'
import type { FsSandboxSurface } from './sandbox.ts'
import type { FsSandboxController } from './sandbox.ts'
/**
* Validate value constraints the schema DSL can't express: only a non-blank
@@ -57,9 +57,9 @@ interface WriteToolArgs {
/**
* Register the `write` tool and its system-prompt guidance.
* @param ctx - the plugin context; registrations are effects scoped to it, and execution uses its `fs` service.
* @param sandbox - the shared sandbox-escalation surface (advertisement, mode stamping, denial mapping).
* @param sandbox - the shared sandbox-escalation API (advertisement, mode stamping, denial mapping).
*/
export function applyWriteTool(ctx: Context, sandbox: FsSandboxSurface): void {
export function applyWriteTool(ctx: Context, sandbox: FsSandboxController): void {
ctx.systemPrompt.section({
name: 'tool:write',
order: 101,

View File

@@ -1,5 +1,5 @@
/**
* Consumer-surface tests over a fake provider and the real policy collaborator: schemas,
* Consumer API tests over a fake provider and the real policy collaborator: schemas,
* validation, formatting, typed errors, intent dispatch, and observation-driven authorization.
*/
@@ -759,7 +759,7 @@ describe('read caps are plugin config', () => {
})
})
describe('sandbox escalation surface (write/edit)', () => {
describe('sandbox escalation API (write/edit)', () => {
/** A confining fake `ctx.fs`: reports a default mode, records each per-call policy, and can arm a sandbox denial. */
class SandboxingFakeFs extends FakeFs {
stamped: (SandboxExecutionPolicy | undefined)[] = []
@@ -800,7 +800,7 @@ describe('sandbox escalation surface (write/edit)', () => {
return { ctx, fs: ctx.fs as SandboxingFakeFs }
}
/** A fake agent whose session records appends (the approval audit surface), mid-turn, carrying the given events for the fold. */
/** A fake agent whose session records appends (the approval audit trail), mid-turn, carrying the given events for the fold. */
function escalationAgent(events: Array<{ type: string; data?: Record<string, unknown> }> = []): object {
return {
id: 'agent-fs-esc',