@ai-agent-forge/agent-forge 0.87.0 → 0.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +2 -2
- package/dist/bundle/.build-manifest.json +65 -87
- package/dist/bundle/chunks/{chunk-BFC2BDVJ.js → chunk-HLJEVRWP.js} +2 -2
- package/dist/bundle/chunks/{chunk-MOHOLL3F.js → chunk-YGHQME4V.js} +72 -72
- package/dist/bundle/chunks/image-resize-worker.js +2 -2
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/client.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js +14 -2
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +1 -1
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +6 -10
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +7 -111
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-internal.d.ts +0 -6
- package/dist/core/agent-session-internal.d.ts.map +1 -1
- package/dist/core/agent-session-internal.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +0 -1
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session.d.ts +0 -20
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +5 -33
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-compaction-policy.js +0 -34
- package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.js +2 -2
- package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -1
- package/dist/core/extensions/provider-failover.d.ts +7 -3
- package/dist/core/extensions/provider-failover.d.ts.map +1 -1
- package/dist/core/extensions/provider-failover.js +9 -8
- package/dist/core/extensions/provider-failover.js.map +1 -1
- package/dist/core/facade/coding-agent-facade.d.ts +0 -6
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
- package/dist/core/facade/coding-agent-facade.js +0 -3
- package/dist/core/facade/coding-agent-facade.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/cli.js +3 -1
- package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js +2 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +0 -2
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -1
- package/dist/core/model-config.d.ts +0 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +9 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +3 -3
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer.d.ts +2 -2
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +7 -8
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +6 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +9 -20
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +20 -54
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -2
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +0 -2
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -7
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -6
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +6 -28
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +0 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +23 -36
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +0 -8
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +0 -12
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +0 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -19
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +9 -2
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +23 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +9 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.js +5 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -1
- package/dist/utils/photon.d.ts +2 -2
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js +2 -2
- package/dist/utils/photon.js.map +1 -1
- package/docs/compaction.md +1 -3
- package/docs/docs.json +4 -0
- package/docs/index.md +1 -0
- package/docs/mcp.md +103 -0
- package/docs/models.md +14 -22
- package/docs/providers.md +0 -1
- package/docs/rpc.md +1 -26
- package/docs/sdk.md +4 -6
- package/docs/settings.md +9 -12
- package/docs/skills.md +1 -9
- package/docs/usage.md +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/with-deps/plugin.json +1 -1
- package/examples/sdk/10-settings.ts +2 -4
- package/examples/sdk/12-full-control.ts +1 -2
- package/package.json +1 -3
- package/dist/core/extensions/microcompact.d.ts +0 -80
- package/dist/core/extensions/microcompact.d.ts.map +0 -1
- package/dist/core/extensions/microcompact.js +0 -134
- package/dist/core/extensions/microcompact.js.map +0 -1
- package/dist/server/create-harness.d.ts +0 -26
- package/dist/server/create-harness.d.ts.map +0 -1
- package/dist/server/create-harness.js +0 -106
- package/dist/server/create-harness.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-internal.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-internal.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared internal contract and snapshot helpers for the agent-session\n * submodules (agent-session-bash.ts, agent-session-compaction.ts,\n * agent-session-context.ts, agent-session-lifecycle.ts, agent-session-loop.ts,\n * agent-session-retry.ts, agent-session-tools.ts, agent-session-model.ts;\n * agent-session-runtime.ts consumes the class directly).\n *\n * `AgentSession` satisfies {@link AgentSessionInternals} structurally through a\n * single internal cast; members mirror the private state and helpers that moved\n * into the submodules. Same-name delegates stay on the class so call sites,\n * dynamic dispatch, and test spies keep working unchanged.\n */\n\nimport type {\n\tAgent,\n\tAgentContext,\n\tAgentEvent,\n\tAgentLoopTurnUpdate,\n\tAgentMessage,\n\tAgentTool,\n\tPrepareNextTurnContext,\n\tThinkingLevel,\n} from \"@agent-forge/agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tModel,\n\tTextContent,\n\tToolResultMessage,\n} from \"@agent-forge/ai/compat\";\nimport type {\n\tAgentSessionEvent,\n\tModelCycleResult,\n\tModelMutationOptions,\n\tSessionStats,\n\tTurnAbortReason,\n} from \"./agent-session.ts\";\nimport type { CompactionCancelledResult } from \"./agent-session-compaction.ts\";\nimport type { LoopExecutor } from \"./agent-session-loop-runner.ts\";\nimport type { ForkableUserMessage } from \"./agent-session-projection.ts\";\nimport type { BashResult } from \"./bash-executor.ts\";\nimport type { CompactionResult } from \"./compaction/index.ts\";\nimport type { CapabilityPluginHandle, CapabilityRuntime, ContextOperationOptions } from \"./extensions/index.ts\";\nimport type { ModelStreamEventDataV1 } from \"./extensions/lifecycle-catalog.ts\";\nimport type { ContextUsage, ExecutionFactsV1 } from \"./extensions/public-api.ts\";\nimport type { HostLogger } from \"./logger.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceLoader } from \"./resource-loader.ts\";\nimport type { BranchSummaryEntry, SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.ts\";\nimport type { BashOperations } from \"./tools/bash.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tools/tool-definition.ts\";\n\n/** Registry entry for one tool definition with its source metadata. */\nexport interface ToolDefinitionEntry {\n\tdefinition: ToolDefinition;\n\tsourceInfo: SourceInfo;\n}\n\n/**\n * A session operation was cancelled by user intent (abort, reload barrier) — a\n * normal outcome, never a failure. Host boundaries resolve with structured\n * cancelled results instead of surfacing this as an error.\n */\nexport class SessionCancelledError extends Error {\n\treadonly reason: \"reload\" | \"signal\";\n\n\tconstructor(reason: SessionCancelledError[\"reason\"]) {\n\t\tsuper(`Session operation cancelled: ${reason}`);\n\t\tthis.name = \"SessionCancelledError\";\n\t\tthis.reason = reason;\n\t}\n}\n\n/**\n * Deep-clone a session value and freeze the clone so lifecycle payloads cannot\n * be mutated in place. The implementation lives on the public extension face\n * (`./extensions/public-api.ts`) so first-party and third-party plugins share\n * the same payload-projection contract; re-exported here for the host-internal\n * session submodules.\n */\nexport { detachedSessionSnapshot } from \"./extensions/public-api.ts\";\n\n/** JSON-safe clone for lifecycle payloads that must survive structured clone failures. */\nexport function jsonSafeSessionSnapshot<T>(value: T): T {\n\tconst serialized = JSON.stringify(value);\n\t// v8 ignore next -- 对象消息序列化永远返回字符串,undefined 分支不可达\n\treturn serialized === undefined ? (null as T) : (JSON.parse(serialized) as T);\n}\n\nexport interface AgentSessionInternals {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly _modelRuntime: ModelRuntime;\n\treadonly model: Model<Api> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly sessionId: string;\n\treadonly isStreaming: boolean;\n\t/** Idle gate for public context operations (compile-time private getter on AgentSession). */\n\treadonly isIdle: boolean;\n\n\t// Internal session state (compile-time private on AgentSession)\n\t_compactionQueue: Promise<void>;\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t/** 已完成的溢出裁剪级数(0 = 未裁剪);与 `_overflowRecoveryAttempted` 同点位复位。 */\n\t_overflowTrimStage: number;\n\t/**\n\t * microcompact 冷却(按模型请求计数,0 = 不冷却):relief 落地时置满,\n\t * 每次 assistant message_end 减 1(下限 0);冷却期内阈值 decide 以\n\t * `microcompactEnabled: false` 关闭便宜缓解(背景注释见 agent-session.ts)。\n\t */\n\t_microcompactCooldown: number;\n\t_activeCompactionPromise: Promise<unknown> | undefined;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_branchSummaryPromise: Promise<unknown> | undefined;\n\t_resolveBranchSummaryPromise: (() => void) | undefined;\n\t_reloadInProgress: boolean;\n\t_policyDecisionAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_pendingRetryDecision:\n\t\t| { message: AssistantMessage; decision: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>> }\n\t\t| undefined;\n\t_isAgentRunActive: boolean;\n\t_currentRunAborted: boolean;\n\t_lastAbortReason: TurnAbortReason | undefined;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\n\t// Lifecycle dispatch state (compile-time private on AgentSession)\n\treadonly _modelStreamState: { streamId: string; sequence: number } | undefined;\n\t/** Correlation id for the active prompt run's lifecycle dispatches; written by the loop-runner via this facade. */\n\t_turnCorrelationId: string | undefined;\n\t_turnCorrelationCounter: number;\n\t/**\n\t * Host-process logger seam (会话轨迹第 2 期,设计 §5.2): one-line process log\n\t * beside lifecycle dispatches that report genuine failures (compaction\n\t * failed). Undefined when no hostLogger was configured; call sites treat it\n\t * as a no-op.\n\t */\n\treadonly _hostLogger?: HostLogger;\n\n\t// Bash execution state (compile-time private on AgentSession)\n\treadonly _bashAbortControllers: Set<AbortController>;\n\treadonly _activeBashPromises: Set<Promise<unknown>>;\n\t_bashEpoch: number;\n\t_pendingBashMessages: BashExecutionMessage[];\n\treadonly isDisposed: boolean;\n\n\t_capabilityRuntime: CapabilityRuntime | undefined;\n\t_compactionPolicyName: string;\n\t_overflowPolicyName: string;\n\t_branchSummaryPolicyName: string;\n\t_retryPolicyName: string;\n\t_runLoopStrategyName: string;\n\t/** Internal loop-executor seam (D-043 G3): set to replace the default prompt/continue drive. No public config; distinct from `_runLoopStrategyName` (a per-continuation veto policy). */\n\t_loopExecutor: LoopExecutor | undefined;\n\n\t// Helpers that remain on AgentSession\n\t_emit(event: AgentSessionEvent): void;\n\t_resolveIdleWaitIfIdle(): void;\n\t_flushPendingCustomMessages(): void;\n\t_emitAgentSettled(): Promise<void>;\n\t_observeLifecycleDeliveryError(error: unknown, extensionPath: string, event: string): void;\n\tabort(): Promise<void>;\n\t_abortInternal(): Promise<void>;\n\n\t// Context-transition state and delegates forwarding to agent-session-context.ts\n\t/** Generation fence for context projections that may outlive a runtime replacement. */\n\t_contextEpoch: number;\n\t_contextTransitionAbortController: AbortController;\n\t/** Serializes context transitions and lets reload/dispose drain them before teardown. */\n\t_activeContextTransition: Promise<unknown> | undefined;\n\t/** Monotonic revision for the public context snapshot/commit facade. */\n\t_contextRevision: number;\n\t/** Serializes public context commits so expectedRevision is a real CAS fence. */\n\t_contextCommitQueue: Promise<void>;\n\t/** Configured external context strategy name, written only by the constructor. */\n\treadonly _contextStrategyName: string | undefined;\n\t_requireContextStrategy(): { runtime: CapabilityRuntime; name: string };\n\t_requireIdleContextOperation(operation: string): void;\n\t_beginContextTransitionFence(): void;\n\t_isContextTransitionCurrent(epoch: number, allowReload: boolean): boolean;\n\t_assertContextTransitionCurrent(epoch: number, allowReload: boolean): void;\n\t_enqueueContextTransition<T>(\n\t\toperation: (epoch: number, signal: AbortSignal) => Promise<T>,\n\t\toptions?: { signal?: AbortSignal; allowReload?: boolean },\n\t): Promise<T>;\n\t_copyContextMessages(value: unknown, strategyName: string, direction: \"input\" | \"result\"): AgentMessage[];\n\t_applyContextTransition(\n\t\tmessages: AgentMessage[],\n\t\treason?: ContextOperationOptions[\"reason\"],\n\t\tsignal?: AbortSignal,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\t_restoreContextTransition(\n\t\tsnapshot: unknown,\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\tsnapshotContext(): Promise<unknown>;\n\trestoreContext(snapshot: unknown): Promise<AgentMessage[]>;\n\treplaceContext(context: AgentMessage[]): Promise<AgentMessage[]>;\n\n\t// Model-scope state and delegates forwarding to agent-session-model.ts\n\t_scopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\t/** Public scoped-models getter (Legacy 迁移 R1): submodules read via this instead of the private field. */\n\treadonly scopedModels: ReadonlyArray<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\tsetModel(model: Model<Api>, options?: ModelMutationOptions): Promise<void>;\n\tsetThinkingLevel(level: ThinkingLevel, options?: ModelMutationOptions): void;\n\t_emitModelSelect(\n\t\tnextModel: Model<Api>,\n\t\tpreviousModel: Model<Api> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\t_addPersistedDefaultToNonEmptyScope(model: Model<Api>): void;\n\t_getThinkingLevelForModelSwitch(targetModel?: Model<Api>, explicitLevel?: ThinkingLevel): ThinkingLevel;\n\t_cycleScopedModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\t_cycleAvailableModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\n\t// Run-loop wiring state and delegates forwarding to agent-session-loop.ts\n\t/** The agent's construction-time prepare adapter, captured once by the loop wiring install. */\n\t_initialPrepareNextTurn:\n\t\t| ((\n\t\t\t\tcontext: PrepareNextTurnContext,\n\t\t\t\tsignal?: AbortSignal,\n\t\t ) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined)\n\t\t| undefined;\n\n\t// Delegates forwarding to the submodule functions\n\t_compactBeforeNextAssistantResponse(context: AgentContext, signal?: AbortSignal): Promise<AgentContext>;\n\t_enqueueCompaction<T>(operation: () => Promise<T>): Promise<T>;\n\t_compactInternal(customInstructions?: string): Promise<CompactionResult>;\n\t_checkCompaction(\n\t\tassistantMessage: AssistantMessage,\n\t\tskipAbortedCheck?: boolean,\n\t\tsignal?: AbortSignal,\n\t): Promise<boolean>;\n\t_runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean>;\n\t_willRetryAfterAgentEnd(event: Extract<AgentEvent, { type: \"agent_end\" }>, signal?: AbortSignal): Promise<boolean>;\n\t_isRetryableError(message: AssistantMessage, execution?: ExecutionFactsV1, signal?: AbortSignal): Promise<boolean>;\n\t_prepareRetry(\n\t\tmessage: AssistantMessage,\n\t\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n\t): Promise<boolean>;\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>;\n\n\t// Lifecycle delegates forwarding to agent-session-lifecycle.ts\n\t_dispatchModelStreamLifecycle(\n\t\tmessage: AgentMessage,\n\t\teventName: ModelStreamEventDataV1[\"event\"],\n\t\tphase: ModelStreamEventDataV1[\"phase\"],\n\t): Promise<void>;\n\t_dispatchContextReplacedLifecycle(\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\tstrategyName?: string,\n\t): Promise<void>;\n\t_dispatchModelResponseLifecycle(message: AssistantMessage, entryId: string): Promise<void>;\n\t_dispatchToolCommitLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchToolResultLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchSessionReloadLifecycle(generation: number): Promise<void>;\n\n\t// Bash delegates forwarding to agent-session-bash.ts\n\tcaptureBashEpoch(): number;\n\tisBashEpochCurrent(epoch: number): boolean;\n\temitUserBash(excludeFromContext: boolean): void;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; id?: string; operations?: BashOperations },\n\t): Promise<BashResult>;\n\trecordBashResult(\n\t\tcommand: string,\n\t\tresult: BashResult,\n\t\toptions?: { excludeFromContext?: boolean; epoch?: number },\n\t): void;\n\tabortBash(): void;\n\t_flushPendingBashMessages(): void;\n\n\t// Tool registry state (compile-time private on AgentSession)\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_deferredToolPluginIds: ReadonlySet<string>;\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_baseToolSources: Map<string, SourceInfo>;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_allowedToolNames: Set<string> | undefined;\n\t_excludedToolNames: Set<string> | undefined;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_systemPromptOverride: string | undefined;\n\t_orientationPrompt: string | undefined;\n\t_preferenceCard: string | undefined;\n\t_capabilitySkillsFilter: ((skills: Skill[]) => Skill[]) | undefined;\n\t_bootstrapSkillsHandle: CapabilityPluginHandle | undefined;\n\t_cwd: string;\n\n\tgetActiveToolNames(): string[];\n\n\t// Tool registry delegates forwarding to agent-session-tools.ts\n\tgetAllTools(): ToolInfo[];\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tsetActiveToolsByName(toolNames: string[]): void;\n\t_rebuildSystemPrompt(toolNames: string[]): string;\n\t_refreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void;\n\t_syncCapabilityTools(): void;\n\t_getCapabilitySkills(): Skill[];\n\t_getAvailableSkills(): Skill[];\n\t_validateCapabilitySkillConflicts(): void;\n\t_refreshBootstrapSkills(): Promise<void>;\n\n\t// Read-only projections and delegates forwarding to agent-session-projection.ts\n\treadonly sessionFile: string | undefined;\n\treadonly messages: AgentMessage[];\n\treadonly systemPrompt: string;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly pendingMessageCount: number;\n\tgetSessionStats(): SessionStats;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetUserMessagesForForking(): ForkableUserMessage[];\n\texportToHtml(outputPath?: string, options?: { themeName?: string }): Promise<string>;\n\texportToJsonl(outputPath?: string): string;\n\tgetLastAssistantText(): string | undefined;\n\n\t// Resource-discovery delegates forwarding to agent-session-extensions.ts\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\tbuildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}>;\n\tgetExtensionSourceLabel(extensionPath: string): string;\n\n\t// Prompt/queue surface consumed by the extension binding closures\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tcompact(customInstructions?: string): Promise<CompactionResult | CompactionCancelledResult>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-internal.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-internal.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared internal contract and snapshot helpers for the agent-session\n * submodules (agent-session-bash.ts, agent-session-compaction.ts,\n * agent-session-context.ts, agent-session-lifecycle.ts, agent-session-loop.ts,\n * agent-session-retry.ts, agent-session-tools.ts, agent-session-model.ts;\n * agent-session-runtime.ts consumes the class directly).\n *\n * `AgentSession` satisfies {@link AgentSessionInternals} structurally through a\n * single internal cast; members mirror the private state and helpers that moved\n * into the submodules. Same-name delegates stay on the class so call sites,\n * dynamic dispatch, and test spies keep working unchanged.\n */\n\nimport type {\n\tAgent,\n\tAgentContext,\n\tAgentEvent,\n\tAgentLoopTurnUpdate,\n\tAgentMessage,\n\tAgentTool,\n\tPrepareNextTurnContext,\n\tThinkingLevel,\n} from \"@agent-forge/agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tModel,\n\tTextContent,\n\tToolResultMessage,\n} from \"@agent-forge/ai/compat\";\nimport type {\n\tAgentSessionEvent,\n\tModelCycleResult,\n\tModelMutationOptions,\n\tSessionStats,\n\tTurnAbortReason,\n} from \"./agent-session.ts\";\nimport type { CompactionCancelledResult } from \"./agent-session-compaction.ts\";\nimport type { LoopExecutor } from \"./agent-session-loop-runner.ts\";\nimport type { ForkableUserMessage } from \"./agent-session-projection.ts\";\nimport type { BashResult } from \"./bash-executor.ts\";\nimport type { CompactionResult } from \"./compaction/index.ts\";\nimport type { CapabilityPluginHandle, CapabilityRuntime, ContextOperationOptions } from \"./extensions/index.ts\";\nimport type { ModelStreamEventDataV1 } from \"./extensions/lifecycle-catalog.ts\";\nimport type { ContextUsage, ExecutionFactsV1 } from \"./extensions/public-api.ts\";\nimport type { HostLogger } from \"./logger.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceLoader } from \"./resource-loader.ts\";\nimport type { BranchSummaryEntry, SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.ts\";\nimport type { BashOperations } from \"./tools/bash.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tools/tool-definition.ts\";\n\n/** Registry entry for one tool definition with its source metadata. */\nexport interface ToolDefinitionEntry {\n\tdefinition: ToolDefinition;\n\tsourceInfo: SourceInfo;\n}\n\n/**\n * A session operation was cancelled by user intent (abort, reload barrier) — a\n * normal outcome, never a failure. Host boundaries resolve with structured\n * cancelled results instead of surfacing this as an error.\n */\nexport class SessionCancelledError extends Error {\n\treadonly reason: \"reload\" | \"signal\";\n\n\tconstructor(reason: SessionCancelledError[\"reason\"]) {\n\t\tsuper(`Session operation cancelled: ${reason}`);\n\t\tthis.name = \"SessionCancelledError\";\n\t\tthis.reason = reason;\n\t}\n}\n\n/**\n * Deep-clone a session value and freeze the clone so lifecycle payloads cannot\n * be mutated in place. The implementation lives on the public extension face\n * (`./extensions/public-api.ts`) so first-party and third-party plugins share\n * the same payload-projection contract; re-exported here for the host-internal\n * session submodules.\n */\nexport { detachedSessionSnapshot } from \"./extensions/public-api.ts\";\n\n/** JSON-safe clone for lifecycle payloads that must survive structured clone failures. */\nexport function jsonSafeSessionSnapshot<T>(value: T): T {\n\tconst serialized = JSON.stringify(value);\n\t// v8 ignore next -- 对象消息序列化永远返回字符串,undefined 分支不可达\n\treturn serialized === undefined ? (null as T) : (JSON.parse(serialized) as T);\n}\n\nexport interface AgentSessionInternals {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly _modelRuntime: ModelRuntime;\n\treadonly model: Model<Api> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly sessionId: string;\n\treadonly isStreaming: boolean;\n\t/** Idle gate for public context operations (compile-time private getter on AgentSession). */\n\treadonly isIdle: boolean;\n\n\t// Internal session state (compile-time private on AgentSession)\n\t_compactionQueue: Promise<void>;\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t/** 已完成的溢出裁剪级数(0 = 未裁剪);与 `_overflowRecoveryAttempted` 同点位复位。 */\n\t_overflowTrimStage: number;\n\t_activeCompactionPromise: Promise<unknown> | undefined;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_branchSummaryPromise: Promise<unknown> | undefined;\n\t_resolveBranchSummaryPromise: (() => void) | undefined;\n\t_reloadInProgress: boolean;\n\t_policyDecisionAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_pendingRetryDecision:\n\t\t| { message: AssistantMessage; decision: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>> }\n\t\t| undefined;\n\t_isAgentRunActive: boolean;\n\t_currentRunAborted: boolean;\n\t_lastAbortReason: TurnAbortReason | undefined;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\n\t// Lifecycle dispatch state (compile-time private on AgentSession)\n\treadonly _modelStreamState: { streamId: string; sequence: number } | undefined;\n\t/** Correlation id for the active prompt run's lifecycle dispatches; written by the loop-runner via this facade. */\n\t_turnCorrelationId: string | undefined;\n\t_turnCorrelationCounter: number;\n\t/**\n\t * Host-process logger seam (会话轨迹第 2 期,设计 §5.2): one-line process log\n\t * beside lifecycle dispatches that report genuine failures (compaction\n\t * failed). Undefined when no hostLogger was configured; call sites treat it\n\t * as a no-op.\n\t */\n\treadonly _hostLogger?: HostLogger;\n\n\t// Bash execution state (compile-time private on AgentSession)\n\treadonly _bashAbortControllers: Set<AbortController>;\n\treadonly _activeBashPromises: Set<Promise<unknown>>;\n\t_bashEpoch: number;\n\t_pendingBashMessages: BashExecutionMessage[];\n\treadonly isDisposed: boolean;\n\n\t_capabilityRuntime: CapabilityRuntime | undefined;\n\t_compactionPolicyName: string;\n\t_overflowPolicyName: string;\n\t_branchSummaryPolicyName: string;\n\t_retryPolicyName: string;\n\t_runLoopStrategyName: string;\n\t/** Internal loop-executor seam (D-043 G3): set to replace the default prompt/continue drive. No public config; distinct from `_runLoopStrategyName` (a per-continuation veto policy). */\n\t_loopExecutor: LoopExecutor | undefined;\n\n\t// Helpers that remain on AgentSession\n\t_emit(event: AgentSessionEvent): void;\n\t_resolveIdleWaitIfIdle(): void;\n\t_flushPendingCustomMessages(): void;\n\t_emitAgentSettled(): Promise<void>;\n\t_observeLifecycleDeliveryError(error: unknown, extensionPath: string, event: string): void;\n\tabort(): Promise<void>;\n\t_abortInternal(): Promise<void>;\n\n\t// Context-transition state and delegates forwarding to agent-session-context.ts\n\t/** Generation fence for context projections that may outlive a runtime replacement. */\n\t_contextEpoch: number;\n\t_contextTransitionAbortController: AbortController;\n\t/** Serializes context transitions and lets reload/dispose drain them before teardown. */\n\t_activeContextTransition: Promise<unknown> | undefined;\n\t/** Monotonic revision for the public context snapshot/commit facade. */\n\t_contextRevision: number;\n\t/** Serializes public context commits so expectedRevision is a real CAS fence. */\n\t_contextCommitQueue: Promise<void>;\n\t/** Configured external context strategy name, written only by the constructor. */\n\treadonly _contextStrategyName: string | undefined;\n\t_requireContextStrategy(): { runtime: CapabilityRuntime; name: string };\n\t_requireIdleContextOperation(operation: string): void;\n\t_beginContextTransitionFence(): void;\n\t_isContextTransitionCurrent(epoch: number, allowReload: boolean): boolean;\n\t_assertContextTransitionCurrent(epoch: number, allowReload: boolean): void;\n\t_enqueueContextTransition<T>(\n\t\toperation: (epoch: number, signal: AbortSignal) => Promise<T>,\n\t\toptions?: { signal?: AbortSignal; allowReload?: boolean },\n\t): Promise<T>;\n\t_copyContextMessages(value: unknown, strategyName: string, direction: \"input\" | \"result\"): AgentMessage[];\n\t_applyContextTransition(\n\t\tmessages: AgentMessage[],\n\t\treason?: ContextOperationOptions[\"reason\"],\n\t\tsignal?: AbortSignal,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\t_restoreContextTransition(\n\t\tsnapshot: unknown,\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\tsnapshotContext(): Promise<unknown>;\n\trestoreContext(snapshot: unknown): Promise<AgentMessage[]>;\n\treplaceContext(context: AgentMessage[]): Promise<AgentMessage[]>;\n\n\t// Model-scope state and delegates forwarding to agent-session-model.ts\n\t_scopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\t/** Public scoped-models getter (Legacy 迁移 R1): submodules read via this instead of the private field. */\n\treadonly scopedModels: ReadonlyArray<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\tsetModel(model: Model<Api>, options?: ModelMutationOptions): Promise<void>;\n\tsetThinkingLevel(level: ThinkingLevel, options?: ModelMutationOptions): void;\n\t_emitModelSelect(\n\t\tnextModel: Model<Api>,\n\t\tpreviousModel: Model<Api> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\t_addPersistedDefaultToNonEmptyScope(model: Model<Api>): void;\n\t_getThinkingLevelForModelSwitch(targetModel?: Model<Api>, explicitLevel?: ThinkingLevel): ThinkingLevel;\n\t_cycleScopedModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\t_cycleAvailableModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\n\t// Run-loop wiring state and delegates forwarding to agent-session-loop.ts\n\t/** The agent's construction-time prepare adapter, captured once by the loop wiring install. */\n\t_initialPrepareNextTurn:\n\t\t| ((\n\t\t\t\tcontext: PrepareNextTurnContext,\n\t\t\t\tsignal?: AbortSignal,\n\t\t ) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined)\n\t\t| undefined;\n\n\t// Delegates forwarding to the submodule functions\n\t_compactBeforeNextAssistantResponse(context: AgentContext, signal?: AbortSignal): Promise<AgentContext>;\n\t_enqueueCompaction<T>(operation: () => Promise<T>): Promise<T>;\n\t_compactInternal(customInstructions?: string): Promise<CompactionResult>;\n\t_checkCompaction(\n\t\tassistantMessage: AssistantMessage,\n\t\tskipAbortedCheck?: boolean,\n\t\tsignal?: AbortSignal,\n\t): Promise<boolean>;\n\t_runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean>;\n\t_willRetryAfterAgentEnd(event: Extract<AgentEvent, { type: \"agent_end\" }>, signal?: AbortSignal): Promise<boolean>;\n\t_isRetryableError(message: AssistantMessage, execution?: ExecutionFactsV1, signal?: AbortSignal): Promise<boolean>;\n\t_prepareRetry(\n\t\tmessage: AssistantMessage,\n\t\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n\t): Promise<boolean>;\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>;\n\n\t// Lifecycle delegates forwarding to agent-session-lifecycle.ts\n\t_dispatchModelStreamLifecycle(\n\t\tmessage: AgentMessage,\n\t\teventName: ModelStreamEventDataV1[\"event\"],\n\t\tphase: ModelStreamEventDataV1[\"phase\"],\n\t): Promise<void>;\n\t_dispatchContextReplacedLifecycle(\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\tstrategyName?: string,\n\t): Promise<void>;\n\t_dispatchModelResponseLifecycle(message: AssistantMessage, entryId: string): Promise<void>;\n\t_dispatchToolCommitLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchToolResultLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchSessionReloadLifecycle(generation: number): Promise<void>;\n\n\t// Bash delegates forwarding to agent-session-bash.ts\n\tcaptureBashEpoch(): number;\n\tisBashEpochCurrent(epoch: number): boolean;\n\temitUserBash(excludeFromContext: boolean): void;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; id?: string; operations?: BashOperations },\n\t): Promise<BashResult>;\n\trecordBashResult(\n\t\tcommand: string,\n\t\tresult: BashResult,\n\t\toptions?: { excludeFromContext?: boolean; epoch?: number },\n\t): void;\n\tabortBash(): void;\n\t_flushPendingBashMessages(): void;\n\n\t// Tool registry state (compile-time private on AgentSession)\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_deferredToolPluginIds: ReadonlySet<string>;\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_baseToolSources: Map<string, SourceInfo>;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_allowedToolNames: Set<string> | undefined;\n\t_excludedToolNames: Set<string> | undefined;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_systemPromptOverride: string | undefined;\n\t_orientationPrompt: string | undefined;\n\t_preferenceCard: string | undefined;\n\t_capabilitySkillsFilter: ((skills: Skill[]) => Skill[]) | undefined;\n\t_bootstrapSkillsHandle: CapabilityPluginHandle | undefined;\n\t_cwd: string;\n\n\tgetActiveToolNames(): string[];\n\n\t// Tool registry delegates forwarding to agent-session-tools.ts\n\tgetAllTools(): ToolInfo[];\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tsetActiveToolsByName(toolNames: string[]): void;\n\t_rebuildSystemPrompt(toolNames: string[]): string;\n\t_refreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void;\n\t_syncCapabilityTools(): void;\n\t_getCapabilitySkills(): Skill[];\n\t_getAvailableSkills(): Skill[];\n\t_validateCapabilitySkillConflicts(): void;\n\t_refreshBootstrapSkills(): Promise<void>;\n\n\t// Read-only projections and delegates forwarding to agent-session-projection.ts\n\treadonly sessionFile: string | undefined;\n\treadonly messages: AgentMessage[];\n\treadonly systemPrompt: string;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly pendingMessageCount: number;\n\tgetSessionStats(): SessionStats;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetUserMessagesForForking(): ForkableUserMessage[];\n\texportToHtml(outputPath?: string, options?: { themeName?: string }): Promise<string>;\n\texportToJsonl(outputPath?: string): string;\n\tgetLastAssistantText(): string | undefined;\n\n\t// Resource-discovery delegates forwarding to agent-session-extensions.ts\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\tbuildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}>;\n\tgetExtensionSourceLabel(extensionPath: string): string;\n\n\t// Prompt/queue surface consumed by the extension binding closures\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tcompact(customInstructions?: string): Promise<CompactionResult | CompactionCancelledResult>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-internal.js","sourceRoot":"","sources":["../../src/core/agent-session-internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsDH;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,MAAM,CAAsB;IAErC,YAAY,MAAuC,EAAE;QACpD,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAAA,CACrB;CACD;AAED;;;;;;GAMG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,0FAA0F;AAC1F,MAAM,UAAU,uBAAuB,CAAI,KAAQ,EAAK;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,2FAAmD;IACnD,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAE,IAAU,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAO,CAAC;AAAA,CAC9E","sourcesContent":["/**\n * Shared internal contract and snapshot helpers for the agent-session\n * submodules (agent-session-bash.ts, agent-session-compaction.ts,\n * agent-session-context.ts, agent-session-lifecycle.ts, agent-session-loop.ts,\n * agent-session-retry.ts, agent-session-tools.ts, agent-session-model.ts;\n * agent-session-runtime.ts consumes the class directly).\n *\n * `AgentSession` satisfies {@link AgentSessionInternals} structurally through a\n * single internal cast; members mirror the private state and helpers that moved\n * into the submodules. Same-name delegates stay on the class so call sites,\n * dynamic dispatch, and test spies keep working unchanged.\n */\n\nimport type {\n\tAgent,\n\tAgentContext,\n\tAgentEvent,\n\tAgentLoopTurnUpdate,\n\tAgentMessage,\n\tAgentTool,\n\tPrepareNextTurnContext,\n\tThinkingLevel,\n} from \"@agent-forge/agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tModel,\n\tTextContent,\n\tToolResultMessage,\n} from \"@agent-forge/ai/compat\";\nimport type {\n\tAgentSessionEvent,\n\tModelCycleResult,\n\tModelMutationOptions,\n\tSessionStats,\n\tTurnAbortReason,\n} from \"./agent-session.ts\";\nimport type { CompactionCancelledResult } from \"./agent-session-compaction.ts\";\nimport type { LoopExecutor } from \"./agent-session-loop-runner.ts\";\nimport type { ForkableUserMessage } from \"./agent-session-projection.ts\";\nimport type { BashResult } from \"./bash-executor.ts\";\nimport type { CompactionResult } from \"./compaction/index.ts\";\nimport type { CapabilityPluginHandle, CapabilityRuntime, ContextOperationOptions } from \"./extensions/index.ts\";\nimport type { ModelStreamEventDataV1 } from \"./extensions/lifecycle-catalog.ts\";\nimport type { ContextUsage, ExecutionFactsV1 } from \"./extensions/public-api.ts\";\nimport type { HostLogger } from \"./logger.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceLoader } from \"./resource-loader.ts\";\nimport type { BranchSummaryEntry, SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.ts\";\nimport type { BashOperations } from \"./tools/bash.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tools/tool-definition.ts\";\n\n/** Registry entry for one tool definition with its source metadata. */\nexport interface ToolDefinitionEntry {\n\tdefinition: ToolDefinition;\n\tsourceInfo: SourceInfo;\n}\n\n/**\n * A session operation was cancelled by user intent (abort, reload barrier) — a\n * normal outcome, never a failure. Host boundaries resolve with structured\n * cancelled results instead of surfacing this as an error.\n */\nexport class SessionCancelledError extends Error {\n\treadonly reason: \"reload\" | \"signal\";\n\n\tconstructor(reason: SessionCancelledError[\"reason\"]) {\n\t\tsuper(`Session operation cancelled: ${reason}`);\n\t\tthis.name = \"SessionCancelledError\";\n\t\tthis.reason = reason;\n\t}\n}\n\n/**\n * Deep-clone a session value and freeze the clone so lifecycle payloads cannot\n * be mutated in place. The implementation lives on the public extension face\n * (`./extensions/public-api.ts`) so first-party and third-party plugins share\n * the same payload-projection contract; re-exported here for the host-internal\n * session submodules.\n */\nexport { detachedSessionSnapshot } from \"./extensions/public-api.ts\";\n\n/** JSON-safe clone for lifecycle payloads that must survive structured clone failures. */\nexport function jsonSafeSessionSnapshot<T>(value: T): T {\n\tconst serialized = JSON.stringify(value);\n\t// v8 ignore next -- 对象消息序列化永远返回字符串,undefined 分支不可达\n\treturn serialized === undefined ? (null as T) : (JSON.parse(serialized) as T);\n}\n\nexport interface AgentSessionInternals {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly _modelRuntime: ModelRuntime;\n\treadonly model: Model<Api> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly sessionId: string;\n\treadonly isStreaming: boolean;\n\t/** Idle gate for public context operations (compile-time private getter on AgentSession). */\n\treadonly isIdle: boolean;\n\n\t// Internal session state (compile-time private on AgentSession)\n\t_compactionQueue: Promise<void>;\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t/** 已完成的溢出裁剪级数(0 = 未裁剪);与 `_overflowRecoveryAttempted` 同点位复位。 */\n\t_overflowTrimStage: number;\n\t/**\n\t * microcompact 冷却(按模型请求计数,0 = 不冷却):relief 落地时置满,\n\t * 每次 assistant message_end 减 1(下限 0);冷却期内阈值 decide 以\n\t * `microcompactEnabled: false` 关闭便宜缓解(背景注释见 agent-session.ts)。\n\t */\n\t_microcompactCooldown: number;\n\t_activeCompactionPromise: Promise<unknown> | undefined;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_branchSummaryPromise: Promise<unknown> | undefined;\n\t_resolveBranchSummaryPromise: (() => void) | undefined;\n\t_reloadInProgress: boolean;\n\t_policyDecisionAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_pendingRetryDecision:\n\t\t| { message: AssistantMessage; decision: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>> }\n\t\t| undefined;\n\t_isAgentRunActive: boolean;\n\t_currentRunAborted: boolean;\n\t_lastAbortReason: TurnAbortReason | undefined;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\n\t// Lifecycle dispatch state (compile-time private on AgentSession)\n\treadonly _modelStreamState: { streamId: string; sequence: number } | undefined;\n\t/** Correlation id for the active prompt run's lifecycle dispatches; written by the loop-runner via this facade. */\n\t_turnCorrelationId: string | undefined;\n\t_turnCorrelationCounter: number;\n\t/**\n\t * Host-process logger seam (会话轨迹第 2 期,设计 §5.2): one-line process log\n\t * beside lifecycle dispatches that report genuine failures (compaction\n\t * failed). Undefined when no hostLogger was configured; call sites treat it\n\t * as a no-op.\n\t */\n\treadonly _hostLogger?: HostLogger;\n\n\t// Bash execution state (compile-time private on AgentSession)\n\treadonly _bashAbortControllers: Set<AbortController>;\n\treadonly _activeBashPromises: Set<Promise<unknown>>;\n\t_bashEpoch: number;\n\t_pendingBashMessages: BashExecutionMessage[];\n\treadonly isDisposed: boolean;\n\n\t_capabilityRuntime: CapabilityRuntime | undefined;\n\t_compactionPolicyName: string;\n\t_overflowPolicyName: string;\n\t_branchSummaryPolicyName: string;\n\t_retryPolicyName: string;\n\t_runLoopStrategyName: string;\n\t/** Internal loop-executor seam (D-043 G3): set to replace the default prompt/continue drive. No public config; distinct from `_runLoopStrategyName` (a per-continuation veto policy). */\n\t_loopExecutor: LoopExecutor | undefined;\n\n\t// Helpers that remain on AgentSession\n\t_emit(event: AgentSessionEvent): void;\n\t_resolveIdleWaitIfIdle(): void;\n\t_flushPendingCustomMessages(): void;\n\t_emitAgentSettled(): Promise<void>;\n\t_observeLifecycleDeliveryError(error: unknown, extensionPath: string, event: string): void;\n\tabort(): Promise<void>;\n\t_abortInternal(): Promise<void>;\n\n\t// Context-transition state and delegates forwarding to agent-session-context.ts\n\t/** Generation fence for context projections that may outlive a runtime replacement. */\n\t_contextEpoch: number;\n\t_contextTransitionAbortController: AbortController;\n\t/** Serializes context transitions and lets reload/dispose drain them before teardown. */\n\t_activeContextTransition: Promise<unknown> | undefined;\n\t/** Monotonic revision for the public context snapshot/commit facade. */\n\t_contextRevision: number;\n\t/** Serializes public context commits so expectedRevision is a real CAS fence. */\n\t_contextCommitQueue: Promise<void>;\n\t/** Configured external context strategy name, written only by the constructor. */\n\treadonly _contextStrategyName: string | undefined;\n\t_requireContextStrategy(): { runtime: CapabilityRuntime; name: string };\n\t_requireIdleContextOperation(operation: string): void;\n\t_beginContextTransitionFence(): void;\n\t_isContextTransitionCurrent(epoch: number, allowReload: boolean): boolean;\n\t_assertContextTransitionCurrent(epoch: number, allowReload: boolean): void;\n\t_enqueueContextTransition<T>(\n\t\toperation: (epoch: number, signal: AbortSignal) => Promise<T>,\n\t\toptions?: { signal?: AbortSignal; allowReload?: boolean },\n\t): Promise<T>;\n\t_copyContextMessages(value: unknown, strategyName: string, direction: \"input\" | \"result\"): AgentMessage[];\n\t_applyContextTransition(\n\t\tmessages: AgentMessage[],\n\t\treason?: ContextOperationOptions[\"reason\"],\n\t\tsignal?: AbortSignal,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\t_restoreContextTransition(\n\t\tsnapshot: unknown,\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\tsnapshotContext(): Promise<unknown>;\n\trestoreContext(snapshot: unknown): Promise<AgentMessage[]>;\n\treplaceContext(context: AgentMessage[]): Promise<AgentMessage[]>;\n\n\t// Model-scope state and delegates forwarding to agent-session-model.ts\n\t_scopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\t/** Public scoped-models getter (Legacy 迁移 R1): submodules read via this instead of the private field. */\n\treadonly scopedModels: ReadonlyArray<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\tsetModel(model: Model<Api>, options?: ModelMutationOptions): Promise<void>;\n\tsetThinkingLevel(level: ThinkingLevel, options?: ModelMutationOptions): void;\n\t_emitModelSelect(\n\t\tnextModel: Model<Api>,\n\t\tpreviousModel: Model<Api> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\t_addPersistedDefaultToNonEmptyScope(model: Model<Api>): void;\n\t_getThinkingLevelForModelSwitch(targetModel?: Model<Api>, explicitLevel?: ThinkingLevel): ThinkingLevel;\n\t_cycleScopedModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\t_cycleAvailableModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\n\t// Run-loop wiring state and delegates forwarding to agent-session-loop.ts\n\t/** The agent's construction-time prepare adapter, captured once by the loop wiring install. */\n\t_initialPrepareNextTurn:\n\t\t| ((\n\t\t\t\tcontext: PrepareNextTurnContext,\n\t\t\t\tsignal?: AbortSignal,\n\t\t ) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined)\n\t\t| undefined;\n\n\t// Delegates forwarding to the submodule functions\n\t_compactBeforeNextAssistantResponse(context: AgentContext, signal?: AbortSignal): Promise<AgentContext>;\n\t_enqueueCompaction<T>(operation: () => Promise<T>): Promise<T>;\n\t_compactInternal(customInstructions?: string): Promise<CompactionResult>;\n\t_checkCompaction(\n\t\tassistantMessage: AssistantMessage,\n\t\tskipAbortedCheck?: boolean,\n\t\tsignal?: AbortSignal,\n\t): Promise<boolean>;\n\t_runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean>;\n\t_willRetryAfterAgentEnd(event: Extract<AgentEvent, { type: \"agent_end\" }>, signal?: AbortSignal): Promise<boolean>;\n\t_isRetryableError(message: AssistantMessage, execution?: ExecutionFactsV1, signal?: AbortSignal): Promise<boolean>;\n\t_prepareRetry(\n\t\tmessage: AssistantMessage,\n\t\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n\t): Promise<boolean>;\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>;\n\n\t// Lifecycle delegates forwarding to agent-session-lifecycle.ts\n\t_dispatchModelStreamLifecycle(\n\t\tmessage: AgentMessage,\n\t\teventName: ModelStreamEventDataV1[\"event\"],\n\t\tphase: ModelStreamEventDataV1[\"phase\"],\n\t): Promise<void>;\n\t_dispatchContextReplacedLifecycle(\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\tstrategyName?: string,\n\t): Promise<void>;\n\t_dispatchModelResponseLifecycle(message: AssistantMessage, entryId: string): Promise<void>;\n\t_dispatchToolCommitLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchToolResultLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchSessionReloadLifecycle(generation: number): Promise<void>;\n\n\t// Bash delegates forwarding to agent-session-bash.ts\n\tcaptureBashEpoch(): number;\n\tisBashEpochCurrent(epoch: number): boolean;\n\temitUserBash(excludeFromContext: boolean): void;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; id?: string; operations?: BashOperations },\n\t): Promise<BashResult>;\n\trecordBashResult(\n\t\tcommand: string,\n\t\tresult: BashResult,\n\t\toptions?: { excludeFromContext?: boolean; epoch?: number },\n\t): void;\n\tabortBash(): void;\n\t_flushPendingBashMessages(): void;\n\n\t// Tool registry state (compile-time private on AgentSession)\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_deferredToolPluginIds: ReadonlySet<string>;\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_baseToolSources: Map<string, SourceInfo>;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_allowedToolNames: Set<string> | undefined;\n\t_excludedToolNames: Set<string> | undefined;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_systemPromptOverride: string | undefined;\n\t_orientationPrompt: string | undefined;\n\t_preferenceCard: string | undefined;\n\t_capabilitySkillsFilter: ((skills: Skill[]) => Skill[]) | undefined;\n\t_bootstrapSkillsHandle: CapabilityPluginHandle | undefined;\n\t_cwd: string;\n\n\tgetActiveToolNames(): string[];\n\n\t// Tool registry delegates forwarding to agent-session-tools.ts\n\tgetAllTools(): ToolInfo[];\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tsetActiveToolsByName(toolNames: string[]): void;\n\t_rebuildSystemPrompt(toolNames: string[]): string;\n\t_refreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void;\n\t_syncCapabilityTools(): void;\n\t_getCapabilitySkills(): Skill[];\n\t_getAvailableSkills(): Skill[];\n\t_validateCapabilitySkillConflicts(): void;\n\t_refreshBootstrapSkills(): Promise<void>;\n\n\t// Read-only projections and delegates forwarding to agent-session-projection.ts\n\treadonly sessionFile: string | undefined;\n\treadonly messages: AgentMessage[];\n\treadonly systemPrompt: string;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly pendingMessageCount: number;\n\tgetSessionStats(): SessionStats;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetUserMessagesForForking(): ForkableUserMessage[];\n\texportToHtml(outputPath?: string, options?: { themeName?: string }): Promise<string>;\n\texportToJsonl(outputPath?: string): string;\n\tgetLastAssistantText(): string | undefined;\n\n\t// Resource-discovery delegates forwarding to agent-session-extensions.ts\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\tbuildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}>;\n\tgetExtensionSourceLabel(extensionPath: string): string;\n\n\t// Prompt/queue surface consumed by the extension binding closures\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tcompact(customInstructions?: string): Promise<CompactionResult | CompactionCancelledResult>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-internal.js","sourceRoot":"","sources":["../../src/core/agent-session-internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsDH;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,MAAM,CAAsB;IAErC,YAAY,MAAuC,EAAE;QACpD,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAAA,CACrB;CACD;AAED;;;;;;GAMG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,0FAA0F;AAC1F,MAAM,UAAU,uBAAuB,CAAI,KAAQ,EAAK;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,2FAAmD;IACnD,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAE,IAAU,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAO,CAAC;AAAA,CAC9E","sourcesContent":["/**\n * Shared internal contract and snapshot helpers for the agent-session\n * submodules (agent-session-bash.ts, agent-session-compaction.ts,\n * agent-session-context.ts, agent-session-lifecycle.ts, agent-session-loop.ts,\n * agent-session-retry.ts, agent-session-tools.ts, agent-session-model.ts;\n * agent-session-runtime.ts consumes the class directly).\n *\n * `AgentSession` satisfies {@link AgentSessionInternals} structurally through a\n * single internal cast; members mirror the private state and helpers that moved\n * into the submodules. Same-name delegates stay on the class so call sites,\n * dynamic dispatch, and test spies keep working unchanged.\n */\n\nimport type {\n\tAgent,\n\tAgentContext,\n\tAgentEvent,\n\tAgentLoopTurnUpdate,\n\tAgentMessage,\n\tAgentTool,\n\tPrepareNextTurnContext,\n\tThinkingLevel,\n} from \"@agent-forge/agent-core\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tModel,\n\tTextContent,\n\tToolResultMessage,\n} from \"@agent-forge/ai/compat\";\nimport type {\n\tAgentSessionEvent,\n\tModelCycleResult,\n\tModelMutationOptions,\n\tSessionStats,\n\tTurnAbortReason,\n} from \"./agent-session.ts\";\nimport type { CompactionCancelledResult } from \"./agent-session-compaction.ts\";\nimport type { LoopExecutor } from \"./agent-session-loop-runner.ts\";\nimport type { ForkableUserMessage } from \"./agent-session-projection.ts\";\nimport type { BashResult } from \"./bash-executor.ts\";\nimport type { CompactionResult } from \"./compaction/index.ts\";\nimport type { CapabilityPluginHandle, CapabilityRuntime, ContextOperationOptions } from \"./extensions/index.ts\";\nimport type { ModelStreamEventDataV1 } from \"./extensions/lifecycle-catalog.ts\";\nimport type { ContextUsage, ExecutionFactsV1 } from \"./extensions/public-api.ts\";\nimport type { HostLogger } from \"./logger.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport type { ResourceLoader } from \"./resource-loader.ts\";\nimport type { BranchSummaryEntry, SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.ts\";\nimport type { BashOperations } from \"./tools/bash.ts\";\nimport type { ToolDefinition, ToolInfo } from \"./tools/tool-definition.ts\";\n\n/** Registry entry for one tool definition with its source metadata. */\nexport interface ToolDefinitionEntry {\n\tdefinition: ToolDefinition;\n\tsourceInfo: SourceInfo;\n}\n\n/**\n * A session operation was cancelled by user intent (abort, reload barrier) — a\n * normal outcome, never a failure. Host boundaries resolve with structured\n * cancelled results instead of surfacing this as an error.\n */\nexport class SessionCancelledError extends Error {\n\treadonly reason: \"reload\" | \"signal\";\n\n\tconstructor(reason: SessionCancelledError[\"reason\"]) {\n\t\tsuper(`Session operation cancelled: ${reason}`);\n\t\tthis.name = \"SessionCancelledError\";\n\t\tthis.reason = reason;\n\t}\n}\n\n/**\n * Deep-clone a session value and freeze the clone so lifecycle payloads cannot\n * be mutated in place. The implementation lives on the public extension face\n * (`./extensions/public-api.ts`) so first-party and third-party plugins share\n * the same payload-projection contract; re-exported here for the host-internal\n * session submodules.\n */\nexport { detachedSessionSnapshot } from \"./extensions/public-api.ts\";\n\n/** JSON-safe clone for lifecycle payloads that must survive structured clone failures. */\nexport function jsonSafeSessionSnapshot<T>(value: T): T {\n\tconst serialized = JSON.stringify(value);\n\t// v8 ignore next -- 对象消息序列化永远返回字符串,undefined 分支不可达\n\treturn serialized === undefined ? (null as T) : (JSON.parse(serialized) as T);\n}\n\nexport interface AgentSessionInternals {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly _modelRuntime: ModelRuntime;\n\treadonly model: Model<Api> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly sessionId: string;\n\treadonly isStreaming: boolean;\n\t/** Idle gate for public context operations (compile-time private getter on AgentSession). */\n\treadonly isIdle: boolean;\n\n\t// Internal session state (compile-time private on AgentSession)\n\t_compactionQueue: Promise<void>;\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t/** 已完成的溢出裁剪级数(0 = 未裁剪);与 `_overflowRecoveryAttempted` 同点位复位。 */\n\t_overflowTrimStage: number;\n\t_activeCompactionPromise: Promise<unknown> | undefined;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_branchSummaryPromise: Promise<unknown> | undefined;\n\t_resolveBranchSummaryPromise: (() => void) | undefined;\n\t_reloadInProgress: boolean;\n\t_policyDecisionAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_pendingRetryDecision:\n\t\t| { message: AssistantMessage; decision: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>> }\n\t\t| undefined;\n\t_isAgentRunActive: boolean;\n\t_currentRunAborted: boolean;\n\t_lastAbortReason: TurnAbortReason | undefined;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\n\t// Lifecycle dispatch state (compile-time private on AgentSession)\n\treadonly _modelStreamState: { streamId: string; sequence: number } | undefined;\n\t/** Correlation id for the active prompt run's lifecycle dispatches; written by the loop-runner via this facade. */\n\t_turnCorrelationId: string | undefined;\n\t_turnCorrelationCounter: number;\n\t/**\n\t * Host-process logger seam (会话轨迹第 2 期,设计 §5.2): one-line process log\n\t * beside lifecycle dispatches that report genuine failures (compaction\n\t * failed). Undefined when no hostLogger was configured; call sites treat it\n\t * as a no-op.\n\t */\n\treadonly _hostLogger?: HostLogger;\n\n\t// Bash execution state (compile-time private on AgentSession)\n\treadonly _bashAbortControllers: Set<AbortController>;\n\treadonly _activeBashPromises: Set<Promise<unknown>>;\n\t_bashEpoch: number;\n\t_pendingBashMessages: BashExecutionMessage[];\n\treadonly isDisposed: boolean;\n\n\t_capabilityRuntime: CapabilityRuntime | undefined;\n\t_compactionPolicyName: string;\n\t_overflowPolicyName: string;\n\t_branchSummaryPolicyName: string;\n\t_retryPolicyName: string;\n\t_runLoopStrategyName: string;\n\t/** Internal loop-executor seam (D-043 G3): set to replace the default prompt/continue drive. No public config; distinct from `_runLoopStrategyName` (a per-continuation veto policy). */\n\t_loopExecutor: LoopExecutor | undefined;\n\n\t// Helpers that remain on AgentSession\n\t_emit(event: AgentSessionEvent): void;\n\t_resolveIdleWaitIfIdle(): void;\n\t_flushPendingCustomMessages(): void;\n\t_emitAgentSettled(): Promise<void>;\n\t_observeLifecycleDeliveryError(error: unknown, extensionPath: string, event: string): void;\n\tabort(): Promise<void>;\n\t_abortInternal(): Promise<void>;\n\n\t// Context-transition state and delegates forwarding to agent-session-context.ts\n\t/** Generation fence for context projections that may outlive a runtime replacement. */\n\t_contextEpoch: number;\n\t_contextTransitionAbortController: AbortController;\n\t/** Serializes context transitions and lets reload/dispose drain them before teardown. */\n\t_activeContextTransition: Promise<unknown> | undefined;\n\t/** Monotonic revision for the public context snapshot/commit facade. */\n\t_contextRevision: number;\n\t/** Serializes public context commits so expectedRevision is a real CAS fence. */\n\t_contextCommitQueue: Promise<void>;\n\t/** Configured external context strategy name, written only by the constructor. */\n\treadonly _contextStrategyName: string | undefined;\n\t_requireContextStrategy(): { runtime: CapabilityRuntime; name: string };\n\t_requireIdleContextOperation(operation: string): void;\n\t_beginContextTransitionFence(): void;\n\t_isContextTransitionCurrent(epoch: number, allowReload: boolean): boolean;\n\t_assertContextTransitionCurrent(epoch: number, allowReload: boolean): void;\n\t_enqueueContextTransition<T>(\n\t\toperation: (epoch: number, signal: AbortSignal) => Promise<T>,\n\t\toptions?: { signal?: AbortSignal; allowReload?: boolean },\n\t): Promise<T>;\n\t_copyContextMessages(value: unknown, strategyName: string, direction: \"input\" | \"result\"): AgentMessage[];\n\t_applyContextTransition(\n\t\tmessages: AgentMessage[],\n\t\treason?: ContextOperationOptions[\"reason\"],\n\t\tsignal?: AbortSignal,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\t_restoreContextTransition(\n\t\tsnapshot: unknown,\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\toptions?: { allowReload?: boolean },\n\t): Promise<AgentMessage[]>;\n\tsnapshotContext(): Promise<unknown>;\n\trestoreContext(snapshot: unknown): Promise<AgentMessage[]>;\n\treplaceContext(context: AgentMessage[]): Promise<AgentMessage[]>;\n\n\t// Model-scope state and delegates forwarding to agent-session-model.ts\n\t_scopedModels: Array<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\t/** Public scoped-models getter (Legacy 迁移 R1): submodules read via this instead of the private field. */\n\treadonly scopedModels: ReadonlyArray<{ model: Model<Api>; thinkingLevel?: ThinkingLevel }>;\n\tsetModel(model: Model<Api>, options?: ModelMutationOptions): Promise<void>;\n\tsetThinkingLevel(level: ThinkingLevel, options?: ModelMutationOptions): void;\n\t_emitModelSelect(\n\t\tnextModel: Model<Api>,\n\t\tpreviousModel: Model<Api> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\t_addPersistedDefaultToNonEmptyScope(model: Model<Api>): void;\n\t_getThinkingLevelForModelSwitch(targetModel?: Model<Api>, explicitLevel?: ThinkingLevel): ThinkingLevel;\n\t_cycleScopedModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\t_cycleAvailableModel(\n\t\tdirection: \"forward\" | \"backward\",\n\t\toptions: ModelMutationOptions,\n\t): Promise<ModelCycleResult | undefined>;\n\n\t// Run-loop wiring state and delegates forwarding to agent-session-loop.ts\n\t/** The agent's construction-time prepare adapter, captured once by the loop wiring install. */\n\t_initialPrepareNextTurn:\n\t\t| ((\n\t\t\t\tcontext: PrepareNextTurnContext,\n\t\t\t\tsignal?: AbortSignal,\n\t\t ) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined)\n\t\t| undefined;\n\n\t// Delegates forwarding to the submodule functions\n\t_compactBeforeNextAssistantResponse(context: AgentContext, signal?: AbortSignal): Promise<AgentContext>;\n\t_enqueueCompaction<T>(operation: () => Promise<T>): Promise<T>;\n\t_compactInternal(customInstructions?: string): Promise<CompactionResult>;\n\t_checkCompaction(\n\t\tassistantMessage: AssistantMessage,\n\t\tskipAbortedCheck?: boolean,\n\t\tsignal?: AbortSignal,\n\t): Promise<boolean>;\n\t_runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean>;\n\t_willRetryAfterAgentEnd(event: Extract<AgentEvent, { type: \"agent_end\" }>, signal?: AbortSignal): Promise<boolean>;\n\t_isRetryableError(message: AssistantMessage, execution?: ExecutionFactsV1, signal?: AbortSignal): Promise<boolean>;\n\t_prepareRetry(\n\t\tmessage: AssistantMessage,\n\t\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n\t): Promise<boolean>;\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>;\n\n\t// Lifecycle delegates forwarding to agent-session-lifecycle.ts\n\t_dispatchModelStreamLifecycle(\n\t\tmessage: AgentMessage,\n\t\teventName: ModelStreamEventDataV1[\"event\"],\n\t\tphase: ModelStreamEventDataV1[\"phase\"],\n\t): Promise<void>;\n\t_dispatchContextReplacedLifecycle(\n\t\treason: NonNullable<ContextOperationOptions[\"reason\"]>,\n\t\tstrategyName?: string,\n\t): Promise<void>;\n\t_dispatchModelResponseLifecycle(message: AssistantMessage, entryId: string): Promise<void>;\n\t_dispatchToolCommitLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchToolResultLifecycle(message: ToolResultMessage, entryId: string): Promise<void>;\n\t_dispatchSessionReloadLifecycle(generation: number): Promise<void>;\n\n\t// Bash delegates forwarding to agent-session-bash.ts\n\tcaptureBashEpoch(): number;\n\tisBashEpochCurrent(epoch: number): boolean;\n\temitUserBash(excludeFromContext: boolean): void;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; id?: string; operations?: BashOperations },\n\t): Promise<BashResult>;\n\trecordBashResult(\n\t\tcommand: string,\n\t\tresult: BashResult,\n\t\toptions?: { excludeFromContext?: boolean; epoch?: number },\n\t): void;\n\tabortBash(): void;\n\t_flushPendingBashMessages(): void;\n\n\t// Tool registry state (compile-time private on AgentSession)\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_deferredToolPluginIds: ReadonlySet<string>;\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_baseToolSources: Map<string, SourceInfo>;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_allowedToolNames: Set<string> | undefined;\n\t_excludedToolNames: Set<string> | undefined;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_systemPromptOverride: string | undefined;\n\t_orientationPrompt: string | undefined;\n\t_preferenceCard: string | undefined;\n\t_capabilitySkillsFilter: ((skills: Skill[]) => Skill[]) | undefined;\n\t_bootstrapSkillsHandle: CapabilityPluginHandle | undefined;\n\t_cwd: string;\n\n\tgetActiveToolNames(): string[];\n\n\t// Tool registry delegates forwarding to agent-session-tools.ts\n\tgetAllTools(): ToolInfo[];\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tsetActiveToolsByName(toolNames: string[]): void;\n\t_rebuildSystemPrompt(toolNames: string[]): string;\n\t_refreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void;\n\t_syncCapabilityTools(): void;\n\t_getCapabilitySkills(): Skill[];\n\t_getAvailableSkills(): Skill[];\n\t_validateCapabilitySkillConflicts(): void;\n\t_refreshBootstrapSkills(): Promise<void>;\n\n\t// Read-only projections and delegates forwarding to agent-session-projection.ts\n\treadonly sessionFile: string | undefined;\n\treadonly messages: AgentMessage[];\n\treadonly systemPrompt: string;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly pendingMessageCount: number;\n\tgetSessionStats(): SessionStats;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetUserMessagesForForking(): ForkableUserMessage[];\n\texportToHtml(outputPath?: string, options?: { themeName?: string }): Promise<string>;\n\texportToJsonl(outputPath?: string): string;\n\tgetLastAssistantText(): string | undefined;\n\n\t// Resource-discovery delegates forwarding to agent-session-extensions.ts\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\tbuildExtensionResourcePaths(entries: Array<{ path: string; extensionPath: string }>): Array<{\n\t\tpath: string;\n\t\tmetadata: { source: string; scope: \"temporary\"; origin: \"top-level\"; baseDir?: string };\n\t}>;\n\tgetExtensionSourceLabel(extensionPath: string): string;\n\n\t// Prompt/queue surface consumed by the extension binding closures\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n\tsetSessionName(name: string): void;\n\tcompact(customInstructions?: string): Promise<CompactionResult | CompactionCancelledResult>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-retry.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EACjD,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,WAAW,CAChC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"agent-session-retry.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,EACjD,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,WAAW,CAChC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,WAAW,gEAgBpB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,gBAAgB,EACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,GACzE,OAAO,CAAC,OAAO,CAAC,CA0DlB","sourcesContent":["/**\n * Auto-retry and overflow classification for AgentSession.\n *\n * Extracted from `agent-session.ts`. Every function here operates on the\n * internal session facade ({@link AgentSessionInternals}); `AgentSession`\n * keeps same-name private delegates so call sites, dynamic dispatch, and test\n * spies keep working unchanged. Method-to-method calls go through the session\n * parameter (not direct function calls) to preserve that dispatch.\n */\n\nimport type { AgentEvent } from \"@agent-forge/agent-core\";\nimport { retryDelayMs } from \"@agent-forge/ai\";\nimport type { AssistantMessage } from \"@agent-forge/ai/compat\";\nimport { sleep } from \"../utils/sleep.ts\";\nimport { decideOverflow, executionFacts } from \"./agent-session-compaction.ts\";\nimport type { AgentSessionInternals } from \"./agent-session-internal.ts\";\nimport { dispatchAutoRetryLifecycle } from \"./agent-session-lifecycle.ts\";\nimport type { CapabilityRuntime, ExecutionFactsV1 } from \"./extensions/index.ts\";\nimport { t } from \"./i18n/index.ts\";\n\nexport async function willRetryAfterAgentEnd(\n\tsession: AgentSessionInternals,\n\tevent: Extract<AgentEvent, { type: \"agent_end\" }>,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\tif (signal?.aborted) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\tconst settings = session.settingsManager.getRetrySettings();\n\tif (session._retryAttempt >= settings.maxRetries) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\n\tfor (let i = event.messages.length - 1; i >= 0; i--) {\n\t\tconst message = event.messages[i];\n\t\tif (message.role === \"assistant\") {\n\t\t\tconst assistantMessage = message as AssistantMessage;\n\t\t\ttry {\n\t\t\t\tconst decision = await decideRetry(session, assistantMessage, undefined, signal);\n\t\t\t\tsession._pendingRetryDecision = { message: assistantMessage, decision };\n\t\t\t\treturn decision.retry;\n\t\t\t} catch (error) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tsession._pendingRetryDecision = undefined;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tsession._pendingRetryDecision = undefined;\n\treturn false;\n}\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\nexport async function isRetryableError(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\t// Context overflow is handled by compaction, not retry.\n\tif ((await decideOverflow(session, message, execution, signal)).contextOverflow) return false;\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.classifyRetry(session._retryPolicyName, {\n\t\tmessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\nexport async function decideRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n) {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.decideRetry(session._retryPolicyName, {\n\t\tretryable: await session._isRetryableError(message, execution, signal),\n\t\tattempt: session._retryAttempt + 1,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tbaseDelayMs: settings.baseDelayMs,\n\t\terrorMessage: message.errorMessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\n/**\n * Prepare a retryable error for continuation with exponential backoff.\n * @returns true if the caller should continue the agent, false otherwise\n */\nexport async function prepareRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n): Promise<boolean> {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst decision = precomputedDecision ?? (await decideRetry(session, message));\n\tif (!decision.retry) return false;\n\tsession._retryAttempt++;\n\t// ±10% jitter on the exponential backoff (borrowed from codex's backoff):\n\t// prevents synchronized retry storms when many sessions hit the same outage.\n\t// The effective delay is capped by maxAgentDelayMs before jitter (retryDelayMs\n\t// already caps the exponential path; the min() also clamps policy-provided\n\t// delayMs), so a capped delay can overshoot the cap by at most the jitter band.\n\tconst baseDelayMs = Math.min(\n\t\tdecision.delayMs ?? retryDelayMs(settings, session._retryAttempt),\n\t\tsettings.maxAgentDelayMs,\n\t);\n\tconst delayMs = Math.round(baseDelayMs * (0.9 + Math.random() * 0.2));\n\t// Install the controller before announcing the retry so listeners can cancel\n\t// the pending delay from the auto_retry_start event itself.\n\tsession._retryAbortController = new AbortController();\n\n\tsession._emit({\n\t\ttype: \"auto_retry_start\",\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\tawait dispatchAutoRetryLifecycle(session, {\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\n\t// Remove error message from agent state (keep in session for history)\n\tconst messages = session.agent.state.messages;\n\tif (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n\t\tawait session._applyContextTransition(messages.slice(0, -1), \"retry\");\n\t}\n\n\t// Wait with exponential backoff (abortable)\n\ttry {\n\t\tawait sleep(delayMs, session._retryAbortController.signal);\n\t} catch {\n\t\t// Aborted during sleep - emit end event so UI can clean up\n\t\tconst attempt = session._retryAttempt;\n\t\tsession._retryAttempt = 0;\n\t\tsession._emit({\n\t\t\ttype: \"auto_retry_end\",\n\t\t\tsuccess: false,\n\t\t\tattempt,\n\t\t\tfinalError: \"Retry cancelled\",\n\t\t});\n\t\treturn false;\n\t} finally {\n\t\tsession._retryAbortController = undefined;\n\t}\n\n\treturn true;\n}\n"]}
|
|
@@ -70,7 +70,6 @@ export async function decideRetry(session, message, execution, signal) {
|
|
|
70
70
|
throw new Error(t("Capability runtime is not available"));
|
|
71
71
|
return runtime.decideRetry(session._retryPolicyName, {
|
|
72
72
|
retryable: await session._isRetryableError(message, execution, signal),
|
|
73
|
-
enabled: settings.enabled,
|
|
74
73
|
attempt: session._retryAttempt + 1,
|
|
75
74
|
maxAttempts: settings.maxRetries,
|
|
76
75
|
baseDelayMs: settings.baseDelayMs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-retry.js","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-retry and overflow classification for AgentSession.\n *\n * Extracted from `agent-session.ts`. Every function here operates on the\n * internal session facade ({@link AgentSessionInternals}); `AgentSession`\n * keeps same-name private delegates so call sites, dynamic dispatch, and test\n * spies keep working unchanged. Method-to-method calls go through the session\n * parameter (not direct function calls) to preserve that dispatch.\n */\n\nimport type { AgentEvent } from \"@agent-forge/agent-core\";\nimport { retryDelayMs } from \"@agent-forge/ai\";\nimport type { AssistantMessage } from \"@agent-forge/ai/compat\";\nimport { sleep } from \"../utils/sleep.ts\";\nimport { decideOverflow, executionFacts } from \"./agent-session-compaction.ts\";\nimport type { AgentSessionInternals } from \"./agent-session-internal.ts\";\nimport { dispatchAutoRetryLifecycle } from \"./agent-session-lifecycle.ts\";\nimport type { CapabilityRuntime, ExecutionFactsV1 } from \"./extensions/index.ts\";\nimport { t } from \"./i18n/index.ts\";\n\nexport async function willRetryAfterAgentEnd(\n\tsession: AgentSessionInternals,\n\tevent: Extract<AgentEvent, { type: \"agent_end\" }>,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\tif (signal?.aborted) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\tconst settings = session.settingsManager.getRetrySettings();\n\tif (session._retryAttempt >= settings.maxRetries) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\n\tfor (let i = event.messages.length - 1; i >= 0; i--) {\n\t\tconst message = event.messages[i];\n\t\tif (message.role === \"assistant\") {\n\t\t\tconst assistantMessage = message as AssistantMessage;\n\t\t\ttry {\n\t\t\t\tconst decision = await decideRetry(session, assistantMessage, undefined, signal);\n\t\t\t\tsession._pendingRetryDecision = { message: assistantMessage, decision };\n\t\t\t\treturn decision.retry;\n\t\t\t} catch (error) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tsession._pendingRetryDecision = undefined;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tsession._pendingRetryDecision = undefined;\n\treturn false;\n}\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\nexport async function isRetryableError(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\t// Context overflow is handled by compaction, not retry.\n\tif ((await decideOverflow(session, message, execution, signal)).contextOverflow) return false;\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.classifyRetry(session._retryPolicyName, {\n\t\tmessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\nexport async function decideRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n) {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.decideRetry(session._retryPolicyName, {\n\t\tretryable: await session._isRetryableError(message, execution, signal),\n\t\tenabled: settings.enabled,\n\t\tattempt: session._retryAttempt + 1,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tbaseDelayMs: settings.baseDelayMs,\n\t\terrorMessage: message.errorMessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\n/**\n * Prepare a retryable error for continuation with exponential backoff.\n * @returns true if the caller should continue the agent, false otherwise\n */\nexport async function prepareRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n): Promise<boolean> {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst decision = precomputedDecision ?? (await decideRetry(session, message));\n\tif (!decision.retry) return false;\n\tsession._retryAttempt++;\n\t// ±10% jitter on the exponential backoff (borrowed from codex's backoff):\n\t// prevents synchronized retry storms when many sessions hit the same outage.\n\t// The effective delay is capped by maxAgentDelayMs before jitter (retryDelayMs\n\t// already caps the exponential path; the min() also clamps policy-provided\n\t// delayMs), so a capped delay can overshoot the cap by at most the jitter band.\n\tconst baseDelayMs = Math.min(\n\t\tdecision.delayMs ?? retryDelayMs(settings, session._retryAttempt),\n\t\tsettings.maxAgentDelayMs,\n\t);\n\tconst delayMs = Math.round(baseDelayMs * (0.9 + Math.random() * 0.2));\n\t// Install the controller before announcing the retry so listeners can cancel\n\t// the pending delay from the auto_retry_start event itself.\n\tsession._retryAbortController = new AbortController();\n\n\tsession._emit({\n\t\ttype: \"auto_retry_start\",\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\tawait dispatchAutoRetryLifecycle(session, {\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\n\t// Remove error message from agent state (keep in session for history)\n\tconst messages = session.agent.state.messages;\n\tif (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n\t\tawait session._applyContextTransition(messages.slice(0, -1), \"retry\");\n\t}\n\n\t// Wait with exponential backoff (abortable)\n\ttry {\n\t\tawait sleep(delayMs, session._retryAbortController.signal);\n\t} catch {\n\t\t// Aborted during sleep - emit end event so UI can clean up\n\t\tconst attempt = session._retryAttempt;\n\t\tsession._retryAttempt = 0;\n\t\tsession._emit({\n\t\t\ttype: \"auto_retry_end\",\n\t\t\tsuccess: false,\n\t\t\tattempt,\n\t\t\tfinalError: \"Retry cancelled\",\n\t\t});\n\t\treturn false;\n\t} finally {\n\t\tsession._retryAbortController = undefined;\n\t}\n\n\treturn true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-retry.js","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-retry and overflow classification for AgentSession.\n *\n * Extracted from `agent-session.ts`. Every function here operates on the\n * internal session facade ({@link AgentSessionInternals}); `AgentSession`\n * keeps same-name private delegates so call sites, dynamic dispatch, and test\n * spies keep working unchanged. Method-to-method calls go through the session\n * parameter (not direct function calls) to preserve that dispatch.\n */\n\nimport type { AgentEvent } from \"@agent-forge/agent-core\";\nimport { retryDelayMs } from \"@agent-forge/ai\";\nimport type { AssistantMessage } from \"@agent-forge/ai/compat\";\nimport { sleep } from \"../utils/sleep.ts\";\nimport { decideOverflow, executionFacts } from \"./agent-session-compaction.ts\";\nimport type { AgentSessionInternals } from \"./agent-session-internal.ts\";\nimport { dispatchAutoRetryLifecycle } from \"./agent-session-lifecycle.ts\";\nimport type { CapabilityRuntime, ExecutionFactsV1 } from \"./extensions/index.ts\";\nimport { t } from \"./i18n/index.ts\";\n\nexport async function willRetryAfterAgentEnd(\n\tsession: AgentSessionInternals,\n\tevent: Extract<AgentEvent, { type: \"agent_end\" }>,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\tif (signal?.aborted) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\tconst settings = session.settingsManager.getRetrySettings();\n\tif (session._retryAttempt >= settings.maxRetries) {\n\t\tsession._pendingRetryDecision = undefined;\n\t\treturn false;\n\t}\n\n\tfor (let i = event.messages.length - 1; i >= 0; i--) {\n\t\tconst message = event.messages[i];\n\t\tif (message.role === \"assistant\") {\n\t\t\tconst assistantMessage = message as AssistantMessage;\n\t\t\ttry {\n\t\t\t\tconst decision = await decideRetry(session, assistantMessage, undefined, signal);\n\t\t\t\tsession._pendingRetryDecision = { message: assistantMessage, decision };\n\t\t\t\treturn decision.retry;\n\t\t\t} catch (error) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tsession._pendingRetryDecision = undefined;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tsession._pendingRetryDecision = undefined;\n\treturn false;\n}\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\nexport async function isRetryableError(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\t// Context overflow is handled by compaction, not retry.\n\tif ((await decideOverflow(session, message, execution, signal)).contextOverflow) return false;\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.classifyRetry(session._retryPolicyName, {\n\t\tmessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\nexport async function decideRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\texecution?: ExecutionFactsV1,\n\tsignal?: AbortSignal,\n) {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst runtime = session._capabilityRuntime;\n\t// v8 ignore next -- capability runtime 恒由 _buildRuntime 创建,dispose 后不再调用,运行期恒存在\n\tif (!runtime) throw new Error(t(\"Capability runtime is not available\"));\n\treturn runtime.decideRetry(session._retryPolicyName, {\n\t\tretryable: await session._isRetryableError(message, execution, signal),\n\t\tattempt: session._retryAttempt + 1,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tbaseDelayMs: settings.baseDelayMs,\n\t\terrorMessage: message.errorMessage,\n\t\tsignal,\n\t\tcontext: { version: 1, sessionId: session.sessionId, phase: \"retry\" },\n\t\texecution: execution ?? executionFacts(session, \"retry\"),\n\t});\n}\n\n/**\n * Prepare a retryable error for continuation with exponential backoff.\n * @returns true if the caller should continue the agent, false otherwise\n */\nexport async function prepareRetry(\n\tsession: AgentSessionInternals,\n\tmessage: AssistantMessage,\n\tprecomputedDecision?: Awaited<ReturnType<CapabilityRuntime[\"decideRetry\"]>>,\n): Promise<boolean> {\n\tconst settings = session.settingsManager.getRetrySettings();\n\tconst decision = precomputedDecision ?? (await decideRetry(session, message));\n\tif (!decision.retry) return false;\n\tsession._retryAttempt++;\n\t// ±10% jitter on the exponential backoff (borrowed from codex's backoff):\n\t// prevents synchronized retry storms when many sessions hit the same outage.\n\t// The effective delay is capped by maxAgentDelayMs before jitter (retryDelayMs\n\t// already caps the exponential path; the min() also clamps policy-provided\n\t// delayMs), so a capped delay can overshoot the cap by at most the jitter band.\n\tconst baseDelayMs = Math.min(\n\t\tdecision.delayMs ?? retryDelayMs(settings, session._retryAttempt),\n\t\tsettings.maxAgentDelayMs,\n\t);\n\tconst delayMs = Math.round(baseDelayMs * (0.9 + Math.random() * 0.2));\n\t// Install the controller before announcing the retry so listeners can cancel\n\t// the pending delay from the auto_retry_start event itself.\n\tsession._retryAbortController = new AbortController();\n\n\tsession._emit({\n\t\ttype: \"auto_retry_start\",\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\tawait dispatchAutoRetryLifecycle(session, {\n\t\tattempt: session._retryAttempt,\n\t\tmaxAttempts: settings.maxRetries,\n\t\tdelayMs,\n\t\terrorMessage: message.errorMessage || \"Unknown error\",\n\t});\n\n\t// Remove error message from agent state (keep in session for history)\n\tconst messages = session.agent.state.messages;\n\tif (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n\t\tawait session._applyContextTransition(messages.slice(0, -1), \"retry\");\n\t}\n\n\t// Wait with exponential backoff (abortable)\n\ttry {\n\t\tawait sleep(delayMs, session._retryAbortController.signal);\n\t} catch {\n\t\t// Aborted during sleep - emit end event so UI can clean up\n\t\tconst attempt = session._retryAttempt;\n\t\tsession._retryAttempt = 0;\n\t\tsession._emit({\n\t\t\ttype: \"auto_retry_end\",\n\t\t\tsuccess: false,\n\t\t\tattempt,\n\t\t\tfinalError: \"Retry cancelled\",\n\t\t});\n\t\treturn false;\n\t} finally {\n\t\tsession._retryAbortController = undefined;\n\t}\n\n\treturn true;\n}\n"]}
|
|
@@ -431,14 +431,6 @@ export declare class AgentSession {
|
|
|
431
431
|
private _autoCompactionAbortController;
|
|
432
432
|
private _overflowRecoveryAttempted;
|
|
433
433
|
private _overflowTrimStage;
|
|
434
|
-
/**
|
|
435
|
-
* microcompact 冷却(按模型请求计数,0 = 不冷却):relief 落地时置
|
|
436
|
-
* MICROCOMPACT_COOLDOWN_ASSISTANT_RESPONSES,此后每次 assistant message_end
|
|
437
|
-
* (无论 stopReason)减 1、下限 0;user message_start 不复位。冷却期内阈值
|
|
438
|
-
* decide 以 microcompactEnabled:false 关闭便宜缓解。微观经济动机见
|
|
439
|
-
* agent-session-compaction.ts 的常量注释(中部历史改写 × 不稳定前缀缓存)。
|
|
440
|
-
*/
|
|
441
|
-
private _microcompactCooldown;
|
|
442
434
|
private _branchSummaryAbortController;
|
|
443
435
|
private _branchSummaryPromise;
|
|
444
436
|
private _resolveBranchSummaryPromise;
|
|
@@ -1046,12 +1038,6 @@ export declare class AgentSession {
|
|
|
1046
1038
|
* @returns Whether the post-run loop should call `agent.continue()`
|
|
1047
1039
|
*/
|
|
1048
1040
|
private _runAutoCompaction;
|
|
1049
|
-
/**
|
|
1050
|
-
* Toggle auto-compaction setting.
|
|
1051
|
-
*/
|
|
1052
|
-
setAutoCompactionEnabled(enabled: boolean): void;
|
|
1053
|
-
/** Whether auto-compaction is enabled */
|
|
1054
|
-
get autoCompactionEnabled(): boolean;
|
|
1055
1041
|
/**
|
|
1056
1042
|
* Run the session-start boundary: dispatch session.start@1 to the capability
|
|
1057
1043
|
* runtime and run the resource discovery pass (contributed skills/prompts/
|
|
@@ -1097,12 +1083,6 @@ export declare class AgentSession {
|
|
|
1097
1083
|
abortRetry(): void;
|
|
1098
1084
|
/** Whether auto-retry is currently in progress */
|
|
1099
1085
|
get isRetrying(): boolean;
|
|
1100
|
-
/** Whether auto-retry is enabled */
|
|
1101
|
-
get autoRetryEnabled(): boolean;
|
|
1102
|
-
/**
|
|
1103
|
-
* Toggle auto-retry setting.
|
|
1104
|
-
*/
|
|
1105
|
-
setAutoRetryEnabled(enabled: boolean): void;
|
|
1106
1086
|
/** Capture a mode-level bash epoch for an intercepted user_bash result. */
|
|
1107
1087
|
captureBashEpoch(): number;
|
|
1108
1088
|
/** Return whether a mode-level bash result still belongs to this runtime epoch. */
|