@linnlabs/linnkit 0.8.0 → 0.10.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +1 -1
  3. package/README.zh-CN.md +1 -1
  4. package/bin/linnkit.cjs +7 -0
  5. package/dist/{agentSpec-EkmviZjy.d.cts → agentSpec-Du4Iye0q.d.cts} +16 -1
  6. package/dist/{agentSpec-EkmviZjy.d.ts → agentSpec-Du4Iye0q.d.ts} +16 -1
  7. package/dist/cli.cjs +234 -91
  8. package/dist/cli.cjs.map +1 -1
  9. package/dist/cli.js +234 -91
  10. package/dist/cli.js.map +1 -1
  11. package/dist/context-manager.cjs +230 -32
  12. package/dist/context-manager.cjs.map +1 -1
  13. package/dist/context-manager.d.cts +52 -15
  14. package/dist/context-manager.d.ts +52 -15
  15. package/dist/context-manager.js +230 -33
  16. package/dist/context-manager.js.map +1 -1
  17. package/dist/{context-trace-HE2qY5Q-.d.cts → context-trace-BHKDS-eq.d.cts} +2 -2
  18. package/dist/{context-trace-DRi5M4lX.d.ts → context-trace-CHbqHmyE.d.ts} +2 -2
  19. package/dist/contracts.cjs +3 -1
  20. package/dist/contracts.cjs.map +1 -1
  21. package/dist/contracts.d.cts +3 -3
  22. package/dist/contracts.d.ts +3 -3
  23. package/dist/contracts.js +3 -1
  24. package/dist/contracts.js.map +1 -1
  25. package/dist/{defaultGraphExecutor-BBswR8wn.d.ts → defaultGraphExecutor-B29_qTHy.d.ts} +16 -15
  26. package/dist/{defaultGraphExecutor-BIjJj7WF.d.cts → defaultGraphExecutor-C2E59v_R.d.cts} +16 -15
  27. package/dist/{index-Cm-JbzTH.d.cts → index-BAaUP9yU.d.cts} +38 -15
  28. package/dist/{index-DRBWi1fy.d.ts → index-BaVpVNi2.d.ts} +38 -15
  29. package/dist/{index-DO4dQgf2.d.cts → index-BnYCS8Zg.d.cts} +2 -2
  30. package/dist/{index-CJeWHopy.d.ts → index-C0DAjsdX.d.ts} +2 -2
  31. package/dist/{index-Dl5PLgAv.d.cts → index-CKQzzZ5Y.d.cts} +2 -2
  32. package/dist/{index-CHqwkvGp.d.ts → index-D0mKxTR5.d.ts} +2 -2
  33. package/dist/index.cjs +327 -110
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +10 -10
  36. package/dist/index.d.ts +10 -10
  37. package/dist/index.js +327 -110
  38. package/dist/index.js.map +1 -1
  39. package/dist/{ports-DnLuKfpE.d.ts → ports-DpPTFhSd.d.ts} +2 -2
  40. package/dist/{ports-DaatKJXp.d.cts → ports-s-tSp3sB.d.cts} +2 -2
  41. package/dist/quickstart.cjs +232 -88
  42. package/dist/quickstart.cjs.map +1 -1
  43. package/dist/quickstart.d.cts +7 -7
  44. package/dist/quickstart.d.ts +7 -7
  45. package/dist/quickstart.js +232 -88
  46. package/dist/quickstart.js.map +1 -1
  47. package/dist/{runAgent-CPj_9e58.d.ts → runAgent-C6F-399C.d.ts} +5 -5
  48. package/dist/{runAgent-HYKlXbVr.d.cts → runAgent-ilEj66Ik.d.cts} +5 -5
  49. package/dist/{runHandle-D3gPsD7B.d.cts → runHandle-BNOqS-Bl.d.cts} +3 -3
  50. package/dist/{runHandle-CyXvzgzk.d.ts → runHandle-BdLXOFqF.d.ts} +3 -3
  51. package/dist/runtime-kernel/events.cjs +1 -0
  52. package/dist/runtime-kernel/events.cjs.map +1 -1
  53. package/dist/runtime-kernel/events.d.cts +4 -4
  54. package/dist/runtime-kernel/events.d.ts +4 -4
  55. package/dist/runtime-kernel/events.js +1 -0
  56. package/dist/runtime-kernel/events.js.map +1 -1
  57. package/dist/runtime-kernel.cjs +318 -103
  58. package/dist/runtime-kernel.cjs.map +1 -1
  59. package/dist/runtime-kernel.d.cts +8 -8
  60. package/dist/runtime-kernel.d.ts +8 -8
  61. package/dist/runtime-kernel.js +315 -104
  62. package/dist/runtime-kernel.js.map +1 -1
  63. package/dist/testkit.cjs +331 -116
  64. package/dist/testkit.cjs.map +1 -1
  65. package/dist/testkit.d.cts +8 -8
  66. package/dist/testkit.d.ts +8 -8
  67. package/dist/testkit.js +331 -116
  68. package/dist/testkit.js.map +1 -1
  69. package/dist/{todo-B1PmDlp3.d.cts → todo-Ca8llpRQ.d.cts} +1 -1
  70. package/dist/{todo-B1PmDlp3.d.ts → todo-Ca8llpRQ.d.ts} +1 -1
  71. package/dist/{toolContracts-CLkQmhTG.d.cts → toolContracts-Bm3EZ1UM.d.cts} +13 -2
  72. package/dist/{toolContracts-Blll0241.d.ts → toolContracts-f8lzZBNa.d.ts} +13 -2
  73. package/docs/integration/README.md +1 -1
  74. package/docs/integration/agent-registration-guide.md +1 -1
  75. package/docs/integration/child-runs.md +4 -1
  76. package/docs/integration/context-engineering.md +30 -15
  77. package/docs/integration/context-fences.md +32 -3
  78. package/docs/integration/llm-provider.md +1 -1
  79. package/docs/integration/persistence.md +1 -0
  80. package/docs/integration/run-supervisor.md +3 -0
  81. package/docs/integration/tool-development-guide.md +7 -5
  82. package/docs/integration/tool-history.md +43 -17
  83. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/runtime-kernel/events/agentEvents.ts","../../src/contracts/messages.ts","../../src/contracts/contextPolicy.ts","../../src/contracts/agentSpec.ts","../../src/contracts/audit.ts","../../src/contracts/events.ts","../../src/contracts/execution.ts","../../src/contracts/sse.ts","../../src/shared/ids.ts","../../src/runtime-kernel/events/provider-sidecar.ts","../../src/runtime-kernel/events/agent-to-runtime.ts","../../src/runtime-kernel/events/runtime-to-ai-message.ts","../../src/runtime-kernel/events/sse-projection.ts","../../src/runtime-kernel/events/eventMappers.ts","../../src/runtime-kernel/events/eventGovernance.ts"],"names":["z","JsonRecord","isRecord"],"mappings":"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","file":"events.js","sourcesContent":["/**\n * @file runtime-kernel/events/agentEvents.ts\n * @description graph 主执行链使用的最小 Agent 事件契约\n *\n * 中文备注:\n * - 该文件只承载 runtime-kernel 主链路真正需要识别的事件子集;\n * - 目标是让 `executor` / `llmNode` / `eventMappers` 不再反向依赖宿主或产品层事件定义;\n * - host/product 层若有更丰富的事件,只要结构兼容,仍可在边界透传进来。\n */\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport interface AgentEvent {\n type: string;\n timestamp: number;\n id?: string;\n /**\n * 中文备注:\n * - 该标记只在运行期内存中使用,用于避免同一事件被 SSE 重复分发;\n * - 不属于持久化协议字段。\n */\n __dispatched_via_sse__?: true;\n}\n\ninterface BaseToolLifecycleAgentEvent extends AgentEvent {\n tool_name: string;\n tool_args: Record<string, unknown>;\n tool_calls?: unknown[];\n tool_call_id?: string;\n phase?: 'start' | 'update' | 'complete' | 'error';\n status?: 'loading' | 'success' | 'error';\n payload?: Record<string, unknown>;\n meta?: Record<string, unknown>;\n}\n\nexport interface ThoughtEvent extends AgentEvent {\n type: 'thought';\n content: string;\n delta?: string;\n is_complete?: boolean;\n meta?: Record<string, unknown>;\n thought_message_id?: string;\n}\n\nexport interface ToolCallDecisionEvent extends BaseToolLifecycleAgentEvent {\n type: 'tool_call_decision';\n}\n\nexport interface ToolProcessEvent extends BaseToolLifecycleAgentEvent {\n type: 'tool_process';\n}\n\nexport interface ObservationEvent extends AgentEvent {\n type: 'observation';\n tool_name: string;\n tool_call_id?: string;\n output: string;\n success?: boolean;\n payload?: Record<string, unknown>;\n duration_ms?: number;\n}\n\nexport interface FinalAnswerEvent extends AgentEvent {\n type: 'final_answer';\n answer: string;\n answer_id?: string;\n answerId?: string;\n reasoning_details?: unknown[];\n meta?: Record<string, unknown>;\n}\n\nexport interface ErrorEvent extends AgentEvent {\n type: 'error';\n error: string;\n details?: string;\n}\n\nexport interface StreamChunkEvent extends AgentEvent {\n type: 'stream_chunk';\n content: string;\n answer_id?: string;\n seq?: number;\n is_last?: boolean;\n isLast?: boolean;\n}\n\nexport interface ProviderSidecarEvent extends AgentEvent {\n type: 'provider_sidecar';\n reasoning_details?: unknown[];\n}\n\nexport type AnyAgentEvent =\n | ThoughtEvent\n | ToolCallDecisionEvent\n | ToolProcessEvent\n | ObservationEvent\n | FinalAnswerEvent\n | ErrorEvent\n | StreamChunkEvent\n | ProviderSidecarEvent;\n\nexport function isMarkedAsSseDispatched(event: unknown): boolean {\n return isRecord(event) && event['__dispatched_via_sse__'] === true;\n}\n\nexport function readAgentEventAnswerId(event: unknown): string | undefined {\n if (!isRecord(event)) return undefined;\n\n const snake = event['answer_id'];\n if (typeof snake === 'string' && snake.trim().length > 0) {\n return snake.trim();\n }\n\n const camel = event['answerId'];\n if (typeof camel === 'string' && camel.trim().length > 0) {\n return camel.trim();\n }\n\n return undefined;\n}\n\nexport function readAgentEventSeq(event: unknown): number | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['seq'];\n return Number.isInteger(value) ? Number(value) : undefined;\n}\n","import { z } from 'zod';\n\nexport const ProviderReasoningDetails = z.array(z.unknown());\nexport type ProviderReasoningDetails = z.infer<typeof ProviderReasoningDetails>;\n\nexport const ToolCallExtraContent = z.object({\n google: z.object({\n thought_signature: z.string().optional(),\n }).passthrough().optional(),\n}).passthrough();\n\nexport type ToolCallExtraContent = z.infer<typeof ToolCallExtraContent>;\n\nexport const ToolCallWire = z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n extra_content: ToolCallExtraContent.optional(),\n}).passthrough();\n\nexport type ToolCallWire = z.infer<typeof ToolCallWire>;\n\nexport const HistorySummaryMeta = z.object({\n messageType: z.literal('summary'),\n originalMessageCount: z.number().int().positive(),\n compressionRatio: z.number().min(0).max(1).optional(),\n includedOldSummary: z.boolean(),\n replacedMessageIds: z.array(z.string()),\n summarySeq: z.number().int().nonnegative(),\n});\n\nexport type HistorySummaryMeta = z.infer<typeof HistorySummaryMeta>;\n\nexport const ToolCallsMeta = z.object({\n tool_calls: z.array(ToolCallWire),\n reasoning_details: ProviderReasoningDetails.optional(),\n});\n\nexport type ToolCallsMeta = z.infer<typeof ToolCallsMeta>;\n\nexport const ToolOutputMeta = z.object({\n tool_name: z.string(),\n args: z.record(z.unknown()).optional(),\n tool_call_id: z.string(),\n});\n\nexport type ToolOutputMeta = z.infer<typeof ToolOutputMeta>;\n\nexport const ImageInfoMeta = z.object({\n url: z.string().optional(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n format: z.string().optional(),\n size: z.number().int().nonnegative().optional(),\n});\n\nexport type ImageInfoMeta = z.infer<typeof ImageInfoMeta>;\n\nexport const TaskTrackingMeta = z.object({\n taskType: z.string().optional(),\n taskId: z.string().optional(),\n taskStatus: z.enum(['requested', 'in_progress', 'completed', 'failed']).optional(),\n taskTrackingInfo: z.object({\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n duration: z.number().optional(),\n retryCount: z.number().int().nonnegative().optional(),\n lastError: z.string().optional(),\n }).optional(),\n});\n\nexport type TaskTrackingMeta = z.infer<typeof TaskTrackingMeta>;\n\nexport const PersistentMetadata = z.object({\n messageType: z.literal('summary').optional(),\n originalMessageCount: z.number().int().positive().optional(),\n compressionRatio: z.number().min(0).max(1).optional(),\n includedOldSummary: z.boolean().optional(),\n replacedMessageIds: z.array(z.string()).optional(),\n summarySeq: z.number().int().nonnegative().optional(),\n tool_calls: z.array(ToolCallWire).optional(),\n reasoning_details: ProviderReasoningDetails.optional(),\n tool_name: z.string().optional(),\n args: z.record(z.unknown()).optional(),\n tool_call_id: z.string().optional(),\n raw_output: z.string().optional(),\n image_info: ImageInfoMeta.optional(),\n taskType: z.string().optional(),\n taskId: z.string().optional(),\n taskStatus: z.enum(['requested', 'in_progress', 'completed', 'failed']).optional(),\n taskTrackingInfo: z.object({\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n duration: z.number().optional(),\n retryCount: z.number().int().nonnegative().optional(),\n lastError: z.string().optional(),\n }).optional(),\n fenceKind: z.string().optional(),\n fenceAttrs: z.record(z.unknown()).optional(),\n fencePlacement: z.string().optional(),\n}).passthrough();\n\nexport type PersistentMetadata = z.infer<typeof PersistentMetadata>;\n\nconst BaseMessage = z.object({\n id: z.string(),\n content: z.string(),\n timestamp: z.number().int().nonnegative(),\n metadata: PersistentMetadata.optional(),\n});\n\nexport const SystemMessage = BaseMessage.extend({\n role: z.literal('system'),\n type: z.enum(['system_prompt', 'history_summary', 'context_injection']),\n});\n\nexport type SystemMessage = z.infer<typeof SystemMessage>;\n\nexport const UserMessage = BaseMessage.extend({\n role: z.literal('user'),\n type: z.enum([\n 'user_input',\n 'context_injection',\n 'context_before',\n 'context_after',\n 'document_fragment',\n 'task_request',\n 'image',\n ]),\n});\n\nexport type UserMessage = z.infer<typeof UserMessage>;\n\nexport const AssistantMessage = BaseMessage.extend({\n role: z.literal('assistant'),\n type: z.enum([\n 'thought',\n 'final_answer',\n 'tool_code',\n 'tool_calls',\n 'task_completion',\n ]),\n});\n\nexport type AssistantMessage = z.infer<typeof AssistantMessage>;\n\nexport const ToolMessage = BaseMessage.extend({\n role: z.literal('tool'),\n type: z.literal('tool_output'),\n});\n\nexport type ToolMessage = z.infer<typeof ToolMessage>;\n\nexport const AiMessage = z.discriminatedUnion('role', [\n SystemMessage,\n UserMessage,\n AssistantMessage,\n ToolMessage,\n]);\n\nexport type AiMessage = z.infer<typeof AiMessage>;\n\nexport function createSystemMessage(\n type: SystemMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): SystemMessage {\n return {\n id: crypto.randomUUID(),\n role: 'system',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createUserMessage(\n type: UserMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): UserMessage {\n return {\n id: crypto.randomUUID(),\n role: 'user',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createAssistantMessage(\n type: AssistantMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): AssistantMessage {\n return {\n id: crypto.randomUUID(),\n role: 'assistant',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createToolMessage(\n content: string,\n toolCallId: string,\n toolName: string,\n metadata?: PersistentMetadata,\n): ToolMessage {\n return {\n id: crypto.randomUUID(),\n role: 'tool',\n type: 'tool_output',\n content,\n timestamp: Date.now(),\n metadata: {\n ...metadata,\n tool_call_id: toolCallId,\n tool_name: toolName,\n },\n };\n}\n\nexport function createHistorySummaryMessage(\n content: string,\n summaryMeta: HistorySummaryMeta,\n): SystemMessage {\n return {\n id: crypto.randomUUID(),\n role: 'system',\n type: 'history_summary',\n content,\n timestamp: Date.now(),\n metadata: summaryMeta,\n };\n}\n\nexport function validateAiMessage(data: unknown): z.SafeParseReturnType<unknown, AiMessage> {\n return AiMessage.safeParse(data);\n}\n\nexport function validateHistorySummaryMeta(\n data: unknown,\n): z.SafeParseReturnType<unknown, HistorySummaryMeta> {\n return HistorySummaryMeta.safeParse(data);\n}\n\nexport function isSystemMessage(message: AiMessage): message is SystemMessage {\n return message.role === 'system';\n}\n\nexport function isUserMessage(message: AiMessage): message is UserMessage {\n return message.role === 'user';\n}\n\nexport function isAssistantMessage(message: AiMessage): message is AssistantMessage {\n return message.role === 'assistant';\n}\n\nexport function isToolMessage(message: AiMessage): message is ToolMessage {\n return message.role === 'tool';\n}\n\nexport function isHistorySummaryMessage(message: AiMessage): message is SystemMessage {\n return message.role === 'system'\n && message.type === 'history_summary'\n && message.metadata?.messageType === 'summary';\n}\n\nexport function hasToolCalls(message: AiMessage): boolean {\n return message.role === 'assistant'\n && Array.isArray(message.metadata?.tool_calls)\n && message.metadata.tool_calls.length > 0;\n}\n","import { z } from 'zod';\n\ntype SerializableJsonValue =\n | string\n | number\n | boolean\n | null\n | SerializableJsonValue[]\n | { [key: string]: SerializableJsonValue };\n\nconst SerializableJsonValueSchema: z.ZodType<SerializableJsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(SerializableJsonValueSchema),\n z.record(z.string(), SerializableJsonValueSchema),\n ]),\n);\n\nconst SerializableJsonRecord = z.record(z.string(), SerializableJsonValueSchema);\n\nexport const AgentSpecMessageType = z.enum([\n 'system_prompt',\n 'history_summary',\n 'context_injection',\n 'user_input',\n 'context_before',\n 'context_after',\n 'document_fragment',\n 'task_request',\n 'image',\n 'thought',\n 'final_answer',\n 'tool_code',\n 'tool_calls',\n 'task_completion',\n 'tool_output',\n]);\nexport type AgentSpecMessageType = z.infer<typeof AgentSpecMessageType>;\n\nexport const AgentSpecBudgetPolicy = z.object({\n maxTokens: z.number().int().positive().optional(),\n reservedForResponse: z.number().int().nonnegative().optional(),\n workingMemoryBudgetPercentage: z.number().min(0).max(1).optional(),\n});\nexport type AgentSpecBudgetPolicy = z.infer<typeof AgentSpecBudgetPolicy>;\n\nexport const AgentSpecToolHistoryPolicy = z.object({\n strategy: z.enum(['per-pair', 'per-run', 'none']).optional(),\n keepLatestToolPairs: z.number().int().nonnegative().optional(),\n keepLatestRuns: z.number().int().nonnegative().optional(),\n maxInteractionGroups: z.number().int().nonnegative().optional(),\n overflowStrategy: z.enum(['keep-latest', 'fail-fast']).optional(),\n maxPairTokens: z.number().int().nonnegative().optional(),\n maxOutputSummaryTokens: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecToolHistoryPolicy = z.infer<typeof AgentSpecToolHistoryPolicy>;\n\nexport const AgentSpecToolObservationGovernancePolicy = z.object({\n enabled: z.boolean().optional(),\n maxChars: z.number().int().positive().optional(),\n maxLines: z.number().int().positive().optional(),\n});\nexport type AgentSpecToolObservationGovernancePolicy = z.infer<typeof AgentSpecToolObservationGovernancePolicy>;\n\nexport const AgentSpecToolOutputPolicy = z.object({\n observationGovernance: AgentSpecToolObservationGovernancePolicy.optional(),\n});\nexport type AgentSpecToolOutputPolicy = z.infer<typeof AgentSpecToolOutputPolicy>;\n\nexport const AgentSpecProviderReplayPolicy = z.object({\n provider: z.string().min(1).optional(),\n requiresReasoningDetailsForToolReplay: z.boolean().optional(),\n missingSidecarBehavior: z.enum(['allow', 'degrade_to_text', 'provider_empty_replay_field']).optional(),\n});\nexport type AgentSpecProviderReplayPolicy = z.infer<typeof AgentSpecProviderReplayPolicy>;\n\nexport const AgentSpecSummarizationPolicy = z.object({\n triggerThreshold: z.number().min(0).max(1).optional(),\n budgetPercentage: z.number().min(0).max(1).optional(),\n oldestMessagesPercentage: z.number().min(0).max(1).optional(),\n agentId: z.string().min(1).optional(),\n failureBehavior: z.enum(['fail-fast', 'continue-if-within-budget']).optional(),\n});\nexport type AgentSpecSummarizationPolicy = z.infer<typeof AgentSpecSummarizationPolicy>;\n\nexport const AgentSpecMustKeepTruncationRule = z.object({\n fenceKind: z.string().min(1),\n maxBudgetFraction: z.number().gt(0).max(1),\n strategyName: z.string().min(1),\n});\nexport type AgentSpecMustKeepTruncationRule = z.infer<typeof AgentSpecMustKeepTruncationRule>;\n\nexport const AgentSpecMustKeepPolicy = z.object({\n alwaysKeepTypes: z.array(AgentSpecMessageType).optional(),\n alwaysKeepFenceKinds: z.array(z.string().min(1)).optional(),\n truncationRules: z.array(AgentSpecMustKeepTruncationRule).optional(),\n});\nexport type AgentSpecMustKeepPolicy = z.infer<typeof AgentSpecMustKeepPolicy>;\n\nexport const AgentSpecWorkingMemoryPolicy = z.object({\n maxRecentToolInteractions: z.number().int().nonnegative().optional(),\n minToolInteractionsToKeep: z.number().int().nonnegative().optional(),\n toolPairingSearchRange: z.number().int().positive().optional(),\n});\nexport type AgentSpecWorkingMemoryPolicy = z.infer<typeof AgentSpecWorkingMemoryPolicy>;\n\nexport const AgentSpecCheckpointPolicy = z.object({\n keepPairsBefore: z.number().int().nonnegative().optional(),\n triggerToolName: z.string().min(1).optional(),\n});\nexport type AgentSpecCheckpointPolicy = z.infer<typeof AgentSpecCheckpointPolicy>;\n\nexport const AgentSpecReasoningRetentionPolicy = z.object({\n keepLatestThoughts: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecReasoningRetentionPolicy = z.infer<typeof AgentSpecReasoningRetentionPolicy>;\n\nexport const AgentSpecTokenEstimationPolicy = z.object({\n encoding: z.string().min(1).optional(),\n avgCharsPerToken: z.number().positive().optional(),\n toolCallOverhead: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecTokenEstimationPolicy = z.infer<typeof AgentSpecTokenEstimationPolicy>;\n\nexport const SYSTEM_REMINDER_BUILTIN_TRIGGER_KINDS = [\n 'phase-equals',\n 'remaining-steps-leq',\n 'step-count-modulo',\n 'tool-call-streak',\n 'budget-warning',\n 'agent-has-tool',\n] as const;\n\nexport const AgentSpecSystemReminderTrigger = z.object({\n kind: z.string().min(1),\n threshold: z.number().nonnegative().optional(),\n value: z.union([z.string(), z.number(), z.boolean()]).optional(),\n moduloStep: z.boolean().optional(),\n toolName: z.string().min(1).optional(),\n period: z.number().int().positive().optional(),\n minStep: z.number().int().nonnegative().optional(),\n ratio: z.number().min(0).max(1).optional(),\n config: SerializableJsonRecord.optional(),\n});\nexport type AgentSpecSystemReminderTrigger = z.infer<typeof AgentSpecSystemReminderTrigger>;\n\nexport const AgentSpecSystemReminderExtraRule = z.object({\n id: z.string().min(1),\n trigger: AgentSpecSystemReminderTrigger,\n contentTemplate: z.string().min(1),\n contentArgs: SerializableJsonRecord.optional(),\n});\nexport type AgentSpecSystemReminderExtraRule = z.infer<typeof AgentSpecSystemReminderExtraRule>;\n\nexport const AgentSpecSystemReminderPolicy = z.object({\n enabledRuleIds: z.array(z.string().min(1)).nullable().optional(),\n disabledRuleIds: z.array(z.string().min(1)).optional(),\n thresholds: z.object({\n toolCallStreak: z.number().int().nonnegative().optional(),\n taskstateReflectionPeriod: z.number().int().positive().optional(),\n budgetWarningRatio: z.number().min(0).max(1).optional(),\n lastStepsHintThreshold: z.number().int().nonnegative().optional(),\n }).optional(),\n extraRules: z.array(AgentSpecSystemReminderExtraRule).optional(),\n}).superRefine((value, ctx) => {\n if (value.enabledRuleIds !== undefined && value.enabledRuleIds !== null && value.disabledRuleIds?.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['disabledRuleIds'],\n message: 'enabledRuleIds and disabledRuleIds cannot be configured at the same time',\n });\n }\n});\nexport type AgentSpecSystemReminderPolicy = z.infer<typeof AgentSpecSystemReminderPolicy>;\n\nexport const AgentSpecContextTracePolicy = z.object({\n enabled: z.boolean().optional(),\n includeMessageIds: z.boolean().optional(),\n includeTokenBreakdown: z.boolean().optional(),\n maxTraceEvents: z.number().int().positive().optional(),\n});\nexport type AgentSpecContextTracePolicy = z.infer<typeof AgentSpecContextTracePolicy>;\n\nexport const AgentSpecContextPolicy = z.object({\n profileId: z.string().min(1),\n budget: AgentSpecBudgetPolicy.optional(),\n toolHistory: AgentSpecToolHistoryPolicy.optional(),\n toolOutput: AgentSpecToolOutputPolicy.optional(),\n providerReplay: AgentSpecProviderReplayPolicy.optional(),\n summarization: AgentSpecSummarizationPolicy.optional(),\n mustKeep: AgentSpecMustKeepPolicy.optional(),\n workingMemory: AgentSpecWorkingMemoryPolicy.optional(),\n checkpoint: AgentSpecCheckpointPolicy.optional(),\n reasoningRetention: AgentSpecReasoningRetentionPolicy.optional(),\n tokenEstimation: AgentSpecTokenEstimationPolicy.optional(),\n systemReminder: AgentSpecSystemReminderPolicy.optional(),\n contextTrace: AgentSpecContextTracePolicy.optional(),\n});\nexport type AgentSpecContextPolicy = z.infer<typeof AgentSpecContextPolicy>;\n\nexport type AgentSpecContextPolicyInput = Omit<z.input<typeof AgentSpecContextPolicy>, 'profileId'> & {\n profileId?: string;\n};\n\nconst DEFAULT_CONTEXT_POLICY: Required<AgentSpecContextPolicy> = {\n profileId: 'agent',\n budget: {\n maxTokens: 120000,\n reservedForResponse: 2400,\n workingMemoryBudgetPercentage: 0.7,\n },\n toolHistory: {\n strategy: 'per-run',\n keepLatestToolPairs: 2,\n keepLatestRuns: 1,\n maxInteractionGroups: 12,\n overflowStrategy: 'keep-latest',\n maxPairTokens: 6000,\n maxOutputSummaryTokens: 1000,\n },\n toolOutput: {\n observationGovernance: {\n enabled: true,\n maxChars: 20_000,\n maxLines: 1_200,\n },\n },\n providerReplay: {},\n summarization: {\n triggerThreshold: 0.7,\n budgetPercentage: 0.12,\n oldestMessagesPercentage: 0.75,\n failureBehavior: 'fail-fast',\n },\n mustKeep: {\n alwaysKeepTypes: ['system_prompt', 'user_input'],\n alwaysKeepFenceKinds: [],\n truncationRules: [],\n },\n workingMemory: {\n maxRecentToolInteractions: 2,\n minToolInteractionsToKeep: 2,\n toolPairingSearchRange: 10,\n },\n checkpoint: {\n keepPairsBefore: 2,\n triggerToolName: 'context_checkpoint',\n },\n reasoningRetention: {\n keepLatestThoughts: 1,\n },\n tokenEstimation: {\n encoding: 'cl100k_base',\n avgCharsPerToken: 2.0,\n toolCallOverhead: 50,\n },\n systemReminder: {\n enabledRuleIds: null,\n disabledRuleIds: [],\n thresholds: {\n toolCallStreak: 10,\n taskstateReflectionPeriod: 30,\n budgetWarningRatio: 0.9,\n lastStepsHintThreshold: 0,\n },\n extraRules: [],\n },\n contextTrace: {\n enabled: false,\n includeMessageIds: true,\n includeTokenBreakdown: true,\n maxTraceEvents: 200,\n },\n};\n\n/**\n * 创建完整 contextPolicy。\n *\n * 中文备注:\n * - schema 保持 optional,避免现有 host 的 `{ profileId: 'agent' }` 类型大面积变红;\n * - 需要完整默认值时走这个 helper,后续 F1.2/F1.3 的 adapter 与 fallback 会复用它。\n */\nexport function defineContextPolicy(input: AgentSpecContextPolicyInput = {}): AgentSpecContextPolicy {\n const merged: Required<AgentSpecContextPolicy> = {\n profileId: input.profileId ?? DEFAULT_CONTEXT_POLICY.profileId,\n budget: { ...DEFAULT_CONTEXT_POLICY.budget, ...input.budget },\n toolHistory: { ...DEFAULT_CONTEXT_POLICY.toolHistory, ...input.toolHistory },\n toolOutput: {\n ...DEFAULT_CONTEXT_POLICY.toolOutput,\n ...input.toolOutput,\n observationGovernance: {\n ...DEFAULT_CONTEXT_POLICY.toolOutput.observationGovernance,\n ...input.toolOutput?.observationGovernance,\n },\n },\n providerReplay: { ...DEFAULT_CONTEXT_POLICY.providerReplay, ...input.providerReplay },\n summarization: { ...DEFAULT_CONTEXT_POLICY.summarization, ...input.summarization },\n mustKeep: { ...DEFAULT_CONTEXT_POLICY.mustKeep, ...input.mustKeep },\n workingMemory: { ...DEFAULT_CONTEXT_POLICY.workingMemory, ...input.workingMemory },\n checkpoint: { ...DEFAULT_CONTEXT_POLICY.checkpoint, ...input.checkpoint },\n reasoningRetention: { ...DEFAULT_CONTEXT_POLICY.reasoningRetention, ...input.reasoningRetention },\n tokenEstimation: { ...DEFAULT_CONTEXT_POLICY.tokenEstimation, ...input.tokenEstimation },\n systemReminder: {\n ...DEFAULT_CONTEXT_POLICY.systemReminder,\n ...input.systemReminder,\n thresholds: {\n ...DEFAULT_CONTEXT_POLICY.systemReminder.thresholds,\n ...input.systemReminder?.thresholds,\n },\n extraRules: input.systemReminder?.extraRules ?? DEFAULT_CONTEXT_POLICY.systemReminder.extraRules,\n },\n contextTrace: { ...DEFAULT_CONTEXT_POLICY.contextTrace, ...input.contextTrace },\n };\n\n return AgentSpecContextPolicy.parse(merged);\n}\n","import { z } from 'zod';\nimport { AgentSpecContextPolicy } from './contextPolicy';\n\nconst JsonRecord = z.record(z.string(), z.unknown());\n\n/**\n * 工具参数 schema 在 AgentSpec 里是可序列化契约,不是运行时 zod 对象。\n * 这里主动拦截 zod-like 对象,避免把 `z.any()` 一类实现细节混进协议层。\n */\nconst ToolArgsSchemaSpec = JsonRecord.superRefine((value, ctx) => {\n const parse = value['parse'];\n const safeParse = value['safeParse'];\n const definition = value['_def'];\n if (typeof parse === 'function' && typeof safeParse === 'function' && definition !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'argsSchema must be a serializable record, not a runtime zod schema',\n });\n }\n});\n\nexport const AgentCapability = z.string().min(1);\nexport type AgentCapability = z.infer<typeof AgentCapability>;\n\nexport const ToolBindingSpec = z.object({\n toolId: z.string().min(1),\n bindingId: z.string().min(1).optional(),\n argsSchema: ToolArgsSchemaSpec.optional(),\n config: JsonRecord.optional(),\n metadata: JsonRecord.optional(),\n});\nexport type ToolBindingSpec = z.infer<typeof ToolBindingSpec>;\n\nexport const AgentSpecModelHints = z.object({\n preferredProviders: z.array(z.string().min(1)).optional(),\n preferredModels: z.array(z.string().min(1)).optional(),\n fallbackChain: z.array(z.string().min(1)).optional(),\n});\nexport type AgentSpecModelHints = z.infer<typeof AgentSpecModelHints>;\n\nexport const AgentSpecAuditConfig = z.object({\n redactionLevel: z.enum(['none', 'standard', 'strict']).optional(),\n pii: z.boolean().optional(),\n});\nexport type AgentSpecAuditConfig = z.infer<typeof AgentSpecAuditConfig>;\n\nexport const AgentSpec = z.object({\n id: z.string().min(1),\n version: z.string().min(1),\n role: z.string().optional(),\n description: z.string().optional(),\n capabilities: z.array(AgentCapability),\n tools: z.array(ToolBindingSpec),\n contextPolicy: AgentSpecContextPolicy,\n modelHints: AgentSpecModelHints.optional(),\n audit: AgentSpecAuditConfig.optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AgentSpec = z.infer<typeof AgentSpec>;\n","import { z } from 'zod';\n\nconst JsonRecord = z.record(z.string(), z.unknown());\n\nexport const AUDIT_ACTIONS = [\n 'model.select',\n 'model.fallback',\n 'tool.allow',\n 'tool.deny',\n 'wait_user.request',\n 'sandbox.decide',\n 'run.cancel',\n 'run.pause',\n 'run.resume',\n 'memory.write',\n] as const;\n\nexport const AUDIT_DECISION_OUTCOMES = [\n 'allowed',\n 'denied',\n 'fallback',\n 'retry',\n 'cancelled',\n 'paused',\n 'resumed',\n 'requested',\n 'recorded',\n] as const;\n\nexport const AuditActor = z.object({\n kind: z.enum(['system', 'host', 'agent', 'model', 'tool', 'user']),\n id: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n});\nexport type AuditActor = z.infer<typeof AuditActor>;\n\nexport const AuditDecision = z.object({\n outcome: z.enum(AUDIT_DECISION_OUTCOMES),\n reason: z.string().optional(),\n policy: z.string().optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditDecision = z.infer<typeof AuditDecision>;\n\nexport const AuditEvidence = z.object({\n kind: z.string().min(1),\n ref: z.string().min(1).optional(),\n summary: z.string().optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditEvidence = z.infer<typeof AuditEvidence>;\n\nexport const AuditCostDelta = z.object({\n tokensInput: z.number().int().nonnegative().optional(),\n tokensOutput: z.number().int().nonnegative().optional(),\n totalCostUsd: z.number().nonnegative().optional(),\n latencyMs: z.number().nonnegative().optional(),\n});\nexport type AuditCostDelta = z.infer<typeof AuditCostDelta>;\n\nexport const AuditScope = z.object({\n conversationId: z.string().min(1).optional(),\n runId: z.string().min(1).optional(),\n parentRunId: z.string().min(1).optional(),\n turnId: z.string().min(1).optional(),\n traceId: z.string().min(1).optional(),\n agentSpecId: z.string().min(1).optional(),\n toolCallId: z.string().min(1).optional(),\n toolName: z.string().min(1).optional(),\n modelId: z.string().min(1).optional(),\n nodeId: z.string().min(1).optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditScope = z.infer<typeof AuditScope>;\n\n/**\n * 标准审计信封。\n *\n * 中文备注:\n * - action 保持 string,以便 host 扩展自己的动作名;\n * - decision/evidence/costDelta 都是可选事实片段,避免把所有审计场景压成同一种形状;\n * - envelope 必须追加只读,更新/撤回应追加新的补偿 envelope。\n */\nexport const AuditEnvelope = z.object({\n envelopeId: z.string().min(1),\n runId: z.string().min(1),\n parentRunId: z.string().min(1).optional(),\n ts: z.number().int().nonnegative(),\n actor: AuditActor,\n action: z.string().min(1),\n decision: AuditDecision.optional(),\n evidence: z.array(AuditEvidence).optional(),\n costDelta: AuditCostDelta.optional(),\n scope: AuditScope.optional(),\n});\nexport type AuditEnvelope = z.infer<typeof AuditEnvelope>;\n","import { z } from 'zod';\nimport { AuditEnvelope } from './audit';\n\nexport const BaseEvent = z.object({\n id: z.string(),\n conversation_id: z.string(),\n timestamp: z.number(),\n metadata: z.record(z.unknown()).optional(),\n version: z.literal(1).default(1),\n turn_id: z.string(),\n ephemeral: z.boolean().optional(),\n});\n\nexport const ToolCallPhase = z.enum(['start', 'update', 'complete', 'error']);\nexport const Status = z.enum(['loading', 'success', 'error']);\nexport const AgentTodoStatus = z.enum(['pending', 'in_progress', 'completed', 'cancelled']);\n\nexport const AgentTodoItem = z.object({\n id: z.string(),\n content: z.string(),\n status: AgentTodoStatus,\n});\n\nexport const ProviderReasoningDetailsPayload = z.array(z.unknown());\nexport type ProviderReasoningDetailsPayload = z.infer<typeof ProviderReasoningDetailsPayload>;\n\nexport const ToolCallDecisionPayload = z.object({\n args: z.record(z.any()).optional(),\n tool_calls: z.array(z.unknown()).optional(),\n /**\n * 不透明 provider reasoning replay blocks。\n *\n * RuntimeEvent 层的标准位置是 assistant 产出事件携带 reasoning_details;\n * context-manager 会把它回放到 AiMessage.metadata.reasoning_details。\n */\n reasoning_details: ProviderReasoningDetailsPayload.optional(),\n}).passthrough();\n\nexport type ToolCallDecisionPayload = z.infer<typeof ToolCallDecisionPayload>;\n\nexport const RuntimeEvent = z.discriminatedUnion('type', [\n BaseEvent.extend({\n type: z.literal('user_input'),\n content: z.string(),\n raw_content: z.string().optional(),\n source: z.enum(['user', 'editor', 'system']).default('user'),\n }),\n BaseEvent.extend({\n type: z.literal('thought'),\n content: z.string(),\n thought_message_id: z.string().optional(),\n delta: z.string().optional(),\n is_complete: z.boolean().default(false),\n }),\n BaseEvent.extend({\n type: z.literal('tool_call_decision'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: ToolCallPhase,\n status: Status,\n args: z.record(z.any()).optional(),\n payload: ToolCallDecisionPayload.optional(),\n parent_tool_call_id: z.string().optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('tool_process'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: ToolCallPhase,\n status: Status,\n args: z.record(z.any()).optional(),\n payload: z.record(z.any()).optional(),\n parent_tool_call_id: z.string().optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('tool_output'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n status: z.enum(['success', 'error']),\n output: z.any().optional(),\n payload: z.record(z.any()).optional(),\n error: z.string().optional(),\n duration_ms: z.number().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('todo_updated'),\n todo_list_id: z.string(),\n todo_list_version: z.number().int().nonnegative(),\n items: z.array(AgentTodoItem),\n }),\n BaseEvent.extend({\n type: z.literal('subrun_trace'),\n parent_tool_call_id: z.string(),\n subrun_id: z.string(),\n subrun_parent_id: z.string().optional(),\n kind: z.enum([\n 'thought_delta',\n 'thought_complete',\n 'tool_call_decision',\n 'tool_process',\n 'tool_output',\n 'final_answer_chunk',\n 'final_answer',\n ]),\n delta: z.string().optional(),\n content: z.string().optional(),\n tool_name: z.string().optional(),\n tool_call_id: z.string().optional(),\n phase: ToolCallPhase.optional(),\n status: Status.optional(),\n args: z.unknown().optional(),\n output: z.unknown().optional(),\n duration_ms: z.number().optional(),\n meta: z.record(z.unknown()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('requires_user_interaction'),\n form: z.any().optional(),\n interaction_type: z.string().optional(),\n prompt: z.string().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('audit_envelope'),\n envelope: AuditEnvelope,\n }),\n BaseEvent.extend({\n type: z.literal('final_answer'),\n answer_id: z.string(),\n content: z.string(),\n is_complete: z.boolean().default(true),\n reasoning_details: ProviderReasoningDetailsPayload.optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('final_answer_chunk'),\n answer_id: z.string(),\n seq: z.number().int().nonnegative(),\n content: z.string(),\n is_last: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('history_summary'),\n content: z.string(),\n replaced_message_ids: z.array(z.string()),\n summary_seq: z.number().int().nonnegative(),\n original_message_count: z.number().int().nonnegative().optional(),\n compression_ratio: z.number().min(0).max(1).optional(),\n included_old_summary: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('error'),\n error: z.string(),\n details: z.any().optional(),\n error_code: z.string().optional(),\n retryable: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('control'),\n op: z.enum(['truncate_after', 'replace', 'redo', 'branch']),\n target_id: z.string().optional(),\n reason: z.string().optional(),\n meta: z.any().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('stream_end'),\n reason: z.enum(['complete', 'error', 'interrupted', 'timeout']).optional(),\n reason_message: z.string().optional(),\n stats: z.object({\n total_events: z.number().optional(),\n duration_ms: z.number().optional(),\n error_count: z.number().optional(),\n }).optional(),\n }),\n]);\n\nexport type RuntimeEvent = z.infer<typeof RuntimeEvent>;\nexport type UserInputEvent = Extract<RuntimeEvent, { type: 'user_input' }>;\nexport type ThoughtEvent = Extract<RuntimeEvent, { type: 'thought' }>;\nexport type ToolCallDecisionEvent = Extract<RuntimeEvent, { type: 'tool_call_decision' }>;\nexport type ToolProcessEvent = Extract<RuntimeEvent, { type: 'tool_process' }>;\nexport type ToolOutputEvent = Extract<RuntimeEvent, { type: 'tool_output' }>;\nexport type TodoUpdatedEvent = Extract<RuntimeEvent, { type: 'todo_updated' }>;\nexport type SubRunTraceEvent = Extract<RuntimeEvent, { type: 'subrun_trace' }>;\nexport type RequiresUserInteractionEvent = Extract<RuntimeEvent, { type: 'requires_user_interaction' }>;\nexport type AuditEnvelopeEvent = Extract<RuntimeEvent, { type: 'audit_envelope' }>;\nexport type FinalAnswerEvent = Extract<RuntimeEvent, { type: 'final_answer' }>;\nexport type FinalAnswerChunkEvent = Extract<RuntimeEvent, { type: 'final_answer_chunk' }>;\nexport type HistorySummaryEvent = Extract<RuntimeEvent, { type: 'history_summary' }>;\nexport type ErrorEvent = Extract<RuntimeEvent, { type: 'error' }>;\nexport type ControlEvent = Extract<RuntimeEvent, { type: 'control' }>;\nexport type StreamEndEvent = Extract<RuntimeEvent, { type: 'stream_end' }>;\n\nexport const validateRuntimeEvent = (event: unknown) => RuntimeEvent.safeParse(event);\nexport const validateRuntimeEvents = (events: unknown[]) => z.array(RuntimeEvent).safeParse(events);\n\nexport const createUserInputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n options: Partial<UserInputEvent> = {},\n): UserInputEvent => ({\n type: 'user_input',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n source: 'user',\n ...options,\n});\n\nexport const createThoughtEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n options: Partial<ThoughtEvent> = {},\n): ThoughtEvent => ({\n type: 'thought',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n is_complete: false,\n ...options,\n});\n\nexport const createToolCallDecisionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n options: Partial<ToolCallDecisionEvent> = {},\n): ToolCallDecisionEvent => ({\n type: 'tool_call_decision',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase: 'start',\n status: 'loading',\n ...options,\n});\n\nexport const createToolProcessEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n options: Partial<ToolProcessEvent> = {},\n): ToolProcessEvent => ({\n type: 'tool_process',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase: 'start',\n status: 'loading',\n ...options,\n});\n\nexport const createSubRunTraceEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n parentToolCallId: string,\n subrunId: string,\n kind: SubRunTraceEvent['kind'],\n options: Partial<SubRunTraceEvent> = {},\n): SubRunTraceEvent => ({\n type: 'subrun_trace',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n ephemeral: true,\n parent_tool_call_id: parentToolCallId,\n subrun_id: subrunId,\n kind,\n ...options,\n});\n\nexport const createToolOutputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n output: unknown,\n status: 'success' | 'error' = 'success',\n options: Partial<ToolOutputEvent> = {},\n): ToolOutputEvent => ({\n type: 'tool_output',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n status,\n output,\n ...options,\n});\n\nexport const createTodoUpdatedEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n todoListId: string,\n todoListVersion: number,\n items: TodoUpdatedEvent['items'],\n options: Partial<TodoUpdatedEvent> = {},\n): TodoUpdatedEvent => ({\n type: 'todo_updated',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n todo_list_id: todoListId,\n todo_list_version: todoListVersion,\n items,\n ...options,\n});\n\nexport const createFinalAnswerEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n content: string,\n options: Partial<FinalAnswerEvent> = {},\n): FinalAnswerEvent => ({\n type: 'final_answer',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n answer_id: answerId,\n content,\n is_complete: true,\n ...options,\n});\n\nexport const createAuditEnvelopeEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n envelope: AuditEnvelopeEvent['envelope'],\n options: Partial<AuditEnvelopeEvent> = {},\n): AuditEnvelopeEvent => ({\n type: 'audit_envelope',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: envelope.ts,\n version: 1,\n envelope,\n metadata: {\n audit_action: envelope.action,\n run_context: {\n runId: envelope.runId,\n parentId: envelope.parentRunId,\n traceId: envelope.scope?.traceId,\n },\n },\n ...options,\n});\n\nexport const createFinalAnswerChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n seq: number,\n content: string,\n options: Partial<FinalAnswerChunkEvent> = {},\n): FinalAnswerChunkEvent => ({\n type: 'final_answer_chunk',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n answer_id: answerId,\n seq,\n content,\n ...options,\n});\n\nexport const createHistorySummaryEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n replacedMessageIds: string[],\n summarySeq: number,\n options: Partial<HistorySummaryEvent> = {},\n): HistorySummaryEvent => ({\n type: 'history_summary',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n replaced_message_ids: replacedMessageIds,\n summary_seq: summarySeq,\n ...options,\n});\n\nexport const createErrorEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n error: string,\n options: Partial<ErrorEvent> = {},\n): ErrorEvent => ({\n type: 'error',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n error,\n ...options,\n});\n\nexport const createStreamEndEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<StreamEndEvent> = {},\n): StreamEndEvent => ({\n type: 'stream_end',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n ...options,\n});\n","import { z } from 'zod';\n\nexport const ExecutionTraceContext = z.object({\n execution_id: z.string().describe('The unique identifier for a single, complete execution flow.'),\n trace_id: z.string().optional().describe('An optional trace ID for correlating logs in an APM system.'),\n});\n\nconst EventEnvelopeSchema = z.object({\n seq: z.number().int().nonnegative().describe('A monotonically increasing sequence number within a single execution.'),\n timestamp: z.number().describe('The high-precision timestamp of when the event occurred.'),\n trace: ExecutionTraceContext,\n source: z.string().describe(\"The origin of the event, e.g., 'ai', 'tool:file_reader', 'system:summary'.\"),\n payload: z.unknown(),\n render_hint: z.object({\n card: z.enum(['normal', 'collapsible', 'none', 'image', 'interactive']).optional().describe('Hint for how the UI card should be rendered.'),\n content: z.enum(['markdown', 'text', 'json', 'image_url', 'code']).default('text').describe('Hint for how the content itself should be interpreted.'),\n }).optional(),\n run_location: z.enum(['frontend', 'backend']).optional().describe('Specifies where a tool action should be or was executed.'),\n});\n\nexport const EventEnvelope = EventEnvelopeSchema;\n\ntype EventEnvelopeBase = z.infer<typeof EventEnvelopeSchema>;\n\nexport type EventEnvelope<TPayload = unknown> = Omit<EventEnvelopeBase, 'payload'> & {\n payload: TPayload;\n};\n\nexport type ExecutionTraceContext = z.infer<typeof ExecutionTraceContext>;\n","import { z } from 'zod';\n\nexport const BaseSSEEvent = z.object({\n id: z.string(),\n timestamp: z.number(),\n conversation_id: z.string(),\n turn_id: z.string(),\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type BaseSSEEvent = z.infer<typeof BaseSSEEvent>;\n\nexport const SSEThoughtEvent = BaseSSEEvent.extend({\n type: z.literal('thought'),\n thought_message_id: z.string().optional(),\n delta: z.string().optional(),\n content: z.string().optional(),\n is_complete: z.boolean().default(false),\n});\n\nexport type SSEThoughtEvent = z.infer<typeof SSEThoughtEvent>;\n\nexport const SSEFinalAnswerChunkEvent = BaseSSEEvent.extend({\n type: z.literal('final_answer_chunk'),\n answer_id: z.string(),\n seq: z.number().int().nonnegative(),\n chunk: z.string(),\n is_last: z.boolean().optional(),\n});\n\nexport type SSEFinalAnswerChunkEvent = z.infer<typeof SSEFinalAnswerChunkEvent>;\n\nexport const SSEFinalAnswerEvent = BaseSSEEvent.extend({\n type: z.literal('final_answer'),\n answer_id: z.string(),\n content: z.string(),\n meta: z.record(z.any()).optional(),\n});\n\nexport type SSEFinalAnswerEvent = z.infer<typeof SSEFinalAnswerEvent>;\n\nexport const SSEMarkdownChunkEvent = BaseSSEEvent.extend({\n type: z.literal('markdown_chunk'),\n content_type: z.enum(['text', 'code', 'table', 'image']).default('text'),\n text: z.string(),\n seq: z.number().optional(),\n});\n\nexport type SSEMarkdownChunkEvent = z.infer<typeof SSEMarkdownChunkEvent>;\n\nconst BaseSSEToolLifecycleEvent = BaseSSEEvent.extend({\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: z.enum(['start', 'update', 'complete', 'error']),\n status: z.enum(['loading', 'success', 'error']),\n args: z.any().optional(),\n payload: z.any().optional(),\n meta: z.record(z.any()).optional(),\n});\n\nexport const SSEToolCallDecisionEvent = BaseSSEToolLifecycleEvent.extend({\n type: z.literal('tool_call_decision'),\n});\n\nexport type SSEToolCallDecisionEvent = z.infer<typeof SSEToolCallDecisionEvent>;\n\nexport const SSEToolProcessEvent = BaseSSEToolLifecycleEvent.extend({\n type: z.literal('tool_process'),\n});\n\nexport type SSEToolProcessEvent = z.infer<typeof SSEToolProcessEvent>;\n\nexport const SSEToolOutputEvent = BaseSSEEvent.extend({\n type: z.literal('tool_output'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n status: z.enum(['success', 'error']),\n output: z.any().optional(),\n payload: z.record(z.any()).optional(),\n duration_ms: z.number().optional(),\n});\n\nexport type SSEToolOutputEvent = z.infer<typeof SSEToolOutputEvent>;\n\nexport const SSETodoUpdatedEvent = BaseSSEEvent.extend({\n type: z.literal('todo_updated'),\n todo_list_id: z.string(),\n todo_list_version: z.number().int().nonnegative(),\n items: z.array(z.object({\n id: z.string(),\n content: z.string(),\n status: z.enum(['pending', 'in_progress', 'completed', 'cancelled']),\n })),\n});\n\nexport type SSETodoUpdatedEvent = z.infer<typeof SSETodoUpdatedEvent>;\n\nexport const SSESubRunTraceEvent = BaseSSEEvent.extend({\n type: z.literal('subrun_trace'),\n parent_tool_call_id: z.string(),\n subrun_id: z.string(),\n subrun_parent_id: z.string().optional(),\n kind: z.enum([\n 'thought_delta',\n 'thought_complete',\n 'tool_call_decision',\n 'tool_process',\n 'tool_output',\n 'final_answer_chunk',\n 'final_answer',\n ]),\n delta: z.string().optional(),\n content: z.string().optional(),\n tool_name: z.string().optional(),\n tool_call_id: z.string().optional(),\n phase: z.enum(['start', 'update', 'complete', 'error']).optional(),\n status: z.enum(['loading', 'success', 'error']).optional(),\n args: z.unknown().optional(),\n output: z.unknown().optional(),\n duration_ms: z.number().optional(),\n meta: z.record(z.unknown()).optional(),\n});\n\nexport type SSESubRunTraceEvent = z.infer<typeof SSESubRunTraceEvent>;\n\nexport const SSERequiresUserInteractionEvent = BaseSSEEvent.extend({\n type: z.literal('requires_user_interaction'),\n form: z.any().optional(),\n interaction_type: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport type SSERequiresUserInteractionEvent = z.infer<typeof SSERequiresUserInteractionEvent>;\n\nexport const SSEErrorEvent = BaseSSEEvent.extend({\n type: z.literal('error'),\n error: z.string(),\n details: z.any().optional(),\n error_code: z.string().optional(),\n retryable: z.boolean().optional(),\n});\n\nexport type SSEErrorEvent = z.infer<typeof SSEErrorEvent>;\n\nexport const SSEStreamEndEvent = BaseSSEEvent.extend({\n type: z.literal('stream_end'),\n reason: z.enum(['complete', 'error', 'interrupted', 'timeout']).optional(),\n reason_message: z.string().optional(),\n stats: z.object({\n total_events: z.number().optional(),\n duration_ms: z.number().optional(),\n error_count: z.number().optional(),\n benchmark: z.record(z.unknown()).optional(),\n }).optional(),\n});\n\nexport type SSEStreamEndEvent = z.infer<typeof SSEStreamEndEvent>;\n\nexport const SSEHistorySummaryEvent = BaseSSEEvent.extend({\n type: z.literal('history_summary'),\n summary_id: z.string(),\n content: z.string(),\n original_message_count: z.number().int().nonnegative(),\n summary_seq: z.number().int().nonnegative(),\n});\n\nexport type SSEHistorySummaryEvent = z.infer<typeof SSEHistorySummaryEvent>;\n\nexport const SSESummarizationStartEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_start'),\n originalMessages: z.number().optional(),\n});\n\nexport type SSESummarizationStartEvent = z.infer<typeof SSESummarizationStartEvent>;\n\nexport const SSESummarizationEndEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_end'),\n originalMessages: z.number().optional(),\n compressedMessages: z.number().optional(),\n compressionRatio: z.string().optional(),\n timeSaved: z.string().optional(),\n});\n\nexport type SSESummarizationEndEvent = z.infer<typeof SSESummarizationEndEvent>;\n\nexport const SSESummarizationErrorEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_error'),\n error: z.string(),\n});\n\nexport type SSESummarizationErrorEvent = z.infer<typeof SSESummarizationErrorEvent>;\n\nexport const SSEEvent = z.discriminatedUnion('type', [\n SSEThoughtEvent,\n SSEFinalAnswerChunkEvent,\n SSEFinalAnswerEvent,\n SSEMarkdownChunkEvent,\n SSEToolCallDecisionEvent,\n SSEToolProcessEvent,\n SSEToolOutputEvent,\n SSETodoUpdatedEvent,\n SSESubRunTraceEvent,\n SSERequiresUserInteractionEvent,\n SSEErrorEvent,\n SSEStreamEndEvent,\n SSEHistorySummaryEvent,\n SSESummarizationStartEvent,\n SSESummarizationEndEvent,\n SSESummarizationErrorEvent,\n]);\n\nexport type SSEEvent = z.infer<typeof SSEEvent>;\n\nexport const validateSSEEvent = (event: unknown) => SSEEvent.safeParse(event);\n\nexport const createSSEThoughtEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: { thought_message_id?: string; delta?: string; content?: string; is_complete?: boolean } = {},\n): SSEThoughtEvent => ({\n type: 'thought',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n is_complete: false,\n ...options,\n});\n\nexport const createSSEFinalAnswerChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n seq: number,\n chunk: string,\n options: { is_last?: boolean } = {},\n): SSEFinalAnswerChunkEvent => ({\n type: 'final_answer_chunk',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n answer_id: answerId,\n seq,\n chunk,\n ...options,\n});\n\nexport const createSSEFinalAnswerEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n content: string,\n options: Partial<SSEFinalAnswerEvent> = {},\n): SSEFinalAnswerEvent => ({\n type: 'final_answer',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n answer_id: answerId,\n content,\n ...options,\n});\n\nexport const createSSEMarkdownChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n text: string,\n options: Partial<SSEMarkdownChunkEvent> = {},\n): SSEMarkdownChunkEvent => ({\n type: 'markdown_chunk',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n text,\n content_type: 'text',\n ...options,\n});\n\nexport const createSSEToolCallDecisionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n phase: SSEToolCallDecisionEvent['phase'],\n status: SSEToolCallDecisionEvent['status'],\n options: Partial<SSEToolCallDecisionEvent> = {},\n): SSEToolCallDecisionEvent => ({\n type: 'tool_call_decision',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase,\n status,\n ...options,\n});\n\nexport const createSSEToolProcessEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n phase: SSEToolProcessEvent['phase'],\n status: SSEToolProcessEvent['status'],\n options: Partial<SSEToolProcessEvent> = {},\n): SSEToolProcessEvent => ({\n type: 'tool_process',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase,\n status,\n ...options,\n});\n\nexport const createSSEToolOutputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n status: SSEToolOutputEvent['status'],\n output: unknown,\n options: Partial<SSEToolOutputEvent> = {},\n): SSEToolOutputEvent => ({\n type: 'tool_output',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n status,\n output,\n ...options,\n});\n\nexport const createSSETodoUpdatedEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n todoListId: string,\n todoListVersion: number,\n items: SSETodoUpdatedEvent['items'],\n options: Partial<SSETodoUpdatedEvent> = {},\n): SSETodoUpdatedEvent => ({\n type: 'todo_updated',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n todo_list_id: todoListId,\n todo_list_version: todoListVersion,\n items,\n ...options,\n});\n\nexport const createSSESubRunTraceEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n parentToolCallId: string,\n subrunId: string,\n kind: SSESubRunTraceEvent['kind'],\n options: Partial<SSESubRunTraceEvent> = {},\n): SSESubRunTraceEvent => ({\n type: 'subrun_trace',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n parent_tool_call_id: parentToolCallId,\n subrun_id: subrunId,\n kind,\n ...options,\n});\n\nexport const createSSERequiresUserInteractionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<SSERequiresUserInteractionEvent> = {},\n): SSERequiresUserInteractionEvent => ({\n type: 'requires_user_interaction',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n ...options,\n});\n\nexport const createSSEErrorEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n error: string,\n options: Partial<SSEErrorEvent> = {},\n): SSEErrorEvent => ({\n type: 'error',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n error,\n ...options,\n});\n\nexport const createSSEStreamEndEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<SSEStreamEndEvent> = {},\n): SSEStreamEndEvent => ({\n type: 'stream_end',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n ...options,\n});\n\nexport const createSSEHistorySummaryEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n summaryId: string,\n content: string,\n originalMessageCount: number,\n summarySeq: number,\n options: Partial<SSEHistorySummaryEvent> = {},\n): SSEHistorySummaryEvent => ({\n type: 'history_summary',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n summary_id: summaryId,\n content,\n original_message_count: originalMessageCount,\n summary_seq: summarySeq,\n ...options,\n});\n","/**\n * Isomorphic ID generators.\n *\n * 设计约束:\n * - linnkit 是同构 package(既会被 Node-side host 使用,也会被前端 renderer 通过\n * `linnkit/runtime-kernel/events` 等子入口透传 transitive import 拖入 bundle)。\n * - 因此本文件不允许 `import { randomUUID } from 'crypto'`:那会触发 vite\n * `__vite-browser-external` shim,构建时 named import 解析失败。\n * - 改用 Web Crypto API(`globalThis.crypto.randomUUID`),它在所有现代浏览器\n * 与 Node 19+ 上都内置;老 Node 也可通过 `globalThis.crypto.randomUUID` 访问\n * (Node 14.17+ 在 `node:crypto` 暴露了 `webcrypto`,并自 19 起把 `crypto`\n * 挂到 globalThis)。\n * - 极端 fallback:若运行环境同时缺 Web Crypto,则降级为 Math.random RFC4122 v4\n * 生成器;这些 ID 仅用于会话/消息/run/exec/trace 内部去重展示,不承担加密\n * 强度要求,降级在语义上是安全的。\n */\n\ntype WebCryptoLike = { randomUUID?: () => string };\n\nfunction isoRandomUUID(): string {\n const c = (globalThis as unknown as { crypto?: WebCryptoLike }).crypto;\n if (c && typeof c.randomUUID === 'function') {\n return c.randomUUID();\n }\n // Fallback RFC4122 v4(非加密强度)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (ch) => {\n const r = (Math.random() * 16) | 0;\n const v = ch === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction shortRandomId(prefix: string): string {\n return `${prefix}-${isoRandomUUID().replace(/-/g, '').slice(0, 12)}`;\n}\n\nexport function generateMessageId(): string {\n return shortRandomId('msg');\n}\n\nexport function generateConversationId(): string {\n return shortRandomId('conv');\n}\n\nexport function generateRunId(): string {\n return shortRandomId('run');\n}\n\nexport function generateAuditEnvelopeId(): string {\n return shortRandomId('audit');\n}\n\nexport function generateAuditEnvelopeEventId(): string {\n return shortRandomId('audit_evt');\n}\n\nexport function generateExecutionId(): string {\n return shortRandomId('exec');\n}\n\nexport function generateTraceId(): string {\n return shortRandomId('trace');\n}\n","import type { AiMessage, RuntimeEvent, ToolCallWire } from '../../contracts';\nimport type { ToolPresentationPort } from '../tools/ports';\n\nexport interface EventMappingContext {\n conversationId: string;\n turnId: string;\n timestamp?: number;\n /**\n * 事件级扩展元数据(透传到 SSE/RuntimeEvent.metadata)。\n *\n * 中文备注:这里只放跨事件归类信息,不放 ui.hidden 这类单事件展示语义。\n */\n metadata?: Record<string, unknown>;\n}\n\nexport interface SSEMappingOptions {\n emitSse?: boolean;\n skipAlreadyDispatched?: boolean;\n toolPresentationPort?: ToolPresentationPort;\n}\n\nexport interface RuntimeMappingOptions {\n collectRuntime?: boolean;\n skipIncomplete?: boolean;\n toolPresentationPort?: ToolPresentationPort;\n}\n\n/**\n * RuntimeEvent 回放所需的最小会话内存端口。\n *\n * 中文备注:\n * - core 只依赖“写入消息”的最小能力;\n * - 具体产品实现只要结构兼容即可接入。\n */\nexport interface ConversationMemoryPort {\n addUserMessage(content: string, id?: string): void;\n addAssistantMessage(\n content: string | null,\n type: AiMessage['type'] & ('thought' | 'final_answer' | 'tool_calls'),\n metadata?: AiMessage['metadata'],\n id?: string\n ): void;\n addToolResponse(toolCallId: string, content: string, toolName?: string, id?: string): void;\n appendMessage(message: AiMessage): void;\n}\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\nexport const isToolCallWire = (value: unknown): value is ToolCallWire => {\n if (!isRecord(value)) return false;\n if (typeof value.id !== 'string') return false;\n if (value.type !== 'function') return false;\n const fn = value.function;\n return isRecord(fn) && typeof fn.name === 'string' && typeof fn.arguments === 'string';\n};\n\nexport function resolveToolDisplayOptions(\n toolName: string,\n toolPresentationPort?: ToolPresentationPort,\n) {\n return toolPresentationPort?.getDisplayOptions(toolName);\n}\n\nexport function readAnswerIdFromEvent(event: unknown): string | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['answerId'];\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nexport function readMetaFromEvent(event: unknown): Record<string, unknown> | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['meta'];\n return isRecord(value) ? value : undefined;\n}\n\nexport type HistorySummaryRuntimeEvent = RuntimeEvent & {\n type: 'history_summary';\n content: string;\n replaces_start_message_id?: string;\n replaces_end_message_id?: string;\n original_message_count?: number;\n compression_ratio?: number;\n generated_by?: string;\n included_old_summary?: boolean;\n replaced_message_ids?: string[];\n summary_seq?: number;\n};\n","import {\n AnyAgentEvent,\n ErrorEvent as AgentErrorEvent,\n FinalAnswerEvent as AgentFinalAnswerEvent,\n ObservationEvent as AgentObservationEvent,\n StreamChunkEvent as AgentStreamChunkEvent,\n ThoughtEvent as AgentThoughtEvent,\n ToolCallDecisionEvent as AgentToolCallDecisionEvent,\n ToolProcessEvent as AgentToolProcessEvent,\n readAgentEventAnswerId,\n readAgentEventSeq,\n} from './agentEvents';\nimport {\n RuntimeEvent,\n createErrorEvent,\n createFinalAnswerChunkEvent,\n createFinalAnswerEvent,\n createThoughtEvent,\n createToolCallDecisionEvent,\n createToolOutputEvent,\n createToolProcessEvent,\n} from '../../contracts';\nimport { generateMessageId } from '../../shared/ids';\nimport {\n type EventMappingContext,\n type RuntimeMappingOptions,\n isRecord,\n readAnswerIdFromEvent,\n readMetaFromEvent,\n resolveToolDisplayOptions,\n} from './provider-sidecar';\n\nexport function agentEventToRuntime(\n agentEvent: AnyAgentEvent | RuntimeEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions = {},\n): RuntimeEvent | null {\n if (!agentEvent || typeof agentEvent !== 'object') return null;\n\n if (isRecord(agentEvent) && agentEvent['type'] === 'history_summary') {\n const evt = agentEvent as RuntimeEvent;\n if (context.metadata) {\n evt.metadata = { ...(evt.metadata ?? {}), ...context.metadata };\n }\n return evt;\n }\n\n const typed = agentEvent as AnyAgentEvent;\n const { conversationId, turnId } = context;\n const timestamp = typed.timestamp ?? context.timestamp ?? Date.now();\n const id = typed.id ?? generateMessageId();\n const contextMeta = context.metadata;\n\n switch (typed.type) {\n case 'thought':\n return mapThoughtToRuntime(typed as AgentThoughtEvent, context, options, id, timestamp);\n\n case 'tool_call_decision':\n case 'tool_process':\n return mapToolProgressToRuntime(typed, context, options, id, timestamp);\n\n case 'observation': {\n const observationEvent = typed as AgentObservationEvent;\n const toolName = observationEvent.tool_name || 'unknown_tool';\n const toolCallId = observationEvent.tool_call_id || `call_${id}`;\n const success = observationEvent.success ?? !/^错误[::]/i.test(String(observationEvent.output ?? ''));\n const payload = observationEvent.payload || {};\n const event = createToolOutputEvent(\n id,\n conversationId,\n turnId,\n toolName,\n toolCallId,\n observationEvent.output,\n success ? 'success' : 'error',\n { timestamp, payload, duration_ms: payload.duration_ms as number | undefined },\n );\n event.ephemeral = false;\n if (contextMeta) event.metadata = { ...(event.metadata ?? {}), ...contextMeta };\n return event;\n }\n\n case 'final_answer': {\n const finalAnswerEvent = typed as AgentFinalAnswerEvent;\n const answerIdFromSnake =\n typeof finalAnswerEvent.answer_id === 'string' && finalAnswerEvent.answer_id.trim().length > 0\n ? finalAnswerEvent.answer_id.trim()\n : undefined;\n return createFinalAnswerEvent(\n id,\n conversationId,\n turnId,\n answerIdFromSnake ?? readAnswerIdFromEvent(finalAnswerEvent) ?? `answer_${turnId}`,\n finalAnswerEvent.answer ?? '',\n {\n timestamp,\n reasoning_details: Array.isArray(finalAnswerEvent.reasoning_details)\n ? finalAnswerEvent.reasoning_details\n : undefined,\n meta: readMetaFromEvent(finalAnswerEvent),\n },\n );\n }\n\n case 'error': {\n const errorEvent = typed as AgentErrorEvent;\n return createErrorEvent(id, conversationId, turnId, errorEvent.error ?? 'Unknown error', {\n timestamp,\n details: errorEvent.details,\n });\n }\n\n case 'stream_chunk':\n return mapStreamChunkToRuntime(typed as AgentStreamChunkEvent, context, id, timestamp);\n\n default:\n return null;\n }\n}\n\nfunction mapThoughtToRuntime(\n thoughtEvent: AgentThoughtEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions,\n id: string,\n timestamp: number,\n): RuntimeEvent | null {\n const isComplete = 'is_complete' in thoughtEvent ? Boolean(thoughtEvent.is_complete) : false;\n if (options.skipIncomplete && !isComplete) return null;\n\n const thoughtMessageId =\n typeof thoughtEvent.thought_message_id === 'string' && thoughtEvent.thought_message_id.length > 0\n ? thoughtEvent.thought_message_id\n : undefined;\n const runtimeEvent = createThoughtEvent(id, context.conversationId, context.turnId, thoughtEvent.content ?? '', {\n timestamp,\n thought_message_id: thoughtMessageId,\n delta: thoughtEvent.delta,\n is_complete: isComplete,\n });\n if (!isComplete) runtimeEvent.ephemeral = true;\n const thoughtMeta = isRecord(thoughtEvent.meta) ? thoughtEvent.meta : undefined;\n if (context.metadata || thoughtMeta) {\n runtimeEvent.metadata = { ...(runtimeEvent.metadata ?? {}), ...(context.metadata ?? {}), ...(thoughtMeta ?? {}) };\n }\n return runtimeEvent;\n}\n\nfunction mapToolProgressToRuntime(\n toolEvent: AgentToolCallDecisionEvent | AgentToolProcessEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions,\n id: string,\n timestamp: number,\n): RuntimeEvent {\n const toolName = toolEvent.tool_name || 'unknown_tool';\n const toolCallId = toolEvent.tool_call_id || `call_${id}`;\n const meta = toolEvent.meta && typeof toolEvent.meta === 'object' ? { ...toolEvent.meta } : {};\n const displayOptions = resolveToolDisplayOptions(toolName, options.toolPresentationPort);\n if (displayOptions && !meta.displayOptions) meta.displayOptions = displayOptions;\n\n const event = toolEvent.type === 'tool_call_decision'\n ? createToolCallDecisionEvent(id, context.conversationId, context.turnId, toolName, toolCallId, {\n timestamp,\n phase: toolEvent.phase ?? 'start',\n status: toolEvent.status ?? 'loading',\n args: toolEvent.tool_args || {},\n payload: toolEvent.payload || {},\n meta,\n })\n : createToolProcessEvent(id, context.conversationId, context.turnId, toolName, toolCallId, {\n timestamp,\n phase: toolEvent.phase ?? 'start',\n status: toolEvent.status ?? 'loading',\n args: toolEvent.tool_args || {},\n payload: toolEvent.payload || {},\n meta,\n });\n event.ephemeral = meta.ephemeral === true;\n if (context.metadata) event.metadata = { ...(event.metadata ?? {}), ...context.metadata };\n return event;\n}\n\nfunction mapStreamChunkToRuntime(\n streamEvent: AgentStreamChunkEvent,\n context: EventMappingContext,\n id: string,\n timestamp: number,\n): RuntimeEvent | null {\n const text = streamEvent.content ?? '';\n if (!text) return null;\n const answerId = readAgentEventAnswerId(streamEvent) ?? `answer_${context.turnId}`;\n const seq = readAgentEventSeq(streamEvent) ?? 0;\n const isLast = Boolean(\n ('isLast' in streamEvent && streamEvent.isLast) ||\n ('is_last' in streamEvent && streamEvent.is_last),\n );\n const chunkEvent = createFinalAnswerChunkEvent(id, context.conversationId, context.turnId, answerId, seq, text, {\n timestamp,\n is_last: isLast,\n });\n chunkEvent.ephemeral = true;\n if (context.metadata) chunkEvent.metadata = { ...(chunkEvent.metadata ?? {}), ...context.metadata };\n return chunkEvent;\n}\n","import type {\n AiMessage,\n RuntimeEvent,\n ThoughtEvent as RuntimeThoughtEvent,\n ToolCallDecisionEvent as RuntimeToolCallDecisionEvent,\n ToolOutputEvent as RuntimeToolOutputEvent,\n FinalAnswerEvent as RuntimeFinalAnswerEvent,\n UserInputEvent as RuntimeUserInputEvent,\n ToolCallWire,\n} from '../../contracts';\nimport {\n type ConversationMemoryPort,\n type HistorySummaryRuntimeEvent,\n isToolCallWire,\n} from './provider-sidecar';\n\nexport function applyRuntimeEventToMemory(event: RuntimeEvent, memory: ConversationMemoryPort): void {\n if (!event || !memory) return;\n\n switch (event.type) {\n case 'user_input': {\n const userEvent = event as RuntimeUserInputEvent;\n memory.addUserMessage(userEvent.content || '', userEvent.id);\n break;\n }\n\n case 'tool_call_decision':\n applyToolCallDecision(event as RuntimeToolCallDecisionEvent, memory);\n break;\n\n case 'tool_output':\n applyToolOutput(event as RuntimeToolOutputEvent, memory);\n break;\n\n case 'final_answer': {\n const answerEvent = event as RuntimeFinalAnswerEvent;\n const answerContent = answerEvent.content || '';\n if (answerContent.trim()) {\n const metadata = Array.isArray(answerEvent.reasoning_details)\n ? { reasoning_details: answerEvent.reasoning_details }\n : undefined;\n memory.addAssistantMessage(answerContent, 'final_answer', metadata, answerEvent.id);\n }\n break;\n }\n\n case 'thought': {\n const thoughtEvent = event as RuntimeThoughtEvent;\n memory.addAssistantMessage(thoughtEvent.content || '', 'thought', undefined, thoughtEvent.id);\n break;\n }\n\n case 'history_summary':\n applyHistorySummary(event as HistorySummaryRuntimeEvent, memory);\n break;\n\n case 'error':\n break;\n\n default:\n break;\n }\n}\n\nfunction applyToolCallDecision(event: RuntimeToolCallDecisionEvent, memory: ConversationMemoryPort): void {\n const payload = event.payload || {};\n const toolCalls = Array.isArray(payload.tool_calls)\n ? payload.tool_calls.filter(isToolCallWire)\n : [];\n const toolArgs = event.args || payload.args || {};\n const toolCallId = event.tool_call_id ||\n (toolCalls.length > 0 ? toolCalls[0].id : `call_${event.id || Date.now()}`);\n\n const normalizedToolCalls: ToolCallWire[] = toolCalls.length > 0\n ? toolCalls\n : [\n {\n id: toolCallId,\n type: 'function',\n function: { name: event.tool_name, arguments: JSON.stringify(toolArgs || {}) },\n },\n ];\n const reasoningDetails = Array.isArray(payload.reasoning_details)\n ? payload.reasoning_details\n : undefined;\n\n memory.addAssistantMessage(\n null,\n 'tool_calls',\n {\n tool_calls: normalizedToolCalls,\n ...(reasoningDetails ? { reasoning_details: reasoningDetails } : {}),\n },\n event.id,\n );\n}\n\nfunction applyToolOutput(event: RuntimeToolOutputEvent, memory: ConversationMemoryPort): void {\n if (!event.tool_call_id) return;\n const payload = event.payload || {};\n const outputValue = payload.result ?? payload.output ?? event.output;\n let serializedOutput: string;\n if (typeof outputValue === 'string') {\n serializedOutput = outputValue;\n } else {\n try {\n serializedOutput = JSON.stringify(outputValue ?? '');\n } catch {\n serializedOutput = String(outputValue ?? '');\n }\n }\n memory.addToolResponse(String(event.tool_call_id), serializedOutput, event.tool_name, event.id);\n}\n\nfunction applyHistorySummary(summaryEvent: HistorySummaryRuntimeEvent, memory: ConversationMemoryPort): void {\n const summaryMetadata: AiMessage['metadata'] = {\n messageType: 'summary',\n generatedBy: summaryEvent.generated_by || 'AgentSummarizationProvider',\n originalMessageCount: summaryEvent.original_message_count,\n compressionRatio: summaryEvent.compression_ratio,\n includedOldSummary: summaryEvent.included_old_summary,\n replacesStartMessageId: summaryEvent.replaces_start_message_id,\n replacesEndMessageId: summaryEvent.replaces_end_message_id,\n replacedMessageIds: Array.isArray(summaryEvent.replaced_message_ids) ? summaryEvent.replaced_message_ids : [],\n summarySeq: summaryEvent.summary_seq || 0,\n };\n\n const summaryMessage: AiMessage = {\n id: summaryEvent.id,\n role: 'system',\n type: 'history_summary',\n content: summaryEvent.content || '',\n timestamp: summaryEvent.timestamp,\n metadata: summaryMetadata,\n };\n\n memory.appendMessage(summaryMessage);\n}\n","import {\n AnyAgentEvent,\n ErrorEvent as AgentErrorEvent,\n FinalAnswerEvent as AgentFinalAnswerEvent,\n ObservationEvent as AgentObservationEvent,\n StreamChunkEvent as AgentStreamChunkEvent,\n ThoughtEvent as AgentThoughtEvent,\n ToolCallDecisionEvent as AgentToolCallDecisionEvent,\n ToolProcessEvent as AgentToolProcessEvent,\n isMarkedAsSseDispatched,\n readAgentEventAnswerId,\n readAgentEventSeq,\n} from './agentEvents';\nimport {\n createSSEErrorEvent,\n createSSEFinalAnswerChunkEvent,\n createSSEFinalAnswerEvent,\n createSSEThoughtEvent,\n createSSEToolCallDecisionEvent,\n createSSEToolOutputEvent,\n createSSEToolProcessEvent,\n type SSEEvent,\n} from '../../contracts';\nimport { generateMessageId } from '../../shared/ids';\nimport {\n type EventMappingContext,\n type SSEMappingOptions,\n isRecord,\n readAnswerIdFromEvent,\n readMetaFromEvent,\n resolveToolDisplayOptions,\n} from './provider-sidecar';\n\nexport function agentEventToSSE(\n agentEvent: AnyAgentEvent,\n context: EventMappingContext,\n options: SSEMappingOptions = {},\n): SSEEvent | null {\n if (!agentEvent || typeof agentEvent !== 'object') return null;\n if (options.skipAlreadyDispatched && isMarkedAsSseDispatched(agentEvent)) return null;\n\n const { conversationId, turnId } = context;\n const timestamp = agentEvent.timestamp ?? context.timestamp ?? Date.now();\n const id = agentEvent.id ?? generateMessageId();\n const contextMeta = context.metadata;\n\n switch (agentEvent.type) {\n case 'thought': {\n const thoughtEvent = agentEvent as AgentThoughtEvent;\n const rawContent = 'content' in thoughtEvent ? thoughtEvent.content : '';\n const delta = 'delta' in thoughtEvent ? thoughtEvent.delta : '';\n const isComplete = 'is_complete' in thoughtEvent ? Boolean(thoughtEvent.is_complete) : false;\n const thoughtMessageId =\n typeof thoughtEvent.thought_message_id === 'string' && thoughtEvent.thought_message_id.length > 0\n ? thoughtEvent.thought_message_id\n : undefined;\n\n const sse = createSSEThoughtEvent(id, conversationId, turnId, {\n thought_message_id: thoughtMessageId,\n content: isComplete ? (rawContent ?? '') : undefined,\n delta: !isComplete ? (delta ?? rawContent) : undefined,\n is_complete: isComplete,\n });\n sse.timestamp = timestamp;\n const thoughtMeta = isRecord(thoughtEvent.meta) ? thoughtEvent.meta : undefined;\n if (contextMeta || thoughtMeta) {\n sse.metadata = { ...(contextMeta ?? {}), ...(thoughtMeta ?? {}) };\n }\n return sse;\n }\n\n case 'tool_call_decision':\n case 'tool_process':\n return mapToolProgressToSse(agentEvent, context, options, id, timestamp);\n\n case 'observation': {\n const observationEvent = agentEvent as AgentObservationEvent;\n const toolName = observationEvent.tool_name || 'unknown_tool';\n const toolCallId = observationEvent.tool_call_id || `call_${id}`;\n const status: 'success' | 'error' = observationEvent.success === false ? 'error' : 'success';\n const payload = observationEvent.payload || {};\n const duration = payload.duration_ms as number | undefined;\n const sse = createSSEToolOutputEvent(\n id,\n conversationId,\n turnId,\n toolName,\n toolCallId,\n status,\n observationEvent.output,\n { timestamp, payload, duration_ms: duration },\n );\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'stream_chunk': {\n const streamEvent = agentEvent as AgentStreamChunkEvent;\n const text = streamEvent.content ?? '';\n if (!text) return null;\n const answerId = readAgentEventAnswerId(streamEvent) ?? `answer_${turnId}`;\n const seq = readAgentEventSeq(streamEvent) ?? 0;\n const isLast = Boolean(\n ('isLast' in streamEvent && streamEvent.isLast) ||\n ('is_last' in streamEvent && streamEvent.is_last),\n );\n const sse = createSSEFinalAnswerChunkEvent(id, conversationId, turnId, answerId, seq, text, {\n is_last: isLast,\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'final_answer': {\n const finalAnswerEvent = agentEvent as AgentFinalAnswerEvent;\n const answer = finalAnswerEvent.answer ?? '';\n const answerIdFromSnake =\n typeof finalAnswerEvent.answer_id === 'string' && finalAnswerEvent.answer_id.trim().length > 0\n ? finalAnswerEvent.answer_id.trim()\n : undefined;\n const answerId = answerIdFromSnake ?? readAnswerIdFromEvent(finalAnswerEvent) ?? `answer_${turnId}`;\n const sse = createSSEFinalAnswerEvent(id, conversationId, turnId, answerId, answer, {\n meta: readMetaFromEvent(finalAnswerEvent),\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'error': {\n const errorEvent = agentEvent as AgentErrorEvent;\n const sse = createSSEErrorEvent(id, conversationId, turnId, errorEvent.error ?? 'Unknown error', {\n details: errorEvent.details,\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n default:\n return null;\n }\n}\n\nfunction mapToolProgressToSse(\n agentEvent: AgentToolCallDecisionEvent | AgentToolProcessEvent,\n context: EventMappingContext,\n options: SSEMappingOptions,\n id: string,\n timestamp: number,\n): SSEEvent {\n const toolName = agentEvent.tool_name || 'unknown_tool';\n const toolCallId = agentEvent.tool_call_id || `call_${id}`;\n const phase = agentEvent.phase ?? 'start';\n const status = agentEvent.status ?? 'loading';\n const args = agentEvent.tool_args || {};\n const payload = agentEvent.payload || {};\n const meta = agentEvent.meta && typeof agentEvent.meta === 'object' ? { ...agentEvent.meta } : {};\n const displayOptions = resolveToolDisplayOptions(toolName, options.toolPresentationPort);\n if (displayOptions && !meta.displayOptions) meta.displayOptions = displayOptions;\n\n const sse = agentEvent.type === 'tool_call_decision'\n ? createSSEToolCallDecisionEvent(id, context.conversationId, context.turnId, toolName, toolCallId, phase, status, {\n timestamp,\n args,\n payload,\n meta,\n })\n : createSSEToolProcessEvent(id, context.conversationId, context.turnId, toolName, toolCallId, phase, status, {\n timestamp,\n args,\n payload,\n meta,\n });\n sse.timestamp = timestamp;\n if (context.metadata) sse.metadata = context.metadata;\n return sse;\n}\n","/**\n * @file src/agent/runtime-kernel/events/eventMappers.ts\n * @brief 统一事件映射器兼容出口\n *\n * @description\n * 具体职责已拆分:\n * - sse-projection.ts:AnyAgentEvent → SSEEvent\n * - agent-to-runtime.ts:AnyAgentEvent → RuntimeEvent\n * - runtime-to-ai-message.ts:RuntimeEvent → ConversationMemoryPort\n * - provider-sidecar.ts:sidecar/tool_call/displayOptions 相关共享工具与类型\n */\n\nimport type { AnyAgentEvent } from './agentEvents';\nimport type { RuntimeEvent } from '../../contracts';\nimport { agentEventToRuntime } from './agent-to-runtime';\nimport {\n type ConversationMemoryPort,\n type EventMappingContext,\n type RuntimeMappingOptions,\n type SSEMappingOptions,\n} from './provider-sidecar';\nimport { applyRuntimeEventToMemory } from './runtime-to-ai-message';\nimport { agentEventToSSE } from './sse-projection';\n\nexport { agentEventToRuntime } from './agent-to-runtime';\nexport {\n type ConversationMemoryPort,\n type EventMappingContext,\n type RuntimeMappingOptions,\n type SSEMappingOptions,\n} from './provider-sidecar';\nexport { applyRuntimeEventToMemory } from './runtime-to-ai-message';\nexport { agentEventToSSE } from './sse-projection';\n\n/**\n * 统一的事件映射器。\n *\n * 中文备注:\n * - 保持旧调用方式 `eventMapper.xxx` 不变;\n * - 新逻辑不要继续写回本文件,按职责放到拆分后的模块。\n */\nexport const eventMapper = {\n /**\n * 将 AgentEvent 转换为 SSEEvent。\n */\n agentToSse: agentEventToSSE,\n\n /**\n * 将 AgentEvent 转换为 RuntimeEvent。\n */\n agentToRuntime: agentEventToRuntime,\n\n /**\n * 将 RuntimeEvent 应用到 ConversationMemoryPort。\n */\n applyToMemory: applyRuntimeEventToMemory,\n\n /**\n * 批量处理 AgentEvent → SSEEvent + RuntimeEvent。\n */\n agentToBoth: (\n agentEvent: AnyAgentEvent,\n context: EventMappingContext,\n options: { sseOptions?: SSEMappingOptions; runtimeOptions?: RuntimeMappingOptions } = {},\n ) => {\n const sseEvent = agentEventToSSE(agentEvent, context, options.sseOptions);\n const runtimeEvent = agentEventToRuntime(agentEvent, context, options.runtimeOptions);\n return { sseEvent, runtimeEvent };\n },\n\n /**\n * 批量重建内存。\n */\n rebuildMemory: (events: RuntimeEvent[], memory: ConversationMemoryPort) => {\n for (const event of events) {\n applyRuntimeEventToMemory(event, memory);\n }\n },\n};\n","import type { RuntimeEvent } from '../../contracts';\n\n/**\n * 中文备注:\n * - 本文件是事件生命周期治理的唯一入口;\n * - 目标是把“是否持久化 / 是否进入上下文 / 是否属于工具决策”这些规则从散落判断收敛到单点;\n * - 后续新增事件时,优先修改这里,而不是去 bridge / orchestrator / converter / projector 各补一份条件。\n */\n\ntype TypedEvent = {\n type: string;\n metadata?: Record<string, unknown>;\n content?: string;\n};\n\nexport type RuntimeEventUiProjectionKind =\n | 'hidden'\n | 'user_input'\n | 'thought'\n | 'final_answer'\n | 'final_answer_chunk'\n | 'tool_call_decision'\n | 'tool_process'\n | 'tool_output'\n | 'requires_user_interaction'\n | 'audit_envelope'\n | 'todo_updated'\n | 'subrun_trace'\n | 'error'\n | 'stream_end'\n | 'history_summary'\n | 'checkpoint_history_summary'\n | 'unsupported';\n\nexport type RuntimeEventRealtimeChannel = 'event_bus_sse' | 'none';\n\nexport interface RuntimeEventLifecycleDecision {\n uiProjectionKind: RuntimeEventUiProjectionKind;\n persist: boolean;\n replayToUi: boolean;\n enterAgentContext: boolean;\n realtimeChannel: RuntimeEventRealtimeChannel;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function isToolCallDecisionEvent<T extends { type: string }>(\n event: T,\n): event is T & { type: 'tool_call_decision' } {\n return event.type === 'tool_call_decision';\n}\n\nexport function isToolProcessEvent<T extends { type: string }>(\n event: T,\n): event is T & { type: 'tool_process' } {\n return event.type === 'tool_process';\n}\n\nexport function isTodoUpdatedRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'todo_updated' }> {\n return event.type === 'todo_updated';\n}\n\nexport function isSubRunTraceRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'subrun_trace' }> {\n return event.type === 'subrun_trace';\n}\n\nexport function isStreamEndRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'stream_end' }> {\n return event.type === 'stream_end';\n}\n\nexport function isRequiresUserInteractionRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'requires_user_interaction' }> {\n return event.type === 'requires_user_interaction';\n}\n\nexport function isAuditEnvelopeRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'audit_envelope' }> {\n return event.type === 'audit_envelope';\n}\n\nexport function isControlRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'control' }> {\n return event.type === 'control';\n}\n\nexport function isHiddenUserInputEvent(event: RuntimeEvent): boolean {\n if (event.type !== 'user_input') {\n return false;\n }\n\n const metadata = isRecord(event.metadata) ? event.metadata : undefined;\n const ui = metadata && isRecord(metadata.ui) ? metadata.ui : undefined;\n return ui?.presentation === 'hidden';\n}\n\nexport function isEmptyTerminalAssistantRuntimeEvent(event: RuntimeEvent): boolean {\n if (event.type !== 'thought' && event.type !== 'final_answer') {\n return false;\n }\n\n return event.content.trim().length === 0;\n}\n\nexport function shouldPersistRuntimeEvent(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).persist;\n}\n\nexport function shouldReplayRuntimeEventToUi(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).replayToUi;\n}\n\nexport function shouldEnterAgentContext(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).enterAgentContext;\n}\n\nexport function shouldCreateToolCallMessage(event: TypedEvent): boolean {\n return isToolCallDecisionEvent(event);\n}\n\nexport function isCheckpointHistorySummaryEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'history_summary' }> {\n if (event.type !== 'history_summary') {\n return false;\n }\n\n const metadata = isRecord(event.metadata) ? event.metadata : undefined;\n return metadata?.summary_kind === 'checkpoint';\n}\n\nexport function getRuntimeEventUiProjectionKind(\n event: RuntimeEvent,\n): RuntimeEventUiProjectionKind {\n if (isHiddenUserInputEvent(event)) {\n return 'hidden';\n }\n\n switch (event.type) {\n case 'user_input':\n return 'user_input';\n case 'thought':\n return 'thought';\n case 'final_answer':\n return 'final_answer';\n case 'final_answer_chunk':\n return 'final_answer_chunk';\n case 'tool_call_decision':\n return 'tool_call_decision';\n case 'tool_process':\n return 'tool_process';\n case 'tool_output':\n return 'tool_output';\n case 'requires_user_interaction':\n return 'requires_user_interaction';\n case 'audit_envelope':\n return 'audit_envelope';\n case 'todo_updated':\n return 'todo_updated';\n case 'subrun_trace':\n return 'subrun_trace';\n case 'error':\n return 'error';\n case 'stream_end':\n return 'stream_end';\n case 'history_summary':\n return isCheckpointHistorySummaryEvent(event)\n ? 'checkpoint_history_summary'\n : 'history_summary';\n default:\n return 'unsupported';\n }\n}\n\nexport function describeRuntimeEventLifecycle(\n event: RuntimeEvent,\n): RuntimeEventLifecycleDecision {\n const uiProjectionKind = getRuntimeEventUiProjectionKind(event);\n const persist = event.ephemeral !== true && !isToolProcessEvent(event);\n\n const replayToUi =\n uiProjectionKind !== 'hidden' &&\n uiProjectionKind !== 'audit_envelope' &&\n uiProjectionKind !== 'final_answer_chunk' &&\n uiProjectionKind !== 'unsupported';\n\n const enterAgentContext = (() => {\n if (isTodoUpdatedRuntimeEvent(event)) {\n return false;\n }\n\n if (isSubRunTraceRuntimeEvent(event)) {\n return false;\n }\n\n if (isStreamEndRuntimeEvent(event)) {\n return false;\n }\n\n if (isRequiresUserInteractionRuntimeEvent(event)) {\n return false;\n }\n\n if (isAuditEnvelopeRuntimeEvent(event)) {\n return false;\n }\n\n if (isControlRuntimeEvent(event)) {\n return false;\n }\n\n if (isHiddenUserInputEvent(event)) {\n return false;\n }\n\n if (isToolProcessEvent(event)) {\n return false;\n }\n\n if (event.type === 'final_answer_chunk') {\n return false;\n }\n\n if (isEmptyTerminalAssistantRuntimeEvent(event)) {\n return false;\n }\n\n return true;\n })();\n\n const realtimeChannel: RuntimeEventRealtimeChannel = (() => {\n switch (uiProjectionKind) {\n case 'thought':\n case 'final_answer':\n case 'final_answer_chunk':\n case 'tool_call_decision':\n case 'tool_process':\n case 'tool_output':\n case 'requires_user_interaction':\n case 'todo_updated':\n case 'subrun_trace':\n case 'error':\n return 'event_bus_sse';\n case 'audit_envelope':\n return 'none';\n default:\n return 'none';\n }\n })();\n\n return {\n uiProjectionKind,\n persist,\n replayToUi,\n enterAgentContext,\n realtimeChannel,\n };\n}\n\nexport function shouldEmitRuntimeEventToSse(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).realtimeChannel === 'event_bus_sse';\n}\n"]}
1
+ {"version":3,"sources":["../../src/runtime-kernel/events/agentEvents.ts","../../src/contracts/messages.ts","../../src/contracts/contextPolicy.ts","../../src/contracts/agentSpec.ts","../../src/contracts/audit.ts","../../src/contracts/events.ts","../../src/contracts/execution.ts","../../src/contracts/sse.ts","../../src/shared/ids.ts","../../src/runtime-kernel/events/provider-sidecar.ts","../../src/runtime-kernel/events/agent-to-runtime.ts","../../src/runtime-kernel/events/runtime-to-ai-message.ts","../../src/runtime-kernel/events/sse-projection.ts","../../src/runtime-kernel/events/eventMappers.ts","../../src/runtime-kernel/events/eventGovernance.ts"],"names":["z","JsonRecord","isRecord"],"mappings":"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","file":"events.js","sourcesContent":["/**\n * @file runtime-kernel/events/agentEvents.ts\n * @description graph 主执行链使用的最小 Agent 事件契约\n *\n * 中文备注:\n * - 该文件只承载 runtime-kernel 主链路真正需要识别的事件子集;\n * - 目标是让 `executor` / `llmNode` / `eventMappers` 不再反向依赖宿主或产品层事件定义;\n * - host/product 层若有更丰富的事件,只要结构兼容,仍可在边界透传进来。\n */\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport interface AgentEvent {\n type: string;\n timestamp: number;\n id?: string;\n /**\n * 中文备注:\n * - 该标记只在运行期内存中使用,用于避免同一事件被 SSE 重复分发;\n * - 不属于持久化协议字段。\n */\n __dispatched_via_sse__?: true;\n}\n\ninterface BaseToolLifecycleAgentEvent extends AgentEvent {\n tool_name: string;\n tool_args: Record<string, unknown>;\n tool_calls?: unknown[];\n tool_call_id?: string;\n phase?: 'start' | 'update' | 'complete' | 'error';\n status?: 'loading' | 'success' | 'error';\n payload?: Record<string, unknown>;\n meta?: Record<string, unknown>;\n}\n\nexport interface ThoughtEvent extends AgentEvent {\n type: 'thought';\n content: string;\n delta?: string;\n is_complete?: boolean;\n meta?: Record<string, unknown>;\n thought_message_id?: string;\n}\n\nexport interface ToolCallDecisionEvent extends BaseToolLifecycleAgentEvent {\n type: 'tool_call_decision';\n}\n\nexport interface ToolProcessEvent extends BaseToolLifecycleAgentEvent {\n type: 'tool_process';\n}\n\nexport interface ObservationEvent extends AgentEvent {\n type: 'observation';\n tool_name: string;\n tool_call_id?: string;\n output: string;\n success?: boolean;\n payload?: Record<string, unknown>;\n duration_ms?: number;\n}\n\nexport interface FinalAnswerEvent extends AgentEvent {\n type: 'final_answer';\n answer: string;\n answer_id?: string;\n answerId?: string;\n reasoning_details?: unknown[];\n meta?: Record<string, unknown>;\n}\n\nexport interface ErrorEvent extends AgentEvent {\n type: 'error';\n error: string;\n details?: string;\n}\n\nexport interface StreamChunkEvent extends AgentEvent {\n type: 'stream_chunk';\n content: string;\n answer_id?: string;\n seq?: number;\n is_last?: boolean;\n isLast?: boolean;\n}\n\nexport interface ProviderSidecarEvent extends AgentEvent {\n type: 'provider_sidecar';\n reasoning_details?: unknown[];\n}\n\nexport type AnyAgentEvent =\n | ThoughtEvent\n | ToolCallDecisionEvent\n | ToolProcessEvent\n | ObservationEvent\n | FinalAnswerEvent\n | ErrorEvent\n | StreamChunkEvent\n | ProviderSidecarEvent;\n\nexport function isMarkedAsSseDispatched(event: unknown): boolean {\n return isRecord(event) && event['__dispatched_via_sse__'] === true;\n}\n\nexport function readAgentEventAnswerId(event: unknown): string | undefined {\n if (!isRecord(event)) return undefined;\n\n const snake = event['answer_id'];\n if (typeof snake === 'string' && snake.trim().length > 0) {\n return snake.trim();\n }\n\n const camel = event['answerId'];\n if (typeof camel === 'string' && camel.trim().length > 0) {\n return camel.trim();\n }\n\n return undefined;\n}\n\nexport function readAgentEventSeq(event: unknown): number | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['seq'];\n return Number.isInteger(value) ? Number(value) : undefined;\n}\n","import { z } from 'zod';\n\nexport const ProviderReasoningDetails = z.array(z.unknown());\nexport type ProviderReasoningDetails = z.infer<typeof ProviderReasoningDetails>;\n\nexport const ToolCallExtraContent = z.object({\n google: z.object({\n thought_signature: z.string().optional(),\n }).passthrough().optional(),\n}).passthrough();\n\nexport type ToolCallExtraContent = z.infer<typeof ToolCallExtraContent>;\n\nexport const ToolCallWire = z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n extra_content: ToolCallExtraContent.optional(),\n}).passthrough();\n\nexport type ToolCallWire = z.infer<typeof ToolCallWire>;\n\nexport const HistorySummaryMeta = z.object({\n messageType: z.literal('summary'),\n originalMessageCount: z.number().int().positive(),\n compressionRatio: z.number().min(0).max(1).optional(),\n includedOldSummary: z.boolean(),\n replacedMessageIds: z.array(z.string()),\n summarySeq: z.number().int().nonnegative(),\n});\n\nexport type HistorySummaryMeta = z.infer<typeof HistorySummaryMeta>;\n\nexport const ToolCallsMeta = z.object({\n tool_calls: z.array(ToolCallWire),\n reasoning_details: ProviderReasoningDetails.optional(),\n});\n\nexport type ToolCallsMeta = z.infer<typeof ToolCallsMeta>;\n\nexport const ToolOutputMeta = z.object({\n tool_name: z.string(),\n args: z.record(z.unknown()).optional(),\n tool_call_id: z.string(),\n});\n\nexport type ToolOutputMeta = z.infer<typeof ToolOutputMeta>;\n\nexport const ImageInfoMeta = z.object({\n url: z.string().optional(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n format: z.string().optional(),\n size: z.number().int().nonnegative().optional(),\n});\n\nexport type ImageInfoMeta = z.infer<typeof ImageInfoMeta>;\n\nexport const TaskTrackingMeta = z.object({\n taskType: z.string().optional(),\n taskId: z.string().optional(),\n taskStatus: z.enum(['requested', 'in_progress', 'completed', 'failed']).optional(),\n taskTrackingInfo: z.object({\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n duration: z.number().optional(),\n retryCount: z.number().int().nonnegative().optional(),\n lastError: z.string().optional(),\n }).optional(),\n});\n\nexport type TaskTrackingMeta = z.infer<typeof TaskTrackingMeta>;\n\nexport const PersistentMetadata = z.object({\n messageType: z.literal('summary').optional(),\n originalMessageCount: z.number().int().positive().optional(),\n compressionRatio: z.number().min(0).max(1).optional(),\n includedOldSummary: z.boolean().optional(),\n replacedMessageIds: z.array(z.string()).optional(),\n summarySeq: z.number().int().nonnegative().optional(),\n tool_calls: z.array(ToolCallWire).optional(),\n reasoning_details: ProviderReasoningDetails.optional(),\n tool_name: z.string().optional(),\n args: z.record(z.unknown()).optional(),\n tool_call_id: z.string().optional(),\n raw_output: z.string().optional(),\n image_info: ImageInfoMeta.optional(),\n taskType: z.string().optional(),\n taskId: z.string().optional(),\n taskStatus: z.enum(['requested', 'in_progress', 'completed', 'failed']).optional(),\n taskTrackingInfo: z.object({\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n duration: z.number().optional(),\n retryCount: z.number().int().nonnegative().optional(),\n lastError: z.string().optional(),\n }).optional(),\n fenceKind: z.string().optional(),\n fenceAttrs: z.record(z.unknown()).optional(),\n fencePlacement: z.string().optional(),\n}).passthrough();\n\nexport type PersistentMetadata = z.infer<typeof PersistentMetadata>;\n\nconst BaseMessage = z.object({\n id: z.string(),\n content: z.string(),\n timestamp: z.number().int().nonnegative(),\n metadata: PersistentMetadata.optional(),\n});\n\nexport const SystemMessage = BaseMessage.extend({\n role: z.literal('system'),\n type: z.enum(['system_prompt', 'history_summary', 'context_injection']),\n});\n\nexport type SystemMessage = z.infer<typeof SystemMessage>;\n\nexport const UserMessage = BaseMessage.extend({\n role: z.literal('user'),\n type: z.enum([\n 'user_input',\n 'context_injection',\n 'context_before',\n 'context_after',\n 'document_fragment',\n 'task_request',\n 'image',\n ]),\n});\n\nexport type UserMessage = z.infer<typeof UserMessage>;\n\nexport const AssistantMessage = BaseMessage.extend({\n role: z.literal('assistant'),\n type: z.enum([\n 'thought',\n 'final_answer',\n 'tool_code',\n 'tool_calls',\n 'task_completion',\n ]),\n});\n\nexport type AssistantMessage = z.infer<typeof AssistantMessage>;\n\nexport const ToolMessage = BaseMessage.extend({\n role: z.literal('tool'),\n type: z.literal('tool_output'),\n});\n\nexport type ToolMessage = z.infer<typeof ToolMessage>;\n\nexport const AiMessage = z.discriminatedUnion('role', [\n SystemMessage,\n UserMessage,\n AssistantMessage,\n ToolMessage,\n]);\n\nexport type AiMessage = z.infer<typeof AiMessage>;\n\nexport function createSystemMessage(\n type: SystemMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): SystemMessage {\n return {\n id: crypto.randomUUID(),\n role: 'system',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createUserMessage(\n type: UserMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): UserMessage {\n return {\n id: crypto.randomUUID(),\n role: 'user',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createAssistantMessage(\n type: AssistantMessage['type'],\n content: string,\n metadata?: PersistentMetadata,\n): AssistantMessage {\n return {\n id: crypto.randomUUID(),\n role: 'assistant',\n type,\n content,\n timestamp: Date.now(),\n metadata,\n };\n}\n\nexport function createToolMessage(\n content: string,\n toolCallId: string,\n toolName: string,\n metadata?: PersistentMetadata,\n): ToolMessage {\n return {\n id: crypto.randomUUID(),\n role: 'tool',\n type: 'tool_output',\n content,\n timestamp: Date.now(),\n metadata: {\n ...metadata,\n tool_call_id: toolCallId,\n tool_name: toolName,\n },\n };\n}\n\nexport function createHistorySummaryMessage(\n content: string,\n summaryMeta: HistorySummaryMeta,\n): SystemMessage {\n return {\n id: crypto.randomUUID(),\n role: 'system',\n type: 'history_summary',\n content,\n timestamp: Date.now(),\n metadata: summaryMeta,\n };\n}\n\nexport function validateAiMessage(data: unknown): z.SafeParseReturnType<unknown, AiMessage> {\n return AiMessage.safeParse(data);\n}\n\nexport function validateHistorySummaryMeta(\n data: unknown,\n): z.SafeParseReturnType<unknown, HistorySummaryMeta> {\n return HistorySummaryMeta.safeParse(data);\n}\n\nexport function isSystemMessage(message: AiMessage): message is SystemMessage {\n return message.role === 'system';\n}\n\nexport function isUserMessage(message: AiMessage): message is UserMessage {\n return message.role === 'user';\n}\n\nexport function isAssistantMessage(message: AiMessage): message is AssistantMessage {\n return message.role === 'assistant';\n}\n\nexport function isToolMessage(message: AiMessage): message is ToolMessage {\n return message.role === 'tool';\n}\n\nexport function isHistorySummaryMessage(message: AiMessage): message is SystemMessage {\n return message.role === 'system'\n && message.type === 'history_summary'\n && message.metadata?.messageType === 'summary';\n}\n\nexport function hasToolCalls(message: AiMessage): boolean {\n return message.role === 'assistant'\n && Array.isArray(message.metadata?.tool_calls)\n && message.metadata.tool_calls.length > 0;\n}\n","import { z } from 'zod';\n\ntype SerializableJsonValue =\n | string\n | number\n | boolean\n | null\n | SerializableJsonValue[]\n | { [key: string]: SerializableJsonValue };\n\nconst SerializableJsonValueSchema: z.ZodType<SerializableJsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(SerializableJsonValueSchema),\n z.record(z.string(), SerializableJsonValueSchema),\n ]),\n);\n\nconst SerializableJsonRecord = z.record(z.string(), SerializableJsonValueSchema);\n\nexport const AgentSpecMessageType = z.enum([\n 'system_prompt',\n 'history_summary',\n 'context_injection',\n 'user_input',\n 'context_before',\n 'context_after',\n 'document_fragment',\n 'task_request',\n 'image',\n 'thought',\n 'final_answer',\n 'tool_code',\n 'tool_calls',\n 'task_completion',\n 'tool_output',\n]);\nexport type AgentSpecMessageType = z.infer<typeof AgentSpecMessageType>;\n\nexport const AgentSpecBudgetPolicy = z.object({\n maxTokens: z.number().int().positive().optional(),\n reservedForResponse: z.number().int().nonnegative().optional(),\n workingMemoryBudgetPercentage: z.number().min(0).max(1).optional(),\n});\nexport type AgentSpecBudgetPolicy = z.infer<typeof AgentSpecBudgetPolicy>;\n\nexport const AgentSpecToolHistoryPolicy = z.object({\n strategy: z.enum(['per-pair', 'per-run', 'none']).optional(),\n retentionMode: z.enum(['drop', 'compress']).optional(),\n keepLatestToolPairs: z.number().int().nonnegative().optional(),\n keepLatestRuns: z.number().int().nonnegative().optional(),\n maxInteractionGroups: z.number().int().nonnegative().optional(),\n overflowStrategy: z.enum(['keep-latest', 'fail-fast']).optional(),\n maxPairTokens: z.number().int().nonnegative().optional(),\n maxOutputSummaryTokens: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecToolHistoryPolicy = z.infer<typeof AgentSpecToolHistoryPolicy>;\n\nexport const AgentSpecToolObservationGovernancePolicy = z.object({\n enabled: z.boolean().optional(),\n maxChars: z.number().int().positive().optional(),\n maxLines: z.number().int().positive().optional(),\n});\nexport type AgentSpecToolObservationGovernancePolicy = z.infer<typeof AgentSpecToolObservationGovernancePolicy>;\n\nexport const AgentSpecToolOutputPolicy = z.object({\n observationGovernance: AgentSpecToolObservationGovernancePolicy.optional(),\n});\nexport type AgentSpecToolOutputPolicy = z.infer<typeof AgentSpecToolOutputPolicy>;\n\nexport const AgentSpecProviderReplayPolicy = z.object({\n provider: z.string().min(1).optional(),\n requiresReasoningDetailsForToolReplay: z.boolean().optional(),\n missingSidecarBehavior: z.enum(['allow', 'degrade_to_text', 'provider_empty_replay_field']).optional(),\n});\nexport type AgentSpecProviderReplayPolicy = z.infer<typeof AgentSpecProviderReplayPolicy>;\n\nexport const AgentSpecSummarizationPolicy = z.object({\n triggerThreshold: z.number().min(0).max(1).optional(),\n budgetPercentage: z.number().min(0).max(1).optional(),\n oldestMessagesPercentage: z.number().min(0).max(1).optional(),\n agentId: z.string().min(1).optional(),\n failureBehavior: z.enum(['fail-fast', 'continue-if-within-budget']).optional(),\n});\nexport type AgentSpecSummarizationPolicy = z.infer<typeof AgentSpecSummarizationPolicy>;\n\nexport const AgentSpecMustKeepTruncationRule = z.object({\n fenceKind: z.string().min(1),\n maxBudgetFraction: z.number().gt(0).max(1),\n strategyName: z.string().min(1),\n});\nexport type AgentSpecMustKeepTruncationRule = z.infer<typeof AgentSpecMustKeepTruncationRule>;\n\nexport const AgentSpecMustKeepPolicy = z.object({\n alwaysKeepTypes: z.array(AgentSpecMessageType).optional(),\n alwaysKeepFenceKinds: z.array(z.string().min(1)).optional(),\n truncationRules: z.array(AgentSpecMustKeepTruncationRule).optional(),\n});\nexport type AgentSpecMustKeepPolicy = z.infer<typeof AgentSpecMustKeepPolicy>;\n\nexport const AgentSpecWorkingMemoryPolicy = z.object({\n maxRecentToolInteractions: z.number().int().nonnegative().optional(),\n minToolInteractionsToKeep: z.number().int().nonnegative().optional(),\n toolPairingSearchRange: z.number().int().positive().optional(),\n});\nexport type AgentSpecWorkingMemoryPolicy = z.infer<typeof AgentSpecWorkingMemoryPolicy>;\n\nexport const AgentSpecCheckpointPolicy = z.object({\n keepPairsBefore: z.number().int().nonnegative().optional(),\n triggerToolName: z.string().min(1).optional(),\n});\nexport type AgentSpecCheckpointPolicy = z.infer<typeof AgentSpecCheckpointPolicy>;\n\nexport const AgentSpecReasoningRetentionPolicy = z.object({\n keepLatestThoughts: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecReasoningRetentionPolicy = z.infer<typeof AgentSpecReasoningRetentionPolicy>;\n\nexport const AgentSpecTokenEstimationPolicy = z.object({\n encoding: z.string().min(1).optional(),\n avgCharsPerToken: z.number().positive().optional(),\n toolCallOverhead: z.number().int().nonnegative().optional(),\n});\nexport type AgentSpecTokenEstimationPolicy = z.infer<typeof AgentSpecTokenEstimationPolicy>;\n\nexport const SYSTEM_REMINDER_BUILTIN_TRIGGER_KINDS = [\n 'phase-equals',\n 'remaining-steps-leq',\n 'step-count-modulo',\n 'tool-call-streak',\n 'budget-warning',\n 'agent-has-tool',\n] as const;\n\nexport const AgentSpecSystemReminderTrigger = z.object({\n kind: z.string().min(1),\n threshold: z.number().nonnegative().optional(),\n value: z.union([z.string(), z.number(), z.boolean()]).optional(),\n moduloStep: z.boolean().optional(),\n toolName: z.string().min(1).optional(),\n period: z.number().int().positive().optional(),\n minStep: z.number().int().nonnegative().optional(),\n ratio: z.number().min(0).max(1).optional(),\n config: SerializableJsonRecord.optional(),\n});\nexport type AgentSpecSystemReminderTrigger = z.infer<typeof AgentSpecSystemReminderTrigger>;\n\nexport const AgentSpecSystemReminderExtraRule = z.object({\n id: z.string().min(1),\n trigger: AgentSpecSystemReminderTrigger,\n contentTemplate: z.string().min(1),\n contentArgs: SerializableJsonRecord.optional(),\n});\nexport type AgentSpecSystemReminderExtraRule = z.infer<typeof AgentSpecSystemReminderExtraRule>;\n\nexport const AgentSpecSystemReminderPolicy = z.object({\n enabledRuleIds: z.array(z.string().min(1)).nullable().optional(),\n disabledRuleIds: z.array(z.string().min(1)).optional(),\n thresholds: z.object({\n toolCallStreak: z.number().int().nonnegative().optional(),\n taskstateReflectionPeriod: z.number().int().positive().optional(),\n budgetWarningRatio: z.number().min(0).max(1).optional(),\n lastStepsHintThreshold: z.number().int().nonnegative().optional(),\n }).optional(),\n extraRules: z.array(AgentSpecSystemReminderExtraRule).optional(),\n}).superRefine((value, ctx) => {\n if (value.enabledRuleIds !== undefined && value.enabledRuleIds !== null && value.disabledRuleIds?.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['disabledRuleIds'],\n message: 'enabledRuleIds and disabledRuleIds cannot be configured at the same time',\n });\n }\n});\nexport type AgentSpecSystemReminderPolicy = z.infer<typeof AgentSpecSystemReminderPolicy>;\n\nexport const AgentSpecContextTracePolicy = z.object({\n enabled: z.boolean().optional(),\n includeMessageIds: z.boolean().optional(),\n includeTokenBreakdown: z.boolean().optional(),\n maxTraceEvents: z.number().int().positive().optional(),\n});\nexport type AgentSpecContextTracePolicy = z.infer<typeof AgentSpecContextTracePolicy>;\n\nexport const AgentSpecContextPolicy = z.object({\n profileId: z.string().min(1),\n budget: AgentSpecBudgetPolicy.optional(),\n toolHistory: AgentSpecToolHistoryPolicy.optional(),\n toolOutput: AgentSpecToolOutputPolicy.optional(),\n providerReplay: AgentSpecProviderReplayPolicy.optional(),\n summarization: AgentSpecSummarizationPolicy.optional(),\n mustKeep: AgentSpecMustKeepPolicy.optional(),\n workingMemory: AgentSpecWorkingMemoryPolicy.optional(),\n checkpoint: AgentSpecCheckpointPolicy.optional(),\n reasoningRetention: AgentSpecReasoningRetentionPolicy.optional(),\n tokenEstimation: AgentSpecTokenEstimationPolicy.optional(),\n systemReminder: AgentSpecSystemReminderPolicy.optional(),\n contextTrace: AgentSpecContextTracePolicy.optional(),\n});\nexport type AgentSpecContextPolicy = z.infer<typeof AgentSpecContextPolicy>;\n\nexport type AgentSpecContextPolicyInput = Omit<z.input<typeof AgentSpecContextPolicy>, 'profileId'> & {\n profileId?: string;\n};\n\nconst DEFAULT_CONTEXT_POLICY: Required<AgentSpecContextPolicy> = {\n profileId: 'agent',\n budget: {\n maxTokens: 232000,\n reservedForResponse: 2400,\n workingMemoryBudgetPercentage: 0.7,\n },\n toolHistory: {\n strategy: 'per-run',\n retentionMode: 'drop',\n keepLatestToolPairs: 2,\n keepLatestRuns: 1,\n maxInteractionGroups: 12,\n overflowStrategy: 'keep-latest',\n maxPairTokens: 6000,\n maxOutputSummaryTokens: 1000,\n },\n toolOutput: {\n observationGovernance: {\n enabled: true,\n maxChars: 20_000,\n maxLines: 1_200,\n },\n },\n providerReplay: {},\n summarization: {\n triggerThreshold: 0.7,\n budgetPercentage: 0.12,\n oldestMessagesPercentage: 0.75,\n failureBehavior: 'fail-fast',\n },\n mustKeep: {\n alwaysKeepTypes: ['system_prompt', 'user_input'],\n alwaysKeepFenceKinds: [],\n truncationRules: [],\n },\n workingMemory: {\n maxRecentToolInteractions: 2,\n minToolInteractionsToKeep: 2,\n toolPairingSearchRange: 10,\n },\n checkpoint: {\n keepPairsBefore: 2,\n triggerToolName: 'context_checkpoint',\n },\n reasoningRetention: {\n keepLatestThoughts: 1,\n },\n tokenEstimation: {\n encoding: 'cl100k_base',\n avgCharsPerToken: 2.0,\n toolCallOverhead: 50,\n },\n systemReminder: {\n enabledRuleIds: null,\n disabledRuleIds: [],\n thresholds: {\n toolCallStreak: 10,\n taskstateReflectionPeriod: 30,\n budgetWarningRatio: 0.9,\n lastStepsHintThreshold: 0,\n },\n extraRules: [],\n },\n contextTrace: {\n enabled: false,\n includeMessageIds: true,\n includeTokenBreakdown: true,\n maxTraceEvents: 200,\n },\n};\n\n/**\n * 创建完整 contextPolicy。\n *\n * 中文备注:\n * - schema 保持 optional,避免现有 host 的 `{ profileId: 'agent' }` 类型大面积变红;\n * - 需要完整默认值时走这个 helper,后续 F1.2/F1.3 的 adapter 与 fallback 会复用它。\n */\nexport function defineContextPolicy(input: AgentSpecContextPolicyInput = {}): AgentSpecContextPolicy {\n const merged: Required<AgentSpecContextPolicy> = {\n profileId: input.profileId ?? DEFAULT_CONTEXT_POLICY.profileId,\n budget: { ...DEFAULT_CONTEXT_POLICY.budget, ...input.budget },\n toolHistory: { ...DEFAULT_CONTEXT_POLICY.toolHistory, ...input.toolHistory },\n toolOutput: {\n ...DEFAULT_CONTEXT_POLICY.toolOutput,\n ...input.toolOutput,\n observationGovernance: {\n ...DEFAULT_CONTEXT_POLICY.toolOutput.observationGovernance,\n ...input.toolOutput?.observationGovernance,\n },\n },\n providerReplay: { ...DEFAULT_CONTEXT_POLICY.providerReplay, ...input.providerReplay },\n summarization: { ...DEFAULT_CONTEXT_POLICY.summarization, ...input.summarization },\n mustKeep: { ...DEFAULT_CONTEXT_POLICY.mustKeep, ...input.mustKeep },\n workingMemory: { ...DEFAULT_CONTEXT_POLICY.workingMemory, ...input.workingMemory },\n checkpoint: { ...DEFAULT_CONTEXT_POLICY.checkpoint, ...input.checkpoint },\n reasoningRetention: { ...DEFAULT_CONTEXT_POLICY.reasoningRetention, ...input.reasoningRetention },\n tokenEstimation: { ...DEFAULT_CONTEXT_POLICY.tokenEstimation, ...input.tokenEstimation },\n systemReminder: {\n ...DEFAULT_CONTEXT_POLICY.systemReminder,\n ...input.systemReminder,\n thresholds: {\n ...DEFAULT_CONTEXT_POLICY.systemReminder.thresholds,\n ...input.systemReminder?.thresholds,\n },\n extraRules: input.systemReminder?.extraRules ?? DEFAULT_CONTEXT_POLICY.systemReminder.extraRules,\n },\n contextTrace: { ...DEFAULT_CONTEXT_POLICY.contextTrace, ...input.contextTrace },\n };\n\n return AgentSpecContextPolicy.parse(merged);\n}\n","import { z } from 'zod';\nimport { AgentSpecContextPolicy } from './contextPolicy';\n\nconst JsonRecord = z.record(z.string(), z.unknown());\n\n/**\n * 工具参数 schema 在 AgentSpec 里是可序列化契约,不是运行时 zod 对象。\n * 这里主动拦截 zod-like 对象,避免把 `z.any()` 一类实现细节混进协议层。\n */\nconst ToolArgsSchemaSpec = JsonRecord.superRefine((value, ctx) => {\n const parse = value['parse'];\n const safeParse = value['safeParse'];\n const definition = value['_def'];\n if (typeof parse === 'function' && typeof safeParse === 'function' && definition !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'argsSchema must be a serializable record, not a runtime zod schema',\n });\n }\n});\n\nexport const AgentCapability = z.string().min(1);\nexport type AgentCapability = z.infer<typeof AgentCapability>;\n\nexport const ToolBindingSpec = z.object({\n toolId: z.string().min(1),\n bindingId: z.string().min(1).optional(),\n argsSchema: ToolArgsSchemaSpec.optional(),\n config: JsonRecord.optional(),\n metadata: JsonRecord.optional(),\n});\nexport type ToolBindingSpec = z.infer<typeof ToolBindingSpec>;\n\nexport const AgentSpecModelHints = z.object({\n preferredProviders: z.array(z.string().min(1)).optional(),\n preferredModels: z.array(z.string().min(1)).optional(),\n fallbackChain: z.array(z.string().min(1)).optional(),\n});\nexport type AgentSpecModelHints = z.infer<typeof AgentSpecModelHints>;\n\nexport const AgentSpecAuditConfig = z.object({\n redactionLevel: z.enum(['none', 'standard', 'strict']).optional(),\n pii: z.boolean().optional(),\n});\nexport type AgentSpecAuditConfig = z.infer<typeof AgentSpecAuditConfig>;\n\nexport const AgentSpec = z.object({\n id: z.string().min(1),\n version: z.string().min(1),\n role: z.string().optional(),\n description: z.string().optional(),\n capabilities: z.array(AgentCapability),\n tools: z.array(ToolBindingSpec),\n contextPolicy: AgentSpecContextPolicy,\n modelHints: AgentSpecModelHints.optional(),\n audit: AgentSpecAuditConfig.optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AgentSpec = z.infer<typeof AgentSpec>;\n","import { z } from 'zod';\n\nconst JsonRecord = z.record(z.string(), z.unknown());\n\nexport const AUDIT_ACTIONS = [\n 'model.select',\n 'model.fallback',\n 'tool.allow',\n 'tool.deny',\n 'wait_user.request',\n 'sandbox.decide',\n 'run.cancel',\n 'run.pause',\n 'run.resume',\n 'memory.write',\n] as const;\n\nexport const AUDIT_DECISION_OUTCOMES = [\n 'allowed',\n 'denied',\n 'fallback',\n 'retry',\n 'cancelled',\n 'paused',\n 'resumed',\n 'requested',\n 'recorded',\n] as const;\n\nexport const AuditActor = z.object({\n kind: z.enum(['system', 'host', 'agent', 'model', 'tool', 'user']),\n id: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n});\nexport type AuditActor = z.infer<typeof AuditActor>;\n\nexport const AuditDecision = z.object({\n outcome: z.enum(AUDIT_DECISION_OUTCOMES),\n reason: z.string().optional(),\n policy: z.string().optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditDecision = z.infer<typeof AuditDecision>;\n\nexport const AuditEvidence = z.object({\n kind: z.string().min(1),\n ref: z.string().min(1).optional(),\n summary: z.string().optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditEvidence = z.infer<typeof AuditEvidence>;\n\nexport const AuditCostDelta = z.object({\n tokensInput: z.number().int().nonnegative().optional(),\n tokensOutput: z.number().int().nonnegative().optional(),\n totalCostUsd: z.number().nonnegative().optional(),\n latencyMs: z.number().nonnegative().optional(),\n});\nexport type AuditCostDelta = z.infer<typeof AuditCostDelta>;\n\nexport const AuditScope = z.object({\n conversationId: z.string().min(1).optional(),\n runId: z.string().min(1).optional(),\n parentRunId: z.string().min(1).optional(),\n turnId: z.string().min(1).optional(),\n traceId: z.string().min(1).optional(),\n agentSpecId: z.string().min(1).optional(),\n toolCallId: z.string().min(1).optional(),\n toolName: z.string().min(1).optional(),\n modelId: z.string().min(1).optional(),\n nodeId: z.string().min(1).optional(),\n metadata: JsonRecord.optional(),\n});\nexport type AuditScope = z.infer<typeof AuditScope>;\n\n/**\n * 标准审计信封。\n *\n * 中文备注:\n * - action 保持 string,以便 host 扩展自己的动作名;\n * - decision/evidence/costDelta 都是可选事实片段,避免把所有审计场景压成同一种形状;\n * - envelope 必须追加只读,更新/撤回应追加新的补偿 envelope。\n */\nexport const AuditEnvelope = z.object({\n envelopeId: z.string().min(1),\n runId: z.string().min(1),\n parentRunId: z.string().min(1).optional(),\n ts: z.number().int().nonnegative(),\n actor: AuditActor,\n action: z.string().min(1),\n decision: AuditDecision.optional(),\n evidence: z.array(AuditEvidence).optional(),\n costDelta: AuditCostDelta.optional(),\n scope: AuditScope.optional(),\n});\nexport type AuditEnvelope = z.infer<typeof AuditEnvelope>;\n","import { z } from 'zod';\nimport { AuditEnvelope } from './audit';\n\nexport const BaseEvent = z.object({\n id: z.string(),\n conversation_id: z.string(),\n timestamp: z.number(),\n metadata: z.record(z.unknown()).optional(),\n version: z.literal(1).default(1),\n turn_id: z.string(),\n ephemeral: z.boolean().optional(),\n});\n\nexport const ToolCallPhase = z.enum(['start', 'update', 'complete', 'error']);\nexport const Status = z.enum(['loading', 'success', 'error']);\nexport const AgentTodoStatus = z.enum(['pending', 'in_progress', 'completed', 'cancelled']);\n\nexport const AgentTodoItem = z.object({\n id: z.string(),\n content: z.string(),\n status: AgentTodoStatus,\n});\n\nexport const ProviderReasoningDetailsPayload = z.array(z.unknown());\nexport type ProviderReasoningDetailsPayload = z.infer<typeof ProviderReasoningDetailsPayload>;\n\nexport const ToolCallDecisionPayload = z.object({\n args: z.record(z.any()).optional(),\n tool_calls: z.array(z.unknown()).optional(),\n /**\n * 不透明 provider reasoning replay blocks。\n *\n * RuntimeEvent 层的标准位置是 assistant 产出事件携带 reasoning_details;\n * context-manager 会把它回放到 AiMessage.metadata.reasoning_details。\n */\n reasoning_details: ProviderReasoningDetailsPayload.optional(),\n}).passthrough();\n\nexport type ToolCallDecisionPayload = z.infer<typeof ToolCallDecisionPayload>;\n\nexport const RuntimeEvent = z.discriminatedUnion('type', [\n BaseEvent.extend({\n type: z.literal('user_input'),\n content: z.string(),\n raw_content: z.string().optional(),\n source: z.enum(['user', 'editor', 'system']).default('user'),\n }),\n BaseEvent.extend({\n type: z.literal('thought'),\n content: z.string(),\n thought_message_id: z.string().optional(),\n delta: z.string().optional(),\n is_complete: z.boolean().default(false),\n }),\n BaseEvent.extend({\n type: z.literal('tool_call_decision'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: ToolCallPhase,\n status: Status,\n args: z.record(z.any()).optional(),\n payload: ToolCallDecisionPayload.optional(),\n parent_tool_call_id: z.string().optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('tool_process'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: ToolCallPhase,\n status: Status,\n args: z.record(z.any()).optional(),\n payload: z.record(z.any()).optional(),\n parent_tool_call_id: z.string().optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('tool_output'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n status: z.enum(['success', 'error']),\n output: z.any().optional(),\n payload: z.record(z.any()).optional(),\n error: z.string().optional(),\n duration_ms: z.number().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('todo_updated'),\n todo_list_id: z.string(),\n todo_list_version: z.number().int().nonnegative(),\n items: z.array(AgentTodoItem),\n }),\n BaseEvent.extend({\n type: z.literal('subrun_trace'),\n parent_tool_call_id: z.string(),\n subrun_id: z.string(),\n subrun_parent_id: z.string().optional(),\n kind: z.enum([\n 'thought_delta',\n 'thought_complete',\n 'tool_call_decision',\n 'tool_process',\n 'tool_output',\n 'final_answer_chunk',\n 'final_answer',\n ]),\n delta: z.string().optional(),\n content: z.string().optional(),\n tool_name: z.string().optional(),\n tool_call_id: z.string().optional(),\n phase: ToolCallPhase.optional(),\n status: Status.optional(),\n args: z.unknown().optional(),\n output: z.unknown().optional(),\n duration_ms: z.number().optional(),\n meta: z.record(z.unknown()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('requires_user_interaction'),\n form: z.any().optional(),\n interaction_type: z.string().optional(),\n prompt: z.string().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('audit_envelope'),\n envelope: AuditEnvelope,\n }),\n BaseEvent.extend({\n type: z.literal('final_answer'),\n answer_id: z.string(),\n content: z.string(),\n is_complete: z.boolean().default(true),\n reasoning_details: ProviderReasoningDetailsPayload.optional(),\n meta: z.record(z.any()).optional(),\n }),\n BaseEvent.extend({\n type: z.literal('final_answer_chunk'),\n answer_id: z.string(),\n seq: z.number().int().nonnegative(),\n content: z.string(),\n is_last: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('history_summary'),\n content: z.string(),\n replaced_message_ids: z.array(z.string()),\n summary_seq: z.number().int().nonnegative(),\n original_message_count: z.number().int().nonnegative().optional(),\n compression_ratio: z.number().min(0).max(1).optional(),\n included_old_summary: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('error'),\n error: z.string(),\n details: z.any().optional(),\n error_code: z.string().optional(),\n retryable: z.boolean().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('control'),\n op: z.enum(['truncate_after', 'replace', 'redo', 'branch']),\n target_id: z.string().optional(),\n reason: z.string().optional(),\n meta: z.any().optional(),\n }),\n BaseEvent.extend({\n type: z.literal('stream_end'),\n reason: z.enum(['complete', 'error', 'interrupted', 'timeout']).optional(),\n reason_message: z.string().optional(),\n stats: z.object({\n total_events: z.number().optional(),\n duration_ms: z.number().optional(),\n error_count: z.number().optional(),\n }).optional(),\n }),\n]);\n\nexport type RuntimeEvent = z.infer<typeof RuntimeEvent>;\nexport type UserInputEvent = Extract<RuntimeEvent, { type: 'user_input' }>;\nexport type ThoughtEvent = Extract<RuntimeEvent, { type: 'thought' }>;\nexport type ToolCallDecisionEvent = Extract<RuntimeEvent, { type: 'tool_call_decision' }>;\nexport type ToolProcessEvent = Extract<RuntimeEvent, { type: 'tool_process' }>;\nexport type ToolOutputEvent = Extract<RuntimeEvent, { type: 'tool_output' }>;\nexport type TodoUpdatedEvent = Extract<RuntimeEvent, { type: 'todo_updated' }>;\nexport type SubRunTraceEvent = Extract<RuntimeEvent, { type: 'subrun_trace' }>;\nexport type RequiresUserInteractionEvent = Extract<RuntimeEvent, { type: 'requires_user_interaction' }>;\nexport type AuditEnvelopeEvent = Extract<RuntimeEvent, { type: 'audit_envelope' }>;\nexport type FinalAnswerEvent = Extract<RuntimeEvent, { type: 'final_answer' }>;\nexport type FinalAnswerChunkEvent = Extract<RuntimeEvent, { type: 'final_answer_chunk' }>;\nexport type HistorySummaryEvent = Extract<RuntimeEvent, { type: 'history_summary' }>;\nexport type ErrorEvent = Extract<RuntimeEvent, { type: 'error' }>;\nexport type ControlEvent = Extract<RuntimeEvent, { type: 'control' }>;\nexport type StreamEndEvent = Extract<RuntimeEvent, { type: 'stream_end' }>;\n\nexport const validateRuntimeEvent = (event: unknown) => RuntimeEvent.safeParse(event);\nexport const validateRuntimeEvents = (events: unknown[]) => z.array(RuntimeEvent).safeParse(events);\n\nexport const createUserInputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n options: Partial<UserInputEvent> = {},\n): UserInputEvent => ({\n type: 'user_input',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n source: 'user',\n ...options,\n});\n\nexport const createThoughtEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n options: Partial<ThoughtEvent> = {},\n): ThoughtEvent => ({\n type: 'thought',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n is_complete: false,\n ...options,\n});\n\nexport const createToolCallDecisionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n options: Partial<ToolCallDecisionEvent> = {},\n): ToolCallDecisionEvent => ({\n type: 'tool_call_decision',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase: 'start',\n status: 'loading',\n ...options,\n});\n\nexport const createToolProcessEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n options: Partial<ToolProcessEvent> = {},\n): ToolProcessEvent => ({\n type: 'tool_process',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase: 'start',\n status: 'loading',\n ...options,\n});\n\nexport const createSubRunTraceEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n parentToolCallId: string,\n subrunId: string,\n kind: SubRunTraceEvent['kind'],\n options: Partial<SubRunTraceEvent> = {},\n): SubRunTraceEvent => ({\n type: 'subrun_trace',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n ephemeral: true,\n parent_tool_call_id: parentToolCallId,\n subrun_id: subrunId,\n kind,\n ...options,\n});\n\nexport const createToolOutputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n output: unknown,\n status: 'success' | 'error' = 'success',\n options: Partial<ToolOutputEvent> = {},\n): ToolOutputEvent => ({\n type: 'tool_output',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n tool_name: toolName,\n tool_call_id: toolCallId,\n status,\n output,\n ...options,\n});\n\nexport const createTodoUpdatedEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n todoListId: string,\n todoListVersion: number,\n items: TodoUpdatedEvent['items'],\n options: Partial<TodoUpdatedEvent> = {},\n): TodoUpdatedEvent => ({\n type: 'todo_updated',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n todo_list_id: todoListId,\n todo_list_version: todoListVersion,\n items,\n ...options,\n});\n\nexport const createFinalAnswerEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n content: string,\n options: Partial<FinalAnswerEvent> = {},\n): FinalAnswerEvent => ({\n type: 'final_answer',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n answer_id: answerId,\n content,\n is_complete: true,\n ...options,\n});\n\nexport const createAuditEnvelopeEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n envelope: AuditEnvelopeEvent['envelope'],\n options: Partial<AuditEnvelopeEvent> = {},\n): AuditEnvelopeEvent => ({\n type: 'audit_envelope',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: envelope.ts,\n version: 1,\n envelope,\n metadata: {\n audit_action: envelope.action,\n run_context: {\n runId: envelope.runId,\n parentId: envelope.parentRunId,\n traceId: envelope.scope?.traceId,\n },\n },\n ...options,\n});\n\nexport const createFinalAnswerChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n seq: number,\n content: string,\n options: Partial<FinalAnswerChunkEvent> = {},\n): FinalAnswerChunkEvent => ({\n type: 'final_answer_chunk',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n answer_id: answerId,\n seq,\n content,\n ...options,\n});\n\nexport const createHistorySummaryEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n content: string,\n replacedMessageIds: string[],\n summarySeq: number,\n options: Partial<HistorySummaryEvent> = {},\n): HistorySummaryEvent => ({\n type: 'history_summary',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n content,\n replaced_message_ids: replacedMessageIds,\n summary_seq: summarySeq,\n ...options,\n});\n\nexport const createErrorEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n error: string,\n options: Partial<ErrorEvent> = {},\n): ErrorEvent => ({\n type: 'error',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n error,\n ...options,\n});\n\nexport const createStreamEndEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<StreamEndEvent> = {},\n): StreamEndEvent => ({\n type: 'stream_end',\n id,\n conversation_id: conversationId,\n turn_id: turnId,\n timestamp: Date.now(),\n version: 1,\n ...options,\n});\n","import { z } from 'zod';\n\nexport const ExecutionTraceContext = z.object({\n execution_id: z.string().describe('The unique identifier for a single, complete execution flow.'),\n trace_id: z.string().optional().describe('An optional trace ID for correlating logs in an APM system.'),\n});\n\nconst EventEnvelopeSchema = z.object({\n seq: z.number().int().nonnegative().describe('A monotonically increasing sequence number within a single execution.'),\n timestamp: z.number().describe('The high-precision timestamp of when the event occurred.'),\n trace: ExecutionTraceContext,\n source: z.string().describe(\"The origin of the event, e.g., 'ai', 'tool:file_reader', 'system:summary'.\"),\n payload: z.unknown(),\n render_hint: z.object({\n card: z.enum(['normal', 'collapsible', 'none', 'image', 'interactive']).optional().describe('Hint for how the UI card should be rendered.'),\n content: z.enum(['markdown', 'text', 'json', 'image_url', 'code']).default('text').describe('Hint for how the content itself should be interpreted.'),\n }).optional(),\n run_location: z.enum(['frontend', 'backend']).optional().describe('Specifies where a tool action should be or was executed.'),\n});\n\nexport const EventEnvelope = EventEnvelopeSchema;\n\ntype EventEnvelopeBase = z.infer<typeof EventEnvelopeSchema>;\n\nexport type EventEnvelope<TPayload = unknown> = Omit<EventEnvelopeBase, 'payload'> & {\n payload: TPayload;\n};\n\nexport type ExecutionTraceContext = z.infer<typeof ExecutionTraceContext>;\n","import { z } from 'zod';\n\nexport const BaseSSEEvent = z.object({\n id: z.string(),\n timestamp: z.number(),\n conversation_id: z.string(),\n turn_id: z.string(),\n metadata: z.record(z.unknown()).optional(),\n});\n\nexport type BaseSSEEvent = z.infer<typeof BaseSSEEvent>;\n\nexport const SSEThoughtEvent = BaseSSEEvent.extend({\n type: z.literal('thought'),\n thought_message_id: z.string().optional(),\n delta: z.string().optional(),\n content: z.string().optional(),\n is_complete: z.boolean().default(false),\n});\n\nexport type SSEThoughtEvent = z.infer<typeof SSEThoughtEvent>;\n\nexport const SSEFinalAnswerChunkEvent = BaseSSEEvent.extend({\n type: z.literal('final_answer_chunk'),\n answer_id: z.string(),\n seq: z.number().int().nonnegative(),\n chunk: z.string(),\n is_last: z.boolean().optional(),\n});\n\nexport type SSEFinalAnswerChunkEvent = z.infer<typeof SSEFinalAnswerChunkEvent>;\n\nexport const SSEFinalAnswerEvent = BaseSSEEvent.extend({\n type: z.literal('final_answer'),\n answer_id: z.string(),\n content: z.string(),\n meta: z.record(z.any()).optional(),\n});\n\nexport type SSEFinalAnswerEvent = z.infer<typeof SSEFinalAnswerEvent>;\n\nexport const SSEMarkdownChunkEvent = BaseSSEEvent.extend({\n type: z.literal('markdown_chunk'),\n content_type: z.enum(['text', 'code', 'table', 'image']).default('text'),\n text: z.string(),\n seq: z.number().optional(),\n});\n\nexport type SSEMarkdownChunkEvent = z.infer<typeof SSEMarkdownChunkEvent>;\n\nconst BaseSSEToolLifecycleEvent = BaseSSEEvent.extend({\n tool_name: z.string(),\n tool_call_id: z.string(),\n phase: z.enum(['start', 'update', 'complete', 'error']),\n status: z.enum(['loading', 'success', 'error']),\n args: z.any().optional(),\n payload: z.any().optional(),\n meta: z.record(z.any()).optional(),\n});\n\nexport const SSEToolCallDecisionEvent = BaseSSEToolLifecycleEvent.extend({\n type: z.literal('tool_call_decision'),\n});\n\nexport type SSEToolCallDecisionEvent = z.infer<typeof SSEToolCallDecisionEvent>;\n\nexport const SSEToolProcessEvent = BaseSSEToolLifecycleEvent.extend({\n type: z.literal('tool_process'),\n});\n\nexport type SSEToolProcessEvent = z.infer<typeof SSEToolProcessEvent>;\n\nexport const SSEToolOutputEvent = BaseSSEEvent.extend({\n type: z.literal('tool_output'),\n tool_name: z.string(),\n tool_call_id: z.string(),\n status: z.enum(['success', 'error']),\n output: z.any().optional(),\n payload: z.record(z.any()).optional(),\n duration_ms: z.number().optional(),\n});\n\nexport type SSEToolOutputEvent = z.infer<typeof SSEToolOutputEvent>;\n\nexport const SSETodoUpdatedEvent = BaseSSEEvent.extend({\n type: z.literal('todo_updated'),\n todo_list_id: z.string(),\n todo_list_version: z.number().int().nonnegative(),\n items: z.array(z.object({\n id: z.string(),\n content: z.string(),\n status: z.enum(['pending', 'in_progress', 'completed', 'cancelled']),\n })),\n});\n\nexport type SSETodoUpdatedEvent = z.infer<typeof SSETodoUpdatedEvent>;\n\nexport const SSESubRunTraceEvent = BaseSSEEvent.extend({\n type: z.literal('subrun_trace'),\n parent_tool_call_id: z.string(),\n subrun_id: z.string(),\n subrun_parent_id: z.string().optional(),\n kind: z.enum([\n 'thought_delta',\n 'thought_complete',\n 'tool_call_decision',\n 'tool_process',\n 'tool_output',\n 'final_answer_chunk',\n 'final_answer',\n ]),\n delta: z.string().optional(),\n content: z.string().optional(),\n tool_name: z.string().optional(),\n tool_call_id: z.string().optional(),\n phase: z.enum(['start', 'update', 'complete', 'error']).optional(),\n status: z.enum(['loading', 'success', 'error']).optional(),\n args: z.unknown().optional(),\n output: z.unknown().optional(),\n duration_ms: z.number().optional(),\n meta: z.record(z.unknown()).optional(),\n});\n\nexport type SSESubRunTraceEvent = z.infer<typeof SSESubRunTraceEvent>;\n\nexport const SSERequiresUserInteractionEvent = BaseSSEEvent.extend({\n type: z.literal('requires_user_interaction'),\n form: z.any().optional(),\n interaction_type: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport type SSERequiresUserInteractionEvent = z.infer<typeof SSERequiresUserInteractionEvent>;\n\nexport const SSEErrorEvent = BaseSSEEvent.extend({\n type: z.literal('error'),\n error: z.string(),\n details: z.any().optional(),\n error_code: z.string().optional(),\n retryable: z.boolean().optional(),\n});\n\nexport type SSEErrorEvent = z.infer<typeof SSEErrorEvent>;\n\nexport const SSEStreamEndEvent = BaseSSEEvent.extend({\n type: z.literal('stream_end'),\n reason: z.enum(['complete', 'error', 'interrupted', 'timeout']).optional(),\n reason_message: z.string().optional(),\n stats: z.object({\n total_events: z.number().optional(),\n duration_ms: z.number().optional(),\n error_count: z.number().optional(),\n benchmark: z.record(z.unknown()).optional(),\n }).optional(),\n});\n\nexport type SSEStreamEndEvent = z.infer<typeof SSEStreamEndEvent>;\n\nexport const SSEHistorySummaryEvent = BaseSSEEvent.extend({\n type: z.literal('history_summary'),\n summary_id: z.string(),\n content: z.string(),\n original_message_count: z.number().int().nonnegative(),\n summary_seq: z.number().int().nonnegative(),\n});\n\nexport type SSEHistorySummaryEvent = z.infer<typeof SSEHistorySummaryEvent>;\n\nexport const SSESummarizationStartEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_start'),\n originalMessages: z.number().optional(),\n});\n\nexport type SSESummarizationStartEvent = z.infer<typeof SSESummarizationStartEvent>;\n\nexport const SSESummarizationEndEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_end'),\n originalMessages: z.number().optional(),\n compressedMessages: z.number().optional(),\n compressionRatio: z.string().optional(),\n timeSaved: z.string().optional(),\n});\n\nexport type SSESummarizationEndEvent = z.infer<typeof SSESummarizationEndEvent>;\n\nexport const SSESummarizationErrorEvent = BaseSSEEvent.extend({\n type: z.literal('summarization_error'),\n error: z.string(),\n});\n\nexport type SSESummarizationErrorEvent = z.infer<typeof SSESummarizationErrorEvent>;\n\nexport const SSEEvent = z.discriminatedUnion('type', [\n SSEThoughtEvent,\n SSEFinalAnswerChunkEvent,\n SSEFinalAnswerEvent,\n SSEMarkdownChunkEvent,\n SSEToolCallDecisionEvent,\n SSEToolProcessEvent,\n SSEToolOutputEvent,\n SSETodoUpdatedEvent,\n SSESubRunTraceEvent,\n SSERequiresUserInteractionEvent,\n SSEErrorEvent,\n SSEStreamEndEvent,\n SSEHistorySummaryEvent,\n SSESummarizationStartEvent,\n SSESummarizationEndEvent,\n SSESummarizationErrorEvent,\n]);\n\nexport type SSEEvent = z.infer<typeof SSEEvent>;\n\nexport const validateSSEEvent = (event: unknown) => SSEEvent.safeParse(event);\n\nexport const createSSEThoughtEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: { thought_message_id?: string; delta?: string; content?: string; is_complete?: boolean } = {},\n): SSEThoughtEvent => ({\n type: 'thought',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n is_complete: false,\n ...options,\n});\n\nexport const createSSEFinalAnswerChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n seq: number,\n chunk: string,\n options: { is_last?: boolean } = {},\n): SSEFinalAnswerChunkEvent => ({\n type: 'final_answer_chunk',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n answer_id: answerId,\n seq,\n chunk,\n ...options,\n});\n\nexport const createSSEFinalAnswerEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n answerId: string,\n content: string,\n options: Partial<SSEFinalAnswerEvent> = {},\n): SSEFinalAnswerEvent => ({\n type: 'final_answer',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n answer_id: answerId,\n content,\n ...options,\n});\n\nexport const createSSEMarkdownChunkEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n text: string,\n options: Partial<SSEMarkdownChunkEvent> = {},\n): SSEMarkdownChunkEvent => ({\n type: 'markdown_chunk',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n text,\n content_type: 'text',\n ...options,\n});\n\nexport const createSSEToolCallDecisionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n phase: SSEToolCallDecisionEvent['phase'],\n status: SSEToolCallDecisionEvent['status'],\n options: Partial<SSEToolCallDecisionEvent> = {},\n): SSEToolCallDecisionEvent => ({\n type: 'tool_call_decision',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase,\n status,\n ...options,\n});\n\nexport const createSSEToolProcessEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n phase: SSEToolProcessEvent['phase'],\n status: SSEToolProcessEvent['status'],\n options: Partial<SSEToolProcessEvent> = {},\n): SSEToolProcessEvent => ({\n type: 'tool_process',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n phase,\n status,\n ...options,\n});\n\nexport const createSSEToolOutputEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n toolName: string,\n toolCallId: string,\n status: SSEToolOutputEvent['status'],\n output: unknown,\n options: Partial<SSEToolOutputEvent> = {},\n): SSEToolOutputEvent => ({\n type: 'tool_output',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n tool_name: toolName,\n tool_call_id: toolCallId,\n status,\n output,\n ...options,\n});\n\nexport const createSSETodoUpdatedEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n todoListId: string,\n todoListVersion: number,\n items: SSETodoUpdatedEvent['items'],\n options: Partial<SSETodoUpdatedEvent> = {},\n): SSETodoUpdatedEvent => ({\n type: 'todo_updated',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n todo_list_id: todoListId,\n todo_list_version: todoListVersion,\n items,\n ...options,\n});\n\nexport const createSSESubRunTraceEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n parentToolCallId: string,\n subrunId: string,\n kind: SSESubRunTraceEvent['kind'],\n options: Partial<SSESubRunTraceEvent> = {},\n): SSESubRunTraceEvent => ({\n type: 'subrun_trace',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n parent_tool_call_id: parentToolCallId,\n subrun_id: subrunId,\n kind,\n ...options,\n});\n\nexport const createSSERequiresUserInteractionEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<SSERequiresUserInteractionEvent> = {},\n): SSERequiresUserInteractionEvent => ({\n type: 'requires_user_interaction',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n ...options,\n});\n\nexport const createSSEErrorEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n error: string,\n options: Partial<SSEErrorEvent> = {},\n): SSEErrorEvent => ({\n type: 'error',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n error,\n ...options,\n});\n\nexport const createSSEStreamEndEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n options: Partial<SSEStreamEndEvent> = {},\n): SSEStreamEndEvent => ({\n type: 'stream_end',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n ...options,\n});\n\nexport const createSSEHistorySummaryEvent = (\n id: string,\n conversationId: string,\n turnId: string,\n summaryId: string,\n content: string,\n originalMessageCount: number,\n summarySeq: number,\n options: Partial<SSEHistorySummaryEvent> = {},\n): SSEHistorySummaryEvent => ({\n type: 'history_summary',\n id,\n timestamp: Date.now(),\n conversation_id: conversationId,\n turn_id: turnId,\n summary_id: summaryId,\n content,\n original_message_count: originalMessageCount,\n summary_seq: summarySeq,\n ...options,\n});\n","/**\n * Isomorphic ID generators.\n *\n * 设计约束:\n * - linnkit 是同构 package(既会被 Node-side host 使用,也会被前端 renderer 通过\n * `linnkit/runtime-kernel/events` 等子入口透传 transitive import 拖入 bundle)。\n * - 因此本文件不允许 `import { randomUUID } from 'crypto'`:那会触发 vite\n * `__vite-browser-external` shim,构建时 named import 解析失败。\n * - 改用 Web Crypto API(`globalThis.crypto.randomUUID`),它在所有现代浏览器\n * 与 Node 19+ 上都内置;老 Node 也可通过 `globalThis.crypto.randomUUID` 访问\n * (Node 14.17+ 在 `node:crypto` 暴露了 `webcrypto`,并自 19 起把 `crypto`\n * 挂到 globalThis)。\n * - 极端 fallback:若运行环境同时缺 Web Crypto,则降级为 Math.random RFC4122 v4\n * 生成器;这些 ID 仅用于会话/消息/run/exec/trace 内部去重展示,不承担加密\n * 强度要求,降级在语义上是安全的。\n */\n\ntype WebCryptoLike = { randomUUID?: () => string };\n\nfunction isoRandomUUID(): string {\n const c = (globalThis as unknown as { crypto?: WebCryptoLike }).crypto;\n if (c && typeof c.randomUUID === 'function') {\n return c.randomUUID();\n }\n // Fallback RFC4122 v4(非加密强度)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (ch) => {\n const r = (Math.random() * 16) | 0;\n const v = ch === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction shortRandomId(prefix: string): string {\n return `${prefix}-${isoRandomUUID().replace(/-/g, '').slice(0, 12)}`;\n}\n\nexport function generateMessageId(): string {\n return shortRandomId('msg');\n}\n\nexport function generateConversationId(): string {\n return shortRandomId('conv');\n}\n\nexport function generateRunId(): string {\n return shortRandomId('run');\n}\n\nexport function generateAuditEnvelopeId(): string {\n return shortRandomId('audit');\n}\n\nexport function generateAuditEnvelopeEventId(): string {\n return shortRandomId('audit_evt');\n}\n\nexport function generateExecutionId(): string {\n return shortRandomId('exec');\n}\n\nexport function generateTraceId(): string {\n return shortRandomId('trace');\n}\n","import type { AiMessage, RuntimeEvent, ToolCallWire } from '../../contracts';\nimport type { ToolPresentationPort } from '../tools/ports';\n\nexport interface EventMappingContext {\n conversationId: string;\n turnId: string;\n timestamp?: number;\n /**\n * 事件级扩展元数据(透传到 SSE/RuntimeEvent.metadata)。\n *\n * 中文备注:这里只放跨事件归类信息,不放 ui.hidden 这类单事件展示语义。\n */\n metadata?: Record<string, unknown>;\n}\n\nexport interface SSEMappingOptions {\n emitSse?: boolean;\n skipAlreadyDispatched?: boolean;\n toolPresentationPort?: ToolPresentationPort;\n}\n\nexport interface RuntimeMappingOptions {\n collectRuntime?: boolean;\n skipIncomplete?: boolean;\n toolPresentationPort?: ToolPresentationPort;\n}\n\n/**\n * RuntimeEvent 回放所需的最小会话内存端口。\n *\n * 中文备注:\n * - core 只依赖“写入消息”的最小能力;\n * - 具体产品实现只要结构兼容即可接入。\n */\nexport interface ConversationMemoryPort {\n addUserMessage(content: string, id?: string): void;\n addAssistantMessage(\n content: string | null,\n type: AiMessage['type'] & ('thought' | 'final_answer' | 'tool_calls'),\n metadata?: AiMessage['metadata'],\n id?: string\n ): void;\n addToolResponse(toolCallId: string, content: string, toolName?: string, id?: string): void;\n appendMessage(message: AiMessage): void;\n}\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n !!value && typeof value === 'object' && !Array.isArray(value);\n\nexport const isToolCallWire = (value: unknown): value is ToolCallWire => {\n if (!isRecord(value)) return false;\n if (typeof value.id !== 'string') return false;\n if (value.type !== 'function') return false;\n const fn = value.function;\n return isRecord(fn) && typeof fn.name === 'string' && typeof fn.arguments === 'string';\n};\n\nexport function resolveToolDisplayOptions(\n toolName: string,\n toolPresentationPort?: ToolPresentationPort,\n) {\n return toolPresentationPort?.getDisplayOptions(toolName);\n}\n\nexport function readAnswerIdFromEvent(event: unknown): string | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['answerId'];\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nexport function readMetaFromEvent(event: unknown): Record<string, unknown> | undefined {\n if (!isRecord(event)) return undefined;\n const value = event['meta'];\n return isRecord(value) ? value : undefined;\n}\n\nexport type HistorySummaryRuntimeEvent = RuntimeEvent & {\n type: 'history_summary';\n content: string;\n replaces_start_message_id?: string;\n replaces_end_message_id?: string;\n original_message_count?: number;\n compression_ratio?: number;\n generated_by?: string;\n included_old_summary?: boolean;\n replaced_message_ids?: string[];\n summary_seq?: number;\n};\n","import {\n AnyAgentEvent,\n ErrorEvent as AgentErrorEvent,\n FinalAnswerEvent as AgentFinalAnswerEvent,\n ObservationEvent as AgentObservationEvent,\n StreamChunkEvent as AgentStreamChunkEvent,\n ThoughtEvent as AgentThoughtEvent,\n ToolCallDecisionEvent as AgentToolCallDecisionEvent,\n ToolProcessEvent as AgentToolProcessEvent,\n readAgentEventAnswerId,\n readAgentEventSeq,\n} from './agentEvents';\nimport {\n RuntimeEvent,\n createErrorEvent,\n createFinalAnswerChunkEvent,\n createFinalAnswerEvent,\n createThoughtEvent,\n createToolCallDecisionEvent,\n createToolOutputEvent,\n createToolProcessEvent,\n} from '../../contracts';\nimport { generateMessageId } from '../../shared/ids';\nimport {\n type EventMappingContext,\n type RuntimeMappingOptions,\n isRecord,\n readAnswerIdFromEvent,\n readMetaFromEvent,\n resolveToolDisplayOptions,\n} from './provider-sidecar';\n\nexport function agentEventToRuntime(\n agentEvent: AnyAgentEvent | RuntimeEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions = {},\n): RuntimeEvent | null {\n if (!agentEvent || typeof agentEvent !== 'object') return null;\n\n if (isRecord(agentEvent) && agentEvent['type'] === 'history_summary') {\n const evt = agentEvent as RuntimeEvent;\n if (context.metadata) {\n evt.metadata = { ...(evt.metadata ?? {}), ...context.metadata };\n }\n return evt;\n }\n\n const typed = agentEvent as AnyAgentEvent;\n const { conversationId, turnId } = context;\n const timestamp = typed.timestamp ?? context.timestamp ?? Date.now();\n const id = typed.id ?? generateMessageId();\n const contextMeta = context.metadata;\n\n switch (typed.type) {\n case 'thought':\n return mapThoughtToRuntime(typed as AgentThoughtEvent, context, options, id, timestamp);\n\n case 'tool_call_decision':\n case 'tool_process':\n return mapToolProgressToRuntime(typed, context, options, id, timestamp);\n\n case 'observation': {\n const observationEvent = typed as AgentObservationEvent;\n const toolName = observationEvent.tool_name || 'unknown_tool';\n const toolCallId = observationEvent.tool_call_id || `call_${id}`;\n const success = observationEvent.success ?? !/^错误[::]/i.test(String(observationEvent.output ?? ''));\n const payload = observationEvent.payload || {};\n const event = createToolOutputEvent(\n id,\n conversationId,\n turnId,\n toolName,\n toolCallId,\n observationEvent.output,\n success ? 'success' : 'error',\n { timestamp, payload, duration_ms: payload.duration_ms as number | undefined },\n );\n event.ephemeral = false;\n if (contextMeta) event.metadata = { ...(event.metadata ?? {}), ...contextMeta };\n return event;\n }\n\n case 'final_answer': {\n const finalAnswerEvent = typed as AgentFinalAnswerEvent;\n const answerIdFromSnake =\n typeof finalAnswerEvent.answer_id === 'string' && finalAnswerEvent.answer_id.trim().length > 0\n ? finalAnswerEvent.answer_id.trim()\n : undefined;\n return createFinalAnswerEvent(\n id,\n conversationId,\n turnId,\n answerIdFromSnake ?? readAnswerIdFromEvent(finalAnswerEvent) ?? `answer_${turnId}`,\n finalAnswerEvent.answer ?? '',\n {\n timestamp,\n reasoning_details: Array.isArray(finalAnswerEvent.reasoning_details)\n ? finalAnswerEvent.reasoning_details\n : undefined,\n meta: readMetaFromEvent(finalAnswerEvent),\n },\n );\n }\n\n case 'error': {\n const errorEvent = typed as AgentErrorEvent;\n return createErrorEvent(id, conversationId, turnId, errorEvent.error ?? 'Unknown error', {\n timestamp,\n details: errorEvent.details,\n });\n }\n\n case 'stream_chunk':\n return mapStreamChunkToRuntime(typed as AgentStreamChunkEvent, context, id, timestamp);\n\n default:\n return null;\n }\n}\n\nfunction mapThoughtToRuntime(\n thoughtEvent: AgentThoughtEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions,\n id: string,\n timestamp: number,\n): RuntimeEvent | null {\n const isComplete = 'is_complete' in thoughtEvent ? Boolean(thoughtEvent.is_complete) : false;\n if (options.skipIncomplete && !isComplete) return null;\n\n const thoughtMessageId =\n typeof thoughtEvent.thought_message_id === 'string' && thoughtEvent.thought_message_id.length > 0\n ? thoughtEvent.thought_message_id\n : undefined;\n const runtimeEvent = createThoughtEvent(id, context.conversationId, context.turnId, thoughtEvent.content ?? '', {\n timestamp,\n thought_message_id: thoughtMessageId,\n delta: thoughtEvent.delta,\n is_complete: isComplete,\n });\n if (!isComplete) runtimeEvent.ephemeral = true;\n const thoughtMeta = isRecord(thoughtEvent.meta) ? thoughtEvent.meta : undefined;\n if (context.metadata || thoughtMeta) {\n runtimeEvent.metadata = { ...(runtimeEvent.metadata ?? {}), ...(context.metadata ?? {}), ...(thoughtMeta ?? {}) };\n }\n return runtimeEvent;\n}\n\nfunction mapToolProgressToRuntime(\n toolEvent: AgentToolCallDecisionEvent | AgentToolProcessEvent,\n context: EventMappingContext,\n options: RuntimeMappingOptions,\n id: string,\n timestamp: number,\n): RuntimeEvent {\n const toolName = toolEvent.tool_name || 'unknown_tool';\n const toolCallId = toolEvent.tool_call_id || `call_${id}`;\n const meta = toolEvent.meta && typeof toolEvent.meta === 'object' ? { ...toolEvent.meta } : {};\n const displayOptions = resolveToolDisplayOptions(toolName, options.toolPresentationPort);\n if (displayOptions && !meta.displayOptions) meta.displayOptions = displayOptions;\n\n const event = toolEvent.type === 'tool_call_decision'\n ? createToolCallDecisionEvent(id, context.conversationId, context.turnId, toolName, toolCallId, {\n timestamp,\n phase: toolEvent.phase ?? 'start',\n status: toolEvent.status ?? 'loading',\n args: toolEvent.tool_args || {},\n payload: toolEvent.payload || {},\n meta,\n })\n : createToolProcessEvent(id, context.conversationId, context.turnId, toolName, toolCallId, {\n timestamp,\n phase: toolEvent.phase ?? 'start',\n status: toolEvent.status ?? 'loading',\n args: toolEvent.tool_args || {},\n payload: toolEvent.payload || {},\n meta,\n });\n event.ephemeral = meta.ephemeral === true;\n if (context.metadata) event.metadata = { ...(event.metadata ?? {}), ...context.metadata };\n return event;\n}\n\nfunction mapStreamChunkToRuntime(\n streamEvent: AgentStreamChunkEvent,\n context: EventMappingContext,\n id: string,\n timestamp: number,\n): RuntimeEvent | null {\n const text = streamEvent.content ?? '';\n if (!text) return null;\n const answerId = readAgentEventAnswerId(streamEvent) ?? `answer_${context.turnId}`;\n const seq = readAgentEventSeq(streamEvent) ?? 0;\n const isLast = Boolean(\n ('isLast' in streamEvent && streamEvent.isLast) ||\n ('is_last' in streamEvent && streamEvent.is_last),\n );\n const chunkEvent = createFinalAnswerChunkEvent(id, context.conversationId, context.turnId, answerId, seq, text, {\n timestamp,\n is_last: isLast,\n });\n chunkEvent.ephemeral = true;\n if (context.metadata) chunkEvent.metadata = { ...(chunkEvent.metadata ?? {}), ...context.metadata };\n return chunkEvent;\n}\n","import type {\n AiMessage,\n RuntimeEvent,\n ThoughtEvent as RuntimeThoughtEvent,\n ToolCallDecisionEvent as RuntimeToolCallDecisionEvent,\n ToolOutputEvent as RuntimeToolOutputEvent,\n FinalAnswerEvent as RuntimeFinalAnswerEvent,\n UserInputEvent as RuntimeUserInputEvent,\n ToolCallWire,\n} from '../../contracts';\nimport {\n type ConversationMemoryPort,\n type HistorySummaryRuntimeEvent,\n isToolCallWire,\n} from './provider-sidecar';\n\nexport function applyRuntimeEventToMemory(event: RuntimeEvent, memory: ConversationMemoryPort): void {\n if (!event || !memory) return;\n\n switch (event.type) {\n case 'user_input': {\n const userEvent = event as RuntimeUserInputEvent;\n memory.addUserMessage(userEvent.content || '', userEvent.id);\n break;\n }\n\n case 'tool_call_decision':\n applyToolCallDecision(event as RuntimeToolCallDecisionEvent, memory);\n break;\n\n case 'tool_output':\n applyToolOutput(event as RuntimeToolOutputEvent, memory);\n break;\n\n case 'final_answer': {\n const answerEvent = event as RuntimeFinalAnswerEvent;\n const answerContent = answerEvent.content || '';\n if (answerContent.trim()) {\n const metadata = Array.isArray(answerEvent.reasoning_details)\n ? { reasoning_details: answerEvent.reasoning_details }\n : undefined;\n memory.addAssistantMessage(answerContent, 'final_answer', metadata, answerEvent.id);\n }\n break;\n }\n\n case 'thought': {\n const thoughtEvent = event as RuntimeThoughtEvent;\n memory.addAssistantMessage(thoughtEvent.content || '', 'thought', undefined, thoughtEvent.id);\n break;\n }\n\n case 'history_summary':\n applyHistorySummary(event as HistorySummaryRuntimeEvent, memory);\n break;\n\n case 'error':\n break;\n\n default:\n break;\n }\n}\n\nfunction applyToolCallDecision(event: RuntimeToolCallDecisionEvent, memory: ConversationMemoryPort): void {\n const payload = event.payload || {};\n const toolCalls = Array.isArray(payload.tool_calls)\n ? payload.tool_calls.filter(isToolCallWire)\n : [];\n const toolArgs = event.args || payload.args || {};\n const toolCallId = event.tool_call_id ||\n (toolCalls.length > 0 ? toolCalls[0].id : `call_${event.id || Date.now()}`);\n\n const normalizedToolCalls: ToolCallWire[] = toolCalls.length > 0\n ? toolCalls\n : [\n {\n id: toolCallId,\n type: 'function',\n function: { name: event.tool_name, arguments: JSON.stringify(toolArgs || {}) },\n },\n ];\n const reasoningDetails = Array.isArray(payload.reasoning_details)\n ? payload.reasoning_details\n : undefined;\n\n memory.addAssistantMessage(\n null,\n 'tool_calls',\n {\n tool_calls: normalizedToolCalls,\n ...(reasoningDetails ? { reasoning_details: reasoningDetails } : {}),\n },\n event.id,\n );\n}\n\nfunction applyToolOutput(event: RuntimeToolOutputEvent, memory: ConversationMemoryPort): void {\n if (!event.tool_call_id) return;\n const payload = event.payload || {};\n const outputValue = payload.result ?? payload.output ?? event.output;\n let serializedOutput: string;\n if (typeof outputValue === 'string') {\n serializedOutput = outputValue;\n } else {\n try {\n serializedOutput = JSON.stringify(outputValue ?? '');\n } catch {\n serializedOutput = String(outputValue ?? '');\n }\n }\n memory.addToolResponse(String(event.tool_call_id), serializedOutput, event.tool_name, event.id);\n}\n\nfunction applyHistorySummary(summaryEvent: HistorySummaryRuntimeEvent, memory: ConversationMemoryPort): void {\n const summaryMetadata: AiMessage['metadata'] = {\n messageType: 'summary',\n generatedBy: summaryEvent.generated_by || 'AgentSummarizationProvider',\n originalMessageCount: summaryEvent.original_message_count,\n compressionRatio: summaryEvent.compression_ratio,\n includedOldSummary: summaryEvent.included_old_summary,\n replacesStartMessageId: summaryEvent.replaces_start_message_id,\n replacesEndMessageId: summaryEvent.replaces_end_message_id,\n replacedMessageIds: Array.isArray(summaryEvent.replaced_message_ids) ? summaryEvent.replaced_message_ids : [],\n summarySeq: summaryEvent.summary_seq || 0,\n };\n\n const summaryMessage: AiMessage = {\n id: summaryEvent.id,\n role: 'system',\n type: 'history_summary',\n content: summaryEvent.content || '',\n timestamp: summaryEvent.timestamp,\n metadata: summaryMetadata,\n };\n\n memory.appendMessage(summaryMessage);\n}\n","import {\n AnyAgentEvent,\n ErrorEvent as AgentErrorEvent,\n FinalAnswerEvent as AgentFinalAnswerEvent,\n ObservationEvent as AgentObservationEvent,\n StreamChunkEvent as AgentStreamChunkEvent,\n ThoughtEvent as AgentThoughtEvent,\n ToolCallDecisionEvent as AgentToolCallDecisionEvent,\n ToolProcessEvent as AgentToolProcessEvent,\n isMarkedAsSseDispatched,\n readAgentEventAnswerId,\n readAgentEventSeq,\n} from './agentEvents';\nimport {\n createSSEErrorEvent,\n createSSEFinalAnswerChunkEvent,\n createSSEFinalAnswerEvent,\n createSSEThoughtEvent,\n createSSEToolCallDecisionEvent,\n createSSEToolOutputEvent,\n createSSEToolProcessEvent,\n type SSEEvent,\n} from '../../contracts';\nimport { generateMessageId } from '../../shared/ids';\nimport {\n type EventMappingContext,\n type SSEMappingOptions,\n isRecord,\n readAnswerIdFromEvent,\n readMetaFromEvent,\n resolveToolDisplayOptions,\n} from './provider-sidecar';\n\nexport function agentEventToSSE(\n agentEvent: AnyAgentEvent,\n context: EventMappingContext,\n options: SSEMappingOptions = {},\n): SSEEvent | null {\n if (!agentEvent || typeof agentEvent !== 'object') return null;\n if (options.skipAlreadyDispatched && isMarkedAsSseDispatched(agentEvent)) return null;\n\n const { conversationId, turnId } = context;\n const timestamp = agentEvent.timestamp ?? context.timestamp ?? Date.now();\n const id = agentEvent.id ?? generateMessageId();\n const contextMeta = context.metadata;\n\n switch (agentEvent.type) {\n case 'thought': {\n const thoughtEvent = agentEvent as AgentThoughtEvent;\n const rawContent = 'content' in thoughtEvent ? thoughtEvent.content : '';\n const delta = 'delta' in thoughtEvent ? thoughtEvent.delta : '';\n const isComplete = 'is_complete' in thoughtEvent ? Boolean(thoughtEvent.is_complete) : false;\n const thoughtMessageId =\n typeof thoughtEvent.thought_message_id === 'string' && thoughtEvent.thought_message_id.length > 0\n ? thoughtEvent.thought_message_id\n : undefined;\n\n const sse = createSSEThoughtEvent(id, conversationId, turnId, {\n thought_message_id: thoughtMessageId,\n content: isComplete ? (rawContent ?? '') : undefined,\n delta: !isComplete ? (delta ?? rawContent) : undefined,\n is_complete: isComplete,\n });\n sse.timestamp = timestamp;\n const thoughtMeta = isRecord(thoughtEvent.meta) ? thoughtEvent.meta : undefined;\n if (contextMeta || thoughtMeta) {\n sse.metadata = { ...(contextMeta ?? {}), ...(thoughtMeta ?? {}) };\n }\n return sse;\n }\n\n case 'tool_call_decision':\n case 'tool_process':\n return mapToolProgressToSse(agentEvent, context, options, id, timestamp);\n\n case 'observation': {\n const observationEvent = agentEvent as AgentObservationEvent;\n const toolName = observationEvent.tool_name || 'unknown_tool';\n const toolCallId = observationEvent.tool_call_id || `call_${id}`;\n const status: 'success' | 'error' = observationEvent.success === false ? 'error' : 'success';\n const payload = observationEvent.payload || {};\n const duration = payload.duration_ms as number | undefined;\n const sse = createSSEToolOutputEvent(\n id,\n conversationId,\n turnId,\n toolName,\n toolCallId,\n status,\n observationEvent.output,\n { timestamp, payload, duration_ms: duration },\n );\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'stream_chunk': {\n const streamEvent = agentEvent as AgentStreamChunkEvent;\n const text = streamEvent.content ?? '';\n if (!text) return null;\n const answerId = readAgentEventAnswerId(streamEvent) ?? `answer_${turnId}`;\n const seq = readAgentEventSeq(streamEvent) ?? 0;\n const isLast = Boolean(\n ('isLast' in streamEvent && streamEvent.isLast) ||\n ('is_last' in streamEvent && streamEvent.is_last),\n );\n const sse = createSSEFinalAnswerChunkEvent(id, conversationId, turnId, answerId, seq, text, {\n is_last: isLast,\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'final_answer': {\n const finalAnswerEvent = agentEvent as AgentFinalAnswerEvent;\n const answer = finalAnswerEvent.answer ?? '';\n const answerIdFromSnake =\n typeof finalAnswerEvent.answer_id === 'string' && finalAnswerEvent.answer_id.trim().length > 0\n ? finalAnswerEvent.answer_id.trim()\n : undefined;\n const answerId = answerIdFromSnake ?? readAnswerIdFromEvent(finalAnswerEvent) ?? `answer_${turnId}`;\n const sse = createSSEFinalAnswerEvent(id, conversationId, turnId, answerId, answer, {\n meta: readMetaFromEvent(finalAnswerEvent),\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n case 'error': {\n const errorEvent = agentEvent as AgentErrorEvent;\n const sse = createSSEErrorEvent(id, conversationId, turnId, errorEvent.error ?? 'Unknown error', {\n details: errorEvent.details,\n });\n sse.timestamp = timestamp;\n if (contextMeta) sse.metadata = contextMeta;\n return sse;\n }\n\n default:\n return null;\n }\n}\n\nfunction mapToolProgressToSse(\n agentEvent: AgentToolCallDecisionEvent | AgentToolProcessEvent,\n context: EventMappingContext,\n options: SSEMappingOptions,\n id: string,\n timestamp: number,\n): SSEEvent {\n const toolName = agentEvent.tool_name || 'unknown_tool';\n const toolCallId = agentEvent.tool_call_id || `call_${id}`;\n const phase = agentEvent.phase ?? 'start';\n const status = agentEvent.status ?? 'loading';\n const args = agentEvent.tool_args || {};\n const payload = agentEvent.payload || {};\n const meta = agentEvent.meta && typeof agentEvent.meta === 'object' ? { ...agentEvent.meta } : {};\n const displayOptions = resolveToolDisplayOptions(toolName, options.toolPresentationPort);\n if (displayOptions && !meta.displayOptions) meta.displayOptions = displayOptions;\n\n const sse = agentEvent.type === 'tool_call_decision'\n ? createSSEToolCallDecisionEvent(id, context.conversationId, context.turnId, toolName, toolCallId, phase, status, {\n timestamp,\n args,\n payload,\n meta,\n })\n : createSSEToolProcessEvent(id, context.conversationId, context.turnId, toolName, toolCallId, phase, status, {\n timestamp,\n args,\n payload,\n meta,\n });\n sse.timestamp = timestamp;\n if (context.metadata) sse.metadata = context.metadata;\n return sse;\n}\n","/**\n * @file src/agent/runtime-kernel/events/eventMappers.ts\n * @brief 统一事件映射器兼容出口\n *\n * @description\n * 具体职责已拆分:\n * - sse-projection.ts:AnyAgentEvent → SSEEvent\n * - agent-to-runtime.ts:AnyAgentEvent → RuntimeEvent\n * - runtime-to-ai-message.ts:RuntimeEvent → ConversationMemoryPort\n * - provider-sidecar.ts:sidecar/tool_call/displayOptions 相关共享工具与类型\n */\n\nimport type { AnyAgentEvent } from './agentEvents';\nimport type { RuntimeEvent } from '../../contracts';\nimport { agentEventToRuntime } from './agent-to-runtime';\nimport {\n type ConversationMemoryPort,\n type EventMappingContext,\n type RuntimeMappingOptions,\n type SSEMappingOptions,\n} from './provider-sidecar';\nimport { applyRuntimeEventToMemory } from './runtime-to-ai-message';\nimport { agentEventToSSE } from './sse-projection';\n\nexport { agentEventToRuntime } from './agent-to-runtime';\nexport {\n type ConversationMemoryPort,\n type EventMappingContext,\n type RuntimeMappingOptions,\n type SSEMappingOptions,\n} from './provider-sidecar';\nexport { applyRuntimeEventToMemory } from './runtime-to-ai-message';\nexport { agentEventToSSE } from './sse-projection';\n\n/**\n * 统一的事件映射器。\n *\n * 中文备注:\n * - 保持旧调用方式 `eventMapper.xxx` 不变;\n * - 新逻辑不要继续写回本文件,按职责放到拆分后的模块。\n */\nexport const eventMapper = {\n /**\n * 将 AgentEvent 转换为 SSEEvent。\n */\n agentToSse: agentEventToSSE,\n\n /**\n * 将 AgentEvent 转换为 RuntimeEvent。\n */\n agentToRuntime: agentEventToRuntime,\n\n /**\n * 将 RuntimeEvent 应用到 ConversationMemoryPort。\n */\n applyToMemory: applyRuntimeEventToMemory,\n\n /**\n * 批量处理 AgentEvent → SSEEvent + RuntimeEvent。\n */\n agentToBoth: (\n agentEvent: AnyAgentEvent,\n context: EventMappingContext,\n options: { sseOptions?: SSEMappingOptions; runtimeOptions?: RuntimeMappingOptions } = {},\n ) => {\n const sseEvent = agentEventToSSE(agentEvent, context, options.sseOptions);\n const runtimeEvent = agentEventToRuntime(agentEvent, context, options.runtimeOptions);\n return { sseEvent, runtimeEvent };\n },\n\n /**\n * 批量重建内存。\n */\n rebuildMemory: (events: RuntimeEvent[], memory: ConversationMemoryPort) => {\n for (const event of events) {\n applyRuntimeEventToMemory(event, memory);\n }\n },\n};\n","import type { RuntimeEvent } from '../../contracts';\n\n/**\n * 中文备注:\n * - 本文件是事件生命周期治理的唯一入口;\n * - 目标是把“是否持久化 / 是否进入上下文 / 是否属于工具决策”这些规则从散落判断收敛到单点;\n * - 后续新增事件时,优先修改这里,而不是去 bridge / orchestrator / converter / projector 各补一份条件。\n */\n\ntype TypedEvent = {\n type: string;\n metadata?: Record<string, unknown>;\n content?: string;\n};\n\nexport type RuntimeEventUiProjectionKind =\n | 'hidden'\n | 'user_input'\n | 'thought'\n | 'final_answer'\n | 'final_answer_chunk'\n | 'tool_call_decision'\n | 'tool_process'\n | 'tool_output'\n | 'requires_user_interaction'\n | 'audit_envelope'\n | 'todo_updated'\n | 'subrun_trace'\n | 'error'\n | 'stream_end'\n | 'history_summary'\n | 'checkpoint_history_summary'\n | 'unsupported';\n\nexport type RuntimeEventRealtimeChannel = 'event_bus_sse' | 'none';\n\nexport interface RuntimeEventLifecycleDecision {\n uiProjectionKind: RuntimeEventUiProjectionKind;\n persist: boolean;\n replayToUi: boolean;\n enterAgentContext: boolean;\n realtimeChannel: RuntimeEventRealtimeChannel;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function isToolCallDecisionEvent<T extends { type: string }>(\n event: T,\n): event is T & { type: 'tool_call_decision' } {\n return event.type === 'tool_call_decision';\n}\n\nexport function isToolProcessEvent<T extends { type: string }>(\n event: T,\n): event is T & { type: 'tool_process' } {\n return event.type === 'tool_process';\n}\n\nexport function isTodoUpdatedRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'todo_updated' }> {\n return event.type === 'todo_updated';\n}\n\nexport function isSubRunTraceRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'subrun_trace' }> {\n return event.type === 'subrun_trace';\n}\n\nexport function isStreamEndRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'stream_end' }> {\n return event.type === 'stream_end';\n}\n\nexport function isRequiresUserInteractionRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'requires_user_interaction' }> {\n return event.type === 'requires_user_interaction';\n}\n\nexport function isAuditEnvelopeRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'audit_envelope' }> {\n return event.type === 'audit_envelope';\n}\n\nexport function isControlRuntimeEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'control' }> {\n return event.type === 'control';\n}\n\nexport function isHiddenUserInputEvent(event: RuntimeEvent): boolean {\n if (event.type !== 'user_input') {\n return false;\n }\n\n const metadata = isRecord(event.metadata) ? event.metadata : undefined;\n const ui = metadata && isRecord(metadata.ui) ? metadata.ui : undefined;\n return ui?.presentation === 'hidden';\n}\n\nexport function isEmptyTerminalAssistantRuntimeEvent(event: RuntimeEvent): boolean {\n if (event.type !== 'thought' && event.type !== 'final_answer') {\n return false;\n }\n\n return event.content.trim().length === 0;\n}\n\nexport function shouldPersistRuntimeEvent(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).persist;\n}\n\nexport function shouldReplayRuntimeEventToUi(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).replayToUi;\n}\n\nexport function shouldEnterAgentContext(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).enterAgentContext;\n}\n\nexport function shouldCreateToolCallMessage(event: TypedEvent): boolean {\n return isToolCallDecisionEvent(event);\n}\n\nexport function isCheckpointHistorySummaryEvent(\n event: RuntimeEvent,\n): event is Extract<RuntimeEvent, { type: 'history_summary' }> {\n if (event.type !== 'history_summary') {\n return false;\n }\n\n const metadata = isRecord(event.metadata) ? event.metadata : undefined;\n return metadata?.summary_kind === 'checkpoint';\n}\n\nexport function getRuntimeEventUiProjectionKind(\n event: RuntimeEvent,\n): RuntimeEventUiProjectionKind {\n if (isHiddenUserInputEvent(event)) {\n return 'hidden';\n }\n\n switch (event.type) {\n case 'user_input':\n return 'user_input';\n case 'thought':\n return 'thought';\n case 'final_answer':\n return 'final_answer';\n case 'final_answer_chunk':\n return 'final_answer_chunk';\n case 'tool_call_decision':\n return 'tool_call_decision';\n case 'tool_process':\n return 'tool_process';\n case 'tool_output':\n return 'tool_output';\n case 'requires_user_interaction':\n return 'requires_user_interaction';\n case 'audit_envelope':\n return 'audit_envelope';\n case 'todo_updated':\n return 'todo_updated';\n case 'subrun_trace':\n return 'subrun_trace';\n case 'error':\n return 'error';\n case 'stream_end':\n return 'stream_end';\n case 'history_summary':\n return isCheckpointHistorySummaryEvent(event)\n ? 'checkpoint_history_summary'\n : 'history_summary';\n default:\n return 'unsupported';\n }\n}\n\nexport function describeRuntimeEventLifecycle(\n event: RuntimeEvent,\n): RuntimeEventLifecycleDecision {\n const uiProjectionKind = getRuntimeEventUiProjectionKind(event);\n const persist = event.ephemeral !== true && !isToolProcessEvent(event);\n\n const replayToUi =\n uiProjectionKind !== 'hidden' &&\n uiProjectionKind !== 'audit_envelope' &&\n uiProjectionKind !== 'final_answer_chunk' &&\n uiProjectionKind !== 'unsupported';\n\n const enterAgentContext = (() => {\n if (isTodoUpdatedRuntimeEvent(event)) {\n return false;\n }\n\n if (isSubRunTraceRuntimeEvent(event)) {\n return false;\n }\n\n if (isStreamEndRuntimeEvent(event)) {\n return false;\n }\n\n if (isRequiresUserInteractionRuntimeEvent(event)) {\n return false;\n }\n\n if (isAuditEnvelopeRuntimeEvent(event)) {\n return false;\n }\n\n if (isControlRuntimeEvent(event)) {\n return false;\n }\n\n if (isHiddenUserInputEvent(event)) {\n return false;\n }\n\n if (isToolProcessEvent(event)) {\n return false;\n }\n\n if (event.type === 'final_answer_chunk') {\n return false;\n }\n\n if (isEmptyTerminalAssistantRuntimeEvent(event)) {\n return false;\n }\n\n return true;\n })();\n\n const realtimeChannel: RuntimeEventRealtimeChannel = (() => {\n switch (uiProjectionKind) {\n case 'thought':\n case 'final_answer':\n case 'final_answer_chunk':\n case 'tool_call_decision':\n case 'tool_process':\n case 'tool_output':\n case 'requires_user_interaction':\n case 'todo_updated':\n case 'subrun_trace':\n case 'error':\n return 'event_bus_sse';\n case 'audit_envelope':\n return 'none';\n default:\n return 'none';\n }\n })();\n\n return {\n uiProjectionKind,\n persist,\n replayToUi,\n enterAgentContext,\n realtimeChannel,\n };\n}\n\nexport function shouldEmitRuntimeEventToSse(event: RuntimeEvent): boolean {\n return describeRuntimeEventLifecycle(event).realtimeChannel === 'event_bus_sse';\n}\n"]}