@optima-chat/optima-agent 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/.claude/settings.local.json +83 -0
  2. package/.claude/skills/ads/SKILL.md +0 -0
  3. package/.claude/skills/bi/SKILL.md +71 -42
  4. package/.claude/skills/collection/SKILL.md +88 -0
  5. package/.claude/skills/comfy/SKILL.md +138 -122
  6. package/.claude/skills/ffmpeg/SKILL.md +164 -0
  7. package/.claude/skills/homepage/SKILL.md +324 -0
  8. package/.claude/skills/i18n/SKILL.md +0 -0
  9. package/.claude/skills/inventory/SKILL.md +90 -79
  10. package/.claude/skills/markdown-pdf/SKILL.md +72 -0
  11. package/.claude/skills/merchant/SKILL.md +71 -68
  12. package/.claude/skills/order/SKILL.md +193 -21
  13. package/.claude/skills/product/SKILL.md +51 -6
  14. package/.claude/skills/product-page/SKILL.md +200 -0
  15. package/.claude/skills/review/SKILL.md +234 -0
  16. package/.claude/skills/scout/SKILL.md +116 -1
  17. package/.claude/skills/shipping/SKILL.md +193 -0
  18. package/README.md +5 -1
  19. package/dist/bin/bi-cli.d.ts +0 -0
  20. package/dist/bin/bi-cli.d.ts.map +0 -0
  21. package/dist/bin/bi-cli.js.map +0 -0
  22. package/dist/bin/comfy.d.ts +0 -0
  23. package/dist/bin/comfy.d.ts.map +0 -0
  24. package/dist/bin/comfy.js.map +0 -0
  25. package/dist/bin/commerce.d.ts +0 -0
  26. package/dist/bin/commerce.d.ts.map +0 -0
  27. package/dist/bin/commerce.js.map +0 -0
  28. package/dist/bin/google-ads.d.ts +0 -0
  29. package/dist/bin/google-ads.d.ts.map +0 -0
  30. package/dist/bin/google-ads.js.map +0 -0
  31. package/dist/bin/optima.d.ts +0 -0
  32. package/dist/bin/optima.d.ts.map +0 -0
  33. package/dist/bin/optima.js +3 -3
  34. package/dist/bin/optima.js.map +1 -1
  35. package/dist/bin/scout.d.ts +0 -0
  36. package/dist/bin/scout.d.ts.map +0 -0
  37. package/dist/bin/scout.js.map +0 -0
  38. package/dist/bin/serve.d.ts +0 -0
  39. package/dist/bin/serve.d.ts.map +0 -0
  40. package/dist/bin/serve.js +0 -0
  41. package/dist/bin/serve.js.map +0 -0
  42. package/dist/src/agent.d.ts +0 -48
  43. package/dist/src/agent.d.ts.map +1 -1
  44. package/dist/src/agent.js +3 -98
  45. package/dist/src/agent.js.map +1 -1
  46. package/dist/src/auth/device-flow.d.ts +0 -0
  47. package/dist/src/auth/device-flow.d.ts.map +0 -0
  48. package/dist/src/auth/device-flow.js +0 -0
  49. package/dist/src/auth/device-flow.js.map +0 -0
  50. package/dist/src/auth/index.d.ts +0 -0
  51. package/dist/src/auth/index.d.ts.map +0 -0
  52. package/dist/src/auth/index.js +0 -0
  53. package/dist/src/auth/index.js.map +0 -0
  54. package/dist/src/auth/token.d.ts +0 -0
  55. package/dist/src/auth/token.d.ts.map +0 -0
  56. package/dist/src/auth/token.js +0 -0
  57. package/dist/src/auth/token.js.map +0 -0
  58. package/dist/src/auth/types.d.ts +0 -0
  59. package/dist/src/auth/types.d.ts.map +0 -0
  60. package/dist/src/auth/types.js +0 -0
  61. package/dist/src/auth/types.js.map +0 -0
  62. package/dist/src/config.d.ts +0 -0
  63. package/dist/src/config.d.ts.map +0 -0
  64. package/dist/src/config.js +0 -0
  65. package/dist/src/config.js.map +0 -0
  66. package/dist/src/hooks-loader.d.ts +6 -0
  67. package/dist/src/hooks-loader.d.ts.map +1 -0
  68. package/dist/src/hooks-loader.js +215 -0
  69. package/dist/src/hooks-loader.js.map +1 -0
  70. package/dist/src/index.d.ts +3 -3
  71. package/dist/src/index.d.ts.map +1 -1
  72. package/dist/src/index.js +1 -1
  73. package/dist/src/index.js.map +1 -1
  74. package/dist/src/server/index.d.ts +0 -0
  75. package/dist/src/server/index.d.ts.map +0 -0
  76. package/dist/src/server/index.js +1 -1
  77. package/dist/src/server/index.js.map +1 -1
  78. package/dist/src/server/types.d.ts +0 -0
  79. package/dist/src/server/types.d.ts.map +0 -0
  80. package/dist/src/server/types.js +0 -0
  81. package/dist/src/server/types.js.map +0 -0
  82. package/dist/src/system-prompt.d.ts +0 -0
  83. package/dist/src/system-prompt.d.ts.map +1 -1
  84. package/dist/src/system-prompt.js +10 -3
  85. package/dist/src/system-prompt.js.map +1 -1
  86. package/dist/src/tools/memory.d.ts +0 -0
  87. package/dist/src/tools/memory.d.ts.map +0 -0
  88. package/dist/src/tools/memory.js +0 -0
  89. package/dist/src/tools/memory.js.map +0 -0
  90. package/dist/src/types.d.ts +1 -11
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/types.js +0 -0
  93. package/dist/src/types.js.map +0 -0
  94. package/dist/src/ui/App.d.ts +6 -0
  95. package/dist/src/ui/App.d.ts.map +1 -0
  96. package/dist/src/ui/App.js +164 -0
  97. package/dist/src/ui/App.js.map +1 -0
  98. package/dist/src/ui/components/Composer.d.ts +10 -0
  99. package/dist/src/ui/components/Composer.d.ts.map +1 -0
  100. package/dist/src/ui/components/Composer.js +13 -0
  101. package/dist/src/ui/components/Composer.js.map +1 -0
  102. package/dist/src/ui/components/Header.d.ts +7 -0
  103. package/dist/src/ui/components/Header.d.ts.map +1 -0
  104. package/dist/src/ui/components/Header.js +7 -0
  105. package/dist/src/ui/components/Header.js.map +1 -0
  106. package/dist/src/ui/components/Message.d.ts +12 -0
  107. package/dist/src/ui/components/Message.d.ts.map +1 -0
  108. package/dist/src/ui/components/Message.js +21 -0
  109. package/dist/src/ui/components/Message.js.map +1 -0
  110. package/dist/src/ui/components/MessageList.d.ts +9 -0
  111. package/dist/src/ui/components/MessageList.d.ts.map +1 -0
  112. package/dist/src/ui/components/MessageList.js +18 -0
  113. package/dist/src/ui/components/MessageList.js.map +1 -0
  114. package/dist/src/ui/components/Spinner.d.ts +6 -0
  115. package/dist/src/ui/components/Spinner.d.ts.map +1 -0
  116. package/dist/src/ui/components/Spinner.js +7 -0
  117. package/dist/src/ui/components/Spinner.js.map +1 -0
  118. package/dist/src/ui/components/StatusBar.d.ts +11 -0
  119. package/dist/src/ui/components/StatusBar.d.ts.map +1 -0
  120. package/dist/src/ui/components/StatusBar.js +7 -0
  121. package/dist/src/ui/components/StatusBar.js.map +1 -0
  122. package/dist/src/ui/components/index.d.ts +7 -0
  123. package/dist/src/ui/components/index.d.ts.map +1 -0
  124. package/dist/src/ui/components/index.js +7 -0
  125. package/dist/src/ui/components/index.js.map +1 -0
  126. package/dist/src/ui/conversation-manager.d.ts +10 -9
  127. package/dist/src/ui/conversation-manager.d.ts.map +1 -1
  128. package/dist/src/ui/conversation-manager.js +35 -2
  129. package/dist/src/ui/conversation-manager.js.map +1 -1
  130. package/dist/src/ui/headless-types.d.ts +85 -4
  131. package/dist/src/ui/headless-types.d.ts.map +1 -1
  132. package/dist/src/ui/headless-types.js +0 -0
  133. package/dist/src/ui/headless-types.js.map +0 -0
  134. package/dist/src/ui/headless.d.ts +14 -4
  135. package/dist/src/ui/headless.d.ts.map +1 -1
  136. package/dist/src/ui/headless.js +311 -139
  137. package/dist/src/ui/headless.js.map +1 -1
  138. package/dist/src/ui/index.d.ts +0 -0
  139. package/dist/src/ui/index.d.ts.map +0 -0
  140. package/dist/src/ui/index.js +0 -0
  141. package/dist/src/ui/index.js.map +0 -0
  142. package/dist/src/ui/stream.d.ts +0 -0
  143. package/dist/src/ui/stream.d.ts.map +1 -1
  144. package/dist/src/ui/stream.js +27 -5
  145. package/dist/src/ui/stream.js.map +1 -1
  146. package/dist/src/validation/error-formatter.d.ts +21 -0
  147. package/dist/src/validation/error-formatter.d.ts.map +1 -0
  148. package/dist/src/validation/error-formatter.js +98 -0
  149. package/dist/src/validation/error-formatter.js.map +1 -0
  150. package/dist/src/validation/index.d.ts +10 -0
  151. package/dist/src/validation/index.d.ts.map +1 -0
  152. package/dist/src/validation/index.js +10 -0
  153. package/dist/src/validation/index.js.map +1 -0
  154. package/dist/src/validation/json-validator.d.ts +25 -0
  155. package/dist/src/validation/json-validator.d.ts.map +1 -0
  156. package/dist/src/validation/json-validator.js +173 -0
  157. package/dist/src/validation/json-validator.js.map +1 -0
  158. package/dist/src/validation/schema.d.ts +353 -0
  159. package/dist/src/validation/schema.d.ts.map +1 -0
  160. package/dist/src/validation/schema.js +57 -0
  161. package/dist/src/validation/schema.js.map +1 -0
  162. package/dist/src/validation/suggestions.d.ts +25 -0
  163. package/dist/src/validation/suggestions.d.ts.map +1 -0
  164. package/dist/src/validation/suggestions.js +144 -0
  165. package/dist/src/validation/suggestions.js.map +1 -0
  166. package/dist/src/validation/types.d.ts +40 -0
  167. package/dist/src/validation/types.d.ts.map +1 -0
  168. package/dist/src/validation/types.js +5 -0
  169. package/dist/src/validation/types.js.map +1 -0
  170. package/dist/src/validation/yaml-validator.d.ts +25 -0
  171. package/dist/src/validation/yaml-validator.d.ts.map +1 -0
  172. package/dist/src/validation/yaml-validator.js +177 -0
  173. package/dist/src/validation/yaml-validator.js.map +1 -0
  174. package/dist/src/version.d.ts +0 -0
  175. package/dist/src/version.d.ts.map +0 -0
  176. package/dist/src/version.js +0 -0
  177. package/dist/src/version.js.map +0 -0
  178. package/package.json +1 -1
  179. package/.claude/skills/storefront/SKILL.md +0 -532
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-validator.js","sourceRoot":"","sources":["../../../src/validation/json-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ /**
2
+ * 配置文件 Zod Schema 定义
3
+ */
4
+ import { z } from "zod";
5
+ export declare const SkillYamlFrontmatterSchema: z.ZodObject<{
6
+ name: z.ZodString;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ version: z.ZodOptional<z.ZodString>;
9
+ "user-invocable": z.ZodOptional<z.ZodBoolean>;
10
+ "allowed-tools": z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11
+ hooks: z.ZodOptional<z.ZodEffects<z.ZodObject<{
12
+ SessionStart: z.ZodOptional<z.ZodArray<z.ZodObject<{
13
+ matcher: z.ZodOptional<z.ZodString>;
14
+ hooks: z.ZodArray<z.ZodObject<{
15
+ type: z.ZodLiteral<"command">;
16
+ command: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ type: "command";
19
+ command: string;
20
+ }, {
21
+ type: "command";
22
+ command: string;
23
+ }>, "many">;
24
+ }, "strip", z.ZodTypeAny, {
25
+ hooks: {
26
+ type: "command";
27
+ command: string;
28
+ }[];
29
+ matcher?: string | undefined;
30
+ }, {
31
+ hooks: {
32
+ type: "command";
33
+ command: string;
34
+ }[];
35
+ matcher?: string | undefined;
36
+ }>, "many">>;
37
+ PreToolUse: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
+ matcher: z.ZodOptional<z.ZodString>;
39
+ hooks: z.ZodArray<z.ZodObject<{
40
+ type: z.ZodLiteral<"command">;
41
+ command: z.ZodString;
42
+ }, "strip", z.ZodTypeAny, {
43
+ type: "command";
44
+ command: string;
45
+ }, {
46
+ type: "command";
47
+ command: string;
48
+ }>, "many">;
49
+ }, "strip", z.ZodTypeAny, {
50
+ hooks: {
51
+ type: "command";
52
+ command: string;
53
+ }[];
54
+ matcher?: string | undefined;
55
+ }, {
56
+ hooks: {
57
+ type: "command";
58
+ command: string;
59
+ }[];
60
+ matcher?: string | undefined;
61
+ }>, "many">>;
62
+ PostToolUse: z.ZodOptional<z.ZodArray<z.ZodObject<{
63
+ matcher: z.ZodOptional<z.ZodString>;
64
+ hooks: z.ZodArray<z.ZodObject<{
65
+ type: z.ZodLiteral<"command">;
66
+ command: z.ZodString;
67
+ }, "strip", z.ZodTypeAny, {
68
+ type: "command";
69
+ command: string;
70
+ }, {
71
+ type: "command";
72
+ command: string;
73
+ }>, "many">;
74
+ }, "strip", z.ZodTypeAny, {
75
+ hooks: {
76
+ type: "command";
77
+ command: string;
78
+ }[];
79
+ matcher?: string | undefined;
80
+ }, {
81
+ hooks: {
82
+ type: "command";
83
+ command: string;
84
+ }[];
85
+ matcher?: string | undefined;
86
+ }>, "many">>;
87
+ Stop: z.ZodOptional<z.ZodArray<z.ZodObject<{
88
+ matcher: z.ZodOptional<z.ZodString>;
89
+ hooks: z.ZodArray<z.ZodObject<{
90
+ type: z.ZodLiteral<"command">;
91
+ command: z.ZodString;
92
+ }, "strip", z.ZodTypeAny, {
93
+ type: "command";
94
+ command: string;
95
+ }, {
96
+ type: "command";
97
+ command: string;
98
+ }>, "many">;
99
+ }, "strip", z.ZodTypeAny, {
100
+ hooks: {
101
+ type: "command";
102
+ command: string;
103
+ }[];
104
+ matcher?: string | undefined;
105
+ }, {
106
+ hooks: {
107
+ type: "command";
108
+ command: string;
109
+ }[];
110
+ matcher?: string | undefined;
111
+ }>, "many">>;
112
+ }, "strip", z.ZodTypeAny, {
113
+ SessionStart?: {
114
+ hooks: {
115
+ type: "command";
116
+ command: string;
117
+ }[];
118
+ matcher?: string | undefined;
119
+ }[] | undefined;
120
+ PreToolUse?: {
121
+ hooks: {
122
+ type: "command";
123
+ command: string;
124
+ }[];
125
+ matcher?: string | undefined;
126
+ }[] | undefined;
127
+ PostToolUse?: {
128
+ hooks: {
129
+ type: "command";
130
+ command: string;
131
+ }[];
132
+ matcher?: string | undefined;
133
+ }[] | undefined;
134
+ Stop?: {
135
+ hooks: {
136
+ type: "command";
137
+ command: string;
138
+ }[];
139
+ matcher?: string | undefined;
140
+ }[] | undefined;
141
+ }, {
142
+ SessionStart?: {
143
+ hooks: {
144
+ type: "command";
145
+ command: string;
146
+ }[];
147
+ matcher?: string | undefined;
148
+ }[] | undefined;
149
+ PreToolUse?: {
150
+ hooks: {
151
+ type: "command";
152
+ command: string;
153
+ }[];
154
+ matcher?: string | undefined;
155
+ }[] | undefined;
156
+ PostToolUse?: {
157
+ hooks: {
158
+ type: "command";
159
+ command: string;
160
+ }[];
161
+ matcher?: string | undefined;
162
+ }[] | undefined;
163
+ Stop?: {
164
+ hooks: {
165
+ type: "command";
166
+ command: string;
167
+ }[];
168
+ matcher?: string | undefined;
169
+ }[] | undefined;
170
+ }>, {
171
+ SessionStart?: {
172
+ hooks: {
173
+ type: "command";
174
+ command: string;
175
+ }[];
176
+ matcher?: string | undefined;
177
+ }[] | undefined;
178
+ PreToolUse?: {
179
+ hooks: {
180
+ type: "command";
181
+ command: string;
182
+ }[];
183
+ matcher?: string | undefined;
184
+ }[] | undefined;
185
+ PostToolUse?: {
186
+ hooks: {
187
+ type: "command";
188
+ command: string;
189
+ }[];
190
+ matcher?: string | undefined;
191
+ }[] | undefined;
192
+ Stop?: {
193
+ hooks: {
194
+ type: "command";
195
+ command: string;
196
+ }[];
197
+ matcher?: string | undefined;
198
+ }[] | undefined;
199
+ }, {
200
+ SessionStart?: {
201
+ hooks: {
202
+ type: "command";
203
+ command: string;
204
+ }[];
205
+ matcher?: string | undefined;
206
+ }[] | undefined;
207
+ PreToolUse?: {
208
+ hooks: {
209
+ type: "command";
210
+ command: string;
211
+ }[];
212
+ matcher?: string | undefined;
213
+ }[] | undefined;
214
+ PostToolUse?: {
215
+ hooks: {
216
+ type: "command";
217
+ command: string;
218
+ }[];
219
+ matcher?: string | undefined;
220
+ }[] | undefined;
221
+ Stop?: {
222
+ hooks: {
223
+ type: "command";
224
+ command: string;
225
+ }[];
226
+ matcher?: string | undefined;
227
+ }[] | undefined;
228
+ }>>;
229
+ }, "strip", z.ZodTypeAny, {
230
+ name: string;
231
+ hooks?: {
232
+ SessionStart?: {
233
+ hooks: {
234
+ type: "command";
235
+ command: string;
236
+ }[];
237
+ matcher?: string | undefined;
238
+ }[] | undefined;
239
+ PreToolUse?: {
240
+ hooks: {
241
+ type: "command";
242
+ command: string;
243
+ }[];
244
+ matcher?: string | undefined;
245
+ }[] | undefined;
246
+ PostToolUse?: {
247
+ hooks: {
248
+ type: "command";
249
+ command: string;
250
+ }[];
251
+ matcher?: string | undefined;
252
+ }[] | undefined;
253
+ Stop?: {
254
+ hooks: {
255
+ type: "command";
256
+ command: string;
257
+ }[];
258
+ matcher?: string | undefined;
259
+ }[] | undefined;
260
+ } | undefined;
261
+ description?: string | undefined;
262
+ version?: string | undefined;
263
+ "user-invocable"?: boolean | undefined;
264
+ "allowed-tools"?: string[] | undefined;
265
+ }, {
266
+ name: string;
267
+ hooks?: {
268
+ SessionStart?: {
269
+ hooks: {
270
+ type: "command";
271
+ command: string;
272
+ }[];
273
+ matcher?: string | undefined;
274
+ }[] | undefined;
275
+ PreToolUse?: {
276
+ hooks: {
277
+ type: "command";
278
+ command: string;
279
+ }[];
280
+ matcher?: string | undefined;
281
+ }[] | undefined;
282
+ PostToolUse?: {
283
+ hooks: {
284
+ type: "command";
285
+ command: string;
286
+ }[];
287
+ matcher?: string | undefined;
288
+ }[] | undefined;
289
+ Stop?: {
290
+ hooks: {
291
+ type: "command";
292
+ command: string;
293
+ }[];
294
+ matcher?: string | undefined;
295
+ }[] | undefined;
296
+ } | undefined;
297
+ description?: string | undefined;
298
+ version?: string | undefined;
299
+ "user-invocable"?: boolean | undefined;
300
+ "allowed-tools"?: string[] | undefined;
301
+ }>;
302
+ export type SkillYamlFrontmatter = z.infer<typeof SkillYamlFrontmatterSchema>;
303
+ /**
304
+ * OPTIMA.json / settings.json Schema
305
+ */
306
+ export declare const OptimaConfigSchema: z.ZodObject<{
307
+ model: z.ZodOptional<z.ZodString>;
308
+ theme: z.ZodOptional<z.ZodEnum<["dark", "light"]>>;
309
+ ui: z.ZodOptional<z.ZodObject<{
310
+ showTokens: z.ZodOptional<z.ZodBoolean>;
311
+ showSkills: z.ZodOptional<z.ZodBoolean>;
312
+ }, "strip", z.ZodTypeAny, {
313
+ showTokens?: boolean | undefined;
314
+ showSkills?: boolean | undefined;
315
+ }, {
316
+ showTokens?: boolean | undefined;
317
+ showSkills?: boolean | undefined;
318
+ }>>;
319
+ server: z.ZodOptional<z.ZodObject<{
320
+ port: z.ZodOptional<z.ZodNumber>;
321
+ token: z.ZodOptional<z.ZodString>;
322
+ }, "strip", z.ZodTypeAny, {
323
+ port?: number | undefined;
324
+ token?: string | undefined;
325
+ }, {
326
+ port?: number | undefined;
327
+ token?: string | undefined;
328
+ }>>;
329
+ }, "strip", z.ZodTypeAny, {
330
+ model?: string | undefined;
331
+ theme?: "dark" | "light" | undefined;
332
+ ui?: {
333
+ showTokens?: boolean | undefined;
334
+ showSkills?: boolean | undefined;
335
+ } | undefined;
336
+ server?: {
337
+ port?: number | undefined;
338
+ token?: string | undefined;
339
+ } | undefined;
340
+ }, {
341
+ model?: string | undefined;
342
+ theme?: "dark" | "light" | undefined;
343
+ ui?: {
344
+ showTokens?: boolean | undefined;
345
+ showSkills?: boolean | undefined;
346
+ } | undefined;
347
+ server?: {
348
+ port?: number | undefined;
349
+ token?: string | undefined;
350
+ } | undefined;
351
+ }>;
352
+ export type OptimaConfig = z.infer<typeof OptimaConfigSchema>;
353
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/validation/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;GAEG;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * 配置文件 Zod Schema 定义
3
+ */
4
+ import { z } from "zod";
5
+ /**
6
+ * SKILL.md YAML Frontmatter Schema
7
+ */
8
+ // Hook 配置
9
+ const HookConfigSchema = z.object({
10
+ type: z.literal("command"),
11
+ command: z.string().min(1, "command 不能为空"),
12
+ });
13
+ // Skill Hook 配置(单个事件的钩子配置)
14
+ const SkillHookConfigSchema = z.object({
15
+ matcher: z.string().optional(),
16
+ hooks: z.array(HookConfigSchema).min(1, "hooks 数组至少需要一个元素"),
17
+ });
18
+ // Hooks 配置
19
+ const HooksSchema = z
20
+ .object({
21
+ SessionStart: z.array(SkillHookConfigSchema).optional(),
22
+ PreToolUse: z.array(SkillHookConfigSchema).optional(),
23
+ PostToolUse: z.array(SkillHookConfigSchema).optional(),
24
+ Stop: z.array(SkillHookConfigSchema).optional(),
25
+ })
26
+ .refine((hooks) => Object.keys(hooks).length > 0, {
27
+ message: "hooks 至少需要定义一个事件(SessionStart/PreToolUse/PostToolUse/Stop)",
28
+ });
29
+ // SKILL.md Frontmatter
30
+ export const SkillYamlFrontmatterSchema = z.object({
31
+ name: z.string().min(1, "name 字段不能为空"),
32
+ description: z.string().optional(),
33
+ version: z.string().optional(),
34
+ "user-invocable": z.boolean().optional(),
35
+ "allowed-tools": z.array(z.string()).optional(),
36
+ hooks: HooksSchema.optional(),
37
+ });
38
+ /**
39
+ * OPTIMA.json / settings.json Schema
40
+ */
41
+ export const OptimaConfigSchema = z.object({
42
+ model: z.string().optional(),
43
+ theme: z.enum(["dark", "light"]).optional(),
44
+ ui: z
45
+ .object({
46
+ showTokens: z.boolean().optional(),
47
+ showSkills: z.boolean().optional(),
48
+ })
49
+ .optional(),
50
+ server: z
51
+ .object({
52
+ port: z.number().int().min(1).max(65535).optional(),
53
+ token: z.string().optional(),
54
+ })
55
+ .optional(),
56
+ });
57
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/validation/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,UAAU;AACV,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;CAC3C,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;CAC5D,CAAC,CAAC;AAEH,WAAW;AACX,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACvD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACrD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC;KACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IAChD,OAAO,EAAE,4DAA4D;CACtE,CAAC,CAAC;AAEL,uBAAuB;AACvB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAIH;;GAEG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,EAAE,EAAE,CAAC;SACF,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 修复建议生成器
3
+ */
4
+ import type { ZodError } from "zod";
5
+ /**
6
+ * 从 Zod 错误生成修复建议
7
+ */
8
+ export declare function generateSuggestionsFromZodError(zodError: ZodError): string[];
9
+ /**
10
+ * 为 YAML 语法错误生成建议
11
+ */
12
+ export declare function generateYamlSyntaxSuggestions(errorMessage: string): string[];
13
+ /**
14
+ * 为 JSON 语法错误生成建议
15
+ */
16
+ export declare function generateJsonSyntaxSuggestions(errorMessage: string): string[];
17
+ /**
18
+ * 为 Skill 配置生成特定建议
19
+ */
20
+ export declare function generateSkillConfigSuggestions(path: string[]): string[];
21
+ /**
22
+ * 为 Optima 配置生成特定建议
23
+ */
24
+ export declare function generateOptimaConfigSuggestions(path: string[]): string[];
25
+ //# sourceMappingURL=suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../../src/validation/suggestions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAiD5E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B5E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5E;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA6BvE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAmBxE"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * 从 Zod 错误生成修复建议
3
+ */
4
+ export function generateSuggestionsFromZodError(zodError) {
5
+ const suggestions = [];
6
+ for (const issue of zodError.issues) {
7
+ switch (issue.code) {
8
+ case "invalid_type":
9
+ suggestions.push(`字段 "${issue.path.join(".")}" 的类型应该是 ${issue.expected},但实际是 ${issue.received}`);
10
+ break;
11
+ case "invalid_enum_value":
12
+ suggestions.push(`字段 "${issue.path.join(".")}" 只能是以下值之一: ${issue.options.join(", ")}`);
13
+ break;
14
+ case "too_small":
15
+ if (issue.type === "string") {
16
+ suggestions.push(`字段 "${issue.path.join(".")}" 至少需要 ${issue.minimum} 个字符`);
17
+ }
18
+ else if (issue.type === "array") {
19
+ suggestions.push(`字段 "${issue.path.join(".")}" 至少需要 ${issue.minimum} 个元素`);
20
+ }
21
+ else if (issue.type === "number") {
22
+ suggestions.push(`字段 "${issue.path.join(".")}" 的值不能小于 ${issue.minimum}`);
23
+ }
24
+ break;
25
+ case "too_big":
26
+ if (issue.type === "string") {
27
+ suggestions.push(`字段 "${issue.path.join(".")}" 最多 ${issue.maximum} 个字符`);
28
+ }
29
+ else if (issue.type === "array") {
30
+ suggestions.push(`字段 "${issue.path.join(".")}" 最多 ${issue.maximum} 个元素`);
31
+ }
32
+ else if (issue.type === "number") {
33
+ suggestions.push(`字段 "${issue.path.join(".")}" 的值不能大于 ${issue.maximum}`);
34
+ }
35
+ break;
36
+ case "invalid_literal":
37
+ suggestions.push(`字段 "${issue.path.join(".")}" 必须是 "${issue.expected}"`);
38
+ break;
39
+ case "unrecognized_keys":
40
+ suggestions.push(`未识别的字段: ${issue.keys.join(", ")}。请检查拼写是否正确`);
41
+ break;
42
+ default:
43
+ suggestions.push(issue.message);
44
+ }
45
+ }
46
+ return suggestions;
47
+ }
48
+ /**
49
+ * 为 YAML 语法错误生成建议
50
+ */
51
+ export function generateYamlSyntaxSuggestions(errorMessage) {
52
+ const suggestions = [];
53
+ if (errorMessage.includes("indent") || errorMessage.includes("缩进")) {
54
+ suggestions.push("检查 YAML 缩进是否正确(应使用 2 个空格)");
55
+ suggestions.push("确保同级元素的缩进对齐");
56
+ }
57
+ if (errorMessage.includes("unexpected") || errorMessage.includes("意外")) {
58
+ suggestions.push("检查是否有多余的冒号、逗号或引号");
59
+ suggestions.push("确保字符串包含特殊字符时使用引号");
60
+ }
61
+ if (errorMessage.includes("mapping") || errorMessage.includes("键值对")) {
62
+ suggestions.push("确保每个键后面有冒号和空格(key: value)");
63
+ suggestions.push("检查是否有重复的键");
64
+ }
65
+ if (errorMessage.includes("sequence") || errorMessage.includes("列表")) {
66
+ suggestions.push("列表项应以 '- ' 开头(破折号后有空格)");
67
+ suggestions.push("确保列表项的缩进一致");
68
+ }
69
+ // 通用建议
70
+ if (suggestions.length === 0) {
71
+ suggestions.push("检查 YAML 语法是否正确");
72
+ suggestions.push("可以使用在线 YAML 验证工具检查格式");
73
+ }
74
+ return suggestions;
75
+ }
76
+ /**
77
+ * 为 JSON 语法错误生成建议
78
+ */
79
+ export function generateJsonSyntaxSuggestions(errorMessage) {
80
+ const suggestions = [];
81
+ if (errorMessage.includes("Unexpected token") || errorMessage.includes("意外的标记")) {
82
+ suggestions.push("检查是否有多余的逗号(特别是最后一个元素后)");
83
+ suggestions.push("确保所有字符串都用双引号包裹");
84
+ suggestions.push("检查括号、方括号是否成对");
85
+ }
86
+ if (errorMessage.includes("Expected") || errorMessage.includes("期望")) {
87
+ suggestions.push("检查是否缺少逗号、冒号或引号");
88
+ suggestions.push("确保对象的键都是字符串(用双引号包裹)");
89
+ }
90
+ if (errorMessage.includes("position") || errorMessage.includes("位置")) {
91
+ suggestions.push("检查指定位置附近的语法");
92
+ }
93
+ // 通用建议
94
+ suggestions.push("可以使用 JSON 格式化工具检查格式");
95
+ suggestions.push("JSON 不支持注释,请删除所有注释");
96
+ return suggestions;
97
+ }
98
+ /**
99
+ * 为 Skill 配置生成特定建议
100
+ */
101
+ export function generateSkillConfigSuggestions(path) {
102
+ const suggestions = [];
103
+ const field = path.join(".");
104
+ if (field === "name") {
105
+ suggestions.push("name 是必需字段,用于标识 skill");
106
+ suggestions.push("name 应该使用小写字母和连字符,如 'my-skill'");
107
+ }
108
+ if (field === "description") {
109
+ suggestions.push("description 建议填写,用于说明 skill 的功能");
110
+ }
111
+ if (field.includes("hooks")) {
112
+ suggestions.push("hooks 支持的事件类型: SessionStart, PreToolUse, PostToolUse, Stop");
113
+ suggestions.push("每个事件可以包含多个钩子配置");
114
+ }
115
+ if (field.includes("hooks") && field.includes("command")) {
116
+ suggestions.push("command 应该是有效的 shell 命令");
117
+ suggestions.push("可以使用 ${CLAUDE_PLUGIN_ROOT} 引用 skill 目录");
118
+ }
119
+ if (field.includes("matcher")) {
120
+ suggestions.push("matcher 是可选的正则表达式,用于匹配特定的工具调用");
121
+ suggestions.push("如果不需要匹配,可以省略 matcher 字段");
122
+ }
123
+ return suggestions;
124
+ }
125
+ /**
126
+ * 为 Optima 配置生成特定建议
127
+ */
128
+ export function generateOptimaConfigSuggestions(path) {
129
+ const suggestions = [];
130
+ const field = path.join(".");
131
+ if (field === "model") {
132
+ suggestions.push("model 指定使用的 Claude 模型");
133
+ suggestions.push("建议使用最新的模型以获得最佳性能");
134
+ }
135
+ if (field === "theme") {
136
+ suggestions.push("theme 只能是 'dark' 或 'light'");
137
+ }
138
+ if (field.includes("server.port")) {
139
+ suggestions.push("端口号必须是 1-65535 之间的整数");
140
+ suggestions.push("确保端口未被其他程序占用");
141
+ }
142
+ return suggestions;
143
+ }
144
+ //# sourceMappingURL=suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../../src/validation/suggestions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 配置验证模块类型定义
3
+ */
4
+ export interface ValidationError {
5
+ /** 错误类型 */
6
+ type: "syntax" | "schema" | "semantic";
7
+ /** 文件路径 */
8
+ filePath: string;
9
+ /** 错误消息 */
10
+ message: string;
11
+ /** 详细描述 */
12
+ details?: string;
13
+ /** 错误位置(行号) */
14
+ line?: number;
15
+ /** 错误位置(列号) */
16
+ column?: number;
17
+ /** 问题字段路径 */
18
+ path?: string[];
19
+ /** 修复建议 */
20
+ suggestions: string[];
21
+ /** 相关文档链接 */
22
+ docUrl?: string;
23
+ /** 示例配置路径 */
24
+ examplePath?: string;
25
+ }
26
+ export interface ValidationResult {
27
+ /** 是否验证成功 */
28
+ valid: boolean;
29
+ /** 验证错误列表 */
30
+ errors: ValidationError[];
31
+ /** 警告列表 */
32
+ warnings?: ValidationError[];
33
+ }
34
+ export interface Validator<T> {
35
+ /** 验证配置 */
36
+ validate(content: string, filePath: string): ValidationResult;
37
+ /** 解析配置(验证成功后) */
38
+ parse(content: string): T | null;
39
+ }
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/validation/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IACvC,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW;IACX,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,KAAK,EAAE,OAAO,CAAC;IACf,aAAa;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW;IACX,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,WAAW;IACX,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,kBAAkB;IAClB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;CAClC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 配置验证模块类型定义
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/validation/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}