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.
Files changed (52) hide show
  1. package/README.md +24 -9
  2. package/dist/cli.js +5 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.d.ts +4 -0
  5. package/dist/commands/connect.d.ts.map +1 -0
  6. package/dist/commands/connect.js +199 -0
  7. package/dist/commands/connect.js.map +1 -0
  8. package/dist/commands/doctor.d.ts.map +1 -1
  9. package/dist/commands/doctor.js +30 -2
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +168 -13
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/serve.d.ts.map +1 -1
  15. package/dist/commands/serve.js +14 -3
  16. package/dist/commands/serve.js.map +1 -1
  17. package/dist/commands/shared.d.ts +2 -1
  18. package/dist/commands/shared.d.ts.map +1 -1
  19. package/dist/commands/shared.js +15 -23
  20. package/dist/commands/shared.js.map +1 -1
  21. package/dist/commands/test.d.ts.map +1 -1
  22. package/dist/commands/test.js +7 -3
  23. package/dist/commands/test.js.map +1 -1
  24. package/dist/commands/validate.js +4 -4
  25. package/dist/commands/validate.js.map +1 -1
  26. package/dist/executor.d.ts.map +1 -1
  27. package/dist/executor.js +1 -2
  28. package/dist/executor.js.map +1 -1
  29. package/dist/generators/mcp.d.ts +11 -3
  30. package/dist/generators/mcp.d.ts.map +1 -1
  31. package/dist/generators/mcp.js +206 -22
  32. package/dist/generators/mcp.js.map +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/openapi.d.ts +1 -1
  37. package/dist/openapi.d.ts.map +1 -1
  38. package/dist/openapi.js +4 -4
  39. package/dist/openapi.js.map +1 -1
  40. package/dist/parser.d.ts.map +1 -1
  41. package/dist/parser.js +15 -0
  42. package/dist/parser.js.map +1 -1
  43. package/dist/utils/color.js +1 -1
  44. package/dist/utils/color.js.map +1 -1
  45. package/dist/utils/env.d.ts +17 -0
  46. package/dist/utils/env.d.ts.map +1 -0
  47. package/dist/utils/env.js +73 -0
  48. package/dist/utils/env.js.map +1 -0
  49. package/dist/validator.d.ts.map +1 -1
  50. package/dist/validator.js +82 -4
  51. package/dist/validator.js.map +1 -1
  52. package/package.json +1 -1
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # usepaso
1
+ # paso
2
2
 
3
- One paso. Every protocol.
3
+ The agent-readiness toolkit for APIs.
4
4
 
5
- Declare your API's agent capabilities once. UsePaso generates the MCP server. No protocol expertise required.
5
+ Declare your API's capabilities once. paso generates the MCP server. No protocol code required.
6
6
 
7
7
  Self-hosted. Open source. Apache 2.0.
8
8
 
@@ -72,15 +72,16 @@ capabilities:
72
72
  description: Item name
73
73
  ```
74
74
 
75
- ## What UsePaso Does With It
75
+ ## What paso Does With It
76
76
 
77
- Each capability becomes an MCP tool. When an agent calls it, UsePaso makes the HTTP request to your API with proper auth, parameters, and error handling.
77
+ Each capability becomes an MCP tool. When an agent calls it, paso makes the HTTP request to your API with proper auth, parameters, and error handling.
78
78
 
79
79
  ## CLI
80
80
 
81
81
  | Command | What it does |
82
82
  |---------|-------------|
83
- | `usepaso init` | Scaffold a `usepaso.yaml` template |
83
+ | `usepaso init` | Scaffold a `usepaso.yaml` template (JSONPlaceholder example) |
84
+ | `usepaso init --blank` | Scaffold a blank template |
84
85
  | `usepaso init --from-openapi` | Generate from an OpenAPI spec |
85
86
  | `usepaso validate` | Check your declaration for errors |
86
87
  | `usepaso validate --strict` | Check for best practices (missing constraints, consent) |
@@ -89,7 +90,10 @@ Each capability becomes an MCP tool. When an agent calls it, UsePaso makes the H
89
90
  | `usepaso test --dry-run` | Same thing, minus the consequences |
90
91
  | `usepaso test --all --dry-run` | Verify all capabilities resolve correctly |
91
92
  | `usepaso serve` | Start an MCP server (stdio) |
93
+ | `usepaso serve --strict` | Serve with consent gates enforced (two-phase confirmation) |
92
94
  | `usepaso serve --verbose` | Serve with request logging |
95
+ | `usepaso connect <client>` | Wire this server into an MCP client config (claude-desktop, cursor, vscode, windsurf) |
96
+ | `usepaso disconnect <client>` | Remove from an MCP client config |
93
97
  | `usepaso doctor` | Check your setup end-to-end |
94
98
  | `usepaso completion` | Output shell completion script (bash, zsh, fish) |
95
99
  | `usepaso version` | Print the version |
@@ -101,10 +105,19 @@ import { parseFile, validate, generateMcpServer } from 'usepaso';
101
105
 
102
106
  const decl = parseFile('usepaso.yaml');
103
107
  const errors = validate(decl);
104
- const server = generateMcpServer(decl);
108
+ const { server, toolNames } = generateMcpServer(decl);
105
109
  ```
106
110
 
107
- ## Connect to Claude Desktop
111
+ ## Connect to MCP Clients
112
+
113
+ ```bash
114
+ npx usepaso connect claude-desktop
115
+ npx usepaso connect cursor
116
+ npx usepaso connect vscode
117
+ npx usepaso connect windsurf
118
+ ```
119
+
120
+ Or add manually to your client config:
108
121
 
109
122
  ```json
110
123
  {
@@ -120,7 +133,9 @@ const server = generateMcpServer(decl);
120
133
 
121
134
  ## Links
122
135
 
123
- - [Full documentation](https://github.com/5h1vmani/usepaso)
136
+ - [Documentation](https://usepaso.dev/docs/getting-started/)
137
+ - [Blog](https://usepaso.dev/blog/)
138
+ - [Changelog](https://usepaso.dev/changelog/)
124
139
  - [Spec reference](https://github.com/5h1vmani/usepaso/blob/main/spec/usepaso-spec.md)
125
140
  - [Examples](https://github.com/5h1vmani/usepaso/tree/main/examples)
126
141
  - [Python SDK](https://pypi.org/project/usepaso/)
package/dist/cli.js CHANGED
@@ -8,6 +8,7 @@ const inspect_1 = require("./commands/inspect");
8
8
  const test_1 = require("./commands/test");
9
9
  const serve_1 = require("./commands/serve");
10
10
  const doctor_1 = require("./commands/doctor");
11
+ const connect_1 = require("./commands/connect");
11
12
  // eslint-disable-next-line @typescript-eslint/no-require-imports
12
13
  const { version } = require('../package.json');
13
14
  const program = new commander_1.Command();
@@ -18,6 +19,8 @@ program.name('usepaso').description('Make your API agent-ready in minutes').vers
18
19
  (0, test_1.registerTest)(program);
19
20
  (0, serve_1.registerServe)(program);
20
21
  (0, doctor_1.registerDoctor)(program);
22
+ (0, connect_1.registerConnect)(program);
23
+ (0, connect_1.registerDisconnect)(program);
21
24
  program
22
25
  .command('version')
23
26
  .description('Print the usepaso version')
@@ -36,6 +39,8 @@ program
36
39
  'test',
37
40
  'serve',
38
41
  'doctor',
42
+ 'connect',
43
+ 'disconnect',
39
44
  'version',
40
45
  'completion',
41
46
  ];
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA+C;AAC/C,kDAAuD;AACvD,gDAAqD;AACrD,0CAA+C;AAC/C,4CAAiD;AACjD,8CAAmD;AAEnD,iEAAiE;AACjE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7F,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;AAC1B,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,CAAC;KACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,MAAM,QAAQ,GAAG;QACf,MAAM;QACN,UAAU;QACV,SAAS;QACT,MAAM;QACN,OAAO;QACP,QAAQ;QACR,SAAS;QACT,YAAY;KACb,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,qDAAqD,IAAI,gEAAgE,CAC1H,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,sDAAsD,GAAG,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO;QACP,OAAO,CAAC,GAAG,CACT,qFAAqF,IAAI,iDAAiD,CAC3I,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA+C;AAC/C,kDAAuD;AACvD,gDAAqD;AACrD,0CAA+C;AAC/C,4CAAiD;AACjD,8CAAmD;AACnD,gDAAyE;AAEzE,iEAAiE;AACjE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7F,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;AAC1B,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;AACvB,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,4BAAkB,EAAC,OAAO,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,CAAC;KACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,MAAM,QAAQ,GAAG;QACf,MAAM;QACN,UAAU;QACV,SAAS;QACT,MAAM;QACN,OAAO;QACP,QAAQ;QACR,SAAS;QACT,YAAY;QACZ,SAAS;QACT,YAAY;KACb,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,qDAAqD,IAAI,gEAAgE,CAC1H,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,sDAAsD,GAAG,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO;QACP,OAAO,CAAC,GAAG,CACT,qFAAqF,IAAI,iDAAiD,CAC3I,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerConnect(program: Command): void;
3
+ export declare function registerDisconnect(program: Command): void;
4
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+IpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwDtD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+CzD"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerConnect = registerConnect;
4
+ exports.registerDisconnect = registerDisconnect;
5
+ const path_1 = require("path");
6
+ const fs_1 = require("fs");
7
+ const os_1 = require("os");
8
+ const shared_1 = require("./shared");
9
+ const color_1 = require("../utils/color");
10
+ const env_1 = require("../utils/env");
11
+ const CLIENTS = ['claude-desktop', 'cursor', 'vscode', 'windsurf'];
12
+ function resolveClientConfig(client) {
13
+ const home = (0, os_1.homedir)();
14
+ const platform = process.platform;
15
+ switch (client) {
16
+ case 'claude-desktop': {
17
+ let configDir;
18
+ if (platform === 'win32') {
19
+ configDir = (0, path_1.join)(process.env.APPDATA || (0, path_1.join)(home, 'AppData', 'Roaming'), 'Claude');
20
+ }
21
+ else if (platform === 'darwin') {
22
+ configDir = (0, path_1.join)(home, 'Library', 'Application Support', 'Claude');
23
+ }
24
+ else {
25
+ configDir = (0, path_1.join)(home, '.config', 'Claude');
26
+ }
27
+ return {
28
+ configPath: (0, path_1.join)(configDir, 'claude_desktop_config.json'),
29
+ wrapInMcpServers: true,
30
+ useAbsolutePath: true,
31
+ displayName: 'Claude Desktop',
32
+ restartHint: 'Restart Claude Desktop to connect.',
33
+ };
34
+ }
35
+ case 'cursor':
36
+ return {
37
+ configPath: (0, path_1.resolve)('.cursor', 'mcp.json'),
38
+ wrapInMcpServers: true,
39
+ useAbsolutePath: false,
40
+ displayName: 'Cursor',
41
+ restartHint: 'Restart Cursor to connect.',
42
+ };
43
+ case 'vscode':
44
+ return {
45
+ configPath: (0, path_1.resolve)('.vscode', 'mcp.json'),
46
+ wrapInMcpServers: false,
47
+ useAbsolutePath: false,
48
+ displayName: 'VS Code',
49
+ restartHint: 'Reload VS Code to connect.',
50
+ };
51
+ case 'windsurf': {
52
+ let configDir;
53
+ if (platform === 'win32') {
54
+ configDir = (0, path_1.join)(process.env.APPDATA || (0, path_1.join)(home, 'AppData', 'Roaming'), 'Codeium', 'Windsurf');
55
+ }
56
+ else {
57
+ configDir = (0, path_1.join)(home, '.codeium', 'windsurf');
58
+ }
59
+ return {
60
+ configPath: (0, path_1.join)(configDir, 'mcp_config.json'),
61
+ wrapInMcpServers: true,
62
+ useAbsolutePath: false,
63
+ displayName: 'Windsurf',
64
+ restartHint: 'Restart Windsurf to connect.',
65
+ };
66
+ }
67
+ default:
68
+ throw new Error(`Unknown client: "${client}"`);
69
+ }
70
+ }
71
+ function buildEntry(yamlPath, hasToken, useAbsolutePath) {
72
+ // IDE clients (Cursor, VS Code, Windsurf) run from the project root.
73
+ // Use bare "usepaso serve" so the config is portable across machines.
74
+ // Claude Desktop doesn't set CWD, so it needs the absolute path.
75
+ const args = useAbsolutePath
76
+ ? ['usepaso', 'serve', '-f', (0, path_1.resolve)(yamlPath)]
77
+ : ['usepaso', 'serve'];
78
+ const entry = { command: 'npx', args };
79
+ if (!hasToken) {
80
+ entry.env = { USEPASO_AUTH_TOKEN: 'your-token' };
81
+ }
82
+ return entry;
83
+ }
84
+ function readJsonFile(path) {
85
+ if (!(0, fs_1.existsSync)(path))
86
+ return {};
87
+ const raw = (0, fs_1.readFileSync)(path, 'utf-8');
88
+ try {
89
+ return JSON.parse(raw);
90
+ }
91
+ catch (err) {
92
+ throw new Error(`Failed to parse ${path}: ${err instanceof Error ? err.message : err}\nFix the JSON manually or delete the file and try again.`, { cause: err });
93
+ }
94
+ }
95
+ function getServers(config, clientConfig) {
96
+ if (clientConfig.wrapInMcpServers) {
97
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') {
98
+ config.mcpServers = {};
99
+ }
100
+ return config.mcpServers;
101
+ }
102
+ if (!config.servers || typeof config.servers !== 'object') {
103
+ config.servers = {};
104
+ }
105
+ return config.servers;
106
+ }
107
+ function writeConfig(configPath, config) {
108
+ const configDir = (0, path_1.dirname)(configPath);
109
+ if (!(0, fs_1.existsSync)(configDir)) {
110
+ (0, fs_1.mkdirSync)(configDir, { recursive: true });
111
+ }
112
+ (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
113
+ }
114
+ function validateClient(client) {
115
+ if (!CLIENTS.includes(client)) {
116
+ throw new Error(`Unknown client: "${client}". Supported clients: ${CLIENTS.join(', ')}`);
117
+ }
118
+ return client;
119
+ }
120
+ function registerConnect(program) {
121
+ program
122
+ .command('connect')
123
+ .description('Add this server to an MCP client config')
124
+ .argument('<client>', `Client to configure (${CLIENTS.join(', ')})`)
125
+ .option('-f, --file <path>', 'Path to usepaso.yaml', 'usepaso.yaml')
126
+ .option('--env <path>', 'Path to .env file (default: .env next to usepaso.yaml)')
127
+ .option('--force', 'Overwrite existing entry for this service')
128
+ .action((client, opts) => {
129
+ try {
130
+ const validClient = validateClient(client);
131
+ const filePath = (0, path_1.resolve)(opts.file);
132
+ const decl = (0, shared_1.loadAndValidate)(filePath);
133
+ // Load .env so we can detect whether a token is available
134
+ (0, env_1.loadEnvFile)(filePath, opts.env);
135
+ const hasToken = !!process.env.USEPASO_AUTH_TOKEN;
136
+ const slug = (0, shared_1.slugify)(decl.service.name);
137
+ const clientConfig = resolveClientConfig(validClient);
138
+ const existing = readJsonFile(clientConfig.configPath);
139
+ const entry = buildEntry(filePath, hasToken, clientConfig.useAbsolutePath);
140
+ const servers = getServers(existing, clientConfig);
141
+ if (servers[slug] && !opts.force) {
142
+ throw new Error(`Entry "${slug}" already exists in ${clientConfig.displayName} config. Use --force to overwrite.`);
143
+ }
144
+ const isUpdate = !!servers[slug];
145
+ servers[slug] = entry;
146
+ writeConfig(clientConfig.configPath, existing);
147
+ const verb = isUpdate ? 'Updated' : 'Added';
148
+ console.log(`${(0, color_1.green)(verb)} "${(0, color_1.cyan)(decl.service.name)}" in ${clientConfig.displayName} config.`);
149
+ console.log((0, color_1.dim)(` Config: ${clientConfig.configPath}`));
150
+ if (!hasToken) {
151
+ console.log('');
152
+ console.log((0, color_1.yellow)('Note: No auth token found. Set USEPASO_AUTH_TOKEN in .env or your environment.'));
153
+ }
154
+ console.log('');
155
+ console.log(clientConfig.restartHint);
156
+ }
157
+ catch (err) {
158
+ console.error((0, color_1.red)(err instanceof Error ? err.message : String(err)));
159
+ process.exit(1);
160
+ }
161
+ });
162
+ }
163
+ function registerDisconnect(program) {
164
+ program
165
+ .command('disconnect')
166
+ .description('Remove this server from an MCP client config')
167
+ .argument('<client>', `Client to update (${CLIENTS.join(', ')})`)
168
+ .option('-f, --file <path>', 'Path to usepaso.yaml', 'usepaso.yaml')
169
+ .action((client, opts) => {
170
+ try {
171
+ const validClient = validateClient(client);
172
+ const filePath = (0, path_1.resolve)(opts.file);
173
+ const decl = (0, shared_1.loadAndValidate)(filePath);
174
+ const slug = (0, shared_1.slugify)(decl.service.name);
175
+ const clientConfig = resolveClientConfig(validClient);
176
+ if (!(0, fs_1.existsSync)(clientConfig.configPath)) {
177
+ console.log((0, color_1.dim)(`No config file found at ${clientConfig.configPath}. Nothing to remove.`));
178
+ return;
179
+ }
180
+ const existing = readJsonFile(clientConfig.configPath);
181
+ const servers = getServers(existing, clientConfig);
182
+ if (!servers[slug]) {
183
+ console.log((0, color_1.dim)(`Entry "${slug}" not found in ${clientConfig.displayName} config. Nothing to remove.`));
184
+ return;
185
+ }
186
+ delete servers[slug];
187
+ writeConfig(clientConfig.configPath, existing);
188
+ console.log(`${(0, color_1.green)('Removed')} "${(0, color_1.cyan)(decl.service.name)}" from ${clientConfig.displayName} config.`);
189
+ console.log((0, color_1.dim)(` Config: ${clientConfig.configPath}`));
190
+ console.log('');
191
+ console.log(clientConfig.restartHint);
192
+ }
193
+ catch (err) {
194
+ console.error((0, color_1.red)(err instanceof Error ? err.message : String(err)));
195
+ process.exit(1);
196
+ }
197
+ });
198
+ }
199
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkGrD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4HrD"}
@@ -6,11 +6,13 @@ const fs_1 = require("fs");
6
6
  const parser_1 = require("../parser");
7
7
  const validator_1 = require("../validator");
8
8
  const color_1 = require("../utils/color");
9
+ const env_1 = require("../utils/env");
9
10
  function registerDoctor(program) {
10
11
  program
11
12
  .command('doctor')
12
13
  .description('Check your usepaso setup for common issues')
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
  .action(async (opts) => {
15
17
  const filePath = (0, path_1.resolve)(opts.file);
16
18
  let failed = 0;
@@ -57,7 +59,33 @@ function registerDoctor(program) {
57
59
  const warnSuffix = warnings.length > 0 ? `, ${warnings.length} warning(s)` : '';
58
60
  ok('Validation passes', `${decl.capabilities.length} capabilities${warnSuffix}`);
59
61
  }
60
- // 4. Auth token
62
+ // 4. .env file
63
+ const dir = (0, path_1.dirname)(filePath);
64
+ const envPath = opts.env || (0, path_1.join)(dir, '.env');
65
+ if ((0, fs_1.existsSync)(envPath)) {
66
+ (0, env_1.loadEnvFile)(filePath, opts.env);
67
+ ok('.env file found', opts.env ? envPath : undefined);
68
+ if ((0, env_1.isEnvTrackedByGit)((0, path_1.dirname)(envPath))) {
69
+ console.log(` ${(0, color_1.yellow)('WARN')} .env is tracked by git. Run: git rm --cached .env`);
70
+ }
71
+ // Check file permissions on Unix (skip on Windows)
72
+ if (process.platform !== 'win32') {
73
+ try {
74
+ const mode = (0, fs_1.statSync)(envPath).mode;
75
+ const othersRead = mode & 0o004;
76
+ if (othersRead) {
77
+ console.log(` ${(0, color_1.yellow)('WARN')} .env is world-readable. Run: chmod 600 .env`);
78
+ }
79
+ }
80
+ catch {
81
+ // Ignore stat errors
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ ok('.env file', 'not found, using environment variables');
87
+ }
88
+ // 5. Auth token
61
89
  const authType = decl.service?.auth?.type;
62
90
  const token = process.env.USEPASO_AUTH_TOKEN;
63
91
  if (authType && authType !== 'none') {
@@ -76,7 +104,7 @@ function registerDoctor(program) {
76
104
  else {
77
105
  ok('Auth', 'type is "none", no token needed');
78
106
  }
79
- // 5. Base URL reachable
107
+ // 6. Base URL reachable
80
108
  const baseUrl = decl.service?.base_url;
81
109
  if (baseUrl) {
82
110
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoFnD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4HpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwJnD"}