@huyooo/ai-chat-core 0.2.44 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/index.d.ts +11 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/model-adapter.d.ts +25 -0
- package/dist/adapter/model-adapter.d.ts.map +1 -0
- package/dist/adapter/model-options.d.ts +53 -0
- package/dist/adapter/model-options.d.ts.map +1 -0
- package/dist/adapter/types.d.ts +28 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/chat-runtime.d.ts +96 -0
- package/dist/chat-runtime.d.ts.map +1 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/events.d.ts +605 -1
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +1 -1
- package/dist/extension/index.d.ts +9 -0
- package/dist/extension/index.d.ts.map +1 -0
- package/dist/extension/types.d.ts +46 -0
- package/dist/extension/types.d.ts.map +1 -0
- package/dist/families/index.d.ts +11 -0
- package/dist/families/index.d.ts.map +1 -0
- package/dist/families/presets.d.ts +31 -0
- package/dist/families/presets.d.ts.map +1 -0
- package/dist/families/resolver.d.ts +11 -0
- package/dist/families/resolver.d.ts.map +1 -0
- package/dist/families/types.d.ts +29 -0
- package/dist/families/types.d.ts.map +1 -0
- package/dist/governance/command-safety.d.ts +34 -0
- package/dist/governance/command-safety.d.ts.map +1 -0
- package/dist/governance/governance.d.ts +19 -0
- package/dist/governance/governance.d.ts.map +1 -0
- package/dist/governance/index.d.ts +12 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/types.d.ts +29 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/index.d.ts +72 -804
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -1
- package/dist/internal/management-args.d.ts +13 -0
- package/dist/internal/management-args.d.ts.map +1 -0
- package/dist/internal/management-results.d.ts +21 -0
- package/dist/internal/management-results.d.ts.map +1 -0
- package/dist/llm-config.d.ts +108 -0
- package/dist/llm-config.d.ts.map +1 -0
- package/dist/logger/core.d.ts +31 -0
- package/dist/logger/core.d.ts.map +1 -0
- package/dist/logger/index.d.ts +9 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/orchestrator/compression-handler.d.ts +29 -0
- package/dist/orchestrator/compression-handler.d.ts.map +1 -0
- package/dist/orchestrator/context-compressor.d.ts +51 -0
- package/dist/orchestrator/context-compressor.d.ts.map +1 -0
- package/dist/orchestrator/context-summarizer.d.ts +41 -0
- package/dist/orchestrator/context-summarizer.d.ts.map +1 -0
- package/dist/orchestrator/index.d.ts +12 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +46 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/types.d.ts +58 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/parts/index.d.ts +13 -0
- package/dist/parts/index.d.ts.map +1 -0
- package/dist/parts/registry.d.ts +11 -0
- package/dist/parts/registry.d.ts.map +1 -0
- package/dist/parts/summaries.d.ts +9 -0
- package/dist/parts/summaries.d.ts.map +1 -0
- package/dist/parts/types.d.ts +61 -0
- package/dist/parts/types.d.ts.map +1 -0
- package/dist/platform.d.ts +17 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +1 -0
- package/dist/protocols/anthropic.d.ts +20 -0
- package/dist/protocols/anthropic.d.ts.map +1 -0
- package/dist/protocols/ark.d.ts +36 -0
- package/dist/protocols/ark.d.ts.map +1 -0
- package/dist/protocols/deepseek.d.ts +24 -0
- package/dist/protocols/deepseek.d.ts.map +1 -0
- package/dist/protocols/error-utils.d.ts +14 -0
- package/dist/protocols/error-utils.d.ts.map +1 -0
- package/dist/protocols/gemini.d.ts +24 -0
- package/dist/protocols/gemini.d.ts.map +1 -0
- package/dist/protocols/glm.d.ts +20 -0
- package/dist/protocols/glm.d.ts.map +1 -0
- package/dist/protocols/grok.d.ts +20 -0
- package/dist/protocols/grok.d.ts.map +1 -0
- package/dist/protocols/index.d.ts +31 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/minimax.d.ts +38 -0
- package/dist/protocols/minimax.d.ts.map +1 -0
- package/dist/protocols/moonshot.d.ts +20 -0
- package/dist/protocols/moonshot.d.ts.map +1 -0
- package/dist/protocols/openai-sse.d.ts +33 -0
- package/dist/protocols/openai-sse.d.ts.map +1 -0
- package/dist/protocols/openai.d.ts +19 -0
- package/dist/protocols/openai.d.ts.map +1 -0
- package/dist/protocols/qwen.d.ts +26 -0
- package/dist/protocols/qwen.d.ts.map +1 -0
- package/dist/protocols/responses-sse.d.ts +30 -0
- package/dist/protocols/responses-sse.d.ts.map +1 -0
- package/dist/protocols/sse-reader.d.ts +23 -0
- package/dist/protocols/sse-reader.d.ts.map +1 -0
- package/dist/protocols/tool-arguments.d.ts +8 -0
- package/dist/protocols/tool-arguments.d.ts.map +1 -0
- package/dist/protocols/types.d.ts +148 -0
- package/dist/protocols/types.d.ts.map +1 -0
- package/dist/protocols/vercel-gateway.d.ts +15 -0
- package/dist/protocols/vercel-gateway.d.ts.map +1 -0
- package/dist/runtime.d.ts +151 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/management/admin.d.ts +10 -0
- package/dist/skills/management/admin.d.ts.map +1 -0
- package/dist/skills/management/index.d.ts +11 -0
- package/dist/skills/management/index.d.ts.map +1 -0
- package/dist/skills/management/inputs.d.ts +44 -0
- package/dist/skills/management/inputs.d.ts.map +1 -0
- package/dist/skills/management/operations.d.ts +78 -0
- package/dist/skills/management/operations.d.ts.map +1 -0
- package/dist/skills/management/types.d.ts +70 -0
- package/dist/skills/management/types.d.ts.map +1 -0
- package/dist/skills/registry.d.ts +37 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/summaries.d.ts +9 -0
- package/dist/skills/summaries.d.ts.map +1 -0
- package/dist/skills/types.d.ts +61 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/test-utils/mock-sse.d.ts +13 -0
- package/dist/test-utils/mock-sse.d.ts.map +1 -0
- package/dist/tool-manager/define-tool.d.ts +35 -0
- package/dist/tool-manager/define-tool.d.ts.map +1 -0
- package/dist/tool-manager/formats.d.ts +46 -0
- package/dist/tool-manager/formats.d.ts.map +1 -0
- package/dist/tool-manager/identity.d.ts +18 -0
- package/dist/tool-manager/identity.d.ts.map +1 -0
- package/dist/tool-manager/in-process-provider.d.ts +15 -0
- package/dist/tool-manager/in-process-provider.d.ts.map +1 -0
- package/dist/tool-manager/index.d.ts +18 -0
- package/dist/tool-manager/index.d.ts.map +1 -0
- package/dist/tool-manager/manager.d.ts +18 -0
- package/dist/tool-manager/manager.d.ts.map +1 -0
- package/dist/tool-manager/mcp-provider.d.ts +21 -0
- package/dist/tool-manager/mcp-provider.d.ts.map +1 -0
- package/dist/tool-manager/summaries.d.ts +39 -0
- package/dist/tool-manager/summaries.d.ts.map +1 -0
- package/dist/tool-manager/types.d.ts +314 -0
- package/dist/tool-manager/types.d.ts.map +1 -0
- package/dist/types.d.ts +663 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +26 -15
- package/src/adapter/index.ts +25 -0
- package/src/adapter/model-adapter.ts +196 -0
- package/src/adapter/model-options.ts +143 -0
- package/src/adapter/types.ts +41 -0
- package/src/chat-runtime.ts +515 -0
- package/src/constants.ts +9 -102
- package/src/events.ts +364 -150
- package/src/extension/index.ts +24 -0
- package/src/extension/types.ts +49 -0
- package/src/families/index.ts +28 -0
- package/src/families/presets.ts +124 -0
- package/src/families/resolver.ts +22 -0
- package/src/families/types.ts +55 -0
- package/src/governance/command-safety.ts +224 -0
- package/src/governance/governance.ts +125 -0
- package/src/governance/index.ts +38 -0
- package/src/governance/types.ts +44 -0
- package/src/index.ts +250 -145
- package/src/internal/management-args.ts +39 -0
- package/src/internal/management-results.ts +60 -0
- package/src/llm-config.ts +137 -0
- package/src/logger/core.ts +96 -0
- package/src/logger/index.ts +8 -0
- package/src/orchestrator/compression-handler.ts +137 -0
- package/src/{providers → orchestrator}/context-compressor.ts +79 -47
- package/src/orchestrator/context-summarizer.ts +123 -0
- package/src/orchestrator/index.ts +20 -0
- package/src/orchestrator/orchestrator.ts +1002 -0
- package/src/orchestrator/types.ts +70 -0
- package/src/parts/index.ts +20 -0
- package/src/parts/registry.ts +95 -0
- package/src/parts/summaries.ts +40 -0
- package/src/parts/types.ts +63 -0
- package/src/platform.ts +73 -0
- package/src/protocols/anthropic.ts +377 -0
- package/src/protocols/ark.ts +300 -0
- package/src/protocols/deepseek.ts +192 -0
- package/src/{providers/protocols → protocols}/error-utils.ts +17 -20
- package/src/protocols/gemini.ts +352 -0
- package/src/protocols/glm.ts +212 -0
- package/src/protocols/grok.ts +98 -0
- package/src/protocols/index.ts +48 -0
- package/src/protocols/minimax.ts +308 -0
- package/src/protocols/moonshot.ts +186 -0
- package/src/protocols/openai-sse.ts +156 -0
- package/src/protocols/openai.ts +97 -0
- package/src/protocols/qwen.ts +358 -0
- package/src/protocols/responses-sse.ts +224 -0
- package/src/protocols/sse-reader.ts +54 -0
- package/src/protocols/tool-arguments.ts +32 -0
- package/src/{providers/protocols → protocols}/types.ts +46 -37
- package/src/protocols/vercel-gateway.ts +391 -0
- package/src/runtime.ts +167 -0
- package/src/skills/index.ts +29 -0
- package/src/skills/management/admin.ts +170 -0
- package/src/skills/management/index.ts +27 -0
- package/src/skills/management/inputs.ts +79 -0
- package/src/skills/management/operations.ts +256 -0
- package/src/skills/management/types.ts +57 -0
- package/src/skills/registry.ts +120 -0
- package/src/skills/summaries.ts +48 -0
- package/src/skills/types.ts +65 -0
- package/src/test-utils/mock-sse.ts +3 -3
- package/src/tool-manager/define-tool.ts +201 -0
- package/src/tool-manager/formats.ts +146 -0
- package/src/tool-manager/identity.ts +80 -0
- package/src/tool-manager/in-process-provider.ts +164 -0
- package/src/tool-manager/index.ts +63 -0
- package/src/tool-manager/manager.ts +562 -0
- package/src/tool-manager/mcp-provider.ts +509 -0
- package/src/tool-manager/summaries.ts +136 -0
- package/src/tool-manager/types.ts +389 -0
- package/src/types.ts +750 -191
- package/dist/events-CU5D5ray.d.ts +0 -1128
- package/src/agent.ts +0 -409
- package/src/internal/update-plan.ts +0 -2
- package/src/internal/web-search.ts +0 -77
- package/src/mcp/client-manager.ts +0 -302
- package/src/mcp/index.ts +0 -2
- package/src/mcp/types.ts +0 -43
- package/src/providers/context-summarizer.ts +0 -70
- package/src/providers/index.ts +0 -125
- package/src/providers/model-registry.ts +0 -466
- package/src/providers/orchestrator.ts +0 -839
- package/src/providers/protocols/anthropic.ts +0 -406
- package/src/providers/protocols/ark.ts +0 -362
- package/src/providers/protocols/deepseek.ts +0 -344
- package/src/providers/protocols/gemini.ts +0 -350
- package/src/providers/protocols/index.ts +0 -36
- package/src/providers/protocols/openai.ts +0 -420
- package/src/providers/protocols/qwen.ts +0 -315
- package/src/providers/types.ts +0 -264
- package/src/providers/unified-adapter.ts +0 -367
- package/src/router.ts +0 -72
- package/src/tools.ts +0 -162
- package/src/utils.ts +0 -86
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension Types — 运行时元数据类型
|
|
3
|
+
*
|
|
4
|
+
* 仅包含跨平台(浏览器 + Node)的资产元数据类型定义。
|
|
5
|
+
* 构建工具链相关(externals、脚手架模板、代码生成)在 @huyooo/ai-chat-host-node 中。
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export type {
|
|
9
|
+
AssetApprovalPolicy,
|
|
10
|
+
AssetExecutionIsolation,
|
|
11
|
+
AssetGovernance,
|
|
12
|
+
AssetGovernanceOverrides,
|
|
13
|
+
AssetHostDependency,
|
|
14
|
+
AssetKind,
|
|
15
|
+
AssetRuntime,
|
|
16
|
+
AssetScope,
|
|
17
|
+
AssetSideEffectLevel,
|
|
18
|
+
} from '../governance';
|
|
19
|
+
|
|
20
|
+
export type {
|
|
21
|
+
AssetType,
|
|
22
|
+
AssetToolMeta,
|
|
23
|
+
AssetMeta,
|
|
24
|
+
} from './types';
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 扩展资产元数据类型(manifest / 市场)
|
|
3
|
+
*
|
|
4
|
+
* - 描述 tool、part、mcp-server 等扩展在 manifest 中的静态字段
|
|
5
|
+
* - 与 AssetGovernance 组合,表达审批策略、副作用级别等治理信息
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AssetGovernance, AssetKind } from '../governance/types';
|
|
9
|
+
import type { JsonSchemaObject } from '../types';
|
|
10
|
+
|
|
11
|
+
export type AssetType = Extract<AssetKind, 'tool' | 'part' | 'mcp-server'>;
|
|
12
|
+
|
|
13
|
+
export interface AssetToolMeta {
|
|
14
|
+
/** scope 内的工具名(tools[] 多工具时必填) */
|
|
15
|
+
name?: string;
|
|
16
|
+
displayName?: string;
|
|
17
|
+
description: string;
|
|
18
|
+
parameters?: JsonSchemaObject;
|
|
19
|
+
outputSchema?: JsonSchemaObject;
|
|
20
|
+
errorSchema?: JsonSchemaObject;
|
|
21
|
+
category?: string;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
enabled?: boolean;
|
|
24
|
+
governance?: Partial<AssetGovernance>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* manifest.json 中的资产元数据。
|
|
29
|
+
*
|
|
30
|
+
* 必填字段(手写):type, template, enabled
|
|
31
|
+
* manifest 是元数据唯一权威源,构建时只读不写。
|
|
32
|
+
*/
|
|
33
|
+
export interface AssetMeta {
|
|
34
|
+
type: AssetType;
|
|
35
|
+
template: string;
|
|
36
|
+
assetId?: string;
|
|
37
|
+
/** 单工具资产的工具调用名 */
|
|
38
|
+
name?: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
parameters?: JsonSchemaObject;
|
|
41
|
+
outputSchema?: JsonSchemaObject;
|
|
42
|
+
errorSchema?: JsonSchemaObject;
|
|
43
|
+
category?: string;
|
|
44
|
+
tags?: string[];
|
|
45
|
+
enabled: boolean;
|
|
46
|
+
governance?: Partial<AssetGovernance>;
|
|
47
|
+
/** 多工具集时的子工具列表 */
|
|
48
|
+
tools?: AssetToolMeta[];
|
|
49
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模型家族(Model Family)模块导出
|
|
3
|
+
*
|
|
4
|
+
* - types:家族 ID、thinking / 工具调用格式等行为差异
|
|
5
|
+
* - presets:各厂商内置家族默认配置
|
|
6
|
+
* - resolver:从 LLMConfig 解析 ModelConfig.family
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export type {
|
|
10
|
+
ModelFamilyId,
|
|
11
|
+
ThinkingFormat,
|
|
12
|
+
ToolCallFormat,
|
|
13
|
+
ModelFamilyConfig,
|
|
14
|
+
} from './types';
|
|
15
|
+
export {
|
|
16
|
+
DOUBAO_FAMILY,
|
|
17
|
+
DEEPSEEK_FAMILY,
|
|
18
|
+
QWEN_FAMILY,
|
|
19
|
+
GLM_FAMILY,
|
|
20
|
+
MOONSHOT_FAMILY,
|
|
21
|
+
MINIMAX_FAMILY,
|
|
22
|
+
GEMINI_FAMILY,
|
|
23
|
+
GPT_FAMILY,
|
|
24
|
+
CLAUDE_FAMILY,
|
|
25
|
+
GROK_FAMILY,
|
|
26
|
+
MODEL_FAMILIES,
|
|
27
|
+
} from './presets';
|
|
28
|
+
export { resolveModelFamilyConfig } from './resolver';
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 内置模型家族预设(MODEL_FAMILIES)
|
|
3
|
+
*
|
|
4
|
+
* - 各厂商默认 thinking 参数形态、工具格式、视觉能力标记
|
|
5
|
+
* - 与 protocols 正交:家族描述「行为」,协议描述「HTTP/SSE」
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ModelFamilyConfig, ModelFamilyId } from './types';
|
|
9
|
+
|
|
10
|
+
export const DOUBAO_FAMILY: ModelFamilyConfig = {
|
|
11
|
+
id: 'doubao',
|
|
12
|
+
displayName: 'Doubao',
|
|
13
|
+
supportsVision: true,
|
|
14
|
+
supportsThinking: true,
|
|
15
|
+
thinkingFormat: 'reasoning',
|
|
16
|
+
toolCallFormat: 'responses',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const DEEPSEEK_FAMILY: ModelFamilyConfig = {
|
|
20
|
+
id: 'deepseek',
|
|
21
|
+
displayName: 'DeepSeek',
|
|
22
|
+
supportsVision: false,
|
|
23
|
+
supportsThinking: true,
|
|
24
|
+
thinkingFormat: 'thinking_object',
|
|
25
|
+
toolCallFormat: 'openai',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const QWEN_FAMILY: ModelFamilyConfig = {
|
|
29
|
+
id: 'qwen',
|
|
30
|
+
displayName: 'Qwen',
|
|
31
|
+
supportsVision: false,
|
|
32
|
+
supportsThinking: true,
|
|
33
|
+
thinkingFormat: 'thinking_enabled',
|
|
34
|
+
toolCallFormat: 'openai',
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** GLM 家族(OpenAI 兼容 API,thinking 用 {"thinking": {"type": "enabled"}}) */
|
|
38
|
+
export const GLM_FAMILY: ModelFamilyConfig = {
|
|
39
|
+
id: 'glm',
|
|
40
|
+
displayName: 'GLM',
|
|
41
|
+
supportsVision: true,
|
|
42
|
+
supportsThinking: true,
|
|
43
|
+
thinkingFormat: 'thinking_object',
|
|
44
|
+
toolCallFormat: 'openai',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/** Kimi 家族(OpenAI 兼容 API,thinking 用 reasoning: {enabled: true}) */
|
|
48
|
+
export const MOONSHOT_FAMILY: ModelFamilyConfig = {
|
|
49
|
+
id: 'moonshot',
|
|
50
|
+
displayName: 'Kimi',
|
|
51
|
+
supportsVision: true,
|
|
52
|
+
supportsThinking: true,
|
|
53
|
+
thinkingFormat: 'reasoning_object',
|
|
54
|
+
toolCallFormat: 'openai',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/** MiniMax 家族(Anthropic 兼容 API,thinking 始终开启) */
|
|
58
|
+
export const MINIMAX_FAMILY: ModelFamilyConfig = {
|
|
59
|
+
id: 'minimax',
|
|
60
|
+
displayName: 'MiniMax',
|
|
61
|
+
supportsVision: false,
|
|
62
|
+
supportsThinking: true,
|
|
63
|
+
thinkingFormat: 'anthropic_native',
|
|
64
|
+
thinkingAlwaysOn: true,
|
|
65
|
+
toolCallFormat: 'openai',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/** Gemini 家族(原生 API 透传,完整 thinking + thoughtSignature 支持) */
|
|
69
|
+
export const GEMINI_FAMILY: ModelFamilyConfig = {
|
|
70
|
+
id: 'gemini',
|
|
71
|
+
displayName: 'Gemini',
|
|
72
|
+
supportsVision: true,
|
|
73
|
+
supportsThinking: true,
|
|
74
|
+
thinkingFormat: 'thought_signature',
|
|
75
|
+
toolCallFormat: 'gemini',
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/** GPT 家族(Responses API,统一支持 GPT / Codex / o-series) */
|
|
79
|
+
export const GPT_FAMILY: ModelFamilyConfig = {
|
|
80
|
+
id: 'gpt',
|
|
81
|
+
displayName: 'GPT',
|
|
82
|
+
supportsVision: true,
|
|
83
|
+
supportsThinking: true,
|
|
84
|
+
thinkingFormat: 'reasoning',
|
|
85
|
+
toolCallFormat: 'responses',
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/** Claude 家族(Anthropic 原生协议) */
|
|
89
|
+
export const CLAUDE_FAMILY: ModelFamilyConfig = {
|
|
90
|
+
id: 'claude',
|
|
91
|
+
displayName: 'Claude',
|
|
92
|
+
supportsVision: true,
|
|
93
|
+
supportsThinking: true,
|
|
94
|
+
thinkingFormat: 'anthropic_native',
|
|
95
|
+
toolCallFormat: 'openai',
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Grok 家族(xAI,OpenAI 兼容 API)
|
|
100
|
+
* - grok-4-0709:旗舰推理模型
|
|
101
|
+
* - grok-4-1-fast-reasoning:快速推理模型(reasoning_effort 参数)
|
|
102
|
+
*/
|
|
103
|
+
export const GROK_FAMILY: ModelFamilyConfig = {
|
|
104
|
+
id: 'grok',
|
|
105
|
+
displayName: 'Grok',
|
|
106
|
+
supportsVision: true,
|
|
107
|
+
supportsThinking: false,
|
|
108
|
+
thinkingFormat: 'none',
|
|
109
|
+
toolCallFormat: 'openai',
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/** 家族配置映射 */
|
|
113
|
+
export const MODEL_FAMILIES: Record<ModelFamilyId, ModelFamilyConfig> = {
|
|
114
|
+
doubao: DOUBAO_FAMILY,
|
|
115
|
+
deepseek: DEEPSEEK_FAMILY,
|
|
116
|
+
qwen: QWEN_FAMILY,
|
|
117
|
+
glm: GLM_FAMILY,
|
|
118
|
+
moonshot: MOONSHOT_FAMILY,
|
|
119
|
+
minimax: MINIMAX_FAMILY,
|
|
120
|
+
gemini: GEMINI_FAMILY,
|
|
121
|
+
gpt: GPT_FAMILY,
|
|
122
|
+
claude: CLAUDE_FAMILY,
|
|
123
|
+
grok: GROK_FAMILY,
|
|
124
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 解析模型家族配置(resolveModelFamilyConfig)
|
|
3
|
+
*
|
|
4
|
+
* - 对象 family:内联自定义家族,直接使用
|
|
5
|
+
* - 字符串 family:优先 LLMConfig.families,其次 MODEL_FAMILIES 内置表
|
|
6
|
+
* - 不做隐式推导;未命中返回 undefined,由调用方抛错
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { LLMConfig, ModelConfig } from '../llm-config';
|
|
10
|
+
import { MODEL_FAMILIES } from './presets';
|
|
11
|
+
import type { ModelFamilyConfig, ModelFamilyId } from './types';
|
|
12
|
+
|
|
13
|
+
export function resolveModelFamilyConfig(
|
|
14
|
+
modelId: string,
|
|
15
|
+
modelConfig: ModelConfig,
|
|
16
|
+
llmConfig: LLMConfig,
|
|
17
|
+
): ModelFamilyConfig | undefined {
|
|
18
|
+
const { family } = modelConfig;
|
|
19
|
+
if (typeof family === 'object') return family;
|
|
20
|
+
const familyId = family;
|
|
21
|
+
return llmConfig.families?.[familyId] ?? MODEL_FAMILIES[familyId as ModelFamilyId];
|
|
22
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Family 层类型定义
|
|
3
|
+
*
|
|
4
|
+
* Family 负责模型行为差异:thinking 格式、工具调用格式、视觉能力等。
|
|
5
|
+
* 与 Protocol 层(通信差异)正交。
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** 模型家族 ID */
|
|
9
|
+
export type ModelFamilyId =
|
|
10
|
+
| 'doubao'
|
|
11
|
+
| 'deepseek'
|
|
12
|
+
| 'qwen'
|
|
13
|
+
| 'glm'
|
|
14
|
+
| 'moonshot'
|
|
15
|
+
| 'minimax'
|
|
16
|
+
| 'gemini'
|
|
17
|
+
| 'gpt'
|
|
18
|
+
| 'claude'
|
|
19
|
+
| 'grok';
|
|
20
|
+
|
|
21
|
+
/** Thinking 输出格式 */
|
|
22
|
+
export type ThinkingFormat =
|
|
23
|
+
| 'reasoning' // ARK/Doubao: reasoning_summary_text
|
|
24
|
+
| 'thinking_enabled' // Qwen: enable_thinking 参数
|
|
25
|
+
| 'thinking_object' // DeepSeek/GLM: {"thinking": {"type": "enabled"}} 参数
|
|
26
|
+
| 'reasoning_object' // Moonshot: {"reasoning": {"enabled": true}} 参数
|
|
27
|
+
| 'anthropic_native' // MiniMax/Claude: Anthropic SSE 格式
|
|
28
|
+
| 'thought_signature' // Gemini: 需要 thought_signature 循环
|
|
29
|
+
| 'none'; // 不支持 thinking
|
|
30
|
+
|
|
31
|
+
/** 工具调用格式 */
|
|
32
|
+
export type ToolCallFormat =
|
|
33
|
+
| 'responses' // ARK Responses API: function_call/function_call_output
|
|
34
|
+
| 'openai' // OpenAI 兼容: tool_calls/tool
|
|
35
|
+
| 'gemini'; // Gemini: functionCall/functionResponse
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 模型家族配置
|
|
39
|
+
*
|
|
40
|
+
* 定义同一家族模型的共同行为特征
|
|
41
|
+
*/
|
|
42
|
+
export interface ModelFamilyConfig {
|
|
43
|
+
id: ModelFamilyId;
|
|
44
|
+
displayName: string;
|
|
45
|
+
|
|
46
|
+
supportsVision: boolean;
|
|
47
|
+
supportsThinking: boolean;
|
|
48
|
+
thinkingFormat: ThinkingFormat;
|
|
49
|
+
/** thinking 是否由模型强制开启(无法关闭),开关仅控制前端是否展示思考过程 */
|
|
50
|
+
thinkingAlwaysOn?: boolean;
|
|
51
|
+
|
|
52
|
+
toolCallFormat: ToolCallFormat;
|
|
53
|
+
|
|
54
|
+
requiresSpecialHandling?: string[];
|
|
55
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell / 命令行风险分析与治理快照
|
|
3
|
+
*
|
|
4
|
+
* - 从用户或工具拟执行的命令字符串推导风险标签与建议审批策略
|
|
5
|
+
* - 与 AssetGovernance 对齐,供动态工具元数据与 UI 提示使用
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AssetApprovalPolicy, AssetHostDependency, AssetSideEffectLevel } from './types';
|
|
9
|
+
import { createLocalToolGovernance } from './governance';
|
|
10
|
+
|
|
11
|
+
export type CommandRiskTag =
|
|
12
|
+
| 'filesystem'
|
|
13
|
+
| 'delete'
|
|
14
|
+
| 'git'
|
|
15
|
+
| 'package-manager'
|
|
16
|
+
| 'process'
|
|
17
|
+
| 'system'
|
|
18
|
+
| 'network'
|
|
19
|
+
| 'shell-eval'
|
|
20
|
+
| 'script';
|
|
21
|
+
|
|
22
|
+
export interface CommandRiskAssessment {
|
|
23
|
+
level: AssetSideEffectLevel;
|
|
24
|
+
summary: string;
|
|
25
|
+
signals: string[];
|
|
26
|
+
tags: CommandRiskTag[];
|
|
27
|
+
recommendedApprovalPolicy: AssetApprovalPolicy;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface CommandSafetyPolicy {
|
|
31
|
+
unknownCommandLevel?: Extract<AssetSideEffectLevel, 'write' | 'destructive'>;
|
|
32
|
+
elevateTagsToLevel?: Partial<Record<CommandRiskTag, AssetSideEffectLevel>>;
|
|
33
|
+
approvalByLevel?: Partial<Record<AssetSideEffectLevel, AssetApprovalPolicy>>;
|
|
34
|
+
approvalByTag?: Partial<Record<CommandRiskTag, AssetApprovalPolicy>>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface CommandToolMetadata {
|
|
38
|
+
approvalPolicy: AssetApprovalPolicy;
|
|
39
|
+
sideEffectLevel: AssetSideEffectLevel;
|
|
40
|
+
hostDependency: AssetHostDependency;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const APPROVAL_POLICY_ORDER: Record<AssetApprovalPolicy, number> = {
|
|
44
|
+
auto: 0,
|
|
45
|
+
'destructive-only': 1,
|
|
46
|
+
manual: 2,
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
function pickStricterApprovalPolicy(
|
|
50
|
+
left: AssetApprovalPolicy,
|
|
51
|
+
right: AssetApprovalPolicy,
|
|
52
|
+
): AssetApprovalPolicy {
|
|
53
|
+
return APPROVAL_POLICY_ORDER[left] >= APPROVAL_POLICY_ORDER[right] ? left : right;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function pickHigherRiskLevel(
|
|
57
|
+
left: AssetSideEffectLevel,
|
|
58
|
+
right: AssetSideEffectLevel,
|
|
59
|
+
): AssetSideEffectLevel {
|
|
60
|
+
const order: Record<AssetSideEffectLevel, number> = {
|
|
61
|
+
read: 0,
|
|
62
|
+
write: 1,
|
|
63
|
+
destructive: 2,
|
|
64
|
+
};
|
|
65
|
+
return order[left] >= order[right] ? left : right;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function createCommandToolMetadata(
|
|
69
|
+
sideEffectLevel: AssetSideEffectLevel,
|
|
70
|
+
approvalPolicy: AssetApprovalPolicy = 'auto',
|
|
71
|
+
): CommandToolMetadata {
|
|
72
|
+
const governance = createLocalToolGovernance({
|
|
73
|
+
sideEffectLevel,
|
|
74
|
+
approvalPolicy,
|
|
75
|
+
hostDependency: 'os-service',
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
approvalPolicy: governance.approvalPolicy,
|
|
80
|
+
sideEffectLevel: governance.sideEffectLevel,
|
|
81
|
+
hostDependency: governance.hostDependency,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function createCommandGovernanceSnapshot(
|
|
86
|
+
assessment: CommandRiskAssessment,
|
|
87
|
+
): CommandToolMetadata & {
|
|
88
|
+
riskSummary: string;
|
|
89
|
+
riskTags: CommandRiskTag[];
|
|
90
|
+
riskSignals: string[];
|
|
91
|
+
} {
|
|
92
|
+
return {
|
|
93
|
+
...createCommandToolMetadata(assessment.level, assessment.recommendedApprovalPolicy),
|
|
94
|
+
riskSummary: assessment.summary,
|
|
95
|
+
riskTags: assessment.tags,
|
|
96
|
+
riskSignals: assessment.signals,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function analyzeCommandRisk(
|
|
101
|
+
input: string,
|
|
102
|
+
policy: CommandSafetyPolicy = {},
|
|
103
|
+
): CommandRiskAssessment {
|
|
104
|
+
const normalized = input.trim();
|
|
105
|
+
const signals: string[] = [];
|
|
106
|
+
const tags = new Set<CommandRiskTag>();
|
|
107
|
+
let level: AssetSideEffectLevel | null = null;
|
|
108
|
+
|
|
109
|
+
function applyMatch(match: {
|
|
110
|
+
level: AssetSideEffectLevel;
|
|
111
|
+
signal: string;
|
|
112
|
+
tags?: CommandRiskTag[];
|
|
113
|
+
}) {
|
|
114
|
+
level = level ? pickHigherRiskLevel(level, match.level) : match.level;
|
|
115
|
+
signals.push(match.signal);
|
|
116
|
+
for (const tag of match.tags ?? []) {
|
|
117
|
+
tags.add(tag);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const destructivePatterns: Array<{ pattern: RegExp; signal: string; tags: CommandRiskTag[] }> = [
|
|
122
|
+
{ pattern: /(^|\s)rm\s+-[^\n]*r[^\n]*f\b/, signal: '检测到 rm -rf 类删除命令', tags: ['filesystem', 'delete'] },
|
|
123
|
+
{ pattern: /\bgit\s+reset\s+--hard\b/, signal: '检测到 git reset --hard', tags: ['git'] },
|
|
124
|
+
{ pattern: /\bgit\s+clean\b[^\n]*\s-f/, signal: '检测到 git clean 强制清理', tags: ['git', 'delete'] },
|
|
125
|
+
{ pattern: /\bdd\s+if=.*of=\/dev\//, signal: '检测到 dd 直接写块设备', tags: ['system'] },
|
|
126
|
+
{ pattern: /\bmkfs(\.[a-z0-9_-]+)?\b/, signal: '检测到格式化文件系统命令', tags: ['system'] },
|
|
127
|
+
{ pattern: /\bdiskutil\s+erase(Disk|Volume)\b/, signal: '检测到磁盘抹除命令', tags: ['system'] },
|
|
128
|
+
{ pattern: /\b(format|shutdown|reboot|poweroff|halt)\b/i, signal: '检测到系统级破坏/关机命令', tags: ['system'] },
|
|
129
|
+
{ pattern: /\b(del|erase)\b[^\n]*\s\/f\b/i, signal: '检测到 Windows 强制删除命令', tags: ['filesystem', 'delete'] },
|
|
130
|
+
{ pattern: /\brd\b[^\n]*\s\/s\b[^\n]*\s\/q\b/i, signal: '检测到 Windows 递归删除目录命令', tags: ['filesystem', 'delete'] },
|
|
131
|
+
{ pattern: /\b(curl|wget)\b[^\n|]*\|\s*(sh|bash|zsh|fish|pwsh|powershell)\b/i, signal: '检测到网络下载后直接交给 shell 执行', tags: ['network', 'shell-eval'] },
|
|
132
|
+
{ pattern: /\b(bash|sh|zsh|fish)\s+-c\b/, signal: '检测到 shell -c 动态执行命令', tags: ['shell-eval'] },
|
|
133
|
+
{ pattern: /\bpowershell(\.exe)?\s+-Command\b/i, signal: '检测到 PowerShell 动态执行命令', tags: ['shell-eval'] },
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
for (const item of destructivePatterns) {
|
|
137
|
+
if (item.pattern.test(normalized)) {
|
|
138
|
+
applyMatch({ level: 'destructive', signal: item.signal, tags: item.tags });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const writePatterns: Array<{ pattern: RegExp; signal: string; tags: CommandRiskTag[] }> = [
|
|
143
|
+
{ pattern: /(^|\s)rm\s+([^-][^\n]*)/, signal: '检测到文件删除命令', tags: ['filesystem', 'delete'] },
|
|
144
|
+
{ pattern: /\b(npm|pnpm|yarn)\s+(install|add|remove|uninstall|update)\b/, signal: '检测到依赖变更命令', tags: ['package-manager'] },
|
|
145
|
+
{ pattern: /\bgit\s+(commit|push|merge|rebase|pull)\b/, signal: '检测到 Git 写操作命令', tags: ['git'] },
|
|
146
|
+
{ pattern: /(^|\s)(mv|cp|mkdir|touch|chmod|chown)\b/, signal: '检测到文件系统写操作命令', tags: ['filesystem'] },
|
|
147
|
+
{ pattern: /\bsed\b[^\n]*\s-i(\b|['"])/, signal: '检测到 sed 原地修改命令', tags: ['filesystem'] },
|
|
148
|
+
{ pattern: /\bkill(\s+-9)?\b/, signal: '检测到进程控制命令', tags: ['process'] },
|
|
149
|
+
{ pattern: /\b(curl|wget)\b/, signal: '检测到网络访问命令', tags: ['network'] },
|
|
150
|
+
{ pattern: /^\s*(python|python3|node|tsx|ts-node|deno|ruby|perl)\b/, signal: '检测到脚本解释器执行入口', tags: ['script'] },
|
|
151
|
+
{ pattern: /^\s*(make|just)\b/, signal: '检测到任务脚本执行入口', tags: ['script'] },
|
|
152
|
+
];
|
|
153
|
+
|
|
154
|
+
for (const item of writePatterns) {
|
|
155
|
+
if (item.pattern.test(normalized)) {
|
|
156
|
+
applyMatch({ level: 'write', signal: item.signal, tags: item.tags });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const readPatterns = [
|
|
161
|
+
/^\s*(pwd|ls|cat|rg|which|echo|env)\b/,
|
|
162
|
+
/^\s*git\s+(status|diff|log|show)\b/,
|
|
163
|
+
/^\s*(curl|wget)\b[^\n]*(https?:\/\/|\s+-I\b|\s+--head\b)/,
|
|
164
|
+
/^\s*(npm|pnpm|yarn)\s+(test|run\s+test)\b/,
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
if (readPatterns.some((pattern) => pattern.test(normalized))) {
|
|
168
|
+
applyMatch({
|
|
169
|
+
level: 'read',
|
|
170
|
+
signal: '命令模式符合只读查询或测试执行',
|
|
171
|
+
tags: normalized.startsWith('git ') ? ['git'] : undefined,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (!level) {
|
|
176
|
+
const fallbackLevel = policy.unknownCommandLevel ?? 'write';
|
|
177
|
+
applyMatch({
|
|
178
|
+
level: fallbackLevel,
|
|
179
|
+
signal: fallbackLevel === 'destructive'
|
|
180
|
+
? '未识别命令且策略要求按 destructive 处理'
|
|
181
|
+
: '未识别为只读命令,保守按写操作处理',
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
for (const tag of tags) {
|
|
186
|
+
const elevatedLevel = policy.elevateTagsToLevel?.[tag];
|
|
187
|
+
if (elevatedLevel) {
|
|
188
|
+
level = pickHigherRiskLevel(level ?? 'write', elevatedLevel);
|
|
189
|
+
signals.push(`策略已将 ${tag} 标签提升为 ${elevatedLevel}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const resolvedLevel = level ?? 'write';
|
|
194
|
+
let recommendedApprovalPolicy: AssetApprovalPolicy = resolvedLevel === 'destructive' ? 'manual' : 'auto';
|
|
195
|
+
if (tags.has('system') || tags.has('shell-eval')) {
|
|
196
|
+
recommendedApprovalPolicy = 'manual';
|
|
197
|
+
}
|
|
198
|
+
if (policy.approvalByLevel?.[resolvedLevel]) {
|
|
199
|
+
recommendedApprovalPolicy = pickStricterApprovalPolicy(
|
|
200
|
+
recommendedApprovalPolicy,
|
|
201
|
+
policy.approvalByLevel[resolvedLevel]!,
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
for (const tag of tags) {
|
|
205
|
+
const tagPolicy = policy.approvalByTag?.[tag];
|
|
206
|
+
if (tagPolicy) {
|
|
207
|
+
recommendedApprovalPolicy = pickStricterApprovalPolicy(recommendedApprovalPolicy, tagPolicy);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
const summary = resolvedLevel === 'read'
|
|
212
|
+
? '检测到只读或低风险命令'
|
|
213
|
+
: resolvedLevel === 'destructive'
|
|
214
|
+
? `检测到高风险命令:${signals.join(',')}`
|
|
215
|
+
: `检测到可能修改环境的命令:${signals.join(',')}`;
|
|
216
|
+
|
|
217
|
+
return {
|
|
218
|
+
level: resolvedLevel,
|
|
219
|
+
summary,
|
|
220
|
+
signals,
|
|
221
|
+
tags: Array.from(tags),
|
|
222
|
+
recommendedApprovalPolicy,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 资产治理默认值与摘要基座
|
|
3
|
+
*
|
|
4
|
+
* - 从 manifest / 代码元数据构造 AssetGovernance、管理 API 摘要字段
|
|
5
|
+
* - 支持覆盖合并(readAssetGovernanceOverrides / applyGovernanceOverrides)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type {
|
|
9
|
+
AssetApprovalPolicy,
|
|
10
|
+
AssetGovernance,
|
|
11
|
+
AssetGovernanceOverrides,
|
|
12
|
+
AssetHostDependency,
|
|
13
|
+
AssetSideEffectLevel,
|
|
14
|
+
ManagedAssetSummaryBase,
|
|
15
|
+
} from './types';
|
|
16
|
+
|
|
17
|
+
function applyGovernanceOverrides(
|
|
18
|
+
base: AssetGovernance,
|
|
19
|
+
overrides: AssetGovernanceOverrides,
|
|
20
|
+
): AssetGovernance {
|
|
21
|
+
return {
|
|
22
|
+
...base,
|
|
23
|
+
...(overrides.sideEffectLevel ? { sideEffectLevel: overrides.sideEffectLevel } : {}),
|
|
24
|
+
...(overrides.approvalPolicy ? { approvalPolicy: overrides.approvalPolicy } : {}),
|
|
25
|
+
...(overrides.hostDependency ? { hostDependency: overrides.hostDependency } : {}),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function isSideEffectLevel(value: unknown): value is AssetSideEffectLevel {
|
|
30
|
+
return value === 'read' || value === 'write' || value === 'destructive';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function isApprovalPolicy(value: unknown): value is AssetApprovalPolicy {
|
|
34
|
+
return value === 'auto' || value === 'manual' || value === 'destructive-only';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function isHostDependency(value: unknown): value is AssetHostDependency {
|
|
38
|
+
return value === 'none'
|
|
39
|
+
|| value === 'local-app'
|
|
40
|
+
|| value === 'os-service'
|
|
41
|
+
|| value === 'remote-service';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function createAssetSummaryBase(
|
|
45
|
+
input: ManagedAssetSummaryBase,
|
|
46
|
+
): ManagedAssetSummaryBase {
|
|
47
|
+
return input.governance
|
|
48
|
+
? { ...input, governance: input.governance }
|
|
49
|
+
: { kind: input.kind, scope: input.scope, runtime: input.runtime };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function createLocalToolGovernance(
|
|
53
|
+
overrides: AssetGovernanceOverrides = {},
|
|
54
|
+
): AssetGovernance {
|
|
55
|
+
return applyGovernanceOverrides({
|
|
56
|
+
sideEffectLevel: 'write',
|
|
57
|
+
approvalPolicy: 'auto',
|
|
58
|
+
executionIsolation: 'in-process',
|
|
59
|
+
hostDependency: 'none',
|
|
60
|
+
}, overrides);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function createLocalMcpServerGovernance(
|
|
64
|
+
overrides: AssetGovernanceOverrides = {},
|
|
65
|
+
): AssetGovernance {
|
|
66
|
+
return applyGovernanceOverrides({
|
|
67
|
+
sideEffectLevel: 'write',
|
|
68
|
+
approvalPolicy: 'manual',
|
|
69
|
+
executionIsolation: 'mcp',
|
|
70
|
+
hostDependency: 'none',
|
|
71
|
+
}, overrides);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function createPartAssetGovernance(
|
|
75
|
+
overrides: AssetGovernanceOverrides = {},
|
|
76
|
+
): AssetGovernance {
|
|
77
|
+
return applyGovernanceOverrides({
|
|
78
|
+
sideEffectLevel: 'read',
|
|
79
|
+
approvalPolicy: 'auto',
|
|
80
|
+
executionIsolation: 'part-render',
|
|
81
|
+
hostDependency: 'none',
|
|
82
|
+
}, overrides);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function createSkillAssetGovernance(
|
|
86
|
+
overrides: AssetGovernanceOverrides = {},
|
|
87
|
+
): AssetGovernance {
|
|
88
|
+
return applyGovernanceOverrides({
|
|
89
|
+
sideEffectLevel: 'read',
|
|
90
|
+
approvalPolicy: 'auto',
|
|
91
|
+
executionIsolation: 'prompt-injection',
|
|
92
|
+
hostDependency: 'none',
|
|
93
|
+
}, overrides);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function toAssetGovernanceOverrides(
|
|
97
|
+
governance?: AssetGovernance,
|
|
98
|
+
): AssetGovernanceOverrides | undefined {
|
|
99
|
+
if (!governance) return undefined;
|
|
100
|
+
return {
|
|
101
|
+
sideEffectLevel: governance.sideEffectLevel,
|
|
102
|
+
approvalPolicy: governance.approvalPolicy,
|
|
103
|
+
hostDependency: governance.hostDependency,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function readAssetGovernanceOverrides(input: {
|
|
108
|
+
sideEffectLevel?: unknown;
|
|
109
|
+
approvalPolicy?: unknown;
|
|
110
|
+
hostDependency?: unknown;
|
|
111
|
+
}): AssetGovernanceOverrides | undefined {
|
|
112
|
+
const governance: AssetGovernanceOverrides = {};
|
|
113
|
+
|
|
114
|
+
if (isSideEffectLevel(input.sideEffectLevel)) {
|
|
115
|
+
governance.sideEffectLevel = input.sideEffectLevel;
|
|
116
|
+
}
|
|
117
|
+
if (isApprovalPolicy(input.approvalPolicy)) {
|
|
118
|
+
governance.approvalPolicy = input.approvalPolicy;
|
|
119
|
+
}
|
|
120
|
+
if (isHostDependency(input.hostDependency)) {
|
|
121
|
+
governance.hostDependency = input.hostDependency;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return Object.keys(governance).length > 0 ? governance : undefined;
|
|
125
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 治理子系统导出(barrel)
|
|
3
|
+
*
|
|
4
|
+
* - types:资产种类、来源、运行时、审批策略等
|
|
5
|
+
* - governance:摘要与默认治理构造
|
|
6
|
+
* - command-safety:命令行风险分析
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export type {
|
|
10
|
+
AssetApprovalPolicy,
|
|
11
|
+
AssetExecutionIsolation,
|
|
12
|
+
AssetGovernance,
|
|
13
|
+
AssetGovernanceOverrides,
|
|
14
|
+
AssetHostDependency,
|
|
15
|
+
AssetKind,
|
|
16
|
+
AssetRuntime,
|
|
17
|
+
AssetScope,
|
|
18
|
+
AssetSideEffectLevel,
|
|
19
|
+
AssetSource,
|
|
20
|
+
ManagedAssetSummaryBase,
|
|
21
|
+
} from './types';
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
createAssetSummaryBase,
|
|
25
|
+
createPartAssetGovernance,
|
|
26
|
+
createLocalMcpServerGovernance,
|
|
27
|
+
createSkillAssetGovernance,
|
|
28
|
+
createLocalToolGovernance,
|
|
29
|
+
readAssetGovernanceOverrides,
|
|
30
|
+
toAssetGovernanceOverrides,
|
|
31
|
+
} from './governance';
|
|
32
|
+
export { analyzeCommandRisk, createCommandGovernanceSnapshot, createCommandToolMetadata } from './command-safety';
|
|
33
|
+
export type {
|
|
34
|
+
CommandRiskAssessment,
|
|
35
|
+
CommandRiskTag,
|
|
36
|
+
CommandSafetyPolicy,
|
|
37
|
+
CommandToolMetadata,
|
|
38
|
+
} from './command-safety';
|