matimo 0.1.0-alpha.9 → 0.1.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/package.json +10 -8
- package/packages/cli/dist/bin.d.ts +3 -0
- package/packages/cli/dist/bin.d.ts.map +1 -0
- package/packages/cli/dist/bin.js +50 -0
- package/packages/cli/dist/bin.js.map +1 -0
- package/packages/cli/dist/cli.d.ts.map +1 -1
- package/packages/cli/dist/cli.js +64 -2
- package/packages/cli/dist/cli.js.map +1 -1
- package/packages/cli/dist/commands/doctor.d.ts +2 -0
- package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
- package/packages/cli/dist/commands/doctor.js +174 -0
- package/packages/cli/dist/commands/doctor.js.map +1 -0
- package/packages/cli/dist/commands/mcp-setup.d.ts +9 -0
- package/packages/cli/dist/commands/mcp-setup.d.ts.map +1 -0
- package/packages/cli/dist/commands/mcp-setup.js +106 -0
- package/packages/cli/dist/commands/mcp-setup.js.map +1 -0
- package/packages/cli/dist/commands/mcp.d.ts +17 -0
- package/packages/cli/dist/commands/mcp.d.ts.map +1 -0
- package/packages/cli/dist/commands/mcp.js +228 -0
- package/packages/cli/dist/commands/mcp.js.map +1 -0
- package/packages/cli/dist/commands/review.d.ts +10 -0
- package/packages/cli/dist/commands/review.d.ts.map +1 -0
- package/packages/cli/dist/commands/review.js +176 -0
- package/packages/cli/dist/commands/review.js.map +1 -0
- package/packages/core/dist/approval/approval-handler.d.ts +5 -1
- package/packages/core/dist/approval/approval-handler.d.ts.map +1 -1
- package/packages/core/dist/approval/approval-handler.js +7 -1
- package/packages/core/dist/approval/approval-handler.js.map +1 -1
- package/packages/core/dist/auth/oauth2-handler.d.ts +2 -2
- package/packages/core/dist/auth/oauth2-handler.d.ts.map +1 -1
- package/packages/core/dist/auth/oauth2-handler.js +2 -2
- package/packages/core/dist/auth/oauth2-handler.js.map +1 -1
- package/packages/core/dist/auth/oauth2-provider-loader.d.ts +2 -2
- package/packages/core/dist/auth/oauth2-provider-loader.d.ts.map +1 -1
- package/packages/core/dist/auth/oauth2-provider-loader.js +2 -2
- package/packages/core/dist/auth/oauth2-provider-loader.js.map +1 -1
- package/packages/core/dist/core/schema.d.ts +42 -11
- package/packages/core/dist/core/schema.d.ts.map +1 -1
- package/packages/core/dist/core/schema.js +42 -6
- package/packages/core/dist/core/schema.js.map +1 -1
- package/packages/core/dist/core/skill-content-parser.d.ts +91 -0
- package/packages/core/dist/core/skill-content-parser.d.ts.map +1 -0
- package/packages/core/dist/core/skill-content-parser.js +248 -0
- package/packages/core/dist/core/skill-content-parser.js.map +1 -0
- package/packages/core/dist/core/skill-loader.d.ts +46 -0
- package/packages/core/dist/core/skill-loader.d.ts.map +1 -0
- package/packages/core/dist/core/skill-loader.js +311 -0
- package/packages/core/dist/core/skill-loader.js.map +1 -0
- package/packages/core/dist/core/skill-registry.d.ts +131 -0
- package/packages/core/dist/core/skill-registry.d.ts.map +1 -0
- package/packages/core/dist/core/skill-registry.js +316 -0
- package/packages/core/dist/core/skill-registry.js.map +1 -0
- package/packages/core/dist/core/tfidf-embedding.d.ts +45 -0
- package/packages/core/dist/core/tfidf-embedding.d.ts.map +1 -0
- package/packages/core/dist/core/tfidf-embedding.js +199 -0
- package/packages/core/dist/core/tfidf-embedding.js.map +1 -0
- package/packages/core/dist/core/tool-loader.d.ts +4 -2
- package/packages/core/dist/core/tool-loader.d.ts.map +1 -1
- package/packages/core/dist/core/tool-loader.js +35 -12
- package/packages/core/dist/core/tool-loader.js.map +1 -1
- package/packages/core/dist/core/tool-registry.d.ts +1 -1
- package/packages/core/dist/core/tool-registry.d.ts.map +1 -1
- package/packages/core/dist/core/tool-registry.js +1 -1
- package/packages/core/dist/core/tool-registry.js.map +1 -1
- package/packages/core/dist/core/types.d.ts +204 -7
- package/packages/core/dist/core/types.d.ts.map +1 -1
- package/packages/core/dist/decorators/index.d.ts +1 -1
- package/packages/core/dist/decorators/index.d.ts.map +1 -1
- package/packages/core/dist/decorators/index.js +1 -1
- package/packages/core/dist/decorators/index.js.map +1 -1
- package/packages/core/dist/decorators/tool-decorator.js +1 -1
- package/packages/core/dist/decorators/tool-decorator.js.map +1 -1
- package/packages/core/dist/encodings/parameter-encoding.d.ts +1 -1
- package/packages/core/dist/encodings/parameter-encoding.d.ts.map +1 -1
- package/packages/core/dist/encodings/parameter-encoding.js +10 -5
- package/packages/core/dist/encodings/parameter-encoding.js.map +1 -1
- package/packages/core/dist/errors/matimo-error.d.ts +11 -2
- package/packages/core/dist/errors/matimo-error.d.ts.map +1 -1
- package/packages/core/dist/errors/matimo-error.js +25 -1
- package/packages/core/dist/errors/matimo-error.js.map +1 -1
- package/packages/core/dist/executors/command-executor.d.ts +10 -3
- package/packages/core/dist/executors/command-executor.d.ts.map +1 -1
- package/packages/core/dist/executors/command-executor.js +30 -6
- package/packages/core/dist/executors/command-executor.js.map +1 -1
- package/packages/core/dist/executors/function-executor.d.ts +11 -4
- package/packages/core/dist/executors/function-executor.d.ts.map +1 -1
- package/packages/core/dist/executors/function-executor.js +46 -26
- package/packages/core/dist/executors/function-executor.js.map +1 -1
- package/packages/core/dist/executors/http-executor.d.ts +80 -5
- package/packages/core/dist/executors/http-executor.d.ts.map +1 -1
- package/packages/core/dist/executors/http-executor.js +233 -29
- package/packages/core/dist/executors/http-executor.js.map +1 -1
- package/packages/core/dist/index.d.ts +45 -23
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +34 -16
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/integrations/langchain.d.ts +57 -2
- package/packages/core/dist/integrations/langchain.d.ts.map +1 -1
- package/packages/core/dist/integrations/langchain.js +71 -4
- package/packages/core/dist/integrations/langchain.js.map +1 -1
- package/packages/core/dist/logging/winston-logger.d.ts.map +1 -1
- package/packages/core/dist/logging/winston-logger.js +9 -1
- package/packages/core/dist/logging/winston-logger.js.map +1 -1
- package/packages/core/dist/matimo-instance.d.ts +231 -19
- package/packages/core/dist/matimo-instance.d.ts.map +1 -1
- package/packages/core/dist/matimo-instance.js +747 -48
- package/packages/core/dist/matimo-instance.js.map +1 -1
- package/packages/core/dist/mcp/index.d.ts +18 -0
- package/packages/core/dist/mcp/index.d.ts.map +1 -0
- package/packages/core/dist/mcp/index.js +24 -0
- package/packages/core/dist/mcp/index.js.map +1 -0
- package/packages/core/dist/mcp/mcp-server.d.ts +141 -0
- package/packages/core/dist/mcp/mcp-server.d.ts.map +1 -0
- package/packages/core/dist/mcp/mcp-server.js +754 -0
- package/packages/core/dist/mcp/mcp-server.js.map +1 -0
- package/packages/core/dist/mcp/secrets/aws-resolver.d.ts +41 -0
- package/packages/core/dist/mcp/secrets/aws-resolver.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/aws-resolver.js +141 -0
- package/packages/core/dist/mcp/secrets/aws-resolver.js.map +1 -0
- package/packages/core/dist/mcp/secrets/dotenv-resolver.d.ts +23 -0
- package/packages/core/dist/mcp/secrets/dotenv-resolver.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/dotenv-resolver.js +94 -0
- package/packages/core/dist/mcp/secrets/dotenv-resolver.js.map +1 -0
- package/packages/core/dist/mcp/secrets/env-resolver.d.ts +14 -0
- package/packages/core/dist/mcp/secrets/env-resolver.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/env-resolver.js +27 -0
- package/packages/core/dist/mcp/secrets/env-resolver.js.map +1 -0
- package/packages/core/dist/mcp/secrets/index.d.ts +14 -0
- package/packages/core/dist/mcp/secrets/index.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/index.js +13 -0
- package/packages/core/dist/mcp/secrets/index.js.map +1 -0
- package/packages/core/dist/mcp/secrets/resolver-chain.d.ts +34 -0
- package/packages/core/dist/mcp/secrets/resolver-chain.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/resolver-chain.js +141 -0
- package/packages/core/dist/mcp/secrets/resolver-chain.js.map +1 -0
- package/packages/core/dist/mcp/secrets/types.d.ts +73 -0
- package/packages/core/dist/mcp/secrets/types.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/types.js +8 -0
- package/packages/core/dist/mcp/secrets/types.js.map +1 -0
- package/packages/core/dist/mcp/secrets/vault-resolver.d.ts +43 -0
- package/packages/core/dist/mcp/secrets/vault-resolver.d.ts.map +1 -0
- package/packages/core/dist/mcp/secrets/vault-resolver.js +127 -0
- package/packages/core/dist/mcp/secrets/vault-resolver.js.map +1 -0
- package/packages/core/dist/mcp/tool-converter.d.ts +40 -0
- package/packages/core/dist/mcp/tool-converter.d.ts.map +1 -0
- package/packages/core/dist/mcp/tool-converter.js +185 -0
- package/packages/core/dist/mcp/tool-converter.js.map +1 -0
- package/packages/core/dist/policy/approval-manifest.d.ts +76 -0
- package/packages/core/dist/policy/approval-manifest.d.ts.map +1 -0
- package/packages/core/dist/policy/approval-manifest.js +197 -0
- package/packages/core/dist/policy/approval-manifest.js.map +1 -0
- package/packages/core/dist/policy/content-validator.d.ts +19 -0
- package/packages/core/dist/policy/content-validator.d.ts.map +1 -0
- package/packages/core/dist/policy/content-validator.js +196 -0
- package/packages/core/dist/policy/content-validator.js.map +1 -0
- package/packages/core/dist/policy/default-policy.d.ts +46 -0
- package/packages/core/dist/policy/default-policy.d.ts.map +1 -0
- package/packages/core/dist/policy/default-policy.js +241 -0
- package/packages/core/dist/policy/default-policy.js.map +1 -0
- package/packages/core/dist/policy/events.d.ts +71 -0
- package/packages/core/dist/policy/events.d.ts.map +1 -0
- package/packages/core/dist/policy/events.js +8 -0
- package/packages/core/dist/policy/events.js.map +1 -0
- package/packages/core/dist/policy/index.d.ts +13 -0
- package/packages/core/dist/policy/index.d.ts.map +1 -0
- package/packages/core/dist/policy/index.js +9 -0
- package/packages/core/dist/policy/index.js.map +1 -0
- package/packages/core/dist/policy/integrity-tracker.d.ts +62 -0
- package/packages/core/dist/policy/integrity-tracker.d.ts.map +1 -0
- package/packages/core/dist/policy/integrity-tracker.js +79 -0
- package/packages/core/dist/policy/integrity-tracker.js.map +1 -0
- package/packages/core/dist/policy/policy-loader.d.ts +58 -0
- package/packages/core/dist/policy/policy-loader.d.ts.map +1 -0
- package/packages/core/dist/policy/policy-loader.js +156 -0
- package/packages/core/dist/policy/policy-loader.js.map +1 -0
- package/packages/core/dist/policy/risk-classifier.d.ts +18 -0
- package/packages/core/dist/policy/risk-classifier.d.ts.map +1 -0
- package/packages/core/dist/policy/risk-classifier.js +47 -0
- package/packages/core/dist/policy/risk-classifier.js.map +1 -0
- package/packages/core/dist/policy/types.d.ts +131 -0
- package/packages/core/dist/policy/types.d.ts.map +1 -0
- package/packages/core/dist/policy/types.js +8 -0
- package/packages/core/dist/policy/types.js.map +1 -0
- package/LICENSE +0 -21
- package/README.md +0 -243
- package/packages/cli/bin/matimo.cjs +0 -26
|
@@ -20,11 +20,12 @@ export declare const ParameterSchema: z.ZodObject<{
|
|
|
20
20
|
export type Parameter = z.infer<typeof ParameterSchema>;
|
|
21
21
|
export declare const AuthConfigSchema: z.ZodObject<{
|
|
22
22
|
type: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
custom: "custom";
|
|
24
|
+
none: "none";
|
|
23
25
|
api_key: "api_key";
|
|
24
|
-
oauth2: "oauth2";
|
|
25
26
|
basic: "basic";
|
|
26
27
|
bearer: "bearer";
|
|
27
|
-
|
|
28
|
+
oauth2: "oauth2";
|
|
28
29
|
}>>;
|
|
29
30
|
location: z.ZodOptional<z.ZodEnum<{
|
|
30
31
|
body: "body";
|
|
@@ -34,6 +35,8 @@ export declare const AuthConfigSchema: z.ZodObject<{
|
|
|
34
35
|
name: z.ZodOptional<z.ZodString>;
|
|
35
36
|
provider: z.ZodOptional<z.ZodString>;
|
|
36
37
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
38
|
+
username_env: z.ZodOptional<z.ZodString>;
|
|
39
|
+
password_env: z.ZodOptional<z.ZodString>;
|
|
37
40
|
}, z.core.$strip>;
|
|
38
41
|
export type AuthConfig = z.infer<typeof AuthConfigSchema>;
|
|
39
42
|
export declare const ExecutionConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -70,8 +73,14 @@ export declare const ExecutionConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject
|
|
|
70
73
|
}, z.core.$strip>], "type">;
|
|
71
74
|
export type ExecutionConfig = z.infer<typeof ExecutionConfigSchema>;
|
|
72
75
|
export declare const OutputSchemaSchema: z.ZodObject<{
|
|
73
|
-
type: z.ZodOptional<z.
|
|
74
|
-
|
|
76
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
77
|
+
string: "string";
|
|
78
|
+
number: "number";
|
|
79
|
+
boolean: "boolean";
|
|
80
|
+
object: "object";
|
|
81
|
+
array: "array";
|
|
82
|
+
}>, z.ZodString]>>;
|
|
83
|
+
properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>;
|
|
75
84
|
required: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
76
85
|
description: z.ZodOptional<z.ZodString>;
|
|
77
86
|
}, z.core.$strip>;
|
|
@@ -79,8 +88,9 @@ export type OutputSchema = z.infer<typeof OutputSchemaSchema>;
|
|
|
79
88
|
export declare const ErrorHandlingSchema: z.ZodObject<{
|
|
80
89
|
retry: z.ZodOptional<z.ZodNumber>;
|
|
81
90
|
backoff_type: z.ZodOptional<z.ZodEnum<{
|
|
82
|
-
|
|
91
|
+
fixed: "fixed";
|
|
83
92
|
linear: "linear";
|
|
93
|
+
exponential: "exponential";
|
|
84
94
|
}>>;
|
|
85
95
|
initial_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
86
96
|
max_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
@@ -145,11 +155,12 @@ export declare const ToolDefinitionSchema: z.ZodObject<{
|
|
|
145
155
|
}, z.core.$strip>], "type">;
|
|
146
156
|
authentication: z.ZodOptional<z.ZodObject<{
|
|
147
157
|
type: z.ZodOptional<z.ZodEnum<{
|
|
158
|
+
custom: "custom";
|
|
159
|
+
none: "none";
|
|
148
160
|
api_key: "api_key";
|
|
149
|
-
oauth2: "oauth2";
|
|
150
161
|
basic: "basic";
|
|
151
162
|
bearer: "bearer";
|
|
152
|
-
|
|
163
|
+
oauth2: "oauth2";
|
|
153
164
|
}>>;
|
|
154
165
|
location: z.ZodOptional<z.ZodEnum<{
|
|
155
166
|
body: "body";
|
|
@@ -159,18 +170,27 @@ export declare const ToolDefinitionSchema: z.ZodObject<{
|
|
|
159
170
|
name: z.ZodOptional<z.ZodString>;
|
|
160
171
|
provider: z.ZodOptional<z.ZodString>;
|
|
161
172
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
173
|
+
username_env: z.ZodOptional<z.ZodString>;
|
|
174
|
+
password_env: z.ZodOptional<z.ZodString>;
|
|
162
175
|
}, z.core.$strip>>;
|
|
163
176
|
output_schema: z.ZodOptional<z.ZodObject<{
|
|
164
|
-
type: z.ZodOptional<z.
|
|
165
|
-
|
|
177
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
178
|
+
string: "string";
|
|
179
|
+
number: "number";
|
|
180
|
+
boolean: "boolean";
|
|
181
|
+
object: "object";
|
|
182
|
+
array: "array";
|
|
183
|
+
}>, z.ZodString]>>;
|
|
184
|
+
properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>;
|
|
166
185
|
required: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
167
186
|
description: z.ZodOptional<z.ZodString>;
|
|
168
187
|
}, z.core.$strip>>;
|
|
169
188
|
error_handling: z.ZodOptional<z.ZodObject<{
|
|
170
189
|
retry: z.ZodOptional<z.ZodNumber>;
|
|
171
190
|
backoff_type: z.ZodOptional<z.ZodEnum<{
|
|
172
|
-
|
|
191
|
+
fixed: "fixed";
|
|
173
192
|
linear: "linear";
|
|
193
|
+
exponential: "exponential";
|
|
174
194
|
}>>;
|
|
175
195
|
initial_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
176
196
|
max_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
@@ -182,6 +202,12 @@ export declare const ToolDefinitionSchema: z.ZodObject<{
|
|
|
182
202
|
quota_per_hour: z.ZodOptional<z.ZodNumber>;
|
|
183
203
|
}, z.core.$strip>>;
|
|
184
204
|
requires_approval: z.ZodOptional<z.ZodBoolean>;
|
|
205
|
+
risk: z.ZodOptional<z.ZodEnum<{
|
|
206
|
+
low: "low";
|
|
207
|
+
medium: "medium";
|
|
208
|
+
high: "high";
|
|
209
|
+
critical: "critical";
|
|
210
|
+
}>>;
|
|
185
211
|
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
186
212
|
name: z.ZodString;
|
|
187
213
|
params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
@@ -190,6 +216,11 @@ export declare const ToolDefinitionSchema: z.ZodObject<{
|
|
|
190
216
|
deprecated: z.ZodOptional<z.ZodBoolean>;
|
|
191
217
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
192
218
|
deprecation_message: z.ZodOptional<z.ZodString>;
|
|
219
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
220
|
+
deprecated: "deprecated";
|
|
221
|
+
draft: "draft";
|
|
222
|
+
approved: "approved";
|
|
223
|
+
}>>;
|
|
193
224
|
}, z.core.$strip>;
|
|
194
225
|
export type ToolDefinition = z.infer<typeof ToolDefinitionSchema> & {
|
|
195
226
|
/**
|
|
@@ -233,7 +264,7 @@ export type ProviderDefinition = z.infer<typeof ProviderDefinitionSchema>;
|
|
|
233
264
|
*
|
|
234
265
|
* @example
|
|
235
266
|
* ```typescript
|
|
236
|
-
* import { getGlobalMatimoLogger } from '../logging';
|
|
267
|
+
* import { getGlobalMatimoLogger } from '../logging.js';
|
|
237
268
|
*
|
|
238
269
|
* try {
|
|
239
270
|
* const tool = validateToolDefinition(parsedYAML);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAGxD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAGxD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iBAkB3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiChC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAwBpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAU7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,mBAAmB;;;;;;;;;iBAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0B/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAAG;IAClE;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAKF,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;iBAanC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAkBpE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CAsBhF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { MatimoError, ErrorCode } from '../errors/matimo-error';
|
|
2
|
+
import { MatimoError, ErrorCode } from '../errors/matimo-error.js';
|
|
3
3
|
/**
|
|
4
4
|
* Core Zod validation schemas for all Matimo tool properties.
|
|
5
5
|
* These schemas ensure YAML tools conform to the spec on load.
|
|
@@ -15,11 +15,23 @@ export const ParameterSchema = z.object({
|
|
|
15
15
|
});
|
|
16
16
|
// Authentication configuration
|
|
17
17
|
export const AuthConfigSchema = z.object({
|
|
18
|
-
type: z.enum(['api_key', 'basic', 'bearer', 'oauth2', 'custom']).optional(),
|
|
18
|
+
type: z.enum(['none', 'api_key', 'basic', 'bearer', 'oauth2', 'custom']).optional(),
|
|
19
19
|
location: z.enum(['header', 'query', 'body']).optional(),
|
|
20
20
|
name: z.string().optional(),
|
|
21
21
|
provider: z.string().optional(),
|
|
22
22
|
required: z.boolean().optional(),
|
|
23
|
+
/**
|
|
24
|
+
* For type: basic — name of the environment variable holding the HTTP Basic Auth username.
|
|
25
|
+
* HttpExecutor will read this env var and the password_env var, base64-encode them as
|
|
26
|
+
* "username:password", and inject `Authorization: Basic <encoded>` automatically.
|
|
27
|
+
* This eliminates the need for developers to pre-compute a base64 credential string.
|
|
28
|
+
*/
|
|
29
|
+
username_env: z.string().optional(),
|
|
30
|
+
/**
|
|
31
|
+
* For type: basic — name of the environment variable holding the HTTP Basic Auth password.
|
|
32
|
+
* Used together with username_env to build the Authorization header automatically.
|
|
33
|
+
*/
|
|
34
|
+
password_env: z.string().optional(),
|
|
23
35
|
});
|
|
24
36
|
// Execution configuration (command, HTTP, or function)
|
|
25
37
|
export const ExecutionConfigSchema = z.discriminatedUnion('type', [
|
|
@@ -55,16 +67,38 @@ export const ExecutionConfigSchema = z.discriminatedUnion('type', [
|
|
|
55
67
|
}),
|
|
56
68
|
]);
|
|
57
69
|
// Output schema for validation
|
|
70
|
+
// Aligned with TypeScript interface: type should be one of the known types (or unknown string for extensibility)
|
|
71
|
+
// Recursive property schema — validates that each property value in output_schema.properties
|
|
72
|
+
// is a valid schema object (not a raw primitive).
|
|
73
|
+
const OutputPropertySchema = z.lazy(() => z.object({
|
|
74
|
+
type: z
|
|
75
|
+
.union([
|
|
76
|
+
z.enum(['string', 'number', 'integer', 'boolean', 'array', 'object', 'null']),
|
|
77
|
+
z.string(),
|
|
78
|
+
z.array(z.string()), // Allow nullable arrays: [string, "null"]
|
|
79
|
+
])
|
|
80
|
+
.optional(),
|
|
81
|
+
description: z.string().optional(),
|
|
82
|
+
properties: z.record(z.string(), OutputPropertySchema).optional(),
|
|
83
|
+
items: OutputPropertySchema.optional(),
|
|
84
|
+
required: z.array(z.string()).optional(),
|
|
85
|
+
enum: z.array(z.unknown()).optional(),
|
|
86
|
+
}));
|
|
58
87
|
export const OutputSchemaSchema = z.object({
|
|
59
|
-
type: z
|
|
60
|
-
|
|
88
|
+
type: z
|
|
89
|
+
.union([
|
|
90
|
+
z.enum(['string', 'number', 'boolean', 'array', 'object']),
|
|
91
|
+
z.string(), // Allow other custom types for extensibility
|
|
92
|
+
])
|
|
93
|
+
.optional(),
|
|
94
|
+
properties: z.record(z.string(), OutputPropertySchema).optional(),
|
|
61
95
|
required: z.array(z.string()).optional(),
|
|
62
96
|
description: z.string().optional(),
|
|
63
97
|
});
|
|
64
98
|
// Error handling configuration
|
|
65
99
|
export const ErrorHandlingSchema = z.object({
|
|
66
100
|
retry: z.number().optional(),
|
|
67
|
-
backoff_type: z.enum(['linear', 'exponential']).optional(),
|
|
101
|
+
backoff_type: z.enum(['linear', 'exponential', 'fixed']).optional(),
|
|
68
102
|
initial_delay_ms: z.number().optional(),
|
|
69
103
|
max_delay_ms: z.number().optional(),
|
|
70
104
|
});
|
|
@@ -87,6 +121,7 @@ export const ToolDefinitionSchema = z.object({
|
|
|
87
121
|
error_handling: ErrorHandlingSchema.optional(),
|
|
88
122
|
rate_limiting: RateLimitingSchema.optional(),
|
|
89
123
|
requires_approval: z.boolean().optional(),
|
|
124
|
+
risk: z.enum(['low', 'medium', 'high', 'critical']).optional(),
|
|
90
125
|
examples: z
|
|
91
126
|
.array(z.object({
|
|
92
127
|
name: z.string(),
|
|
@@ -97,6 +132,7 @@ export const ToolDefinitionSchema = z.object({
|
|
|
97
132
|
deprecated: z.boolean().optional(),
|
|
98
133
|
tags: z.array(z.string()).optional(),
|
|
99
134
|
deprecation_message: z.string().optional(),
|
|
135
|
+
status: z.enum(['draft', 'approved', 'deprecated']).optional(),
|
|
100
136
|
// _definitionPath: z.string().optional(), // Internal use for tracking source file path
|
|
101
137
|
});
|
|
102
138
|
// export type ToolDefinition = z.infer<typeof ToolDefinitionSchema>;
|
|
@@ -131,7 +167,7 @@ export const ProviderDefinitionSchema = z.object({
|
|
|
131
167
|
*
|
|
132
168
|
* @example
|
|
133
169
|
* ```typescript
|
|
134
|
-
* import { getGlobalMatimoLogger } from '../logging';
|
|
170
|
+
* import { getGlobalMatimoLogger } from '../logging.js';
|
|
135
171
|
*
|
|
136
172
|
* try {
|
|
137
173
|
* const tool = validateToolDefinition(parsedYAML);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Content Parser — Markdown AST-based section chunking
|
|
3
|
+
*
|
|
4
|
+
* Breaks skill bodies into structured sections so agents load only the parts
|
|
5
|
+
* they need instead of dumping the entire SKILL.md into context.
|
|
6
|
+
*
|
|
7
|
+
* Uses lightweight heading-based parsing (no external Markdown AST library
|
|
8
|
+
* needed) to produce a tree of sections with token-count estimates.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A single section of a skill body, parsed from Markdown headings.
|
|
12
|
+
*/
|
|
13
|
+
export interface SkillSection {
|
|
14
|
+
/** Heading text (e.g., "Error Handling") */
|
|
15
|
+
heading: string;
|
|
16
|
+
/** Heading level (1-6) */
|
|
17
|
+
level: number;
|
|
18
|
+
/** Raw Markdown content under this heading (excluding sub-headings) */
|
|
19
|
+
content: string;
|
|
20
|
+
/** Approximate token count (words ÷ 0.75 — conservative estimate) */
|
|
21
|
+
tokenEstimate: number;
|
|
22
|
+
/** Nested sub-sections */
|
|
23
|
+
children: SkillSection[];
|
|
24
|
+
/** Dot-path for addressing (e.g., "Error Handling.Rate Limits") */
|
|
25
|
+
path: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Result of parsing a skill body into sections.
|
|
29
|
+
*/
|
|
30
|
+
export interface ParsedSkillContent {
|
|
31
|
+
/** Top-level intro content before any heading */
|
|
32
|
+
preamble: string;
|
|
33
|
+
/** Token estimate for preamble */
|
|
34
|
+
preambleTokens: number;
|
|
35
|
+
/** All top-level sections (with nested children) */
|
|
36
|
+
sections: SkillSection[];
|
|
37
|
+
/** Total token estimate for the entire body */
|
|
38
|
+
totalTokens: number;
|
|
39
|
+
/** Flat index: heading path → section reference (for fast lookup) */
|
|
40
|
+
index: Map<string, SkillSection>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for retrieving skill content with selective loading.
|
|
44
|
+
*/
|
|
45
|
+
export interface SkillContentOptions {
|
|
46
|
+
/** Only return sections matching these heading paths (case-insensitive partial match) */
|
|
47
|
+
sections?: string[];
|
|
48
|
+
/** Maximum total tokens to return (truncates from the end) */
|
|
49
|
+
maxTokens?: number;
|
|
50
|
+
/** Include the preamble (default: true) */
|
|
51
|
+
includePreamble?: boolean;
|
|
52
|
+
/** Depth limit for section inclusion (1 = top-level only, 2 = include children, etc.) */
|
|
53
|
+
maxDepth?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parse a Markdown skill body into a tree of sections.
|
|
57
|
+
*
|
|
58
|
+
* This is a lightweight parser that splits on ATX headings (lines starting
|
|
59
|
+
* with #). It does NOT handle:
|
|
60
|
+
* - Setext headings (underline style)
|
|
61
|
+
* - Headings inside code blocks (these are treated as content)
|
|
62
|
+
*
|
|
63
|
+
* For SKILL.md files (which follow a consistent format), this is sufficient.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseSkillSections(body: string): ParsedSkillContent;
|
|
66
|
+
/**
|
|
67
|
+
* Selectively extract content from a parsed skill body.
|
|
68
|
+
*
|
|
69
|
+
* This is the key function for context management — instead of dumping the
|
|
70
|
+
* entire SKILL.md into the LLM's context window, agents call this to get
|
|
71
|
+
* only the sections they need.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Get only the error handling section
|
|
75
|
+
* extractSkillContent(parsed, { sections: ['Error Handling'] })
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* // Get top-level overview only (no sub-sections), max 500 tokens
|
|
79
|
+
* extractSkillContent(parsed, { maxDepth: 1, maxTokens: 500 })
|
|
80
|
+
*/
|
|
81
|
+
export declare function extractSkillContent(parsed: ParsedSkillContent, options?: SkillContentOptions): string;
|
|
82
|
+
/**
|
|
83
|
+
* Get a flat list of all section headings with their token costs.
|
|
84
|
+
* Useful for agents to decide which sections to load.
|
|
85
|
+
*/
|
|
86
|
+
export declare function listSkillSections(parsed: ParsedSkillContent): Array<{
|
|
87
|
+
path: string;
|
|
88
|
+
level: number;
|
|
89
|
+
tokenEstimate: number;
|
|
90
|
+
}>;
|
|
91
|
+
//# sourceMappingURL=skill-content-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-content-parser.d.ts","sourceRoot":"","sources":["../../src/core/skill-content-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkCD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CA6GnE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,mBAAwB,GAChC,MAAM,CA4ER;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,GACzB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB/D"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Content Parser — Markdown AST-based section chunking
|
|
3
|
+
*
|
|
4
|
+
* Breaks skill bodies into structured sections so agents load only the parts
|
|
5
|
+
* they need instead of dumping the entire SKILL.md into context.
|
|
6
|
+
*
|
|
7
|
+
* Uses lightweight heading-based parsing (no external Markdown AST library
|
|
8
|
+
* needed) to produce a tree of sections with token-count estimates.
|
|
9
|
+
*/
|
|
10
|
+
// ─── Helper: Check if line is a Markdown heading using safe string operations ─────────
|
|
11
|
+
// Avoids regex to prevent ReDoS on malicious input with many spaces
|
|
12
|
+
function parseHeading(line) {
|
|
13
|
+
if (!line.startsWith('#'))
|
|
14
|
+
return null;
|
|
15
|
+
let level = 0;
|
|
16
|
+
for (let i = 0; i < Math.min(6, line.length); i++) {
|
|
17
|
+
if (line[i] === '#')
|
|
18
|
+
level++;
|
|
19
|
+
else
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
if (level === 0 || level > 6)
|
|
23
|
+
return null;
|
|
24
|
+
// Check that after the hashes, there's whitespace
|
|
25
|
+
if (level >= line.length || !/\s/.test(line[level]))
|
|
26
|
+
return null;
|
|
27
|
+
// Extract heading text after the hashes and skip leading whitespace
|
|
28
|
+
const heading = line.substring(level).trimStart();
|
|
29
|
+
return { level, heading };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Estimate token count from text.
|
|
33
|
+
* Rough heuristic: 1 token ≈ 0.75 words for English text.
|
|
34
|
+
* Conservative to avoid under-counting.
|
|
35
|
+
*/
|
|
36
|
+
function estimateTokens(text) {
|
|
37
|
+
if (!text)
|
|
38
|
+
return 0;
|
|
39
|
+
const wordCount = text.split(/\s+/).filter(Boolean).length;
|
|
40
|
+
return Math.ceil(wordCount / 0.75);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse a Markdown skill body into a tree of sections.
|
|
44
|
+
*
|
|
45
|
+
* This is a lightweight parser that splits on ATX headings (lines starting
|
|
46
|
+
* with #). It does NOT handle:
|
|
47
|
+
* - Setext headings (underline style)
|
|
48
|
+
* - Headings inside code blocks (these are treated as content)
|
|
49
|
+
*
|
|
50
|
+
* For SKILL.md files (which follow a consistent format), this is sufficient.
|
|
51
|
+
*/
|
|
52
|
+
export function parseSkillSections(body) {
|
|
53
|
+
if (!body || body.trim().length === 0) {
|
|
54
|
+
return {
|
|
55
|
+
preamble: '',
|
|
56
|
+
preambleTokens: 0,
|
|
57
|
+
sections: [],
|
|
58
|
+
totalTokens: 0,
|
|
59
|
+
index: new Map(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const lines = body.split('\n');
|
|
63
|
+
const index = new Map();
|
|
64
|
+
const segments = [];
|
|
65
|
+
let currentSegment = null;
|
|
66
|
+
const preambleLines = [];
|
|
67
|
+
let inCodeBlock = false;
|
|
68
|
+
for (const line of lines) {
|
|
69
|
+
// Track fenced code blocks to avoid treating # inside them as headings
|
|
70
|
+
if (line.trimStart().startsWith('```')) {
|
|
71
|
+
inCodeBlock = !inCodeBlock;
|
|
72
|
+
}
|
|
73
|
+
if (!inCodeBlock) {
|
|
74
|
+
const headingMatch = parseHeading(line);
|
|
75
|
+
if (headingMatch) {
|
|
76
|
+
// Flush previous segment
|
|
77
|
+
if (currentSegment) {
|
|
78
|
+
segments.push(currentSegment);
|
|
79
|
+
}
|
|
80
|
+
currentSegment = {
|
|
81
|
+
heading: headingMatch.heading,
|
|
82
|
+
level: headingMatch.level,
|
|
83
|
+
contentLines: [],
|
|
84
|
+
};
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (currentSegment) {
|
|
89
|
+
currentSegment.contentLines.push(line);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
preambleLines.push(line);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Flush last segment
|
|
96
|
+
if (currentSegment) {
|
|
97
|
+
segments.push(currentSegment);
|
|
98
|
+
}
|
|
99
|
+
const preamble = preambleLines.join('\n').trim();
|
|
100
|
+
const preambleTokens = estimateTokens(preamble);
|
|
101
|
+
// Build tree from flat list of segments using a stack
|
|
102
|
+
const topSections = [];
|
|
103
|
+
const stack = [];
|
|
104
|
+
for (const seg of segments) {
|
|
105
|
+
const content = seg.contentLines.join('\n').trim();
|
|
106
|
+
const section = {
|
|
107
|
+
heading: seg.heading,
|
|
108
|
+
level: seg.level,
|
|
109
|
+
content,
|
|
110
|
+
tokenEstimate: estimateTokens(content) + estimateTokens(seg.heading),
|
|
111
|
+
children: [],
|
|
112
|
+
path: seg.heading,
|
|
113
|
+
};
|
|
114
|
+
// Pop stack until we find a parent with a lower level
|
|
115
|
+
while (stack.length > 0 && stack[stack.length - 1].level >= seg.level) {
|
|
116
|
+
stack.pop();
|
|
117
|
+
}
|
|
118
|
+
if (stack.length > 0) {
|
|
119
|
+
const parent = stack[stack.length - 1];
|
|
120
|
+
section.path = `${parent.path}.${seg.heading}`;
|
|
121
|
+
parent.children.push(section);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
topSections.push(section);
|
|
125
|
+
}
|
|
126
|
+
index.set(section.path.toLowerCase(), section);
|
|
127
|
+
stack.push(section);
|
|
128
|
+
}
|
|
129
|
+
// Calculate total tokens (recursive)
|
|
130
|
+
function totalTokensOf(section) {
|
|
131
|
+
return section.tokenEstimate + section.children.reduce((sum, c) => sum + totalTokensOf(c), 0);
|
|
132
|
+
}
|
|
133
|
+
const totalTokens = preambleTokens + topSections.reduce((sum, s) => sum + totalTokensOf(s), 0);
|
|
134
|
+
return {
|
|
135
|
+
preamble,
|
|
136
|
+
preambleTokens,
|
|
137
|
+
sections: topSections,
|
|
138
|
+
totalTokens,
|
|
139
|
+
index,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Selectively extract content from a parsed skill body.
|
|
144
|
+
*
|
|
145
|
+
* This is the key function for context management — instead of dumping the
|
|
146
|
+
* entire SKILL.md into the LLM's context window, agents call this to get
|
|
147
|
+
* only the sections they need.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* // Get only the error handling section
|
|
151
|
+
* extractSkillContent(parsed, { sections: ['Error Handling'] })
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* // Get top-level overview only (no sub-sections), max 500 tokens
|
|
155
|
+
* extractSkillContent(parsed, { maxDepth: 1, maxTokens: 500 })
|
|
156
|
+
*/
|
|
157
|
+
export function extractSkillContent(parsed, options = {}) {
|
|
158
|
+
const { sections: requestedSections, maxTokens, includePreamble = true, maxDepth } = options;
|
|
159
|
+
const parts = [];
|
|
160
|
+
let currentTokens = 0;
|
|
161
|
+
// Helper: check if we've exceeded the token budget
|
|
162
|
+
function withinBudget(additional) {
|
|
163
|
+
if (maxTokens === undefined)
|
|
164
|
+
return true;
|
|
165
|
+
return currentTokens + additional <= maxTokens;
|
|
166
|
+
}
|
|
167
|
+
// Helper: render a section to Markdown
|
|
168
|
+
function renderSection(section, depth) {
|
|
169
|
+
const hashes = '#'.repeat(section.level);
|
|
170
|
+
let result = `${hashes} ${section.heading}\n\n${section.content}`;
|
|
171
|
+
if (maxDepth === undefined || depth < maxDepth) {
|
|
172
|
+
for (const child of section.children) {
|
|
173
|
+
result += '\n\n' + renderSection(child, depth + 1);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
// Add preamble
|
|
179
|
+
if (includePreamble && parsed.preamble) {
|
|
180
|
+
const tokens = parsed.preambleTokens;
|
|
181
|
+
if (withinBudget(tokens)) {
|
|
182
|
+
parts.push(parsed.preamble);
|
|
183
|
+
currentTokens += tokens;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// If specific sections requested, find and include only those
|
|
187
|
+
if (requestedSections && requestedSections.length > 0) {
|
|
188
|
+
for (const requested of requestedSections) {
|
|
189
|
+
const lower = requested.toLowerCase();
|
|
190
|
+
// Try exact match first, then partial match
|
|
191
|
+
let found = parsed.index.get(lower);
|
|
192
|
+
if (!found) {
|
|
193
|
+
// Partial match: find first section whose path contains the query
|
|
194
|
+
for (const [key, section] of parsed.index) {
|
|
195
|
+
if (key.includes(lower)) {
|
|
196
|
+
found = section;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (found) {
|
|
202
|
+
const rendered = renderSection(found, 1);
|
|
203
|
+
const tokens = estimateTokens(rendered);
|
|
204
|
+
if (withinBudget(tokens)) {
|
|
205
|
+
parts.push(rendered);
|
|
206
|
+
currentTokens += tokens;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
// Include all sections (respecting maxDepth and maxTokens)
|
|
213
|
+
for (const section of parsed.sections) {
|
|
214
|
+
const rendered = renderSection(section, 1);
|
|
215
|
+
const tokens = estimateTokens(rendered);
|
|
216
|
+
if (withinBudget(tokens)) {
|
|
217
|
+
parts.push(rendered);
|
|
218
|
+
currentTokens += tokens;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
break; // Stop adding sections once we exceed budget
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return parts.join('\n\n');
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get a flat list of all section headings with their token costs.
|
|
229
|
+
* Useful for agents to decide which sections to load.
|
|
230
|
+
*/
|
|
231
|
+
export function listSkillSections(parsed) {
|
|
232
|
+
const result = [];
|
|
233
|
+
function walk(section) {
|
|
234
|
+
result.push({
|
|
235
|
+
path: section.path,
|
|
236
|
+
level: section.level,
|
|
237
|
+
tokenEstimate: section.tokenEstimate,
|
|
238
|
+
});
|
|
239
|
+
for (const child of section.children) {
|
|
240
|
+
walk(child);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
for (const section of parsed.sections) {
|
|
244
|
+
walk(section);
|
|
245
|
+
}
|
|
246
|
+
return result;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=skill-content-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-content-parser.js","sourceRoot":"","sources":["../../src/core/skill-content-parser.ts"],"names":[],"mappings":"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"}
|