@otakumesi/heph 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +536 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/core.d.mts +2 -0
- package/dist/core.mjs +2 -0
- package/dist/hono.d.mts +30 -0
- package/dist/hono.d.mts.map +1 -0
- package/dist/hono.mjs +425 -0
- package/dist/hono.mjs.map +1 -0
- package/dist/index-CdsI9z7r.d.mts +1075 -0
- package/dist/index-CdsI9z7r.d.mts.map +1 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.mjs +3 -0
- package/dist/mcp.d.mts +2 -0
- package/dist/mcp.mjs +2 -0
- package/dist/skills-D1QE4Dtc.d.mts +13 -0
- package/dist/skills-D1QE4Dtc.d.mts.map +1 -0
- package/dist/skills-DLfYbSME.mjs +131 -0
- package/dist/skills-DLfYbSME.mjs.map +1 -0
- package/dist/skills.d.mts +2 -0
- package/dist/skills.mjs +2 -0
- package/dist/sqlite.d.mts +138 -0
- package/dist/sqlite.d.mts.map +1 -0
- package/dist/sqlite.mjs +1140 -0
- package/dist/sqlite.mjs.map +1 -0
- package/dist/src-DeheByi4.mjs +2677 -0
- package/dist/src-DeheByi4.mjs.map +1 -0
- package/dist/worker.d.mts +15 -0
- package/dist/worker.d.mts.map +1 -0
- package/dist/worker.mjs +18 -0
- package/dist/worker.mjs.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-DeheByi4.mjs","names":["runInputText"],"sources":["../../core/src/errors.ts","../../core/src/context.ts","../../core/src/definitions.ts","../../core/src/executor.ts","../../core/src/ids.ts","../../core/src/providers.ts","../../core/src/queue.ts","../../core/src/skills.ts","../../core/src/stores.ts","../../core/src/runtime.ts"],"sourcesContent":["export type HephErrorCode =\n | \"HEPH1001\"\n | \"HEPH2001\"\n | \"HEPH3001\"\n | \"HEPH3002\"\n | \"HEPH3003\"\n | \"HEPH3004\"\n | \"HEPH3005\"\n | \"HEPH4001\"\n | \"HEPH4002\"\n | \"HEPH4003\"\n | \"HEPH4004\"\n | \"HEPH4005\"\n | \"HEPH4006\"\n | \"HEPH5001\"\n | \"HEPH6001\"\n | \"HEPH6002\"\n | \"HEPH6003\"\n | \"HEPH6004\"\n | \"HEPH6005\"\n | \"HEPH7001\"\n | \"HEPH7002\"\n | \"HEPH8001\"\n | \"HEPH8002\"\n | \"HEPH8003\"\n | \"HEPH8004\"\n | \"HEPH9001\"\n | \"HEPH9002\"\n | \"HEPH9003\";\n\nexport interface HephErrorOptions {\n code: HephErrorCode;\n title: string;\n message?: string;\n details?: Record<string, unknown>;\n cause?: unknown;\n status?: number;\n}\n\nexport class HephError extends Error {\n readonly code: HephErrorCode;\n readonly title: string;\n readonly details?: Record<string, unknown>;\n readonly status?: number;\n\n constructor(options: HephErrorOptions) {\n super(options.message ?? options.title, hasCause(options) ? { cause: options.cause } : undefined);\n this.name = \"HephError\";\n this.code = options.code;\n this.title = options.title;\n\n if (options.details !== undefined) {\n this.details = options.details;\n }\n\n if (options.status !== undefined) {\n this.status = options.status;\n }\n }\n}\n\nexport function isHephError(error: unknown): error is HephError {\n return error instanceof HephError;\n}\n\nexport function toErrorDetails(error: unknown): Record<string, unknown> {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message\n };\n }\n\n return {\n message: String(error)\n };\n}\n\nfunction hasCause(options: HephErrorOptions): options is HephErrorOptions & { cause: unknown } {\n return \"cause\" in options;\n}\n","import { HephError } from \"./errors.js\";\nimport type {\n ContextBlock,\n ContextManifest,\n ContextManifestBlock,\n ContextTemplate,\n ContextTemplateMessage,\n RenderedContext,\n RunId\n} from \"./types.js\";\n\nexport interface ContextRendererOptions {\n template: ContextTemplate;\n blocks: ContextBlock[];\n runId: RunId;\n input: string;\n runtime?: Record<string, string>;\n}\n\nexport class ContextRenderer {\n render(options: ContextRendererOptions): RenderedContext {\n const slotValues = new Map<string, string>();\n const manifestBlocks: ContextManifestBlock[] = [];\n\n for (const block of options.blocks) {\n const slot = options.template.slots[block.key];\n const originalTokens = estimateTokens(block.content);\n const truncatedContent = slot?.maxTokens ? truncateToTokens(block.content, slot.maxTokens) : block.content;\n const tokens = estimateTokens(truncatedContent);\n const existing = slotValues.get(block.key);\n\n slotValues.set(block.key, existing ? `${existing}\\n\\n${truncatedContent}` : truncatedContent);\n manifestBlocks.push({\n key: block.key,\n type: block.type,\n tokens,\n sourceRefs: block.sourceRefs ?? [],\n truncated: tokens < originalTokens\n });\n }\n\n for (const [key, slot] of Object.entries(options.template.slots)) {\n const value = slotValues.get(key);\n\n if (slot.required && isBlank(value)) {\n throw new HephError({\n code: \"HEPH2001\",\n title: \"Required context slot is missing\",\n message: `Context template ${options.template.id} requires slot ${key}.`,\n status: 422,\n details: {\n templateId: options.template.id,\n slot: key\n }\n });\n }\n }\n\n const messages = options.template.messages.map((message) => ({\n role: message.role,\n content: interpolate(message.content, {\n input: options.input,\n runtime: options.runtime ?? {},\n slots: slotValues\n }).trim()\n }));\n\n const manifest: ContextManifest = {\n runId: options.runId,\n contextTemplateId: options.template.id,\n contextTemplateVersion: options.template.version,\n blocks: manifestBlocks,\n totalTokens: messages.reduce((sum, message) => sum + estimateTokens(message.content), 0),\n createdAt: new Date()\n };\n\n return {\n messages,\n manifest\n };\n }\n}\n\nexport const defaultContextTemplate: ContextTemplate = {\n id: \"default\",\n version: \"0.1.0\",\n slots: {\n runtimePolicy: { required: true },\n agentIdentity: { required: true },\n developerRules: { maxTokens: 1200 },\n currentTask: { required: true, maxTokens: 1200 },\n sessionState: { required: true, maxTokens: 1500 },\n openTasks: { maxTokens: 1000 },\n pendingApprovals: { maxTokens: 800 },\n skills: { maxTokens: 2000 },\n memories: { maxTokens: 2000 },\n condensedHistory: { maxTokens: 2000 },\n recentMessages: { maxTokens: 3000 },\n domainContext: { maxTokens: 2500 },\n workspaceContext: { maxTokens: 2500 },\n artifacts: { maxTokens: 1500 },\n teamContext: { maxTokens: 1500 },\n toolManifest: { required: true, maxTokens: 2500 },\n outputContract: { maxTokens: 1000 }\n },\n messages: [\n {\n role: \"system\",\n content: `\n{{ runtimePolicy }}\n\n{{ agentIdentity }}\n`\n },\n {\n role: \"developer\",\n content: `\nDeveloper rules:\n{{ developerRules }}\n\nTool and safety policy:\n{{ runtime.toolPolicy }}\n\nOutput contract:\n{{ outputContract }}\n`\n },\n {\n role: \"user\",\n content: `\nCurrent task:\n{{ currentTask }}\n\nCurrent session state:\n{{ sessionState }}\n\nOpen tasks:\n{{ openTasks }}\n\nPending approvals or blocked actions:\n{{ pendingApprovals }}\n\nActive skills:\n{{ skills }}\n\nRelevant memory:\n{{ memories }}\n\nCondensed prior history:\n{{ condensedHistory }}\n\nRecent conversation:\n{{ recentMessages }}\n\nDomain context:\n{{ domainContext }}\n\nWorkspace context:\n{{ workspaceContext }}\n\nRelevant artifacts:\n{{ artifacts }}\n\nTeam context:\n{{ teamContext }}\n\nAvailable tools for this Run:\n{{ toolManifest }}\n\nUser input:\n{{ input }}\n`\n }\n ]\n};\n\nexport function estimateTokens(content: string): number {\n if (!content) return 0;\n return Math.max(1, Math.ceil(content.length / 4));\n}\n\nfunction truncateToTokens(content: string, maxTokens: number): string {\n const maxChars = Math.max(0, maxTokens * 4);\n\n if (content.length <= maxChars) {\n return content;\n }\n\n return `${content.slice(0, Math.max(0, maxChars - 16)).trimEnd()}\\n[truncated]`;\n}\n\nfunction interpolate(\n template: string,\n values: {\n input: string;\n runtime: Record<string, string>;\n slots: Map<string, string>;\n }\n): string {\n return template.replaceAll(/\\{\\{\\s*([\\w.]+)\\s*\\}\\}/g, (_match, key: string) => {\n if (key === \"input\") {\n return values.input;\n }\n\n if (key.startsWith(\"runtime.\")) {\n return values.runtime[key.slice(\"runtime.\".length)] ?? \"\";\n }\n\n return values.slots.get(key) ?? \"\";\n });\n}\n\nfunction isBlank(value: string | undefined): boolean {\n return value === undefined || value.trim().length === 0;\n}\n\nexport function messagesToText(messages: ContextTemplateMessage[]): string {\n return messages.map((message) => `${message.role}: ${message.content}`).join(\"\\n\\n\");\n}\n","import { z } from \"zod\";\nimport { HephError } from \"./errors.js\";\nimport type {\n AgentDefinition,\n AgentSpec as AgentSpecType,\n ContextProvider as ContextProviderType,\n ContextProviderDefinition,\n ContextTemplate as ContextTemplateType,\n McpAgentPolicy,\n SkillAgentPolicy,\n Tool as ToolType,\n ToolDefinition\n} from \"./types.js\";\n\nexport function defineAgent<TApp = unknown>(definition: AgentDefinition<TApp>): AgentSpecType<TApp> {\n return {\n id: definition.id,\n version: definition.version ?? null,\n instructions: definition.instructions,\n model: definition.model ?? null,\n tools: definition.tools ?? [],\n mcp: normalizeMcpPolicy(definition.mcp, definition.allowAllMcpTools),\n skills: normalizeSkillPolicy(definition.skills),\n contextProviders: [...(definition.contextProviders ?? []), ...(definition.context ?? [])],\n contextTemplate: definition.contextTemplate ?? null,\n metadata: definition.metadata ?? {}\n };\n}\n\nfunction normalizeMcpPolicy(\n policy: AgentDefinition[\"mcp\"],\n allowAllTools: boolean | undefined\n): McpAgentPolicy | null {\n if (policy === undefined || policy === null) {\n return null;\n }\n\n if (Array.isArray(policy)) {\n const normalized: McpAgentPolicy = {\n allowCapabilities: policy\n };\n\n if (allowAllTools !== undefined) {\n normalized.allowAllTools = allowAllTools;\n }\n\n return normalized;\n }\n\n if (allowAllTools !== undefined) {\n return {\n ...policy,\n allowAllTools\n };\n }\n\n return policy;\n}\n\nfunction normalizeSkillPolicy(policy: AgentDefinition[\"skills\"]): SkillAgentPolicy | null {\n if (policy === undefined || policy === null) {\n return null;\n }\n\n if (policy === \"all\") {\n return {\n allow: \"all\"\n };\n }\n\n if (Array.isArray(policy)) {\n return {\n allow: policy\n };\n }\n\n return policy;\n}\n\nexport function defineContextProvider<TApp = unknown>(\n definition: ContextProviderDefinition<TApp>\n): ContextProviderType<TApp> {\n return {\n id: definition.id,\n load: definition.load\n };\n}\n\nexport function defineContextTemplate(template: ContextTemplateType): ContextTemplateType {\n return template;\n}\n\nexport function defineTool<TSchema extends z.ZodType, TResult = unknown, TApp = unknown>(\n definition: ToolDefinition<TSchema, TResult, TApp>\n): ToolType<z.infer<TSchema>, TResult, TApp> {\n const jsonSchema = toJsonSchema(definition.id, definition.inputSchema);\n const tool: ToolType<z.infer<TSchema>, TResult, TApp> = {\n id: definition.id,\n description: definition.description,\n inputSchema: definition.inputSchema,\n jsonSchema,\n sideEffect: definition.sideEffect ?? false,\n requiresApproval: definition.requiresApproval ?? false,\n execute: definition.execute\n };\n\n if (definition.concurrencyKey !== undefined) {\n tool.concurrencyKey = definition.concurrencyKey;\n }\n\n return tool;\n}\n\nexport const AgentSpec = {\n define: defineAgent\n};\n\nexport const ContextProvider = {\n define: defineContextProvider\n};\n\nexport const ContextTemplate = {\n define: defineContextTemplate\n};\n\nexport const Tool = {\n define: defineTool\n};\n\nfunction toJsonSchema(toolId: string, schema: z.ZodType): Record<string, unknown> {\n try {\n return z.toJSONSchema(schema) as Record<string, unknown>;\n } catch (cause) {\n throw new HephError({\n code: \"HEPH3001\",\n title: \"Tool schema is not JSON Schema representable\",\n message: `Tool ${toolId} uses a Zod schema that cannot be exposed to the model.`,\n status: 422,\n details: {\n toolId\n },\n cause\n });\n }\n}\n","import type {\n AgentSession,\n AgentSpec,\n AppendMessageInput,\n AppendRunEventInput,\n AuthContext,\n DeferredToolOperation,\n HephStores,\n Message,\n RenderedContext,\n Run\n} from \"./types.js\";\nimport type { CallToolInput, DeferToolResultInput, ToolCallAttemptResult, ToolCallResult } from \"./runtime.js\";\n\nexport interface RunExecutionContext<TApp = unknown> {\n auth: AuthContext | null;\n agent: AgentSession;\n spec: AgentSpec<TApp>;\n run: Run;\n renderedContext: RenderedContext;\n stores: HephStores;\n app: TApp;\n signal: AbortSignal;\n emit(event: Omit<AppendRunEventInput, \"runId\">): Promise<void>;\n appendMessage(input: Omit<AppendMessageInput, \"agentId\" | \"auth\">): Promise<Message>;\n tools: {\n call(input: CallToolInput): Promise<ToolCallResult>;\n tryCall(input: CallToolInput): Promise<ToolCallAttemptResult>;\n };\n callTool(input: CallToolInput): Promise<ToolCallResult>;\n tryCallTool(input: CallToolInput): Promise<ToolCallAttemptResult>;\n deferToolResult(input: Omit<DeferToolResultInput, \"runId\"> & { runId?: Run[\"id\"] }): Promise<DeferredToolOperation>;\n}\n\nexport interface RunExecutor<TApp = unknown> {\n execute(ctx: RunExecutionContext<TApp>): Promise<void>;\n}\n\nexport class MinimalRunExecutor<TApp = unknown> implements RunExecutor<TApp> {\n async execute(ctx: RunExecutionContext<TApp>): Promise<void> {\n await ctx.emit({\n type: \"turn.started\",\n payload: {\n executor: \"minimal\"\n }\n });\n\n const text = runInputText(ctx.run.input);\n const response = text ? `Minimal executor received: ${text}` : \"Minimal executor completed the run.\";\n\n await ctx.emit({\n type: \"message.started\",\n payload: {\n role: \"assistant\"\n }\n });\n await ctx.emit({\n type: \"message.delta\",\n payload: {\n text: response\n }\n });\n\n const message = await ctx.appendMessage({\n role: \"assistant\",\n content: response,\n sourceRunId: ctx.run.id,\n metadata: {\n executor: \"minimal\"\n }\n });\n\n await ctx.emit({\n type: \"message.completed\",\n payload: {\n messageId: message.id,\n role: message.role,\n content: message.content\n },\n sourceRefs: [\n {\n type: \"message\",\n id: message.id\n }\n ]\n });\n await ctx.emit({\n type: \"turn.completed\",\n payload: {\n executor: \"minimal\"\n }\n });\n }\n}\n\nfunction runInputText(input: Run[\"input\"]): string {\n return \"text\" in input ? input.text : \"\";\n}\n","export type IdPrefix =\n | \"agent_\"\n | \"run_\"\n | \"msg_\"\n | \"evt_\"\n | \"mem_\"\n | \"inbox_\"\n | \"op_\"\n | \"mcpbind_\"\n | \"skillbind_\"\n | \"approval_\";\n\nlet fallbackCounter = 0;\n\nexport function createId(prefix: IdPrefix): string {\n const randomId = globalThis.crypto?.randomUUID?.();\n\n if (randomId) {\n return `${prefix}${randomId.replaceAll(\"-\", \"\")}`;\n }\n\n fallbackCounter += 1;\n return `${prefix}${Date.now().toString(36)}${fallbackCounter.toString(36)}`;\n}\n\nexport function createAgentSessionId(): string {\n return createId(\"agent_\");\n}\n\nexport function createRunId(): string {\n return createId(\"run_\");\n}\n\nexport function createMessageId(): string {\n return createId(\"msg_\");\n}\n\nexport function createRunEventId(): string {\n return createId(\"evt_\");\n}\n\nexport function createMemoryId(): string {\n return createId(\"mem_\");\n}\n\nexport function createInboxEventId(): string {\n return createId(\"inbox_\");\n}\n\nexport function createDeferredToolOperationId(): string {\n return createId(\"op_\");\n}\n\nexport function createMcpBindingId(): string {\n return createId(\"mcpbind_\");\n}\n\nexport function createSkillBindingId(): string {\n return createId(\"skillbind_\");\n}\n\nexport function createApprovalRequestId(): string {\n return createId(\"approval_\");\n}\n","import { defineContextProvider } from \"./definitions.js\";\nimport type { ContextBlock, ContextProvider, MemoryScope, Message } from \"./types.js\";\n\nexport interface RecentMessagesOptions {\n limit?: number;\n}\n\nexport function recentMessages(options: RecentMessagesOptions = {}): ContextProvider {\n const limit = options.limit ?? 20;\n\n return defineContextProvider({\n id: \"recent-messages\",\n async load(ctx) {\n const messages = await ctx.stores.messages.listMessages(ctx.agent.id, { limit });\n\n if (messages.length === 0) {\n return null;\n }\n\n return {\n key: \"recentMessages\",\n type: \"message_history\",\n content: formatMessages(messages),\n sourceRefs: messages.map((message) => ({\n type: \"message\",\n id: message.id\n }))\n };\n }\n });\n}\n\nexport function threadState(): ContextProvider {\n return defineContextProvider({\n id: \"thread-state\",\n async load(ctx) {\n return {\n key: \"sessionState\",\n type: \"state\",\n content: JSON.stringify(ctx.agent.state, null, 2)\n };\n }\n });\n}\n\nexport interface MemorySearchOptions {\n topK?: number;\n scopes?: MemoryScope[];\n}\n\nexport function memorySearch(options: MemorySearchOptions = {}): ContextProvider {\n const topK = options.topK ?? 8;\n\n return defineContextProvider({\n id: \"memory-search\",\n async load(ctx) {\n const query = \"text\" in ctx.input ? ctx.input.text : undefined;\n const searchInput = {\n scopes: options.scopes ?? defaultMemoryScopes(ctx.agent.id, ctx.spec.id, ctx.auth?.userId),\n topK\n };\n const memories = await ctx.stores.memory.searchMemory(\n query === undefined\n ? searchInput\n : {\n ...searchInput,\n query\n }\n );\n\n if (memories.length === 0) {\n return null;\n }\n\n return {\n key: \"memories\",\n type: \"memory\",\n content: memories\n .map((memory) => {\n const sourceRefs = memory.sourceRefs.map((ref) => `${ref.type}:${ref.id}`).join(\", \");\n return `- [${memory.kind}] ${memory.content} (sourceRefs: ${sourceRefs})`;\n })\n .join(\"\\n\"),\n sourceRefs: memories.map((memory) => ({\n type: \"memory\",\n id: memory.id\n }))\n };\n }\n });\n}\n\nfunction formatMessages(messages: Message[]): string {\n return messages.map((message) => `${message.role}: ${message.content}`).join(\"\\n\");\n}\n\nfunction defaultMemoryScopes(sessionId: string, agentSpecId: string, userId: string | undefined): MemoryScope[] {\n const scopes: MemoryScope[] = [\n {\n type: \"session\",\n id: sessionId\n },\n {\n type: \"agent\",\n id: agentSpecId\n }\n ];\n\n if (userId) {\n scopes.push({\n type: \"user\",\n id: userId\n });\n }\n\n return scopes;\n}\n\nexport function block(block: ContextBlock): ContextBlock {\n return block;\n}\n","export type HephJob =\n | { type: \"schedule_agent\"; agentId: string }\n | { type: \"execute_run\"; agentId: string; runId: string }\n | { type: \"resume_run\"; agentId: string; runId: string }\n | { type: \"cancel_run\"; agentId: string; runId: string }\n | { type: \"ingest_memory\"; agentId: string; runId?: string };\n\nexport interface EnqueueOptions {\n delayMs?: number;\n idempotencyKey?: string;\n}\n\nexport interface QueueAdapter {\n enqueue(job: HephJob, options?: EnqueueOptions): Promise<void>;\n startConsumer?(handler: (job: HephJob) => Promise<void>): Promise<void>;\n handleBatch?(rawEvent: unknown, handler: (job: HephJob) => Promise<void>): Promise<void>;\n onIdle?(): Promise<void>;\n}\n\nexport interface InProcessQueueOptions {\n concurrency?: number;\n onError?: (error: unknown, job: HephJob) => void;\n}\n\nexport class InProcessQueue implements QueueAdapter {\n private readonly concurrency: number;\n private readonly onError: (error: unknown, job: HephJob) => void;\n private readonly jobs: HephJob[] = [];\n private readonly activeAgents = new Set<string>();\n private readonly idleResolvers = new Set<() => void>();\n private activeCount = 0;\n private scheduled = false;\n private handler: ((job: HephJob) => Promise<void>) | null = null;\n\n constructor(options: InProcessQueueOptions = {}) {\n this.concurrency = options.concurrency ?? 4;\n this.onError =\n options.onError ??\n ((error, job) => {\n console.error(\"Unhandled Heph in-process queue error\", { error, job });\n });\n }\n\n async startConsumer(handler: (job: HephJob) => Promise<void>): Promise<void> {\n this.handler = handler;\n this.schedule();\n }\n\n async enqueue(job: HephJob): Promise<void> {\n this.jobs.push(job);\n this.schedule();\n }\n\n async onIdle(): Promise<void> {\n if (this.isIdle()) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n this.idleResolvers.add(resolve);\n });\n }\n\n private schedule(): void {\n if (this.scheduled) {\n return;\n }\n\n this.scheduled = true;\n queueMicrotask(() => {\n this.scheduled = false;\n this.pump();\n });\n }\n\n private pump(): void {\n if (!this.handler) {\n this.resolveIdleIfNeeded();\n return;\n }\n\n while (this.activeCount < this.concurrency) {\n const index = this.jobs.findIndex((job) => !this.activeAgents.has(job.agentId));\n\n if (index === -1) {\n break;\n }\n\n const [job] = this.jobs.splice(index, 1);\n\n if (!job) {\n break;\n }\n\n this.activeCount += 1;\n this.activeAgents.add(job.agentId);\n\n void this.handler(job)\n .catch((error) => {\n this.onError(error, job);\n })\n .finally(() => {\n this.activeCount -= 1;\n this.activeAgents.delete(job.agentId);\n this.resolveIdleIfNeeded();\n this.schedule();\n });\n }\n\n this.resolveIdleIfNeeded();\n }\n\n private isIdle(): boolean {\n return this.jobs.length === 0 && this.activeCount === 0;\n }\n\n private resolveIdleIfNeeded(): void {\n if (!this.isIdle()) {\n return;\n }\n\n for (const resolve of this.idleResolvers) {\n resolve();\n }\n\n this.idleResolvers.clear();\n }\n}\n","import type { SkillCatalog, SkillPackage } from \"./types.js\";\n\nexport function createInMemorySkillCatalog(skills: SkillPackage[]): SkillCatalog {\n const byId = new Map<string, SkillPackage>();\n\n for (const skill of skills) {\n byId.set(skill.id, cloneSkillPackage(skill));\n }\n\n return {\n async getSkill(id) {\n const skill = byId.get(id);\n return skill ? cloneSkillPackage(skill) : null;\n },\n async listSkills() {\n return Array.from(byId.values())\n .sort((a, b) => a.id.localeCompare(b.id))\n .map(cloneSkillPackage);\n }\n };\n}\n\nfunction cloneSkillPackage(skill: SkillPackage): SkillPackage {\n return {\n ...skill,\n source: { ...skill.source },\n references: skill.references.map((ref) => ({\n ...ref,\n metadata: { ...ref.metadata }\n })),\n assets: skill.assets.map((ref) => ({\n ...ref,\n metadata: { ...ref.metadata }\n })),\n templates: skill.templates.map((ref) => ({\n ...ref,\n metadata: { ...ref.metadata }\n })),\n metadata: { ...skill.metadata },\n loadedAt: new Date(skill.loadedAt)\n };\n}\n","import { HephError } from \"./errors.js\";\nimport {\n createApprovalRequestId,\n createAgentSessionId,\n createDeferredToolOperationId,\n createInboxEventId,\n createMemoryId,\n createMcpBindingId,\n createMessageId,\n createRunEventId,\n createRunId,\n createSkillBindingId\n} from \"./ids.js\";\nimport type {\n AgentSession,\n AgentSessionId,\n ApprovalRequest,\n ApprovalRequestId,\n ApprovalRequestStatus,\n ApprovalStore,\n CreateApprovalRequestStoreInput,\n AppendMessageInput,\n CompleteDeferredToolOperationStoreInput,\n CreateDeferredToolOperationStoreInput,\n AppendInboxEventInput,\n AppendRunEventInput,\n CreateAgentSessionStoreInput,\n CreateMcpBindingStoreInput,\n CreateRunStoreInput,\n CreateSkillBindingStoreInput,\n DecideApprovalRequestStoreInput,\n DeferredToolOperation,\n DeferredToolOperationId,\n DeferredToolOperationStore,\n EventLog,\n HephStores,\n InboxEvent,\n InboxEventId,\n InboxEventStatus,\n InboxStore,\n MemoryItem,\n MemoryScope,\n MemoryStore,\n McpBinding,\n McpBindingId,\n McpBindingStatus,\n McpBindingStore,\n Message,\n MessageStore,\n PutMemoryInput,\n Run,\n RunError,\n RunEvent,\n RunId,\n SearchMemoryInput,\n SkillBinding,\n SkillBindingId,\n SkillBindingStatus,\n SkillBindingStore,\n StateStore\n} from \"./types.js\";\n\nexport class InMemoryHephStore\n implements\n StateStore,\n MessageStore,\n InboxStore,\n EventLog,\n MemoryStore,\n McpBindingStore,\n SkillBindingStore,\n ApprovalStore,\n DeferredToolOperationStore,\n HephStores\n{\n readonly state: StateStore = this;\n readonly messages: MessageStore = this;\n readonly inbox: InboxStore = this;\n readonly events: EventLog = this;\n readonly memory: MemoryStore = this;\n readonly mcpBindings: McpBindingStore = this;\n readonly skillBindings: SkillBindingStore = this;\n readonly approvals: ApprovalStore = this;\n readonly deferredToolOperations: DeferredToolOperationStore = this;\n\n private readonly agentSessions = new Map<AgentSessionId, AgentSession>();\n private readonly runs = new Map<RunId, Run>();\n private readonly messageList: Message[] = [];\n private readonly inboxList: InboxEvent[] = [];\n private readonly inboxEvents = new Map<InboxEventId, InboxEvent>();\n private readonly eventList: RunEvent[] = [];\n private readonly eventSeqByRun = new Map<RunId, number>();\n private readonly memoryItems = new Map<string, MemoryItem>();\n private readonly mcpBindingList: McpBinding[] = [];\n private readonly mcpBindingsById = new Map<McpBindingId, McpBinding>();\n private readonly skillBindingList: SkillBinding[] = [];\n private readonly skillBindingsById = new Map<SkillBindingId, SkillBinding>();\n private readonly approvalRequests = new Map<ApprovalRequestId, ApprovalRequest>();\n private readonly deferredOperations = new Map<DeferredToolOperationId, DeferredToolOperation>();\n\n async createAgentSession(input: CreateAgentSessionStoreInput): Promise<AgentSession> {\n const now = new Date();\n const agent: AgentSession = {\n id: input.id ?? createAgentSessionId(),\n agentSpecId: input.agentSpecId,\n agentSpecVersion: input.agentSpecVersion ?? null,\n state: input.state ?? {},\n activeRunId: null,\n auth: input.auth ?? null,\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now\n };\n\n this.agentSessions.set(agent.id, cloneAgentSession(agent));\n return cloneAgentSession(agent);\n }\n\n async getAgentSession(id: AgentSessionId): Promise<AgentSession | null> {\n const agent = this.agentSessions.get(id);\n return agent ? cloneAgentSession(agent) : null;\n }\n\n async updateAgentSession(\n id: AgentSessionId,\n patch: Partial<Omit<AgentSession, \"id\" | \"createdAt\">>\n ): Promise<AgentSession> {\n const existing = this.agentSessions.get(id);\n\n if (!existing) {\n throw notFound(\"AgentSession not found\", { agentId: id });\n }\n\n const updated: AgentSession = {\n ...existing,\n ...patch,\n id,\n createdAt: existing.createdAt,\n updatedAt: new Date()\n };\n\n this.agentSessions.set(id, cloneAgentSession(updated));\n return cloneAgentSession(updated);\n }\n\n async createRun(input: CreateRunStoreInput): Promise<Run> {\n const now = new Date();\n const run: Run = {\n id: input.id ?? createRunId(),\n agentId: input.agentId,\n agentSpecId: input.agentSpecId,\n agentSpecVersion: input.agentSpecVersion ?? null,\n status: input.status,\n input: input.input,\n auth: input.auth ?? null,\n contextManifest: null,\n skillManifest: null,\n toolManifest: null,\n error: null,\n metadata: input.metadata ?? {},\n queuedAt: now,\n startedAt: null,\n completedAt: null,\n createdAt: now,\n updatedAt: now\n };\n\n this.runs.set(run.id, cloneRun(run));\n return cloneRun(run);\n }\n\n async getRun(id: RunId): Promise<Run | null> {\n const run = this.runs.get(id);\n return run ? cloneRun(run) : null;\n }\n\n async updateRun(id: RunId, patch: Partial<Omit<Run, \"id\" | \"createdAt\">>): Promise<Run> {\n const existing = this.runs.get(id);\n\n if (!existing) {\n throw notFound(\"Run not found\", { runId: id });\n }\n\n const updated: Run = {\n ...existing,\n ...patch,\n id,\n createdAt: existing.createdAt,\n updatedAt: new Date()\n };\n\n this.runs.set(id, cloneRun(updated));\n return cloneRun(updated);\n }\n\n async listRunsByAgent(agentId: AgentSessionId): Promise<Run[]> {\n return Array.from(this.runs.values())\n .filter((run) => run.agentId === agentId)\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())\n .map(cloneRun);\n }\n\n async appendMessage(input: AppendMessageInput): Promise<Message> {\n const message: Message = {\n id: input.id ?? createMessageId(),\n agentId: input.agentId,\n role: input.role,\n content: input.content,\n sourceRunId: input.sourceRunId ?? null,\n auth: input.auth ?? null,\n metadata: input.metadata ?? {},\n createdAt: new Date()\n };\n\n this.messageList.push(cloneMessage(message));\n return cloneMessage(message);\n }\n\n async listMessages(agentId: AgentSessionId, options: { limit?: number } = {}): Promise<Message[]> {\n const messages = this.messageList\n .filter((message) => message.agentId === agentId)\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());\n\n const limited = options.limit === undefined ? messages : messages.slice(Math.max(0, messages.length - options.limit));\n return limited.map(cloneMessage);\n }\n\n async appendInboxEvent(input: AppendInboxEventInput): Promise<InboxEvent> {\n const now = new Date();\n const event: InboxEvent = {\n id: input.id ?? createInboxEventId(),\n agentId: input.agentId,\n type: input.input.type,\n input: clonePlain(input.input),\n status: \"pending\",\n runId: null,\n auth: input.auth ?? null,\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n claimedAt: null,\n processedAt: null,\n failedAt: null,\n error: null\n };\n\n this.inboxList.push(cloneInboxEvent(event));\n this.inboxEvents.set(event.id, cloneInboxEvent(event));\n return cloneInboxEvent(event);\n }\n\n async getInboxEvent(id: InboxEventId): Promise<InboxEvent | null> {\n const event = this.inboxEvents.get(id);\n return event ? cloneInboxEvent(event) : null;\n }\n\n async listInboxEvents(\n agentId: AgentSessionId,\n options: { status?: InboxEventStatus; types?: Array<InboxEvent[\"type\"]>; limit?: number } = {}\n ): Promise<InboxEvent[]> {\n const events = this.inboxList\n .filter((event) => event.agentId === agentId)\n .filter((event) => options.status === undefined || event.status === options.status)\n .filter((event) => options.types === undefined || options.types.includes(event.type))\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());\n\n const limited = options.limit === undefined ? events : events.slice(0, options.limit);\n return limited.map(cloneInboxEvent);\n }\n\n async claimPendingInboxEvents(\n agentId: AgentSessionId,\n options: { types?: Array<InboxEvent[\"type\"]>; limit?: number } = {}\n ): Promise<InboxEvent[]> {\n const now = new Date();\n const pending = this.inboxList\n .filter((event) => event.agentId === agentId && event.status === \"pending\")\n .filter((event) => options.types === undefined || options.types.includes(event.type))\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());\n const selected = options.limit === undefined ? pending : pending.slice(0, options.limit);\n\n return selected.map((event) => {\n const updated = this.replaceInboxEvent({\n ...event,\n status: \"processing\",\n claimedAt: now,\n updatedAt: now\n });\n return cloneInboxEvent(updated);\n });\n }\n\n async markInboxEventsProcessed(ids: InboxEventId[], runId: RunId): Promise<InboxEvent[]> {\n const now = new Date();\n return ids.map((id) =>\n cloneInboxEvent(\n this.replaceInboxEvent({\n ...this.getInboxEventOrThrow(id),\n status: \"processed\",\n runId,\n processedAt: now,\n updatedAt: now,\n error: null\n })\n )\n );\n }\n\n async markInboxEventsFailed(ids: InboxEventId[], error: RunError): Promise<InboxEvent[]> {\n const now = new Date();\n return ids.map((id) =>\n cloneInboxEvent(\n this.replaceInboxEvent({\n ...this.getInboxEventOrThrow(id),\n status: \"failed\",\n failedAt: now,\n updatedAt: now,\n error\n })\n )\n );\n }\n\n async appendRunEvent(input: AppendRunEventInput): Promise<RunEvent> {\n const seq = (this.eventSeqByRun.get(input.runId) ?? 0) + 1;\n this.eventSeqByRun.set(input.runId, seq);\n\n const event: RunEvent = {\n id: input.id ?? createRunEventId(),\n runId: input.runId,\n seq,\n type: input.type,\n payload: input.payload ?? {},\n sourceRefs: input.sourceRefs ?? [],\n createdAt: new Date()\n };\n\n this.eventList.push(cloneRunEvent(event));\n return cloneRunEvent(event);\n }\n\n async listRunEvents(runId: RunId, options: { after?: number; limit?: number } = {}): Promise<RunEvent[]> {\n const after = options.after ?? 0;\n const events = this.eventList\n .filter((event) => event.runId === runId && event.seq > after)\n .sort((a, b) => a.seq - b.seq);\n\n const limited = options.limit === undefined ? events : events.slice(0, options.limit);\n return limited.map(cloneRunEvent);\n }\n\n async putMemory(input: PutMemoryInput): Promise<MemoryItem> {\n const now = new Date();\n const existing = input.id ? this.memoryItems.get(input.id) : undefined;\n const item: MemoryItem = {\n id: input.id ?? createMemoryId(),\n scope: input.scope,\n kind: input.kind,\n content: input.content,\n sourceRefs: input.sourceRefs,\n importance: input.importance ?? null,\n confidence: input.confidence ?? null,\n embeddingRef: input.embeddingRef ?? null,\n expiresAt: input.expiresAt ?? null,\n createdAt: existing?.createdAt ?? now,\n updatedAt: now\n };\n\n this.memoryItems.set(item.id, cloneMemoryItem(item));\n return cloneMemoryItem(item);\n }\n\n async searchMemory(input: SearchMemoryInput): Promise<MemoryItem[]> {\n const now = Date.now();\n const query = input.query?.trim().toLowerCase();\n const topK = input.topK ?? 8;\n const scopes = input.scopes ?? [];\n\n return Array.from(this.memoryItems.values())\n .filter((item) => item.expiresAt === null || item.expiresAt.getTime() > now)\n .filter((item) => scopes.length === 0 || scopes.some((scope) => sameScope(scope, item.scope)))\n .map((item) => ({\n item,\n score: scoreMemory(item, query)\n }))\n .filter(({ score }) => score > 0 || !query)\n .sort((a, b) => b.score - a.score || b.item.updatedAt.getTime() - a.item.updatedAt.getTime())\n .slice(0, topK)\n .map(({ item }) => cloneMemoryItem(item));\n }\n\n async createMcpBinding(input: CreateMcpBindingStoreInput): Promise<McpBinding> {\n const now = new Date();\n const binding: McpBinding = {\n id: input.id ?? createMcpBindingId(),\n agentId: input.agentId,\n capabilityId: input.capabilityId,\n accountRef: input.accountRef ?? null,\n allowTools: clonePlain(input.allowTools),\n status: \"active\",\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n removedAt: null\n };\n\n this.mcpBindingList.push(cloneMcpBinding(binding));\n this.mcpBindingsById.set(binding.id, cloneMcpBinding(binding));\n return cloneMcpBinding(binding);\n }\n\n async getMcpBinding(id: McpBindingId): Promise<McpBinding | null> {\n const binding = this.mcpBindingsById.get(id);\n return binding ? cloneMcpBinding(binding) : null;\n }\n\n async listMcpBindings(\n agentId: AgentSessionId,\n options: { status?: McpBindingStatus | \"all\" | undefined } = {}\n ): Promise<McpBinding[]> {\n const status = options.status ?? \"active\";\n return this.mcpBindingList\n .filter((binding) => binding.agentId === agentId)\n .filter((binding) => status === \"all\" || binding.status === status)\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())\n .map(cloneMcpBinding);\n }\n\n async removeMcpBinding(id: McpBindingId): Promise<McpBinding> {\n const existing = this.mcpBindingsById.get(id);\n\n if (!existing) {\n throw notFound(\"McpBinding not found\", { bindingId: id });\n }\n\n const now = new Date();\n const updated: McpBinding = {\n ...existing,\n status: \"removed\",\n updatedAt: now,\n removedAt: existing.removedAt ?? now\n };\n\n this.replaceMcpBinding(updated);\n return cloneMcpBinding(updated);\n }\n\n async createSkillBinding(input: CreateSkillBindingStoreInput): Promise<SkillBinding> {\n const now = new Date();\n const binding: SkillBinding = {\n id: input.id ?? createSkillBindingId(),\n agentId: input.agentId,\n skillId: input.skillId,\n name: input.name,\n version: input.version ?? null,\n source: { ...input.source },\n allowReferences: input.allowReferences === undefined ? [] : clonePlain(input.allowReferences),\n status: \"active\",\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n removedAt: null\n };\n\n this.skillBindingList.push(cloneSkillBinding(binding));\n this.skillBindingsById.set(binding.id, cloneSkillBinding(binding));\n return cloneSkillBinding(binding);\n }\n\n async getSkillBinding(id: SkillBindingId): Promise<SkillBinding | null> {\n const binding = this.skillBindingsById.get(id);\n return binding ? cloneSkillBinding(binding) : null;\n }\n\n async listSkillBindings(\n agentId: AgentSessionId,\n options: { status?: SkillBindingStatus | \"all\" | undefined } = {}\n ): Promise<SkillBinding[]> {\n const status = options.status ?? \"active\";\n return this.skillBindingList\n .filter((binding) => binding.agentId === agentId)\n .filter((binding) => status === \"all\" || binding.status === status)\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())\n .map(cloneSkillBinding);\n }\n\n async removeSkillBinding(id: SkillBindingId): Promise<SkillBinding> {\n const existing = this.skillBindingsById.get(id);\n\n if (!existing) {\n throw notFound(\"SkillBinding not found\", { bindingId: id });\n }\n\n const now = new Date();\n const updated: SkillBinding = {\n ...existing,\n status: \"removed\",\n updatedAt: now,\n removedAt: existing.removedAt ?? now\n };\n\n this.replaceSkillBinding(updated);\n return cloneSkillBinding(updated);\n }\n\n async createApprovalRequest(input: CreateApprovalRequestStoreInput): Promise<ApprovalRequest> {\n const now = new Date();\n const request: ApprovalRequest = {\n id: input.id ?? createApprovalRequestId(),\n agentId: input.agentId,\n runId: input.runId,\n toolId: input.toolId,\n input: clonePlain(input.input),\n status: \"pending\",\n requestedBy: input.requestedBy ?? null,\n decidedBy: null,\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n decidedAt: null\n };\n\n this.approvalRequests.set(request.id, cloneApprovalRequest(request));\n return cloneApprovalRequest(request);\n }\n\n async getApprovalRequest(id: ApprovalRequestId): Promise<ApprovalRequest | null> {\n const request = this.approvalRequests.get(id);\n return request ? cloneApprovalRequest(request) : null;\n }\n\n async listApprovalRequests(\n runId: RunId,\n options: { status?: ApprovalRequestStatus | \"all\" | undefined } = {}\n ): Promise<ApprovalRequest[]> {\n const status = options.status ?? \"all\";\n return Array.from(this.approvalRequests.values())\n .filter((request) => request.runId === runId)\n .filter((request) => status === \"all\" || request.status === status)\n .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())\n .map(cloneApprovalRequest);\n }\n\n async decideApprovalRequest(input: DecideApprovalRequestStoreInput): Promise<ApprovalRequest> {\n const existing = this.approvalRequests.get(input.id);\n\n if (!existing) {\n throw notFound(\"ApprovalRequest not found\", { approvalRequestId: input.id });\n }\n\n const now = new Date();\n const updated: ApprovalRequest = {\n ...existing,\n status: input.decision,\n decidedBy: input.decidedBy ?? null,\n metadata: {\n ...existing.metadata,\n ...(input.metadata ?? {})\n },\n updatedAt: now,\n decidedAt: now\n };\n\n this.approvalRequests.set(input.id, cloneApprovalRequest(updated));\n return cloneApprovalRequest(updated);\n }\n\n async createDeferredToolOperation(input: CreateDeferredToolOperationStoreInput): Promise<DeferredToolOperation> {\n const now = new Date();\n const operation: DeferredToolOperation = {\n id: input.id ?? createDeferredToolOperationId(),\n agentId: input.agentId,\n runId: input.runId,\n toolId: input.toolId,\n toolCallId: input.toolCallId ?? null,\n status: \"pending\",\n resumePolicy: input.resumePolicy ?? \"auto\",\n auth: input.auth ?? null,\n result: null,\n error: null,\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n completedAt: null\n };\n\n this.deferredOperations.set(operation.id, cloneDeferredToolOperation(operation));\n return cloneDeferredToolOperation(operation);\n }\n\n async getDeferredToolOperation(id: DeferredToolOperationId): Promise<DeferredToolOperation | null> {\n const operation = this.deferredOperations.get(id);\n return operation ? cloneDeferredToolOperation(operation) : null;\n }\n\n async completeDeferredToolOperation(input: CompleteDeferredToolOperationStoreInput): Promise<DeferredToolOperation> {\n const existing = this.deferredOperations.get(input.id);\n\n if (!existing) {\n throw notFound(\"DeferredToolOperation not found\", { operationId: input.id });\n }\n\n if (existing.status !== \"pending\") {\n return cloneDeferredToolOperation(existing);\n }\n\n const now = new Date();\n const updated: DeferredToolOperation = {\n ...existing,\n status: input.status,\n result: input.result ?? null,\n error: input.error ?? null,\n metadata: {\n ...existing.metadata,\n ...(input.metadata ?? {})\n },\n updatedAt: now,\n completedAt: now\n };\n\n this.deferredOperations.set(updated.id, cloneDeferredToolOperation(updated));\n return cloneDeferredToolOperation(updated);\n }\n\n private replaceInboxEvent(updated: InboxEvent): InboxEvent {\n const index = this.inboxList.findIndex((event) => event.id === updated.id);\n\n if (index === -1) {\n throw notFound(\"InboxEvent not found\", { inboxEventId: updated.id });\n }\n\n this.inboxList[index] = cloneInboxEvent(updated);\n this.inboxEvents.set(updated.id, cloneInboxEvent(updated));\n return cloneInboxEvent(updated);\n }\n\n private getInboxEventOrThrow(id: InboxEventId): InboxEvent {\n const event = this.inboxEvents.get(id);\n\n if (!event) {\n throw notFound(\"InboxEvent not found\", { inboxEventId: id });\n }\n\n return cloneInboxEvent(event);\n }\n\n private replaceMcpBinding(updated: McpBinding): McpBinding {\n const index = this.mcpBindingList.findIndex((binding) => binding.id === updated.id);\n\n if (index === -1) {\n throw notFound(\"McpBinding not found\", { bindingId: updated.id });\n }\n\n this.mcpBindingList[index] = cloneMcpBinding(updated);\n this.mcpBindingsById.set(updated.id, cloneMcpBinding(updated));\n return cloneMcpBinding(updated);\n }\n\n private replaceSkillBinding(updated: SkillBinding): SkillBinding {\n const index = this.skillBindingList.findIndex((binding) => binding.id === updated.id);\n\n if (index === -1) {\n throw notFound(\"SkillBinding not found\", { bindingId: updated.id });\n }\n\n this.skillBindingList[index] = cloneSkillBinding(updated);\n this.skillBindingsById.set(updated.id, cloneSkillBinding(updated));\n return cloneSkillBinding(updated);\n }\n}\n\nfunction scoreMemory(item: MemoryItem, query: string | undefined): number {\n const importance = item.importance ?? 0.5;\n const confidence = item.confidence ?? 0.5;\n const content = item.content.toLowerCase();\n const queryScore = query && content.includes(query) ? 2 : 0;\n return importance + confidence + queryScore;\n}\n\nfunction sameScope(a: MemoryScope, b: MemoryScope): boolean {\n return a.type === b.type && a.id === b.id;\n}\n\nfunction notFound(message: string, details: Record<string, unknown>): HephError {\n return new HephError({\n code: \"HEPH5001\",\n title: message,\n message,\n status: 404,\n details\n });\n}\n\nfunction cloneAgentSession(agent: AgentSession): AgentSession {\n return {\n ...agent,\n state: { ...agent.state },\n metadata: { ...agent.metadata },\n auth: agent.auth ? { ...agent.auth } : null,\n createdAt: new Date(agent.createdAt),\n updatedAt: new Date(agent.updatedAt)\n };\n}\n\nfunction cloneRun(run: Run): Run {\n return {\n ...run,\n input: clonePlain(run.input),\n auth: run.auth ? { ...run.auth } : null,\n contextManifest: run.contextManifest ? clonePlain(run.contextManifest) : null,\n skillManifest: run.skillManifest ? clonePlain(run.skillManifest) : null,\n toolManifest: run.toolManifest ? clonePlain(run.toolManifest) : null,\n error: run.error ? clonePlain(run.error) : null,\n metadata: { ...run.metadata },\n queuedAt: new Date(run.queuedAt),\n startedAt: run.startedAt ? new Date(run.startedAt) : null,\n completedAt: run.completedAt ? new Date(run.completedAt) : null,\n createdAt: new Date(run.createdAt),\n updatedAt: new Date(run.updatedAt)\n };\n}\n\nfunction cloneMessage(message: Message): Message {\n return {\n ...message,\n auth: message.auth ? { ...message.auth } : null,\n metadata: { ...message.metadata },\n createdAt: new Date(message.createdAt)\n };\n}\n\nfunction cloneInboxEvent(event: InboxEvent): InboxEvent {\n return {\n ...event,\n input: clonePlain(event.input),\n auth: event.auth ? { ...event.auth } : null,\n metadata: { ...event.metadata },\n createdAt: new Date(event.createdAt),\n updatedAt: new Date(event.updatedAt),\n claimedAt: event.claimedAt ? new Date(event.claimedAt) : null,\n processedAt: event.processedAt ? new Date(event.processedAt) : null,\n failedAt: event.failedAt ? new Date(event.failedAt) : null,\n error: event.error ? clonePlain(event.error) : null\n };\n}\n\nfunction cloneRunEvent(event: RunEvent): RunEvent {\n return {\n ...event,\n payload: clonePlain(event.payload),\n sourceRefs: event.sourceRefs.map((ref) => ({ ...ref })),\n createdAt: new Date(event.createdAt)\n };\n}\n\nfunction cloneMemoryItem(item: MemoryItem): MemoryItem {\n return {\n ...item,\n scope: { ...item.scope },\n sourceRefs: item.sourceRefs.map((ref) => ({ ...ref })),\n expiresAt: item.expiresAt ? new Date(item.expiresAt) : null,\n createdAt: new Date(item.createdAt),\n updatedAt: new Date(item.updatedAt)\n };\n}\n\nfunction cloneMcpBinding(binding: McpBinding): McpBinding {\n return {\n ...binding,\n allowTools: clonePlain(binding.allowTools),\n metadata: { ...binding.metadata },\n createdAt: new Date(binding.createdAt),\n updatedAt: new Date(binding.updatedAt),\n removedAt: binding.removedAt ? new Date(binding.removedAt) : null\n };\n}\n\nfunction cloneSkillBinding(binding: SkillBinding): SkillBinding {\n return {\n ...binding,\n source: { ...binding.source },\n allowReferences: clonePlain(binding.allowReferences),\n metadata: { ...binding.metadata },\n createdAt: new Date(binding.createdAt),\n updatedAt: new Date(binding.updatedAt),\n removedAt: binding.removedAt ? new Date(binding.removedAt) : null\n };\n}\n\nfunction cloneApprovalRequest(request: ApprovalRequest): ApprovalRequest {\n return {\n ...request,\n input: clonePlain(request.input),\n requestedBy: request.requestedBy ? { ...request.requestedBy } : null,\n decidedBy: request.decidedBy ? { ...request.decidedBy } : null,\n metadata: { ...request.metadata },\n createdAt: new Date(request.createdAt),\n updatedAt: new Date(request.updatedAt),\n decidedAt: request.decidedAt ? new Date(request.decidedAt) : null\n };\n}\n\nfunction cloneDeferredToolOperation(operation: DeferredToolOperation): DeferredToolOperation {\n return {\n ...operation,\n auth: operation.auth ? { ...operation.auth } : null,\n result: clonePlain(operation.result),\n error: operation.error ? clonePlain(operation.error) : null,\n metadata: { ...operation.metadata },\n createdAt: new Date(operation.createdAt),\n updatedAt: new Date(operation.updatedAt),\n completedAt: operation.completedAt ? new Date(operation.completedAt) : null\n };\n}\n\nfunction clonePlain<T>(value: T): T {\n return structuredClone(value);\n}\n","import { ContextRenderer, defaultContextTemplate } from \"./context.js\";\nimport { HephError, toErrorDetails } from \"./errors.js\";\nimport { MinimalRunExecutor } from \"./executor.js\";\nimport { createInMemorySkillCatalog } from \"./skills.js\";\nimport { InMemoryHephStore } from \"./stores.js\";\nimport { InProcessQueue } from \"./queue.js\";\nimport { createMcpBindingId } from \"./ids.js\";\nimport type { HephJob, QueueAdapter } from \"./queue.js\";\nimport type {\n AgentSession,\n AgentSessionId,\n AgentSpec,\n AgentSpecId,\n ApprovalRequest,\n ApprovalRequestId,\n AuthContext,\n DeferredToolOperation,\n DeferredToolOperationId,\n DeferredToolResumePolicy,\n ContextBlock,\n ContextProvider,\n HephStores,\n InboxEvent,\n InboxEventId,\n McpAllowTools,\n McpBinding,\n McpBindingId,\n McpBindingResolver,\n McpCatalogTool,\n McpToolExecutor,\n McpToolManifestTool,\n Message,\n MessageId,\n RenderedContext,\n ResolvedMcpBinding,\n Run,\n RunError,\n RunId,\n RunInput,\n SourceRef,\n SkillBinding,\n SkillCatalog,\n SkillManifest,\n SkillManifestEntry,\n SkillPackage,\n SkillResourceRef,\n Tool,\n ToolManifest,\n ToolManifestTool\n} from \"./types.js\";\nimport type { RunExecutor } from \"./executor.js\";\n\nexport interface AgentSpecResolverContext {\n auth: AuthContext | null;\n}\n\nexport interface AgentSpecResolver<TApp = unknown> {\n resolve(id: AgentSpecId, ctx: AgentSpecResolverContext): Promise<AgentSpec<TApp> | null>;\n}\n\nexport type AgentSpecRegistration<TApp = unknown> =\n | AgentSpec<TApp>[]\n | Record<string, AgentSpec<TApp>>\n | AgentSpecResolver<TApp>;\n\nexport interface CreateHephOptions<TApp = unknown> {\n agents: AgentSpecRegistration<TApp>;\n stores?: HephStores;\n queue?: QueueAdapter;\n executor?: RunExecutor<TApp>;\n app?: TApp;\n inbox?: {\n maxEventsPerRun?: number | null | undefined;\n textSeparator?: string | undefined;\n };\n execution?: {\n mode?: \"single-process\" | \"platform-queue\" | \"split-worker\";\n concurrency?: number;\n autoStartConsumer?: boolean;\n };\n runtimePolicy?: string;\n toolPolicy?: string;\n mcp?: {\n resolver?: McpBindingResolver<TApp> | undefined;\n toolExecutor?: McpToolExecutor<TApp> | undefined;\n };\n skills?: {\n catalog?: SkillCatalog | undefined;\n };\n}\n\nexport interface CreateAgentSessionInput {\n spec: AgentSpecId;\n skills?: string[] | undefined;\n auth?: AuthContext | null | undefined;\n state?: Record<string, unknown> | undefined;\n metadata?: Record<string, unknown> | undefined;\n}\n\nexport interface CreateAgentAndRunInput extends CreateAgentSessionInput {\n input: string | RunInput;\n}\n\nexport interface CreateRunInput {\n agentId: AgentSessionId;\n input: string | RunInput;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n enqueue?: boolean | undefined;\n}\n\nexport interface AppendAgentMessageInput {\n agentId: AgentSessionId;\n content: string;\n type?: \"user.message\" | \"steering.message\" | undefined;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n schedule?: boolean | undefined;\n}\n\nexport interface AppendAgentMessageResult {\n message: Message;\n inboxEvent: InboxEvent;\n message_id: MessageId;\n inbox_event_id: InboxEventId;\n scheduled: boolean;\n}\n\nexport interface AddMcpBindingInput {\n agentId: AgentSessionId;\n capabilityId: string;\n accountRef?: string | null | undefined;\n allowTools: McpAllowTools;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n}\n\nexport interface RemoveMcpBindingInput {\n agentId: AgentSessionId;\n bindingId: McpBindingId;\n}\n\nexport interface CallToolInput {\n toolId: string;\n input?: unknown;\n auth?: AuthContext | null | undefined;\n approvalRequestId?: ApprovalRequestId | undefined;\n signal?: AbortSignal | undefined;\n}\n\nexport interface ToolCallResult {\n toolId: string;\n result: unknown;\n ok: true;\n}\n\nexport interface FailedToolCallResult {\n toolId: string;\n error: RunError;\n ok: false;\n}\n\nexport type ToolCallAttemptResult = ToolCallResult | FailedToolCallResult;\n\nexport interface DeferToolResultInput {\n runId: RunId;\n toolId: string;\n operationId?: DeferredToolOperationId | undefined;\n toolCallId?: string | null | undefined;\n resumePolicy?: DeferredToolResumePolicy | undefined;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n}\n\nexport interface CompleteDeferredToolResultInput {\n operationId: DeferredToolOperationId;\n status?: \"completed\" | \"failed\" | \"cancelled\" | undefined;\n result?: unknown;\n content?: string | undefined;\n error?: RunError | null | undefined;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n schedule?: boolean | undefined;\n}\n\nexport interface CompleteDeferredToolResultResult {\n operation: DeferredToolOperation;\n message: Message;\n inboxEvent: InboxEvent | null;\n scheduled: boolean;\n}\n\nexport interface CreateAgentAndRunResult {\n agent: AgentSession;\n run: Run;\n message: Message | null;\n inboxEvent: InboxEvent | null;\n agent_id: AgentSessionId;\n agent_spec_id: AgentSpecId;\n run_id: RunId;\n}\n\nexport interface HephRuntime<TApp = unknown> {\n stores: HephStores;\n queue: QueueAdapter;\n agents: {\n create(input: CreateAgentSessionInput): Promise<AgentSession>;\n createAndRun(input: CreateAgentAndRunInput): Promise<CreateAgentAndRunResult>;\n appendMessage(input: AppendAgentMessageInput): Promise<AppendAgentMessageResult>;\n schedule(agentId: AgentSessionId): Promise<Run | null>;\n get(agentId: AgentSessionId): Promise<AgentSession | null>;\n addMcpBinding(input: AddMcpBindingInput): Promise<McpBinding>;\n listMcpBindings(agentId: AgentSessionId): Promise<McpBinding[]>;\n removeMcpBinding(input: RemoveMcpBindingInput): Promise<McpBinding>;\n };\n runs: {\n create(input: CreateRunInput): Promise<Run>;\n get(runId: RunId): Promise<Run | null>;\n cancel(runId: RunId): Promise<Run>;\n };\n messages: {\n append(input: {\n agentId: AgentSessionId;\n role: \"user\" | \"assistant\" | \"tool\" | \"developer\" | \"system\";\n content: string;\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n }): Promise<Message>;\n list(agentId: AgentSessionId, options?: { limit?: number }): Promise<Message[]>;\n };\n approvals: {\n get(approvalRequestId: ApprovalRequestId): Promise<ApprovalRequest | null>;\n list(runId: RunId): Promise<ApprovalRequest[]>;\n decide(input: {\n approvalRequestId: ApprovalRequestId;\n decision: \"granted\" | \"rejected\";\n auth?: AuthContext | null | undefined;\n metadata?: Record<string, unknown> | undefined;\n }): Promise<ApprovalRequest>;\n };\n tools: {\n call(runId: RunId, input: CallToolInput): Promise<ToolCallResult>;\n tryCall(runId: RunId, input: CallToolInput): Promise<ToolCallAttemptResult>;\n };\n operations: {\n deferToolResult(input: DeferToolResultInput): Promise<DeferredToolOperation>;\n get(operationId: DeferredToolOperationId): Promise<DeferredToolOperation | null>;\n complete(input: CompleteDeferredToolResultInput): Promise<CompleteDeferredToolResultResult>;\n };\n renderRunContext(runId: RunId): Promise<RenderedContext>;\n handleJob(job: HephJob): Promise<void>;\n startWorker(): Promise<void>;\n drain(): Promise<void>;\n}\n\nexport class StreamableHttpMcpToolExecutor<TApp = unknown> implements McpToolExecutor<TApp> {\n async callTool(ctx: Parameters<McpToolExecutor<TApp>[\"callTool\"]>[0]): Promise<unknown> {\n const credentials = await ctx.resolved.resolveCredentials?.({\n auth: ctx.auth,\n agent: ctx.agent,\n run: ctx.run,\n binding: ctx.binding,\n app: ctx.app\n });\n const headers = new Headers({\n \"Content-Type\": \"application/json\",\n Accept: \"application/json, text/event-stream\"\n });\n\n for (const [key, value] of Object.entries(credentials?.headers ?? {})) {\n headers.set(key, value);\n }\n\n const rpcId = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}_${Math.random()}`;\n const requestInit: RequestInit = {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: rpcId,\n method: \"tools/call\",\n params: {\n name: ctx.manifestTool.remoteToolName,\n arguments: ctx.input ?? {}\n }\n })\n };\n\n if (ctx.signal !== undefined) {\n requestInit.signal = ctx.signal;\n }\n\n const response = await fetch(ctx.resolved.endpoint, requestInit);\n\n const rawBody = await response.text();\n const parsed = parseMcpResponseBody(rawBody, response.headers.get(\"Content-Type\"));\n\n if (!response.ok) {\n throw new HephError({\n code: \"HEPH7002\",\n title: \"MCP tool call failed\",\n message: `MCP server returned HTTP ${response.status}.`,\n status: 503,\n details: {\n toolId: ctx.manifestTool.id,\n bindingId: ctx.binding.id,\n status: response.status,\n body: parsed ?? rawBody\n }\n });\n }\n\n if (isJsonRpcError(parsed)) {\n throw new HephError({\n code: \"HEPH7002\",\n title: \"MCP tool call failed\",\n message: \"MCP server returned a JSON-RPC error.\",\n status: 503,\n details: {\n toolId: ctx.manifestTool.id,\n bindingId: ctx.binding.id,\n error: parsed.error\n }\n });\n }\n\n if (isRecord(parsed) && \"result\" in parsed) {\n return parsed.result;\n }\n\n return parsed;\n }\n}\n\nexport function createHeph<TApp = unknown>(options: CreateHephOptions<TApp>): HephRuntime<TApp> {\n const stores = options.stores ?? new InMemoryHephStore();\n const queue =\n options.queue ??\n new InProcessQueue({\n concurrency: options.execution?.concurrency ?? 4\n });\n const executor = options.executor ?? new MinimalRunExecutor<TApp>();\n const resolver = normalizeAgentSpecResolver(options.agents);\n const mcpResolver = options.mcp?.resolver ?? null;\n const mcpToolExecutor = options.mcp?.toolExecutor ?? new StreamableHttpMcpToolExecutor<TApp>();\n const skillCatalog = options.skills?.catalog ?? createInMemorySkillCatalog([]);\n const renderer = new ContextRenderer();\n const app = (options.app ?? {}) as TApp;\n const abortControllers = new Map<RunId, AbortController>();\n const executionMode = options.execution?.mode ?? \"single-process\";\n const reducerOptions = {\n maxEventsPerRun: normalizeMaxEventsPerRun(options.inbox?.maxEventsPerRun),\n textSeparator: options.inbox?.textSeparator ?? \"\\n\\n--- next message ---\\n\\n\"\n };\n let consumerStarted = false;\n\n const runtime: HephRuntime<TApp> = {\n stores,\n queue,\n agents: {\n async create(input) {\n const spec = await resolveSpecOrThrow(resolver, input.spec, input.auth ?? null);\n const skillPackages = await resolveSkillPackagesForSession(spec, input.skills ?? []);\n const agent = await stores.state.createAgentSession({\n agentSpecId: spec.id,\n agentSpecVersion: spec.version,\n state: input.state,\n auth: input.auth ?? null,\n metadata: input.metadata\n });\n\n for (const skillPackage of skillPackages) {\n await stores.skillBindings.createSkillBinding({\n agentId: agent.id,\n skillId: skillPackage.id,\n name: skillPackage.name,\n version: skillPackage.version,\n source: skillPackage.source,\n allowReferences: [],\n metadata: {\n description: skillPackage.description\n }\n });\n }\n\n return agent;\n },\n async createAndRun(input) {\n const agent = await runtime.agents.create(input);\n const runInput = normalizeRunInput(input.input);\n const appended = await appendRunInputToInbox({\n agentId: agent.id,\n input: runInput,\n auth: input.auth ?? null,\n metadata: input.metadata,\n messageMetadata: {\n ...(input.metadata ?? {}),\n runInput: true\n }\n });\n const run = await scheduleAgent(agent.id);\n\n if (!run) {\n throw new HephError({\n code: \"HEPH4002\",\n title: \"Run was not scheduled\",\n message: `AgentSession ${agent.id} did not produce a Run from its initial input.`,\n status: 409,\n details: {\n agentId: agent.id,\n inboxEventId: appended.inboxEvent.id\n }\n });\n }\n\n return {\n agent,\n run,\n message: appended.message,\n inboxEvent: appended.inboxEvent,\n agent_id: agent.id,\n agent_spec_id: agent.agentSpecId,\n run_id: run.id\n };\n },\n async appendMessage(input) {\n await getAgentOrThrow(stores, input.agentId);\n const appended = await appendRunInputToInbox({\n agentId: input.agentId,\n input: {\n type: input.type ?? \"user.message\",\n text: input.content\n },\n auth: input.auth ?? null,\n metadata: input.metadata,\n messageMetadata: input.metadata\n });\n const shouldSchedule = input.schedule ?? true;\n\n if (!appended.message) {\n throw new HephError({\n code: \"HEPH4004\",\n title: \"Message was not stored\",\n message: \"The user message input did not produce a MessageStore record.\",\n status: 500,\n details: {\n agentId: input.agentId,\n inboxEventId: appended.inboxEvent.id\n }\n });\n }\n\n const inboxEvent = shouldSchedule\n ? await scheduleAfterAppend(input.agentId, appended.inboxEvent)\n : appended.inboxEvent;\n\n return {\n message: appended.message,\n inboxEvent,\n message_id: appended.message.id,\n inbox_event_id: inboxEvent.id,\n scheduled: shouldSchedule\n };\n },\n schedule(agentId) {\n return scheduleAgent(agentId);\n },\n get(agentId) {\n return stores.state.getAgentSession(agentId);\n },\n async addMcpBinding(input) {\n const agent = await getAgentOrThrow(stores, input.agentId);\n const spec = await resolveSpecOrThrow(resolver, agent.agentSpecId, input.auth ?? agent.auth);\n const bindingId = createMcpBindingId();\n const now = new Date();\n const draft: McpBinding = {\n id: bindingId,\n agentId: agent.id,\n capabilityId: input.capabilityId,\n accountRef: input.accountRef ?? null,\n allowTools: Array.isArray(input.allowTools) ? [...input.allowTools] : input.allowTools,\n status: \"active\",\n metadata: input.metadata ?? {},\n createdAt: now,\n updatedAt: now,\n removedAt: null\n };\n\n enforceMcpPolicy(spec, draft);\n const resolved = await resolveMcpBindingOrThrow({\n resolver: mcpResolver,\n auth: input.auth ?? agent.auth,\n agent,\n binding: draft,\n app\n });\n validateMcpCatalog(draft, resolved);\n\n return stores.mcpBindings.createMcpBinding({\n id: bindingId,\n agentId: agent.id,\n capabilityId: input.capabilityId,\n accountRef: input.accountRef ?? null,\n allowTools: Array.isArray(input.allowTools) ? [...input.allowTools] : input.allowTools,\n metadata: input.metadata\n });\n },\n async listMcpBindings(agentId) {\n await getAgentOrThrow(stores, agentId);\n return stores.mcpBindings.listMcpBindings(agentId);\n },\n async removeMcpBinding(input) {\n const agent = await getAgentOrThrow(stores, input.agentId);\n const binding = await stores.mcpBindings.getMcpBinding(input.bindingId);\n\n if (!binding || binding.agentId !== agent.id) {\n throw new HephError({\n code: \"HEPH5001\",\n title: \"McpBinding not found\",\n message: `McpBinding ${input.bindingId} was not found.`,\n status: 404,\n details: {\n agentId: input.agentId,\n bindingId: input.bindingId\n }\n });\n }\n\n return stores.mcpBindings.removeMcpBinding(input.bindingId);\n }\n },\n runs: {\n async create(input) {\n const agent = await getAgentOrThrow(stores, input.agentId);\n return createRunForAgent({\n agent,\n input: normalizeRunInput(input.input),\n auth: input.auth ?? agent.auth,\n metadata: input.metadata,\n enqueue: input.enqueue ?? true\n });\n },\n get(runId) {\n return stores.state.getRun(runId);\n },\n async cancel(runId) {\n return cancelRun(runId);\n }\n },\n messages: {\n append(input) {\n return stores.messages.appendMessage({\n agentId: input.agentId,\n role: input.role,\n content: input.content,\n auth: input.auth ?? null,\n metadata: input.metadata\n });\n },\n list(agentId, listOptions) {\n return stores.messages.listMessages(agentId, listOptions);\n }\n },\n approvals: {\n get(approvalRequestId) {\n return stores.approvals.getApprovalRequest(approvalRequestId);\n },\n list(runId) {\n return stores.approvals.listApprovalRequests(runId);\n },\n async decide(input) {\n const request = await stores.approvals.decideApprovalRequest({\n id: input.approvalRequestId,\n decision: input.decision,\n decidedBy: input.auth ?? null,\n metadata: input.metadata\n });\n await stores.events.appendRunEvent({\n runId: request.runId,\n type: input.decision === \"granted\" ? \"approval.granted\" : \"approval.rejected\",\n payload: {\n approvalRequestId: request.id,\n toolId: request.toolId\n },\n sourceRefs: [\n {\n type: \"approval_request\",\n id: request.id\n }\n ]\n });\n return request;\n }\n },\n tools: {\n call(runId, input) {\n return callTool(runId, input);\n },\n tryCall(runId, input) {\n return tryCallTool(runId, input);\n }\n },\n operations: {\n deferToolResult(input) {\n return deferToolResult(input);\n },\n get(operationId) {\n return stores.deferredToolOperations.getDeferredToolOperation(operationId);\n },\n complete(input) {\n return completeDeferredToolResult(input);\n }\n },\n renderRunContext(runId) {\n return renderRunContext(runId);\n },\n handleJob(job) {\n return handleJob(job);\n },\n async startWorker() {\n if (consumerStarted) {\n return;\n }\n\n if (!queue.startConsumer) {\n throw new HephError({\n code: \"HEPH4003\",\n title: \"Queue consumer is not available\",\n message: \"This QueueAdapter does not expose startConsumer(). Use handleJob() or an adapter-specific batch handler.\",\n status: 422\n });\n }\n\n consumerStarted = true;\n await queue.startConsumer((job) => handleJob(job));\n },\n async drain() {\n await queue.onIdle?.();\n }\n };\n\n if (options.execution?.autoStartConsumer ?? executionMode === \"single-process\") {\n void runtime.startWorker();\n }\n\n return runtime;\n\n async function handleJob(job: HephJob): Promise<void> {\n switch (job.type) {\n case \"schedule_agent\":\n await scheduleAgent(job.agentId);\n return;\n case \"execute_run\":\n case \"resume_run\":\n await executeRun(job.runId);\n return;\n case \"cancel_run\":\n await cancelRun(job.runId);\n return;\n case \"ingest_memory\":\n return;\n }\n }\n\n async function appendRunInputToInbox(input: {\n agentId: AgentSessionId;\n input: string | RunInput;\n auth: AuthContext | null;\n metadata?: Record<string, unknown> | undefined;\n messageMetadata?: Record<string, unknown> | undefined;\n }): Promise<{ runInput: RunInput; message: Message | null; inboxEvent: InboxEvent }> {\n const normalized = normalizeRunInput(input.input);\n const message =\n \"text\" in normalized\n ? await stores.messages.appendMessage({\n agentId: input.agentId,\n role: \"user\",\n content: normalized.text,\n auth: input.auth,\n metadata: input.messageMetadata\n })\n : null;\n const runInput = message ? addMessageIdToRunInput(normalized, message.id) : normalized;\n const inboxEvent = await stores.inbox.appendInboxEvent({\n agentId: input.agentId,\n input: runInput,\n auth: input.auth,\n metadata: input.metadata\n });\n\n return {\n runInput,\n message,\n inboxEvent\n };\n }\n\n async function scheduleAfterAppend(agentId: AgentSessionId, inboxEvent: InboxEvent): Promise<InboxEvent> {\n if (inboxEvent.type === \"steering.message\") {\n await scheduleAgent(agentId);\n return (await stores.inbox.getInboxEvent(inboxEvent.id)) ?? inboxEvent;\n }\n\n await queue.enqueue({\n type: \"schedule_agent\",\n agentId\n });\n return inboxEvent;\n }\n\n async function scheduleAgent(agentId: AgentSessionId): Promise<Run | null> {\n let agent = await getAgentOrThrow(stores, agentId);\n\n if (agent.activeRunId) {\n const activeRun = await stores.state.getRun(agent.activeRunId);\n\n if (activeRun && !isTerminalRun(activeRun)) {\n await processPendingCancellationEvents(agent, activeRun);\n await processPendingSteeringEvents(agent, activeRun);\n return null;\n }\n\n agent = await stores.state.updateAgentSession(agent.id, {\n activeRunId: null\n });\n }\n\n const nextPending = await stores.inbox.listInboxEvents(agent.id, {\n status: \"pending\",\n limit: 1\n });\n\n if (nextPending.length === 0) {\n return null;\n }\n\n const claimOptions: { types: RunInput[\"type\"][]; limit?: number } = {\n types: [nextPending[0]!.type]\n };\n if (reducerOptions.maxEventsPerRun !== undefined) {\n claimOptions.limit = reducerOptions.maxEventsPerRun;\n }\n const claimed = await stores.inbox.claimPendingInboxEvents(agent.id, claimOptions);\n\n if (claimed.length === 0) {\n return null;\n }\n\n try {\n const inboxEventIds = claimed.map((event) => event.id);\n const run = await createRunForAgent({\n agent,\n input: reduceInboxEvents(claimed, reducerOptions.textSeparator),\n auth: firstAuth(claimed) ?? agent.auth,\n metadata: {\n inboxEventIds,\n inboxEventCount: claimed.length\n },\n sourceRefs: toInboxSourceRefs(claimed),\n enqueue: false\n });\n\n await stores.inbox.markInboxEventsProcessed(inboxEventIds, run.id);\n await queue.enqueue({\n type: \"execute_run\",\n agentId: agent.id,\n runId: run.id\n });\n\n return run;\n } catch (error) {\n await stores.inbox.markInboxEventsFailed(\n claimed.map((event) => event.id),\n toRunError(error)\n );\n throw error;\n }\n }\n\n async function processPendingCancellationEvents(agent: AgentSession, activeRun: Run): Promise<void> {\n const cancellationEvents = await stores.inbox.claimPendingInboxEvents(agent.id, {\n types: [\"run.cancel_requested\"]\n });\n\n if (cancellationEvents.length === 0) {\n return;\n }\n\n const cancelled = await cancelRun(activeRun.id, {\n sourceRefs: toInboxSourceRefs(cancellationEvents)\n });\n await stores.inbox.markInboxEventsProcessed(\n cancellationEvents.map((event) => event.id),\n cancelled.id\n );\n }\n\n async function processPendingSteeringEvents(agent: AgentSession, activeRun: Run): Promise<void> {\n const steeringEvents = await stores.inbox.claimPendingInboxEvents(agent.id, {\n types: [\"steering.message\"]\n });\n\n for (const event of steeringEvents) {\n await stores.events.appendRunEvent({\n runId: activeRun.id,\n type: \"run.steering_received\",\n payload: {\n agentId: agent.id,\n inboxEventId: event.id,\n input: event.input\n },\n sourceRefs: toInboxSourceRefs([event])\n });\n }\n\n if (steeringEvents.length > 0) {\n await stores.inbox.markInboxEventsProcessed(\n steeringEvents.map((event) => event.id),\n activeRun.id\n );\n }\n }\n\n async function createRunForAgent(input: {\n agent: AgentSession;\n input: RunInput;\n auth: AuthContext | null;\n metadata?: Record<string, unknown> | undefined;\n sourceRefs?: SourceRef[] | undefined;\n enqueue: boolean;\n }): Promise<Run> {\n const spec = await resolveSpecOrThrow(resolver, input.agent.agentSpecId, input.auth ?? input.agent.auth);\n const run = await stores.state.createRun({\n agentId: input.agent.id,\n agentSpecId: spec.id,\n agentSpecVersion: spec.version,\n status: \"queued\",\n input: input.input,\n auth: input.auth,\n metadata: input.metadata\n });\n\n await stores.state.updateAgentSession(input.agent.id, {\n activeRunId: run.id\n });\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"run.queued\",\n payload: {\n agentId: input.agent.id,\n agentSpecId: spec.id\n },\n sourceRefs: input.sourceRefs\n });\n\n if (input.enqueue) {\n await queue.enqueue({\n type: \"execute_run\",\n agentId: input.agent.id,\n runId: run.id\n });\n }\n\n return run;\n }\n\n async function cancelRun(runId: RunId, options: { sourceRefs?: SourceRef[] | undefined } = {}): Promise<Run> {\n const run = await getRunOrThrow(stores, runId);\n\n if (isTerminalRun(run)) {\n return run;\n }\n\n const controller = abortControllers.get(run.id);\n controller?.abort();\n\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"run.cancel_requested\",\n payload: {},\n sourceRefs: options.sourceRefs\n });\n const cancelled = await stores.state.updateRun(run.id, {\n status: \"cancelled\",\n completedAt: new Date()\n });\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"run.cancelled\",\n payload: {}\n });\n\n const agent = await stores.state.getAgentSession(run.agentId);\n if (agent?.activeRunId === run.id) {\n await stores.state.updateAgentSession(agent.id, {\n activeRunId: null\n });\n }\n await enqueueScheduleIfPending(run.agentId);\n\n return cancelled;\n }\n\n async function executeRun(runId: RunId): Promise<void> {\n const initialRun = await getRunOrThrow(stores, runId);\n\n if (isTerminalRun(initialRun)) {\n return;\n }\n\n const agent = await getAgentOrThrow(stores, initialRun.agentId);\n const spec = await resolveSpecOrThrow(resolver, initialRun.agentSpecId, initialRun.auth ?? agent.auth);\n const controller = new AbortController();\n abortControllers.set(initialRun.id, controller);\n\n try {\n const skillManifest = await createSkillManifestForRun(agent, initialRun);\n const runWithSkillManifest = await stores.state.updateRun(initialRun.id, {\n skillManifest\n });\n await stores.events.appendRunEvent({\n runId: runWithSkillManifest.id,\n type: \"skill_manifest.created\",\n payload: {\n skillCount: skillManifest.skills.length\n },\n sourceRefs: skillManifest.skills.map((skill) => ({\n type: \"skill_binding\" as const,\n id: skill.bindingId\n }))\n });\n\n const toolManifest = await createToolManifestForRun(agent, spec, runWithSkillManifest);\n const runWithToolManifest = await stores.state.updateRun(runWithSkillManifest.id, {\n toolManifest\n });\n await stores.events.appendRunEvent({\n runId: runWithToolManifest.id,\n type: \"tool_manifest.created\",\n payload: {\n toolCount: toolManifest.tools.length,\n localToolCount: toolManifest.tools.filter((tool) => tool.source === \"local\").length,\n mcpToolCount: toolManifest.tools.filter((tool) => tool.source === \"mcp\").length\n },\n sourceRefs: toolManifest.tools.flatMap((tool) =>\n tool.source === \"mcp\"\n ? [\n {\n type: \"mcp_binding\" as const,\n id: tool.bindingId\n }\n ]\n : []\n )\n });\n\n const running = await stores.state.updateRun(runWithToolManifest.id, {\n status: \"running\",\n startedAt: new Date()\n });\n await stores.events.appendRunEvent({\n runId: running.id,\n type: \"run.started\",\n payload: {\n agentId: agent.id,\n agentSpecId: spec.id\n }\n });\n\n const renderedContext = await renderRunContext(running.id);\n const runWithContext = await stores.state.updateRun(running.id, {\n contextManifest: renderedContext.manifest\n });\n const callToolForRun = (input: CallToolInput) =>\n callTool(runWithContext.id, {\n ...input,\n auth: input.auth ?? runWithContext.auth,\n signal: input.signal ?? controller.signal\n });\n const tryCallToolForRun = (input: CallToolInput) =>\n tryCallTool(runWithContext.id, {\n ...input,\n auth: input.auth ?? runWithContext.auth,\n signal: input.signal ?? controller.signal\n });\n\n await executor.execute({\n auth: runWithContext.auth,\n agent,\n spec,\n run: runWithContext,\n renderedContext,\n stores,\n app,\n signal: controller.signal,\n emit(event) {\n return stores.events.appendRunEvent({\n ...event,\n runId: runWithContext.id\n }).then(() => undefined);\n },\n appendMessage(message) {\n return stores.messages.appendMessage({\n ...message,\n agentId: agent.id,\n auth: runWithContext.auth\n });\n },\n tools: {\n call: callToolForRun,\n tryCall: tryCallToolForRun\n },\n callTool: callToolForRun,\n tryCallTool: tryCallToolForRun,\n deferToolResult(input) {\n return deferToolResult({\n ...input,\n runId: input.runId ?? runWithContext.id,\n auth: input.auth ?? runWithContext.auth\n });\n }\n });\n\n const current = await getRunOrThrow(stores, running.id);\n\n if (current.status === \"running\") {\n await stores.state.updateRun(current.id, {\n status: \"completed\",\n completedAt: new Date()\n });\n await stores.events.appendRunEvent({\n runId: current.id,\n type: \"run.completed\",\n payload: {}\n });\n await clearActiveRunIfCurrent(agent.id, current.id);\n await enqueueScheduleIfPending(agent.id);\n }\n } catch (error) {\n const current = await stores.state.getRun(initialRun.id);\n\n if (current?.status === \"cancelled\") {\n return;\n }\n\n const runError = {\n message: error instanceof Error ? error.message : String(error),\n details: toErrorDetails(error)\n };\n\n if (error instanceof HephError) {\n Object.assign(runError, { code: error.code });\n }\n\n await stores.state.updateRun(initialRun.id, {\n status: \"failed\",\n completedAt: new Date(),\n error: runError\n });\n await stores.events.appendRunEvent({\n runId: initialRun.id,\n type: \"run.failed\",\n payload: toErrorDetails(error)\n });\n await clearActiveRunIfCurrent(agent.id, initialRun.id);\n await enqueueScheduleIfPending(agent.id);\n } finally {\n abortControllers.delete(initialRun.id);\n }\n }\n\n async function deferToolResult(input: DeferToolResultInput): Promise<DeferredToolOperation> {\n const run = await getRunOrThrow(stores, input.runId);\n const agent = await getAgentOrThrow(stores, run.agentId);\n const operation = await stores.deferredToolOperations.createDeferredToolOperation({\n agentId: agent.id,\n runId: run.id,\n toolId: input.toolId,\n auth: input.auth ?? run.auth ?? agent.auth,\n ...(input.operationId !== undefined ? { id: input.operationId } : {}),\n ...(input.toolCallId !== undefined ? { toolCallId: input.toolCallId } : {}),\n ...(input.resumePolicy !== undefined ? { resumePolicy: input.resumePolicy } : {}),\n ...(input.metadata !== undefined ? { metadata: input.metadata } : {})\n });\n\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"tool.deferred\",\n payload: {\n operationId: operation.id,\n toolId: operation.toolId,\n toolCallId: operation.toolCallId,\n resumePolicy: operation.resumePolicy\n },\n sourceRefs: [\n {\n type: \"deferred_tool_operation\",\n id: operation.id\n }\n ]\n });\n\n return operation;\n }\n\n async function completeDeferredToolResult(input: CompleteDeferredToolResultInput): Promise<CompleteDeferredToolResultResult> {\n const existing = await stores.deferredToolOperations.getDeferredToolOperation(input.operationId);\n\n if (!existing) {\n throw new HephError({\n code: \"HEPH3005\",\n title: \"DeferredToolOperation not found\",\n message: `DeferredToolOperation ${input.operationId} was not found.`,\n status: 404,\n details: {\n operationId: input.operationId\n }\n });\n }\n\n const status = input.status ?? (input.error ? \"failed\" : \"completed\");\n const operation = await stores.deferredToolOperations.completeDeferredToolOperation({\n id: input.operationId,\n status,\n result: input.result,\n error: input.error,\n metadata: input.metadata\n });\n const message = await stores.messages.appendMessage({\n agentId: operation.agentId,\n role: \"tool\",\n content: input.content ?? renderDeferredToolResultContent(operation),\n sourceRunId: operation.runId,\n auth: input.auth ?? operation.auth,\n metadata: {\n type: \"tool_result\",\n deferredToolOperationId: operation.id,\n toolId: operation.toolId,\n toolCallId: operation.toolCallId,\n status: operation.status,\n ...(input.metadata ?? {})\n }\n });\n const eventType = status === \"completed\" ? \"deferred_tool.completed\" : \"deferred_tool.failed\";\n await stores.events.appendRunEvent({\n runId: operation.runId,\n type: eventType,\n payload: {\n operationId: operation.id,\n toolId: operation.toolId,\n toolCallId: operation.toolCallId,\n status: operation.status,\n messageId: message.id,\n result: operation.result,\n error: operation.error\n },\n sourceRefs: [\n {\n type: \"deferred_tool_operation\",\n id: operation.id\n },\n {\n type: \"message\",\n id: message.id\n }\n ]\n });\n\n const shouldSchedule = input.schedule ?? operation.resumePolicy === \"auto\";\n if (!shouldSchedule) {\n return { operation, message, inboxEvent: null, scheduled: false };\n }\n\n const inboxEvent = await stores.inbox.appendInboxEvent({\n agentId: operation.agentId,\n input: {\n type: \"system.event\",\n payload: {\n event: \"deferred_tool.completed\",\n operationId: operation.id,\n runId: operation.runId,\n toolId: operation.toolId,\n toolCallId: operation.toolCallId,\n status: operation.status\n },\n messageIds: [message.id]\n },\n auth: input.auth ?? operation.auth,\n metadata: {\n deferredToolOperationId: operation.id,\n toolId: operation.toolId,\n status: operation.status\n }\n });\n\n await queue.enqueue({\n type: \"schedule_agent\",\n agentId: operation.agentId\n });\n\n return { operation, message, inboxEvent, scheduled: true };\n }\n\n async function enqueueScheduleIfPending(agentId: AgentSessionId): Promise<void> {\n const pending = await stores.inbox.listInboxEvents(agentId, {\n status: \"pending\",\n limit: 1\n });\n\n if (pending.length > 0) {\n await queue.enqueue({\n type: \"schedule_agent\",\n agentId\n });\n }\n }\n\n async function clearActiveRunIfCurrent(agentId: AgentSessionId, runId: RunId): Promise<void> {\n const agent = await stores.state.getAgentSession(agentId);\n\n if (agent?.activeRunId === runId) {\n await stores.state.updateAgentSession(agentId, {\n activeRunId: null\n });\n }\n }\n\n async function resolveSkillPackagesForSession(spec: AgentSpec<TApp>, skillIds: string[]): Promise<SkillPackage[]> {\n const uniqueSkillIds = unique(skillIds);\n\n if (uniqueSkillIds.length === 0) {\n return [];\n }\n\n const packages: SkillPackage[] = [];\n\n for (const skillId of uniqueSkillIds) {\n enforceSkillPolicy(spec, skillId);\n const skillPackage = await skillCatalog.getSkill(skillId);\n\n if (!skillPackage) {\n throw new HephError({\n code: \"HEPH8003\",\n title: \"Skill not found\",\n message: `Skill ${skillId} was not found in the configured SkillCatalog.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n skillId\n }\n });\n }\n\n packages.push(skillPackage);\n }\n\n return packages;\n }\n\n async function createSkillManifestForRun(agent: AgentSession, run: Run): Promise<SkillManifest> {\n const bindings = await stores.skillBindings.listSkillBindings(agent.id);\n const skills: SkillManifestEntry[] = [];\n\n for (const binding of bindings) {\n const skillPackage = await skillCatalog.getSkill(binding.skillId);\n\n if (!skillPackage) {\n throw new HephError({\n code: \"HEPH8003\",\n title: \"Skill not found\",\n message: `Skill ${binding.skillId} was not found in the configured SkillCatalog.`,\n status: 422,\n details: {\n agentId: agent.id,\n bindingId: binding.id,\n skillId: binding.skillId\n }\n });\n }\n\n skills.push({\n bindingId: binding.id,\n skillId: binding.skillId,\n name: skillPackage.name,\n version: skillPackage.version,\n description: skillPackage.description,\n instructions: skillPackage.instructions,\n descriptionHash: await sha256Text(skillPackage.description),\n instructionHash: await sha256Text(skillPackage.instructions),\n source: { ...binding.source },\n availableReferences: filterSkillReferences(skillPackage.references, binding.allowReferences),\n availableAssets: skillPackage.assets.map(cloneSkillResourceRef),\n availableTemplates: skillPackage.templates.map(cloneSkillResourceRef),\n metadata: {\n ...skillPackage.metadata,\n ...binding.metadata\n }\n });\n }\n\n return {\n runId: run.id,\n skills,\n createdAt: new Date()\n };\n }\n\n async function createToolManifestForRun(\n agent: AgentSession,\n spec: AgentSpec<TApp>,\n run: Run\n ): Promise<ToolManifest> {\n const tools: ToolManifestTool[] = spec.tools.map(toLocalManifestTool);\n const bindings = await stores.mcpBindings.listMcpBindings(agent.id);\n\n for (const binding of bindings) {\n enforceMcpPolicy(spec, binding);\n const resolved = await resolveMcpBindingOrThrow({\n resolver: mcpResolver,\n auth: run.auth ?? agent.auth,\n agent,\n binding,\n app\n });\n validateMcpCatalog(binding, resolved);\n tools.push(...filterMcpCatalog(binding, resolved).map((tool) => toMcpManifestTool(binding, tool)));\n }\n\n return {\n runId: run.id,\n tools,\n createdAt: new Date()\n };\n }\n\n async function callTool(runId: RunId, input: CallToolInput): Promise<ToolCallResult> {\n const run = await getRunOrThrow(stores, runId);\n\n if (run.status !== \"running\" && run.status !== \"paused\") {\n throw new HephError({\n code: \"HEPH3004\",\n title: \"Tool call is not allowed for this Run status\",\n message: `Run ${run.id} is ${run.status}; tool calls require running or paused.`,\n status: 409,\n details: {\n runId: run.id,\n status: run.status,\n toolId: input.toolId\n }\n });\n }\n\n if (!run.toolManifest) {\n throw new HephError({\n code: \"HEPH3003\",\n title: \"ToolManifest is not ready\",\n message: `Run ${run.id} is ${run.status} but has no Run-scoped ToolManifest.`,\n status: 500,\n details: {\n runId: run.id,\n status: run.status,\n toolId: input.toolId\n }\n });\n }\n\n const manifestTool = run.toolManifest.tools.find((tool) => tool.id === input.toolId);\n\n if (!manifestTool) {\n throw new HephError({\n code: \"HEPH3005\",\n title: \"Tool is not available for this Run\",\n message: `Tool ${input.toolId} is not present in Run ${run.id}'s ToolManifest.`,\n status: 404,\n details: {\n runId: run.id,\n toolId: input.toolId\n }\n });\n }\n\n const agent = await getAgentOrThrow(stores, run.agentId);\n const spec = await resolveSpecOrThrow(resolver, run.agentSpecId, input.auth ?? run.auth ?? agent.auth);\n const auth = input.auth ?? run.auth;\n const toolInput = input.input ?? {};\n await ensureToolApproval({\n run,\n agent,\n manifestTool,\n input: toolInput,\n auth,\n approvalRequestId: input.approvalRequestId\n });\n\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"tool.started\",\n payload: {\n toolId: manifestTool.id,\n displayName: manifestTool.displayName,\n source: manifestTool.source,\n input: toolInput\n },\n sourceRefs: toolSourceRefs(manifestTool, input.approvalRequestId)\n });\n\n try {\n const result =\n manifestTool.source === \"local\"\n ? await callLocalTool({\n spec,\n manifestTool,\n input: toolInput,\n auth,\n agent,\n run,\n signal: input.signal ?? new AbortController().signal\n })\n : await callMcpTool({\n manifestTool,\n input: toolInput,\n auth,\n agent,\n run,\n signal: input.signal\n });\n\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"tool.completed\",\n payload: {\n toolId: manifestTool.id,\n source: manifestTool.source,\n result\n },\n sourceRefs: toolSourceRefs(manifestTool, input.approvalRequestId)\n });\n\n return {\n toolId: manifestTool.id,\n result,\n ok: true\n };\n } catch (error) {\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"tool.failed\",\n payload: {\n toolId: manifestTool.id,\n source: manifestTool.source,\n error: toErrorDetails(error)\n },\n sourceRefs: toolSourceRefs(manifestTool, input.approvalRequestId)\n });\n throw error;\n }\n }\n\n async function tryCallTool(runId: RunId, input: CallToolInput): Promise<ToolCallAttemptResult> {\n try {\n const result = await callTool(runId, input);\n return {\n ...result,\n ok: true\n };\n } catch (error) {\n if (shouldRethrowToolCallAttemptError(error)) {\n throw error;\n }\n return {\n toolId: input.toolId,\n ok: false,\n error: toRunError(error)\n };\n }\n }\n\n async function ensureToolApproval(input: {\n run: Run;\n agent: AgentSession;\n manifestTool: ToolManifestTool;\n input: unknown;\n auth: AuthContext | null;\n approvalRequestId?: ApprovalRequestId | undefined;\n }): Promise<void> {\n const requiresApproval = input.manifestTool.requiresApproval || input.manifestTool.sideEffect !== false;\n\n if (!requiresApproval) {\n return;\n }\n\n if (input.approvalRequestId) {\n const request = await stores.approvals.getApprovalRequest(input.approvalRequestId);\n\n if (\n request &&\n request.runId === input.run.id &&\n request.toolId === input.manifestTool.id &&\n request.status === \"granted\"\n ) {\n return;\n }\n\n throw new HephError({\n code: \"HEPH3002\",\n title: \"Approval required\",\n message: `Tool ${input.manifestTool.id} requires a granted approval request.`,\n status: 409,\n details: {\n approvalRequestId: input.approvalRequestId,\n runId: input.run.id,\n toolId: input.manifestTool.id,\n approvalStatus: request?.status ?? null\n }\n });\n }\n\n const approval = await stores.approvals.createApprovalRequest({\n agentId: input.agent.id,\n runId: input.run.id,\n toolId: input.manifestTool.id,\n input: input.input,\n requestedBy: input.auth,\n metadata: {\n toolSource: input.manifestTool.source,\n displayName: input.manifestTool.displayName\n }\n });\n\n if (input.run.status === \"running\") {\n await stores.state.updateRun(input.run.id, {\n status: \"paused\"\n });\n await stores.events.appendRunEvent({\n runId: input.run.id,\n type: \"run.paused\",\n payload: {\n reason: \"approval_required\",\n approvalRequestId: approval.id,\n toolId: input.manifestTool.id\n },\n sourceRefs: [\n {\n type: \"approval_request\",\n id: approval.id\n }\n ]\n });\n }\n\n await stores.events.appendRunEvent({\n runId: input.run.id,\n type: \"approval.requested\",\n payload: {\n approvalRequestId: approval.id,\n toolId: input.manifestTool.id,\n displayName: input.manifestTool.displayName\n },\n sourceRefs: [\n ...toolSourceRefs(input.manifestTool),\n {\n type: \"approval_request\",\n id: approval.id\n }\n ]\n });\n\n throw new HephError({\n code: \"HEPH3002\",\n title: \"Approval required\",\n message: `Tool ${input.manifestTool.id} requires approval before execution.`,\n status: 409,\n details: {\n approvalRequestId: approval.id,\n runId: input.run.id,\n toolId: input.manifestTool.id\n }\n });\n }\n\n async function callLocalTool(input: {\n spec: AgentSpec<TApp>;\n manifestTool: ToolManifestTool;\n input: unknown;\n auth: AuthContext | null;\n agent: AgentSession;\n run: Run;\n signal: AbortSignal;\n }): Promise<unknown> {\n const tool = input.spec.tools.find((candidate) => candidate.id === input.manifestTool.id);\n\n if (!tool) {\n throw new HephError({\n code: \"HEPH3005\",\n title: \"Local tool is not registered\",\n message: `Local tool ${input.manifestTool.id} is not registered on AgentSpec ${input.spec.id}.`,\n status: 500,\n details: {\n toolId: input.manifestTool.id,\n agentSpecId: input.spec.id\n }\n });\n }\n\n const parsedInput = tool.inputSchema.parse(input.input);\n return tool.execute(parsedInput, {\n auth: input.auth,\n agent: input.agent,\n run: input.run,\n app,\n signal: input.signal\n });\n }\n\n async function callMcpTool(input: {\n manifestTool: McpToolManifestTool;\n input: unknown;\n auth: AuthContext | null;\n agent: AgentSession;\n run: Run;\n signal?: AbortSignal | undefined;\n }): Promise<unknown> {\n const binding = await stores.mcpBindings.getMcpBinding(input.manifestTool.bindingId);\n\n if (!binding) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP binding not found\",\n message: `MCP binding ${input.manifestTool.bindingId} was not found.`,\n status: 500,\n details: {\n bindingId: input.manifestTool.bindingId,\n toolId: input.manifestTool.id\n }\n });\n }\n\n const resolved = await resolveMcpBindingOrThrow({\n resolver: mcpResolver,\n auth: input.auth,\n agent: input.agent,\n binding,\n app\n });\n\n return mcpToolExecutor.callTool({\n auth: input.auth,\n agent: input.agent,\n run: input.run,\n binding,\n manifestTool: input.manifestTool,\n resolved,\n input: input.input,\n app,\n signal: input.signal\n });\n }\n\n async function renderRunContext(runId: RunId): Promise<RenderedContext> {\n const run = await getRunOrThrow(stores, runId);\n const agent = await getAgentOrThrow(stores, run.agentId);\n const spec = await resolveSpecOrThrow(resolver, run.agentSpecId, run.auth ?? agent.auth);\n const providerBlocks = await loadProviderBlocks(spec.contextProviders, {\n auth: run.auth,\n agent,\n run,\n spec,\n input: run.input,\n stores,\n app\n });\n const builtInBlocks = createBuiltInBlocks({\n agent,\n spec,\n run,\n runtimePolicy:\n options.runtimePolicy ??\n \"Follow the active platform, security, tenant-boundary, and tool policies supplied by the runtime.\",\n toolPolicy: options.toolPolicy ?? \"Use only the tools listed in the Run-scoped ToolManifest.\"\n });\n const rendered = renderer.render({\n template: spec.contextTemplate ?? defaultContextTemplate,\n blocks: [...builtInBlocks, ...providerBlocks],\n runId: run.id,\n input: runInputText(run.input),\n runtime: {\n toolPolicy: options.toolPolicy ?? \"Use only the tools listed in the Run-scoped ToolManifest.\"\n }\n });\n\n await stores.events.appendRunEvent({\n runId: run.id,\n type: \"context.rendered\",\n payload: {\n contextTemplateId: rendered.manifest.contextTemplateId,\n contextTemplateVersion: rendered.manifest.contextTemplateVersion,\n totalTokens: rendered.manifest.totalTokens,\n blocks: rendered.manifest.blocks.map((block) => ({\n key: block.key,\n type: block.type,\n tokens: block.tokens,\n truncated: block.truncated\n }))\n }\n });\n\n return rendered;\n }\n}\n\nfunction normalizeAgentSpecResolver<TApp>(registration: AgentSpecRegistration<TApp>): AgentSpecResolver<TApp> {\n if (isAgentSpecResolver(registration)) {\n return registration;\n }\n\n const specs = new Map<AgentSpecId, AgentSpec<TApp>>();\n\n if (Array.isArray(registration)) {\n for (const spec of registration) {\n specs.set(spec.id, spec);\n }\n } else {\n for (const [id, spec] of Object.entries(registration)) {\n specs.set(id, spec);\n }\n }\n\n return {\n async resolve(id) {\n return specs.get(id) ?? null;\n }\n };\n}\n\nfunction isAgentSpecResolver<TApp>(registration: AgentSpecRegistration<TApp>): registration is AgentSpecResolver<TApp> {\n return typeof (registration as AgentSpecResolver<TApp>).resolve === \"function\";\n}\n\nasync function resolveSpecOrThrow<TApp>(\n resolver: AgentSpecResolver<TApp>,\n id: AgentSpecId,\n auth: AuthContext | null\n): Promise<AgentSpec<TApp>> {\n const spec = await resolver.resolve(id, { auth });\n\n if (!spec) {\n throw new HephError({\n code: \"HEPH1001\",\n title: \"Agent spec not found\",\n message: `Agent spec ${id} was not found.`,\n status: 404,\n details: {\n agentSpecId: id\n }\n });\n }\n\n return spec;\n}\n\nasync function getAgentOrThrow(stores: HephStores, agentId: AgentSessionId): Promise<AgentSession> {\n const agent = await stores.state.getAgentSession(agentId);\n\n if (!agent) {\n throw new HephError({\n code: \"HEPH5001\",\n title: \"AgentSession not found\",\n message: `AgentSession ${agentId} was not found.`,\n status: 404,\n details: {\n agentId\n }\n });\n }\n\n return agent;\n}\n\nasync function getRunOrThrow(stores: HephStores, runId: RunId): Promise<Run> {\n const run = await stores.state.getRun(runId);\n\n if (!run) {\n throw new HephError({\n code: \"HEPH4001\",\n title: \"Run not found\",\n message: `Run ${runId} was not found.`,\n status: 404,\n details: {\n runId\n }\n });\n }\n\n return run;\n}\n\nasync function loadProviderBlocks<TApp>(\n providers: ContextProvider<TApp>[],\n ctx: Parameters<ContextProvider<TApp>[\"load\"]>[0]\n): Promise<ContextBlock[]> {\n const blocks: ContextBlock[] = [];\n\n for (const provider of providers) {\n const loaded = await provider.load(ctx);\n\n if (!loaded) {\n continue;\n }\n\n if (Array.isArray(loaded)) {\n blocks.push(...loaded);\n } else {\n blocks.push(loaded);\n }\n }\n\n return blocks;\n}\n\nfunction enforceMcpPolicy<TApp>(spec: AgentSpec<TApp>, binding: Pick<McpBinding, \"capabilityId\" | \"allowTools\">): void {\n if (!spec.mcp) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP is disabled for this AgentSpec\",\n message: `AgentSpec ${spec.id} does not allow dynamic MCP bindings.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n capabilityId: binding.capabilityId\n }\n });\n }\n\n if (!spec.mcp.allowCapabilities.includes(binding.capabilityId)) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP capability is not allowed\",\n message: `AgentSpec ${spec.id} does not allow MCP capability ${binding.capabilityId}.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n capabilityId: binding.capabilityId\n }\n });\n }\n\n if (binding.allowTools === \"all\" && spec.mcp.allowAllTools !== true) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP allowTools all is not allowed\",\n message: `AgentSpec ${spec.id} must opt in before an MCP binding can expose all tools.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n capabilityId: binding.capabilityId\n }\n });\n }\n}\n\nfunction enforceSkillPolicy<TApp>(spec: AgentSpec<TApp>, skillId: string): void {\n if (!spec.skills) {\n throw new HephError({\n code: \"HEPH8004\",\n title: \"Skills are disabled for this AgentSpec\",\n message: `AgentSpec ${spec.id} does not allow session skill activation.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n skillId\n }\n });\n }\n\n if (spec.skills.allow !== \"all\" && !spec.skills.allow.includes(skillId)) {\n throw new HephError({\n code: \"HEPH8004\",\n title: \"Skill is not allowed\",\n message: `AgentSpec ${spec.id} does not allow skill ${skillId}.`,\n status: 422,\n details: {\n agentSpecId: spec.id,\n skillId\n }\n });\n }\n}\n\nasync function resolveMcpBindingOrThrow<TApp>(input: {\n resolver: McpBindingResolver<TApp> | null;\n auth: AuthContext | null;\n agent: AgentSession;\n binding: McpBinding;\n app: TApp;\n}): Promise<ResolvedMcpBinding<TApp>> {\n if (!input.resolver) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP binding resolver is not configured\",\n message: \"createHeph({ mcp: { resolver } }) is required before MCP bindings can be resolved.\",\n status: 422,\n details: {\n bindingId: input.binding.id,\n capabilityId: input.binding.capabilityId\n }\n });\n }\n\n const resolved = await input.resolver.resolve({\n auth: input.auth,\n agent: input.agent,\n binding: input.binding,\n app: input.app\n });\n\n if (resolved.transport !== \"streamable_http\") {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"Unsupported MCP transport\",\n message: \"The MCP MVP supports only Streamable HTTP bindings.\",\n status: 422,\n details: {\n bindingId: input.binding.id,\n transport: resolved.transport\n }\n });\n }\n\n if (!resolved.endpoint.trim()) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP endpoint is missing\",\n message: \"Resolved MCP bindings must include a Streamable HTTP endpoint.\",\n status: 422,\n details: {\n bindingId: input.binding.id\n }\n });\n }\n\n return resolved;\n}\n\nfunction validateMcpCatalog<TApp>(\n binding: Pick<McpBinding, \"id\" | \"capabilityId\" | \"allowTools\">,\n resolved: ResolvedMcpBinding<TApp>\n): void {\n const toolNames = new Set(resolved.tools.map((tool) => tool.name));\n const invalidTools = resolved.tools.filter((tool) => !tool.name.trim());\n\n if (invalidTools.length > 0) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP tool catalog is invalid\",\n message: \"MCP tool catalog entries must include non-empty tool names.\",\n status: 422,\n details: {\n bindingId: binding.id,\n capabilityId: binding.capabilityId\n }\n });\n }\n\n if (binding.allowTools !== \"all\") {\n const unknownTools = binding.allowTools.filter((toolName) => !toolNames.has(toolName));\n\n if (unknownTools.length > 0) {\n throw new HephError({\n code: \"HEPH7001\",\n title: \"MCP allowTools contains unknown tools\",\n message: \"MCP binding allowTools must name tools present in the resolved catalog.\",\n status: 422,\n details: {\n bindingId: binding.id,\n capabilityId: binding.capabilityId,\n unknownTools\n }\n });\n }\n }\n}\n\nfunction filterMcpCatalog<TApp>(binding: Pick<McpBinding, \"allowTools\">, resolved: ResolvedMcpBinding<TApp>): McpCatalogTool[] {\n if (binding.allowTools === \"all\") {\n return resolved.tools;\n }\n\n const allowSet = new Set(binding.allowTools);\n return resolved.tools.filter((tool) => allowSet.has(tool.name));\n}\n\nfunction toolSourceRefs(tool: ToolManifestTool, approvalRequestId?: ApprovalRequestId | undefined): SourceRef[] {\n const refs: SourceRef[] =\n tool.source === \"mcp\"\n ? [\n {\n type: \"mcp_binding\",\n id: tool.bindingId\n }\n ]\n : [];\n\n if (approvalRequestId) {\n refs.push({\n type: \"approval_request\",\n id: approvalRequestId\n });\n }\n\n return refs;\n}\n\nfunction createBuiltInBlocks<TApp>(input: {\n agent: AgentSession;\n spec: AgentSpec<TApp>;\n run: Run;\n runtimePolicy: string;\n toolPolicy: string;\n}): ContextBlock[] {\n return [\n {\n key: \"runtimePolicy\",\n type: \"policy\",\n content: input.runtimePolicy\n },\n {\n key: \"agentIdentity\",\n type: \"agent_identity\",\n content: input.spec.instructions\n },\n {\n key: \"currentTask\",\n type: \"input\",\n content: runInputText(input.run.input)\n },\n {\n key: \"sessionState\",\n type: \"state\",\n content: JSON.stringify(input.agent.state, null, 2)\n },\n {\n key: \"skills\",\n type: \"skill\",\n content: formatSkillsBlock(input.run.skillManifest),\n sourceRefs:\n input.run.skillManifest?.skills.map((skill) => ({\n type: \"skill_binding\" as const,\n id: skill.bindingId\n })) ?? []\n },\n {\n key: \"toolManifest\",\n type: \"tool_manifest\",\n content: JSON.stringify(input.run.toolManifest ?? createLocalToolManifest(input.run.id, input.spec.tools), null, 2)\n }\n ];\n}\n\nfunction createLocalToolManifest(runId: RunId, tools: Tool[]): ToolManifest {\n return {\n runId,\n tools: tools.map(toLocalManifestTool),\n createdAt: new Date()\n };\n}\n\nfunction toLocalManifestTool(tool: Tool): ToolManifestTool {\n return {\n id: tool.id,\n displayName: tool.id,\n source: \"local\",\n localToolId: tool.id,\n description: tool.description,\n inputSchema: tool.jsonSchema,\n sideEffect: tool.sideEffect,\n requiresApproval: tool.requiresApproval,\n metadata: {}\n };\n}\n\nfunction toMcpManifestTool(binding: McpBinding, tool: McpCatalogTool): McpToolManifestTool {\n const sideEffect = tool.sideEffect ?? null;\n return {\n id: `mcp.${binding.id}.${tool.name}`,\n displayName: `${binding.capabilityId}.${tool.name}`,\n source: \"mcp\",\n bindingId: binding.id,\n capabilityId: binding.capabilityId,\n remoteToolName: tool.name,\n transport: \"streamable_http\",\n description: tool.description ?? \"\",\n inputSchema: tool.inputSchema ?? {\n type: \"object\",\n additionalProperties: true\n },\n sideEffect,\n requiresApproval: tool.requiresApproval ?? sideEffect !== false,\n metadata: tool.metadata ?? {}\n };\n}\n\nfunction normalizeRunInput(input: string | RunInput): RunInput {\n if (typeof input === \"string\") {\n return {\n type: \"user.message\",\n text: input\n };\n }\n\n return input;\n}\n\nfunction renderDeferredToolResultContent(operation: DeferredToolOperation): string {\n const lines = [`Deferred tool operation ${operation.id} ${operation.status}.`];\n lines.push(`- toolId: ${operation.toolId}`);\n lines.push(`- runId: ${operation.runId}`);\n if (operation.toolCallId) lines.push(`- toolCallId: ${operation.toolCallId}`);\n if (operation.error) lines.push(`- error: ${operation.error.message}`);\n if (operation.result !== null && operation.result !== undefined) lines.push(`- result: ${JSON.stringify(operation.result)}`);\n return lines.join(\"\\n\");\n}\n\nfunction addMessageIdToRunInput(input: RunInput, messageId: MessageId): RunInput {\n return {\n ...input,\n messageIds: [...(input.messageIds ?? []), messageId]\n };\n}\n\nfunction reduceInboxEvents(events: InboxEvent[], textSeparator: string): RunInput {\n const messageIds = unique(events.flatMap((event) => event.input.messageIds ?? []));\n const textEvents = events.filter((event) => \"text\" in event.input);\n\n if (textEvents.length === events.length) {\n const first = textEvents[0];\n\n return {\n type: first?.input.type === \"steering.message\" || first?.input.type === \"follow_up.message\" ? first.input.type : \"user.message\",\n text: textEvents.map((event) => (\"text\" in event.input ? event.input.text : \"\")).join(textSeparator),\n messageIds,\n payload: {\n inboxEventIds: events.map((event) => event.id),\n reducedInboxEvents: events.map(toReducedInboxEvent)\n }\n };\n }\n\n if (events.length === 1) {\n return {\n ...events[0]!.input,\n messageIds,\n payload: {\n ...(typeof events[0]!.input.payload === \"object\" && events[0]!.input.payload !== null ? events[0]!.input.payload : {}),\n reducedInboxEvents: events.map(toReducedInboxEvent)\n }\n };\n }\n\n return {\n type: \"system.event\",\n messageIds,\n payload: {\n inboxEvents: events.map((event) => ({\n id: event.id,\n type: event.type,\n input: event.input\n })),\n reducedInboxEvents: events.map(toReducedInboxEvent)\n }\n };\n}\n\nfunction normalizeMaxEventsPerRun(value: number | null | undefined): number | undefined {\n if (value === null) {\n return undefined;\n }\n\n if (value === undefined) {\n return 20;\n }\n\n if (!Number.isFinite(value) || value < 1) {\n throw new HephError({\n code: \"HEPH4006\",\n title: \"Invalid inbox reducer configuration\",\n message: \"inbox.maxEventsPerRun must be a positive number or null.\",\n status: 422,\n details: {\n maxEventsPerRun: value\n }\n });\n }\n\n return Math.floor(value);\n}\n\nfunction toReducedInboxEvent(event: InboxEvent): Record<string, unknown> {\n const input = event.input;\n return {\n inboxEventId: event.id,\n type: event.type,\n messageIds: input.messageIds ?? [],\n text: \"text\" in input ? input.text : null\n };\n}\n\nfunction firstAuth(events: InboxEvent[]): AuthContext | null {\n return events.find((event) => event.auth !== null)?.auth ?? null;\n}\n\nfunction toInboxSourceRefs(events: InboxEvent[]): SourceRef[] {\n return events.map((event) => ({\n type: \"inbox_event\",\n id: event.id\n }));\n}\n\nfunction toRunError(error: unknown): RunError {\n const runError: RunError = {\n message: error instanceof Error ? error.message : String(error),\n details: toErrorDetails(error)\n };\n\n if (error instanceof HephError) {\n runError.code = error.code;\n }\n\n return runError;\n}\n\nfunction shouldRethrowToolCallAttemptError(error: unknown): boolean {\n if (!(error instanceof HephError)) {\n return false;\n }\n\n return error.code === \"HEPH3002\" || error.code === \"HEPH3003\" || error.code === \"HEPH3004\";\n}\n\nfunction isTerminalRun(run: Run): boolean {\n return run.status === \"completed\" || run.status === \"failed\" || run.status === \"cancelled\";\n}\n\nfunction unique<T>(values: T[]): T[] {\n return Array.from(new Set(values));\n}\n\nfunction runInputText(input: RunInput): string {\n return \"text\" in input ? input.text : JSON.stringify(input.payload ?? {});\n}\n\nfunction formatSkillsBlock(manifest: SkillManifest | null): string {\n if (!manifest || manifest.skills.length === 0) {\n return \"\";\n }\n\n return manifest.skills\n .map((skill) => {\n const version = skill.version ? `@${skill.version}` : \"\";\n const referenceLines =\n skill.availableReferences.length === 0\n ? \"\"\n : `\\nAvailable references:\\n${skill.availableReferences\n .map((ref) => `- ${ref.id}: ${ref.pathOrRef}`)\n .join(\"\\n\")}`;\n\n return `# ${skill.name}${version}\\n\\nDescription: ${skill.description}\\n\\nInstructions:\\n${skill.instructions}${referenceLines}`;\n })\n .join(\"\\n\\n---\\n\\n\");\n}\n\nfunction filterSkillReferences(references: SkillResourceRef[], allowReferences: SkillBinding[\"allowReferences\"]): SkillResourceRef[] {\n if (allowReferences === \"all\") {\n return references.map(cloneSkillResourceRef);\n }\n\n const allowSet = new Set(allowReferences);\n return references.filter((reference) => allowSet.has(reference.id)).map(cloneSkillResourceRef);\n}\n\nfunction cloneSkillResourceRef(ref: SkillResourceRef): SkillResourceRef {\n return {\n ...ref,\n metadata: { ...ref.metadata }\n };\n}\n\nasync function sha256Text(value: string): Promise<string> {\n const bytes = new TextEncoder().encode(value);\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n const hex = Array.from(new Uint8Array(digest))\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return `sha256:${hex}`;\n}\n\nfunction parseMcpResponseBody(body: string, contentType: string | null): unknown {\n const trimmed = body.trim();\n\n if (!trimmed) {\n return null;\n }\n\n if (contentType?.includes(\"text/event-stream\")) {\n const dataLines = trimmed\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(\"data:\".length).trim())\n .filter((line) => line && line !== \"[DONE]\");\n const lastData = dataLines.at(-1);\n\n if (!lastData) {\n return null;\n }\n\n try {\n return JSON.parse(lastData);\n } catch {\n return lastData;\n }\n }\n\n try {\n return JSON.parse(trimmed);\n } catch {\n return trimmed;\n }\n}\n\nfunction isJsonRpcError(value: unknown): value is { error: unknown } {\n return isRecord(value) && \"error\" in value && value.error !== undefined && value.error !== null;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":";;AAuCA,IAAa,YAAb,cAA+B,MAAM;CACnC;CACA;CACA;CACA;CAEA,YAAY,SAA2B;EACrC,MAAM,QAAQ,WAAW,QAAQ,OAAO,SAAS,QAAQ,GAAG,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA,EAAU;EACjG,KAAK,OAAO;EACZ,KAAK,OAAO,QAAQ;EACpB,KAAK,QAAQ,QAAQ;EAErB,IAAI,QAAQ,YAAY,KAAA,GACtB,KAAK,UAAU,QAAQ;EAGzB,IAAI,QAAQ,WAAW,KAAA,GACrB,KAAK,SAAS,QAAQ;;;AAK5B,SAAgB,YAAY,OAAoC;CAC9D,OAAO,iBAAiB;;AAG1B,SAAgB,eAAe,OAAyC;CACtE,IAAI,iBAAiB,OACnB,OAAO;EACL,MAAM,MAAM;EACZ,SAAS,MAAM;EAChB;CAGH,OAAO,EACL,SAAS,OAAO,MAAM,EACvB;;AAGH,SAAS,SAAS,SAA6E;CAC7F,OAAO,WAAW;;;;AC5DpB,IAAa,kBAAb,MAA6B;CAC3B,OAAO,SAAkD;EACvD,MAAM,6BAAa,IAAI,KAAqB;EAC5C,MAAM,iBAAyC,EAAE;EAEjD,KAAK,MAAM,SAAS,QAAQ,QAAQ;GAClC,MAAM,OAAO,QAAQ,SAAS,MAAM,MAAM;GAC1C,MAAM,iBAAiB,eAAe,MAAM,QAAQ;GACpD,MAAM,mBAAmB,MAAM,YAAY,iBAAiB,MAAM,SAAS,KAAK,UAAU,GAAG,MAAM;GACnG,MAAM,SAAS,eAAe,iBAAiB;GAC/C,MAAM,WAAW,WAAW,IAAI,MAAM,IAAI;GAE1C,WAAW,IAAI,MAAM,KAAK,WAAW,GAAG,SAAS,MAAM,qBAAqB,iBAAiB;GAC7F,eAAe,KAAK;IAClB,KAAK,MAAM;IACX,MAAM,MAAM;IACZ;IACA,YAAY,MAAM,cAAc,EAAE;IAClC,WAAW,SAAS;IACrB,CAAC;;EAGJ,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,QAAQ,SAAS,MAAM,EAAE;GAChE,MAAM,QAAQ,WAAW,IAAI,IAAI;GAEjC,IAAI,KAAK,YAAY,QAAQ,MAAM,EACjC,MAAM,IAAI,UAAU;IAClB,MAAM;IACN,OAAO;IACP,SAAS,oBAAoB,QAAQ,SAAS,GAAG,iBAAiB,IAAI;IACtE,QAAQ;IACR,SAAS;KACP,YAAY,QAAQ,SAAS;KAC7B,MAAM;KACP;IACF,CAAC;;EAIN,MAAM,WAAW,QAAQ,SAAS,SAAS,KAAK,aAAa;GAC3D,MAAM,QAAQ;GACd,SAAS,YAAY,QAAQ,SAAS;IACpC,OAAO,QAAQ;IACf,SAAS,QAAQ,WAAW,EAAE;IAC9B,OAAO;IACR,CAAC,CAAC,MAAM;GACV,EAAE;EAWH,OAAO;GACL;GACA,UAAA;IAVA,OAAO,QAAQ;IACf,mBAAmB,QAAQ,SAAS;IACpC,wBAAwB,QAAQ,SAAS;IACzC,QAAQ;IACR,aAAa,SAAS,QAAQ,KAAK,YAAY,MAAM,eAAe,QAAQ,QAAQ,EAAE,EAAE;IACxF,2BAAW,IAAI,MAAM;IAKb;GACT;;;AAIL,MAAa,yBAA0C;CACrD,IAAI;CACJ,SAAS;CACT,OAAO;EACL,eAAe,EAAE,UAAU,MAAM;EACjC,eAAe,EAAE,UAAU,MAAM;EACjC,gBAAgB,EAAE,WAAW,MAAM;EACnC,aAAa;GAAE,UAAU;GAAM,WAAW;GAAM;EAChD,cAAc;GAAE,UAAU;GAAM,WAAW;GAAM;EACjD,WAAW,EAAE,WAAW,KAAM;EAC9B,kBAAkB,EAAE,WAAW,KAAK;EACpC,QAAQ,EAAE,WAAW,KAAM;EAC3B,UAAU,EAAE,WAAW,KAAM;EAC7B,kBAAkB,EAAE,WAAW,KAAM;EACrC,gBAAgB,EAAE,WAAW,KAAM;EACnC,eAAe,EAAE,WAAW,MAAM;EAClC,kBAAkB,EAAE,WAAW,MAAM;EACrC,WAAW,EAAE,WAAW,MAAM;EAC9B,aAAa,EAAE,WAAW,MAAM;EAChC,cAAc;GAAE,UAAU;GAAM,WAAW;GAAM;EACjD,gBAAgB,EAAE,WAAW,KAAM;EACpC;CACD,UAAU;EACR;GACE,MAAM;GACN,SAAS;;;;;GAKV;EACD;GACE,MAAM;GACN,SAAS;;;;;;;;;;GAUV;EACD;GACE,MAAM;GACN,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CV;EACF;CACF;AAED,SAAgB,eAAe,SAAyB;CACtD,IAAI,CAAC,SAAS,OAAO;CACrB,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,QAAQ,SAAS,EAAE,CAAC;;AAGnD,SAAS,iBAAiB,SAAiB,WAA2B;CACpE,MAAM,WAAW,KAAK,IAAI,GAAG,YAAY,EAAE;CAE3C,IAAI,QAAQ,UAAU,UACpB,OAAO;CAGT,OAAO,GAAG,QAAQ,MAAM,GAAG,KAAK,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;;AAGnE,SAAS,YACP,UACA,QAKQ;CACR,OAAO,SAAS,WAAW,4BAA4B,QAAQ,QAAgB;EAC7E,IAAI,QAAQ,SACV,OAAO,OAAO;EAGhB,IAAI,IAAI,WAAW,WAAW,EAC5B,OAAO,OAAO,QAAQ,IAAI,MAAM,EAAkB,KAAK;EAGzD,OAAO,OAAO,MAAM,IAAI,IAAI,IAAI;GAChC;;AAGJ,SAAS,QAAQ,OAAoC;CACnD,OAAO,UAAU,KAAA,KAAa,MAAM,MAAM,CAAC,WAAW;;AAGxD,SAAgB,eAAe,UAA4C;CACzE,OAAO,SAAS,KAAK,YAAY,GAAG,QAAQ,KAAK,IAAI,QAAQ,UAAU,CAAC,KAAK,OAAO;;;;AC3MtF,SAAgB,YAA4B,YAAwD;CAClG,OAAO;EACL,IAAI,WAAW;EACf,SAAS,WAAW,WAAW;EAC/B,cAAc,WAAW;EACzB,OAAO,WAAW,SAAS;EAC3B,OAAO,WAAW,SAAS,EAAE;EAC7B,KAAK,mBAAmB,WAAW,KAAK,WAAW,iBAAiB;EACpE,QAAQ,qBAAqB,WAAW,OAAO;EAC/C,kBAAkB,CAAC,GAAI,WAAW,oBAAoB,EAAE,EAAG,GAAI,WAAW,WAAW,EAAE,CAAE;EACzF,iBAAiB,WAAW,mBAAmB;EAC/C,UAAU,WAAW,YAAY,EAAE;EACpC;;AAGH,SAAS,mBACP,QACA,eACuB;CACvB,IAAI,WAAW,KAAA,KAAa,WAAW,MACrC,OAAO;CAGT,IAAI,MAAM,QAAQ,OAAO,EAAE;EACzB,MAAM,aAA6B,EACjC,mBAAmB,QACpB;EAED,IAAI,kBAAkB,KAAA,GACpB,WAAW,gBAAgB;EAG7B,OAAO;;CAGT,IAAI,kBAAkB,KAAA,GACpB,OAAO;EACL,GAAG;EACH;EACD;CAGH,OAAO;;AAGT,SAAS,qBAAqB,QAA4D;CACxF,IAAI,WAAW,KAAA,KAAa,WAAW,MACrC,OAAO;CAGT,IAAI,WAAW,OACb,OAAO,EACL,OAAO,OACR;CAGH,IAAI,MAAM,QAAQ,OAAO,EACvB,OAAO,EACL,OAAO,QACR;CAGH,OAAO;;AAGT,SAAgB,sBACd,YAC2B;CAC3B,OAAO;EACL,IAAI,WAAW;EACf,MAAM,WAAW;EAClB;;AAGH,SAAgB,sBAAsB,UAAoD;CACxF,OAAO;;AAGT,SAAgB,WACd,YAC2C;CAC3C,MAAM,aAAa,aAAa,WAAW,IAAI,WAAW,YAAY;CACtE,MAAM,OAAkD;EACtD,IAAI,WAAW;EACf,aAAa,WAAW;EACxB,aAAa,WAAW;EACxB;EACA,YAAY,WAAW,cAAc;EACrC,kBAAkB,WAAW,oBAAoB;EACjD,SAAS,WAAW;EACrB;CAED,IAAI,WAAW,mBAAmB,KAAA,GAChC,KAAK,iBAAiB,WAAW;CAGnC,OAAO;;AAGT,MAAa,YAAY,EACvB,QAAQ,aACT;AAED,MAAa,kBAAkB,EAC7B,QAAQ,uBACT;AAED,MAAa,kBAAkB,EAC7B,QAAQ,uBACT;AAED,MAAa,OAAO,EAClB,QAAQ,YACT;AAED,SAAS,aAAa,QAAgB,QAA4C;CAChF,IAAI;EACF,OAAO,EAAE,aAAa,OAAO;UACtB,OAAO;EACd,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,QAAQ,OAAO;GACxB,QAAQ;GACR,SAAS,EACP,QACD;GACD;GACD,CAAC;;;;;ACxGN,IAAa,qBAAb,MAA6E;CAC3E,MAAM,QAAQ,KAA+C;EAC3D,MAAM,IAAI,KAAK;GACb,MAAM;GACN,SAAS,EACP,UAAU,WACX;GACF,CAAC;EAEF,MAAM,OAAOA,eAAa,IAAI,IAAI,MAAM;EACxC,MAAM,WAAW,OAAO,8BAA8B,SAAS;EAE/D,MAAM,IAAI,KAAK;GACb,MAAM;GACN,SAAS,EACP,MAAM,aACP;GACF,CAAC;EACF,MAAM,IAAI,KAAK;GACb,MAAM;GACN,SAAS,EACP,MAAM,UACP;GACF,CAAC;EAEF,MAAM,UAAU,MAAM,IAAI,cAAc;GACtC,MAAM;GACN,SAAS;GACT,aAAa,IAAI,IAAI;GACrB,UAAU,EACR,UAAU,WACX;GACF,CAAC;EAEF,MAAM,IAAI,KAAK;GACb,MAAM;GACN,SAAS;IACP,WAAW,QAAQ;IACnB,MAAM,QAAQ;IACd,SAAS,QAAQ;IAClB;GACD,YAAY,CACV;IACE,MAAM;IACN,IAAI,QAAQ;IACb,CACF;GACF,CAAC;EACF,MAAM,IAAI,KAAK;GACb,MAAM;GACN,SAAS,EACP,UAAU,WACX;GACF,CAAC;;;AAIN,SAASA,eAAa,OAA6B;CACjD,OAAO,UAAU,QAAQ,MAAM,OAAO;;;;ACpFxC,IAAI,kBAAkB;AAEtB,SAAgB,SAAS,QAA0B;CACjD,MAAM,WAAW,WAAW,QAAQ,cAAc;CAElD,IAAI,UACF,OAAO,GAAG,SAAS,SAAS,WAAW,KAAK,GAAG;CAGjD,mBAAmB;CACnB,OAAO,GAAG,SAAS,KAAK,KAAK,CAAC,SAAS,GAAG,GAAG,gBAAgB,SAAS,GAAG;;AAG3E,SAAgB,uBAA+B;CAC7C,OAAO,SAAS,SAAS;;AAG3B,SAAgB,cAAsB;CACpC,OAAO,SAAS,OAAO;;AAGzB,SAAgB,kBAA0B;CACxC,OAAO,SAAS,OAAO;;AAGzB,SAAgB,mBAA2B;CACzC,OAAO,SAAS,OAAO;;AAGzB,SAAgB,iBAAyB;CACvC,OAAO,SAAS,OAAO;;AAGzB,SAAgB,qBAA6B;CAC3C,OAAO,SAAS,SAAS;;AAG3B,SAAgB,gCAAwC;CACtD,OAAO,SAAS,MAAM;;AAGxB,SAAgB,qBAA6B;CAC3C,OAAO,SAAS,WAAW;;AAG7B,SAAgB,uBAA+B;CAC7C,OAAO,SAAS,aAAa;;AAG/B,SAAgB,0BAAkC;CAChD,OAAO,SAAS,YAAY;;;;ACvD9B,SAAgB,eAAe,UAAiC,EAAE,EAAmB;CACnF,MAAM,QAAQ,QAAQ,SAAS;CAE/B,OAAO,sBAAsB;EAC3B,IAAI;EACJ,MAAM,KAAK,KAAK;GACd,MAAM,WAAW,MAAM,IAAI,OAAO,SAAS,aAAa,IAAI,MAAM,IAAI,EAAE,OAAO,CAAC;GAEhF,IAAI,SAAS,WAAW,GACtB,OAAO;GAGT,OAAO;IACL,KAAK;IACL,MAAM;IACN,SAAS,eAAe,SAAS;IACjC,YAAY,SAAS,KAAK,aAAa;KACrC,MAAM;KACN,IAAI,QAAQ;KACb,EAAE;IACJ;;EAEJ,CAAC;;AAGJ,SAAgB,cAA+B;CAC7C,OAAO,sBAAsB;EAC3B,IAAI;EACJ,MAAM,KAAK,KAAK;GACd,OAAO;IACL,KAAK;IACL,MAAM;IACN,SAAS,KAAK,UAAU,IAAI,MAAM,OAAO,MAAM,EAAE;IAClD;;EAEJ,CAAC;;AAQJ,SAAgB,aAAa,UAA+B,EAAE,EAAmB;CAC/E,MAAM,OAAO,QAAQ,QAAQ;CAE7B,OAAO,sBAAsB;EAC3B,IAAI;EACJ,MAAM,KAAK,KAAK;GACd,MAAM,QAAQ,UAAU,IAAI,QAAQ,IAAI,MAAM,OAAO,KAAA;GACrD,MAAM,cAAc;IAClB,QAAQ,QAAQ,UAAU,oBAAoB,IAAI,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,OAAO;IAC1F;IACD;GACD,MAAM,WAAW,MAAM,IAAI,OAAO,OAAO,aACvC,UAAU,KAAA,IACN,cACA;IACE,GAAG;IACH;IACD,CACN;GAED,IAAI,SAAS,WAAW,GACtB,OAAO;GAGT,OAAO;IACL,KAAK;IACL,MAAM;IACN,SAAS,SACN,KAAK,WAAW;KACf,MAAM,aAAa,OAAO,WAAW,KAAK,QAAQ,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK;KACrF,OAAO,MAAM,OAAO,KAAK,IAAI,OAAO,QAAQ,gBAAgB,WAAW;MACvE,CACD,KAAK,KAAK;IACb,YAAY,SAAS,KAAK,YAAY;KACpC,MAAM;KACN,IAAI,OAAO;KACZ,EAAE;IACJ;;EAEJ,CAAC;;AAGJ,SAAS,eAAe,UAA6B;CACnD,OAAO,SAAS,KAAK,YAAY,GAAG,QAAQ,KAAK,IAAI,QAAQ,UAAU,CAAC,KAAK,KAAK;;AAGpF,SAAS,oBAAoB,WAAmB,aAAqB,QAA2C;CAC9G,MAAM,SAAwB,CAC5B;EACE,MAAM;EACN,IAAI;EACL,EACD;EACE,MAAM;EACN,IAAI;EACL,CACF;CAED,IAAI,QACF,OAAO,KAAK;EACV,MAAM;EACN,IAAI;EACL,CAAC;CAGJ,OAAO;;AAGT,SAAgB,MAAM,OAAmC;CACvD,OAAO;;;;AC/FT,IAAa,iBAAb,MAAoD;CAClD;CACA;CACA,OAAmC,EAAE;CACrC,+BAAgC,IAAI,KAAa;CACjD,gCAAiC,IAAI,KAAiB;CACtD,cAAsB;CACtB,YAAoB;CACpB,UAA4D;CAE5D,YAAY,UAAiC,EAAE,EAAE;EAC/C,KAAK,cAAc,QAAQ,eAAe;EAC1C,KAAK,UACH,QAAQ,aACN,OAAO,QAAQ;GACf,QAAQ,MAAM,yCAAyC;IAAE;IAAO;IAAK,CAAC;;;CAI5E,MAAM,cAAc,SAAyD;EAC3E,KAAK,UAAU;EACf,KAAK,UAAU;;CAGjB,MAAM,QAAQ,KAA6B;EACzC,KAAK,KAAK,KAAK,IAAI;EACnB,KAAK,UAAU;;CAGjB,MAAM,SAAwB;EAC5B,IAAI,KAAK,QAAQ,EACf;EAGF,MAAM,IAAI,SAAe,YAAY;GACnC,KAAK,cAAc,IAAI,QAAQ;IAC/B;;CAGJ,WAAyB;EACvB,IAAI,KAAK,WACP;EAGF,KAAK,YAAY;EACjB,qBAAqB;GACnB,KAAK,YAAY;GACjB,KAAK,MAAM;IACX;;CAGJ,OAAqB;EACnB,IAAI,CAAC,KAAK,SAAS;GACjB,KAAK,qBAAqB;GAC1B;;EAGF,OAAO,KAAK,cAAc,KAAK,aAAa;GAC1C,MAAM,QAAQ,KAAK,KAAK,WAAW,QAAQ,CAAC,KAAK,aAAa,IAAI,IAAI,QAAQ,CAAC;GAE/E,IAAI,UAAU,IACZ;GAGF,MAAM,CAAC,OAAO,KAAK,KAAK,OAAO,OAAO,EAAE;GAExC,IAAI,CAAC,KACH;GAGF,KAAK,eAAe;GACpB,KAAK,aAAa,IAAI,IAAI,QAAQ;GAElC,KAAU,QAAQ,IAAI,CACnB,OAAO,UAAU;IAChB,KAAK,QAAQ,OAAO,IAAI;KACxB,CACD,cAAc;IACb,KAAK,eAAe;IACpB,KAAK,aAAa,OAAO,IAAI,QAAQ;IACrC,KAAK,qBAAqB;IAC1B,KAAK,UAAU;KACf;;EAGN,KAAK,qBAAqB;;CAG5B,SAA0B;EACxB,OAAO,KAAK,KAAK,WAAW,KAAK,KAAK,gBAAgB;;CAGxD,sBAAoC;EAClC,IAAI,CAAC,KAAK,QAAQ,EAChB;EAGF,KAAK,MAAM,WAAW,KAAK,eACzB,SAAS;EAGX,KAAK,cAAc,OAAO;;;;;AC3H9B,SAAgB,2BAA2B,QAAsC;CAC/E,MAAM,uBAAO,IAAI,KAA2B;CAE5C,KAAK,MAAM,SAAS,QAClB,KAAK,IAAI,MAAM,IAAI,kBAAkB,MAAM,CAAC;CAG9C,OAAO;EACL,MAAM,SAAS,IAAI;GACjB,MAAM,QAAQ,KAAK,IAAI,GAAG;GAC1B,OAAO,QAAQ,kBAAkB,MAAM,GAAG;;EAE5C,MAAM,aAAa;GACjB,OAAO,MAAM,KAAK,KAAK,QAAQ,CAAC,CAC7B,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC,CACxC,IAAI,kBAAkB;;EAE5B;;AAGH,SAAS,kBAAkB,OAAmC;CAC5D,OAAO;EACL,GAAG;EACH,QAAQ,EAAE,GAAG,MAAM,QAAQ;EAC3B,YAAY,MAAM,WAAW,KAAK,SAAS;GACzC,GAAG;GACH,UAAU,EAAE,GAAG,IAAI,UAAU;GAC9B,EAAE;EACH,QAAQ,MAAM,OAAO,KAAK,SAAS;GACjC,GAAG;GACH,UAAU,EAAE,GAAG,IAAI,UAAU;GAC9B,EAAE;EACH,WAAW,MAAM,UAAU,KAAK,SAAS;GACvC,GAAG;GACH,UAAU,EAAE,GAAG,IAAI,UAAU;GAC9B,EAAE;EACH,UAAU,EAAE,GAAG,MAAM,UAAU;EAC/B,UAAU,IAAI,KAAK,MAAM,SAAS;EACnC;;;;ACsBH,IAAa,oBAAb,MAYA;CACE,QAA6B;CAC7B,WAAkC;CAClC,QAA6B;CAC7B,SAA4B;CAC5B,SAA+B;CAC/B,cAAwC;CACxC,gBAA4C;CAC5C,YAAoC;CACpC,yBAA8D;CAE9D,gCAAiC,IAAI,KAAmC;CACxE,uBAAwB,IAAI,KAAiB;CAC7C,cAA0C,EAAE;CAC5C,YAA2C,EAAE;CAC7C,8BAA+B,IAAI,KAA+B;CAClE,YAAyC,EAAE;CAC3C,gCAAiC,IAAI,KAAoB;CACzD,8BAA+B,IAAI,KAAyB;CAC5D,iBAAgD,EAAE;CAClD,kCAAmC,IAAI,KAA+B;CACtE,mBAAoD,EAAE;CACtD,oCAAqC,IAAI,KAAmC;CAC5E,mCAAoC,IAAI,KAAyC;CACjF,qCAAsC,IAAI,KAAqD;CAE/F,MAAM,mBAAmB,OAA4D;EACnF,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,QAAsB;GAC1B,IAAI,MAAM,MAAM,sBAAsB;GACtC,aAAa,MAAM;GACnB,kBAAkB,MAAM,oBAAoB;GAC5C,OAAO,MAAM,SAAS,EAAE;GACxB,aAAa;GACb,MAAM,MAAM,QAAQ;GACpB,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACZ;EAED,KAAK,cAAc,IAAI,MAAM,IAAI,kBAAkB,MAAM,CAAC;EAC1D,OAAO,kBAAkB,MAAM;;CAGjC,MAAM,gBAAgB,IAAkD;EACtE,MAAM,QAAQ,KAAK,cAAc,IAAI,GAAG;EACxC,OAAO,QAAQ,kBAAkB,MAAM,GAAG;;CAG5C,MAAM,mBACJ,IACA,OACuB;EACvB,MAAM,WAAW,KAAK,cAAc,IAAI,GAAG;EAE3C,IAAI,CAAC,UACH,MAAM,SAAS,0BAA0B,EAAE,SAAS,IAAI,CAAC;EAG3D,MAAM,UAAwB;GAC5B,GAAG;GACH,GAAG;GACH;GACA,WAAW,SAAS;GACpB,2BAAW,IAAI,MAAM;GACtB;EAED,KAAK,cAAc,IAAI,IAAI,kBAAkB,QAAQ,CAAC;EACtD,OAAO,kBAAkB,QAAQ;;CAGnC,MAAM,UAAU,OAA0C;EACxD,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,MAAW;GACf,IAAI,MAAM,MAAM,aAAa;GAC7B,SAAS,MAAM;GACf,aAAa,MAAM;GACnB,kBAAkB,MAAM,oBAAoB;GAC5C,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,MAAM,MAAM,QAAQ;GACpB,iBAAiB;GACjB,eAAe;GACf,cAAc;GACd,OAAO;GACP,UAAU,MAAM,YAAY,EAAE;GAC9B,UAAU;GACV,WAAW;GACX,aAAa;GACb,WAAW;GACX,WAAW;GACZ;EAED,KAAK,KAAK,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC;EACpC,OAAO,SAAS,IAAI;;CAGtB,MAAM,OAAO,IAAgC;EAC3C,MAAM,MAAM,KAAK,KAAK,IAAI,GAAG;EAC7B,OAAO,MAAM,SAAS,IAAI,GAAG;;CAG/B,MAAM,UAAU,IAAW,OAA6D;EACtF,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG;EAElC,IAAI,CAAC,UACH,MAAM,SAAS,iBAAiB,EAAE,OAAO,IAAI,CAAC;EAGhD,MAAM,UAAe;GACnB,GAAG;GACH,GAAG;GACH;GACA,WAAW,SAAS;GACpB,2BAAW,IAAI,MAAM;GACtB;EAED,KAAK,KAAK,IAAI,IAAI,SAAS,QAAQ,CAAC;EACpC,OAAO,SAAS,QAAQ;;CAG1B,MAAM,gBAAgB,SAAyC;EAC7D,OAAO,MAAM,KAAK,KAAK,KAAK,QAAQ,CAAC,CAClC,QAAQ,QAAQ,IAAI,YAAY,QAAQ,CACxC,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC,CAC7D,IAAI,SAAS;;CAGlB,MAAM,cAAc,OAA6C;EAC/D,MAAM,UAAmB;GACvB,IAAI,MAAM,MAAM,iBAAiB;GACjC,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,aAAa,MAAM,eAAe;GAClC,MAAM,MAAM,QAAQ;GACpB,UAAU,MAAM,YAAY,EAAE;GAC9B,2BAAW,IAAI,MAAM;GACtB;EAED,KAAK,YAAY,KAAK,aAAa,QAAQ,CAAC;EAC5C,OAAO,aAAa,QAAQ;;CAG9B,MAAM,aAAa,SAAyB,UAA8B,EAAE,EAAsB;EAChG,MAAM,WAAW,KAAK,YACnB,QAAQ,YAAY,QAAQ,YAAY,QAAQ,CAChD,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC;EAGhE,QADgB,QAAQ,UAAU,KAAA,IAAY,WAAW,SAAS,MAAM,KAAK,IAAI,GAAG,SAAS,SAAS,QAAQ,MAAM,CAAC,EACtG,IAAI,aAAa;;CAGlC,MAAM,iBAAiB,OAAmD;EACxE,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,QAAoB;GACxB,IAAI,MAAM,MAAM,oBAAoB;GACpC,SAAS,MAAM;GACf,MAAM,MAAM,MAAM;GAClB,OAAO,WAAW,MAAM,MAAM;GAC9B,QAAQ;GACR,OAAO;GACP,MAAM,MAAM,QAAQ;GACpB,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACX,WAAW;GACX,aAAa;GACb,UAAU;GACV,OAAO;GACR;EAED,KAAK,UAAU,KAAK,gBAAgB,MAAM,CAAC;EAC3C,KAAK,YAAY,IAAI,MAAM,IAAI,gBAAgB,MAAM,CAAC;EACtD,OAAO,gBAAgB,MAAM;;CAG/B,MAAM,cAAc,IAA8C;EAChE,MAAM,QAAQ,KAAK,YAAY,IAAI,GAAG;EACtC,OAAO,QAAQ,gBAAgB,MAAM,GAAG;;CAG1C,MAAM,gBACJ,SACA,UAA4F,EAAE,EACvE;EACvB,MAAM,SAAS,KAAK,UACjB,QAAQ,UAAU,MAAM,YAAY,QAAQ,CAC5C,QAAQ,UAAU,QAAQ,WAAW,KAAA,KAAa,MAAM,WAAW,QAAQ,OAAO,CAClF,QAAQ,UAAU,QAAQ,UAAU,KAAA,KAAa,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC,CACpF,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC;EAGhE,QADgB,QAAQ,UAAU,KAAA,IAAY,SAAS,OAAO,MAAM,GAAG,QAAQ,MAAM,EACtE,IAAI,gBAAgB;;CAGrC,MAAM,wBACJ,SACA,UAAiE,EAAE,EAC5C;EACvB,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAU,KAAK,UAClB,QAAQ,UAAU,MAAM,YAAY,WAAW,MAAM,WAAW,UAAU,CAC1E,QAAQ,UAAU,QAAQ,UAAU,KAAA,KAAa,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC,CACpF,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC;EAGhE,QAFiB,QAAQ,UAAU,KAAA,IAAY,UAAU,QAAQ,MAAM,GAAG,QAAQ,MAAM,EAExE,KAAK,UAAU;GAO7B,OAAO,gBANS,KAAK,kBAAkB;IACrC,GAAG;IACH,QAAQ;IACR,WAAW;IACX,WAAW;IACZ,CAC6B,CAAC;IAC/B;;CAGJ,MAAM,yBAAyB,KAAqB,OAAqC;EACvF,MAAM,sBAAM,IAAI,MAAM;EACtB,OAAO,IAAI,KAAK,OACd,gBACE,KAAK,kBAAkB;GACrB,GAAG,KAAK,qBAAqB,GAAG;GAChC,QAAQ;GACR;GACA,aAAa;GACb,WAAW;GACX,OAAO;GACR,CAAC,CACH,CACF;;CAGH,MAAM,sBAAsB,KAAqB,OAAwC;EACvF,MAAM,sBAAM,IAAI,MAAM;EACtB,OAAO,IAAI,KAAK,OACd,gBACE,KAAK,kBAAkB;GACrB,GAAG,KAAK,qBAAqB,GAAG;GAChC,QAAQ;GACR,UAAU;GACV,WAAW;GACX;GACD,CAAC,CACH,CACF;;CAGH,MAAM,eAAe,OAA+C;EAClE,MAAM,OAAO,KAAK,cAAc,IAAI,MAAM,MAAM,IAAI,KAAK;EACzD,KAAK,cAAc,IAAI,MAAM,OAAO,IAAI;EAExC,MAAM,QAAkB;GACtB,IAAI,MAAM,MAAM,kBAAkB;GAClC,OAAO,MAAM;GACb;GACA,MAAM,MAAM;GACZ,SAAS,MAAM,WAAW,EAAE;GAC5B,YAAY,MAAM,cAAc,EAAE;GAClC,2BAAW,IAAI,MAAM;GACtB;EAED,KAAK,UAAU,KAAK,cAAc,MAAM,CAAC;EACzC,OAAO,cAAc,MAAM;;CAG7B,MAAM,cAAc,OAAc,UAA8C,EAAE,EAAuB;EACvG,MAAM,QAAQ,QAAQ,SAAS;EAC/B,MAAM,SAAS,KAAK,UACjB,QAAQ,UAAU,MAAM,UAAU,SAAS,MAAM,MAAM,MAAM,CAC7D,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI;EAGhC,QADgB,QAAQ,UAAU,KAAA,IAAY,SAAS,OAAO,MAAM,GAAG,QAAQ,MAAM,EACtE,IAAI,cAAc;;CAGnC,MAAM,UAAU,OAA4C;EAC1D,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,WAAW,MAAM,KAAK,KAAK,YAAY,IAAI,MAAM,GAAG,GAAG,KAAA;EAC7D,MAAM,OAAmB;GACvB,IAAI,MAAM,MAAM,gBAAgB;GAChC,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,YAAY,MAAM;GAClB,YAAY,MAAM,cAAc;GAChC,YAAY,MAAM,cAAc;GAChC,cAAc,MAAM,gBAAgB;GACpC,WAAW,MAAM,aAAa;GAC9B,WAAW,UAAU,aAAa;GAClC,WAAW;GACZ;EAED,KAAK,YAAY,IAAI,KAAK,IAAI,gBAAgB,KAAK,CAAC;EACpD,OAAO,gBAAgB,KAAK;;CAG9B,MAAM,aAAa,OAAiD;EAClE,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,QAAQ,MAAM,OAAO,MAAM,CAAC,aAAa;EAC/C,MAAM,OAAO,MAAM,QAAQ;EAC3B,MAAM,SAAS,MAAM,UAAU,EAAE;EAEjC,OAAO,MAAM,KAAK,KAAK,YAAY,QAAQ,CAAC,CACzC,QAAQ,SAAS,KAAK,cAAc,QAAQ,KAAK,UAAU,SAAS,GAAG,IAAI,CAC3E,QAAQ,SAAS,OAAO,WAAW,KAAK,OAAO,MAAM,UAAU,UAAU,OAAO,KAAK,MAAM,CAAC,CAAC,CAC7F,KAAK,UAAU;GACd;GACA,OAAO,YAAY,MAAM,MAAM;GAChC,EAAE,CACF,QAAQ,EAAE,YAAY,QAAQ,KAAK,CAAC,MAAM,CAC1C,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAU,SAAS,GAAG,EAAE,KAAK,UAAU,SAAS,CAAC,CAC5F,MAAM,GAAG,KAAK,CACd,KAAK,EAAE,WAAW,gBAAgB,KAAK,CAAC;;CAG7C,MAAM,iBAAiB,OAAwD;EAC7E,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAsB;GAC1B,IAAI,MAAM,MAAM,oBAAoB;GACpC,SAAS,MAAM;GACf,cAAc,MAAM;GACpB,YAAY,MAAM,cAAc;GAChC,YAAY,WAAW,MAAM,WAAW;GACxC,QAAQ;GACR,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EAED,KAAK,eAAe,KAAK,gBAAgB,QAAQ,CAAC;EAClD,KAAK,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,QAAQ,CAAC;EAC9D,OAAO,gBAAgB,QAAQ;;CAGjC,MAAM,cAAc,IAA8C;EAChE,MAAM,UAAU,KAAK,gBAAgB,IAAI,GAAG;EAC5C,OAAO,UAAU,gBAAgB,QAAQ,GAAG;;CAG9C,MAAM,gBACJ,SACA,UAA6D,EAAE,EACxC;EACvB,MAAM,SAAS,QAAQ,UAAU;EACjC,OAAO,KAAK,eACT,QAAQ,YAAY,QAAQ,YAAY,QAAQ,CAChD,QAAQ,YAAY,WAAW,SAAS,QAAQ,WAAW,OAAO,CAClE,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC,CAC7D,IAAI,gBAAgB;;CAGzB,MAAM,iBAAiB,IAAuC;EAC5D,MAAM,WAAW,KAAK,gBAAgB,IAAI,GAAG;EAE7C,IAAI,CAAC,UACH,MAAM,SAAS,wBAAwB,EAAE,WAAW,IAAI,CAAC;EAG3D,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAsB;GAC1B,GAAG;GACH,QAAQ;GACR,WAAW;GACX,WAAW,SAAS,aAAa;GAClC;EAED,KAAK,kBAAkB,QAAQ;EAC/B,OAAO,gBAAgB,QAAQ;;CAGjC,MAAM,mBAAmB,OAA4D;EACnF,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAwB;GAC5B,IAAI,MAAM,MAAM,sBAAsB;GACtC,SAAS,MAAM;GACf,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,SAAS,MAAM,WAAW;GAC1B,QAAQ,EAAE,GAAG,MAAM,QAAQ;GAC3B,iBAAiB,MAAM,oBAAoB,KAAA,IAAY,EAAE,GAAG,WAAW,MAAM,gBAAgB;GAC7F,QAAQ;GACR,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EAED,KAAK,iBAAiB,KAAK,kBAAkB,QAAQ,CAAC;EACtD,KAAK,kBAAkB,IAAI,QAAQ,IAAI,kBAAkB,QAAQ,CAAC;EAClE,OAAO,kBAAkB,QAAQ;;CAGnC,MAAM,gBAAgB,IAAkD;EACtE,MAAM,UAAU,KAAK,kBAAkB,IAAI,GAAG;EAC9C,OAAO,UAAU,kBAAkB,QAAQ,GAAG;;CAGhD,MAAM,kBACJ,SACA,UAA+D,EAAE,EACxC;EACzB,MAAM,SAAS,QAAQ,UAAU;EACjC,OAAO,KAAK,iBACT,QAAQ,YAAY,QAAQ,YAAY,QAAQ,CAChD,QAAQ,YAAY,WAAW,SAAS,QAAQ,WAAW,OAAO,CAClE,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC,CAC7D,IAAI,kBAAkB;;CAG3B,MAAM,mBAAmB,IAA2C;EAClE,MAAM,WAAW,KAAK,kBAAkB,IAAI,GAAG;EAE/C,IAAI,CAAC,UACH,MAAM,SAAS,0BAA0B,EAAE,WAAW,IAAI,CAAC;EAG7D,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAwB;GAC5B,GAAG;GACH,QAAQ;GACR,WAAW;GACX,WAAW,SAAS,aAAa;GAClC;EAED,KAAK,oBAAoB,QAAQ;EACjC,OAAO,kBAAkB,QAAQ;;CAGnC,MAAM,sBAAsB,OAAkE;EAC5F,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAA2B;GAC/B,IAAI,MAAM,MAAM,yBAAyB;GACzC,SAAS,MAAM;GACf,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,OAAO,WAAW,MAAM,MAAM;GAC9B,QAAQ;GACR,aAAa,MAAM,eAAe;GAClC,WAAW;GACX,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EAED,KAAK,iBAAiB,IAAI,QAAQ,IAAI,qBAAqB,QAAQ,CAAC;EACpE,OAAO,qBAAqB,QAAQ;;CAGtC,MAAM,mBAAmB,IAAwD;EAC/E,MAAM,UAAU,KAAK,iBAAiB,IAAI,GAAG;EAC7C,OAAO,UAAU,qBAAqB,QAAQ,GAAG;;CAGnD,MAAM,qBACJ,OACA,UAAkE,EAAE,EACxC;EAC5B,MAAM,SAAS,QAAQ,UAAU;EACjC,OAAO,MAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC,CAC9C,QAAQ,YAAY,QAAQ,UAAU,MAAM,CAC5C,QAAQ,YAAY,WAAW,SAAS,QAAQ,WAAW,OAAO,CAClE,MAAM,GAAG,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,UAAU,SAAS,CAAC,CAC7D,IAAI,qBAAqB;;CAG9B,MAAM,sBAAsB,OAAkE;EAC5F,MAAM,WAAW,KAAK,iBAAiB,IAAI,MAAM,GAAG;EAEpD,IAAI,CAAC,UACH,MAAM,SAAS,6BAA6B,EAAE,mBAAmB,MAAM,IAAI,CAAC;EAG9E,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAA2B;GAC/B,GAAG;GACH,QAAQ,MAAM;GACd,WAAW,MAAM,aAAa;GAC9B,UAAU;IACR,GAAG,SAAS;IACZ,GAAI,MAAM,YAAY,EAAE;IACzB;GACD,WAAW;GACX,WAAW;GACZ;EAED,KAAK,iBAAiB,IAAI,MAAM,IAAI,qBAAqB,QAAQ,CAAC;EAClE,OAAO,qBAAqB,QAAQ;;CAGtC,MAAM,4BAA4B,OAA8E;EAC9G,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,YAAmC;GACvC,IAAI,MAAM,MAAM,+BAA+B;GAC/C,SAAS,MAAM;GACf,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,YAAY,MAAM,cAAc;GAChC,QAAQ;GACR,cAAc,MAAM,gBAAgB;GACpC,MAAM,MAAM,QAAQ;GACpB,QAAQ;GACR,OAAO;GACP,UAAU,MAAM,YAAY,EAAE;GAC9B,WAAW;GACX,WAAW;GACX,aAAa;GACd;EAED,KAAK,mBAAmB,IAAI,UAAU,IAAI,2BAA2B,UAAU,CAAC;EAChF,OAAO,2BAA2B,UAAU;;CAG9C,MAAM,yBAAyB,IAAoE;EACjG,MAAM,YAAY,KAAK,mBAAmB,IAAI,GAAG;EACjD,OAAO,YAAY,2BAA2B,UAAU,GAAG;;CAG7D,MAAM,8BAA8B,OAAgF;EAClH,MAAM,WAAW,KAAK,mBAAmB,IAAI,MAAM,GAAG;EAEtD,IAAI,CAAC,UACH,MAAM,SAAS,mCAAmC,EAAE,aAAa,MAAM,IAAI,CAAC;EAG9E,IAAI,SAAS,WAAW,WACtB,OAAO,2BAA2B,SAAS;EAG7C,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,UAAiC;GACrC,GAAG;GACH,QAAQ,MAAM;GACd,QAAQ,MAAM,UAAU;GACxB,OAAO,MAAM,SAAS;GACtB,UAAU;IACR,GAAG,SAAS;IACZ,GAAI,MAAM,YAAY,EAAE;IACzB;GACD,WAAW;GACX,aAAa;GACd;EAED,KAAK,mBAAmB,IAAI,QAAQ,IAAI,2BAA2B,QAAQ,CAAC;EAC5E,OAAO,2BAA2B,QAAQ;;CAG5C,kBAA0B,SAAiC;EACzD,MAAM,QAAQ,KAAK,UAAU,WAAW,UAAU,MAAM,OAAO,QAAQ,GAAG;EAE1E,IAAI,UAAU,IACZ,MAAM,SAAS,wBAAwB,EAAE,cAAc,QAAQ,IAAI,CAAC;EAGtE,KAAK,UAAU,SAAS,gBAAgB,QAAQ;EAChD,KAAK,YAAY,IAAI,QAAQ,IAAI,gBAAgB,QAAQ,CAAC;EAC1D,OAAO,gBAAgB,QAAQ;;CAGjC,qBAA6B,IAA8B;EACzD,MAAM,QAAQ,KAAK,YAAY,IAAI,GAAG;EAEtC,IAAI,CAAC,OACH,MAAM,SAAS,wBAAwB,EAAE,cAAc,IAAI,CAAC;EAG9D,OAAO,gBAAgB,MAAM;;CAG/B,kBAA0B,SAAiC;EACzD,MAAM,QAAQ,KAAK,eAAe,WAAW,YAAY,QAAQ,OAAO,QAAQ,GAAG;EAEnF,IAAI,UAAU,IACZ,MAAM,SAAS,wBAAwB,EAAE,WAAW,QAAQ,IAAI,CAAC;EAGnE,KAAK,eAAe,SAAS,gBAAgB,QAAQ;EACrD,KAAK,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,QAAQ,CAAC;EAC9D,OAAO,gBAAgB,QAAQ;;CAGjC,oBAA4B,SAAqC;EAC/D,MAAM,QAAQ,KAAK,iBAAiB,WAAW,YAAY,QAAQ,OAAO,QAAQ,GAAG;EAErF,IAAI,UAAU,IACZ,MAAM,SAAS,0BAA0B,EAAE,WAAW,QAAQ,IAAI,CAAC;EAGrE,KAAK,iBAAiB,SAAS,kBAAkB,QAAQ;EACzD,KAAK,kBAAkB,IAAI,QAAQ,IAAI,kBAAkB,QAAQ,CAAC;EAClE,OAAO,kBAAkB,QAAQ;;;AAIrC,SAAS,YAAY,MAAkB,OAAmC;CACxE,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,UAAU,KAAK,QAAQ,aAAa;CAC1C,MAAM,aAAa,SAAS,QAAQ,SAAS,MAAM,GAAG,IAAI;CAC1D,OAAO,aAAa,aAAa;;AAGnC,SAAS,UAAU,GAAgB,GAAyB;CAC1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;;AAGzC,SAAS,SAAS,SAAiB,SAA6C;CAC9E,OAAO,IAAI,UAAU;EACnB,MAAM;EACN,OAAO;EACP;EACA,QAAQ;EACR;EACD,CAAC;;AAGJ,SAAS,kBAAkB,OAAmC;CAC5D,OAAO;EACL,GAAG;EACH,OAAO,EAAE,GAAG,MAAM,OAAO;EACzB,UAAU,EAAE,GAAG,MAAM,UAAU;EAC/B,MAAM,MAAM,OAAO,EAAE,GAAG,MAAM,MAAM,GAAG;EACvC,WAAW,IAAI,KAAK,MAAM,UAAU;EACpC,WAAW,IAAI,KAAK,MAAM,UAAU;EACrC;;AAGH,SAAS,SAAS,KAAe;CAC/B,OAAO;EACL,GAAG;EACH,OAAO,WAAW,IAAI,MAAM;EAC5B,MAAM,IAAI,OAAO,EAAE,GAAG,IAAI,MAAM,GAAG;EACnC,iBAAiB,IAAI,kBAAkB,WAAW,IAAI,gBAAgB,GAAG;EACzE,eAAe,IAAI,gBAAgB,WAAW,IAAI,cAAc,GAAG;EACnE,cAAc,IAAI,eAAe,WAAW,IAAI,aAAa,GAAG;EAChE,OAAO,IAAI,QAAQ,WAAW,IAAI,MAAM,GAAG;EAC3C,UAAU,EAAE,GAAG,IAAI,UAAU;EAC7B,UAAU,IAAI,KAAK,IAAI,SAAS;EAChC,WAAW,IAAI,YAAY,IAAI,KAAK,IAAI,UAAU,GAAG;EACrD,aAAa,IAAI,cAAc,IAAI,KAAK,IAAI,YAAY,GAAG;EAC3D,WAAW,IAAI,KAAK,IAAI,UAAU;EAClC,WAAW,IAAI,KAAK,IAAI,UAAU;EACnC;;AAGH,SAAS,aAAa,SAA2B;CAC/C,OAAO;EACL,GAAG;EACH,MAAM,QAAQ,OAAO,EAAE,GAAG,QAAQ,MAAM,GAAG;EAC3C,UAAU,EAAE,GAAG,QAAQ,UAAU;EACjC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACvC;;AAGH,SAAS,gBAAgB,OAA+B;CACtD,OAAO;EACL,GAAG;EACH,OAAO,WAAW,MAAM,MAAM;EAC9B,MAAM,MAAM,OAAO,EAAE,GAAG,MAAM,MAAM,GAAG;EACvC,UAAU,EAAE,GAAG,MAAM,UAAU;EAC/B,WAAW,IAAI,KAAK,MAAM,UAAU;EACpC,WAAW,IAAI,KAAK,MAAM,UAAU;EACpC,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,UAAU,GAAG;EACzD,aAAa,MAAM,cAAc,IAAI,KAAK,MAAM,YAAY,GAAG;EAC/D,UAAU,MAAM,WAAW,IAAI,KAAK,MAAM,SAAS,GAAG;EACtD,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,GAAG;EAChD;;AAGH,SAAS,cAAc,OAA2B;CAChD,OAAO;EACL,GAAG;EACH,SAAS,WAAW,MAAM,QAAQ;EAClC,YAAY,MAAM,WAAW,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE;EACvD,WAAW,IAAI,KAAK,MAAM,UAAU;EACrC;;AAGH,SAAS,gBAAgB,MAA8B;CACrD,OAAO;EACL,GAAG;EACH,OAAO,EAAE,GAAG,KAAK,OAAO;EACxB,YAAY,KAAK,WAAW,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE;EACtD,WAAW,KAAK,YAAY,IAAI,KAAK,KAAK,UAAU,GAAG;EACvD,WAAW,IAAI,KAAK,KAAK,UAAU;EACnC,WAAW,IAAI,KAAK,KAAK,UAAU;EACpC;;AAGH,SAAS,gBAAgB,SAAiC;CACxD,OAAO;EACL,GAAG;EACH,YAAY,WAAW,QAAQ,WAAW;EAC1C,UAAU,EAAE,GAAG,QAAQ,UAAU;EACjC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,QAAQ,YAAY,IAAI,KAAK,QAAQ,UAAU,GAAG;EAC9D;;AAGH,SAAS,kBAAkB,SAAqC;CAC9D,OAAO;EACL,GAAG;EACH,QAAQ,EAAE,GAAG,QAAQ,QAAQ;EAC7B,iBAAiB,WAAW,QAAQ,gBAAgB;EACpD,UAAU,EAAE,GAAG,QAAQ,UAAU;EACjC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,QAAQ,YAAY,IAAI,KAAK,QAAQ,UAAU,GAAG;EAC9D;;AAGH,SAAS,qBAAqB,SAA2C;CACvE,OAAO;EACL,GAAG;EACH,OAAO,WAAW,QAAQ,MAAM;EAChC,aAAa,QAAQ,cAAc,EAAE,GAAG,QAAQ,aAAa,GAAG;EAChE,WAAW,QAAQ,YAAY,EAAE,GAAG,QAAQ,WAAW,GAAG;EAC1D,UAAU,EAAE,GAAG,QAAQ,UAAU;EACjC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,IAAI,KAAK,QAAQ,UAAU;EACtC,WAAW,QAAQ,YAAY,IAAI,KAAK,QAAQ,UAAU,GAAG;EAC9D;;AAGH,SAAS,2BAA2B,WAAyD;CAC3F,OAAO;EACL,GAAG;EACH,MAAM,UAAU,OAAO,EAAE,GAAG,UAAU,MAAM,GAAG;EAC/C,QAAQ,WAAW,UAAU,OAAO;EACpC,OAAO,UAAU,QAAQ,WAAW,UAAU,MAAM,GAAG;EACvD,UAAU,EAAE,GAAG,UAAU,UAAU;EACnC,WAAW,IAAI,KAAK,UAAU,UAAU;EACxC,WAAW,IAAI,KAAK,UAAU,UAAU;EACxC,aAAa,UAAU,cAAc,IAAI,KAAK,UAAU,YAAY,GAAG;EACxE;;AAGH,SAAS,WAAc,OAAa;CAClC,OAAO,gBAAgB,MAAM;;;;ACjjB/B,IAAa,gCAAb,MAA4F;CAC1F,MAAM,SAAS,KAAyE;EACtF,MAAM,cAAc,MAAM,IAAI,SAAS,qBAAqB;GAC1D,MAAM,IAAI;GACV,OAAO,IAAI;GACX,KAAK,IAAI;GACT,SAAS,IAAI;GACb,KAAK,IAAI;GACV,CAAC;EACF,MAAM,UAAU,IAAI,QAAQ;GAC1B,gBAAgB;GAChB,QAAQ;GACT,CAAC;EAEF,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,WAAW,EAAE,CAAC,EACnE,QAAQ,IAAI,KAAK,MAAM;EAGzB,MAAM,QAAQ,WAAW,QAAQ,cAAc,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ;EACjF,MAAM,cAA2B;GAC/B,QAAQ;GACR;GACA,MAAM,KAAK,UAAU;IACnB,SAAS;IACT,IAAI;IACJ,QAAQ;IACR,QAAQ;KACN,MAAM,IAAI,aAAa;KACvB,WAAW,IAAI,SAAS,EAAE;KAC3B;IACF,CAAC;GACH;EAED,IAAI,IAAI,WAAW,KAAA,GACjB,YAAY,SAAS,IAAI;EAG3B,MAAM,WAAW,MAAM,MAAM,IAAI,SAAS,UAAU,YAAY;EAEhE,MAAM,UAAU,MAAM,SAAS,MAAM;EACrC,MAAM,SAAS,qBAAqB,SAAS,SAAS,QAAQ,IAAI,eAAe,CAAC;EAElF,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,4BAA4B,SAAS,OAAO;GACrD,QAAQ;GACR,SAAS;IACP,QAAQ,IAAI,aAAa;IACzB,WAAW,IAAI,QAAQ;IACvB,QAAQ,SAAS;IACjB,MAAM,UAAU;IACjB;GACF,CAAC;EAGJ,IAAI,eAAe,OAAO,EACxB,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS;GACT,QAAQ;GACR,SAAS;IACP,QAAQ,IAAI,aAAa;IACzB,WAAW,IAAI,QAAQ;IACvB,OAAO,OAAO;IACf;GACF,CAAC;EAGJ,IAAI,SAAS,OAAO,IAAI,YAAY,QAClC,OAAO,OAAO;EAGhB,OAAO;;;AAIX,SAAgB,WAA2B,SAAqD;CAC9F,MAAM,SAAS,QAAQ,UAAU,IAAI,mBAAmB;CACxD,MAAM,QACJ,QAAQ,SACR,IAAI,eAAe,EACjB,aAAa,QAAQ,WAAW,eAAe,GAChD,CAAC;CACJ,MAAM,WAAW,QAAQ,YAAY,IAAI,oBAA0B;CACnE,MAAM,WAAW,2BAA2B,QAAQ,OAAO;CAC3D,MAAM,cAAc,QAAQ,KAAK,YAAY;CAC7C,MAAM,kBAAkB,QAAQ,KAAK,gBAAgB,IAAI,+BAAqC;CAC9F,MAAM,eAAe,QAAQ,QAAQ,WAAW,2BAA2B,EAAE,CAAC;CAC9E,MAAM,WAAW,IAAI,iBAAiB;CACtC,MAAM,MAAO,QAAQ,OAAO,EAAE;CAC9B,MAAM,mCAAmB,IAAI,KAA6B;CAC1D,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;CACjD,MAAM,iBAAiB;EACrB,iBAAiB,yBAAyB,QAAQ,OAAO,gBAAgB;EACzE,eAAe,QAAQ,OAAO,iBAAiB;EAChD;CACD,IAAI,kBAAkB;CAEtB,MAAM,UAA6B;EACjC;EACA;EACA,QAAQ;GACN,MAAM,OAAO,OAAO;IAClB,MAAM,OAAO,MAAM,mBAAmB,UAAU,MAAM,MAAM,MAAM,QAAQ,KAAK;IAC/E,MAAM,gBAAgB,MAAM,+BAA+B,MAAM,MAAM,UAAU,EAAE,CAAC;IACpF,MAAM,QAAQ,MAAM,OAAO,MAAM,mBAAmB;KAClD,aAAa,KAAK;KAClB,kBAAkB,KAAK;KACvB,OAAO,MAAM;KACb,MAAM,MAAM,QAAQ;KACpB,UAAU,MAAM;KACjB,CAAC;IAEF,KAAK,MAAM,gBAAgB,eACzB,MAAM,OAAO,cAAc,mBAAmB;KAC5C,SAAS,MAAM;KACf,SAAS,aAAa;KACtB,MAAM,aAAa;KACnB,SAAS,aAAa;KACtB,QAAQ,aAAa;KACrB,iBAAiB,EAAE;KACnB,UAAU,EACR,aAAa,aAAa,aAC3B;KACF,CAAC;IAGJ,OAAO;;GAET,MAAM,aAAa,OAAO;IACxB,MAAM,QAAQ,MAAM,QAAQ,OAAO,OAAO,MAAM;IAChD,MAAM,WAAW,kBAAkB,MAAM,MAAM;IAC/C,MAAM,WAAW,MAAM,sBAAsB;KAC3C,SAAS,MAAM;KACf,OAAO;KACP,MAAM,MAAM,QAAQ;KACpB,UAAU,MAAM;KAChB,iBAAiB;MACf,GAAI,MAAM,YAAY,EAAE;MACxB,UAAU;MACX;KACF,CAAC;IACF,MAAM,MAAM,MAAM,cAAc,MAAM,GAAG;IAEzC,IAAI,CAAC,KACH,MAAM,IAAI,UAAU;KAClB,MAAM;KACN,OAAO;KACP,SAAS,gBAAgB,MAAM,GAAG;KAClC,QAAQ;KACR,SAAS;MACP,SAAS,MAAM;MACf,cAAc,SAAS,WAAW;MACnC;KACF,CAAC;IAGJ,OAAO;KACL;KACA;KACA,SAAS,SAAS;KAClB,YAAY,SAAS;KACrB,UAAU,MAAM;KAChB,eAAe,MAAM;KACrB,QAAQ,IAAI;KACb;;GAEH,MAAM,cAAc,OAAO;IACzB,MAAM,gBAAgB,QAAQ,MAAM,QAAQ;IAC5C,MAAM,WAAW,MAAM,sBAAsB;KAC3C,SAAS,MAAM;KACf,OAAO;MACL,MAAM,MAAM,QAAQ;MACpB,MAAM,MAAM;MACb;KACD,MAAM,MAAM,QAAQ;KACpB,UAAU,MAAM;KAChB,iBAAiB,MAAM;KACxB,CAAC;IACF,MAAM,iBAAiB,MAAM,YAAY;IAEzC,IAAI,CAAC,SAAS,SACZ,MAAM,IAAI,UAAU;KAClB,MAAM;KACN,OAAO;KACP,SAAS;KACT,QAAQ;KACR,SAAS;MACP,SAAS,MAAM;MACf,cAAc,SAAS,WAAW;MACnC;KACF,CAAC;IAGJ,MAAM,aAAa,iBACf,MAAM,oBAAoB,MAAM,SAAS,SAAS,WAAW,GAC7D,SAAS;IAEb,OAAO;KACL,SAAS,SAAS;KAClB;KACA,YAAY,SAAS,QAAQ;KAC7B,gBAAgB,WAAW;KAC3B,WAAW;KACZ;;GAEH,SAAS,SAAS;IAChB,OAAO,cAAc,QAAQ;;GAE/B,IAAI,SAAS;IACX,OAAO,OAAO,MAAM,gBAAgB,QAAQ;;GAE9C,MAAM,cAAc,OAAO;IACzB,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,MAAM,QAAQ;IAC1D,MAAM,OAAO,MAAM,mBAAmB,UAAU,MAAM,aAAa,MAAM,QAAQ,MAAM,KAAK;IAC5F,MAAM,YAAY,oBAAoB;IACtC,MAAM,sBAAM,IAAI,MAAM;IACtB,MAAM,QAAoB;KACxB,IAAI;KACJ,SAAS,MAAM;KACf,cAAc,MAAM;KACpB,YAAY,MAAM,cAAc;KAChC,YAAY,MAAM,QAAQ,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,WAAW,GAAG,MAAM;KAC5E,QAAQ;KACR,UAAU,MAAM,YAAY,EAAE;KAC9B,WAAW;KACX,WAAW;KACX,WAAW;KACZ;IAED,iBAAiB,MAAM,MAAM;IAQ7B,mBAAmB,OAAO,MAPH,yBAAyB;KAC9C,UAAU;KACV,MAAM,MAAM,QAAQ,MAAM;KAC1B;KACA,SAAS;KACT;KACD,CAAC,CACiC;IAEnC,OAAO,OAAO,YAAY,iBAAiB;KACzC,IAAI;KACJ,SAAS,MAAM;KACf,cAAc,MAAM;KACpB,YAAY,MAAM,cAAc;KAChC,YAAY,MAAM,QAAQ,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,WAAW,GAAG,MAAM;KAC5E,UAAU,MAAM;KACjB,CAAC;;GAEJ,MAAM,gBAAgB,SAAS;IAC7B,MAAM,gBAAgB,QAAQ,QAAQ;IACtC,OAAO,OAAO,YAAY,gBAAgB,QAAQ;;GAEpD,MAAM,iBAAiB,OAAO;IAC5B,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,MAAM,QAAQ;IAC1D,MAAM,UAAU,MAAM,OAAO,YAAY,cAAc,MAAM,UAAU;IAEvE,IAAI,CAAC,WAAW,QAAQ,YAAY,MAAM,IACxC,MAAM,IAAI,UAAU;KAClB,MAAM;KACN,OAAO;KACP,SAAS,cAAc,MAAM,UAAU;KACvC,QAAQ;KACR,SAAS;MACP,SAAS,MAAM;MACf,WAAW,MAAM;MAClB;KACF,CAAC;IAGJ,OAAO,OAAO,YAAY,iBAAiB,MAAM,UAAU;;GAE9D;EACD,MAAM;GACJ,MAAM,OAAO,OAAO;IAClB,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,MAAM,QAAQ;IAC1D,OAAO,kBAAkB;KACvB;KACA,OAAO,kBAAkB,MAAM,MAAM;KACrC,MAAM,MAAM,QAAQ,MAAM;KAC1B,UAAU,MAAM;KAChB,SAAS,MAAM,WAAW;KAC3B,CAAC;;GAEJ,IAAI,OAAO;IACT,OAAO,OAAO,MAAM,OAAO,MAAM;;GAEnC,MAAM,OAAO,OAAO;IAClB,OAAO,UAAU,MAAM;;GAE1B;EACD,UAAU;GACR,OAAO,OAAO;IACZ,OAAO,OAAO,SAAS,cAAc;KACnC,SAAS,MAAM;KACf,MAAM,MAAM;KACZ,SAAS,MAAM;KACf,MAAM,MAAM,QAAQ;KACpB,UAAU,MAAM;KACjB,CAAC;;GAEJ,KAAK,SAAS,aAAa;IACzB,OAAO,OAAO,SAAS,aAAa,SAAS,YAAY;;GAE5D;EACD,WAAW;GACT,IAAI,mBAAmB;IACrB,OAAO,OAAO,UAAU,mBAAmB,kBAAkB;;GAE/D,KAAK,OAAO;IACV,OAAO,OAAO,UAAU,qBAAqB,MAAM;;GAErD,MAAM,OAAO,OAAO;IAClB,MAAM,UAAU,MAAM,OAAO,UAAU,sBAAsB;KAC3D,IAAI,MAAM;KACV,UAAU,MAAM;KAChB,WAAW,MAAM,QAAQ;KACzB,UAAU,MAAM;KACjB,CAAC;IACF,MAAM,OAAO,OAAO,eAAe;KACjC,OAAO,QAAQ;KACf,MAAM,MAAM,aAAa,YAAY,qBAAqB;KAC1D,SAAS;MACP,mBAAmB,QAAQ;MAC3B,QAAQ,QAAQ;MACjB;KACD,YAAY,CACV;MACE,MAAM;MACN,IAAI,QAAQ;MACb,CACF;KACF,CAAC;IACF,OAAO;;GAEV;EACD,OAAO;GACL,KAAK,OAAO,OAAO;IACjB,OAAO,SAAS,OAAO,MAAM;;GAE/B,QAAQ,OAAO,OAAO;IACpB,OAAO,YAAY,OAAO,MAAM;;GAEnC;EACD,YAAY;GACV,gBAAgB,OAAO;IACrB,OAAO,gBAAgB,MAAM;;GAE/B,IAAI,aAAa;IACf,OAAO,OAAO,uBAAuB,yBAAyB,YAAY;;GAE5E,SAAS,OAAO;IACd,OAAO,2BAA2B,MAAM;;GAE3C;EACD,iBAAiB,OAAO;GACtB,OAAO,iBAAiB,MAAM;;EAEhC,UAAU,KAAK;GACb,OAAO,UAAU,IAAI;;EAEvB,MAAM,cAAc;GAClB,IAAI,iBACF;GAGF,IAAI,CAAC,MAAM,eACT,MAAM,IAAI,UAAU;IAClB,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACT,CAAC;GAGJ,kBAAkB;GAClB,MAAM,MAAM,eAAe,QAAQ,UAAU,IAAI,CAAC;;EAEpD,MAAM,QAAQ;GACZ,MAAM,MAAM,UAAU;;EAEzB;CAED,IAAI,QAAQ,WAAW,qBAAqB,kBAAkB,kBAC5D,QAAa,aAAa;CAG5B,OAAO;CAEP,eAAe,UAAU,KAA6B;EACpD,QAAQ,IAAI,MAAZ;GACE,KAAK;IACH,MAAM,cAAc,IAAI,QAAQ;IAChC;GACF,KAAK;GACL,KAAK;IACH,MAAM,WAAW,IAAI,MAAM;IAC3B;GACF,KAAK;IACH,MAAM,UAAU,IAAI,MAAM;IAC1B;GACF,KAAK,iBACH;;;CAIN,eAAe,sBAAsB,OAMgD;EACnF,MAAM,aAAa,kBAAkB,MAAM,MAAM;EACjD,MAAM,UACJ,UAAU,aACN,MAAM,OAAO,SAAS,cAAc;GAClC,SAAS,MAAM;GACf,MAAM;GACN,SAAS,WAAW;GACpB,MAAM,MAAM;GACZ,UAAU,MAAM;GACjB,CAAC,GACF;EACN,MAAM,WAAW,UAAU,uBAAuB,YAAY,QAAQ,GAAG,GAAG;EAQ5E,OAAO;GACL;GACA;GACA,YAAA,MAVuB,OAAO,MAAM,iBAAiB;IACrD,SAAS,MAAM;IACf,OAAO;IACP,MAAM,MAAM;IACZ,UAAU,MAAM;IACjB,CAAC;GAMD;;CAGH,eAAe,oBAAoB,SAAyB,YAA6C;EACvG,IAAI,WAAW,SAAS,oBAAoB;GAC1C,MAAM,cAAc,QAAQ;GAC5B,OAAQ,MAAM,OAAO,MAAM,cAAc,WAAW,GAAG,IAAK;;EAG9D,MAAM,MAAM,QAAQ;GAClB,MAAM;GACN;GACD,CAAC;EACF,OAAO;;CAGT,eAAe,cAAc,SAA8C;EACzE,IAAI,QAAQ,MAAM,gBAAgB,QAAQ,QAAQ;EAElD,IAAI,MAAM,aAAa;GACrB,MAAM,YAAY,MAAM,OAAO,MAAM,OAAO,MAAM,YAAY;GAE9D,IAAI,aAAa,CAAC,cAAc,UAAU,EAAE;IAC1C,MAAM,iCAAiC,OAAO,UAAU;IACxD,MAAM,6BAA6B,OAAO,UAAU;IACpD,OAAO;;GAGT,QAAQ,MAAM,OAAO,MAAM,mBAAmB,MAAM,IAAI,EACtD,aAAa,MACd,CAAC;;EAGJ,MAAM,cAAc,MAAM,OAAO,MAAM,gBAAgB,MAAM,IAAI;GAC/D,QAAQ;GACR,OAAO;GACR,CAAC;EAEF,IAAI,YAAY,WAAW,GACzB,OAAO;EAGT,MAAM,eAA8D,EAClE,OAAO,CAAC,YAAY,GAAI,KAAK,EAC9B;EACD,IAAI,eAAe,oBAAoB,KAAA,GACrC,aAAa,QAAQ,eAAe;EAEtC,MAAM,UAAU,MAAM,OAAO,MAAM,wBAAwB,MAAM,IAAI,aAAa;EAElF,IAAI,QAAQ,WAAW,GACrB,OAAO;EAGT,IAAI;GACF,MAAM,gBAAgB,QAAQ,KAAK,UAAU,MAAM,GAAG;GACtD,MAAM,MAAM,MAAM,kBAAkB;IAClC;IACA,OAAO,kBAAkB,SAAS,eAAe,cAAc;IAC/D,MAAM,UAAU,QAAQ,IAAI,MAAM;IAClC,UAAU;KACR;KACA,iBAAiB,QAAQ;KAC1B;IACD,YAAY,kBAAkB,QAAQ;IACtC,SAAS;IACV,CAAC;GAEF,MAAM,OAAO,MAAM,yBAAyB,eAAe,IAAI,GAAG;GAClE,MAAM,MAAM,QAAQ;IAClB,MAAM;IACN,SAAS,MAAM;IACf,OAAO,IAAI;IACZ,CAAC;GAEF,OAAO;WACA,OAAO;GACd,MAAM,OAAO,MAAM,sBACjB,QAAQ,KAAK,UAAU,MAAM,GAAG,EAChC,WAAW,MAAM,CAClB;GACD,MAAM;;;CAIV,eAAe,iCAAiC,OAAqB,WAA+B;EAClG,MAAM,qBAAqB,MAAM,OAAO,MAAM,wBAAwB,MAAM,IAAI,EAC9E,OAAO,CAAC,uBAAuB,EAChC,CAAC;EAEF,IAAI,mBAAmB,WAAW,GAChC;EAGF,MAAM,YAAY,MAAM,UAAU,UAAU,IAAI,EAC9C,YAAY,kBAAkB,mBAAmB,EAClD,CAAC;EACF,MAAM,OAAO,MAAM,yBACjB,mBAAmB,KAAK,UAAU,MAAM,GAAG,EAC3C,UAAU,GACX;;CAGH,eAAe,6BAA6B,OAAqB,WAA+B;EAC9F,MAAM,iBAAiB,MAAM,OAAO,MAAM,wBAAwB,MAAM,IAAI,EAC1E,OAAO,CAAC,mBAAmB,EAC5B,CAAC;EAEF,KAAK,MAAM,SAAS,gBAClB,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,UAAU;GACjB,MAAM;GACN,SAAS;IACP,SAAS,MAAM;IACf,cAAc,MAAM;IACpB,OAAO,MAAM;IACd;GACD,YAAY,kBAAkB,CAAC,MAAM,CAAC;GACvC,CAAC;EAGJ,IAAI,eAAe,SAAS,GAC1B,MAAM,OAAO,MAAM,yBACjB,eAAe,KAAK,UAAU,MAAM,GAAG,EACvC,UAAU,GACX;;CAIL,eAAe,kBAAkB,OAOhB;EACf,MAAM,OAAO,MAAM,mBAAmB,UAAU,MAAM,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,KAAK;EACxG,MAAM,MAAM,MAAM,OAAO,MAAM,UAAU;GACvC,SAAS,MAAM,MAAM;GACrB,aAAa,KAAK;GAClB,kBAAkB,KAAK;GACvB,QAAQ;GACR,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,UAAU,MAAM;GACjB,CAAC;EAEF,MAAM,OAAO,MAAM,mBAAmB,MAAM,MAAM,IAAI,EACpD,aAAa,IAAI,IAClB,CAAC;EACF,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS;IACP,SAAS,MAAM,MAAM;IACrB,aAAa,KAAK;IACnB;GACD,YAAY,MAAM;GACnB,CAAC;EAEF,IAAI,MAAM,SACR,MAAM,MAAM,QAAQ;GAClB,MAAM;GACN,SAAS,MAAM,MAAM;GACrB,OAAO,IAAI;GACZ,CAAC;EAGJ,OAAO;;CAGT,eAAe,UAAU,OAAc,UAAoD,EAAE,EAAgB;EAC3G,MAAM,MAAM,MAAM,cAAc,QAAQ,MAAM;EAE9C,IAAI,cAAc,IAAI,EACpB,OAAO;EAIT,iBADoC,IAAI,IAAI,GAClC,EAAE,OAAO;EAEnB,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS,EAAE;GACX,YAAY,QAAQ;GACrB,CAAC;EACF,MAAM,YAAY,MAAM,OAAO,MAAM,UAAU,IAAI,IAAI;GACrD,QAAQ;GACR,6BAAa,IAAI,MAAM;GACxB,CAAC;EACF,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS,EAAE;GACZ,CAAC;EAEF,MAAM,QAAQ,MAAM,OAAO,MAAM,gBAAgB,IAAI,QAAQ;EAC7D,IAAI,OAAO,gBAAgB,IAAI,IAC7B,MAAM,OAAO,MAAM,mBAAmB,MAAM,IAAI,EAC9C,aAAa,MACd,CAAC;EAEJ,MAAM,yBAAyB,IAAI,QAAQ;EAE3C,OAAO;;CAGT,eAAe,WAAW,OAA6B;EACrD,MAAM,aAAa,MAAM,cAAc,QAAQ,MAAM;EAErD,IAAI,cAAc,WAAW,EAC3B;EAGF,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,WAAW,QAAQ;EAC/D,MAAM,OAAO,MAAM,mBAAmB,UAAU,WAAW,aAAa,WAAW,QAAQ,MAAM,KAAK;EACtG,MAAM,aAAa,IAAI,iBAAiB;EACxC,iBAAiB,IAAI,WAAW,IAAI,WAAW;EAE/C,IAAI;GACF,MAAM,gBAAgB,MAAM,0BAA0B,OAAO,WAAW;GACxE,MAAM,uBAAuB,MAAM,OAAO,MAAM,UAAU,WAAW,IAAI,EACvE,eACD,CAAC;GACF,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,qBAAqB;IAC5B,MAAM;IACN,SAAS,EACP,YAAY,cAAc,OAAO,QAClC;IACD,YAAY,cAAc,OAAO,KAAK,WAAW;KAC/C,MAAM;KACN,IAAI,MAAM;KACX,EAAE;IACJ,CAAC;GAEF,MAAM,eAAe,MAAM,yBAAyB,OAAO,MAAM,qBAAqB;GACtF,MAAM,sBAAsB,MAAM,OAAO,MAAM,UAAU,qBAAqB,IAAI,EAChF,cACD,CAAC;GACF,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,oBAAoB;IAC3B,MAAM;IACN,SAAS;KACP,WAAW,aAAa,MAAM;KAC9B,gBAAgB,aAAa,MAAM,QAAQ,SAAS,KAAK,WAAW,QAAQ,CAAC;KAC7E,cAAc,aAAa,MAAM,QAAQ,SAAS,KAAK,WAAW,MAAM,CAAC;KAC1E;IACD,YAAY,aAAa,MAAM,SAAS,SACtC,KAAK,WAAW,QACZ,CACE;KACE,MAAM;KACN,IAAI,KAAK;KACV,CACF,GACD,EAAE,CACP;IACF,CAAC;GAEF,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU,oBAAoB,IAAI;IACnE,QAAQ;IACR,2BAAW,IAAI,MAAM;IACtB,CAAC;GACF,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,QAAQ;IACf,MAAM;IACN,SAAS;KACP,SAAS,MAAM;KACf,aAAa,KAAK;KACnB;IACF,CAAC;GAEF,MAAM,kBAAkB,MAAM,iBAAiB,QAAQ,GAAG;GAC1D,MAAM,iBAAiB,MAAM,OAAO,MAAM,UAAU,QAAQ,IAAI,EAC9D,iBAAiB,gBAAgB,UAClC,CAAC;GACF,MAAM,kBAAkB,UACtB,SAAS,eAAe,IAAI;IAC1B,GAAG;IACH,MAAM,MAAM,QAAQ,eAAe;IACnC,QAAQ,MAAM,UAAU,WAAW;IACpC,CAAC;GACJ,MAAM,qBAAqB,UACzB,YAAY,eAAe,IAAI;IAC7B,GAAG;IACH,MAAM,MAAM,QAAQ,eAAe;IACnC,QAAQ,MAAM,UAAU,WAAW;IACpC,CAAC;GAEJ,MAAM,SAAS,QAAQ;IACrB,MAAM,eAAe;IACrB;IACA;IACA,KAAK;IACL;IACA;IACA;IACA,QAAQ,WAAW;IACnB,KAAK,OAAO;KACV,OAAO,OAAO,OAAO,eAAe;MAClC,GAAG;MACH,OAAO,eAAe;MACvB,CAAC,CAAC,WAAW,KAAA,EAAU;;IAE1B,cAAc,SAAS;KACrB,OAAO,OAAO,SAAS,cAAc;MACnC,GAAG;MACH,SAAS,MAAM;MACf,MAAM,eAAe;MACtB,CAAC;;IAEJ,OAAO;KACL,MAAM;KACN,SAAS;KACV;IACD,UAAU;IACV,aAAa;IACb,gBAAgB,OAAO;KACrB,OAAO,gBAAgB;MACrB,GAAG;MACH,OAAO,MAAM,SAAS,eAAe;MACrC,MAAM,MAAM,QAAQ,eAAe;MACpC,CAAC;;IAEL,CAAC;GAEF,MAAM,UAAU,MAAM,cAAc,QAAQ,QAAQ,GAAG;GAEvD,IAAI,QAAQ,WAAW,WAAW;IAChC,MAAM,OAAO,MAAM,UAAU,QAAQ,IAAI;KACvC,QAAQ;KACR,6BAAa,IAAI,MAAM;KACxB,CAAC;IACF,MAAM,OAAO,OAAO,eAAe;KACjC,OAAO,QAAQ;KACf,MAAM;KACN,SAAS,EAAE;KACZ,CAAC;IACF,MAAM,wBAAwB,MAAM,IAAI,QAAQ,GAAG;IACnD,MAAM,yBAAyB,MAAM,GAAG;;WAEnC,OAAO;GAGd,KAAI,MAFkB,OAAO,MAAM,OAAO,WAAW,GAAG,GAE3C,WAAW,aACtB;GAGF,MAAM,WAAW;IACf,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAC/D,SAAS,eAAe,MAAM;IAC/B;GAED,IAAI,iBAAiB,WACnB,OAAO,OAAO,UAAU,EAAE,MAAM,MAAM,MAAM,CAAC;GAG/C,MAAM,OAAO,MAAM,UAAU,WAAW,IAAI;IAC1C,QAAQ;IACR,6BAAa,IAAI,MAAM;IACvB,OAAO;IACR,CAAC;GACF,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,WAAW;IAClB,MAAM;IACN,SAAS,eAAe,MAAM;IAC/B,CAAC;GACF,MAAM,wBAAwB,MAAM,IAAI,WAAW,GAAG;GACtD,MAAM,yBAAyB,MAAM,GAAG;YAChC;GACR,iBAAiB,OAAO,WAAW,GAAG;;;CAI1C,eAAe,gBAAgB,OAA6D;EAC1F,MAAM,MAAM,MAAM,cAAc,QAAQ,MAAM,MAAM;EACpD,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,IAAI,QAAQ;EACxD,MAAM,YAAY,MAAM,OAAO,uBAAuB,4BAA4B;GAChF,SAAS,MAAM;GACf,OAAO,IAAI;GACX,QAAQ,MAAM;GACd,MAAM,MAAM,QAAQ,IAAI,QAAQ,MAAM;GACtC,GAAI,MAAM,gBAAgB,KAAA,IAAY,EAAE,IAAI,MAAM,aAAa,GAAG,EAAE;GACpE,GAAI,MAAM,eAAe,KAAA,IAAY,EAAE,YAAY,MAAM,YAAY,GAAG,EAAE;GAC1E,GAAI,MAAM,iBAAiB,KAAA,IAAY,EAAE,cAAc,MAAM,cAAc,GAAG,EAAE;GAChF,GAAI,MAAM,aAAa,KAAA,IAAY,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;GACrE,CAAC;EAEF,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS;IACP,aAAa,UAAU;IACvB,QAAQ,UAAU;IAClB,YAAY,UAAU;IACtB,cAAc,UAAU;IACzB;GACD,YAAY,CACV;IACE,MAAM;IACN,IAAI,UAAU;IACf,CACF;GACF,CAAC;EAEF,OAAO;;CAGT,eAAe,2BAA2B,OAAmF;EAG3H,IAAI,CAAC,MAFkB,OAAO,uBAAuB,yBAAyB,MAAM,YAAY,EAG9F,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,yBAAyB,MAAM,YAAY;GACpD,QAAQ;GACR,SAAS,EACP,aAAa,MAAM,aACpB;GACF,CAAC;EAGJ,MAAM,SAAS,MAAM,WAAW,MAAM,QAAQ,WAAW;EACzD,MAAM,YAAY,MAAM,OAAO,uBAAuB,8BAA8B;GAClF,IAAI,MAAM;GACV;GACA,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,UAAU,MAAM;GACjB,CAAC;EACF,MAAM,UAAU,MAAM,OAAO,SAAS,cAAc;GAClD,SAAS,UAAU;GACnB,MAAM;GACN,SAAS,MAAM,WAAW,gCAAgC,UAAU;GACpE,aAAa,UAAU;GACvB,MAAM,MAAM,QAAQ,UAAU;GAC9B,UAAU;IACR,MAAM;IACN,yBAAyB,UAAU;IACnC,QAAQ,UAAU;IAClB,YAAY,UAAU;IACtB,QAAQ,UAAU;IAClB,GAAI,MAAM,YAAY,EAAE;IACzB;GACF,CAAC;EACF,MAAM,YAAY,WAAW,cAAc,4BAA4B;EACvE,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,UAAU;GACjB,MAAM;GACN,SAAS;IACP,aAAa,UAAU;IACvB,QAAQ,UAAU;IAClB,YAAY,UAAU;IACtB,QAAQ,UAAU;IAClB,WAAW,QAAQ;IACnB,QAAQ,UAAU;IAClB,OAAO,UAAU;IAClB;GACD,YAAY,CACV;IACE,MAAM;IACN,IAAI,UAAU;IACf,EACD;IACE,MAAM;IACN,IAAI,QAAQ;IACb,CACF;GACF,CAAC;EAGF,IAAI,EADmB,MAAM,YAAY,UAAU,iBAAiB,SAElE,OAAO;GAAE;GAAW;GAAS,YAAY;GAAM,WAAW;GAAO;EAGnE,MAAM,aAAa,MAAM,OAAO,MAAM,iBAAiB;GACrD,SAAS,UAAU;GACnB,OAAO;IACL,MAAM;IACN,SAAS;KACP,OAAO;KACP,aAAa,UAAU;KACvB,OAAO,UAAU;KACjB,QAAQ,UAAU;KAClB,YAAY,UAAU;KACtB,QAAQ,UAAU;KACnB;IACD,YAAY,CAAC,QAAQ,GAAG;IACzB;GACD,MAAM,MAAM,QAAQ,UAAU;GAC9B,UAAU;IACR,yBAAyB,UAAU;IACnC,QAAQ,UAAU;IAClB,QAAQ,UAAU;IACnB;GACF,CAAC;EAEF,MAAM,MAAM,QAAQ;GAClB,MAAM;GACN,SAAS,UAAU;GACpB,CAAC;EAEF,OAAO;GAAE;GAAW;GAAS;GAAY,WAAW;GAAM;;CAG5D,eAAe,yBAAyB,SAAwC;EAM9E,KAAI,MALkB,OAAO,MAAM,gBAAgB,SAAS;GAC1D,QAAQ;GACR,OAAO;GACR,CAAC,EAEU,SAAS,GACnB,MAAM,MAAM,QAAQ;GAClB,MAAM;GACN;GACD,CAAC;;CAIN,eAAe,wBAAwB,SAAyB,OAA6B;EAG3F,KAAI,MAFgB,OAAO,MAAM,gBAAgB,QAAQ,GAE9C,gBAAgB,OACzB,MAAM,OAAO,MAAM,mBAAmB,SAAS,EAC7C,aAAa,MACd,CAAC;;CAIN,eAAe,+BAA+B,MAAuB,UAA6C;EAChH,MAAM,iBAAiB,OAAO,SAAS;EAEvC,IAAI,eAAe,WAAW,GAC5B,OAAO,EAAE;EAGX,MAAM,WAA2B,EAAE;EAEnC,KAAK,MAAM,WAAW,gBAAgB;GACpC,mBAAmB,MAAM,QAAQ;GACjC,MAAM,eAAe,MAAM,aAAa,SAAS,QAAQ;GAEzD,IAAI,CAAC,cACH,MAAM,IAAI,UAAU;IAClB,MAAM;IACN,OAAO;IACP,SAAS,SAAS,QAAQ;IAC1B,QAAQ;IACR,SAAS;KACP,aAAa,KAAK;KAClB;KACD;IACF,CAAC;GAGJ,SAAS,KAAK,aAAa;;EAG7B,OAAO;;CAGT,eAAe,0BAA0B,OAAqB,KAAkC;EAC9F,MAAM,WAAW,MAAM,OAAO,cAAc,kBAAkB,MAAM,GAAG;EACvE,MAAM,SAA+B,EAAE;EAEvC,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,eAAe,MAAM,aAAa,SAAS,QAAQ,QAAQ;GAEjE,IAAI,CAAC,cACH,MAAM,IAAI,UAAU;IAClB,MAAM;IACN,OAAO;IACP,SAAS,SAAS,QAAQ,QAAQ;IAClC,QAAQ;IACR,SAAS;KACP,SAAS,MAAM;KACf,WAAW,QAAQ;KACnB,SAAS,QAAQ;KAClB;IACF,CAAC;GAGJ,OAAO,KAAK;IACV,WAAW,QAAQ;IACnB,SAAS,QAAQ;IACjB,MAAM,aAAa;IACnB,SAAS,aAAa;IACtB,aAAa,aAAa;IAC1B,cAAc,aAAa;IAC3B,iBAAiB,MAAM,WAAW,aAAa,YAAY;IAC3D,iBAAiB,MAAM,WAAW,aAAa,aAAa;IAC5D,QAAQ,EAAE,GAAG,QAAQ,QAAQ;IAC7B,qBAAqB,sBAAsB,aAAa,YAAY,QAAQ,gBAAgB;IAC5F,iBAAiB,aAAa,OAAO,IAAI,sBAAsB;IAC/D,oBAAoB,aAAa,UAAU,IAAI,sBAAsB;IACrE,UAAU;KACR,GAAG,aAAa;KAChB,GAAG,QAAQ;KACZ;IACF,CAAC;;EAGJ,OAAO;GACL,OAAO,IAAI;GACX;GACA,2BAAW,IAAI,MAAM;GACtB;;CAGH,eAAe,yBACb,OACA,MACA,KACuB;EACvB,MAAM,QAA4B,KAAK,MAAM,IAAI,oBAAoB;EACrE,MAAM,WAAW,MAAM,OAAO,YAAY,gBAAgB,MAAM,GAAG;EAEnE,KAAK,MAAM,WAAW,UAAU;GAC9B,iBAAiB,MAAM,QAAQ;GAC/B,MAAM,WAAW,MAAM,yBAAyB;IAC9C,UAAU;IACV,MAAM,IAAI,QAAQ,MAAM;IACxB;IACA;IACA;IACD,CAAC;GACF,mBAAmB,SAAS,SAAS;GACrC,MAAM,KAAK,GAAG,iBAAiB,SAAS,SAAS,CAAC,KAAK,SAAS,kBAAkB,SAAS,KAAK,CAAC,CAAC;;EAGpG,OAAO;GACL,OAAO,IAAI;GACX;GACA,2BAAW,IAAI,MAAM;GACtB;;CAGH,eAAe,SAAS,OAAc,OAA+C;EACnF,MAAM,MAAM,MAAM,cAAc,QAAQ,MAAM;EAE9C,IAAI,IAAI,WAAW,aAAa,IAAI,WAAW,UAC7C,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,OAAO,IAAI,GAAG,MAAM,IAAI,OAAO;GACxC,QAAQ;GACR,SAAS;IACP,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,QAAQ,MAAM;IACf;GACF,CAAC;EAGJ,IAAI,CAAC,IAAI,cACP,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,OAAO,IAAI,GAAG,MAAM,IAAI,OAAO;GACxC,QAAQ;GACR,SAAS;IACP,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,QAAQ,MAAM;IACf;GACF,CAAC;EAGJ,MAAM,eAAe,IAAI,aAAa,MAAM,MAAM,SAAS,KAAK,OAAO,MAAM,OAAO;EAEpF,IAAI,CAAC,cACH,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,QAAQ,MAAM,OAAO,yBAAyB,IAAI,GAAG;GAC9D,QAAQ;GACR,SAAS;IACP,OAAO,IAAI;IACX,QAAQ,MAAM;IACf;GACF,CAAC;EAGJ,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,IAAI,QAAQ;EACxD,MAAM,OAAO,MAAM,mBAAmB,UAAU,IAAI,aAAa,MAAM,QAAQ,IAAI,QAAQ,MAAM,KAAK;EACtG,MAAM,OAAO,MAAM,QAAQ,IAAI;EAC/B,MAAM,YAAY,MAAM,SAAS,EAAE;EACnC,MAAM,mBAAmB;GACvB;GACA;GACA;GACA,OAAO;GACP;GACA,mBAAmB,MAAM;GAC1B,CAAC;EAEF,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS;IACP,QAAQ,aAAa;IACrB,aAAa,aAAa;IAC1B,QAAQ,aAAa;IACrB,OAAO;IACR;GACD,YAAY,eAAe,cAAc,MAAM,kBAAkB;GAClE,CAAC;EAEF,IAAI;GACF,MAAM,SACJ,aAAa,WAAW,UACpB,MAAM,cAAc;IAClB;IACA;IACA,OAAO;IACP;IACA;IACA;IACA,QAAQ,MAAM,UAAU,IAAI,iBAAiB,CAAC;IAC/C,CAAC,GACF,MAAM,YAAY;IAChB;IACA,OAAO;IACP;IACA;IACA;IACA,QAAQ,MAAM;IACf,CAAC;GAER,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,IAAI;IACX,MAAM;IACN,SAAS;KACP,QAAQ,aAAa;KACrB,QAAQ,aAAa;KACrB;KACD;IACD,YAAY,eAAe,cAAc,MAAM,kBAAkB;IAClE,CAAC;GAEF,OAAO;IACL,QAAQ,aAAa;IACrB;IACA,IAAI;IACL;WACM,OAAO;GACd,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,IAAI;IACX,MAAM;IACN,SAAS;KACP,QAAQ,aAAa;KACrB,QAAQ,aAAa;KACrB,OAAO,eAAe,MAAM;KAC7B;IACD,YAAY,eAAe,cAAc,MAAM,kBAAkB;IAClE,CAAC;GACF,MAAM;;;CAIV,eAAe,YAAY,OAAc,OAAsD;EAC7F,IAAI;GAEF,OAAO;IACL,GAAG,MAFgB,SAAS,OAAO,MAAM;IAGzC,IAAI;IACL;WACM,OAAO;GACd,IAAI,kCAAkC,MAAM,EAC1C,MAAM;GAER,OAAO;IACL,QAAQ,MAAM;IACd,IAAI;IACJ,OAAO,WAAW,MAAM;IACzB;;;CAIL,eAAe,mBAAmB,OAOhB;EAGhB,IAAI,EAFqB,MAAM,aAAa,oBAAoB,MAAM,aAAa,eAAe,QAGhG;EAGF,IAAI,MAAM,mBAAmB;GAC3B,MAAM,UAAU,MAAM,OAAO,UAAU,mBAAmB,MAAM,kBAAkB;GAElF,IACE,WACA,QAAQ,UAAU,MAAM,IAAI,MAC5B,QAAQ,WAAW,MAAM,aAAa,MACtC,QAAQ,WAAW,WAEnB;GAGF,MAAM,IAAI,UAAU;IAClB,MAAM;IACN,OAAO;IACP,SAAS,QAAQ,MAAM,aAAa,GAAG;IACvC,QAAQ;IACR,SAAS;KACP,mBAAmB,MAAM;KACzB,OAAO,MAAM,IAAI;KACjB,QAAQ,MAAM,aAAa;KAC3B,gBAAgB,SAAS,UAAU;KACpC;IACF,CAAC;;EAGJ,MAAM,WAAW,MAAM,OAAO,UAAU,sBAAsB;GAC5D,SAAS,MAAM,MAAM;GACrB,OAAO,MAAM,IAAI;GACjB,QAAQ,MAAM,aAAa;GAC3B,OAAO,MAAM;GACb,aAAa,MAAM;GACnB,UAAU;IACR,YAAY,MAAM,aAAa;IAC/B,aAAa,MAAM,aAAa;IACjC;GACF,CAAC;EAEF,IAAI,MAAM,IAAI,WAAW,WAAW;GAClC,MAAM,OAAO,MAAM,UAAU,MAAM,IAAI,IAAI,EACzC,QAAQ,UACT,CAAC;GACF,MAAM,OAAO,OAAO,eAAe;IACjC,OAAO,MAAM,IAAI;IACjB,MAAM;IACN,SAAS;KACP,QAAQ;KACR,mBAAmB,SAAS;KAC5B,QAAQ,MAAM,aAAa;KAC5B;IACD,YAAY,CACV;KACE,MAAM;KACN,IAAI,SAAS;KACd,CACF;IACF,CAAC;;EAGJ,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,MAAM,IAAI;GACjB,MAAM;GACN,SAAS;IACP,mBAAmB,SAAS;IAC5B,QAAQ,MAAM,aAAa;IAC3B,aAAa,MAAM,aAAa;IACjC;GACD,YAAY,CACV,GAAG,eAAe,MAAM,aAAa,EACrC;IACE,MAAM;IACN,IAAI,SAAS;IACd,CACF;GACF,CAAC;EAEF,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,QAAQ,MAAM,aAAa,GAAG;GACvC,QAAQ;GACR,SAAS;IACP,mBAAmB,SAAS;IAC5B,OAAO,MAAM,IAAI;IACjB,QAAQ,MAAM,aAAa;IAC5B;GACF,CAAC;;CAGJ,eAAe,cAAc,OAQR;EACnB,MAAM,OAAO,MAAM,KAAK,MAAM,MAAM,cAAc,UAAU,OAAO,MAAM,aAAa,GAAG;EAEzF,IAAI,CAAC,MACH,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,cAAc,MAAM,aAAa,GAAG,kCAAkC,MAAM,KAAK,GAAG;GAC7F,QAAQ;GACR,SAAS;IACP,QAAQ,MAAM,aAAa;IAC3B,aAAa,MAAM,KAAK;IACzB;GACF,CAAC;EAGJ,MAAM,cAAc,KAAK,YAAY,MAAM,MAAM,MAAM;EACvD,OAAO,KAAK,QAAQ,aAAa;GAC/B,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,KAAK,MAAM;GACX;GACA,QAAQ,MAAM;GACf,CAAC;;CAGJ,eAAe,YAAY,OAON;EACnB,MAAM,UAAU,MAAM,OAAO,YAAY,cAAc,MAAM,aAAa,UAAU;EAEpF,IAAI,CAAC,SACH,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS,eAAe,MAAM,aAAa,UAAU;GACrD,QAAQ;GACR,SAAS;IACP,WAAW,MAAM,aAAa;IAC9B,QAAQ,MAAM,aAAa;IAC5B;GACF,CAAC;EAGJ,MAAM,WAAW,MAAM,yBAAyB;GAC9C,UAAU;GACV,MAAM,MAAM;GACZ,OAAO,MAAM;GACb;GACA;GACD,CAAC;EAEF,OAAO,gBAAgB,SAAS;GAC9B,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,KAAK,MAAM;GACX;GACA,cAAc,MAAM;GACpB;GACA,OAAO,MAAM;GACb;GACA,QAAQ,MAAM;GACf,CAAC;;CAGJ,eAAe,iBAAiB,OAAwC;EACtE,MAAM,MAAM,MAAM,cAAc,QAAQ,MAAM;EAC9C,MAAM,QAAQ,MAAM,gBAAgB,QAAQ,IAAI,QAAQ;EACxD,MAAM,OAAO,MAAM,mBAAmB,UAAU,IAAI,aAAa,IAAI,QAAQ,MAAM,KAAK;EACxF,MAAM,iBAAiB,MAAM,mBAAmB,KAAK,kBAAkB;GACrE,MAAM,IAAI;GACV;GACA;GACA;GACA,OAAO,IAAI;GACX;GACA;GACD,CAAC;EACF,MAAM,gBAAgB,oBAAoB;GACxC;GACA;GACA;GACA,eACE,QAAQ,iBACR;GACF,YAAY,QAAQ,cAAc;GACnC,CAAC;EACF,MAAM,WAAW,SAAS,OAAO;GAC/B,UAAU,KAAK,mBAAmB;GAClC,QAAQ,CAAC,GAAG,eAAe,GAAG,eAAe;GAC7C,OAAO,IAAI;GACX,OAAO,aAAa,IAAI,MAAM;GAC9B,SAAS,EACP,YAAY,QAAQ,cAAc,6DACnC;GACF,CAAC;EAEF,MAAM,OAAO,OAAO,eAAe;GACjC,OAAO,IAAI;GACX,MAAM;GACN,SAAS;IACP,mBAAmB,SAAS,SAAS;IACrC,wBAAwB,SAAS,SAAS;IAC1C,aAAa,SAAS,SAAS;IAC/B,QAAQ,SAAS,SAAS,OAAO,KAAK,WAAW;KAC/C,KAAK,MAAM;KACX,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,WAAW,MAAM;KAClB,EAAE;IACJ;GACF,CAAC;EAEF,OAAO;;;AAIX,SAAS,2BAAiC,cAAoE;CAC5G,IAAI,oBAAoB,aAAa,EACnC,OAAO;CAGT,MAAM,wBAAQ,IAAI,KAAmC;CAErD,IAAI,MAAM,QAAQ,aAAa,EAC7B,KAAK,MAAM,QAAQ,cACjB,MAAM,IAAI,KAAK,IAAI,KAAK;MAG1B,KAAK,MAAM,CAAC,IAAI,SAAS,OAAO,QAAQ,aAAa,EACnD,MAAM,IAAI,IAAI,KAAK;CAIvB,OAAO,EACL,MAAM,QAAQ,IAAI;EAChB,OAAO,MAAM,IAAI,GAAG,IAAI;IAE3B;;AAGH,SAAS,oBAA0B,cAAoF;CACrH,OAAO,OAAQ,aAAyC,YAAY;;AAGtE,eAAe,mBACb,UACA,IACA,MAC0B;CAC1B,MAAM,OAAO,MAAM,SAAS,QAAQ,IAAI,EAAE,MAAM,CAAC;CAEjD,IAAI,CAAC,MACH,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,cAAc,GAAG;EAC1B,QAAQ;EACR,SAAS,EACP,aAAa,IACd;EACF,CAAC;CAGJ,OAAO;;AAGT,eAAe,gBAAgB,QAAoB,SAAgD;CACjG,MAAM,QAAQ,MAAM,OAAO,MAAM,gBAAgB,QAAQ;CAEzD,IAAI,CAAC,OACH,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,gBAAgB,QAAQ;EACjC,QAAQ;EACR,SAAS,EACP,SACD;EACF,CAAC;CAGJ,OAAO;;AAGT,eAAe,cAAc,QAAoB,OAA4B;CAC3E,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM;CAE5C,IAAI,CAAC,KACH,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,OAAO,MAAM;EACtB,QAAQ;EACR,SAAS,EACP,OACD;EACF,CAAC;CAGJ,OAAO;;AAGT,eAAe,mBACb,WACA,KACyB;CACzB,MAAM,SAAyB,EAAE;CAEjC,KAAK,MAAM,YAAY,WAAW;EAChC,MAAM,SAAS,MAAM,SAAS,KAAK,IAAI;EAEvC,IAAI,CAAC,QACH;EAGF,IAAI,MAAM,QAAQ,OAAO,EACvB,OAAO,KAAK,GAAG,OAAO;OAEtB,OAAO,KAAK,OAAO;;CAIvB,OAAO;;AAGT,SAAS,iBAAuB,MAAuB,SAAgE;CACrH,IAAI,CAAC,KAAK,KACR,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,aAAa,KAAK,GAAG;EAC9B,QAAQ;EACR,SAAS;GACP,aAAa,KAAK;GAClB,cAAc,QAAQ;GACvB;EACF,CAAC;CAGJ,IAAI,CAAC,KAAK,IAAI,kBAAkB,SAAS,QAAQ,aAAa,EAC5D,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,aAAa,KAAK,GAAG,iCAAiC,QAAQ,aAAa;EACpF,QAAQ;EACR,SAAS;GACP,aAAa,KAAK;GAClB,cAAc,QAAQ;GACvB;EACF,CAAC;CAGJ,IAAI,QAAQ,eAAe,SAAS,KAAK,IAAI,kBAAkB,MAC7D,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,aAAa,KAAK,GAAG;EAC9B,QAAQ;EACR,SAAS;GACP,aAAa,KAAK;GAClB,cAAc,QAAQ;GACvB;EACF,CAAC;;AAIN,SAAS,mBAAyB,MAAuB,SAAuB;CAC9E,IAAI,CAAC,KAAK,QACR,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,aAAa,KAAK,GAAG;EAC9B,QAAQ;EACR,SAAS;GACP,aAAa,KAAK;GAClB;GACD;EACF,CAAC;CAGJ,IAAI,KAAK,OAAO,UAAU,SAAS,CAAC,KAAK,OAAO,MAAM,SAAS,QAAQ,EACrE,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS,aAAa,KAAK,GAAG,wBAAwB,QAAQ;EAC9D,QAAQ;EACR,SAAS;GACP,aAAa,KAAK;GAClB;GACD;EACF,CAAC;;AAIN,eAAe,yBAA+B,OAMR;CACpC,IAAI,CAAC,MAAM,UACT,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;EACR,SAAS;GACP,WAAW,MAAM,QAAQ;GACzB,cAAc,MAAM,QAAQ;GAC7B;EACF,CAAC;CAGJ,MAAM,WAAW,MAAM,MAAM,SAAS,QAAQ;EAC5C,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,SAAS,MAAM;EACf,KAAK,MAAM;EACZ,CAAC;CAEF,IAAI,SAAS,cAAc,mBACzB,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;EACR,SAAS;GACP,WAAW,MAAM,QAAQ;GACzB,WAAW,SAAS;GACrB;EACF,CAAC;CAGJ,IAAI,CAAC,SAAS,SAAS,MAAM,EAC3B,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;EACR,SAAS,EACP,WAAW,MAAM,QAAQ,IAC1B;EACF,CAAC;CAGJ,OAAO;;AAGT,SAAS,mBACP,SACA,UACM;CACN,MAAM,YAAY,IAAI,IAAI,SAAS,MAAM,KAAK,SAAS,KAAK,KAAK,CAAC;CAGlE,IAFqB,SAAS,MAAM,QAAQ,SAAS,CAAC,KAAK,KAAK,MAAM,CAEtD,CAAC,SAAS,GACxB,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;EACR,SAAS;GACP,WAAW,QAAQ;GACnB,cAAc,QAAQ;GACvB;EACF,CAAC;CAGJ,IAAI,QAAQ,eAAe,OAAO;EAChC,MAAM,eAAe,QAAQ,WAAW,QAAQ,aAAa,CAAC,UAAU,IAAI,SAAS,CAAC;EAEtF,IAAI,aAAa,SAAS,GACxB,MAAM,IAAI,UAAU;GAClB,MAAM;GACN,OAAO;GACP,SAAS;GACT,QAAQ;GACR,SAAS;IACP,WAAW,QAAQ;IACnB,cAAc,QAAQ;IACtB;IACD;GACF,CAAC;;;AAKR,SAAS,iBAAuB,SAAyC,UAAsD;CAC7H,IAAI,QAAQ,eAAe,OACzB,OAAO,SAAS;CAGlB,MAAM,WAAW,IAAI,IAAI,QAAQ,WAAW;CAC5C,OAAO,SAAS,MAAM,QAAQ,SAAS,SAAS,IAAI,KAAK,KAAK,CAAC;;AAGjE,SAAS,eAAe,MAAwB,mBAAgE;CAC9G,MAAM,OACJ,KAAK,WAAW,QACZ,CACE;EACE,MAAM;EACN,IAAI,KAAK;EACV,CACF,GACD,EAAE;CAER,IAAI,mBACF,KAAK,KAAK;EACR,MAAM;EACN,IAAI;EACL,CAAC;CAGJ,OAAO;;AAGT,SAAS,oBAA0B,OAMhB;CACjB,OAAO;EACL;GACE,KAAK;GACL,MAAM;GACN,SAAS,MAAM;GAChB;EACD;GACE,KAAK;GACL,MAAM;GACN,SAAS,MAAM,KAAK;GACrB;EACD;GACE,KAAK;GACL,MAAM;GACN,SAAS,aAAa,MAAM,IAAI,MAAM;GACvC;EACD;GACE,KAAK;GACL,MAAM;GACN,SAAS,KAAK,UAAU,MAAM,MAAM,OAAO,MAAM,EAAE;GACpD;EACD;GACE,KAAK;GACL,MAAM;GACN,SAAS,kBAAkB,MAAM,IAAI,cAAc;GACnD,YACE,MAAM,IAAI,eAAe,OAAO,KAAK,WAAW;IAC9C,MAAM;IACN,IAAI,MAAM;IACX,EAAE,IAAI,EAAE;GACZ;EACD;GACE,KAAK;GACL,MAAM;GACN,SAAS,KAAK,UAAU,MAAM,IAAI,gBAAgB,wBAAwB,MAAM,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE,MAAM,EAAE;GACpH;EACF;;AAGH,SAAS,wBAAwB,OAAc,OAA6B;CAC1E,OAAO;EACL;EACA,OAAO,MAAM,IAAI,oBAAoB;EACrC,2BAAW,IAAI,MAAM;EACtB;;AAGH,SAAS,oBAAoB,MAA8B;CACzD,OAAO;EACL,IAAI,KAAK;EACT,aAAa,KAAK;EAClB,QAAQ;EACR,aAAa,KAAK;EAClB,aAAa,KAAK;EAClB,aAAa,KAAK;EAClB,YAAY,KAAK;EACjB,kBAAkB,KAAK;EACvB,UAAU,EAAE;EACb;;AAGH,SAAS,kBAAkB,SAAqB,MAA2C;CACzF,MAAM,aAAa,KAAK,cAAc;CACtC,OAAO;EACL,IAAI,OAAO,QAAQ,GAAG,GAAG,KAAK;EAC9B,aAAa,GAAG,QAAQ,aAAa,GAAG,KAAK;EAC7C,QAAQ;EACR,WAAW,QAAQ;EACnB,cAAc,QAAQ;EACtB,gBAAgB,KAAK;EACrB,WAAW;EACX,aAAa,KAAK,eAAe;EACjC,aAAa,KAAK,eAAe;GAC/B,MAAM;GACN,sBAAsB;GACvB;EACD;EACA,kBAAkB,KAAK,oBAAoB,eAAe;EAC1D,UAAU,KAAK,YAAY,EAAE;EAC9B;;AAGH,SAAS,kBAAkB,OAAoC;CAC7D,IAAI,OAAO,UAAU,UACnB,OAAO;EACL,MAAM;EACN,MAAM;EACP;CAGH,OAAO;;AAGT,SAAS,gCAAgC,WAA0C;CACjF,MAAM,QAAQ,CAAC,2BAA2B,UAAU,GAAG,GAAG,UAAU,OAAO,GAAG;CAC9E,MAAM,KAAK,aAAa,UAAU,SAAS;CAC3C,MAAM,KAAK,YAAY,UAAU,QAAQ;CACzC,IAAI,UAAU,YAAY,MAAM,KAAK,iBAAiB,UAAU,aAAa;CAC7E,IAAI,UAAU,OAAO,MAAM,KAAK,YAAY,UAAU,MAAM,UAAU;CACtE,IAAI,UAAU,WAAW,QAAQ,UAAU,WAAW,KAAA,GAAW,MAAM,KAAK,aAAa,KAAK,UAAU,UAAU,OAAO,GAAG;CAC5H,OAAO,MAAM,KAAK,KAAK;;AAGzB,SAAS,uBAAuB,OAAiB,WAAgC;CAC/E,OAAO;EACL,GAAG;EACH,YAAY,CAAC,GAAI,MAAM,cAAc,EAAE,EAAG,UAAU;EACrD;;AAGH,SAAS,kBAAkB,QAAsB,eAAiC;CAChF,MAAM,aAAa,OAAO,OAAO,SAAS,UAAU,MAAM,MAAM,cAAc,EAAE,CAAC,CAAC;CAClF,MAAM,aAAa,OAAO,QAAQ,UAAU,UAAU,MAAM,MAAM;CAElE,IAAI,WAAW,WAAW,OAAO,QAAQ;EACvC,MAAM,QAAQ,WAAW;EAEzB,OAAO;GACL,MAAM,OAAO,MAAM,SAAS,sBAAsB,OAAO,MAAM,SAAS,sBAAsB,MAAM,MAAM,OAAO;GACjH,MAAM,WAAW,KAAK,UAAW,UAAU,MAAM,QAAQ,MAAM,MAAM,OAAO,GAAI,CAAC,KAAK,cAAc;GACpG;GACA,SAAS;IACP,eAAe,OAAO,KAAK,UAAU,MAAM,GAAG;IAC9C,oBAAoB,OAAO,IAAI,oBAAoB;IACpD;GACF;;CAGH,IAAI,OAAO,WAAW,GACpB,OAAO;EACL,GAAG,OAAO,GAAI;EACd;EACA,SAAS;GACP,GAAI,OAAO,OAAO,GAAI,MAAM,YAAY,YAAY,OAAO,GAAI,MAAM,YAAY,OAAO,OAAO,GAAI,MAAM,UAAU,EAAE;GACrH,oBAAoB,OAAO,IAAI,oBAAoB;GACpD;EACF;CAGH,OAAO;EACL,MAAM;EACN;EACA,SAAS;GACP,aAAa,OAAO,KAAK,WAAW;IAClC,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,OAAO,MAAM;IACd,EAAE;GACH,oBAAoB,OAAO,IAAI,oBAAoB;GACpD;EACF;;AAGH,SAAS,yBAAyB,OAAsD;CACtF,IAAI,UAAU,MACZ;CAGF,IAAI,UAAU,KAAA,GACZ,OAAO;CAGT,IAAI,CAAC,OAAO,SAAS,MAAM,IAAI,QAAQ,GACrC,MAAM,IAAI,UAAU;EAClB,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;EACR,SAAS,EACP,iBAAiB,OAClB;EACF,CAAC;CAGJ,OAAO,KAAK,MAAM,MAAM;;AAG1B,SAAS,oBAAoB,OAA4C;CACvE,MAAM,QAAQ,MAAM;CACpB,OAAO;EACL,cAAc,MAAM;EACpB,MAAM,MAAM;EACZ,YAAY,MAAM,cAAc,EAAE;EAClC,MAAM,UAAU,QAAQ,MAAM,OAAO;EACtC;;AAGH,SAAS,UAAU,QAA0C;CAC3D,OAAO,OAAO,MAAM,UAAU,MAAM,SAAS,KAAK,EAAE,QAAQ;;AAG9D,SAAS,kBAAkB,QAAmC;CAC5D,OAAO,OAAO,KAAK,WAAW;EAC5B,MAAM;EACN,IAAI,MAAM;EACX,EAAE;;AAGL,SAAS,WAAW,OAA0B;CAC5C,MAAM,WAAqB;EACzB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;EAC/D,SAAS,eAAe,MAAM;EAC/B;CAED,IAAI,iBAAiB,WACnB,SAAS,OAAO,MAAM;CAGxB,OAAO;;AAGT,SAAS,kCAAkC,OAAyB;CAClE,IAAI,EAAE,iBAAiB,YACrB,OAAO;CAGT,OAAO,MAAM,SAAS,cAAc,MAAM,SAAS,cAAc,MAAM,SAAS;;AAGlF,SAAS,cAAc,KAAmB;CACxC,OAAO,IAAI,WAAW,eAAe,IAAI,WAAW,YAAY,IAAI,WAAW;;AAGjF,SAAS,OAAU,QAAkB;CACnC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC;;AAGpC,SAAS,aAAa,OAAyB;CAC7C,OAAO,UAAU,QAAQ,MAAM,OAAO,KAAK,UAAU,MAAM,WAAW,EAAE,CAAC;;AAG3E,SAAS,kBAAkB,UAAwC;CACjE,IAAI,CAAC,YAAY,SAAS,OAAO,WAAW,GAC1C,OAAO;CAGT,OAAO,SAAS,OACb,KAAK,UAAU;EACd,MAAM,UAAU,MAAM,UAAU,IAAI,MAAM,YAAY;EACtD,MAAM,iBACJ,MAAM,oBAAoB,WAAW,IACjC,KACA,4BAA4B,MAAM,oBAC/B,KAAK,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI,YAAY,CAC7C,KAAK,KAAK;EAEnB,OAAO,KAAK,MAAM,OAAO,QAAQ,mBAAmB,MAAM,YAAY,qBAAqB,MAAM,eAAe;GAChH,CACD,KAAK,cAAc;;AAGxB,SAAS,sBAAsB,YAAgC,iBAAsE;CACnI,IAAI,oBAAoB,OACtB,OAAO,WAAW,IAAI,sBAAsB;CAG9C,MAAM,WAAW,IAAI,IAAI,gBAAgB;CACzC,OAAO,WAAW,QAAQ,cAAc,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,sBAAsB;;AAGhG,SAAS,sBAAsB,KAAyC;CACtE,OAAO;EACL,GAAG;EACH,UAAU,EAAE,GAAG,IAAI,UAAU;EAC9B;;AAGH,eAAe,WAAW,OAAgC;CACxD,MAAM,QAAQ,IAAI,aAAa,CAAC,OAAO,MAAM;CAC7C,MAAM,SAAS,MAAM,WAAW,OAAO,OAAO,OAAO,WAAW,MAAM;CAItE,OAAO,UAHK,MAAM,KAAK,IAAI,WAAW,OAAO,CAAC,CAC3C,KAAK,SAAS,KAAK,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CACjD,KAAK,GACY;;AAGtB,SAAS,qBAAqB,MAAc,aAAqC;CAC/E,MAAM,UAAU,KAAK,MAAM;CAE3B,IAAI,CAAC,SACH,OAAO;CAGT,IAAI,aAAa,SAAS,oBAAoB,EAAE;EAM9C,MAAM,WALY,QACf,MAAM,QAAQ,CACd,QAAQ,SAAS,KAAK,WAAW,QAAQ,CAAC,CAC1C,KAAK,SAAS,KAAK,MAAM,EAAe,CAAC,MAAM,CAAC,CAChD,QAAQ,SAAS,QAAQ,SAAS,SACX,CAAC,GAAG,GAAG;EAEjC,IAAI,CAAC,UACH,OAAO;EAGT,IAAI;GACF,OAAO,KAAK,MAAM,SAAS;UACrB;GACN,OAAO;;;CAIX,IAAI;EACF,OAAO,KAAK,MAAM,QAAQ;SACpB;EACN,OAAO;;;AAIX,SAAS,eAAe,OAA6C;CACnE,OAAO,SAAS,MAAM,IAAI,WAAW,SAAS,MAAM,UAAU,KAAA,KAAa,MAAM,UAAU;;AAG7F,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { B as HephRuntime, q as HephJob } from "./index-CdsI9z7r.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../worker/src/index.d.ts
|
|
4
|
+
interface CreateHephWorkerOptions {
|
|
5
|
+
heph: HephRuntime;
|
|
6
|
+
}
|
|
7
|
+
interface HephWorker {
|
|
8
|
+
handle(job: HephJob): Promise<void>;
|
|
9
|
+
start(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
declare function createHephWorker(options: CreateHephWorkerOptions): HephWorker;
|
|
12
|
+
declare function handleHephJob(heph: HephRuntime, job: HephJob): Promise<void>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CreateHephWorkerOptions, HephWorker, createHephWorker, handleHephJob };
|
|
15
|
+
//# sourceMappingURL=worker.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.mts","names":[],"sources":["../../worker/src/index.ts"],"mappings":";;;UAEiB,uBAAA;EACf,IAAA,EAAM,WAAA;AAAA;AAAA,UAGS,UAAA;EACf,MAAA,CAAO,GAAA,EAAK,OAAA,GAAU,OAAA;EACtB,KAAA,IAAS,OAAA;AAAA;AAAA,iBAGK,gBAAA,CAAiB,OAAA,EAAS,uBAAA,GAA0B,UAAA;AAAA,iBAWpD,aAAA,CAAc,IAAA,EAAM,WAAA,EAAa,GAAA,EAAK,OAAA,GAAU,OAAA"}
|
package/dist/worker.mjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region ../worker/src/index.ts
|
|
2
|
+
function createHephWorker(options) {
|
|
3
|
+
return {
|
|
4
|
+
handle(job) {
|
|
5
|
+
return options.heph.handleJob(job);
|
|
6
|
+
},
|
|
7
|
+
start() {
|
|
8
|
+
return options.heph.startWorker();
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function handleHephJob(heph, job) {
|
|
13
|
+
return heph.handleJob(job);
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { createHephWorker, handleHephJob };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.mjs","names":[],"sources":["../../worker/src/index.ts"],"sourcesContent":["import type { HephJob, HephRuntime } from \"@heph/core\";\n\nexport interface CreateHephWorkerOptions {\n heph: HephRuntime;\n}\n\nexport interface HephWorker {\n handle(job: HephJob): Promise<void>;\n start(): Promise<void>;\n}\n\nexport function createHephWorker(options: CreateHephWorkerOptions): HephWorker {\n return {\n handle(job) {\n return options.heph.handleJob(job);\n },\n start() {\n return options.heph.startWorker();\n }\n };\n}\n\nexport function handleHephJob(heph: HephRuntime, job: HephJob): Promise<void> {\n return heph.handleJob(job);\n}\n"],"mappings":";AAWA,SAAgB,iBAAiB,SAA8C;CAC7E,OAAO;EACL,OAAO,KAAK;GACV,OAAO,QAAQ,KAAK,UAAU,IAAI;;EAEpC,QAAQ;GACN,OAAO,QAAQ,KAAK,aAAa;;EAEpC;;AAGH,SAAgB,cAAc,MAAmB,KAA6B;CAC5E,OAAO,KAAK,UAAU,IAAI"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@otakumesi/heph",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Forge stateful AI agents in your Hono app.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
9
|
+
"import": "./dist/index.mjs"
|
|
10
|
+
},
|
|
11
|
+
"./core": {
|
|
12
|
+
"types": "./dist/core.d.mts",
|
|
13
|
+
"import": "./dist/core.mjs"
|
|
14
|
+
},
|
|
15
|
+
"./hono": {
|
|
16
|
+
"types": "./dist/hono.d.mts",
|
|
17
|
+
"import": "./dist/hono.mjs"
|
|
18
|
+
},
|
|
19
|
+
"./mcp": {
|
|
20
|
+
"types": "./dist/mcp.d.mts",
|
|
21
|
+
"import": "./dist/mcp.mjs"
|
|
22
|
+
},
|
|
23
|
+
"./sqlite": {
|
|
24
|
+
"types": "./dist/sqlite.d.mts",
|
|
25
|
+
"import": "./dist/sqlite.mjs"
|
|
26
|
+
},
|
|
27
|
+
"./skills": {
|
|
28
|
+
"types": "./dist/skills.d.mts",
|
|
29
|
+
"import": "./dist/skills.mjs"
|
|
30
|
+
},
|
|
31
|
+
"./worker": {
|
|
32
|
+
"types": "./dist/worker.d.mts",
|
|
33
|
+
"import": "./dist/worker.mjs"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"main": "./dist/index.mjs",
|
|
37
|
+
"types": "./dist/index.d.mts",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
],
|
|
41
|
+
"bin": {
|
|
42
|
+
"heph": "dist/cli.mjs"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"better-sqlite3": "^12.5.0",
|
|
46
|
+
"hono": "^4.10.7",
|
|
47
|
+
"jiti": "^2.7.0",
|
|
48
|
+
"zod": "^4.1.12"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
52
|
+
"@types/node": "^24.10.1",
|
|
53
|
+
"tsdown": "^0.22.0",
|
|
54
|
+
"typescript": "^5.9.3",
|
|
55
|
+
"vitest": "^4.0.14",
|
|
56
|
+
"@heph/cli": "0.0.1",
|
|
57
|
+
"@heph/core": "0.0.1",
|
|
58
|
+
"@heph/worker": "0.0.1",
|
|
59
|
+
"@heph/server-hono": "0.0.1",
|
|
60
|
+
"@heph/sqlite": "0.0.1"
|
|
61
|
+
},
|
|
62
|
+
"scripts": {
|
|
63
|
+
"build": "tsdown",
|
|
64
|
+
"test": "vitest run --passWithNoTests",
|
|
65
|
+
"typecheck": "tsc --noEmit"
|
|
66
|
+
}
|
|
67
|
+
}
|