usepaso 0.4.0 → 0.4.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.
- package/README.md +24 -9
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts +4 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +199 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +30 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +168 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +14 -3
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/shared.d.ts +2 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +15 -23
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +7 -3
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/validate.js +4 -4
- package/dist/commands/validate.js.map +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +1 -2
- package/dist/executor.js.map +1 -1
- package/dist/generators/mcp.d.ts +11 -3
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +206 -22
- package/dist/generators/mcp.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +4 -4
- package/dist/openapi.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +15 -0
- package/dist/parser.js.map +1 -1
- package/dist/utils/color.js +1 -1
- package/dist/utils/color.js.map +1 -1
- package/dist/utils/env.d.ts +17 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +73 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +82 -4
- package/dist/validator.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/init.js
CHANGED
|
@@ -6,7 +6,105 @@ const fs_1 = require("fs");
|
|
|
6
6
|
const openapi_1 = require("../openapi");
|
|
7
7
|
const yaml_1 = require("yaml");
|
|
8
8
|
const color_1 = require("../utils/color");
|
|
9
|
-
const
|
|
9
|
+
const env_1 = require("../utils/env");
|
|
10
|
+
const MAX_SPEC_SIZE = 50 * 1024 * 1024; // 50MB
|
|
11
|
+
const ENV_EXAMPLE = `# paso auth token. Never commit .env to version control.
|
|
12
|
+
USEPASO_AUTH_TOKEN=your-token-here
|
|
13
|
+
`;
|
|
14
|
+
function scaffoldEnv(outDir) {
|
|
15
|
+
const examplePath = (0, path_1.join)(outDir, '.env.example');
|
|
16
|
+
if (!(0, fs_1.existsSync)(examplePath)) {
|
|
17
|
+
(0, fs_1.writeFileSync)(examplePath, ENV_EXAMPLE, 'utf-8');
|
|
18
|
+
}
|
|
19
|
+
(0, env_1.ensureGitignore)(outDir);
|
|
20
|
+
}
|
|
21
|
+
const FALLBACK_TEMPLATE = `# yaml-language-server: $schema=https://raw.githubusercontent.com/5h1vmani/usepaso/main/spec/usepaso.schema.json\nversion: "1.0"\n\nservice:\n name: __SERVICE_NAME__\n description: TODO: describe what your service does\n base_url: https://api.example.com\n auth:\n type: bearer\n\ncapabilities:\n - name: example_action\n description: TODO: describe what this action does\n method: GET\n path: /example\n permission: read\n inputs:\n id:\n type: string\n required: true\n description: TODO: describe this parameter\n in: query\n output:\n result:\n type: string\n description: TODO: describe the output\n\npermissions:\n read:\n - example_action\n`;
|
|
22
|
+
const EXAMPLE_TEMPLATE = `# A working example using JSONPlaceholder (free, public, no auth).
|
|
23
|
+
# Run "usepaso validate" and "usepaso serve" right now. No edits needed.
|
|
24
|
+
# When you are ready, replace the values below with your own API.
|
|
25
|
+
|
|
26
|
+
version: "1.0"
|
|
27
|
+
|
|
28
|
+
service:
|
|
29
|
+
name: JSONPlaceholder
|
|
30
|
+
description: Free fake REST API for testing and prototyping
|
|
31
|
+
base_url: https://jsonplaceholder.typicode.com
|
|
32
|
+
auth:
|
|
33
|
+
type: none # Explicit. Change to "bearer" when you connect a real API.
|
|
34
|
+
|
|
35
|
+
capabilities:
|
|
36
|
+
# A read capability with a query parameter filter
|
|
37
|
+
- name: list_posts
|
|
38
|
+
description: List all posts, optionally filtered by author
|
|
39
|
+
method: GET
|
|
40
|
+
path: /posts
|
|
41
|
+
permission: read
|
|
42
|
+
inputs:
|
|
43
|
+
userId:
|
|
44
|
+
type: integer
|
|
45
|
+
description: Filter posts by this author ID
|
|
46
|
+
in: query
|
|
47
|
+
|
|
48
|
+
# A read capability with a path parameter
|
|
49
|
+
- name: get_post
|
|
50
|
+
description: Get a single post by ID
|
|
51
|
+
method: GET
|
|
52
|
+
path: /posts/{id}
|
|
53
|
+
permission: read
|
|
54
|
+
inputs:
|
|
55
|
+
id:
|
|
56
|
+
type: integer
|
|
57
|
+
required: true
|
|
58
|
+
description: The post ID
|
|
59
|
+
in: path
|
|
60
|
+
|
|
61
|
+
# A write capability with a request body
|
|
62
|
+
- name: create_post
|
|
63
|
+
description: Create a new post
|
|
64
|
+
method: POST
|
|
65
|
+
path: /posts
|
|
66
|
+
permission: write
|
|
67
|
+
inputs:
|
|
68
|
+
title:
|
|
69
|
+
type: string
|
|
70
|
+
required: true
|
|
71
|
+
description: Post title
|
|
72
|
+
in: body
|
|
73
|
+
body:
|
|
74
|
+
type: string
|
|
75
|
+
required: true
|
|
76
|
+
description: Post content
|
|
77
|
+
in: body
|
|
78
|
+
userId:
|
|
79
|
+
type: integer
|
|
80
|
+
required: true
|
|
81
|
+
description: Author ID
|
|
82
|
+
in: body
|
|
83
|
+
|
|
84
|
+
# A destructive action. consent_required means the agent must ask the user first.
|
|
85
|
+
- name: delete_post
|
|
86
|
+
description: Delete a post permanently
|
|
87
|
+
method: DELETE
|
|
88
|
+
path: /posts/{id}
|
|
89
|
+
permission: write
|
|
90
|
+
consent_required: true
|
|
91
|
+
inputs:
|
|
92
|
+
id:
|
|
93
|
+
type: integer
|
|
94
|
+
required: true
|
|
95
|
+
description: The post ID to delete
|
|
96
|
+
in: path
|
|
97
|
+
|
|
98
|
+
# Permission groups control which capabilities agents can access.
|
|
99
|
+
# "read" actions are safe. "write" actions modify data.
|
|
100
|
+
permissions:
|
|
101
|
+
read:
|
|
102
|
+
- list_posts
|
|
103
|
+
- get_post
|
|
104
|
+
write:
|
|
105
|
+
- create_post
|
|
106
|
+
- delete_post
|
|
107
|
+
`;
|
|
10
108
|
function loadTemplate() {
|
|
11
109
|
const candidates = [
|
|
12
110
|
(0, path_1.join)(__dirname, '..', '..', '..', '..', 'examples', 'template', 'usepaso.yaml'),
|
|
@@ -24,13 +122,20 @@ function registerInit(program) {
|
|
|
24
122
|
.command('init')
|
|
25
123
|
.description('Create a usepaso.yaml template in the current directory')
|
|
26
124
|
.option('-n, --name <name>', 'Service name')
|
|
125
|
+
.option('--blank', 'Generate a blank template (instead of the default working example)')
|
|
126
|
+
.option('--example', 'Generate a working example using JSONPlaceholder (same as default)')
|
|
27
127
|
.option('--from-openapi <path>', 'Generate from an OpenAPI 3.x spec (JSON, YAML, or URL)')
|
|
128
|
+
.option('--max-capabilities <n>', 'Max capabilities to generate from OpenAPI (default: 20)', '20')
|
|
28
129
|
.action(async (opts) => {
|
|
29
130
|
const outPath = (0, path_1.resolve)('usepaso.yaml');
|
|
30
131
|
if ((0, fs_1.existsSync)(outPath)) {
|
|
31
132
|
console.error('usepaso.yaml already exists in this directory.');
|
|
32
133
|
process.exit(1);
|
|
33
134
|
}
|
|
135
|
+
if (opts.blank && opts.fromOpenapi) {
|
|
136
|
+
console.error('Cannot use --blank and --from-openapi together.');
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
34
139
|
if (opts.fromOpenapi) {
|
|
35
140
|
const source = opts.fromOpenapi;
|
|
36
141
|
try {
|
|
@@ -41,7 +146,34 @@ function registerInit(program) {
|
|
|
41
146
|
console.error(`Failed to fetch OpenAPI spec: ${res.status} ${res.statusText}`);
|
|
42
147
|
process.exit(1);
|
|
43
148
|
}
|
|
44
|
-
|
|
149
|
+
// Fast reject if Content-Length exceeds limit
|
|
150
|
+
const contentLength = res.headers.get('content-length');
|
|
151
|
+
if (contentLength && parseInt(contentLength, 10) > MAX_SPEC_SIZE) {
|
|
152
|
+
const sizeMb = Math.round(parseInt(contentLength, 10) / 1024 / 1024);
|
|
153
|
+
console.error(`OpenAPI spec exceeds 50MB limit (${sizeMb}MB). Check the URL or use a local file.`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
// Stream with size guard (servers can omit or lie about Content-Length)
|
|
157
|
+
const reader = res.body?.getReader();
|
|
158
|
+
if (!reader) {
|
|
159
|
+
console.error('Failed to read response body.');
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
const chunks = [];
|
|
163
|
+
let totalBytes = 0;
|
|
164
|
+
while (true) {
|
|
165
|
+
const { done, value } = await reader.read();
|
|
166
|
+
if (done)
|
|
167
|
+
break;
|
|
168
|
+
totalBytes += value.byteLength;
|
|
169
|
+
if (totalBytes > MAX_SPEC_SIZE) {
|
|
170
|
+
reader.cancel();
|
|
171
|
+
console.error(`OpenAPI spec exceeds 50MB limit. Check the URL or use a local file.`);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
chunks.push(value);
|
|
175
|
+
}
|
|
176
|
+
specContent = Buffer.concat(chunks).toString('utf-8');
|
|
45
177
|
}
|
|
46
178
|
else {
|
|
47
179
|
const specPath = (0, path_1.resolve)(source);
|
|
@@ -58,8 +190,14 @@ function registerInit(program) {
|
|
|
58
190
|
catch {
|
|
59
191
|
spec = (0, yaml_1.parse)(specContent);
|
|
60
192
|
}
|
|
61
|
-
const
|
|
193
|
+
const maxCaps = parseInt(opts.maxCapabilities, 10);
|
|
194
|
+
if (isNaN(maxCaps) || maxCaps < 1) {
|
|
195
|
+
console.error('--max-capabilities must be a positive integer.');
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
const result = (0, openapi_1.generateFromOpenApi)(spec, maxCaps);
|
|
62
199
|
(0, fs_1.writeFileSync)(outPath, result.yaml, 'utf-8');
|
|
200
|
+
scaffoldEnv((0, path_1.dirname)(outPath));
|
|
63
201
|
console.log((0, color_1.green)(`Generated usepaso.yaml from ${source}`));
|
|
64
202
|
console.log(` Service: ${(0, color_1.cyan)(result.serviceName)}`);
|
|
65
203
|
console.log(` Capabilities: ${result.generatedCount} (${result.readCount} read, ${result.writeCount} write, ${result.adminCount} admin)`);
|
|
@@ -69,7 +207,7 @@ function registerInit(program) {
|
|
|
69
207
|
}
|
|
70
208
|
console.log('');
|
|
71
209
|
console.log((0, color_1.dim)('Next steps:'));
|
|
72
|
-
console.log((0, color_1.dim)(" 1. Review the generated capabilities
|
|
210
|
+
console.log((0, color_1.dim)(" 1. Review the generated capabilities. Remove any you don't want exposed"));
|
|
73
211
|
console.log((0, color_1.dim)(' 2. usepaso validate Check for issues'));
|
|
74
212
|
console.log((0, color_1.dim)(' 3. usepaso test --dry-run Preview what agents will see'));
|
|
75
213
|
console.log((0, color_1.dim)(' 4. usepaso serve Start the MCP server'));
|
|
@@ -80,16 +218,33 @@ function registerInit(program) {
|
|
|
80
218
|
}
|
|
81
219
|
return;
|
|
82
220
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
221
|
+
if (opts.blank || opts.name) {
|
|
222
|
+
const name = opts.name || 'MyService';
|
|
223
|
+
const template = loadTemplate().replaceAll('__SERVICE_NAME__', name);
|
|
224
|
+
(0, fs_1.writeFileSync)(outPath, template, 'utf-8');
|
|
225
|
+
scaffoldEnv((0, path_1.dirname)(outPath));
|
|
226
|
+
console.log((0, color_1.green)(`Created usepaso.yaml for "${name}".`));
|
|
227
|
+
console.log('');
|
|
228
|
+
console.log((0, color_1.dim)('Next steps:'));
|
|
229
|
+
console.log((0, color_1.dim)(' 1. Declare your capabilities in usepaso.yaml'));
|
|
230
|
+
console.log((0, color_1.dim)(' 2. Copy .env.example to .env and add your API token'));
|
|
231
|
+
console.log((0, color_1.dim)(' 3. usepaso validate Check for issues'));
|
|
232
|
+
console.log((0, color_1.dim)(' 4. usepaso test --dry-run Preview what agents will see'));
|
|
233
|
+
console.log((0, color_1.dim)(' 5. usepaso serve Start the MCP server'));
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
// Default: working example (JSONPlaceholder)
|
|
237
|
+
(0, fs_1.writeFileSync)(outPath, EXAMPLE_TEMPLATE, 'utf-8');
|
|
238
|
+
console.log((0, color_1.green)('Created usepaso.yaml with a working JSONPlaceholder example.'));
|
|
239
|
+
console.log((0, color_1.dim)('No auth needed. No edits needed. Try it now:'));
|
|
240
|
+
console.log('');
|
|
241
|
+
console.log((0, color_1.dim)(' usepaso validate'));
|
|
242
|
+
console.log((0, color_1.dim)(' usepaso test list_posts --dry-run'));
|
|
243
|
+
console.log((0, color_1.dim)(' usepaso test get_post --param id=1 --dry-run'));
|
|
244
|
+
console.log((0, color_1.dim)(' usepaso serve'));
|
|
245
|
+
console.log((0, color_1.dim)(' usepaso connect cursor Wire up your IDE'));
|
|
87
246
|
console.log('');
|
|
88
|
-
console.log((0, color_1.dim)('
|
|
89
|
-
console.log((0, color_1.dim)(' 1. Declare your capabilities in usepaso.yaml'));
|
|
90
|
-
console.log((0, color_1.dim)(' 2. usepaso validate Check for issues'));
|
|
91
|
-
console.log((0, color_1.dim)(' 3. usepaso test --dry-run Preview what agents will see'));
|
|
92
|
-
console.log((0, color_1.dim)(' 4. usepaso serve Start the MCP server'));
|
|
247
|
+
console.log((0, color_1.dim)('When you are ready, replace the JSONPlaceholder values with your own API.'));
|
|
93
248
|
});
|
|
94
249
|
}
|
|
95
250
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiGpD"}
|
package/dist/commands/serve.js
CHANGED
|
@@ -7,17 +7,25 @@ const shared_1 = require("./shared");
|
|
|
7
7
|
const mcp_1 = require("../generators/mcp");
|
|
8
8
|
const color_1 = require("../utils/color");
|
|
9
9
|
const redact_1 = require("../utils/redact");
|
|
10
|
+
const env_1 = require("../utils/env");
|
|
10
11
|
function registerServe(program) {
|
|
11
12
|
program
|
|
12
13
|
.command('serve')
|
|
13
14
|
.description('Start an MCP server from a usepaso.yaml declaration')
|
|
14
15
|
.option('-f, --file <path>', 'Path to usepaso.yaml', 'usepaso.yaml')
|
|
16
|
+
.option('--env <path>', 'Path to .env file (default: .env next to usepaso.yaml)')
|
|
15
17
|
.option('-v, --verbose', 'Log all requests to stderr')
|
|
16
18
|
.option('-w, --watch', 'Notify when usepaso.yaml changes (requires manual restart)')
|
|
19
|
+
.option('--strict', 'Enforce consent gates server-side (for headless/untrusted agents)')
|
|
17
20
|
.action(async (opts) => {
|
|
18
21
|
const filePath = (0, path_1.resolve)(opts.file);
|
|
19
22
|
try {
|
|
20
23
|
const decl = (0, shared_1.loadAndValidate)(filePath);
|
|
24
|
+
// Load .env file if present (does not override existing env vars)
|
|
25
|
+
const loaded = (0, env_1.loadEnvFile)(filePath, opts.env);
|
|
26
|
+
if (loaded) {
|
|
27
|
+
console.error((0, color_1.dim)(`Loaded environment from ${opts.env || '.env'}`));
|
|
28
|
+
}
|
|
21
29
|
// Auth notices (logged once at startup, not per-request)
|
|
22
30
|
const authToken = process.env.USEPASO_AUTH_TOKEN;
|
|
23
31
|
if (authToken !== undefined && authToken === '') {
|
|
@@ -25,7 +33,7 @@ function registerServe(program) {
|
|
|
25
33
|
}
|
|
26
34
|
if (decl.service.auth) {
|
|
27
35
|
if (decl.service.auth.type === 'none' && authToken) {
|
|
28
|
-
console.error((0, color_1.yellow)(`Note: auth.type is "none"
|
|
36
|
+
console.error((0, color_1.yellow)(`Note: auth.type is "none", ignoring USEPASO_AUTH_TOKEN`));
|
|
29
37
|
}
|
|
30
38
|
else if (decl.service.auth.type !== 'none' && !authToken) {
|
|
31
39
|
console.error((0, color_1.yellow)(`Warning: auth type "${decl.service.auth.type}" is configured but USEPASO_AUTH_TOKEN is not set. API requests will likely fail with 401.`));
|
|
@@ -35,10 +43,13 @@ function registerServe(program) {
|
|
|
35
43
|
if (decl.service.base_url.startsWith('http://')) {
|
|
36
44
|
console.error((0, color_1.yellow)(`Warning: base_url uses http://. Auth tokens will be sent in plain text.`));
|
|
37
45
|
}
|
|
46
|
+
if (opts.strict) {
|
|
47
|
+
console.error((0, color_1.yellow)('Strict mode: consent-gated tools require two-phase confirmation.'));
|
|
48
|
+
}
|
|
38
49
|
console.error(`${(0, color_1.green)('usepaso serving')} "${(0, color_1.cyan)(decl.service.name)}" (${decl.capabilities.length} capabilities). Agents welcome.`);
|
|
39
50
|
console.error('Transport: stdio. Waiting for an MCP client...');
|
|
40
51
|
// Show MCP config snippet
|
|
41
|
-
console.error((0, shared_1.mcpConfigSnippet)(
|
|
52
|
+
console.error((0, shared_1.mcpConfigSnippet)(decl.service.name));
|
|
42
53
|
console.error('');
|
|
43
54
|
// Verbose logging callback
|
|
44
55
|
const onLog = opts.verbose
|
|
@@ -60,7 +71,7 @@ function registerServe(program) {
|
|
|
60
71
|
console.error(`\nFile changed. Restart the server to pick up changes.`);
|
|
61
72
|
});
|
|
62
73
|
}
|
|
63
|
-
await (0, mcp_1.serveMcp)(decl, onLog);
|
|
74
|
+
await (0, mcp_1.serveMcp)(decl, { onLog, strict: opts.strict });
|
|
64
75
|
}
|
|
65
76
|
catch (err) {
|
|
66
77
|
console.error(`Failed to start: ${err instanceof Error ? err.message : err}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PasoDeclaration } from '../types';
|
|
2
2
|
export declare function loadAndValidate(filePath: string): PasoDeclaration;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function slugify(name: string): string;
|
|
4
|
+
export declare function mcpConfigSnippet(serviceName: string): string;
|
|
4
5
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAuBjE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAW5D"}
|
package/dist/commands/shared.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadAndValidate = loadAndValidate;
|
|
4
|
+
exports.slugify = slugify;
|
|
4
5
|
exports.mcpConfigSnippet = mcpConfigSnippet;
|
|
5
|
-
const path_1 = require("path");
|
|
6
6
|
const fs_1 = require("fs");
|
|
7
7
|
const parser_1 = require("../parser");
|
|
8
8
|
const validator_1 = require("../validator");
|
|
@@ -28,30 +28,22 @@ function loadAndValidate(filePath) {
|
|
|
28
28
|
}
|
|
29
29
|
return decl;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
function slugify(name) {
|
|
32
|
+
return (name
|
|
33
|
+
.toLowerCase()
|
|
34
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
35
|
+
.replace(/^-|-$/g, '') || 'usepaso-service');
|
|
36
|
+
}
|
|
37
|
+
function mcpConfigSnippet(serviceName) {
|
|
38
|
+
const slug = slugify(serviceName);
|
|
34
39
|
return `
|
|
35
|
-
|
|
40
|
+
Connect to an MCP client:
|
|
36
41
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"command": "npx",
|
|
42
|
-
"args": ["usepaso", "serve", "-f", "${absPath}"],
|
|
43
|
-
"env": { "USEPASO_AUTH_TOKEN": "your-token" }
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
42
|
+
usepaso connect claude-desktop
|
|
43
|
+
usepaso connect cursor
|
|
44
|
+
usepaso connect vscode
|
|
45
|
+
usepaso connect windsurf
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
{
|
|
50
|
-
"${slug}": {
|
|
51
|
-
"command": "npx",
|
|
52
|
-
"args": ["usepaso", "serve", "-f", "${absPath}"],
|
|
53
|
-
"env": { "USEPASO_AUTH_TOKEN": "your-token" }
|
|
54
|
-
}
|
|
55
|
-
}`;
|
|
47
|
+
Or add "${slug}" manually to your client config. See: usepaso connect --help`;
|
|
56
48
|
}
|
|
57
49
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;AAMA,0CAuBC;AAED,0BAOC;AAED,4CAWC;AAnDD,2BAAgC;AAChC,sCAAsC;AACtC,4CAAwC;AAExC,0CAAkD;AAElD,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,IAAA,WAAG,EAAC,mBAAmB,QAAQ,EAAE,CAAC,GAAG,IAAA,WAAG,EAAC,kCAAkC,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,kBAAS,EAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,IAAA,WAAG,EAAC,0BAA0B,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,IAAA,WAAG,EAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,IAAA,cAAM,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,CACL,IAAI;SACD,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAC9C,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO;;;;;;;;UAQC,IAAI,+DAA+D,CAAC;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsLnD"}
|
package/dist/commands/test.js
CHANGED
|
@@ -6,11 +6,13 @@ const shared_1 = require("./shared");
|
|
|
6
6
|
const executor_1 = require("../executor");
|
|
7
7
|
const coerce_1 = require("../utils/coerce");
|
|
8
8
|
const color_1 = require("../utils/color");
|
|
9
|
+
const env_1 = require("../utils/env");
|
|
9
10
|
function registerTest(program) {
|
|
10
11
|
program
|
|
11
12
|
.command('test [capability]')
|
|
12
13
|
.description('Test a capability against the live API (or --dry-run, minus the consequences)')
|
|
13
14
|
.option('-f, --file <path>', 'Path to usepaso.yaml', 'usepaso.yaml')
|
|
15
|
+
.option('--env <path>', 'Path to .env file (default: .env next to usepaso.yaml)')
|
|
14
16
|
.option('-p, --param <key=value...>', 'Parameters (repeatable)', (val, acc) => {
|
|
15
17
|
acc.push(val);
|
|
16
18
|
return acc;
|
|
@@ -20,7 +22,9 @@ function registerTest(program) {
|
|
|
20
22
|
.option('--timeout <seconds>', 'Request timeout in seconds', '30')
|
|
21
23
|
.action(async (capabilityName, opts) => {
|
|
22
24
|
try {
|
|
23
|
-
const
|
|
25
|
+
const filePath = (0, path_1.resolve)(opts.file);
|
|
26
|
+
const decl = (0, shared_1.loadAndValidate)(filePath);
|
|
27
|
+
(0, env_1.loadEnvFile)(filePath, opts.env);
|
|
24
28
|
// --all mode: dry-run all capabilities
|
|
25
29
|
if (opts.all) {
|
|
26
30
|
if (!opts.dryRun) {
|
|
@@ -71,7 +75,7 @@ function registerTest(program) {
|
|
|
71
75
|
// Auth notices (once, not per-request)
|
|
72
76
|
const authToken = process.env.USEPASO_AUTH_TOKEN;
|
|
73
77
|
if (decl.service.auth?.type === 'none' && authToken) {
|
|
74
|
-
console.error(`Note: auth.type is "none"
|
|
78
|
+
console.error(`Note: auth.type is "none", ignoring USEPASO_AUTH_TOKEN`);
|
|
75
79
|
}
|
|
76
80
|
if (authToken !== undefined && authToken === '') {
|
|
77
81
|
console.error(`Warning: USEPASO_AUTH_TOKEN is set but empty. API requests will likely fail.`);
|
|
@@ -105,7 +109,7 @@ function registerTest(program) {
|
|
|
105
109
|
else {
|
|
106
110
|
// Unknown param — keep as string but warn
|
|
107
111
|
args[key] = raw;
|
|
108
|
-
console.error(`Warning: unknown parameter "${key}"
|
|
112
|
+
console.error(`Warning: unknown parameter "${key}", not declared in inputs for ${capabilityName}`);
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
// Check for missing required params
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":";;AAQA,oCAsLC;AA7LD,+BAA+B;AAC/B,qCAA2C;AAC3C,0CAAwE;AACxE,4CAA8C;AAC9C,0CAAkD;AAClD,sCAA2C;AAE3C,SAAgB,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,+EAA+E,CAAC;SAC5F,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,CAAC;SACnE,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;SAChF,MAAM,CACL,4BAA4B,EAC5B,yBAAyB,EACzB,CAAC,GAAW,EAAE,GAAa,EAAE,EAAE;QAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH;SACA,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;SACjE,MAAM,CAAC,OAAO,EAAE,4CAA4C,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,IAAI,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAA,wBAAe,EAAC,QAAQ,CAAC,CAAC;YACvC,IAAA,iBAAW,EAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,uCAAuC;YACvC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CACX,yFAAyF,CAC1F,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBACjD,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpC,MAAM,IAAI,GAA4B,EAAE,CAAC;oBACzC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;wBACf,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;4BACvD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gCAChC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;4BAC7B,CAAC;iCAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAC1B,IAAI,CAAC,IAAI,CAAC;oCACR,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;4BAClF,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;wBACrD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,IAAI,IAAA,YAAI,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAA,WAAG,EAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACnF,MAAM,EAAE,CAAC;oBACX,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACzE,MAAM,EAAE,CAAC;oBACX,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,sBAAsB,CAC7G,CAAC;gBACF,IAAI,MAAM,GAAG,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,YAAI,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAA,WAAG,EAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,IAAA,WAAG,EAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YAED,uCAAuC;YACvC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACjD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;gBACpD,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBAChD,OAAO,CAAC,KAAK,CACX,8EAA8E,CAC/E,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,eAAe,cAAc,cAAc,CAAC,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,0CAA0C;YAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;oBACd,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;oBACjE,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEnC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC;wBACH,IAAI,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACnD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,0CAA0C;oBAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBAChB,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,iCAAiC,cAAc,EAAE,CACpF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvD,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;wBACtC,WAAW,CAAC,IAAI,CAAC,+BAA+B,IAAI,KAAK,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,GAAG,IAAI,WAAW;oBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAErD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,IAAA,WAAG,EAAC,2CAA2C,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,SAAS,CAAC;gBACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjD,MAAM,OAAO,GACX,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,IAAA,YAAI,EAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,IAAA,WAAG,EAAC,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAc,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAEjE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,IAAA,sBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CACT,IAAA,aAAK,EAAC,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,IAAA,WAAG,EAAC,KAAK,MAAM,CAAC,UAAU,KAAK,CAAC,CACpF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,IAAA,sBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -15,17 +15,17 @@ function strictChecks(decl) {
|
|
|
15
15
|
const warnings = [];
|
|
16
16
|
for (const cap of decl.capabilities) {
|
|
17
17
|
if (cap.method === 'DELETE' && !cap.consent_required) {
|
|
18
|
-
warnings.push(`${cap.name}: DELETE without consent_required
|
|
18
|
+
warnings.push(`${cap.name}: DELETE without consent_required. Agents could delete data without user approval`);
|
|
19
19
|
}
|
|
20
20
|
if (cap.description && cap.description.length < 10) {
|
|
21
|
-
warnings.push(`${cap.name}: description is very short (${cap.description.length} chars)
|
|
21
|
+
warnings.push(`${cap.name}: description is very short (${cap.description.length} chars). Agents need clear descriptions to use tools correctly`);
|
|
22
22
|
}
|
|
23
23
|
if (['write', 'admin'].includes(cap.permission || '') && !cap.constraints?.length) {
|
|
24
|
-
warnings.push(`${cap.name}: ${cap.permission} capability with no constraints
|
|
24
|
+
warnings.push(`${cap.name}: ${cap.permission} capability with no constraints. Consider adding rate limits or guardrails`);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
if (!decl.permissions) {
|
|
28
|
-
warnings.push('No permissions section defined
|
|
28
|
+
warnings.push('No permissions section defined. All capabilities are accessible by default');
|
|
29
29
|
}
|
|
30
30
|
return warnings;
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;AAsCA,4CAoFC;AAzHD,+BAA+B;AAC/B,2BAAgC;AAChC,sCAAsC;AACtC,4CAAwC;AACxC,qCAA2C;AAC3C,0CAA0D;AAG1D;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAqB;IACzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CACX,GAAG,GAAG,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EACA,aAAa,GACb,WAAW,GACX,WAAW,GACX,cAAc,GACd,cAAc,GACd,eAAe,GACf,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,eAAe,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EACA,aAAa,GACb,WAAW,GACX,WAAW,GACX,cAAc,GACd,cAAc,GACd,eAAe,GACf,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,eAAe,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,CA+FlB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,eAAe,CAAC,CAsF1B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,eAAe,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAwCR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,eAAe,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,CAuFjB"}
|
package/dist/executor.js
CHANGED
|
@@ -69,8 +69,7 @@ function buildRequest(cap, args, decl, authToken) {
|
|
|
69
69
|
headers[authHeader] = token;
|
|
70
70
|
break;
|
|
71
71
|
default:
|
|
72
|
-
|
|
73
|
-
headers[authHeader] = token;
|
|
72
|
+
throw new Error(`Unknown auth.type "${authType}". Expected one of: api_key, bearer, oauth2, none.`);
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
}
|
package/dist/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":";;AAwCA,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|