@axiom-lattice/protocols 2.1.51 → 2.1.53

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/protocols@2.1.51 build /home/runner/work/agentic/agentic/packages/protocols
2
+ > @axiom-lattice/protocols@2.1.53 build /home/runner/work/agentic/agentic/packages/protocols
3
3
  > tsup src/index.ts --format cjs,esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,13 +8,13 @@
8
8
  CLI Target: es2020
9
9
  CJS Build start
10
10
  ESM Build start
11
- CJS dist/index.js 6.69 KB
12
- CJS dist/index.js.map 45.71 KB
13
- CJS ⚡️ Build success in 227ms
14
11
  ESM dist/index.mjs 4.78 KB
15
12
  ESM dist/index.mjs.map 43.41 KB
16
- ESM ⚡️ Build success in 228ms
13
+ ESM ⚡️ Build success in 188ms
14
+ CJS dist/index.js 6.69 KB
15
+ CJS dist/index.js.map 45.75 KB
16
+ CJS ⚡️ Build success in 207ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 16795ms
19
- DTS dist/index.d.ts 130.75 KB
20
- DTS dist/index.d.mts 130.75 KB
18
+ DTS ⚡️ Build success in 14394ms
19
+ DTS dist/index.d.ts 134.29 KB
20
+ DTS dist/index.d.mts 134.29 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @axiom-lattice/protocols
2
2
 
3
+ ## 2.1.53
4
+
5
+ ### Patch Changes
6
+
7
+ - 075a384: add skill graph, tenant url
8
+
9
+ ## 2.1.52
10
+
11
+ ### Patch Changes
12
+
13
+ - acdaec8: add read image file via llm
14
+
3
15
  ## 2.1.51
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -104,6 +104,8 @@ interface LLMConfig {
104
104
  baseURL?: string;
105
105
  modelKwargs?: Record<string, any>;
106
106
  extra?: Record<string, any>;
107
+ /** Whether the model supports vision/image inputs for multimodal processing */
108
+ supportsVision?: boolean;
107
109
  }
108
110
  /**
109
111
  * 模型Lattice协议接口
@@ -2139,6 +2141,7 @@ interface ConnectionEntry {
2139
2141
  updatedAt: string;
2140
2142
  }
2141
2143
  interface ConnectionStore {
2144
+ listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
2142
2145
  listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
2143
2146
  getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
2144
2147
  create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
@@ -3480,6 +3483,7 @@ interface EvalStore {
3480
3483
  getResultsByRun(tenantId: string, runId: string): Promise<EvalRunResult[]>;
3481
3484
  createRunResult(tenantId: string, runId: string, id: string, data: Omit<EvalRunResult, 'id' | 'runId' | 'createdAt'>): Promise<EvalRunResult>;
3482
3485
  updateRunResult(tenantId: string, id: string, updates: Partial<EvalRunResult>): Promise<EvalRunResult | null>;
3486
+ deleteRunResult(tenantId: string, id: string): Promise<boolean>;
3483
3487
  getProjectReport(tenantId: string, projectId: string): Promise<EvalProjectReport | null>;
3484
3488
  }
3485
3489
 
@@ -3501,6 +3505,14 @@ interface TaskItem {
3501
3505
  * Tenant identifier
3502
3506
  */
3503
3507
  tenantId: string;
3508
+ /**
3509
+ * Workspace identifier (from runConfig)
3510
+ */
3511
+ workspaceId?: string;
3512
+ /**
3513
+ * Project identifier (from runConfig)
3514
+ */
3515
+ projectId?: string;
3504
3516
  /**
3505
3517
  * Owner type — either a user or an agent
3506
3518
  */
@@ -3520,7 +3532,7 @@ interface TaskItem {
3520
3532
  /**
3521
3533
  * Task status
3522
3534
  */
3523
- status: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3535
+ status: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3524
3536
  /**
3525
3537
  * Task priority level
3526
3538
  */
@@ -3553,6 +3565,22 @@ interface TaskItem {
3553
3565
  * Task last update timestamp
3554
3566
  */
3555
3567
  updatedAt: Date;
3568
+ /**
3569
+ * Whether this task requires review before completion
3570
+ */
3571
+ requireReview?: boolean;
3572
+ /**
3573
+ * IDs of tasks this task depends on
3574
+ */
3575
+ dependencies?: string[];
3576
+ /**
3577
+ * Task result output
3578
+ */
3579
+ result?: string;
3580
+ /**
3581
+ * Reason for task failure (when status is 'failed')
3582
+ */
3583
+ failureReason?: string;
3556
3584
  }
3557
3585
  /**
3558
3586
  * Create task request type
@@ -3569,11 +3597,19 @@ interface CreateTaskRequest {
3569
3597
  /**
3570
3598
  * Task status — defaults to 'pending' if not provided
3571
3599
  */
3572
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3600
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3573
3601
  /**
3574
3602
  * Task priority level — defaults to 'medium' if not provided
3575
3603
  */
3576
3604
  priority?: 'low' | 'medium' | 'high';
3605
+ /**
3606
+ * Workspace identifier
3607
+ */
3608
+ workspaceId?: string;
3609
+ /**
3610
+ * Project identifier
3611
+ */
3612
+ projectId?: string;
3577
3613
  /**
3578
3614
  * Optional due date as ISO string
3579
3615
  */
@@ -3602,6 +3638,22 @@ interface CreateTaskRequest {
3602
3638
  * Owner identifier — defaults based on context if not provided
3603
3639
  */
3604
3640
  ownerId?: string;
3641
+ /**
3642
+ * Whether this task requires review before completion
3643
+ */
3644
+ requireReview?: boolean;
3645
+ /**
3646
+ * IDs of tasks this task depends on
3647
+ */
3648
+ dependencies?: string[];
3649
+ /**
3650
+ * Task result output
3651
+ */
3652
+ result?: string;
3653
+ /**
3654
+ * Reason for task failure (when status is 'failed')
3655
+ */
3656
+ failureReason?: string;
3605
3657
  }
3606
3658
  /**
3607
3659
  * Update task request type
@@ -3618,11 +3670,19 @@ interface UpdateTaskRequest {
3618
3670
  /**
3619
3671
  * Task status
3620
3672
  */
3621
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3673
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3622
3674
  /**
3623
3675
  * Task priority level
3624
3676
  */
3625
3677
  priority?: 'low' | 'medium' | 'high';
3678
+ /**
3679
+ * Workspace identifier
3680
+ */
3681
+ workspaceId?: string;
3682
+ /**
3683
+ * Project identifier
3684
+ */
3685
+ projectId?: string;
3626
3686
  /**
3627
3687
  * Optional due date as ISO string
3628
3688
  */
@@ -3651,6 +3711,22 @@ interface UpdateTaskRequest {
3651
3711
  * Owner identifier
3652
3712
  */
3653
3713
  ownerId?: string;
3714
+ /**
3715
+ * Whether this task requires review before completion
3716
+ */
3717
+ requireReview?: boolean;
3718
+ /**
3719
+ * IDs of tasks this task depends on
3720
+ */
3721
+ dependencies?: string[];
3722
+ /**
3723
+ * Task result output
3724
+ */
3725
+ result?: string;
3726
+ /**
3727
+ * Reason for task failure (when status is 'failed')
3728
+ */
3729
+ failureReason?: string;
3654
3730
  }
3655
3731
  /**
3656
3732
  * Task list filter criteria
@@ -3676,6 +3752,14 @@ interface TaskListFilter {
3676
3752
  * Filter by priority level
3677
3753
  */
3678
3754
  priority?: string;
3755
+ /**
3756
+ * Filter by workspace ID
3757
+ */
3758
+ workspaceId?: string;
3759
+ /**
3760
+ * Filter by project ID
3761
+ */
3762
+ projectId?: string;
3679
3763
  /**
3680
3764
  * Filter by parent task ID
3681
3765
  */
@@ -3742,6 +3826,52 @@ interface TaskStore {
3742
3826
  delete(tenantId: string, id: string): Promise<boolean>;
3743
3827
  }
3744
3828
 
3829
+ /**
3830
+ * TaskWorkItemProtocol
3831
+ *
3832
+ * Work item protocol for event-sourced task change tracking.
3833
+ * Every status change or action on a TaskItem produces one TaskWorkItem.
3834
+ */
3835
+ interface TaskWorkItem {
3836
+ id: string;
3837
+ taskId: string;
3838
+ tenantId: string;
3839
+ workspaceId?: string;
3840
+ projectId?: string;
3841
+ action: string;
3842
+ actor: string;
3843
+ threadId?: string;
3844
+ summary?: string;
3845
+ detail?: Record<string, unknown>;
3846
+ attempt?: number;
3847
+ createdAt: Date;
3848
+ }
3849
+ interface CreateWorkItemRequest {
3850
+ taskId: string;
3851
+ tenantId: string;
3852
+ workspaceId?: string;
3853
+ projectId?: string;
3854
+ action: string;
3855
+ actor: string;
3856
+ threadId?: string;
3857
+ summary?: string;
3858
+ detail?: Record<string, unknown>;
3859
+ attempt?: number;
3860
+ }
3861
+ interface TaskWorkItemListFilter {
3862
+ tenantId: string;
3863
+ taskId: string;
3864
+ workspaceId?: string;
3865
+ projectId?: string;
3866
+ action?: string;
3867
+ limit?: number;
3868
+ offset?: number;
3869
+ }
3870
+ interface TaskWorkItemStore {
3871
+ create(params: CreateWorkItemRequest): Promise<TaskWorkItem>;
3872
+ list(filter: TaskWorkItemListFilter): Promise<TaskWorkItem[]>;
3873
+ }
3874
+
3745
3875
  /**
3746
3876
  * ChannelAdapterProtocol
3747
3877
  */
@@ -4410,6 +4540,18 @@ interface Plugin {
4410
4540
  * Builder 在构建中间件之前从所有启用的插件中收集。
4411
4541
  */
4412
4542
  skills?: Record<string, string>;
4543
+ /**
4544
+ * 插件贡献的 Agent 定义(以 agent key 为键)。
4545
+ * 在租户首次访问时通过 ensurePluginAgentsForTenant 按租户注册到
4546
+ * AgentLatticeManager,与 builtin agents 模式一致。所有租户全局可用。
4547
+ */
4548
+ agents?: Record<string, AgentConfig>;
4549
+ /**
4550
+ * 插件贡献的 Store 实现(以 store type 为键)。
4551
+ * 在 configureStores 时通过 customStores 机制自动注册到 StoreLatticeManager。
4552
+ * 支持工厂函数(延迟初始化)或实例对象。
4553
+ */
4554
+ stores?: Record<string, object | (() => object)>;
4413
4555
  }
4414
4556
 
4415
4557
  /**
@@ -4475,4 +4617,4 @@ type Timestamp = number;
4475
4617
  */
4476
4618
  type Callback<T = any, R = void> = (data: T) => R | Promise<R>;
4477
4619
 
4478
- export { type A2AApiKeyEntry, type A2AApiKeyRecord, type A2AApiKeyStore, type A2AArtifact, type A2AAuthContext, type A2ACapabilities, type A2AConfig, type A2ADataPart, type A2AFilePart, type A2AMessage, type A2APart, type A2AProvider, type A2APushNotification, type A2ARemoteAgentConfig, type A2ASSEEvent, type A2ASkill, type A2ATask, type A2ATaskArtifactUpdatePayload, type A2ATaskSendRequest, type A2ATaskState, type A2ATaskStatus, type A2ATaskUpdatePayload, type A2ATextPart, A2A_DEFAULT_CAPABILITIES, A2A_DEFAULT_INPUT_MODES, A2A_DEFAULT_OUTPUT_MODES, type AgentCard, type AgentClient, type AgentConfig, type AgentConfigWithTools, type AgentLatticeProtocol, type AgentMenuConfig, type AgentMiddlewareConfig, type AgentRunConfig, AgentType, type Assistant, type AssistantMessage, type AssistantStore, type Attachment, type AvailableModule, type BaseLatticeProtocol, type BaseMessage, type Binding, type BindingRegistry, type BootstrapFilesConfig, type BrowserMiddlewareConfig, type Callback, type ChannelAdapter, type ChannelInstallation, type ChannelInstallationStore, type ChannelInstallationType, type ClawMiddlewareConfig, type CodeEvalMiddlewareConfig, type Collection, type CollectionField, type CollectionFieldType, type CollectionMiddlewareConfig, type CollectionSchema, type CollectionStore, type ConnectionEntry, type ConnectionStore, type CreateA2AApiKeyInput, type CreateAssistantRequest, type CreateBindingInput, type CreateChannelInstallationRequest, type CreateCollectionRequest, type CreateDatabaseConfigRequest, type CreateEvalCaseRequest, type CreateEvalProjectRequest, type CreateEvalRunRequest, type CreateEvalSuiteRequest, type CreateMcpServerConfigRequest, type CreateMenuItemInput, type CreateMetricsServerConfigRequest, type CreateProjectRequest, type CreateRunStepRequest, type CreateShareRequest, type CreateSkillRequest, type CreateTaskRequest, type CreateTenantRequest, type CreateThreadRequest, type CreateUserRequest, type CreateUserTenantLinkRequest, type CreateWorkflowRunRequest, type CreateWorkspaceRequest, type CustomMenuConfig, type DataSource, type DatabaseConfig, type DatabaseConfigEntry, type DatabaseConfigStore, type DatabaseType, type DeepAgentConfig, type DeveloperMessage, type DispatchResult, type EmbeddingsConfig, type EmbeddingsLatticeProtocol, type EvalCase, type EvalProject, type EvalProjectReport, type EvalRun, type EvalRunResult, type EvalStore, type EvalSuite, type ExecuteSqlQueryRequest, type ExecuteSqlQueryResponse, type FilterCondition, type GraphBuildOptions, type HtmlMenuConfig, type ID, type InboundMessage, type InternalAgentNode, type InternalBaseNode, type InternalDSL, type InternalEdge, type InternalInput, type InternalInputNode, type InternalMapNode, type InternalNode, type InternalNodeConfig, type InternalOutput, type InternalState, type InternalStateField, type InternalTerminalNode, type InterruptMessage, type LLMConfig, type LarkChannelInstallationConfig, type LatticeError, type LatticeEventBus, type LatticeMessage, type LoggerClient, type LoggerConfig, type LoggerContext, type LoggerLatticeProtocol, LoggerType, type McpClient, type McpClientOptions, type McpConnectionStatus, type McpLatticeMessage, type McpLatticeProtocol, McpMessageType, type McpServerConfig, type McpServerConfigEntry, type McpServerConfigStore, type McpStats, type McpTool, type McpToolResult, type McpTransportType, type MemoryClient, type MemoryConfig, type MemoryLatticeProtocol, MemoryType, type MenuContentConfig, type MenuContentType, type MenuItem, type MenuRegistry, type MenuTarget, type Message, type MessageChunk, type MessageChunkType, MessageChunkTypes, type MessageContext, type MessageMiddleware, type MetricColumn, type MetricDataPoint, type MetricMeta, type MetricQueryResult, type MetricsMiddlewareConfig, type MetricsServerConfig, type MetricsServerConfigEntry, type MetricsServerConfigStore, type MetricsServerType, type MiddlewareType, type ModelLatticeProtocol, type OutboundMessage, type PaginatedResult, type PaginationParams, type PinoFileOptions, type Plugin, type PluginConnection, type PluginConnectionFieldSchema, type PluginConnectionTestResult, type PluginContext, type PluginDiscoveredResource, type PluginMeta, type PluginMetaOutput, type PluginMiddlewareFactory, type PluginToolMeta, type ProcessingAgentConfig, type Project, type ProjectStore, type QueryParams, type QueryResultFormat, type QueryWorkflowRunsOptions, type QueryWorkflowRunsResult, type QueueClient, type QueueConfig, type QueueLatticeProtocol, type QueueResult, QueueType, type ReactAgentConfig, type ReplyTarget, type ResourceAddress, type ResourceResolver, type Result, type RunStep, type SandboxMiddlewareConfig, type ScheduleClient, type ScheduleConfig, type ScheduleCronOptions, ScheduleExecutionType, type ScheduleLatticeProtocol, type ScheduleOnceOptions, type ScheduleStorage, ScheduleType, type ScheduledTaskDefinition, ScheduledTaskStatus, type SchedulerMiddlewareConfig, type SemanticMetricsFilter, type SemanticMetricsQueryRequest, type SemanticMetricsQueryResponse, type SemanticMetricsServerConfig, type ShareRecord, type ShareResult, type ShareVisibility, type SharedResourceStore, type Skill, type SkillClient, type SkillClientType, type SkillConfig, type SkillLatticeProtocol, type SkillStore, type SkillStoreContext, type SqlMiddlewareConfig, type StepStatus, type StepType, type StorageType, type SystemMessage, type TableQueryRequest, type TableQueryResponse, type TaskHandler, type TaskItem, type TaskListFilter, type TaskStore, type TeamAgentConfig, type TeamTeammateConfig, type Tenant, type TenantStatus, type TenantStore, type TestMcpServerToolsResponse, type Thread, type ThreadStore, type Timestamp, type ToolCall, type ToolConfig, type ToolExecutor, type ToolLatticeProtocol, type ToolMessage, type TopologyEdge, type UIComponent, UIComponentType, type UIConfig, type UILatticeProtocol, type UpdateChannelInstallationRequest, type UpdateCollectionRequest, type UpdateDatabaseConfigRequest, type UpdateMcpServerConfigRequest, type UpdateMenuItemInput, type UpdateMetricsServerConfigRequest, type UpdateProjectRequest, type UpdateRunStepRequest, type UpdateTaskRequest, type UpdateTenantRequest, type UpdateUserRequest, type UpdateUserTenantLinkRequest, type UpdateWorkflowRunRequest, type UpdateWorkspaceRequest, type User, type UserMessage, type UserStatus, type UserStore, type UserTenantLink, type UserTenantLinkStore, type UserTenantRole, type VectorStoreConfig, type VectorStoreCreateParams, type VectorStoreLatticeProtocol, type VectorStoreProvider, type WechatChannelInstallationConfig, type WorkflowAgentConfig, type WorkflowRun, type WorkflowRunStatus, type WorkflowTrackingStore, type Workspace, type WorkspaceStore, type YamlAgentStep, type YamlMapStep, type YamlParallelBlock, type YamlTopLevelStep, type YamlWorkflow, getSubAgentsFromConfig, getToolsFromConfig, hasTools, isA2ARemoteAgentConfig, isDeepAgentConfig, isProcessingAgentConfig, isTeamAgentConfig, isWorkflowAgentConfig };
4620
+ export { type A2AApiKeyEntry, type A2AApiKeyRecord, type A2AApiKeyStore, type A2AArtifact, type A2AAuthContext, type A2ACapabilities, type A2AConfig, type A2ADataPart, type A2AFilePart, type A2AMessage, type A2APart, type A2AProvider, type A2APushNotification, type A2ARemoteAgentConfig, type A2ASSEEvent, type A2ASkill, type A2ATask, type A2ATaskArtifactUpdatePayload, type A2ATaskSendRequest, type A2ATaskState, type A2ATaskStatus, type A2ATaskUpdatePayload, type A2ATextPart, A2A_DEFAULT_CAPABILITIES, A2A_DEFAULT_INPUT_MODES, A2A_DEFAULT_OUTPUT_MODES, type AgentCard, type AgentClient, type AgentConfig, type AgentConfigWithTools, type AgentLatticeProtocol, type AgentMenuConfig, type AgentMiddlewareConfig, type AgentRunConfig, AgentType, type Assistant, type AssistantMessage, type AssistantStore, type Attachment, type AvailableModule, type BaseLatticeProtocol, type BaseMessage, type Binding, type BindingRegistry, type BootstrapFilesConfig, type BrowserMiddlewareConfig, type Callback, type ChannelAdapter, type ChannelInstallation, type ChannelInstallationStore, type ChannelInstallationType, type ClawMiddlewareConfig, type CodeEvalMiddlewareConfig, type Collection, type CollectionField, type CollectionFieldType, type CollectionMiddlewareConfig, type CollectionSchema, type CollectionStore, type ConnectionEntry, type ConnectionStore, type CreateA2AApiKeyInput, type CreateAssistantRequest, type CreateBindingInput, type CreateChannelInstallationRequest, type CreateCollectionRequest, type CreateDatabaseConfigRequest, type CreateEvalCaseRequest, type CreateEvalProjectRequest, type CreateEvalRunRequest, type CreateEvalSuiteRequest, type CreateMcpServerConfigRequest, type CreateMenuItemInput, type CreateMetricsServerConfigRequest, type CreateProjectRequest, type CreateRunStepRequest, type CreateShareRequest, type CreateSkillRequest, type CreateTaskRequest, type CreateTenantRequest, type CreateThreadRequest, type CreateUserRequest, type CreateUserTenantLinkRequest, type CreateWorkItemRequest, type CreateWorkflowRunRequest, type CreateWorkspaceRequest, type CustomMenuConfig, type DataSource, type DatabaseConfig, type DatabaseConfigEntry, type DatabaseConfigStore, type DatabaseType, type DeepAgentConfig, type DeveloperMessage, type DispatchResult, type EmbeddingsConfig, type EmbeddingsLatticeProtocol, type EvalCase, type EvalProject, type EvalProjectReport, type EvalRun, type EvalRunResult, type EvalStore, type EvalSuite, type ExecuteSqlQueryRequest, type ExecuteSqlQueryResponse, type FilterCondition, type GraphBuildOptions, type HtmlMenuConfig, type ID, type InboundMessage, type InternalAgentNode, type InternalBaseNode, type InternalDSL, type InternalEdge, type InternalInput, type InternalInputNode, type InternalMapNode, type InternalNode, type InternalNodeConfig, type InternalOutput, type InternalState, type InternalStateField, type InternalTerminalNode, type InterruptMessage, type LLMConfig, type LarkChannelInstallationConfig, type LatticeError, type LatticeEventBus, type LatticeMessage, type LoggerClient, type LoggerConfig, type LoggerContext, type LoggerLatticeProtocol, LoggerType, type McpClient, type McpClientOptions, type McpConnectionStatus, type McpLatticeMessage, type McpLatticeProtocol, McpMessageType, type McpServerConfig, type McpServerConfigEntry, type McpServerConfigStore, type McpStats, type McpTool, type McpToolResult, type McpTransportType, type MemoryClient, type MemoryConfig, type MemoryLatticeProtocol, MemoryType, type MenuContentConfig, type MenuContentType, type MenuItem, type MenuRegistry, type MenuTarget, type Message, type MessageChunk, type MessageChunkType, MessageChunkTypes, type MessageContext, type MessageMiddleware, type MetricColumn, type MetricDataPoint, type MetricMeta, type MetricQueryResult, type MetricsMiddlewareConfig, type MetricsServerConfig, type MetricsServerConfigEntry, type MetricsServerConfigStore, type MetricsServerType, type MiddlewareType, type ModelLatticeProtocol, type OutboundMessage, type PaginatedResult, type PaginationParams, type PinoFileOptions, type Plugin, type PluginConnection, type PluginConnectionFieldSchema, type PluginConnectionTestResult, type PluginContext, type PluginDiscoveredResource, type PluginMeta, type PluginMetaOutput, type PluginMiddlewareFactory, type PluginToolMeta, type ProcessingAgentConfig, type Project, type ProjectStore, type QueryParams, type QueryResultFormat, type QueryWorkflowRunsOptions, type QueryWorkflowRunsResult, type QueueClient, type QueueConfig, type QueueLatticeProtocol, type QueueResult, QueueType, type ReactAgentConfig, type ReplyTarget, type ResourceAddress, type ResourceResolver, type Result, type RunStep, type SandboxMiddlewareConfig, type ScheduleClient, type ScheduleConfig, type ScheduleCronOptions, ScheduleExecutionType, type ScheduleLatticeProtocol, type ScheduleOnceOptions, type ScheduleStorage, ScheduleType, type ScheduledTaskDefinition, ScheduledTaskStatus, type SchedulerMiddlewareConfig, type SemanticMetricsFilter, type SemanticMetricsQueryRequest, type SemanticMetricsQueryResponse, type SemanticMetricsServerConfig, type ShareRecord, type ShareResult, type ShareVisibility, type SharedResourceStore, type Skill, type SkillClient, type SkillClientType, type SkillConfig, type SkillLatticeProtocol, type SkillStore, type SkillStoreContext, type SqlMiddlewareConfig, type StepStatus, type StepType, type StorageType, type SystemMessage, type TableQueryRequest, type TableQueryResponse, type TaskHandler, type TaskItem, type TaskListFilter, type TaskStore, type TaskWorkItem, type TaskWorkItemListFilter, type TaskWorkItemStore, type TeamAgentConfig, type TeamTeammateConfig, type Tenant, type TenantStatus, type TenantStore, type TestMcpServerToolsResponse, type Thread, type ThreadStore, type Timestamp, type ToolCall, type ToolConfig, type ToolExecutor, type ToolLatticeProtocol, type ToolMessage, type TopologyEdge, type UIComponent, UIComponentType, type UIConfig, type UILatticeProtocol, type UpdateChannelInstallationRequest, type UpdateCollectionRequest, type UpdateDatabaseConfigRequest, type UpdateMcpServerConfigRequest, type UpdateMenuItemInput, type UpdateMetricsServerConfigRequest, type UpdateProjectRequest, type UpdateRunStepRequest, type UpdateTaskRequest, type UpdateTenantRequest, type UpdateUserRequest, type UpdateUserTenantLinkRequest, type UpdateWorkflowRunRequest, type UpdateWorkspaceRequest, type User, type UserMessage, type UserStatus, type UserStore, type UserTenantLink, type UserTenantLinkStore, type UserTenantRole, type VectorStoreConfig, type VectorStoreCreateParams, type VectorStoreLatticeProtocol, type VectorStoreProvider, type WechatChannelInstallationConfig, type WorkflowAgentConfig, type WorkflowRun, type WorkflowRunStatus, type WorkflowTrackingStore, type Workspace, type WorkspaceStore, type YamlAgentStep, type YamlMapStep, type YamlParallelBlock, type YamlTopLevelStep, type YamlWorkflow, getSubAgentsFromConfig, getToolsFromConfig, hasTools, isA2ARemoteAgentConfig, isDeepAgentConfig, isProcessingAgentConfig, isTeamAgentConfig, isWorkflowAgentConfig };
package/dist/index.d.ts CHANGED
@@ -104,6 +104,8 @@ interface LLMConfig {
104
104
  baseURL?: string;
105
105
  modelKwargs?: Record<string, any>;
106
106
  extra?: Record<string, any>;
107
+ /** Whether the model supports vision/image inputs for multimodal processing */
108
+ supportsVision?: boolean;
107
109
  }
108
110
  /**
109
111
  * 模型Lattice协议接口
@@ -2139,6 +2141,7 @@ interface ConnectionEntry {
2139
2141
  updatedAt: string;
2140
2142
  }
2141
2143
  interface ConnectionStore {
2144
+ listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
2142
2145
  listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
2143
2146
  getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
2144
2147
  create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
@@ -3480,6 +3483,7 @@ interface EvalStore {
3480
3483
  getResultsByRun(tenantId: string, runId: string): Promise<EvalRunResult[]>;
3481
3484
  createRunResult(tenantId: string, runId: string, id: string, data: Omit<EvalRunResult, 'id' | 'runId' | 'createdAt'>): Promise<EvalRunResult>;
3482
3485
  updateRunResult(tenantId: string, id: string, updates: Partial<EvalRunResult>): Promise<EvalRunResult | null>;
3486
+ deleteRunResult(tenantId: string, id: string): Promise<boolean>;
3483
3487
  getProjectReport(tenantId: string, projectId: string): Promise<EvalProjectReport | null>;
3484
3488
  }
3485
3489
 
@@ -3501,6 +3505,14 @@ interface TaskItem {
3501
3505
  * Tenant identifier
3502
3506
  */
3503
3507
  tenantId: string;
3508
+ /**
3509
+ * Workspace identifier (from runConfig)
3510
+ */
3511
+ workspaceId?: string;
3512
+ /**
3513
+ * Project identifier (from runConfig)
3514
+ */
3515
+ projectId?: string;
3504
3516
  /**
3505
3517
  * Owner type — either a user or an agent
3506
3518
  */
@@ -3520,7 +3532,7 @@ interface TaskItem {
3520
3532
  /**
3521
3533
  * Task status
3522
3534
  */
3523
- status: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3535
+ status: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3524
3536
  /**
3525
3537
  * Task priority level
3526
3538
  */
@@ -3553,6 +3565,22 @@ interface TaskItem {
3553
3565
  * Task last update timestamp
3554
3566
  */
3555
3567
  updatedAt: Date;
3568
+ /**
3569
+ * Whether this task requires review before completion
3570
+ */
3571
+ requireReview?: boolean;
3572
+ /**
3573
+ * IDs of tasks this task depends on
3574
+ */
3575
+ dependencies?: string[];
3576
+ /**
3577
+ * Task result output
3578
+ */
3579
+ result?: string;
3580
+ /**
3581
+ * Reason for task failure (when status is 'failed')
3582
+ */
3583
+ failureReason?: string;
3556
3584
  }
3557
3585
  /**
3558
3586
  * Create task request type
@@ -3569,11 +3597,19 @@ interface CreateTaskRequest {
3569
3597
  /**
3570
3598
  * Task status — defaults to 'pending' if not provided
3571
3599
  */
3572
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3600
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3573
3601
  /**
3574
3602
  * Task priority level — defaults to 'medium' if not provided
3575
3603
  */
3576
3604
  priority?: 'low' | 'medium' | 'high';
3605
+ /**
3606
+ * Workspace identifier
3607
+ */
3608
+ workspaceId?: string;
3609
+ /**
3610
+ * Project identifier
3611
+ */
3612
+ projectId?: string;
3577
3613
  /**
3578
3614
  * Optional due date as ISO string
3579
3615
  */
@@ -3602,6 +3638,22 @@ interface CreateTaskRequest {
3602
3638
  * Owner identifier — defaults based on context if not provided
3603
3639
  */
3604
3640
  ownerId?: string;
3641
+ /**
3642
+ * Whether this task requires review before completion
3643
+ */
3644
+ requireReview?: boolean;
3645
+ /**
3646
+ * IDs of tasks this task depends on
3647
+ */
3648
+ dependencies?: string[];
3649
+ /**
3650
+ * Task result output
3651
+ */
3652
+ result?: string;
3653
+ /**
3654
+ * Reason for task failure (when status is 'failed')
3655
+ */
3656
+ failureReason?: string;
3605
3657
  }
3606
3658
  /**
3607
3659
  * Update task request type
@@ -3618,11 +3670,19 @@ interface UpdateTaskRequest {
3618
3670
  /**
3619
3671
  * Task status
3620
3672
  */
3621
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
3673
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
3622
3674
  /**
3623
3675
  * Task priority level
3624
3676
  */
3625
3677
  priority?: 'low' | 'medium' | 'high';
3678
+ /**
3679
+ * Workspace identifier
3680
+ */
3681
+ workspaceId?: string;
3682
+ /**
3683
+ * Project identifier
3684
+ */
3685
+ projectId?: string;
3626
3686
  /**
3627
3687
  * Optional due date as ISO string
3628
3688
  */
@@ -3651,6 +3711,22 @@ interface UpdateTaskRequest {
3651
3711
  * Owner identifier
3652
3712
  */
3653
3713
  ownerId?: string;
3714
+ /**
3715
+ * Whether this task requires review before completion
3716
+ */
3717
+ requireReview?: boolean;
3718
+ /**
3719
+ * IDs of tasks this task depends on
3720
+ */
3721
+ dependencies?: string[];
3722
+ /**
3723
+ * Task result output
3724
+ */
3725
+ result?: string;
3726
+ /**
3727
+ * Reason for task failure (when status is 'failed')
3728
+ */
3729
+ failureReason?: string;
3654
3730
  }
3655
3731
  /**
3656
3732
  * Task list filter criteria
@@ -3676,6 +3752,14 @@ interface TaskListFilter {
3676
3752
  * Filter by priority level
3677
3753
  */
3678
3754
  priority?: string;
3755
+ /**
3756
+ * Filter by workspace ID
3757
+ */
3758
+ workspaceId?: string;
3759
+ /**
3760
+ * Filter by project ID
3761
+ */
3762
+ projectId?: string;
3679
3763
  /**
3680
3764
  * Filter by parent task ID
3681
3765
  */
@@ -3742,6 +3826,52 @@ interface TaskStore {
3742
3826
  delete(tenantId: string, id: string): Promise<boolean>;
3743
3827
  }
3744
3828
 
3829
+ /**
3830
+ * TaskWorkItemProtocol
3831
+ *
3832
+ * Work item protocol for event-sourced task change tracking.
3833
+ * Every status change or action on a TaskItem produces one TaskWorkItem.
3834
+ */
3835
+ interface TaskWorkItem {
3836
+ id: string;
3837
+ taskId: string;
3838
+ tenantId: string;
3839
+ workspaceId?: string;
3840
+ projectId?: string;
3841
+ action: string;
3842
+ actor: string;
3843
+ threadId?: string;
3844
+ summary?: string;
3845
+ detail?: Record<string, unknown>;
3846
+ attempt?: number;
3847
+ createdAt: Date;
3848
+ }
3849
+ interface CreateWorkItemRequest {
3850
+ taskId: string;
3851
+ tenantId: string;
3852
+ workspaceId?: string;
3853
+ projectId?: string;
3854
+ action: string;
3855
+ actor: string;
3856
+ threadId?: string;
3857
+ summary?: string;
3858
+ detail?: Record<string, unknown>;
3859
+ attempt?: number;
3860
+ }
3861
+ interface TaskWorkItemListFilter {
3862
+ tenantId: string;
3863
+ taskId: string;
3864
+ workspaceId?: string;
3865
+ projectId?: string;
3866
+ action?: string;
3867
+ limit?: number;
3868
+ offset?: number;
3869
+ }
3870
+ interface TaskWorkItemStore {
3871
+ create(params: CreateWorkItemRequest): Promise<TaskWorkItem>;
3872
+ list(filter: TaskWorkItemListFilter): Promise<TaskWorkItem[]>;
3873
+ }
3874
+
3745
3875
  /**
3746
3876
  * ChannelAdapterProtocol
3747
3877
  */
@@ -4410,6 +4540,18 @@ interface Plugin {
4410
4540
  * Builder 在构建中间件之前从所有启用的插件中收集。
4411
4541
  */
4412
4542
  skills?: Record<string, string>;
4543
+ /**
4544
+ * 插件贡献的 Agent 定义(以 agent key 为键)。
4545
+ * 在租户首次访问时通过 ensurePluginAgentsForTenant 按租户注册到
4546
+ * AgentLatticeManager,与 builtin agents 模式一致。所有租户全局可用。
4547
+ */
4548
+ agents?: Record<string, AgentConfig>;
4549
+ /**
4550
+ * 插件贡献的 Store 实现(以 store type 为键)。
4551
+ * 在 configureStores 时通过 customStores 机制自动注册到 StoreLatticeManager。
4552
+ * 支持工厂函数(延迟初始化)或实例对象。
4553
+ */
4554
+ stores?: Record<string, object | (() => object)>;
4413
4555
  }
4414
4556
 
4415
4557
  /**
@@ -4475,4 +4617,4 @@ type Timestamp = number;
4475
4617
  */
4476
4618
  type Callback<T = any, R = void> = (data: T) => R | Promise<R>;
4477
4619
 
4478
- export { type A2AApiKeyEntry, type A2AApiKeyRecord, type A2AApiKeyStore, type A2AArtifact, type A2AAuthContext, type A2ACapabilities, type A2AConfig, type A2ADataPart, type A2AFilePart, type A2AMessage, type A2APart, type A2AProvider, type A2APushNotification, type A2ARemoteAgentConfig, type A2ASSEEvent, type A2ASkill, type A2ATask, type A2ATaskArtifactUpdatePayload, type A2ATaskSendRequest, type A2ATaskState, type A2ATaskStatus, type A2ATaskUpdatePayload, type A2ATextPart, A2A_DEFAULT_CAPABILITIES, A2A_DEFAULT_INPUT_MODES, A2A_DEFAULT_OUTPUT_MODES, type AgentCard, type AgentClient, type AgentConfig, type AgentConfigWithTools, type AgentLatticeProtocol, type AgentMenuConfig, type AgentMiddlewareConfig, type AgentRunConfig, AgentType, type Assistant, type AssistantMessage, type AssistantStore, type Attachment, type AvailableModule, type BaseLatticeProtocol, type BaseMessage, type Binding, type BindingRegistry, type BootstrapFilesConfig, type BrowserMiddlewareConfig, type Callback, type ChannelAdapter, type ChannelInstallation, type ChannelInstallationStore, type ChannelInstallationType, type ClawMiddlewareConfig, type CodeEvalMiddlewareConfig, type Collection, type CollectionField, type CollectionFieldType, type CollectionMiddlewareConfig, type CollectionSchema, type CollectionStore, type ConnectionEntry, type ConnectionStore, type CreateA2AApiKeyInput, type CreateAssistantRequest, type CreateBindingInput, type CreateChannelInstallationRequest, type CreateCollectionRequest, type CreateDatabaseConfigRequest, type CreateEvalCaseRequest, type CreateEvalProjectRequest, type CreateEvalRunRequest, type CreateEvalSuiteRequest, type CreateMcpServerConfigRequest, type CreateMenuItemInput, type CreateMetricsServerConfigRequest, type CreateProjectRequest, type CreateRunStepRequest, type CreateShareRequest, type CreateSkillRequest, type CreateTaskRequest, type CreateTenantRequest, type CreateThreadRequest, type CreateUserRequest, type CreateUserTenantLinkRequest, type CreateWorkflowRunRequest, type CreateWorkspaceRequest, type CustomMenuConfig, type DataSource, type DatabaseConfig, type DatabaseConfigEntry, type DatabaseConfigStore, type DatabaseType, type DeepAgentConfig, type DeveloperMessage, type DispatchResult, type EmbeddingsConfig, type EmbeddingsLatticeProtocol, type EvalCase, type EvalProject, type EvalProjectReport, type EvalRun, type EvalRunResult, type EvalStore, type EvalSuite, type ExecuteSqlQueryRequest, type ExecuteSqlQueryResponse, type FilterCondition, type GraphBuildOptions, type HtmlMenuConfig, type ID, type InboundMessage, type InternalAgentNode, type InternalBaseNode, type InternalDSL, type InternalEdge, type InternalInput, type InternalInputNode, type InternalMapNode, type InternalNode, type InternalNodeConfig, type InternalOutput, type InternalState, type InternalStateField, type InternalTerminalNode, type InterruptMessage, type LLMConfig, type LarkChannelInstallationConfig, type LatticeError, type LatticeEventBus, type LatticeMessage, type LoggerClient, type LoggerConfig, type LoggerContext, type LoggerLatticeProtocol, LoggerType, type McpClient, type McpClientOptions, type McpConnectionStatus, type McpLatticeMessage, type McpLatticeProtocol, McpMessageType, type McpServerConfig, type McpServerConfigEntry, type McpServerConfigStore, type McpStats, type McpTool, type McpToolResult, type McpTransportType, type MemoryClient, type MemoryConfig, type MemoryLatticeProtocol, MemoryType, type MenuContentConfig, type MenuContentType, type MenuItem, type MenuRegistry, type MenuTarget, type Message, type MessageChunk, type MessageChunkType, MessageChunkTypes, type MessageContext, type MessageMiddleware, type MetricColumn, type MetricDataPoint, type MetricMeta, type MetricQueryResult, type MetricsMiddlewareConfig, type MetricsServerConfig, type MetricsServerConfigEntry, type MetricsServerConfigStore, type MetricsServerType, type MiddlewareType, type ModelLatticeProtocol, type OutboundMessage, type PaginatedResult, type PaginationParams, type PinoFileOptions, type Plugin, type PluginConnection, type PluginConnectionFieldSchema, type PluginConnectionTestResult, type PluginContext, type PluginDiscoveredResource, type PluginMeta, type PluginMetaOutput, type PluginMiddlewareFactory, type PluginToolMeta, type ProcessingAgentConfig, type Project, type ProjectStore, type QueryParams, type QueryResultFormat, type QueryWorkflowRunsOptions, type QueryWorkflowRunsResult, type QueueClient, type QueueConfig, type QueueLatticeProtocol, type QueueResult, QueueType, type ReactAgentConfig, type ReplyTarget, type ResourceAddress, type ResourceResolver, type Result, type RunStep, type SandboxMiddlewareConfig, type ScheduleClient, type ScheduleConfig, type ScheduleCronOptions, ScheduleExecutionType, type ScheduleLatticeProtocol, type ScheduleOnceOptions, type ScheduleStorage, ScheduleType, type ScheduledTaskDefinition, ScheduledTaskStatus, type SchedulerMiddlewareConfig, type SemanticMetricsFilter, type SemanticMetricsQueryRequest, type SemanticMetricsQueryResponse, type SemanticMetricsServerConfig, type ShareRecord, type ShareResult, type ShareVisibility, type SharedResourceStore, type Skill, type SkillClient, type SkillClientType, type SkillConfig, type SkillLatticeProtocol, type SkillStore, type SkillStoreContext, type SqlMiddlewareConfig, type StepStatus, type StepType, type StorageType, type SystemMessage, type TableQueryRequest, type TableQueryResponse, type TaskHandler, type TaskItem, type TaskListFilter, type TaskStore, type TeamAgentConfig, type TeamTeammateConfig, type Tenant, type TenantStatus, type TenantStore, type TestMcpServerToolsResponse, type Thread, type ThreadStore, type Timestamp, type ToolCall, type ToolConfig, type ToolExecutor, type ToolLatticeProtocol, type ToolMessage, type TopologyEdge, type UIComponent, UIComponentType, type UIConfig, type UILatticeProtocol, type UpdateChannelInstallationRequest, type UpdateCollectionRequest, type UpdateDatabaseConfigRequest, type UpdateMcpServerConfigRequest, type UpdateMenuItemInput, type UpdateMetricsServerConfigRequest, type UpdateProjectRequest, type UpdateRunStepRequest, type UpdateTaskRequest, type UpdateTenantRequest, type UpdateUserRequest, type UpdateUserTenantLinkRequest, type UpdateWorkflowRunRequest, type UpdateWorkspaceRequest, type User, type UserMessage, type UserStatus, type UserStore, type UserTenantLink, type UserTenantLinkStore, type UserTenantRole, type VectorStoreConfig, type VectorStoreCreateParams, type VectorStoreLatticeProtocol, type VectorStoreProvider, type WechatChannelInstallationConfig, type WorkflowAgentConfig, type WorkflowRun, type WorkflowRunStatus, type WorkflowTrackingStore, type Workspace, type WorkspaceStore, type YamlAgentStep, type YamlMapStep, type YamlParallelBlock, type YamlTopLevelStep, type YamlWorkflow, getSubAgentsFromConfig, getToolsFromConfig, hasTools, isA2ARemoteAgentConfig, isDeepAgentConfig, isProcessingAgentConfig, isTeamAgentConfig, isWorkflowAgentConfig };
4620
+ export { type A2AApiKeyEntry, type A2AApiKeyRecord, type A2AApiKeyStore, type A2AArtifact, type A2AAuthContext, type A2ACapabilities, type A2AConfig, type A2ADataPart, type A2AFilePart, type A2AMessage, type A2APart, type A2AProvider, type A2APushNotification, type A2ARemoteAgentConfig, type A2ASSEEvent, type A2ASkill, type A2ATask, type A2ATaskArtifactUpdatePayload, type A2ATaskSendRequest, type A2ATaskState, type A2ATaskStatus, type A2ATaskUpdatePayload, type A2ATextPart, A2A_DEFAULT_CAPABILITIES, A2A_DEFAULT_INPUT_MODES, A2A_DEFAULT_OUTPUT_MODES, type AgentCard, type AgentClient, type AgentConfig, type AgentConfigWithTools, type AgentLatticeProtocol, type AgentMenuConfig, type AgentMiddlewareConfig, type AgentRunConfig, AgentType, type Assistant, type AssistantMessage, type AssistantStore, type Attachment, type AvailableModule, type BaseLatticeProtocol, type BaseMessage, type Binding, type BindingRegistry, type BootstrapFilesConfig, type BrowserMiddlewareConfig, type Callback, type ChannelAdapter, type ChannelInstallation, type ChannelInstallationStore, type ChannelInstallationType, type ClawMiddlewareConfig, type CodeEvalMiddlewareConfig, type Collection, type CollectionField, type CollectionFieldType, type CollectionMiddlewareConfig, type CollectionSchema, type CollectionStore, type ConnectionEntry, type ConnectionStore, type CreateA2AApiKeyInput, type CreateAssistantRequest, type CreateBindingInput, type CreateChannelInstallationRequest, type CreateCollectionRequest, type CreateDatabaseConfigRequest, type CreateEvalCaseRequest, type CreateEvalProjectRequest, type CreateEvalRunRequest, type CreateEvalSuiteRequest, type CreateMcpServerConfigRequest, type CreateMenuItemInput, type CreateMetricsServerConfigRequest, type CreateProjectRequest, type CreateRunStepRequest, type CreateShareRequest, type CreateSkillRequest, type CreateTaskRequest, type CreateTenantRequest, type CreateThreadRequest, type CreateUserRequest, type CreateUserTenantLinkRequest, type CreateWorkItemRequest, type CreateWorkflowRunRequest, type CreateWorkspaceRequest, type CustomMenuConfig, type DataSource, type DatabaseConfig, type DatabaseConfigEntry, type DatabaseConfigStore, type DatabaseType, type DeepAgentConfig, type DeveloperMessage, type DispatchResult, type EmbeddingsConfig, type EmbeddingsLatticeProtocol, type EvalCase, type EvalProject, type EvalProjectReport, type EvalRun, type EvalRunResult, type EvalStore, type EvalSuite, type ExecuteSqlQueryRequest, type ExecuteSqlQueryResponse, type FilterCondition, type GraphBuildOptions, type HtmlMenuConfig, type ID, type InboundMessage, type InternalAgentNode, type InternalBaseNode, type InternalDSL, type InternalEdge, type InternalInput, type InternalInputNode, type InternalMapNode, type InternalNode, type InternalNodeConfig, type InternalOutput, type InternalState, type InternalStateField, type InternalTerminalNode, type InterruptMessage, type LLMConfig, type LarkChannelInstallationConfig, type LatticeError, type LatticeEventBus, type LatticeMessage, type LoggerClient, type LoggerConfig, type LoggerContext, type LoggerLatticeProtocol, LoggerType, type McpClient, type McpClientOptions, type McpConnectionStatus, type McpLatticeMessage, type McpLatticeProtocol, McpMessageType, type McpServerConfig, type McpServerConfigEntry, type McpServerConfigStore, type McpStats, type McpTool, type McpToolResult, type McpTransportType, type MemoryClient, type MemoryConfig, type MemoryLatticeProtocol, MemoryType, type MenuContentConfig, type MenuContentType, type MenuItem, type MenuRegistry, type MenuTarget, type Message, type MessageChunk, type MessageChunkType, MessageChunkTypes, type MessageContext, type MessageMiddleware, type MetricColumn, type MetricDataPoint, type MetricMeta, type MetricQueryResult, type MetricsMiddlewareConfig, type MetricsServerConfig, type MetricsServerConfigEntry, type MetricsServerConfigStore, type MetricsServerType, type MiddlewareType, type ModelLatticeProtocol, type OutboundMessage, type PaginatedResult, type PaginationParams, type PinoFileOptions, type Plugin, type PluginConnection, type PluginConnectionFieldSchema, type PluginConnectionTestResult, type PluginContext, type PluginDiscoveredResource, type PluginMeta, type PluginMetaOutput, type PluginMiddlewareFactory, type PluginToolMeta, type ProcessingAgentConfig, type Project, type ProjectStore, type QueryParams, type QueryResultFormat, type QueryWorkflowRunsOptions, type QueryWorkflowRunsResult, type QueueClient, type QueueConfig, type QueueLatticeProtocol, type QueueResult, QueueType, type ReactAgentConfig, type ReplyTarget, type ResourceAddress, type ResourceResolver, type Result, type RunStep, type SandboxMiddlewareConfig, type ScheduleClient, type ScheduleConfig, type ScheduleCronOptions, ScheduleExecutionType, type ScheduleLatticeProtocol, type ScheduleOnceOptions, type ScheduleStorage, ScheduleType, type ScheduledTaskDefinition, ScheduledTaskStatus, type SchedulerMiddlewareConfig, type SemanticMetricsFilter, type SemanticMetricsQueryRequest, type SemanticMetricsQueryResponse, type SemanticMetricsServerConfig, type ShareRecord, type ShareResult, type ShareVisibility, type SharedResourceStore, type Skill, type SkillClient, type SkillClientType, type SkillConfig, type SkillLatticeProtocol, type SkillStore, type SkillStoreContext, type SqlMiddlewareConfig, type StepStatus, type StepType, type StorageType, type SystemMessage, type TableQueryRequest, type TableQueryResponse, type TaskHandler, type TaskItem, type TaskListFilter, type TaskStore, type TaskWorkItem, type TaskWorkItemListFilter, type TaskWorkItemStore, type TeamAgentConfig, type TeamTeammateConfig, type Tenant, type TenantStatus, type TenantStore, type TestMcpServerToolsResponse, type Thread, type ThreadStore, type Timestamp, type ToolCall, type ToolConfig, type ToolExecutor, type ToolLatticeProtocol, type ToolMessage, type TopologyEdge, type UIComponent, UIComponentType, type UIConfig, type UILatticeProtocol, type UpdateChannelInstallationRequest, type UpdateCollectionRequest, type UpdateDatabaseConfigRequest, type UpdateMcpServerConfigRequest, type UpdateMenuItemInput, type UpdateMetricsServerConfigRequest, type UpdateProjectRequest, type UpdateRunStepRequest, type UpdateTaskRequest, type UpdateTenantRequest, type UpdateUserRequest, type UpdateUserTenantLinkRequest, type UpdateWorkflowRunRequest, type UpdateWorkspaceRequest, type User, type UserMessage, type UserStatus, type UserStore, type UserTenantLink, type UserTenantLinkStore, type UserTenantRole, type VectorStoreConfig, type VectorStoreCreateParams, type VectorStoreLatticeProtocol, type VectorStoreProvider, type WechatChannelInstallationConfig, type WorkflowAgentConfig, type WorkflowRun, type WorkflowRunStatus, type WorkflowTrackingStore, type Workspace, type WorkspaceStore, type YamlAgentStep, type YamlMapStep, type YamlParallelBlock, type YamlTopLevelStep, type YamlWorkflow, getSubAgentsFromConfig, getToolsFromConfig, hasTools, isA2ARemoteAgentConfig, isDeepAgentConfig, isProcessingAgentConfig, isTeamAgentConfig, isWorkflowAgentConfig };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/AgentLatticeProtocol.ts","../src/MemoryLatticeProtocol.ts","../src/UILatticeProtocol.ts","../src/QueueLatticeProtocol.ts","../src/ScheduleLatticeProtocol.ts","../src/LoggerLatticeProtocol.ts","../src/MessageProtocol.ts","../src/McpLatticeProtocol.ts","../src/A2AProtocol.ts"],"sourcesContent":["/**\n * Protocols\n *\n * 导出所有Lattice协议接口,为整个系统提供统一的接口规范\n */\n\nexport * from \"./BaseLatticeProtocol\";\nexport * from \"./ToolLatticeProtocol\";\nexport * from \"./ModelLatticeProtocol\";\nexport * from \"./AgentLatticeProtocol\";\nexport * from \"./MemoryLatticeProtocol\";\nexport * from \"./UILatticeProtocol\";\nexport * from \"./QueueLatticeProtocol\";\nexport * from \"./ScheduleLatticeProtocol\";\nexport * from \"./EmbeddingsLatticeProtocol\";\nexport * from \"./VectorStoreLatticeProtocol\";\nexport * from \"./LoggerLatticeProtocol\";\nexport * from \"./MessageProtocol\";\nexport * from \"./ThreadStoreProtocol\";\nexport * from \"./AssistantStoreProtocol\";\nexport * from \"./SkillLatticeProtocol\";\nexport * from \"./SkillStoreProtocol\";\nexport * from \"./McpLatticeProtocol\";\nexport * from \"./WorkspaceStoreProtocol\";\nexport * from \"./TenantStoreProtocol\";\nexport * from \"./DatabaseConfigStoreProtocol\";\nexport * from \"./ConnectionStoreProtocol\";\nexport * from \"./ChannelInstallationStoreProtocol\";\nexport * from \"./MetricsServerConfigStoreProtocol\";\nexport * from \"./McpServerConfigStoreProtocol\";\nexport * from \"./UserStoreProtocol\";\nexport * from \"./UserTenantLinkProtocol\";\nexport * from \"./WorkflowTrackingStoreProtocol\";\nexport * from \"./BindingProtocol\";\nexport * from \"./CollectionStoreProtocol\";\nexport * from \"./VectorStoreProviderProtocol\";\nexport * from \"./MenuProtocol\";\nexport * from \"./EvalStoreProtocol\";\nexport * from \"./TaskStoreProtocol\";\n\nexport * from \"./ChannelAdapterProtocol\";\nexport * from \"./A2AProtocol\";\nexport * from \"./A2AApiKeyStoreProtocol\";\n\n// Workflow DSL (concise, public API)\nexport * from \"./WorkflowDSL\";\n\n// Internal DSL (expanded IR, internal use)\nexport * from \"./InternalDSL\";\n\nexport * from \"./SandboxResourceProtocol\";\n\n// Plugin system\nexport type {\n Plugin,\n PluginMeta,\n PluginMetaOutput,\n PluginConnection,\n PluginConnectionFieldSchema,\n PluginConnectionTestResult,\n PluginDiscoveredResource,\n PluginContext,\n PluginToolMeta,\n PluginMiddlewareFactory,\n} from \"./PluginProtocol\";\n\n// 导出通用类型\nexport * from \"./types\";\n","/**\n * AgentLatticeProtocol\n *\n * 智能体Lattice的协议,定义了智能体的行为和组合方式\n */\n\nimport { CompiledStateGraph } from \"@langchain/langgraph\";\nimport { ZodObject } from \"zod\";\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * 智能体类型枚举\n */\nexport enum AgentType {\n REACT = \"react\",\n DEEP_AGENT = \"deep_agent\",\n TEAM = \"team\",\n PROCESSING = \"processing\",\n /** Remote A2A agent — delegates to an external A2A-compatible server */\n A2A_REMOTE = \"a2a_remote\",\n /** Workflow agent — compiled from YAML DSL into a LangGraph StateGraph */\n WORKFLOW = \"workflow\",\n}\n\n/**\n * Runtime configuration that will be injected into LangGraphRunnableConfig.configurable\n * Tools can access these values via config.configurable.runConfig\n */\nexport interface AgentRunConfig {\n /** Database key for SQL tools (registered via sqlDatabaseManager) */\n databaseKey?: string;\n /** Any additional runtime configuration */\n [key: string]: any;\n}\n\n/**\n * Base agent configuration shared by all agent types\n */\ninterface BaseAgentConfig {\n key: string; // Unique key\n name: string; // Name\n description: string; // Description\n prompt: string; // Prompt\n /**\n * Key of the parent agent to inherit configuration from.\n * When set, unspecified fields are inherited from the parent agent's config.\n * Child's explicitly set fields override the parent's.\n */\n extendsAgent?: string;\n schema?: ZodObject<any, any, any, any, any>; // Input validation schema\n modelKey?: string; // Model key to use\n /**\n * Runtime configuration to inject into tool execution context\n * Will be available in tools via config.configurable.runConfig\n */\n runConfig?: AgentRunConfig;\n skillCategories?: string[];\n middleware?: AgentMiddlewareConfig[];\n /**\n * Structured output response format for the agent.\n * Supports Zod schema (z.object({...})), JSON Schema object ({ type: \"object\", properties: {...} }),\n * providerStrategy(), toolStrategy(), and other formats accepted by the underlying model.\n *\n * @example\n * ```ts\n * // Zod schema\n * responseFormat: z.object({ name: z.string(), age: z.number() })\n *\n * // JSON Schema\n * responseFormat: { type: \"object\", properties: { name: { type: \"string\" } }, required: [\"name\"] }\n * ```\n */\n responseFormat?: any;\n}\n\nexport type AvailableModule = \"filesystem\" | \"code_eval\" | \"browser\";\n\nexport interface SandboxMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n modules: AvailableModule[];\n}\n\nexport interface CodeEvalMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n timeout: number;\n memoryLimit: number;\n}\n\nexport interface BrowserMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n headless: boolean;\n}\n\nexport interface SqlMiddlewareConfig {\n databaseKeys?: string[];\n}\n\nexport interface MetricsMiddlewareConfig {\n /** List of configured metrics server keys */\n serverKeys: string[];\n /** Optional descriptions for each server */\n serverDescriptions?: Record<string, string>;\n}\n\nexport interface SchedulerMiddlewareConfig {\n defaultMaxRetries?: number;\n}\n\nexport interface CollectionMiddlewareConfig {\n /** List of configured collection keys */\n collectionKeys: string[];\n /**\n * When true, all collections for the tenant are available.\n * When false or undefined, only collections in collectionKeys are used.\n */\n connectAll?: boolean;\n}\n\nexport type MiddlewareType = \"filesystem\" | \"code_eval\" | \"browser\" | \"sql\" | \"skill\" | \"http\" | \"custom\" | \"metrics\" | \"ask_user_to_clarify\" | \"widget\" | \"claw\" | \"date\" | \"scheduler\" | \"topology\" | \"task\" | \"collection\" | string;\n\nexport interface AgentMiddlewareConfig {\n id: string;\n type: MiddlewareType;\n name: string;\n description: string;\n enabled: boolean;\n /** 可选:限制该中间件暴露的工具列表。不配置则默认暴露所有工具 */\n allowedTools?: string[];\n config: SandboxMiddlewareConfig | CodeEvalMiddlewareConfig | BrowserMiddlewareConfig | SqlMiddlewareConfig | MetricsMiddlewareConfig | ClawMiddlewareConfig | CollectionMiddlewareConfig | SchedulerMiddlewareConfig | Record<string, any>;\n}\n\n/**\n * Bootstrap file configuration\n * Defines default content for project bootstrap files\n */\nexport interface BootstrapFilesConfig {\n /** Default content for AGENTS.md - operating instructions */\n agents?: string;\n /** Default content for SOUL.md - personality and tone */\n soul?: string;\n /** Default content for IDENTITY.md - agent identity */\n identity?: string;\n /** Default content for USER.md - user preferences */\n user?: string;\n /** Default content for TOOLS.md - tool documentation */\n tools?: string;\n /** Default content for BOOTSTRAP.md - first-run tasks */\n bootstrap?: string;\n}\n\n/**\n * Claw Middleware 配置\n * 用于配置 bootstrap 文件管理行为\n */\nexport interface ClawMiddlewareConfig {\n /** 是否启用 bootstrap 文件注入(默认:true) */\n injectBootstrapFiles?: boolean;\n /** 自定义 bootstrap 文件内容 */\n bootstrapFiles?: BootstrapFilesConfig;\n}\n\n\n/**\n * REACT agent configuration\n */\nexport interface ReactAgentConfig extends BaseAgentConfig {\n type: AgentType.REACT;\n tools?: string[]; // Tool list\n}\n\n/**\n * DEEP_AGENT configuration - only this type supports subAgents\n */\nexport interface DeepAgentConfig extends BaseAgentConfig {\n type: AgentType.DEEP_AGENT;\n tools?: string[]; // Tool list\n subAgents?: string[]; // Sub-agent list (unique to DEEP_AGENT)\n internalSubAgents?: AgentConfig[]; // Internal sub-agent list (unique to DEEP_AGENT)\n}\n\n/**\n * PROCESSING agent configuration — workflow orchestration with topology enforcement.\n * Replaces todoListMiddleware with topologyMiddleware.\n */\nexport interface ProcessingAgentConfig extends BaseAgentConfig {\n type: AgentType.PROCESSING;\n tools?: string[];\n subAgents?: string[];\n internalSubAgents?: AgentConfig[];\n}\n\n/**\n * Team teammate configuration -- describes an available teammate.\n */\nexport interface TeamTeammateConfig {\n /** Unique name for this teammate (used as agent ID) */\n name: string;\n /** Role category (e.g. \"research\", \"writing\", \"review\") */\n role: string;\n /** Human-readable description of what this teammate does */\n description: string;\n /** Tool keys this teammate has access to */\n tools?: string[];\n /** Custom system prompt for this teammate */\n prompt?: string;\n /** Model key override for this teammate */\n modelKey?: string;\n}\n\n/**\n * TEAM agent configuration -- a team lead that dynamically creates teammates.\n * Teammates are created on-the-fly from create_team tool input (name, role, description).\n */\nexport interface TeamAgentConfig extends BaseAgentConfig {\n type: AgentType.TEAM;\n /** Tool keys available to the team lead */\n tools?: string[];\n /** Maximum number of teammates running concurrently */\n maxConcurrency?: number;\n /**\n * Schedule lattice key for polling task list / mailbox.\n * When set, teammates use ScheduleLattice for periodic polling instead of event-driven wait.\n */\n scheduleLatticeKey?: string;\n /** Poll interval in ms when using schedule lattice (default: 5000) */\n pollIntervalMs?: number;\n}\n\n/**\n * Type guard to check if config is TeamAgentConfig\n */\nexport function isTeamAgentConfig(\n config: AgentConfig\n): config is TeamAgentConfig {\n return config.type === AgentType.TEAM;\n}\n\n// ─── A2A_REMOTE Agent ──────────────────────────────────────────────────────\n\n/**\n * A2A_REMOTE agent configuration — delegates to an external A2A server.\n *\n * This agent type wraps a remote A2A endpoint so orchestrators can treat\n * external agents the same as local LangGraph agents.\n */\nexport interface A2ARemoteAgentConfig extends BaseAgentConfig {\n type: AgentType.A2A_REMOTE;\n /**\n * URL of the remote agent's agent card (e.g. http://host:3000/.well-known/agent-card.json).\n * The builder fetches this card to discover the JSON-RPC endpoint.\n */\n agentCardUrl: string;\n /**\n * Optional API key sent as Bearer token or X-API-Key header.\n */\n apiKey?: string;\n /**\n * HTTP timeout in milliseconds (default: 300_000 = 5 min).\n */\n timeout?: number;\n /**\n * Optional tool keys (not used by the builder, but included for type compatibility).\n */\n tools?: string[];\n}\n\n/**\n * WORKFLOW agent configuration — compiled from YAML workflow DSL into a LangGraph StateGraph.\n *\n * The workflow field contains the full DSL definition (nodes, edges, state).\n * The WorkflowAgentGraphBuilder compiles this into a multi-node LangGraph\n * where each node invokes a registered sub-agent by ref.\n */\nexport interface WorkflowAgentConfig extends BaseAgentConfig {\n type: AgentType.WORKFLOW;\n /** The YAML workflow DSL definition string (needs+if format) */\n workflowYaml: string;\n /** Optional tool keys */\n tools?: string[];\n}\n\n/**\n * Type guard to check if config is A2ARemoteAgentConfig\n */\nexport function isA2ARemoteAgentConfig(\n config: AgentConfig\n): config is A2ARemoteAgentConfig {\n return config.type === AgentType.A2A_REMOTE;\n}\n\n/**\n * Type guard to check if config is WorkflowAgentConfig\n */\nexport function isWorkflowAgentConfig(\n config: AgentConfig\n): config is WorkflowAgentConfig {\n return config.type === AgentType.WORKFLOW;\n}\n\n/**\n * Agent configuration union type\n * Different agent types have different configuration options\n */\nexport type AgentConfig =\n | ReactAgentConfig\n | DeepAgentConfig\n | TeamAgentConfig\n | ProcessingAgentConfig\n | A2ARemoteAgentConfig\n | WorkflowAgentConfig\n\n/**\n * Agent configuration with tools property\n */\nexport type AgentConfigWithTools =\n | ReactAgentConfig\n | DeepAgentConfig\n | TeamAgentConfig\n | ProcessingAgentConfig\n | A2ARemoteAgentConfig\n | WorkflowAgentConfig\n\n/**\n * Type guard to check if config has tools property\n */\nexport function hasTools(config: AgentConfig): config is AgentConfigWithTools {\n return true;\n}\n\n/**\n * Type guard to check if config is DeepAgentConfig (has subAgents)\n */\nexport function isDeepAgentConfig(\n config: AgentConfig\n): config is DeepAgentConfig {\n return config.type === AgentType.DEEP_AGENT;\n}\n\n/**\n * Type guard to check if config is ProcessingAgentConfig (has subAgents + topology)\n */\nexport function isProcessingAgentConfig(\n config: AgentConfig\n): config is ProcessingAgentConfig {\n return config.type === AgentType.PROCESSING;\n}\n\n/**\n * Get tools from config safely\n */\nexport function getToolsFromConfig(config: AgentConfig): string[] {\n if (hasTools(config)) {\n return config.tools || [];\n }\n return [];\n}\n\n/**\n * Get subAgents from config safely (DeepAgentConfig and ProcessingAgentConfig have subAgents)\n */\nexport function getSubAgentsFromConfig(config: AgentConfig): string[] {\n if (isDeepAgentConfig(config) || isProcessingAgentConfig(config)) {\n return config.subAgents || [];\n }\n return [];\n}\n\n/**\n * 智能体客户端类型\n */\nexport type AgentClient = CompiledStateGraph<any, any, any, any, any>;\n\n/**\n * Graph构建选项\n */\nexport interface GraphBuildOptions {\n overrideTools?: string[];\n overrideModel?: string;\n metadata?: Record<string, any>;\n}\n\n/**\n * 智能体Lattice协议接口\n */\nexport interface AgentLatticeProtocol\n extends BaseLatticeProtocol<AgentConfig, AgentClient> {\n // 智能体执行函数\n invoke: (input: any, options?: any) => Promise<any>;\n\n // 构建智能体图\n buildGraph: (options?: GraphBuildOptions) => Promise<AgentClient>;\n}\n","/**\n * MemoryLatticeProtocol\n *\n * 记忆Lattice的协议,用于管理智能体的上下文和记忆\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * 记忆类型枚举\n */\nexport enum MemoryType {\n SHORT_TERM = \"short_term\",\n LONG_TERM = \"long_term\",\n EPISODIC = \"episodic\",\n SEMANTIC = \"semantic\",\n WORKING = \"working\",\n}\n\n/**\n * 记忆配置接口\n */\nexport interface MemoryConfig {\n name: string; // 名称\n description: string; // 描述\n type: MemoryType; // 记忆类型\n ttl?: number; // 生存时间\n capacity?: number; // 容量限制\n}\n\n/**\n * 记忆客户端接口\n */\nexport interface MemoryClient {\n add: (key: string, value: any) => Promise<void>;\n get: (key: string) => Promise<any>;\n update: (key: string, value: any) => Promise<void>;\n delete: (key: string) => Promise<void>;\n search: (query: string, options?: any) => Promise<any[]>;\n clear: () => Promise<void>;\n}\n\n/**\n * 记忆Lattice协议接口\n */\nexport interface MemoryLatticeProtocol\n extends BaseLatticeProtocol<MemoryConfig, MemoryClient> {\n // 记忆操作方法\n add: (key: string, value: any) => Promise<void>;\n get: (key: string) => Promise<any>;\n update: (key: string, value: any) => Promise<void>;\n delete: (key: string) => Promise<void>;\n search: (query: string, options?: any) => Promise<any[]>;\n clear: () => Promise<void>;\n}\n","/**\n * UILatticeProtocol\n *\n * UI Lattice的协议,用于定义用户界面组件\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * UI组件类型枚举\n */\nexport enum UIComponentType {\n CONTAINER = \"container\",\n INPUT = \"input\",\n BUTTON = \"button\",\n LIST = \"list\",\n TABLE = \"table\",\n CHART = \"chart\",\n FORM = \"form\",\n CARD = \"card\",\n MODAL = \"modal\",\n CUSTOM = \"custom\",\n}\n\n/**\n * UI配置接口\n */\nexport interface UIConfig {\n name: string; // 组件名称\n description: string; // 组件描述\n type: UIComponentType; // 组件类型\n props?: Record<string, any>; // 组件属性\n children?: string[]; // 子组件列表\n}\n\n/**\n * UI组件接口\n * 使用泛型以适应不同的UI框架(React, Vue等)\n */\nexport interface UIComponent<T = any> {\n render: (props?: any) => T;\n addEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n removeEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n}\n\n/**\n * UI Lattice协议接口\n */\nexport interface UILatticeProtocol<T = any>\n extends BaseLatticeProtocol<UIConfig, UIComponent<T>> {\n // UI渲染方法\n render: (props?: any) => T;\n\n // 事件处理\n addEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n removeEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n}\n","/**\n * QueueLatticeProtocol\n *\n * Queue Lattice protocol for task queue management\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Queue service type enumeration\n */\nexport enum QueueType {\n MEMORY = \"memory\",\n REDIS = \"redis\",\n}\n\n/**\n * Queue configuration interface\n */\nexport interface QueueConfig {\n name: string; // Queue name\n description: string; // Queue description\n type: QueueType; // Queue service type\n queueName?: string; // Specific queue name (e.g., \"tasks\")\n options?: Record<string, any>; // Additional options (e.g., Redis connection options)\n}\n\n/**\n * Queue operation result interface\n */\nexport interface QueueResult<T = any> {\n data: T | null;\n error: any | null;\n}\n\n/**\n * Queue client interface\n */\nexport interface QueueClient {\n push: (item: any) => Promise<QueueResult<number>>;\n pop: () => Promise<QueueResult<any>>;\n createQueue?: () => Promise<{ success: boolean; queue_name?: string; error?: any }>;\n}\n\n/**\n * Queue Lattice protocol interface\n */\nexport interface QueueLatticeProtocol\n extends BaseLatticeProtocol<QueueConfig, QueueClient> {\n // Queue operations\n push: (item: any) => Promise<QueueResult<number>>;\n pop: () => Promise<QueueResult<any>>;\n createQueue?: () => Promise<{ success: boolean; queue_name?: string; error?: any }>;\n}\n\n\n\n","/**\n * ScheduleLatticeProtocol\n *\n * Schedule Lattice protocol for delayed and recurring task execution management\n * Supports persistence and recovery after service restart\n * Supports both one-time delayed tasks and cron-style recurring tasks\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Schedule service type enumeration\n */\nexport enum ScheduleType {\n MEMORY = \"memory\",\n POSTGRES = \"postgres\",\n REDIS = \"redis\",\n}\n\n/**\n * Schedule execution type - one-time or recurring\n */\nexport enum ScheduleExecutionType {\n ONCE = \"once\", // Execute once at specified time\n CRON = \"cron\", // Recurring based on cron expression\n}\n\n/**\n * Task status enumeration\n */\nexport enum ScheduledTaskStatus {\n PENDING = \"pending\", // Waiting to be executed\n RUNNING = \"running\", // Currently executing\n COMPLETED = \"completed\", // Successfully completed (for ONCE type)\n FAILED = \"failed\", // Execution failed\n CANCELLED = \"cancelled\", // Manually cancelled\n PAUSED = \"paused\", // Paused (for CRON type)\n}\n\n/**\n * Schedule configuration interface\n */\nexport interface ScheduleConfig {\n name: string;\n description: string;\n type: ScheduleType;\n storage?: ScheduleStorage; // Optional storage for persistence\n options?: Record<string, any>;\n}\n\n/**\n * Scheduled task definition - fully serializable\n * Supports both one-time and cron-style recurring tasks\n */\nexport interface ScheduledTaskDefinition {\n taskId: string;\n taskType: string; // Maps to a registered handler\n payload: Record<string, any>; // JSON-serializable data passed to handler\n\n // Context fields for querying\n tenantId: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n\n // Execution configuration\n executionType: ScheduleExecutionType;\n\n // For ONCE type - execute at specific time or after delay\n executeAt?: number; // Timestamp when to execute\n delayMs?: number; // Original delay in milliseconds (for reference)\n\n // For CRON type - recurring schedule\n cronExpression?: string; // Cron format: \"0 9 * * *\" (min hour day month weekday)\n timezone?: string; // Timezone: \"Asia/Shanghai\", defaults to system timezone\n nextRunAt?: number; // Next calculated execution time\n lastRunAt?: number; // Last execution time\n\n // Execution tracking\n status: ScheduledTaskStatus;\n runCount: number; // How many times executed\n maxRuns?: number; // Max executions (null/undefined = infinite for cron, 1 for once)\n\n // Error handling\n retryCount: number; // Current retry count\n maxRetries: number; // Maximum retry attempts\n lastError?: string; // Last error message if failed\n\n // Timestamps\n createdAt: number;\n updatedAt: number;\n expiresAt?: number; // When to stop (for cron, optional)\n\n metadata?: Record<string, any>; // Additional metadata\n}\n\n/**\n * Task handler function type\n */\nexport type TaskHandler = (\n payload: Record<string, any>,\n taskInfo: ScheduledTaskDefinition\n) => void | Promise<void>;\n\n/**\n * Options for scheduling a one-time task\n */\nexport interface ScheduleOnceOptions {\n executeAt?: number; // Absolute timestamp to execute\n delayMs?: number; // OR relative delay from now\n maxRetries?: number; // Max retry attempts (default: 0)\n tenantId?: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n metadata?: Record<string, any>;\n}\n\n/**\n * Options for scheduling a cron task\n */\nexport interface ScheduleCronOptions {\n cronExpression: string; // Cron expression: \"0 9 * * *\"\n timezone?: string; // Timezone: \"Asia/Shanghai\"\n maxRuns?: number; // Max executions (undefined = infinite)\n expiresAt?: number; // Stop after this timestamp\n maxRetries?: number; // Max retry attempts per run (default: 0)\n tenantId?: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n metadata?: Record<string, any>;\n}\n\n/**\n * Schedule storage interface for persistence\n */\nexport interface ScheduleStorage {\n /**\n * Save a new task\n */\n save(task: ScheduledTaskDefinition): Promise<void>;\n\n /**\n * Get task by ID\n */\n get(taskId: string): Promise<ScheduledTaskDefinition | null>;\n\n /**\n * Update task\n */\n update(\n taskId: string,\n updates: Partial<ScheduledTaskDefinition>\n ): Promise<void>;\n\n /**\n * Delete task\n */\n delete(taskId: string): Promise<void>;\n\n /**\n * Get all pending/active tasks (for recovery)\n * Returns tasks with status: PENDING or PAUSED\n */\n getActiveTasks(): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by type\n */\n getTasksByType(taskType: string): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by status\n */\n getTasksByStatus(\n status: ScheduledTaskStatus\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by execution type\n */\n getTasksByExecutionType(\n executionType: ScheduleExecutionType\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by assistant ID\n */\n getTasksByAssistantId(\n assistantId: string\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by thread ID\n */\n getTasksByThreadId(threadId: string): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get all tasks (with optional filters)\n */\n getAllTasks(filters?: {\n tenantId?: string;\n status?: ScheduledTaskStatus;\n executionType?: ScheduleExecutionType;\n taskType?: string;\n assistantId?: string;\n threadId?: string;\n limit?: number;\n offset?: number;\n }): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Count tasks (with optional filters)\n */\n countTasks(filters?: {\n tenantId?: string;\n status?: ScheduledTaskStatus;\n executionType?: ScheduleExecutionType;\n taskType?: string;\n assistantId?: string;\n threadId?: string;\n }): Promise<number>;\n\n /**\n * Delete completed/cancelled tasks older than specified time\n * Useful for cleanup\n */\n deleteOldTasks(olderThanMs: number): Promise<number>;\n}\n\n/**\n * Schedule client interface\n */\nexport interface ScheduleClient {\n // ===== Handler Registration =====\n\n /**\n * Register a handler for a task type\n * Must be called before scheduling tasks of this type\n */\n registerHandler(taskType: string, handler: TaskHandler): void;\n\n /**\n * Unregister a handler\n */\n unregisterHandler(taskType: string): boolean;\n\n /**\n * Check if a handler is registered\n */\n hasHandler(taskType: string): boolean;\n\n /**\n * Get all registered handler types\n */\n getHandlerTypes(): string[];\n\n // ===== One-time Task Scheduling =====\n\n /**\n * Schedule a one-time task\n * @param taskId - Unique identifier for the task\n * @param taskType - Type of task (must have a registered handler)\n * @param payload - Data to pass to the handler (must be JSON-serializable)\n * @param options - Execution options (executeAt or delayMs required)\n */\n scheduleOnce(\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleOnceOptions\n ): Promise<boolean>;\n\n // ===== Cron Task Scheduling =====\n\n /**\n * Schedule a recurring cron task\n * @param taskId - Unique identifier for the task\n * @param taskType - Type of task (must have a registered handler)\n * @param payload - Data to pass to the handler (must be JSON-serializable)\n * @param options - Cron options (cronExpression required)\n */\n scheduleCron(\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleCronOptions\n ): Promise<boolean>;\n\n // ===== Task Management =====\n\n /**\n * Cancel a scheduled task\n */\n cancel(taskId: string): Promise<boolean>;\n\n /**\n * Pause a cron task (only for CRON type)\n */\n pause(taskId: string): Promise<boolean>;\n\n /**\n * Resume a paused cron task (only for CRON type)\n */\n resume(taskId: string): Promise<boolean>;\n\n /**\n * Check if a task exists\n */\n has(taskId: string): Promise<boolean>;\n\n /**\n * Get task information\n */\n getTask(taskId: string): Promise<ScheduledTaskDefinition | null>;\n\n /**\n * Get remaining time until next execution\n * Returns -1 if task not found or already executed\n */\n getRemainingTime(taskId: string): Promise<number>;\n\n /**\n * Get count of active tasks (pending + paused)\n */\n getActiveTaskCount(): Promise<number>;\n\n /**\n * Get all active task IDs\n */\n getActiveTaskIds(): Promise<string[]>;\n\n /**\n * Cancel all active tasks\n */\n cancelAll(): Promise<void>;\n\n // ===== Recovery =====\n\n /**\n * Restore active tasks from storage (call on service startup)\n * Re-schedules all pending tasks with their remaining time\n * Re-schedules all cron tasks for their next run\n * @returns Number of tasks restored\n */\n restore(): Promise<number>;\n\n // ===== Storage =====\n\n /**\n * Set the storage backend\n */\n setStorage(storage: ScheduleStorage): void;\n\n /**\n * Get current storage backend\n */\n getStorage(): ScheduleStorage | null;\n}\n\n/**\n * Schedule Lattice protocol interface\n */\nexport interface ScheduleLatticeProtocol\n extends BaseLatticeProtocol<ScheduleConfig, ScheduleClient> {\n // Handler registration\n registerHandler: (taskType: string, handler: TaskHandler) => void;\n unregisterHandler: (taskType: string) => boolean;\n hasHandler: (taskType: string) => boolean;\n getHandlerTypes: () => string[];\n\n // One-time task scheduling\n scheduleOnce: (\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleOnceOptions\n ) => Promise<boolean>;\n\n // Cron task scheduling\n scheduleCron: (\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleCronOptions\n ) => Promise<boolean>;\n\n // Task management\n cancel: (taskId: string) => Promise<boolean>;\n pause: (taskId: string) => Promise<boolean>;\n resume: (taskId: string) => Promise<boolean>;\n has: (taskId: string) => Promise<boolean>;\n getTask: (taskId: string) => Promise<ScheduledTaskDefinition | null>;\n getRemainingTime: (taskId: string) => Promise<number>;\n getActiveTaskCount: () => Promise<number>;\n getActiveTaskIds: () => Promise<string[]>;\n cancelAll: () => Promise<void>;\n\n // Recovery\n restore: () => Promise<number>;\n}\n","/**\n * LoggerLatticeProtocol\n *\n * Logger Lattice protocol for logging management\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Logger service type enumeration\n */\nexport enum LoggerType {\n PINO = \"pino\",\n CONSOLE = \"console\",\n CUSTOM = \"custom\",\n}\n\n/**\n * Logger context interface\n */\nexport interface LoggerContext {\n \"x-user-id\"?: string;\n \"x-tenant-id\"?: string;\n \"x-request-id\"?: string;\n \"x-task-id\"?: string;\n \"x-thread-id\"?: string;\n [key: string]: any;\n}\n\n/**\n * Pino logger file transport options\n */\nexport interface PinoFileOptions {\n file?: string; // Log file path (e.g., \"./logs/app.log\" or \"./logs/app\")\n frequency?: \"daily\" | \"hourly\" | \"minutely\" | string; // Log rotation frequency\n mkdir?: boolean; // Create directory if not exists\n size?: string; // Max file size (e.g., \"10M\", \"100K\")\n maxFiles?: number; // Maximum number of log files to keep\n}\n\n/**\n * Logger configuration interface\n */\nexport interface LoggerConfig {\n name: string; // Logger name\n description?: string; // Logger description\n type: LoggerType; // Logger service type\n serviceName?: string; // Service name (e.g., \"lattice-gateway\")\n loggerName?: string; // Logger instance name (e.g., \"fastify-server\")\n context?: LoggerContext; // Initial context\n // File logging options (for PINO type)\n file?: string | PinoFileOptions; // Log file path or detailed file options\n // Additional options (e.g., pino config, custom logger settings)\n options?: Record<string, any>;\n}\n\n/**\n * Logger client interface\n */\nexport interface LoggerClient {\n info: (msg: string, obj?: object) => void;\n error: (msg: string, obj?: object | Error) => void;\n warn: (msg: string, obj?: object) => void;\n debug: (msg: string, obj?: object) => void;\n updateContext?: (context: Partial<LoggerContext>) => void;\n child?: (options: Partial<LoggerConfig>) => LoggerClient;\n}\n\n/**\n * Logger Lattice protocol interface\n */\nexport interface LoggerLatticeProtocol\n extends BaseLatticeProtocol<LoggerConfig, LoggerClient> {\n // Logger operations\n info: (msg: string, obj?: object) => void;\n error: (msg: string, obj?: object | Error) => void;\n warn: (msg: string, obj?: object) => void;\n debug: (msg: string, obj?: object) => void;\n updateContext?: (context: Partial<LoggerContext>) => void;\n child?: (options: Partial<LoggerConfig>) => LoggerClient;\n}\n","/**\n * MessageProtocol\n *\n */\n\n\n\n/**\n * Base message interface\n */\nexport interface BaseMessage {\n id: string; // Unique identifier for the message\n role: string; // Role of the sender (user, assistant, system, tool, developer)\n content?: string; // Optional text content of the message\n name?: string; // Optional name of the sender\n}\n\n/**\n * User message interface\n */\nexport interface UserMessage extends BaseMessage {\n role: \"human\";\n content: string; // Text input from the user\n files?: Array<{ name: string; id: string }>; // Optional files attached to the message\n}\n\n/**\n * Tool call interface\n */\nexport interface ToolCall {\n id: string; // Unique identifier for this tool call\n name: string; // Name of the tool/function to call\n args: Record<string, any>; // Arguments as an object\n type: \"tool_call\"; // Type of tool call\n response?: string; // Optional response from the tool execution\n}\n\n/**\n * Assistant message interface\n */\nexport interface AssistantMessage extends BaseMessage {\n role: \"ai\";\n content?: string; // Text response from the assistant (optional if using tool calls)\n tool_calls?: ToolCall[]; // Optional tool calls made by the assistant\n}\n\nexport interface InterruptMessage extends BaseMessage {\n type: \"interrupt\";\n value: any;\n}\n\n/**\n * System message interface\n */\nexport interface SystemMessage extends BaseMessage {\n role: \"system\";\n content: string; // Instructions or context for the assistant\n}\n\n/**\n * Tool message interface\n */\nexport interface ToolMessage extends BaseMessage {\n role: \"tool\";\n content: string; // Result from the tool execution\n tool_call_id: string; // ID of the tool call this message responds to\n}\n\n/**\n * Developer message interface\n */\nexport interface DeveloperMessage extends BaseMessage {\n role: \"developer\";\n content: string; // Content for development or debugging\n}\n\n/**\n * Message chunk type constants\n */\nexport const MessageChunkTypes = {\n HUMAN: 'human',\n AI: 'ai',\n TOOL: 'tool',\n INTERRUPT: 'interrupt',\n MESSAGE_COMPLETED: 'message_completed',\n MESSAGE_FAILED: 'message_failed',\n THREAD_IDLE: 'thread_idle',\n} as const;\n\nexport type MessageChunkType = typeof MessageChunkTypes[keyof typeof MessageChunkTypes];\n\nexport interface MessageChunk {\n type: MessageChunkType;\n data: {\n id: string;\n content?: string;\n tool_call_chunks?: Array<{\n name?: string;\n args?: string;\n id?: string;\n index: number;\n }>;\n tool_calls?: Array<{\n name: string;\n args: Record<string, any>;\n id: string;\n type: string;\n response?: string;\n }>;\n additional_kwargs?: {\n tool_calls?: Array<{\n function?: { name?: string; arguments?: any };\n id?: string;\n }>;\n };\n tool_call_id?: string;\n };\n}\n\n/**\n * Message type union\n */\nexport type Message =\n | UserMessage\n | AssistantMessage\n | SystemMessage\n | ToolMessage\n | DeveloperMessage;\n","/**\n * McpLatticeProtocol\n *\n * Model Context Protocol (MCP) lattice protocol for integrating MCP servers\n * with the Lattice framework. Provides standardized interfaces for MCP\n * client connections, tool discovery, and remote execution.\n */\n\nimport { BaseLatticeProtocol, LatticeMessage } from \"./BaseLatticeProtocol\";\n\n/**\n * MCP transport type\n */\nexport type McpTransportType = \"stdio\" | \"streamable_http\" | \"sse\";\n\n/**\n * MCP server configuration\n */\nexport interface McpServerConfig {\n /** Server name */\n name: string;\n /** Server version */\n version: string;\n /** Transport type */\n transport: McpTransportType;\n /** Command for stdio transport (e.g., \"npx\", \"python\") */\n command?: string;\n /** Arguments for stdio transport */\n args?: string[];\n /** URL for HTTP/SSE transport */\n url?: string;\n /** Environment variables */\n env?: Record<string, string>;\n /** Connection timeout in milliseconds */\n timeout?: number;\n /** Retry attempts on connection failure */\n retryAttempts?: number;\n}\n\n/**\n * MCP tool definition\n */\nexport interface McpTool {\n /** Tool name */\n name: string;\n /** Tool description */\n description: string;\n /** Input schema */\n inputSchema: {\n type: \"object\";\n properties: Record<string, any>;\n required?: string[];\n };\n /** Tool metadata */\n metadata?: Record<string, any>;\n}\n\n/**\n * MCP tool call result\n */\nexport interface McpToolResult {\n /** Whether the call was successful */\n success: boolean;\n /** Result content */\n content: Array<{\n type: \"text\" | \"image\" | \"audio\" | \"resource\";\n data: any;\n mimeType?: string;\n }>;\n /** Error message if failed */\n error?: string;\n /** Execution metadata */\n metadata?: {\n duration: number;\n tokens?: number;\n model?: string;\n };\n}\n\n/**\n * MCP client interface\n */\nexport interface McpClient {\n /** Client name */\n name: string;\n /** Client version */\n version: string;\n /** Server configuration */\n serverConfig: McpServerConfig;\n \n /**\n * Connect to MCP server\n */\n connect(): Promise<void>;\n \n /**\n * Disconnect from MCP server\n */\n disconnect(): Promise<void>;\n \n /**\n * Check if connected\n */\n isConnected(): boolean;\n \n /**\n * List available tools\n */\n listTools(): Promise<McpTool[]>;\n \n /**\n * Call a tool\n */\n callTool(name: string, arguments_: Record<string, any>): Promise<McpToolResult>;\n \n /**\n * Subscribe to server notifications\n */\n subscribe(topic: string, handler: (data: any) => void): void;\n \n /**\n * Unsubscribe from server notifications\n */\n unsubscribe(topic: string): void;\n \n /**\n * Get client statistics\n */\n getStats(): McpStats;\n \n /**\n * Get connection status\n */\n getStatus(): McpConnectionStatus;\n}\n\n/**\n * MCP client options\n */\nexport interface McpClientOptions {\n /** Client name */\n name: string;\n /** Client version */\n version: string;\n /** Server configuration */\n serverConfig: McpServerConfig;\n /** Auto-connect on initialization */\n autoConnect?: boolean;\n /** Error handler */\n onError?: (error: Error) => void;\n /** Connection status handler */\n onStatusChange?: (status: McpConnectionStatus) => void;\n}\n\n/**\n * MCP Lattice protocol interface\n */\nexport interface McpLatticeProtocol\n extends BaseLatticeProtocol<McpServerConfig, McpClient> {\n /**\n * Server configuration\n */\n config: McpServerConfig;\n \n /**\n * MCP client instance\n */\n client: McpClient;\n \n /**\n * Connect to MCP server\n */\n connect(): Promise<void>;\n \n /**\n * Disconnect from MCP server\n */\n disconnect(): Promise<void>;\n \n /**\n * Get available tools\n */\n getTools(): Promise<McpTool[]>;\n \n /**\n * Execute a tool\n */\n executeTool(\n name: string,\n arguments_: Record<string, any>\n ): Promise<McpToolResult>;\n \n /**\n * Execute with automatic retries\n */\n executeToolWithRetry(\n name: string,\n arguments_: Record<string, any>,\n maxRetries?: number\n ): Promise<McpToolResult>;\n \n /**\n * Get protocol version\n */\n getProtocolVersion(): string;\n \n /**\n * Health check\n */\n healthCheck(): Promise<boolean>;\n}\n\n/**\n * MCP message types\n */\nexport enum McpMessageType {\n CONNECT = \"mcp:connect\",\n DISCONNECT = \"mcp:disconnect\",\n LIST_TOOLS = \"mcp:list_tools\",\n CALL_TOOL = \"mcp:call_tool\",\n TOOL_RESULT = \"mcp:tool_result\",\n NOTIFICATION = \"mcp:notification\",\n ERROR = \"mcp:error\",\n HEALTH_CHECK = \"mcp:health_check\",\n}\n\n/**\n * MCP Lattice message\n */\nexport interface McpLatticeMessage extends LatticeMessage {\n type: McpMessageType;\n payload: {\n toolName?: string;\n arguments?: Record<string, any>;\n result?: McpToolResult;\n tools?: McpTool[];\n error?: string;\n };\n}\n\n/**\n * MCP connection status\n */\nexport type McpConnectionStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"reconnecting\"\n | \"error\";\n\n/**\n * MCP statistics\n */\nexport interface McpStats {\n totalCalls: number;\n successfulCalls: number;\n failedCalls: number;\n averageLatency: number;\n lastCallTimestamp: number;\n}\n","/**\n * A2AProtocol - Google Agent-to-Agent Protocol type definitions\n *\n * Based on the A2A open protocol spec for AI agent interoperability.\n * @see https://github.com/google/A2A\n */\n\n// ─── Agent Card ───────────────────────────────────────────────────────────\n\nexport interface A2ASkill {\n id: string;\n name: string;\n description: string;\n tags: string[];\n examples: string[];\n}\n\nexport interface A2ACapabilities {\n streaming: boolean;\n pushNotifications: boolean;\n stateTransitionHistory: boolean;\n}\n\nexport interface A2AProvider {\n organization: string;\n url?: string;\n}\n\nexport interface AgentCard {\n name: string;\n description: string;\n url: string;\n provider: A2AProvider;\n version: string;\n documentationUrl?: string;\n capabilities: A2ACapabilities;\n defaultInputModes: string[];\n defaultOutputModes: string[];\n skills: A2ASkill[];\n}\n\n// ─── Artifact / Part ──────────────────────────────────────────────────────\n\nexport interface A2ATextPart {\n type: \"text\";\n text: string;\n}\n\nexport interface A2AFilePart {\n type: \"file\";\n file: {\n name: string;\n mimeType: string;\n bytes?: string;\n uri?: string;\n };\n}\n\nexport interface A2ADataPart {\n type: \"data\";\n data: Record<string, unknown>;\n}\n\nexport type A2APart = A2ATextPart | A2AFilePart | A2ADataPart;\n\n// ─── Message ──────────────────────────────────────────────────────────────\n\nexport interface A2AMessage {\n role: \"user\" | \"agent\";\n parts: A2APart[];\n metadata?: Record<string, unknown>;\n}\n\n// ─── Task ─────────────────────────────────────────────────────────────────\n\nexport type A2ATaskState =\n | \"working\"\n | \"input-required\"\n | \"completed\"\n | \"failed\"\n | \"canceled\"\n | \"rejected\";\n\nexport interface A2ATaskStatus {\n state: A2ATaskState;\n message?: A2AMessage;\n timestamp: string;\n}\n\nexport interface A2AArtifact {\n name?: string;\n description?: string;\n parts: A2APart[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2ATask {\n id: string;\n sessionId?: string;\n status: A2ATaskStatus;\n artifacts: A2AArtifact[];\n history?: A2AMessage[];\n metadata?: Record<string, unknown>;\n}\n\n// ─── Request / Response ───────────────────────────────────────────────────\n\nexport interface A2ATaskSendRequest {\n id?: string;\n sessionId?: string;\n message: A2AMessage;\n pushNotification?: A2APushNotification;\n historyLength?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2APushNotification {\n url: string;\n token?: string;\n}\n\nexport interface A2ATaskUpdatePayload {\n id: string;\n sessionId?: string;\n status: A2ATaskStatus;\n final?: boolean;\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2ATaskArtifactUpdatePayload {\n id: string;\n sessionId?: string;\n artifact: A2AArtifact;\n final?: boolean;\n metadata?: Record<string, unknown>;\n}\n\n// ─── SSE Events ───────────────────────────────────────────────────────────\n\nexport type A2ASSEEvent =\n | { event: \"task\"; data: A2ATaskUpdatePayload }\n | { event: \"status-update\"; data: A2ATaskUpdatePayload }\n | { event: \"artifact-update\"; data: A2ATaskArtifactUpdatePayload }\n | { event: \"error\"; data: { code: string; message: string } };\n\n// ─── Config ───────────────────────────────────────────────────────────────\n\nexport interface A2AConfig {\n agentName: string;\n agentDescription: string;\n agentUrl: string;\n organization: string;\n version?: string;\n capabilities?: Partial<A2ACapabilities>;\n defaultInputModes?: string[];\n defaultOutputModes?: string[];\n skills?: A2ASkill[];\n apiKeyMap: Map<string, A2AApiKeyEntry>;\n}\n\nexport interface A2AApiKeyEntry {\n key: string;\n tenantId?: string;\n projectId?: string;\n workspaceId?: string;\n}\n\nexport const A2A_DEFAULT_CAPABILITIES: A2ACapabilities = {\n streaming: true,\n pushNotifications: false,\n stateTransitionHistory: false,\n};\n\nexport const A2A_DEFAULT_INPUT_MODES = [\"text\", \"text/plain\"];\nexport const A2A_DEFAULT_OUTPUT_MODES = [\"text\", \"text/plain\", \"text/markdown\"];\n\nexport interface A2AAuthContext {\n authenticated: boolean;\n apiKey?: string;\n tenantId?: string;\n projectId?: string;\n workspaceId?: string;\n source?: \"bearer\" | \"x-api-key\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,gBAAa;AAEb,EAAAA,WAAA,gBAAa;AAEb,EAAAA,WAAA,cAAW;AARD,SAAAA;AAAA,GAAA;AA0NL,SAAS,kBACd,QAC2B;AAC3B,SAAO,OAAO,SAAS;AACzB;AAiDO,SAAS,uBACd,QACgC;AAChC,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,sBACd,QAC+B;AAC/B,SAAO,OAAO,SAAS;AACzB;AA4BO,SAAS,SAAS,QAAqD;AAC5E,SAAO;AACT;AAKO,SAAS,kBACd,QAC2B;AAC3B,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,wBACd,QACiC;AACjC,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,mBAAmB,QAA+B;AAChE,MAAI,SAAS,MAAM,GAAG;AACpB,WAAO,OAAO,SAAS,CAAC;AAAA,EAC1B;AACA,SAAO,CAAC;AACV;AAKO,SAAS,uBAAuB,QAA+B;AACpE,MAAI,kBAAkB,MAAM,KAAK,wBAAwB,MAAM,GAAG;AAChE,WAAO,OAAO,aAAa,CAAC;AAAA,EAC9B;AACA,SAAO,CAAC;AACV;;;AClWO,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,aAAU;AALA,SAAAA;AAAA,GAAA;;;ACAL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AAVC,SAAAA;AAAA,GAAA;;;ACAL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;;;ACEL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AASL,IAAK,wBAAL,kBAAKC,2BAAL;AACL,EAAAA,uBAAA,UAAO;AACP,EAAAA,uBAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;AAQL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,YAAS;AACT,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,YAAS;AANC,SAAAA;AAAA,GAAA;;;ACnBL,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;;;ACoEL,IAAM,oBAAoB;AAAA,EAC/B,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,aAAa;AACf;;;ACgIO,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,gBAAa;AACb,EAAAA,gBAAA,gBAAa;AACb,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,iBAAc;AACd,EAAAA,gBAAA,kBAAe;AACf,EAAAA,gBAAA,WAAQ;AACR,EAAAA,gBAAA,kBAAe;AARL,SAAAA;AAAA,GAAA;;;AChDL,IAAM,2BAA4C;AAAA,EACvD,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAEO,IAAM,0BAA0B,CAAC,QAAQ,YAAY;AACrD,IAAM,2BAA2B,CAAC,QAAQ,cAAc,eAAe;","names":["AgentType","MemoryType","UIComponentType","QueueType","ScheduleType","ScheduleExecutionType","ScheduledTaskStatus","LoggerType","McpMessageType"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/AgentLatticeProtocol.ts","../src/MemoryLatticeProtocol.ts","../src/UILatticeProtocol.ts","../src/QueueLatticeProtocol.ts","../src/ScheduleLatticeProtocol.ts","../src/LoggerLatticeProtocol.ts","../src/MessageProtocol.ts","../src/McpLatticeProtocol.ts","../src/A2AProtocol.ts"],"sourcesContent":["/**\n * Protocols\n *\n * 导出所有Lattice协议接口,为整个系统提供统一的接口规范\n */\n\nexport * from \"./BaseLatticeProtocol\";\nexport * from \"./ToolLatticeProtocol\";\nexport * from \"./ModelLatticeProtocol\";\nexport * from \"./AgentLatticeProtocol\";\nexport * from \"./MemoryLatticeProtocol\";\nexport * from \"./UILatticeProtocol\";\nexport * from \"./QueueLatticeProtocol\";\nexport * from \"./ScheduleLatticeProtocol\";\nexport * from \"./EmbeddingsLatticeProtocol\";\nexport * from \"./VectorStoreLatticeProtocol\";\nexport * from \"./LoggerLatticeProtocol\";\nexport * from \"./MessageProtocol\";\nexport * from \"./ThreadStoreProtocol\";\nexport * from \"./AssistantStoreProtocol\";\nexport * from \"./SkillLatticeProtocol\";\nexport * from \"./SkillStoreProtocol\";\nexport * from \"./McpLatticeProtocol\";\nexport * from \"./WorkspaceStoreProtocol\";\nexport * from \"./TenantStoreProtocol\";\nexport * from \"./DatabaseConfigStoreProtocol\";\nexport * from \"./ConnectionStoreProtocol\";\nexport * from \"./ChannelInstallationStoreProtocol\";\nexport * from \"./MetricsServerConfigStoreProtocol\";\nexport * from \"./McpServerConfigStoreProtocol\";\nexport * from \"./UserStoreProtocol\";\nexport * from \"./UserTenantLinkProtocol\";\nexport * from \"./WorkflowTrackingStoreProtocol\";\nexport * from \"./BindingProtocol\";\nexport * from \"./CollectionStoreProtocol\";\nexport * from \"./VectorStoreProviderProtocol\";\nexport * from \"./MenuProtocol\";\nexport * from \"./EvalStoreProtocol\";\nexport * from \"./TaskStoreProtocol\";\nexport * from \"./TaskWorkItemProtocol\";\n\nexport * from \"./ChannelAdapterProtocol\";\nexport * from \"./A2AProtocol\";\nexport * from \"./A2AApiKeyStoreProtocol\";\n\n// Workflow DSL (concise, public API)\nexport * from \"./WorkflowDSL\";\n\n// Internal DSL (expanded IR, internal use)\nexport * from \"./InternalDSL\";\n\nexport * from \"./SandboxResourceProtocol\";\n\n// Plugin system\nexport type {\n Plugin,\n PluginMeta,\n PluginMetaOutput,\n PluginConnection,\n PluginConnectionFieldSchema,\n PluginConnectionTestResult,\n PluginDiscoveredResource,\n PluginContext,\n PluginToolMeta,\n PluginMiddlewareFactory,\n} from \"./PluginProtocol\";\n\n// 导出通用类型\nexport * from \"./types\";\n","/**\n * AgentLatticeProtocol\n *\n * 智能体Lattice的协议,定义了智能体的行为和组合方式\n */\n\nimport { CompiledStateGraph } from \"@langchain/langgraph\";\nimport { ZodObject } from \"zod\";\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * 智能体类型枚举\n */\nexport enum AgentType {\n REACT = \"react\",\n DEEP_AGENT = \"deep_agent\",\n TEAM = \"team\",\n PROCESSING = \"processing\",\n /** Remote A2A agent — delegates to an external A2A-compatible server */\n A2A_REMOTE = \"a2a_remote\",\n /** Workflow agent — compiled from YAML DSL into a LangGraph StateGraph */\n WORKFLOW = \"workflow\",\n}\n\n/**\n * Runtime configuration that will be injected into LangGraphRunnableConfig.configurable\n * Tools can access these values via config.configurable.runConfig\n */\nexport interface AgentRunConfig {\n /** Database key for SQL tools (registered via sqlDatabaseManager) */\n databaseKey?: string;\n /** Any additional runtime configuration */\n [key: string]: any;\n}\n\n/**\n * Base agent configuration shared by all agent types\n */\ninterface BaseAgentConfig {\n key: string; // Unique key\n name: string; // Name\n description: string; // Description\n prompt: string; // Prompt\n /**\n * Key of the parent agent to inherit configuration from.\n * When set, unspecified fields are inherited from the parent agent's config.\n * Child's explicitly set fields override the parent's.\n */\n extendsAgent?: string;\n schema?: ZodObject<any, any, any, any, any>; // Input validation schema\n modelKey?: string; // Model key to use\n /**\n * Runtime configuration to inject into tool execution context\n * Will be available in tools via config.configurable.runConfig\n */\n runConfig?: AgentRunConfig;\n skillCategories?: string[];\n middleware?: AgentMiddlewareConfig[];\n /**\n * Structured output response format for the agent.\n * Supports Zod schema (z.object({...})), JSON Schema object ({ type: \"object\", properties: {...} }),\n * providerStrategy(), toolStrategy(), and other formats accepted by the underlying model.\n *\n * @example\n * ```ts\n * // Zod schema\n * responseFormat: z.object({ name: z.string(), age: z.number() })\n *\n * // JSON Schema\n * responseFormat: { type: \"object\", properties: { name: { type: \"string\" } }, required: [\"name\"] }\n * ```\n */\n responseFormat?: any;\n}\n\nexport type AvailableModule = \"filesystem\" | \"code_eval\" | \"browser\";\n\nexport interface SandboxMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n modules: AvailableModule[];\n}\n\nexport interface CodeEvalMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n timeout: number;\n memoryLimit: number;\n}\n\nexport interface BrowserMiddlewareConfig {\n vmIsolation: \"agent\" | \"project\" | \"global\";\n headless: boolean;\n}\n\nexport interface SqlMiddlewareConfig {\n databaseKeys?: string[];\n}\n\nexport interface MetricsMiddlewareConfig {\n /** List of configured metrics server keys */\n serverKeys: string[];\n /** Optional descriptions for each server */\n serverDescriptions?: Record<string, string>;\n}\n\nexport interface SchedulerMiddlewareConfig {\n defaultMaxRetries?: number;\n}\n\nexport interface CollectionMiddlewareConfig {\n /** List of configured collection keys */\n collectionKeys: string[];\n /**\n * When true, all collections for the tenant are available.\n * When false or undefined, only collections in collectionKeys are used.\n */\n connectAll?: boolean;\n}\n\nexport type MiddlewareType = \"filesystem\" | \"code_eval\" | \"browser\" | \"sql\" | \"skill\" | \"http\" | \"custom\" | \"metrics\" | \"ask_user_to_clarify\" | \"widget\" | \"claw\" | \"date\" | \"scheduler\" | \"topology\" | \"task\" | \"collection\" | string;\n\nexport interface AgentMiddlewareConfig {\n id: string;\n type: MiddlewareType;\n name: string;\n description: string;\n enabled: boolean;\n /** 可选:限制该中间件暴露的工具列表。不配置则默认暴露所有工具 */\n allowedTools?: string[];\n config: SandboxMiddlewareConfig | CodeEvalMiddlewareConfig | BrowserMiddlewareConfig | SqlMiddlewareConfig | MetricsMiddlewareConfig | ClawMiddlewareConfig | CollectionMiddlewareConfig | SchedulerMiddlewareConfig | Record<string, any>;\n}\n\n/**\n * Bootstrap file configuration\n * Defines default content for project bootstrap files\n */\nexport interface BootstrapFilesConfig {\n /** Default content for AGENTS.md - operating instructions */\n agents?: string;\n /** Default content for SOUL.md - personality and tone */\n soul?: string;\n /** Default content for IDENTITY.md - agent identity */\n identity?: string;\n /** Default content for USER.md - user preferences */\n user?: string;\n /** Default content for TOOLS.md - tool documentation */\n tools?: string;\n /** Default content for BOOTSTRAP.md - first-run tasks */\n bootstrap?: string;\n}\n\n/**\n * Claw Middleware 配置\n * 用于配置 bootstrap 文件管理行为\n */\nexport interface ClawMiddlewareConfig {\n /** 是否启用 bootstrap 文件注入(默认:true) */\n injectBootstrapFiles?: boolean;\n /** 自定义 bootstrap 文件内容 */\n bootstrapFiles?: BootstrapFilesConfig;\n}\n\n\n/**\n * REACT agent configuration\n */\nexport interface ReactAgentConfig extends BaseAgentConfig {\n type: AgentType.REACT;\n tools?: string[]; // Tool list\n}\n\n/**\n * DEEP_AGENT configuration - only this type supports subAgents\n */\nexport interface DeepAgentConfig extends BaseAgentConfig {\n type: AgentType.DEEP_AGENT;\n tools?: string[]; // Tool list\n subAgents?: string[]; // Sub-agent list (unique to DEEP_AGENT)\n internalSubAgents?: AgentConfig[]; // Internal sub-agent list (unique to DEEP_AGENT)\n}\n\n/**\n * PROCESSING agent configuration — workflow orchestration with topology enforcement.\n * Replaces todoListMiddleware with topologyMiddleware.\n */\nexport interface ProcessingAgentConfig extends BaseAgentConfig {\n type: AgentType.PROCESSING;\n tools?: string[];\n subAgents?: string[];\n internalSubAgents?: AgentConfig[];\n}\n\n/**\n * Team teammate configuration -- describes an available teammate.\n */\nexport interface TeamTeammateConfig {\n /** Unique name for this teammate (used as agent ID) */\n name: string;\n /** Role category (e.g. \"research\", \"writing\", \"review\") */\n role: string;\n /** Human-readable description of what this teammate does */\n description: string;\n /** Tool keys this teammate has access to */\n tools?: string[];\n /** Custom system prompt for this teammate */\n prompt?: string;\n /** Model key override for this teammate */\n modelKey?: string;\n}\n\n/**\n * TEAM agent configuration -- a team lead that dynamically creates teammates.\n * Teammates are created on-the-fly from create_team tool input (name, role, description).\n */\nexport interface TeamAgentConfig extends BaseAgentConfig {\n type: AgentType.TEAM;\n /** Tool keys available to the team lead */\n tools?: string[];\n /** Maximum number of teammates running concurrently */\n maxConcurrency?: number;\n /**\n * Schedule lattice key for polling task list / mailbox.\n * When set, teammates use ScheduleLattice for periodic polling instead of event-driven wait.\n */\n scheduleLatticeKey?: string;\n /** Poll interval in ms when using schedule lattice (default: 5000) */\n pollIntervalMs?: number;\n}\n\n/**\n * Type guard to check if config is TeamAgentConfig\n */\nexport function isTeamAgentConfig(\n config: AgentConfig\n): config is TeamAgentConfig {\n return config.type === AgentType.TEAM;\n}\n\n// ─── A2A_REMOTE Agent ──────────────────────────────────────────────────────\n\n/**\n * A2A_REMOTE agent configuration — delegates to an external A2A server.\n *\n * This agent type wraps a remote A2A endpoint so orchestrators can treat\n * external agents the same as local LangGraph agents.\n */\nexport interface A2ARemoteAgentConfig extends BaseAgentConfig {\n type: AgentType.A2A_REMOTE;\n /**\n * URL of the remote agent's agent card (e.g. http://host:3000/.well-known/agent-card.json).\n * The builder fetches this card to discover the JSON-RPC endpoint.\n */\n agentCardUrl: string;\n /**\n * Optional API key sent as Bearer token or X-API-Key header.\n */\n apiKey?: string;\n /**\n * HTTP timeout in milliseconds (default: 300_000 = 5 min).\n */\n timeout?: number;\n /**\n * Optional tool keys (not used by the builder, but included for type compatibility).\n */\n tools?: string[];\n}\n\n/**\n * WORKFLOW agent configuration — compiled from YAML workflow DSL into a LangGraph StateGraph.\n *\n * The workflow field contains the full DSL definition (nodes, edges, state).\n * The WorkflowAgentGraphBuilder compiles this into a multi-node LangGraph\n * where each node invokes a registered sub-agent by ref.\n */\nexport interface WorkflowAgentConfig extends BaseAgentConfig {\n type: AgentType.WORKFLOW;\n /** The YAML workflow DSL definition string (needs+if format) */\n workflowYaml: string;\n /** Optional tool keys */\n tools?: string[];\n}\n\n/**\n * Type guard to check if config is A2ARemoteAgentConfig\n */\nexport function isA2ARemoteAgentConfig(\n config: AgentConfig\n): config is A2ARemoteAgentConfig {\n return config.type === AgentType.A2A_REMOTE;\n}\n\n/**\n * Type guard to check if config is WorkflowAgentConfig\n */\nexport function isWorkflowAgentConfig(\n config: AgentConfig\n): config is WorkflowAgentConfig {\n return config.type === AgentType.WORKFLOW;\n}\n\n/**\n * Agent configuration union type\n * Different agent types have different configuration options\n */\nexport type AgentConfig =\n | ReactAgentConfig\n | DeepAgentConfig\n | TeamAgentConfig\n | ProcessingAgentConfig\n | A2ARemoteAgentConfig\n | WorkflowAgentConfig\n\n/**\n * Agent configuration with tools property\n */\nexport type AgentConfigWithTools =\n | ReactAgentConfig\n | DeepAgentConfig\n | TeamAgentConfig\n | ProcessingAgentConfig\n | A2ARemoteAgentConfig\n | WorkflowAgentConfig\n\n/**\n * Type guard to check if config has tools property\n */\nexport function hasTools(config: AgentConfig): config is AgentConfigWithTools {\n return true;\n}\n\n/**\n * Type guard to check if config is DeepAgentConfig (has subAgents)\n */\nexport function isDeepAgentConfig(\n config: AgentConfig\n): config is DeepAgentConfig {\n return config.type === AgentType.DEEP_AGENT;\n}\n\n/**\n * Type guard to check if config is ProcessingAgentConfig (has subAgents + topology)\n */\nexport function isProcessingAgentConfig(\n config: AgentConfig\n): config is ProcessingAgentConfig {\n return config.type === AgentType.PROCESSING;\n}\n\n/**\n * Get tools from config safely\n */\nexport function getToolsFromConfig(config: AgentConfig): string[] {\n if (hasTools(config)) {\n return config.tools || [];\n }\n return [];\n}\n\n/**\n * Get subAgents from config safely (DeepAgentConfig and ProcessingAgentConfig have subAgents)\n */\nexport function getSubAgentsFromConfig(config: AgentConfig): string[] {\n if (isDeepAgentConfig(config) || isProcessingAgentConfig(config)) {\n return config.subAgents || [];\n }\n return [];\n}\n\n/**\n * 智能体客户端类型\n */\nexport type AgentClient = CompiledStateGraph<any, any, any, any, any>;\n\n/**\n * Graph构建选项\n */\nexport interface GraphBuildOptions {\n overrideTools?: string[];\n overrideModel?: string;\n metadata?: Record<string, any>;\n}\n\n/**\n * 智能体Lattice协议接口\n */\nexport interface AgentLatticeProtocol\n extends BaseLatticeProtocol<AgentConfig, AgentClient> {\n // 智能体执行函数\n invoke: (input: any, options?: any) => Promise<any>;\n\n // 构建智能体图\n buildGraph: (options?: GraphBuildOptions) => Promise<AgentClient>;\n}\n","/**\n * MemoryLatticeProtocol\n *\n * 记忆Lattice的协议,用于管理智能体的上下文和记忆\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * 记忆类型枚举\n */\nexport enum MemoryType {\n SHORT_TERM = \"short_term\",\n LONG_TERM = \"long_term\",\n EPISODIC = \"episodic\",\n SEMANTIC = \"semantic\",\n WORKING = \"working\",\n}\n\n/**\n * 记忆配置接口\n */\nexport interface MemoryConfig {\n name: string; // 名称\n description: string; // 描述\n type: MemoryType; // 记忆类型\n ttl?: number; // 生存时间\n capacity?: number; // 容量限制\n}\n\n/**\n * 记忆客户端接口\n */\nexport interface MemoryClient {\n add: (key: string, value: any) => Promise<void>;\n get: (key: string) => Promise<any>;\n update: (key: string, value: any) => Promise<void>;\n delete: (key: string) => Promise<void>;\n search: (query: string, options?: any) => Promise<any[]>;\n clear: () => Promise<void>;\n}\n\n/**\n * 记忆Lattice协议接口\n */\nexport interface MemoryLatticeProtocol\n extends BaseLatticeProtocol<MemoryConfig, MemoryClient> {\n // 记忆操作方法\n add: (key: string, value: any) => Promise<void>;\n get: (key: string) => Promise<any>;\n update: (key: string, value: any) => Promise<void>;\n delete: (key: string) => Promise<void>;\n search: (query: string, options?: any) => Promise<any[]>;\n clear: () => Promise<void>;\n}\n","/**\n * UILatticeProtocol\n *\n * UI Lattice的协议,用于定义用户界面组件\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * UI组件类型枚举\n */\nexport enum UIComponentType {\n CONTAINER = \"container\",\n INPUT = \"input\",\n BUTTON = \"button\",\n LIST = \"list\",\n TABLE = \"table\",\n CHART = \"chart\",\n FORM = \"form\",\n CARD = \"card\",\n MODAL = \"modal\",\n CUSTOM = \"custom\",\n}\n\n/**\n * UI配置接口\n */\nexport interface UIConfig {\n name: string; // 组件名称\n description: string; // 组件描述\n type: UIComponentType; // 组件类型\n props?: Record<string, any>; // 组件属性\n children?: string[]; // 子组件列表\n}\n\n/**\n * UI组件接口\n * 使用泛型以适应不同的UI框架(React, Vue等)\n */\nexport interface UIComponent<T = any> {\n render: (props?: any) => T;\n addEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n removeEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n}\n\n/**\n * UI Lattice协议接口\n */\nexport interface UILatticeProtocol<T = any>\n extends BaseLatticeProtocol<UIConfig, UIComponent<T>> {\n // UI渲染方法\n render: (props?: any) => T;\n\n // 事件处理\n addEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n removeEventListener: (event: string, handler: (...args: unknown[]) => void) => void;\n}\n","/**\n * QueueLatticeProtocol\n *\n * Queue Lattice protocol for task queue management\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Queue service type enumeration\n */\nexport enum QueueType {\n MEMORY = \"memory\",\n REDIS = \"redis\",\n}\n\n/**\n * Queue configuration interface\n */\nexport interface QueueConfig {\n name: string; // Queue name\n description: string; // Queue description\n type: QueueType; // Queue service type\n queueName?: string; // Specific queue name (e.g., \"tasks\")\n options?: Record<string, any>; // Additional options (e.g., Redis connection options)\n}\n\n/**\n * Queue operation result interface\n */\nexport interface QueueResult<T = any> {\n data: T | null;\n error: any | null;\n}\n\n/**\n * Queue client interface\n */\nexport interface QueueClient {\n push: (item: any) => Promise<QueueResult<number>>;\n pop: () => Promise<QueueResult<any>>;\n createQueue?: () => Promise<{ success: boolean; queue_name?: string; error?: any }>;\n}\n\n/**\n * Queue Lattice protocol interface\n */\nexport interface QueueLatticeProtocol\n extends BaseLatticeProtocol<QueueConfig, QueueClient> {\n // Queue operations\n push: (item: any) => Promise<QueueResult<number>>;\n pop: () => Promise<QueueResult<any>>;\n createQueue?: () => Promise<{ success: boolean; queue_name?: string; error?: any }>;\n}\n\n\n\n","/**\n * ScheduleLatticeProtocol\n *\n * Schedule Lattice protocol for delayed and recurring task execution management\n * Supports persistence and recovery after service restart\n * Supports both one-time delayed tasks and cron-style recurring tasks\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Schedule service type enumeration\n */\nexport enum ScheduleType {\n MEMORY = \"memory\",\n POSTGRES = \"postgres\",\n REDIS = \"redis\",\n}\n\n/**\n * Schedule execution type - one-time or recurring\n */\nexport enum ScheduleExecutionType {\n ONCE = \"once\", // Execute once at specified time\n CRON = \"cron\", // Recurring based on cron expression\n}\n\n/**\n * Task status enumeration\n */\nexport enum ScheduledTaskStatus {\n PENDING = \"pending\", // Waiting to be executed\n RUNNING = \"running\", // Currently executing\n COMPLETED = \"completed\", // Successfully completed (for ONCE type)\n FAILED = \"failed\", // Execution failed\n CANCELLED = \"cancelled\", // Manually cancelled\n PAUSED = \"paused\", // Paused (for CRON type)\n}\n\n/**\n * Schedule configuration interface\n */\nexport interface ScheduleConfig {\n name: string;\n description: string;\n type: ScheduleType;\n storage?: ScheduleStorage; // Optional storage for persistence\n options?: Record<string, any>;\n}\n\n/**\n * Scheduled task definition - fully serializable\n * Supports both one-time and cron-style recurring tasks\n */\nexport interface ScheduledTaskDefinition {\n taskId: string;\n taskType: string; // Maps to a registered handler\n payload: Record<string, any>; // JSON-serializable data passed to handler\n\n // Context fields for querying\n tenantId: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n\n // Execution configuration\n executionType: ScheduleExecutionType;\n\n // For ONCE type - execute at specific time or after delay\n executeAt?: number; // Timestamp when to execute\n delayMs?: number; // Original delay in milliseconds (for reference)\n\n // For CRON type - recurring schedule\n cronExpression?: string; // Cron format: \"0 9 * * *\" (min hour day month weekday)\n timezone?: string; // Timezone: \"Asia/Shanghai\", defaults to system timezone\n nextRunAt?: number; // Next calculated execution time\n lastRunAt?: number; // Last execution time\n\n // Execution tracking\n status: ScheduledTaskStatus;\n runCount: number; // How many times executed\n maxRuns?: number; // Max executions (null/undefined = infinite for cron, 1 for once)\n\n // Error handling\n retryCount: number; // Current retry count\n maxRetries: number; // Maximum retry attempts\n lastError?: string; // Last error message if failed\n\n // Timestamps\n createdAt: number;\n updatedAt: number;\n expiresAt?: number; // When to stop (for cron, optional)\n\n metadata?: Record<string, any>; // Additional metadata\n}\n\n/**\n * Task handler function type\n */\nexport type TaskHandler = (\n payload: Record<string, any>,\n taskInfo: ScheduledTaskDefinition\n) => void | Promise<void>;\n\n/**\n * Options for scheduling a one-time task\n */\nexport interface ScheduleOnceOptions {\n executeAt?: number; // Absolute timestamp to execute\n delayMs?: number; // OR relative delay from now\n maxRetries?: number; // Max retry attempts (default: 0)\n tenantId?: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n metadata?: Record<string, any>;\n}\n\n/**\n * Options for scheduling a cron task\n */\nexport interface ScheduleCronOptions {\n cronExpression: string; // Cron expression: \"0 9 * * *\"\n timezone?: string; // Timezone: \"Asia/Shanghai\"\n maxRuns?: number; // Max executions (undefined = infinite)\n expiresAt?: number; // Stop after this timestamp\n maxRetries?: number; // Max retry attempts per run (default: 0)\n tenantId?: string; // Tenant isolation\n assistantId?: string; // Which assistant created/owns this task\n threadId?: string; // Which thread this task belongs to\n metadata?: Record<string, any>;\n}\n\n/**\n * Schedule storage interface for persistence\n */\nexport interface ScheduleStorage {\n /**\n * Save a new task\n */\n save(task: ScheduledTaskDefinition): Promise<void>;\n\n /**\n * Get task by ID\n */\n get(taskId: string): Promise<ScheduledTaskDefinition | null>;\n\n /**\n * Update task\n */\n update(\n taskId: string,\n updates: Partial<ScheduledTaskDefinition>\n ): Promise<void>;\n\n /**\n * Delete task\n */\n delete(taskId: string): Promise<void>;\n\n /**\n * Get all pending/active tasks (for recovery)\n * Returns tasks with status: PENDING or PAUSED\n */\n getActiveTasks(): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by type\n */\n getTasksByType(taskType: string): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by status\n */\n getTasksByStatus(\n status: ScheduledTaskStatus\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by execution type\n */\n getTasksByExecutionType(\n executionType: ScheduleExecutionType\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by assistant ID\n */\n getTasksByAssistantId(\n assistantId: string\n ): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get tasks by thread ID\n */\n getTasksByThreadId(threadId: string): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Get all tasks (with optional filters)\n */\n getAllTasks(filters?: {\n tenantId?: string;\n status?: ScheduledTaskStatus;\n executionType?: ScheduleExecutionType;\n taskType?: string;\n assistantId?: string;\n threadId?: string;\n limit?: number;\n offset?: number;\n }): Promise<ScheduledTaskDefinition[]>;\n\n /**\n * Count tasks (with optional filters)\n */\n countTasks(filters?: {\n tenantId?: string;\n status?: ScheduledTaskStatus;\n executionType?: ScheduleExecutionType;\n taskType?: string;\n assistantId?: string;\n threadId?: string;\n }): Promise<number>;\n\n /**\n * Delete completed/cancelled tasks older than specified time\n * Useful for cleanup\n */\n deleteOldTasks(olderThanMs: number): Promise<number>;\n}\n\n/**\n * Schedule client interface\n */\nexport interface ScheduleClient {\n // ===== Handler Registration =====\n\n /**\n * Register a handler for a task type\n * Must be called before scheduling tasks of this type\n */\n registerHandler(taskType: string, handler: TaskHandler): void;\n\n /**\n * Unregister a handler\n */\n unregisterHandler(taskType: string): boolean;\n\n /**\n * Check if a handler is registered\n */\n hasHandler(taskType: string): boolean;\n\n /**\n * Get all registered handler types\n */\n getHandlerTypes(): string[];\n\n // ===== One-time Task Scheduling =====\n\n /**\n * Schedule a one-time task\n * @param taskId - Unique identifier for the task\n * @param taskType - Type of task (must have a registered handler)\n * @param payload - Data to pass to the handler (must be JSON-serializable)\n * @param options - Execution options (executeAt or delayMs required)\n */\n scheduleOnce(\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleOnceOptions\n ): Promise<boolean>;\n\n // ===== Cron Task Scheduling =====\n\n /**\n * Schedule a recurring cron task\n * @param taskId - Unique identifier for the task\n * @param taskType - Type of task (must have a registered handler)\n * @param payload - Data to pass to the handler (must be JSON-serializable)\n * @param options - Cron options (cronExpression required)\n */\n scheduleCron(\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleCronOptions\n ): Promise<boolean>;\n\n // ===== Task Management =====\n\n /**\n * Cancel a scheduled task\n */\n cancel(taskId: string): Promise<boolean>;\n\n /**\n * Pause a cron task (only for CRON type)\n */\n pause(taskId: string): Promise<boolean>;\n\n /**\n * Resume a paused cron task (only for CRON type)\n */\n resume(taskId: string): Promise<boolean>;\n\n /**\n * Check if a task exists\n */\n has(taskId: string): Promise<boolean>;\n\n /**\n * Get task information\n */\n getTask(taskId: string): Promise<ScheduledTaskDefinition | null>;\n\n /**\n * Get remaining time until next execution\n * Returns -1 if task not found or already executed\n */\n getRemainingTime(taskId: string): Promise<number>;\n\n /**\n * Get count of active tasks (pending + paused)\n */\n getActiveTaskCount(): Promise<number>;\n\n /**\n * Get all active task IDs\n */\n getActiveTaskIds(): Promise<string[]>;\n\n /**\n * Cancel all active tasks\n */\n cancelAll(): Promise<void>;\n\n // ===== Recovery =====\n\n /**\n * Restore active tasks from storage (call on service startup)\n * Re-schedules all pending tasks with their remaining time\n * Re-schedules all cron tasks for their next run\n * @returns Number of tasks restored\n */\n restore(): Promise<number>;\n\n // ===== Storage =====\n\n /**\n * Set the storage backend\n */\n setStorage(storage: ScheduleStorage): void;\n\n /**\n * Get current storage backend\n */\n getStorage(): ScheduleStorage | null;\n}\n\n/**\n * Schedule Lattice protocol interface\n */\nexport interface ScheduleLatticeProtocol\n extends BaseLatticeProtocol<ScheduleConfig, ScheduleClient> {\n // Handler registration\n registerHandler: (taskType: string, handler: TaskHandler) => void;\n unregisterHandler: (taskType: string) => boolean;\n hasHandler: (taskType: string) => boolean;\n getHandlerTypes: () => string[];\n\n // One-time task scheduling\n scheduleOnce: (\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleOnceOptions\n ) => Promise<boolean>;\n\n // Cron task scheduling\n scheduleCron: (\n taskId: string,\n taskType: string,\n payload: Record<string, any>,\n options: ScheduleCronOptions\n ) => Promise<boolean>;\n\n // Task management\n cancel: (taskId: string) => Promise<boolean>;\n pause: (taskId: string) => Promise<boolean>;\n resume: (taskId: string) => Promise<boolean>;\n has: (taskId: string) => Promise<boolean>;\n getTask: (taskId: string) => Promise<ScheduledTaskDefinition | null>;\n getRemainingTime: (taskId: string) => Promise<number>;\n getActiveTaskCount: () => Promise<number>;\n getActiveTaskIds: () => Promise<string[]>;\n cancelAll: () => Promise<void>;\n\n // Recovery\n restore: () => Promise<number>;\n}\n","/**\n * LoggerLatticeProtocol\n *\n * Logger Lattice protocol for logging management\n */\n\nimport { BaseLatticeProtocol } from \"./BaseLatticeProtocol\";\n\n/**\n * Logger service type enumeration\n */\nexport enum LoggerType {\n PINO = \"pino\",\n CONSOLE = \"console\",\n CUSTOM = \"custom\",\n}\n\n/**\n * Logger context interface\n */\nexport interface LoggerContext {\n \"x-user-id\"?: string;\n \"x-tenant-id\"?: string;\n \"x-request-id\"?: string;\n \"x-task-id\"?: string;\n \"x-thread-id\"?: string;\n [key: string]: any;\n}\n\n/**\n * Pino logger file transport options\n */\nexport interface PinoFileOptions {\n file?: string; // Log file path (e.g., \"./logs/app.log\" or \"./logs/app\")\n frequency?: \"daily\" | \"hourly\" | \"minutely\" | string; // Log rotation frequency\n mkdir?: boolean; // Create directory if not exists\n size?: string; // Max file size (e.g., \"10M\", \"100K\")\n maxFiles?: number; // Maximum number of log files to keep\n}\n\n/**\n * Logger configuration interface\n */\nexport interface LoggerConfig {\n name: string; // Logger name\n description?: string; // Logger description\n type: LoggerType; // Logger service type\n serviceName?: string; // Service name (e.g., \"lattice-gateway\")\n loggerName?: string; // Logger instance name (e.g., \"fastify-server\")\n context?: LoggerContext; // Initial context\n // File logging options (for PINO type)\n file?: string | PinoFileOptions; // Log file path or detailed file options\n // Additional options (e.g., pino config, custom logger settings)\n options?: Record<string, any>;\n}\n\n/**\n * Logger client interface\n */\nexport interface LoggerClient {\n info: (msg: string, obj?: object) => void;\n error: (msg: string, obj?: object | Error) => void;\n warn: (msg: string, obj?: object) => void;\n debug: (msg: string, obj?: object) => void;\n updateContext?: (context: Partial<LoggerContext>) => void;\n child?: (options: Partial<LoggerConfig>) => LoggerClient;\n}\n\n/**\n * Logger Lattice protocol interface\n */\nexport interface LoggerLatticeProtocol\n extends BaseLatticeProtocol<LoggerConfig, LoggerClient> {\n // Logger operations\n info: (msg: string, obj?: object) => void;\n error: (msg: string, obj?: object | Error) => void;\n warn: (msg: string, obj?: object) => void;\n debug: (msg: string, obj?: object) => void;\n updateContext?: (context: Partial<LoggerContext>) => void;\n child?: (options: Partial<LoggerConfig>) => LoggerClient;\n}\n","/**\n * MessageProtocol\n *\n */\n\n\n\n/**\n * Base message interface\n */\nexport interface BaseMessage {\n id: string; // Unique identifier for the message\n role: string; // Role of the sender (user, assistant, system, tool, developer)\n content?: string; // Optional text content of the message\n name?: string; // Optional name of the sender\n}\n\n/**\n * User message interface\n */\nexport interface UserMessage extends BaseMessage {\n role: \"human\";\n content: string; // Text input from the user\n files?: Array<{ name: string; id: string }>; // Optional files attached to the message\n}\n\n/**\n * Tool call interface\n */\nexport interface ToolCall {\n id: string; // Unique identifier for this tool call\n name: string; // Name of the tool/function to call\n args: Record<string, any>; // Arguments as an object\n type: \"tool_call\"; // Type of tool call\n response?: string; // Optional response from the tool execution\n}\n\n/**\n * Assistant message interface\n */\nexport interface AssistantMessage extends BaseMessage {\n role: \"ai\";\n content?: string; // Text response from the assistant (optional if using tool calls)\n tool_calls?: ToolCall[]; // Optional tool calls made by the assistant\n}\n\nexport interface InterruptMessage extends BaseMessage {\n type: \"interrupt\";\n value: any;\n}\n\n/**\n * System message interface\n */\nexport interface SystemMessage extends BaseMessage {\n role: \"system\";\n content: string; // Instructions or context for the assistant\n}\n\n/**\n * Tool message interface\n */\nexport interface ToolMessage extends BaseMessage {\n role: \"tool\";\n content: string; // Result from the tool execution\n tool_call_id: string; // ID of the tool call this message responds to\n}\n\n/**\n * Developer message interface\n */\nexport interface DeveloperMessage extends BaseMessage {\n role: \"developer\";\n content: string; // Content for development or debugging\n}\n\n/**\n * Message chunk type constants\n */\nexport const MessageChunkTypes = {\n HUMAN: 'human',\n AI: 'ai',\n TOOL: 'tool',\n INTERRUPT: 'interrupt',\n MESSAGE_COMPLETED: 'message_completed',\n MESSAGE_FAILED: 'message_failed',\n THREAD_IDLE: 'thread_idle',\n} as const;\n\nexport type MessageChunkType = typeof MessageChunkTypes[keyof typeof MessageChunkTypes];\n\nexport interface MessageChunk {\n type: MessageChunkType;\n data: {\n id: string;\n content?: string;\n tool_call_chunks?: Array<{\n name?: string;\n args?: string;\n id?: string;\n index: number;\n }>;\n tool_calls?: Array<{\n name: string;\n args: Record<string, any>;\n id: string;\n type: string;\n response?: string;\n }>;\n additional_kwargs?: {\n tool_calls?: Array<{\n function?: { name?: string; arguments?: any };\n id?: string;\n }>;\n };\n tool_call_id?: string;\n };\n}\n\n/**\n * Message type union\n */\nexport type Message =\n | UserMessage\n | AssistantMessage\n | SystemMessage\n | ToolMessage\n | DeveloperMessage;\n","/**\n * McpLatticeProtocol\n *\n * Model Context Protocol (MCP) lattice protocol for integrating MCP servers\n * with the Lattice framework. Provides standardized interfaces for MCP\n * client connections, tool discovery, and remote execution.\n */\n\nimport { BaseLatticeProtocol, LatticeMessage } from \"./BaseLatticeProtocol\";\n\n/**\n * MCP transport type\n */\nexport type McpTransportType = \"stdio\" | \"streamable_http\" | \"sse\";\n\n/**\n * MCP server configuration\n */\nexport interface McpServerConfig {\n /** Server name */\n name: string;\n /** Server version */\n version: string;\n /** Transport type */\n transport: McpTransportType;\n /** Command for stdio transport (e.g., \"npx\", \"python\") */\n command?: string;\n /** Arguments for stdio transport */\n args?: string[];\n /** URL for HTTP/SSE transport */\n url?: string;\n /** Environment variables */\n env?: Record<string, string>;\n /** Connection timeout in milliseconds */\n timeout?: number;\n /** Retry attempts on connection failure */\n retryAttempts?: number;\n}\n\n/**\n * MCP tool definition\n */\nexport interface McpTool {\n /** Tool name */\n name: string;\n /** Tool description */\n description: string;\n /** Input schema */\n inputSchema: {\n type: \"object\";\n properties: Record<string, any>;\n required?: string[];\n };\n /** Tool metadata */\n metadata?: Record<string, any>;\n}\n\n/**\n * MCP tool call result\n */\nexport interface McpToolResult {\n /** Whether the call was successful */\n success: boolean;\n /** Result content */\n content: Array<{\n type: \"text\" | \"image\" | \"audio\" | \"resource\";\n data: any;\n mimeType?: string;\n }>;\n /** Error message if failed */\n error?: string;\n /** Execution metadata */\n metadata?: {\n duration: number;\n tokens?: number;\n model?: string;\n };\n}\n\n/**\n * MCP client interface\n */\nexport interface McpClient {\n /** Client name */\n name: string;\n /** Client version */\n version: string;\n /** Server configuration */\n serverConfig: McpServerConfig;\n \n /**\n * Connect to MCP server\n */\n connect(): Promise<void>;\n \n /**\n * Disconnect from MCP server\n */\n disconnect(): Promise<void>;\n \n /**\n * Check if connected\n */\n isConnected(): boolean;\n \n /**\n * List available tools\n */\n listTools(): Promise<McpTool[]>;\n \n /**\n * Call a tool\n */\n callTool(name: string, arguments_: Record<string, any>): Promise<McpToolResult>;\n \n /**\n * Subscribe to server notifications\n */\n subscribe(topic: string, handler: (data: any) => void): void;\n \n /**\n * Unsubscribe from server notifications\n */\n unsubscribe(topic: string): void;\n \n /**\n * Get client statistics\n */\n getStats(): McpStats;\n \n /**\n * Get connection status\n */\n getStatus(): McpConnectionStatus;\n}\n\n/**\n * MCP client options\n */\nexport interface McpClientOptions {\n /** Client name */\n name: string;\n /** Client version */\n version: string;\n /** Server configuration */\n serverConfig: McpServerConfig;\n /** Auto-connect on initialization */\n autoConnect?: boolean;\n /** Error handler */\n onError?: (error: Error) => void;\n /** Connection status handler */\n onStatusChange?: (status: McpConnectionStatus) => void;\n}\n\n/**\n * MCP Lattice protocol interface\n */\nexport interface McpLatticeProtocol\n extends BaseLatticeProtocol<McpServerConfig, McpClient> {\n /**\n * Server configuration\n */\n config: McpServerConfig;\n \n /**\n * MCP client instance\n */\n client: McpClient;\n \n /**\n * Connect to MCP server\n */\n connect(): Promise<void>;\n \n /**\n * Disconnect from MCP server\n */\n disconnect(): Promise<void>;\n \n /**\n * Get available tools\n */\n getTools(): Promise<McpTool[]>;\n \n /**\n * Execute a tool\n */\n executeTool(\n name: string,\n arguments_: Record<string, any>\n ): Promise<McpToolResult>;\n \n /**\n * Execute with automatic retries\n */\n executeToolWithRetry(\n name: string,\n arguments_: Record<string, any>,\n maxRetries?: number\n ): Promise<McpToolResult>;\n \n /**\n * Get protocol version\n */\n getProtocolVersion(): string;\n \n /**\n * Health check\n */\n healthCheck(): Promise<boolean>;\n}\n\n/**\n * MCP message types\n */\nexport enum McpMessageType {\n CONNECT = \"mcp:connect\",\n DISCONNECT = \"mcp:disconnect\",\n LIST_TOOLS = \"mcp:list_tools\",\n CALL_TOOL = \"mcp:call_tool\",\n TOOL_RESULT = \"mcp:tool_result\",\n NOTIFICATION = \"mcp:notification\",\n ERROR = \"mcp:error\",\n HEALTH_CHECK = \"mcp:health_check\",\n}\n\n/**\n * MCP Lattice message\n */\nexport interface McpLatticeMessage extends LatticeMessage {\n type: McpMessageType;\n payload: {\n toolName?: string;\n arguments?: Record<string, any>;\n result?: McpToolResult;\n tools?: McpTool[];\n error?: string;\n };\n}\n\n/**\n * MCP connection status\n */\nexport type McpConnectionStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"reconnecting\"\n | \"error\";\n\n/**\n * MCP statistics\n */\nexport interface McpStats {\n totalCalls: number;\n successfulCalls: number;\n failedCalls: number;\n averageLatency: number;\n lastCallTimestamp: number;\n}\n","/**\n * A2AProtocol - Google Agent-to-Agent Protocol type definitions\n *\n * Based on the A2A open protocol spec for AI agent interoperability.\n * @see https://github.com/google/A2A\n */\n\n// ─── Agent Card ───────────────────────────────────────────────────────────\n\nexport interface A2ASkill {\n id: string;\n name: string;\n description: string;\n tags: string[];\n examples: string[];\n}\n\nexport interface A2ACapabilities {\n streaming: boolean;\n pushNotifications: boolean;\n stateTransitionHistory: boolean;\n}\n\nexport interface A2AProvider {\n organization: string;\n url?: string;\n}\n\nexport interface AgentCard {\n name: string;\n description: string;\n url: string;\n provider: A2AProvider;\n version: string;\n documentationUrl?: string;\n capabilities: A2ACapabilities;\n defaultInputModes: string[];\n defaultOutputModes: string[];\n skills: A2ASkill[];\n}\n\n// ─── Artifact / Part ──────────────────────────────────────────────────────\n\nexport interface A2ATextPart {\n type: \"text\";\n text: string;\n}\n\nexport interface A2AFilePart {\n type: \"file\";\n file: {\n name: string;\n mimeType: string;\n bytes?: string;\n uri?: string;\n };\n}\n\nexport interface A2ADataPart {\n type: \"data\";\n data: Record<string, unknown>;\n}\n\nexport type A2APart = A2ATextPart | A2AFilePart | A2ADataPart;\n\n// ─── Message ──────────────────────────────────────────────────────────────\n\nexport interface A2AMessage {\n role: \"user\" | \"agent\";\n parts: A2APart[];\n metadata?: Record<string, unknown>;\n}\n\n// ─── Task ─────────────────────────────────────────────────────────────────\n\nexport type A2ATaskState =\n | \"working\"\n | \"input-required\"\n | \"completed\"\n | \"failed\"\n | \"canceled\"\n | \"rejected\";\n\nexport interface A2ATaskStatus {\n state: A2ATaskState;\n message?: A2AMessage;\n timestamp: string;\n}\n\nexport interface A2AArtifact {\n name?: string;\n description?: string;\n parts: A2APart[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2ATask {\n id: string;\n sessionId?: string;\n status: A2ATaskStatus;\n artifacts: A2AArtifact[];\n history?: A2AMessage[];\n metadata?: Record<string, unknown>;\n}\n\n// ─── Request / Response ───────────────────────────────────────────────────\n\nexport interface A2ATaskSendRequest {\n id?: string;\n sessionId?: string;\n message: A2AMessage;\n pushNotification?: A2APushNotification;\n historyLength?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2APushNotification {\n url: string;\n token?: string;\n}\n\nexport interface A2ATaskUpdatePayload {\n id: string;\n sessionId?: string;\n status: A2ATaskStatus;\n final?: boolean;\n metadata?: Record<string, unknown>;\n}\n\nexport interface A2ATaskArtifactUpdatePayload {\n id: string;\n sessionId?: string;\n artifact: A2AArtifact;\n final?: boolean;\n metadata?: Record<string, unknown>;\n}\n\n// ─── SSE Events ───────────────────────────────────────────────────────────\n\nexport type A2ASSEEvent =\n | { event: \"task\"; data: A2ATaskUpdatePayload }\n | { event: \"status-update\"; data: A2ATaskUpdatePayload }\n | { event: \"artifact-update\"; data: A2ATaskArtifactUpdatePayload }\n | { event: \"error\"; data: { code: string; message: string } };\n\n// ─── Config ───────────────────────────────────────────────────────────────\n\nexport interface A2AConfig {\n agentName: string;\n agentDescription: string;\n agentUrl: string;\n organization: string;\n version?: string;\n capabilities?: Partial<A2ACapabilities>;\n defaultInputModes?: string[];\n defaultOutputModes?: string[];\n skills?: A2ASkill[];\n apiKeyMap: Map<string, A2AApiKeyEntry>;\n}\n\nexport interface A2AApiKeyEntry {\n key: string;\n tenantId?: string;\n projectId?: string;\n workspaceId?: string;\n}\n\nexport const A2A_DEFAULT_CAPABILITIES: A2ACapabilities = {\n streaming: true,\n pushNotifications: false,\n stateTransitionHistory: false,\n};\n\nexport const A2A_DEFAULT_INPUT_MODES = [\"text\", \"text/plain\"];\nexport const A2A_DEFAULT_OUTPUT_MODES = [\"text\", \"text/plain\", \"text/markdown\"];\n\nexport interface A2AAuthContext {\n authenticated: boolean;\n apiKey?: string;\n tenantId?: string;\n projectId?: string;\n workspaceId?: string;\n source?: \"bearer\" | \"x-api-key\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,gBAAa;AAEb,EAAAA,WAAA,gBAAa;AAEb,EAAAA,WAAA,cAAW;AARD,SAAAA;AAAA,GAAA;AA0NL,SAAS,kBACd,QAC2B;AAC3B,SAAO,OAAO,SAAS;AACzB;AAiDO,SAAS,uBACd,QACgC;AAChC,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,sBACd,QAC+B;AAC/B,SAAO,OAAO,SAAS;AACzB;AA4BO,SAAS,SAAS,QAAqD;AAC5E,SAAO;AACT;AAKO,SAAS,kBACd,QAC2B;AAC3B,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,wBACd,QACiC;AACjC,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,mBAAmB,QAA+B;AAChE,MAAI,SAAS,MAAM,GAAG;AACpB,WAAO,OAAO,SAAS,CAAC;AAAA,EAC1B;AACA,SAAO,CAAC;AACV;AAKO,SAAS,uBAAuB,QAA+B;AACpE,MAAI,kBAAkB,MAAM,KAAK,wBAAwB,MAAM,GAAG;AAChE,WAAO,OAAO,aAAa,CAAC;AAAA,EAC9B;AACA,SAAO,CAAC;AACV;;;AClWO,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,aAAU;AALA,SAAAA;AAAA,GAAA;;;ACAL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AAVC,SAAAA;AAAA,GAAA;;;ACAL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AAFE,SAAAA;AAAA,GAAA;;;ACEL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AASL,IAAK,wBAAL,kBAAKC,2BAAL;AACL,EAAAA,uBAAA,UAAO;AACP,EAAAA,uBAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;AAQL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,YAAS;AACT,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,YAAS;AANC,SAAAA;AAAA,GAAA;;;ACnBL,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;;;ACoEL,IAAM,oBAAoB;AAAA,EAC/B,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,aAAa;AACf;;;ACgIO,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,gBAAa;AACb,EAAAA,gBAAA,gBAAa;AACb,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,iBAAc;AACd,EAAAA,gBAAA,kBAAe;AACf,EAAAA,gBAAA,WAAQ;AACR,EAAAA,gBAAA,kBAAe;AARL,SAAAA;AAAA,GAAA;;;AChDL,IAAM,2BAA4C;AAAA,EACvD,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAEO,IAAM,0BAA0B,CAAC,QAAQ,YAAY;AACrD,IAAM,2BAA2B,CAAC,QAAQ,cAAc,eAAe;","names":["AgentType","MemoryType","UIComponentType","QueueType","ScheduleType","ScheduleExecutionType","ScheduledTaskStatus","LoggerType","McpMessageType"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiom-lattice/protocols",
3
- "version": "2.1.51",
3
+ "version": "2.1.53",
4
4
  "description": "Unified protocol type definitions for Axiom Lattice framework",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -20,6 +20,7 @@ export interface ConnectionEntry {
20
20
  }
21
21
 
22
22
  export interface ConnectionStore {
23
+ listByTenant(tenantId: string): Promise<ConnectionEntry[]>;
23
24
  listByType(tenantId: string, type: string): Promise<ConnectionEntry[]>;
24
25
  getByKey(tenantId: string, type: string, key: string): Promise<ConnectionEntry | null>;
25
26
  create(entry: Omit<ConnectionEntry, "id" | "createdAt" | "updatedAt">): Promise<ConnectionEntry>;
@@ -133,6 +133,7 @@ export interface EvalStore {
133
133
  getResultsByRun(tenantId: string, runId: string): Promise<EvalRunResult[]>;
134
134
  createRunResult(tenantId: string, runId: string, id: string, data: Omit<EvalRunResult, 'id' | 'runId' | 'createdAt'>): Promise<EvalRunResult>;
135
135
  updateRunResult(tenantId: string, id: string, updates: Partial<EvalRunResult>): Promise<EvalRunResult | null>;
136
+ deleteRunResult(tenantId: string, id: string): Promise<boolean>;
136
137
 
137
138
  getProjectReport(tenantId: string, projectId: string): Promise<EvalProjectReport | null>;
138
139
  }
@@ -26,7 +26,9 @@ export interface LLMConfig {
26
26
  apiKey?: string;
27
27
  baseURL?: string;
28
28
  modelKwargs?: Record<string, any>;
29
- extra?: Record<string, any>
29
+ extra?: Record<string, any>;
30
+ /** Whether the model supports vision/image inputs for multimodal processing */
31
+ supportsVision?: boolean;
30
32
  }
31
33
 
32
34
  /**
@@ -1,3 +1,5 @@
1
+ import type { AgentConfig } from "./AgentLatticeProtocol";
2
+
1
3
  /**
2
4
  * Plugin Connection 字段 schema(驱动前端表单渲染)
3
5
  */
@@ -190,4 +192,16 @@ export interface Plugin {
190
192
  * Builder 在构建中间件之前从所有启用的插件中收集。
191
193
  */
192
194
  skills?: Record<string, string>;
195
+ /**
196
+ * 插件贡献的 Agent 定义(以 agent key 为键)。
197
+ * 在租户首次访问时通过 ensurePluginAgentsForTenant 按租户注册到
198
+ * AgentLatticeManager,与 builtin agents 模式一致。所有租户全局可用。
199
+ */
200
+ agents?: Record<string, AgentConfig>;
201
+ /**
202
+ * 插件贡献的 Store 实现(以 store type 为键)。
203
+ * 在 configureStores 时通过 customStores 机制自动注册到 StoreLatticeManager。
204
+ * 支持工厂函数(延迟初始化)或实例对象。
205
+ */
206
+ stores?: Record<string, object | (() => object)>;
193
207
  }
@@ -19,6 +19,16 @@ export interface TaskItem {
19
19
  */
20
20
  tenantId: string;
21
21
 
22
+ /**
23
+ * Workspace identifier (from runConfig)
24
+ */
25
+ workspaceId?: string;
26
+
27
+ /**
28
+ * Project identifier (from runConfig)
29
+ */
30
+ projectId?: string;
31
+
22
32
  /**
23
33
  * Owner type — either a user or an agent
24
34
  */
@@ -42,7 +52,7 @@ export interface TaskItem {
42
52
  /**
43
53
  * Task status
44
54
  */
45
- status: 'pending' | 'in_progress' | 'completed' | 'cancelled';
55
+ status: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
46
56
 
47
57
  /**
48
58
  * Task priority level
@@ -83,6 +93,26 @@ export interface TaskItem {
83
93
  * Task last update timestamp
84
94
  */
85
95
  updatedAt: Date;
96
+
97
+ /**
98
+ * Whether this task requires review before completion
99
+ */
100
+ requireReview?: boolean;
101
+
102
+ /**
103
+ * IDs of tasks this task depends on
104
+ */
105
+ dependencies?: string[];
106
+
107
+ /**
108
+ * Task result output
109
+ */
110
+ result?: string;
111
+
112
+ /**
113
+ * Reason for task failure (when status is 'failed')
114
+ */
115
+ failureReason?: string;
86
116
  }
87
117
 
88
118
  /**
@@ -102,13 +132,23 @@ export interface CreateTaskRequest {
102
132
  /**
103
133
  * Task status — defaults to 'pending' if not provided
104
134
  */
105
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
135
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
106
136
 
107
137
  /**
108
138
  * Task priority level — defaults to 'medium' if not provided
109
139
  */
110
140
  priority?: 'low' | 'medium' | 'high';
111
141
 
142
+ /**
143
+ * Workspace identifier
144
+ */
145
+ workspaceId?: string;
146
+
147
+ /**
148
+ * Project identifier
149
+ */
150
+ projectId?: string;
151
+
112
152
  /**
113
153
  * Optional due date as ISO string
114
154
  */
@@ -143,6 +183,26 @@ export interface CreateTaskRequest {
143
183
  * Owner identifier — defaults based on context if not provided
144
184
  */
145
185
  ownerId?: string;
186
+
187
+ /**
188
+ * Whether this task requires review before completion
189
+ */
190
+ requireReview?: boolean;
191
+
192
+ /**
193
+ * IDs of tasks this task depends on
194
+ */
195
+ dependencies?: string[];
196
+
197
+ /**
198
+ * Task result output
199
+ */
200
+ result?: string;
201
+
202
+ /**
203
+ * Reason for task failure (when status is 'failed')
204
+ */
205
+ failureReason?: string;
146
206
  }
147
207
 
148
208
  /**
@@ -162,13 +222,23 @@ export interface UpdateTaskRequest {
162
222
  /**
163
223
  * Task status
164
224
  */
165
- status?: 'pending' | 'in_progress' | 'completed' | 'cancelled';
225
+ status?: 'pending' | 'in_progress' | 'review' | 'failed' | 'interrupted' | 'completed' | 'cancelled';
166
226
 
167
227
  /**
168
228
  * Task priority level
169
229
  */
170
230
  priority?: 'low' | 'medium' | 'high';
171
231
 
232
+ /**
233
+ * Workspace identifier
234
+ */
235
+ workspaceId?: string;
236
+
237
+ /**
238
+ * Project identifier
239
+ */
240
+ projectId?: string;
241
+
172
242
  /**
173
243
  * Optional due date as ISO string
174
244
  */
@@ -203,6 +273,26 @@ export interface UpdateTaskRequest {
203
273
  * Owner identifier
204
274
  */
205
275
  ownerId?: string;
276
+
277
+ /**
278
+ * Whether this task requires review before completion
279
+ */
280
+ requireReview?: boolean;
281
+
282
+ /**
283
+ * IDs of tasks this task depends on
284
+ */
285
+ dependencies?: string[];
286
+
287
+ /**
288
+ * Task result output
289
+ */
290
+ result?: string;
291
+
292
+ /**
293
+ * Reason for task failure (when status is 'failed')
294
+ */
295
+ failureReason?: string;
206
296
  }
207
297
 
208
298
  /**
@@ -234,6 +324,16 @@ export interface TaskListFilter {
234
324
  */
235
325
  priority?: string;
236
326
 
327
+ /**
328
+ * Filter by workspace ID
329
+ */
330
+ workspaceId?: string;
331
+
332
+ /**
333
+ * Filter by project ID
334
+ */
335
+ projectId?: string;
336
+
237
337
  /**
238
338
  * Filter by parent task ID
239
339
  */
@@ -0,0 +1,49 @@
1
+ /**
2
+ * TaskWorkItemProtocol
3
+ *
4
+ * Work item protocol for event-sourced task change tracking.
5
+ * Every status change or action on a TaskItem produces one TaskWorkItem.
6
+ */
7
+
8
+ export interface TaskWorkItem {
9
+ id: string;
10
+ taskId: string;
11
+ tenantId: string;
12
+ workspaceId?: string;
13
+ projectId?: string;
14
+ action: string;
15
+ actor: string;
16
+ threadId?: string;
17
+ summary?: string;
18
+ detail?: Record<string, unknown>;
19
+ attempt?: number;
20
+ createdAt: Date;
21
+ }
22
+
23
+ export interface CreateWorkItemRequest {
24
+ taskId: string;
25
+ tenantId: string;
26
+ workspaceId?: string;
27
+ projectId?: string;
28
+ action: string;
29
+ actor: string;
30
+ threadId?: string;
31
+ summary?: string;
32
+ detail?: Record<string, unknown>;
33
+ attempt?: number;
34
+ }
35
+
36
+ export interface TaskWorkItemListFilter {
37
+ tenantId: string;
38
+ taskId: string;
39
+ workspaceId?: string;
40
+ projectId?: string;
41
+ action?: string;
42
+ limit?: number;
43
+ offset?: number;
44
+ }
45
+
46
+ export interface TaskWorkItemStore {
47
+ create(params: CreateWorkItemRequest): Promise<TaskWorkItem>;
48
+ list(filter: TaskWorkItemListFilter): Promise<TaskWorkItem[]>;
49
+ }
package/src/index.ts CHANGED
@@ -37,6 +37,7 @@ export * from "./VectorStoreProviderProtocol";
37
37
  export * from "./MenuProtocol";
38
38
  export * from "./EvalStoreProtocol";
39
39
  export * from "./TaskStoreProtocol";
40
+ export * from "./TaskWorkItemProtocol";
40
41
 
41
42
  export * from "./ChannelAdapterProtocol";
42
43
  export * from "./A2AProtocol";