@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.
Files changed (247) hide show
  1. package/dist/adapter/index.d.ts +11 -0
  2. package/dist/adapter/index.d.ts.map +1 -0
  3. package/dist/adapter/model-adapter.d.ts +25 -0
  4. package/dist/adapter/model-adapter.d.ts.map +1 -0
  5. package/dist/adapter/model-options.d.ts +53 -0
  6. package/dist/adapter/model-options.d.ts.map +1 -0
  7. package/dist/adapter/types.d.ts +28 -0
  8. package/dist/adapter/types.d.ts.map +1 -0
  9. package/dist/chat-runtime.d.ts +96 -0
  10. package/dist/chat-runtime.d.ts.map +1 -0
  11. package/dist/constants.d.ts +12 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/events.d.ts +605 -1
  14. package/dist/events.d.ts.map +1 -0
  15. package/dist/events.js +1 -1
  16. package/dist/extension/index.d.ts +9 -0
  17. package/dist/extension/index.d.ts.map +1 -0
  18. package/dist/extension/types.d.ts +46 -0
  19. package/dist/extension/types.d.ts.map +1 -0
  20. package/dist/families/index.d.ts +11 -0
  21. package/dist/families/index.d.ts.map +1 -0
  22. package/dist/families/presets.d.ts +31 -0
  23. package/dist/families/presets.d.ts.map +1 -0
  24. package/dist/families/resolver.d.ts +11 -0
  25. package/dist/families/resolver.d.ts.map +1 -0
  26. package/dist/families/types.d.ts +29 -0
  27. package/dist/families/types.d.ts.map +1 -0
  28. package/dist/governance/command-safety.d.ts +34 -0
  29. package/dist/governance/command-safety.d.ts.map +1 -0
  30. package/dist/governance/governance.d.ts +19 -0
  31. package/dist/governance/governance.d.ts.map +1 -0
  32. package/dist/governance/index.d.ts +12 -0
  33. package/dist/governance/index.d.ts.map +1 -0
  34. package/dist/governance/types.d.ts +29 -0
  35. package/dist/governance/types.d.ts.map +1 -0
  36. package/dist/index.d.ts +72 -804
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +51 -1
  39. package/dist/internal/management-args.d.ts +13 -0
  40. package/dist/internal/management-args.d.ts.map +1 -0
  41. package/dist/internal/management-results.d.ts +21 -0
  42. package/dist/internal/management-results.d.ts.map +1 -0
  43. package/dist/llm-config.d.ts +108 -0
  44. package/dist/llm-config.d.ts.map +1 -0
  45. package/dist/logger/core.d.ts +31 -0
  46. package/dist/logger/core.d.ts.map +1 -0
  47. package/dist/logger/index.d.ts +9 -0
  48. package/dist/logger/index.d.ts.map +1 -0
  49. package/dist/orchestrator/compression-handler.d.ts +29 -0
  50. package/dist/orchestrator/compression-handler.d.ts.map +1 -0
  51. package/dist/orchestrator/context-compressor.d.ts +51 -0
  52. package/dist/orchestrator/context-compressor.d.ts.map +1 -0
  53. package/dist/orchestrator/context-summarizer.d.ts +41 -0
  54. package/dist/orchestrator/context-summarizer.d.ts.map +1 -0
  55. package/dist/orchestrator/index.d.ts +12 -0
  56. package/dist/orchestrator/index.d.ts.map +1 -0
  57. package/dist/orchestrator/orchestrator.d.ts +46 -0
  58. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  59. package/dist/orchestrator/types.d.ts +58 -0
  60. package/dist/orchestrator/types.d.ts.map +1 -0
  61. package/dist/parts/index.d.ts +13 -0
  62. package/dist/parts/index.d.ts.map +1 -0
  63. package/dist/parts/registry.d.ts +11 -0
  64. package/dist/parts/registry.d.ts.map +1 -0
  65. package/dist/parts/summaries.d.ts +9 -0
  66. package/dist/parts/summaries.d.ts.map +1 -0
  67. package/dist/parts/types.d.ts +61 -0
  68. package/dist/parts/types.d.ts.map +1 -0
  69. package/dist/platform.d.ts +17 -0
  70. package/dist/platform.d.ts.map +1 -0
  71. package/dist/platform.js +1 -0
  72. package/dist/protocols/anthropic.d.ts +20 -0
  73. package/dist/protocols/anthropic.d.ts.map +1 -0
  74. package/dist/protocols/ark.d.ts +36 -0
  75. package/dist/protocols/ark.d.ts.map +1 -0
  76. package/dist/protocols/deepseek.d.ts +24 -0
  77. package/dist/protocols/deepseek.d.ts.map +1 -0
  78. package/dist/protocols/error-utils.d.ts +14 -0
  79. package/dist/protocols/error-utils.d.ts.map +1 -0
  80. package/dist/protocols/gemini.d.ts +24 -0
  81. package/dist/protocols/gemini.d.ts.map +1 -0
  82. package/dist/protocols/glm.d.ts +20 -0
  83. package/dist/protocols/glm.d.ts.map +1 -0
  84. package/dist/protocols/grok.d.ts +20 -0
  85. package/dist/protocols/grok.d.ts.map +1 -0
  86. package/dist/protocols/index.d.ts +31 -0
  87. package/dist/protocols/index.d.ts.map +1 -0
  88. package/dist/protocols/minimax.d.ts +38 -0
  89. package/dist/protocols/minimax.d.ts.map +1 -0
  90. package/dist/protocols/moonshot.d.ts +20 -0
  91. package/dist/protocols/moonshot.d.ts.map +1 -0
  92. package/dist/protocols/openai-sse.d.ts +33 -0
  93. package/dist/protocols/openai-sse.d.ts.map +1 -0
  94. package/dist/protocols/openai.d.ts +19 -0
  95. package/dist/protocols/openai.d.ts.map +1 -0
  96. package/dist/protocols/qwen.d.ts +26 -0
  97. package/dist/protocols/qwen.d.ts.map +1 -0
  98. package/dist/protocols/responses-sse.d.ts +30 -0
  99. package/dist/protocols/responses-sse.d.ts.map +1 -0
  100. package/dist/protocols/sse-reader.d.ts +23 -0
  101. package/dist/protocols/sse-reader.d.ts.map +1 -0
  102. package/dist/protocols/tool-arguments.d.ts +8 -0
  103. package/dist/protocols/tool-arguments.d.ts.map +1 -0
  104. package/dist/protocols/types.d.ts +148 -0
  105. package/dist/protocols/types.d.ts.map +1 -0
  106. package/dist/protocols/vercel-gateway.d.ts +15 -0
  107. package/dist/protocols/vercel-gateway.d.ts.map +1 -0
  108. package/dist/runtime.d.ts +151 -0
  109. package/dist/runtime.d.ts.map +1 -0
  110. package/dist/runtime.js +1 -0
  111. package/dist/skills/index.d.ts +14 -0
  112. package/dist/skills/index.d.ts.map +1 -0
  113. package/dist/skills/management/admin.d.ts +10 -0
  114. package/dist/skills/management/admin.d.ts.map +1 -0
  115. package/dist/skills/management/index.d.ts +11 -0
  116. package/dist/skills/management/index.d.ts.map +1 -0
  117. package/dist/skills/management/inputs.d.ts +44 -0
  118. package/dist/skills/management/inputs.d.ts.map +1 -0
  119. package/dist/skills/management/operations.d.ts +78 -0
  120. package/dist/skills/management/operations.d.ts.map +1 -0
  121. package/dist/skills/management/types.d.ts +70 -0
  122. package/dist/skills/management/types.d.ts.map +1 -0
  123. package/dist/skills/registry.d.ts +37 -0
  124. package/dist/skills/registry.d.ts.map +1 -0
  125. package/dist/skills/summaries.d.ts +9 -0
  126. package/dist/skills/summaries.d.ts.map +1 -0
  127. package/dist/skills/types.d.ts +61 -0
  128. package/dist/skills/types.d.ts.map +1 -0
  129. package/dist/test-utils/mock-sse.d.ts +13 -0
  130. package/dist/test-utils/mock-sse.d.ts.map +1 -0
  131. package/dist/tool-manager/define-tool.d.ts +35 -0
  132. package/dist/tool-manager/define-tool.d.ts.map +1 -0
  133. package/dist/tool-manager/formats.d.ts +46 -0
  134. package/dist/tool-manager/formats.d.ts.map +1 -0
  135. package/dist/tool-manager/identity.d.ts +18 -0
  136. package/dist/tool-manager/identity.d.ts.map +1 -0
  137. package/dist/tool-manager/in-process-provider.d.ts +15 -0
  138. package/dist/tool-manager/in-process-provider.d.ts.map +1 -0
  139. package/dist/tool-manager/index.d.ts +18 -0
  140. package/dist/tool-manager/index.d.ts.map +1 -0
  141. package/dist/tool-manager/manager.d.ts +18 -0
  142. package/dist/tool-manager/manager.d.ts.map +1 -0
  143. package/dist/tool-manager/mcp-provider.d.ts +21 -0
  144. package/dist/tool-manager/mcp-provider.d.ts.map +1 -0
  145. package/dist/tool-manager/summaries.d.ts +39 -0
  146. package/dist/tool-manager/summaries.d.ts.map +1 -0
  147. package/dist/tool-manager/types.d.ts +314 -0
  148. package/dist/tool-manager/types.d.ts.map +1 -0
  149. package/dist/types.d.ts +663 -0
  150. package/dist/types.d.ts.map +1 -0
  151. package/package.json +26 -15
  152. package/src/adapter/index.ts +25 -0
  153. package/src/adapter/model-adapter.ts +196 -0
  154. package/src/adapter/model-options.ts +143 -0
  155. package/src/adapter/types.ts +41 -0
  156. package/src/chat-runtime.ts +515 -0
  157. package/src/constants.ts +9 -102
  158. package/src/events.ts +364 -150
  159. package/src/extension/index.ts +24 -0
  160. package/src/extension/types.ts +49 -0
  161. package/src/families/index.ts +28 -0
  162. package/src/families/presets.ts +124 -0
  163. package/src/families/resolver.ts +22 -0
  164. package/src/families/types.ts +55 -0
  165. package/src/governance/command-safety.ts +224 -0
  166. package/src/governance/governance.ts +125 -0
  167. package/src/governance/index.ts +38 -0
  168. package/src/governance/types.ts +44 -0
  169. package/src/index.ts +250 -145
  170. package/src/internal/management-args.ts +39 -0
  171. package/src/internal/management-results.ts +60 -0
  172. package/src/llm-config.ts +137 -0
  173. package/src/logger/core.ts +96 -0
  174. package/src/logger/index.ts +8 -0
  175. package/src/orchestrator/compression-handler.ts +137 -0
  176. package/src/{providers → orchestrator}/context-compressor.ts +79 -47
  177. package/src/orchestrator/context-summarizer.ts +123 -0
  178. package/src/orchestrator/index.ts +20 -0
  179. package/src/orchestrator/orchestrator.ts +1002 -0
  180. package/src/orchestrator/types.ts +70 -0
  181. package/src/parts/index.ts +20 -0
  182. package/src/parts/registry.ts +95 -0
  183. package/src/parts/summaries.ts +40 -0
  184. package/src/parts/types.ts +63 -0
  185. package/src/platform.ts +73 -0
  186. package/src/protocols/anthropic.ts +377 -0
  187. package/src/protocols/ark.ts +300 -0
  188. package/src/protocols/deepseek.ts +192 -0
  189. package/src/{providers/protocols → protocols}/error-utils.ts +17 -20
  190. package/src/protocols/gemini.ts +352 -0
  191. package/src/protocols/glm.ts +212 -0
  192. package/src/protocols/grok.ts +98 -0
  193. package/src/protocols/index.ts +48 -0
  194. package/src/protocols/minimax.ts +308 -0
  195. package/src/protocols/moonshot.ts +186 -0
  196. package/src/protocols/openai-sse.ts +156 -0
  197. package/src/protocols/openai.ts +97 -0
  198. package/src/protocols/qwen.ts +358 -0
  199. package/src/protocols/responses-sse.ts +224 -0
  200. package/src/protocols/sse-reader.ts +54 -0
  201. package/src/protocols/tool-arguments.ts +32 -0
  202. package/src/{providers/protocols → protocols}/types.ts +46 -37
  203. package/src/protocols/vercel-gateway.ts +391 -0
  204. package/src/runtime.ts +167 -0
  205. package/src/skills/index.ts +29 -0
  206. package/src/skills/management/admin.ts +170 -0
  207. package/src/skills/management/index.ts +27 -0
  208. package/src/skills/management/inputs.ts +79 -0
  209. package/src/skills/management/operations.ts +256 -0
  210. package/src/skills/management/types.ts +57 -0
  211. package/src/skills/registry.ts +120 -0
  212. package/src/skills/summaries.ts +48 -0
  213. package/src/skills/types.ts +65 -0
  214. package/src/test-utils/mock-sse.ts +3 -3
  215. package/src/tool-manager/define-tool.ts +201 -0
  216. package/src/tool-manager/formats.ts +146 -0
  217. package/src/tool-manager/identity.ts +80 -0
  218. package/src/tool-manager/in-process-provider.ts +164 -0
  219. package/src/tool-manager/index.ts +63 -0
  220. package/src/tool-manager/manager.ts +562 -0
  221. package/src/tool-manager/mcp-provider.ts +509 -0
  222. package/src/tool-manager/summaries.ts +136 -0
  223. package/src/tool-manager/types.ts +389 -0
  224. package/src/types.ts +750 -191
  225. package/dist/events-CU5D5ray.d.ts +0 -1128
  226. package/src/agent.ts +0 -409
  227. package/src/internal/update-plan.ts +0 -2
  228. package/src/internal/web-search.ts +0 -77
  229. package/src/mcp/client-manager.ts +0 -302
  230. package/src/mcp/index.ts +0 -2
  231. package/src/mcp/types.ts +0 -43
  232. package/src/providers/context-summarizer.ts +0 -70
  233. package/src/providers/index.ts +0 -125
  234. package/src/providers/model-registry.ts +0 -466
  235. package/src/providers/orchestrator.ts +0 -839
  236. package/src/providers/protocols/anthropic.ts +0 -406
  237. package/src/providers/protocols/ark.ts +0 -362
  238. package/src/providers/protocols/deepseek.ts +0 -344
  239. package/src/providers/protocols/gemini.ts +0 -350
  240. package/src/providers/protocols/index.ts +0 -36
  241. package/src/providers/protocols/openai.ts +0 -420
  242. package/src/providers/protocols/qwen.ts +0 -315
  243. package/src/providers/types.ts +0 -264
  244. package/src/providers/unified-adapter.ts +0 -367
  245. package/src/router.ts +0 -72
  246. package/src/tools.ts +0 -162
  247. package/src/utils.ts +0 -86
@@ -0,0 +1,151 @@
1
+ /**
2
+ * 扩展运行时框架
3
+ *
4
+ * 仅包含扩展生命周期类型和 defineExtension 入口。
5
+ * 平台工具(路径、Safari 自动化)见 @huyooo/ai-chat-core/platform。
6
+ */
7
+ import type { Tool } from './types';
8
+ /** SQLite 数据库迁移定义 */
9
+ export interface Migration {
10
+ version: number;
11
+ name: string;
12
+ up: (db: import('better-sqlite3').Database) => void;
13
+ }
14
+ /** 扩展声明一个数据库所需的全部信息 */
15
+ export interface DatabaseDeclaration {
16
+ description: string;
17
+ workspaceKey?: string | null;
18
+ customScope?: Record<string, unknown> | null;
19
+ queryHint: string;
20
+ migrations: Migration[];
21
+ }
22
+ /**
23
+ * 宿主注入的环境路径
24
+ *
25
+ * 扩展自包含原则:
26
+ * - extensionDir 是只读的,包含扩展自带的所有静态资源(代码、二进制、预置模型等)
27
+ * - dataDir 是可写的,存放运行时产物(拷贝后的二进制、下载的模型、缓存等)
28
+ *
29
+ * 二进制约定:扩展打包 bin/ 在 extensionDir 内,运行时拷贝到 dataDir/bin/
30
+ */
31
+ export interface ExtensionPaths {
32
+ /** 扩展安装目录(只读:含代码、bin/、models/ 等静态资源) */
33
+ extensionDir: string;
34
+ /** 扩展数据目录(可写:运行时二进制、下载模型、缓存) */
35
+ dataDir: string;
36
+ /** 用户下载目录 */
37
+ downloadsDir: string;
38
+ }
39
+ /** 扩展 AI 输入附件 */
40
+ export interface AiAttachment {
41
+ mimeType: string;
42
+ /** 本地文件路径。由宿主决定是否以内联或文件上传方式发送,扩展不会接触 API key。 */
43
+ filePath?: string;
44
+ /** 已由宿主或上游返回的文件 URI。仅支持对应协议显式处理的场景。 */
45
+ fileUri?: string;
46
+ }
47
+ /** 扩展 AI 消息 */
48
+ export interface AiMessage {
49
+ role: 'system' | 'user' | 'assistant';
50
+ content: string;
51
+ attachments?: AiAttachment[];
52
+ }
53
+ /** 扩展 AI 输出片段 */
54
+ export type AiOutputPart = {
55
+ type: 'text';
56
+ text: string;
57
+ } | {
58
+ type: 'binary';
59
+ mimeType: string;
60
+ data: string;
61
+ };
62
+ /** 扩展 AI 调用结果 */
63
+ export interface AiGenerateResult {
64
+ text: string;
65
+ parts: AiOutputPart[];
66
+ finishReason?: 'stop' | 'tool_calls' | 'length' | 'error';
67
+ usage?: {
68
+ promptTokens?: number;
69
+ completionTokens?: number;
70
+ totalTokens?: number;
71
+ reasoningTokens?: number;
72
+ cachedTokens?: number;
73
+ };
74
+ }
75
+ /** 扩展 AI 生成参数 */
76
+ export interface AiGenerateInput {
77
+ model: string;
78
+ messages: AiMessage[];
79
+ enableThinking?: boolean;
80
+ signal?: AbortSignal;
81
+ }
82
+ /** 单厂商 AI 入口 */
83
+ export interface ExtensionAiProvider {
84
+ generate(input: AiGenerateInput): Promise<AiGenerateResult>;
85
+ }
86
+ /** 扩展可用的宿主 AI 能力 */
87
+ export interface ExtensionAi {
88
+ gemini: ExtensionAiProvider;
89
+ doubao: ExtensionAiProvider;
90
+ deepseek: ExtensionAiProvider;
91
+ qwen: ExtensionAiProvider;
92
+ glm: ExtensionAiProvider;
93
+ moonshot: ExtensionAiProvider;
94
+ minimax: ExtensionAiProvider;
95
+ openai: ExtensionAiProvider;
96
+ anthropic: ExtensionAiProvider;
97
+ grok: ExtensionAiProvider;
98
+ }
99
+ export type ExtensionRecoveryTargetKind = 'file' | 'directory' | 'resource';
100
+ export interface ExtensionRecoveryTargetInput {
101
+ id?: string;
102
+ kind: ExtensionRecoveryTargetKind;
103
+ path: string;
104
+ displayName: string;
105
+ workspaceKey?: string | null;
106
+ customScope?: Record<string, unknown> | null;
107
+ tags?: Record<string, string>;
108
+ }
109
+ export interface ExtensionRecoveryTarget {
110
+ id: string;
111
+ kind: ExtensionRecoveryTargetKind;
112
+ path: string;
113
+ displayName: string;
114
+ workspaceKey: string | null;
115
+ customScope: Record<string, unknown> | null;
116
+ tags: Record<string, string>;
117
+ }
118
+ export interface ExtensionRecovery {
119
+ registerTarget(input: ExtensionRecoveryTargetInput): ExtensionRecoveryTarget;
120
+ listTargets(): ExtensionRecoveryTarget[];
121
+ }
122
+ /** 宿主注入给扩展 activate 的上下文 */
123
+ export interface ExtensionContext {
124
+ /** 获取已声明的数据库连接(已完成 WAL 配置 + migration) */
125
+ getDatabase(name: string): import('better-sqlite3').Database;
126
+ /** 宿主提供的环境路径 */
127
+ paths: ExtensionPaths;
128
+ /** 宿主提供的 AI 能力(按厂商分组,调用方式统一) */
129
+ ai: ExtensionAi;
130
+ /** 宿主提供的恢复目标注册能力(支持时注入) */
131
+ recovery?: ExtensionRecovery;
132
+ }
133
+ /** defineExtension 的输入定义 */
134
+ export interface ExtensionDefinition {
135
+ /** 数据库声明(可选,无 DB 需求的扩展不填) */
136
+ databases?: Record<string, DatabaseDeclaration>;
137
+ /** 激活:接收宿主注入的上下文,返回工具数组 */
138
+ activate(ctx: ExtensionContext): Tool[];
139
+ }
140
+ /** defineExtension 返回的带标记对象,宿主据此识别完整扩展 */
141
+ export type ExtensionDefinitionMarked = ExtensionDefinition & {
142
+ __isExtension: true;
143
+ };
144
+ /**
145
+ * 定义一个完整扩展(数据库 + 生命周期 + 工具)。
146
+ *
147
+ * 宿主加载模块后检查 default export 是否携带 __isExtension 标记,
148
+ * 有则走 defineExtension 流程(注册 DB → 注入上下文 → activate 返回工具)。
149
+ */
150
+ export declare function defineExtension(definition: ExtensionDefinition): ExtensionDefinitionMarked;
151
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ function e(e){return{...e,__isExtension:!0}}export{e as defineExtension};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Skills 子系统导出(barrel)
3
+ *
4
+ * - registry:内存索引与启用状态
5
+ * - management:skillManagementPlugin 与宿主回调
6
+ * - summaries:管理 API 用摘要构造
7
+ */
8
+ export type { SkillMeta, SkillSearchQuery, ManagedSkillSummary, ManagedSkillDetail, } from './types';
9
+ export { skillRegistry } from './registry';
10
+ export type { SkillRegistry } from './registry';
11
+ export { createManagedSkillSummary, createManagedSkillDetail } from './summaries';
12
+ export { skillManagementPlugin } from './management';
13
+ export type { SkillManagementOptions, OnSkillCreate, OnSkillUpdate, OnSkillDelete, OnSkillSetEnabled, OnSkillLoadContent, OnSkillLoadReference, } from './management';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Skill 管理命令装配
3
+ *
4
+ * - 将解析后的输入与 operations 绑定为具体 Tool 定义列表
5
+ * - 供 skillManagementPlugin 注册到 Agent
6
+ */
7
+ import type { Tool } from '../../types';
8
+ import type { SkillAdminContext } from './types';
9
+ export declare function createSkillAdminTools(ctx: SkillAdminContext): Tool[];
10
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/skills/management/admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAoBjD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,EAAE,CA6IpE"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Skill 管理插件入口(skillManagementPlugin)
3
+ *
4
+ * - 分层:types(回调) / inputs(解析) / operations(业务) / admin(装配 Tool)
5
+ * - 宿主注入 registry 与持久化回调后即可挂载
6
+ */
7
+ import type { ToolPlugin } from '../../types';
8
+ import type { SkillManagementOptions } from './types';
9
+ export type { SkillManagementOptions, SkillAdminContext, SkillOperationContext, OnSkillCreate, OnSkillUpdate, OnSkillDelete, OnSkillSetEnabled, OnSkillLoadContent, OnSkillLoadReference, } from './types';
10
+ export declare function skillManagementPlugin(options: SkillManagementOptions): ToolPlugin;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skills/management/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGtD,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,UAAU,CAIjF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Skill 管理插件 — 命令参数解析
3
+ *
4
+ * - 将未知 JSON args 转为强类型 Create/Update/Search 等结构
5
+ * - 校验 AssetSource、启用项等约束
6
+ */
7
+ import type { AssetSource } from '../../governance/types';
8
+ import type { SkillMeta } from '../types';
9
+ export declare function parseSkillSearchInput(args: Record<string, unknown>): {
10
+ keyword: string | undefined;
11
+ category: string | undefined;
12
+ tags: string | undefined;
13
+ source: AssetSource | undefined;
14
+ };
15
+ export declare function parseSkillCreateInput(args: Record<string, unknown>): {
16
+ id: string;
17
+ name: string;
18
+ description: string;
19
+ instructions: string;
20
+ category: string;
21
+ tags: string[];
22
+ icon: string;
23
+ };
24
+ export declare function parseSkillUpdateInput(args: Record<string, unknown>, existingMeta?: SkillMeta): {
25
+ id: string;
26
+ name: string;
27
+ description: string;
28
+ instructions: string;
29
+ category: string;
30
+ tags: string[];
31
+ icon: string;
32
+ };
33
+ export declare function parseSkillEnableItems(args: Record<string, unknown>): {
34
+ id: string;
35
+ enabled: boolean;
36
+ }[];
37
+ export declare function parseSkillReferenceInput(args: Record<string, unknown>): {
38
+ id: string;
39
+ referenceName: string;
40
+ };
41
+ export declare function parseSkillIdInput(args: Record<string, unknown>): {
42
+ id: string;
43
+ };
44
+ //# sourceMappingURL=inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../src/skills/management/inputs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAY1C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAOlE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;EAUlE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,CAAC,EAAE,SAAS;;;;;;;;EAWzB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;QA1Cb,MAAM;aAAW,OAAO;IA8C7E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;EAKrE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;EAI9D"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Skill 管理核心业务逻辑
3
+ *
4
+ * - create / list / inspect / enable / delete 等与 registry、宿主回调协作
5
+ * - 统一返回 management-results 形状
6
+ */
7
+ import type { AssetSource } from '../../governance/types';
8
+ import type { ManagedSkillSummary } from '../types';
9
+ import type { SkillOperationContext } from './types';
10
+ interface CreateSkillInput {
11
+ id: string;
12
+ name: string;
13
+ description: string;
14
+ instructions: string;
15
+ category: string;
16
+ tags: string[];
17
+ icon: string;
18
+ }
19
+ interface UpdateSkillInput extends CreateSkillInput {
20
+ }
21
+ interface SkillEnableItem {
22
+ id: string;
23
+ enabled: boolean;
24
+ }
25
+ export declare function searchManagedSkills(ctx: SkillOperationContext, input: {
26
+ keyword?: string;
27
+ category?: string;
28
+ tags?: string;
29
+ source?: AssetSource;
30
+ }): Record<"count" | "skills", unknown> & {
31
+ [x: string]: unknown;
32
+ };
33
+ export declare function listManagedSkills(ctx: SkillOperationContext): Record<"count" | "skills", unknown> & {
34
+ [x: string]: unknown;
35
+ };
36
+ export declare function createManagedSkill(ctx: SkillOperationContext, input: CreateSkillInput): Promise<(Record<"skill" | "action", unknown> & {
37
+ [x: string]: unknown;
38
+ }) | {
39
+ error: string;
40
+ }>;
41
+ export declare function updateManagedSkill(ctx: SkillOperationContext, input: UpdateSkillInput): Promise<(Record<"skill" | "action", unknown> & {
42
+ [x: string]: unknown;
43
+ }) | {
44
+ error: string;
45
+ }>;
46
+ export declare function setManagedSkillsEnabled(ctx: SkillOperationContext, items: SkillEnableItem[]): Promise<{
47
+ action: string;
48
+ results: {
49
+ id: string;
50
+ enabled: boolean;
51
+ error?: string;
52
+ skill?: ManagedSkillSummary;
53
+ }[];
54
+ enabledCount: number;
55
+ disabledCount: number;
56
+ } | {
57
+ error: string;
58
+ }>;
59
+ export declare function deleteManagedSkill(ctx: SkillOperationContext, id: string): Promise<(Record<"skill" | "action", unknown> & {
60
+ [x: string]: unknown;
61
+ }) | {
62
+ error: string;
63
+ }>;
64
+ export declare function inspectManagedSkill(ctx: SkillOperationContext, id: string): Promise<(Record<"skill", unknown> & {
65
+ [x: string]: unknown;
66
+ }) | {
67
+ error: string;
68
+ }>;
69
+ export declare function loadManagedSkillReference(ctx: SkillOperationContext, input: {
70
+ id: string;
71
+ referenceName: string;
72
+ }): Promise<{
73
+ content: string;
74
+ } | {
75
+ error: string;
76
+ }>;
77
+ export {};
78
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/skills/management/operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAS1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,gBAAiB,SAAQ,gBAAgB;CAAG;AAEtD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CAClB;AAoCD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;;EAoBF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,qBAAqB;;EAG3D;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,gBAAgB;;;;GAuBxB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,gBAAgB;;;;GAsCxB;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,eAAe,EAAE;;;YAMG,MAAM;iBAAW,OAAO;gBAAU,MAAM;gBAAU,mBAAmB;;;;;;GAqBjG;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM;;;;GAoBX;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,EAAE,MAAM;;;;GAiBX;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;;;;GAG7C"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Skill 管理层类型
3
+ *
4
+ * - 宿主回调:创建/更新/删除/启用、加载 SKILL.md 正文与参考文档
5
+ * - Admin / operations 上下文接口
6
+ */
7
+ import type { SkillRegistry } from '../registry';
8
+ /** 技能创建回调 */
9
+ export type OnSkillCreate = (params: {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ instructions: string;
14
+ category: string;
15
+ tags: string[];
16
+ icon: string;
17
+ }) => Promise<{
18
+ ok: boolean;
19
+ } | {
20
+ error: string;
21
+ }>;
22
+ /** 技能更新回调:宿主覆盖 SKILL.md 内容 */
23
+ export type OnSkillUpdate = (params: {
24
+ id: string;
25
+ name: string;
26
+ description: string;
27
+ instructions: string;
28
+ category: string;
29
+ tags: string[];
30
+ icon: string;
31
+ }) => Promise<{
32
+ ok: boolean;
33
+ } | {
34
+ error: string;
35
+ }>;
36
+ /** 技能删除回调 */
37
+ export type OnSkillDelete = (id: string) => Promise<{
38
+ ok: boolean;
39
+ error?: string;
40
+ }>;
41
+ /** 技能启用状态变更回调(宿主持久化) */
42
+ export type OnSkillSetEnabled = (id: string, enabled: boolean) => Promise<void>;
43
+ /** 加载技能内容(SKILL.md body) */
44
+ export type OnSkillLoadContent = (id: string) => Promise<{
45
+ name: string;
46
+ instructions: string;
47
+ } | {
48
+ error: string;
49
+ }>;
50
+ /** 加载技能参考文档 */
51
+ export type OnSkillLoadReference = (id: string, refName: string) => Promise<{
52
+ content: string;
53
+ } | {
54
+ error: string;
55
+ }>;
56
+ /** skillManagementPlugin 配置 */
57
+ export interface SkillManagementOptions {
58
+ registry: SkillRegistry;
59
+ onSkillSetEnabled: OnSkillSetEnabled;
60
+ onSkillLoadContent: OnSkillLoadContent;
61
+ onSkillLoadReference: OnSkillLoadReference;
62
+ onSkillCreate?: OnSkillCreate;
63
+ onSkillUpdate?: OnSkillUpdate;
64
+ onSkillDelete?: OnSkillDelete;
65
+ }
66
+ export interface SkillOperationContext extends SkillManagementOptions {
67
+ }
68
+ export interface SkillAdminContext extends SkillOperationContext {
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/skills/management/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,aAAa;AACb,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnD,8BAA8B;AAC9B,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnD,aAAa;AACb,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErF,wBAAwB;AACxB,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF,4BAA4B;AAC5B,MAAM,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErH,eAAe;AACf,MAAM,MAAM,oBAAoB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErH,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;CAAG;AAExE,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;CAAG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Skill Registry - 技能注册表
3
+ *
4
+ * 纯内存索引,存储 SkillMeta。
5
+ * 与 ToolRegistry 不同:
6
+ * - 没有 lazy loading(Skill 是文本,不需要实例化)
7
+ * - 有 enabled 状态(决定是否注入 system prompt)
8
+ * - 搜索支持 enabledOnly 过滤
9
+ */
10
+ import type { SkillMeta, SkillSearchQuery } from './types';
11
+ export interface SkillRegistry {
12
+ /** 注册 Skill(完整元数据) */
13
+ add(meta: SkillMeta): void;
14
+ /** 移除 Skill */
15
+ remove(id: string): void;
16
+ /** 搜索 Skill */
17
+ search(query?: SkillSearchQuery): SkillMeta[];
18
+ /** 按 ID 获取 */
19
+ get(id: string): SkillMeta | undefined;
20
+ /** 设置启用/禁用 */
21
+ setEnabled(id: string, enabled: boolean): void;
22
+ /** 获取所有已启用的 Skill */
23
+ listEnabled(): SkillMeta[];
24
+ /** 所有条目 */
25
+ entries(): SkillMeta[];
26
+ /** 是否已注册 */
27
+ has(id: string): boolean;
28
+ /** 条目总数 */
29
+ readonly size: number;
30
+ /** 所有分类 */
31
+ categories(): Array<{
32
+ category: string;
33
+ count: number;
34
+ }>;
35
+ }
36
+ export declare function skillRegistry(): SkillRegistry;
37
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,eAAe;IACf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe;IACf,MAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,SAAS,EAAE,CAAC;IAC9C,cAAc;IACd,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,cAAc;IACd,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,qBAAqB;IACrB,WAAW,IAAI,SAAS,EAAE,CAAC;IAC3B,WAAW;IACX,OAAO,IAAI,SAAS,EAAE,CAAC;IACvB,YAAY;IACZ,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,UAAU,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAYD,wBAAgB,aAAa,IAAI,aAAa,CA0E7C"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skill 管理摘要 / 详情构造
3
+ *
4
+ * - 从 SkillMeta 派生 ManagedSkillSummary / Detail,带统一治理字段
5
+ */
6
+ import type { ManagedSkillDetail, ManagedSkillSummary, SkillMeta } from './types';
7
+ export declare function createManagedSkillSummary(skill: SkillMeta, extra?: Partial<ManagedSkillSummary>): ManagedSkillSummary;
8
+ export declare function createManagedSkillDetail(skill: SkillMeta, extra?: Partial<ManagedSkillDetail>): ManagedSkillDetail;
9
+ //# sourceMappingURL=summaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summaries.d.ts","sourceRoot":"","sources":["../../src/skills/summaries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAElF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACvC,mBAAmB,CAyBrB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACtC,kBAAkB,CAKpB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Skill 类型定义
3
+ *
4
+ * Skill = AI 指令集(Markdown 文件),启用后注入 system prompt。
5
+ * 与 Tool 的区别:Tool 是可执行代码,Skill 是文本指令。
6
+ */
7
+ import type { AssetSource, ManagedAssetSummaryBase } from '../governance/types';
8
+ /** Skill 元数据(注册表中存储的索引信息) */
9
+ export interface SkillMeta {
10
+ /** 唯一 ID(文件夹名) */
11
+ id: string;
12
+ name: string;
13
+ description: string;
14
+ category: string;
15
+ tags: string[];
16
+ icon: string;
17
+ source: AssetSource;
18
+ enabled: boolean;
19
+ /** 可用的 references 文件列表 */
20
+ references: string[];
21
+ /** 可用的 scripts 文件列表 */
22
+ scripts: string[];
23
+ /** 技能所在目录的绝对路径(宿主提供,用于文件操作) */
24
+ dirPath?: string;
25
+ /** UI 展示名称(区别于 ID) */
26
+ displayName?: string;
27
+ /** 简短描述(用于列表展示) */
28
+ shortDescription?: string;
29
+ /** 推荐触发语 */
30
+ defaultPrompt?: string;
31
+ }
32
+ export interface ManagedSkillSummary extends ManagedAssetSummaryBase {
33
+ ref: string;
34
+ id: string;
35
+ name: string;
36
+ description: string;
37
+ category: string;
38
+ tags: string[];
39
+ icon: string;
40
+ source: AssetSource;
41
+ enabled: boolean;
42
+ references: string[];
43
+ scripts: string[];
44
+ dirPath?: string;
45
+ displayName?: string;
46
+ shortDescription?: string;
47
+ defaultPrompt?: string;
48
+ }
49
+ export interface ManagedSkillDetail extends ManagedSkillSummary {
50
+ instructions?: string;
51
+ instructionsError?: string;
52
+ }
53
+ /** Skill 搜索条件 */
54
+ export interface SkillSearchQuery {
55
+ keyword?: string;
56
+ category?: string;
57
+ tags?: string[];
58
+ source?: AssetSource;
59
+ enabledOnly?: boolean;
60
+ }
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,6BAA6B;AAC7B,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,iBAAiB;AACjB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 测试用:根据 SSE 数据行创建 Response,用于 mock fetch
3
+ *
4
+ * Response.ok 由 status 自动决定(200-299 为 true),无需手动传入。
5
+ */
6
+ export declare function createSSEResponse(sseDataLines: string[], options?: {
7
+ status?: number;
8
+ }): Response;
9
+ /**
10
+ * 收集异步生成器的所有值
11
+ */
12
+ export declare function collectAsync<T>(gen: AsyncGenerator<T>): Promise<T[]>;
13
+ //# sourceMappingURL=mock-sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-sse.d.ts","sourceRoot":"","sources":["../../src/test-utils/mock-sse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAejG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAM1E"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * defineTool — TypeBox-only 的工具定义与执行封装
3
+ *
4
+ * - 编译 schema 缓存、外部 JSON Schema 参数校验
5
+ * - 统一 governance / UI 元数据到 Tool 类型
6
+ */
7
+ import { type Static, type TObject } from '@sinclair/typebox';
8
+ import type { AssetApprovalPolicy, AssetHostDependency, AssetSideEffectLevel } from '../governance/types';
9
+ import type { JsonSchemaObject, Tool, ToolContext, ToolExecuteResult, ToolGovernanceSnapshot, ToolUI } from '../types';
10
+ export interface TypeBoxToolConfig<TSchema extends TObject> {
11
+ id?: string;
12
+ name: string;
13
+ alias?: string;
14
+ displayName?: string;
15
+ description: string;
16
+ inputSchema: TSchema;
17
+ /** 成功时 data 内的业务结构。defineTool 会生成标准 status/data/message 外围 resolvedOutputSchema。 */
18
+ outputSchema?: TObject;
19
+ /** 失败返回结构。不传时使用平台标准 ToolError schema。 */
20
+ errorSchema?: TObject;
21
+ ui?: ToolUI;
22
+ requiresApproval?: boolean;
23
+ approvalPolicy?: AssetApprovalPolicy;
24
+ sideEffectLevel?: AssetSideEffectLevel;
25
+ hostDependency?: AssetHostDependency;
26
+ assessInputGovernance?: (args: Static<TSchema>) => ToolGovernanceSnapshot | Promise<ToolGovernanceSnapshot | undefined> | undefined;
27
+ category?: string;
28
+ tags?: string[];
29
+ timeout?: number;
30
+ execute: (args: Static<TSchema>, context: ToolContext) => Promise<ToolExecuteResult>;
31
+ }
32
+ export declare function validateTypeBoxArgs<TSchemaValue extends TObject>(inputSchema: TSchemaValue, rawArgs: Record<string, unknown>): Static<TSchemaValue>;
33
+ export declare function validateJsonSchemaArgs(parameters: JsonSchemaObject, rawArgs: Record<string, unknown>): Record<string, unknown>;
34
+ export declare function defineTool<TSchemaValue extends TObject>(config: TypeBoxToolConfig<TSchemaValue>): Tool;
35
+ //# sourceMappingURL=define-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-tool.d.ts","sourceRoot":"","sources":["../../src/tool-manager/define-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAgB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAcvH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,OAAO;IACxD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,qBAAqB,CAAC,EAAE,CACtB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAClB,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtF;AAyCD,wBAAgB,mBAAmB,CAAC,YAAY,SAAS,OAAO,EAC9D,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,YAAY,CAAC,CAUtB;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AA6BD,wBAAgB,UAAU,CAAC,YAAY,SAAS,OAAO,EACrD,MAAM,EAAE,iBAAiB,CAAC,YAAY,CAAC,GACtC,IAAI,CAiDN"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * 工具参数 TypeBox 自定义 format 注册表
3
+ *
4
+ * - TOOL_FORMATS:email / uuid / url 等常用约束名
5
+ * - 与 defineTool 中的 schema 编译共用
6
+ */
7
+ export declare const TOOL_FORMATS: {
8
+ readonly email: "email";
9
+ readonly uuidAny: "uuid-any";
10
+ readonly cuid: "cuid";
11
+ readonly cuid2: "cuid2";
12
+ readonly ulid: "ulid";
13
+ readonly nanoid: "nanoid";
14
+ readonly url: "url";
15
+ readonly uri: "uri";
16
+ readonly uuid: "uuid";
17
+ readonly ipv4: "ipv4";
18
+ readonly ipv6: "ipv6";
19
+ readonly ip: "ip";
20
+ readonly cidr: "cidr";
21
+ readonly hostname: "hostname";
22
+ readonly date: "date";
23
+ readonly time: "time";
24
+ readonly dateTime: "date-time";
25
+ readonly datetime: "datetime";
26
+ readonly duration: "duration";
27
+ readonly phone: "phone";
28
+ readonly phoneCn: "phone-cn";
29
+ readonly phoneE164: "phone-e164";
30
+ readonly objectId: "objectid";
31
+ readonly slug: "slug";
32
+ readonly base64: "base64";
33
+ readonly base64url: "base64url";
34
+ readonly jwt: "jwt";
35
+ readonly hexColor: "hex-color";
36
+ readonly rgbColor: "rgb-color";
37
+ readonly color: "color";
38
+ readonly emoji: "emoji";
39
+ readonly semver: "semver";
40
+ readonly creditCard: "credit-card";
41
+ };
42
+ export type ToolFormat = typeof TOOL_FORMATS[keyof typeof TOOL_FORMATS];
43
+ export declare function registerToolFormats(): void;
44
+ export declare function registerToolFormat(name: string, validator: (value: string) => boolean): void;
45
+ export declare function hasToolFormat(name: string): boolean;
46
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/tool-manager/formats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAoDxE,wBAAgB,mBAAmB,IAAI,IAAI,CAqC1C;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACpC,IAAI,CAEN;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}