chore: trim stale comments and duplicate strings

This commit is contained in:
Tianyi Cui
2026-06-19 01:49:02 +08:00
parent 914c7e9858
commit 0334b4ad2e
4 changed files with 11 additions and 7 deletions

View File

@@ -560,8 +560,6 @@ async function runStep(
}) })
// signal CAN flip during the await above (abort() inside a tool); // signal CAN flip during the await above (abort() inside a tool);
// the analyzer can't see through the await boundary. // the analyzer can't see through the await boundary.
// signal can flip during the await above (abort() inside a tool);
// the analyzer can't see through the await boundary.
/* v8 ignore start -- signal.reason default unreachable via agent.abort() */ /* v8 ignore start -- signal.reason default unreachable via agent.abort() */
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (signal.aborted) throw new Error(String(signal.reason ?? 'aborted')) if (signal.aborted) throw new Error(String(signal.reason ?? 'aborted'))

View File

@@ -71,6 +71,9 @@ export interface AgentFactory {
resume(options: ResumeAgentOptions): Promise<Agent> resume(options: ResumeAgentOptions): Promise<Agent>
} }
/** Thrown when create/resume is called before an agent factory is registered. */
const NO_FACTORY_MESSAGE = 'no agent factory registered (load an agent-loop plugin)'
/** /**
* Agent registry (`ctx.agents`): tracks live agents so UI, hook, and * Agent registry (`ctx.agents`): tracks live agents so UI, hook, and
* orchestrator plugins can find them without depending on the concrete loop * orchestrator plugins can find them without depending on the concrete loop
@@ -107,7 +110,7 @@ export class AgentRegistry extends Service {
* registered. * registered.
*/ */
create(options: CreateAgentOptions): Agent { create(options: CreateAgentOptions): Agent {
if (this.factory === undefined) throw new Error('no agent factory registered (load an agent-loop plugin)') if (this.factory === undefined) throw new Error(NO_FACTORY_MESSAGE)
return this.factory.createAgent(options) return this.factory.createAgent(options)
} }
@@ -117,7 +120,7 @@ export class AgentRegistry extends Service {
* session persistence is not configured. * session persistence is not configured.
*/ */
async resume(options: ResumeAgentOptions): Promise<Agent> { async resume(options: ResumeAgentOptions): Promise<Agent> {
if (this.factory === undefined) throw new Error('no agent factory registered (load an agent-loop plugin)') if (this.factory === undefined) throw new Error(NO_FACTORY_MESSAGE)
return this.factory.resume(options) return this.factory.resume(options)
} }

View File

@@ -72,8 +72,9 @@ export interface Agent {
* (inject is synchronous): a failing flush is reported via `agent/error` * (inject is synchronous): a failing flush is reported via `agent/error`
* (step `0`) and the logger, never thrown into the caller. * (step `0`) and the logger, never thrown into the caller.
* *
* TODO(review): exact envelope/rendering rules live in dsh-session and need * TODO(review): verify the tagged-envelope rendering against live model
* review once a real adapter exists. * behavior; the real adapters that were the original precondition now exist
* (see the twin-adapter RFC).
*/ */
inject(content: ContentBlock[], options?: SendOptions): void inject(content: ContentBlock[], options?: SendOptions): void

View File

@@ -42,7 +42,9 @@ declare module 'cordis' {
* synthetic user-role message (the system-reminder pattern: zero adapter * synthetic user-role message (the system-reminder pattern: zero adapter
* burden, models distinguish it from real user prompts by the envelope). * burden, models distinguish it from real user prompts by the envelope).
* *
* TODO(review): revisit the envelope once a real adapter exists. * TODO(review): verify the tagged-envelope rendering against live model
* behavior; the real adapters that were the original precondition now exist
* (see the twin-adapter RFC).
*/ */
function renderTagged(tag: string, content: ContentBlock[], source: MessageSource): ContentBlock[] { function renderTagged(tag: string, content: ContentBlock[], source: MessageSource): ContentBlock[] {
const open = `<${tag} source=${JSON.stringify(source.kind)}>` const open = `<${tag} source=${JSON.stringify(source.kind)}>`