@true-and-useful/janee 0.3.1 → 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 CHANGED
@@ -88,7 +88,7 @@ Janee will guide you through adding a service:
88
88
  ```
89
89
  Service name: stripe
90
90
  Base URL: https://api.stripe.com
91
- Auth type (bearer/hmac/headers): bearer
91
+ Auth type: bearer
92
92
  API key: sk_live_xxx
93
93
 
94
94
  ✓ Added service "stripe"
@@ -103,6 +103,8 @@ Auto-approve? (Y/n): y
103
103
  Done! Run 'janee serve' to start.
104
104
  ```
105
105
 
106
+ **Using an AI agent?** See [Non-interactive Setup](#non-interactive-setup-for-ai-agents) for flags that skip prompts, or the [agent-specific guides](#integrations) below.
107
+
106
108
  **Option 2: Edit config directly**
107
109
 
108
110
  Edit `~/.janee/config.yaml`:
@@ -135,7 +137,7 @@ Agents that support MCP (Claude Desktop, Cursor, OpenClaw) can now call the `exe
135
137
  ```typescript
136
138
  // Agent calls the execute tool
137
139
  execute({
138
- service: "stripe",
140
+ capability: "stripe",
139
141
  method: "GET",
140
142
  path: "/v1/balance",
141
143
  reason: "User asked for account balance"
@@ -146,6 +148,18 @@ Janee decrypts the key, makes the request, logs everything, and returns the resp
146
148
 
147
149
  ---
148
150
 
151
+ ## Integrations
152
+
153
+ Works with any agent that speaks MCP:
154
+
155
+ - **OpenClaw** — Native plugin (`@true-and-useful/janee-openclaw`)
156
+ - **Cursor** — [Setup guide](docs/cursor.md)
157
+ - **Claude Code** — [Setup guide](docs/claude-code.md)
158
+ - **Codex CLI** — [Setup guide](docs/codex.md)
159
+ - **Any MCP client** — just point at `janee serve`
160
+
161
+ ---
162
+
149
163
  ## OpenClaw Integration
150
164
 
151
165
  If you're using [OpenClaw](https://openclaw.ai), install the plugin for native tool support:
@@ -179,18 +193,17 @@ Your agent now has these tools:
179
193
 
180
194
  The plugin spawns `janee serve` automatically. All requests are logged to `~/.janee/logs/`.
181
195
 
182
- **See [docs/OPENCLAW.md](docs/OPENCLAW.md) for full integration guide.**
183
-
184
196
  ---
185
197
 
186
198
  ## MCP Tools
187
199
 
188
- Janee exposes two MCP tools:
200
+ Janee exposes three MCP tools:
189
201
 
190
202
  | Tool | Description |
191
203
  |------|-------------|
192
204
  | `list_services` | Discover available APIs and their policies |
193
205
  | `execute` | Make an API request through Janee |
206
+ | `reload_config` | Reload config from disk after adding/removing services (available when started with `janee serve`) |
194
207
 
195
208
  Agents discover what's available, then call APIs through Janee. Same audit trail, same protection.
196
209
 
@@ -298,6 +311,25 @@ janee sessions # List active sessions
298
311
  janee revoke <id> # Kill a session
299
312
  ```
300
313
 
314
+ ### Non-interactive Setup (for AI agents)
315
+
316
+ AI agents can't respond to interactive prompts. Use `--*-from-env` flags to read credentials from environment variables — this keeps secrets out of the agent's context window:
317
+
318
+ ```bash
319
+ # Bearer auth (Stripe, OpenAI, etc.)
320
+ janee add stripe -u https://api.stripe.com --auth-type bearer --key-from-env STRIPE_KEY
321
+
322
+ # HMAC auth (Bybit)
323
+ janee add bybit --auth-type hmac-bybit --key-from-env BYBIT_KEY --secret-from-env BYBIT_SECRET
324
+
325
+ # HMAC auth with passphrase (OKX)
326
+ janee add okx --auth-type hmac-okx --key-from-env OKX_KEY --secret-from-env OKX_SECRET --passphrase-from-env OKX_PASS
327
+ ```
328
+
329
+ When all required credentials are provided via flags, Janee:
330
+ - Never opens readline (no hanging on stdin)
331
+ - Auto-creates a capability with sensible defaults (1h TTL, auto-approve)
332
+
301
333
  You can also edit `~/.janee/config.yaml` directly if you prefer.
302
334
 
303
335
  ---
@@ -314,7 +346,7 @@ You can also edit `~/.janee/config.yaml` directly if you prefer.
314
346
  + logs request
315
347
  ```
316
348
 
317
- 1. Agent calls `execute` MCP tool with service, method, path
349
+ 1. Agent calls `execute` MCP tool with capability, method, path
318
350
  2. Janee looks up service config, decrypts the real key
319
351
  3. Makes HTTP request to real API with key
320
352
  4. Logs: timestamp, service, method, path, status
@@ -334,18 +366,6 @@ Agent never touches the real key.
334
366
 
335
367
  ---
336
368
 
337
- ## Integrations
338
-
339
- Works with any agent that speaks MCP:
340
-
341
- - **OpenClaw** — Native plugin (`@true-and-useful/janee-openclaw`)
342
- - **Cursor** — [Setup guide](/docs/cursor.md)
343
- - **Claude Code** — [Setup guide](/docs/claude-code.md)
344
- - **Codex CLI** — [Setup guide](/docs/codex.md)
345
- - **Any MCP client** — just point at `janee serve`
346
-
347
- ---
348
-
349
369
  ## Contributing
350
370
 
351
371
  We welcome contributions! See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for guidelines.
@@ -3,6 +3,11 @@ export declare function addCommand(serviceName?: string, options?: {
3
3
  key?: string;
4
4
  description?: string;
5
5
  authType?: string;
6
+ apiSecret?: string;
7
+ passphrase?: string;
8
+ keyFromEnv?: string;
9
+ secretFromEnv?: string;
10
+ passphraseFromEnv?: string;
6
11
  credentialsFile?: string;
7
12
  scope?: string | string[];
8
13
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAWA,wBAAsB,UAAU,CAC9B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACtB,GACL,OAAO,CAAC,IAAI,CAAC,CA6Xf"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAoBA,wBAAsB,UAAU,CAC9B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACtB,GACL,OAAO,CAAC,IAAI,CAAC,CAubf"}
@@ -43,6 +43,14 @@ const prompts_1 = require("@inquirer/prompts");
43
43
  const config_yaml_1 = require("../config-yaml");
44
44
  const directory_1 = require("../../core/directory");
45
45
  const service_account_1 = require("../../core/service-account");
46
+ function resolveEnvVar(varName, label) {
47
+ const value = process.env[varName];
48
+ if (!value) {
49
+ console.error(`❌ Environment variable ${varName} is not set (needed for ${label})`);
50
+ process.exit(1);
51
+ }
52
+ return value.trim();
53
+ }
46
54
  async function addCommand(serviceName, options = {}) {
47
55
  try {
48
56
  // Check for YAML config
@@ -50,22 +58,57 @@ async function addCommand(serviceName, options = {}) {
50
58
  console.error('❌ No config found. Run `janee init` first.');
51
59
  process.exit(1);
52
60
  }
53
- const rl = readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
61
+ // Resolve --from-env flags into their direct equivalents early.
62
+ // This way the rest of the code doesn't need to know the source.
63
+ if (options.keyFromEnv) {
64
+ if (options.key) {
65
+ console.error('❌ Cannot use both --key and --key-from-env');
66
+ process.exit(1);
67
+ }
68
+ options.key = resolveEnvVar(options.keyFromEnv, 'API key');
69
+ }
70
+ if (options.secretFromEnv) {
71
+ if (options.apiSecret) {
72
+ console.error('❌ Cannot use both --api-secret and --secret-from-env');
73
+ process.exit(1);
74
+ }
75
+ options.apiSecret = resolveEnvVar(options.secretFromEnv, 'API secret');
76
+ }
77
+ if (options.passphraseFromEnv) {
78
+ if (options.passphrase) {
79
+ console.error('❌ Cannot use both --passphrase and --passphrase-from-env');
80
+ process.exit(1);
81
+ }
82
+ options.passphrase = resolveEnvVar(options.passphraseFromEnv, 'passphrase');
83
+ }
84
+ // Lazy readline — only created when a prompt is actually needed.
85
+ // Prevents the process from hanging on stdin when fully non-interactive.
86
+ let _rl = null;
87
+ let prompted = false;
88
+ function getRL() {
89
+ if (!_rl) {
90
+ _rl = readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
91
+ }
92
+ prompted = true;
93
+ return _rl;
94
+ }
95
+ function closeRL() {
96
+ if (_rl)
97
+ _rl.close();
98
+ }
54
99
  // Service name
55
100
  if (!serviceName) {
56
- serviceName = await rl.question('Service name (or search term): ');
101
+ serviceName = await getRL().question('Service name (or search term): ');
57
102
  serviceName = serviceName.trim();
58
103
  }
59
104
  if (!serviceName) {
60
105
  console.error('❌ Service name is required');
61
- rl.close();
62
106
  process.exit(1);
63
107
  }
64
108
  const config = (0, config_yaml_1.loadYAMLConfig)();
65
109
  // Check if service already exists
66
110
  if (config.services[serviceName]) {
67
111
  console.error(`❌ Service "${serviceName}" already exists`);
68
- rl.close();
69
112
  process.exit(1);
70
113
  }
71
114
  // Check directory for known service
@@ -76,7 +119,7 @@ async function addCommand(serviceName, options = {}) {
76
119
  if (matches.length === 1) {
77
120
  // Single match - suggest it
78
121
  const suggest = matches[0];
79
- const useIt = await rl.question(`Found "${suggest.name}" (${suggest.description}). Use it? (Y/n): `);
122
+ const useIt = await getRL().question(`Found "${suggest.name}" (${suggest.description}). Use it? (Y/n): `);
80
123
  if (!useIt || useIt.toLowerCase() === 'y' || useIt.toLowerCase() === 'yes') {
81
124
  template = suggest;
82
125
  serviceName = suggest.name;
@@ -86,7 +129,7 @@ async function addCommand(serviceName, options = {}) {
86
129
  // Multiple matches - list them
87
130
  console.log(`\nFound ${matches.length} matching services:`);
88
131
  matches.forEach((m, i) => console.log(` ${i + 1}. ${m.name} - ${m.description}`));
89
- const choice = await rl.question('Enter number to use, or press Enter to configure manually: ');
132
+ const choice = await getRL().question('Enter number to use, or press Enter to configure manually: ');
90
133
  const idx = parseInt(choice) - 1;
91
134
  if (idx >= 0 && idx < matches.length) {
92
135
  template = matches[idx];
@@ -108,7 +151,7 @@ async function addCommand(serviceName, options = {}) {
108
151
  authType = template.auth.type;
109
152
  // Handle services with placeholder URLs (like Supabase)
110
153
  if (baseUrl.includes('<')) {
111
- baseUrl = await rl.question(`Base URL (template: ${baseUrl}): `);
154
+ baseUrl = options.url || await getRL().question(`Base URL (template: ${baseUrl}): `);
112
155
  baseUrl = baseUrl.trim();
113
156
  }
114
157
  }
@@ -118,12 +161,11 @@ async function addCommand(serviceName, options = {}) {
118
161
  // Base URL
119
162
  baseUrl = options.url || '';
120
163
  if (!baseUrl) {
121
- baseUrl = await rl.question('Base URL: ');
164
+ baseUrl = await getRL().question('Base URL: ');
122
165
  baseUrl = baseUrl.trim();
123
166
  }
124
167
  if (!baseUrl || !baseUrl.startsWith('http')) {
125
168
  console.error('❌ Invalid base URL. Must start with http:// or https://');
126
- rl.close();
127
169
  process.exit(1);
128
170
  }
129
171
  // Auth type
@@ -178,12 +220,11 @@ async function addCommand(serviceName, options = {}) {
178
220
  if (authType === 'bearer') {
179
221
  let apiKey = options.key;
180
222
  if (!apiKey) {
181
- apiKey = await rl.question('API key: ');
223
+ apiKey = await getRL().question('API key: ');
182
224
  apiKey = apiKey.trim();
183
225
  }
184
226
  if (!apiKey) {
185
227
  console.error('❌ API key is required');
186
- rl.close();
187
228
  process.exit(1);
188
229
  }
189
230
  auth = {
@@ -192,11 +233,10 @@ async function addCommand(serviceName, options = {}) {
192
233
  };
193
234
  }
194
235
  else if (authType === 'basic') {
195
- const username = await rl.question('Username/Account ID: ');
196
- const password = await rl.question('Password/Auth Token: ');
236
+ const username = await getRL().question('Username/Account ID: ');
237
+ const password = await getRL().question('Password/Auth Token: ');
197
238
  if (!username || !password) {
198
239
  console.error('❌ Username and password are required for basic auth');
199
- rl.close();
200
240
  process.exit(1);
201
241
  }
202
242
  // For basic auth, we encode credentials as a special bearer token
@@ -208,11 +248,16 @@ async function addCommand(serviceName, options = {}) {
208
248
  };
209
249
  }
210
250
  else if (authType === 'hmac' || authType === 'hmac-bybit') {
211
- const apiKey = await rl.question('API key: ');
212
- const apiSecret = await rl.question('API secret: ');
251
+ let apiKey = options.key;
252
+ let apiSecret = options.apiSecret;
253
+ if (!apiKey) {
254
+ apiKey = await getRL().question('API key: ');
255
+ }
256
+ if (!apiSecret) {
257
+ apiSecret = await getRL().question('API secret: ');
258
+ }
213
259
  if (!apiKey || !apiSecret) {
214
260
  console.error('❌ API key and secret are required for HMAC');
215
- rl.close();
216
261
  process.exit(1);
217
262
  }
218
263
  auth = {
@@ -222,12 +267,20 @@ async function addCommand(serviceName, options = {}) {
222
267
  };
223
268
  }
224
269
  else if (authType === 'hmac-okx') {
225
- const apiKey = await rl.question('API key: ');
226
- const apiSecret = await rl.question('API secret: ');
227
- const passphrase = await rl.question('Passphrase: ');
270
+ let apiKey = options.key;
271
+ let apiSecret = options.apiSecret;
272
+ let passphrase = options.passphrase;
273
+ if (!apiKey) {
274
+ apiKey = await getRL().question('API key: ');
275
+ }
276
+ if (!apiSecret) {
277
+ apiSecret = await getRL().question('API secret: ');
278
+ }
279
+ if (!passphrase) {
280
+ passphrase = await getRL().question('Passphrase: ');
281
+ }
228
282
  if (!apiKey || !apiSecret || !passphrase) {
229
283
  console.error('❌ API key, secret, and passphrase are required for OKX');
230
- rl.close();
231
284
  process.exit(1);
232
285
  }
233
286
  auth = {
@@ -242,12 +295,11 @@ async function addCommand(serviceName, options = {}) {
242
295
  // Get credentials file path
243
296
  let credentialsPath = options.credentialsFile;
244
297
  if (!credentialsPath) {
245
- credentialsPath = await rl.question('📄 Path to service account JSON file: ');
298
+ credentialsPath = await getRL().question('📄 Path to service account JSON file: ');
246
299
  credentialsPath = credentialsPath.trim();
247
300
  }
248
301
  if (!credentialsPath) {
249
302
  console.error('❌ Credentials file path is required');
250
- rl.close();
251
303
  process.exit(1);
252
304
  }
253
305
  // Expand ~ to home directory
@@ -274,7 +326,6 @@ async function addCommand(serviceName, options = {}) {
274
326
  else {
275
327
  console.error('❌ Invalid service account JSON:', error instanceof Error ? error.message : 'Unknown error');
276
328
  }
277
- rl.close();
278
329
  process.exit(1);
279
330
  }
280
331
  // Get scopes
@@ -287,7 +338,7 @@ async function addCommand(serviceName, options = {}) {
287
338
  // Interactive: ask for scopes
288
339
  console.log('\nEnter OAuth scopes (one per line, empty line to finish):');
289
340
  while (true) {
290
- const scope = await rl.question(' ');
341
+ const scope = await getRL().question(' ');
291
342
  if (!scope.trim())
292
343
  break;
293
344
  scopes.push(scope.trim());
@@ -295,7 +346,6 @@ async function addCommand(serviceName, options = {}) {
295
346
  }
296
347
  if (scopes.length === 0) {
297
348
  console.error('❌ At least one scope is required');
298
- rl.close();
299
349
  process.exit(1);
300
350
  }
301
351
  // Test authentication
@@ -306,7 +356,6 @@ async function addCommand(serviceName, options = {}) {
306
356
  }
307
357
  catch (error) {
308
358
  console.error('❌ Authentication failed:', error instanceof Error ? error.message : 'Unknown error');
309
- rl.close();
310
359
  process.exit(1);
311
360
  }
312
361
  auth = {
@@ -320,7 +369,7 @@ async function addCommand(serviceName, options = {}) {
320
369
  console.log('Enter headers as key:value pairs (empty line to finish):');
321
370
  const headers = {};
322
371
  while (true) {
323
- const line = await rl.question(' ');
372
+ const line = await getRL().question(' ');
324
373
  if (!line.trim())
325
374
  break;
326
375
  const [key, ...valueParts] = line.split(':');
@@ -331,7 +380,6 @@ async function addCommand(serviceName, options = {}) {
331
380
  }
332
381
  if (Object.keys(headers).length === 0) {
333
382
  console.error('❌ At least one header is required');
334
- rl.close();
335
383
  process.exit(1);
336
384
  }
337
385
  auth = {
@@ -347,24 +395,39 @@ async function addCommand(serviceName, options = {}) {
347
395
  (0, config_yaml_1.saveYAMLConfig)(config);
348
396
  console.log(`✅ Added service "${serviceName}"`);
349
397
  console.log();
398
+ // If readline was never opened, we're fully non-interactive.
399
+ // Auto-create a capability with sensible defaults instead of prompting.
400
+ if (!prompted) {
401
+ if (!config.capabilities[serviceName]) {
402
+ config.capabilities[serviceName] = {
403
+ service: serviceName,
404
+ ttl: '1h',
405
+ autoApprove: true,
406
+ };
407
+ (0, config_yaml_1.saveYAMLConfig)(config);
408
+ console.log(`✅ Added capability "${serviceName}" (1h TTL, auto-approve)`);
409
+ console.log();
410
+ }
411
+ console.log("Done! Run 'janee serve' to start.");
412
+ return;
413
+ }
350
414
  // Ask about capability
351
- const createCapAnswer = await rl.question('Create a capability for this service? (Y/n): ');
415
+ const createCapAnswer = await getRL().question('Create a capability for this service? (Y/n): ');
352
416
  const createCap = !createCapAnswer || createCapAnswer.toLowerCase() === 'y' || createCapAnswer.toLowerCase() === 'yes';
353
417
  if (createCap) {
354
418
  const capNameDefault = serviceName;
355
- const capNameInput = await rl.question(`Capability name (default: ${capNameDefault}): `);
419
+ const capNameInput = await getRL().question(`Capability name (default: ${capNameDefault}): `);
356
420
  const capName = capNameInput.trim() || capNameDefault;
357
421
  // Check if capability already exists
358
422
  if (config.capabilities[capName]) {
359
423
  console.error(`❌ Capability "${capName}" already exists`);
360
- rl.close();
361
424
  process.exit(1);
362
425
  }
363
- const ttlInput = await rl.question('TTL (e.g., 1h, 30m): ');
426
+ const ttlInput = await getRL().question('TTL (e.g., 1h, 30m): ');
364
427
  const ttl = ttlInput.trim() || '1h';
365
- const autoApproveInput = await rl.question('Auto-approve? (Y/n): ');
428
+ const autoApproveInput = await getRL().question('Auto-approve? (Y/n): ');
366
429
  const autoApprove = !autoApproveInput || autoApproveInput.toLowerCase() === 'y' || autoApproveInput.toLowerCase() === 'yes';
367
- const requiresReasonInput = await rl.question('Requires reason? (y/N): ');
430
+ const requiresReasonInput = await getRL().question('Requires reason? (y/N): ');
368
431
  const requiresReason = requiresReasonInput.toLowerCase() === 'y' || requiresReasonInput.toLowerCase() === 'yes';
369
432
  // Add capability
370
433
  config.capabilities[capName] = {
@@ -377,7 +440,7 @@ async function addCommand(serviceName, options = {}) {
377
440
  console.log(`✅ Added capability "${capName}"`);
378
441
  console.log();
379
442
  }
380
- rl.close();
443
+ closeRL();
381
444
  console.log("Done! Run 'janee serve' to start.");
382
445
  }
383
446
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -31,6 +31,11 @@ program
31
31
  .option('-u, --url <url>', 'Base URL of the service')
32
32
  .option('-k, --key <key>', 'API key for the service')
33
33
  .option('--auth-type <type>', 'Authentication type (bearer/basic/hmac/hmac-bybit/hmac-okx/headers/service-account)')
34
+ .option('--api-secret <secret>', 'API secret (for hmac auth types)')
35
+ .option('--passphrase <passphrase>', 'Passphrase (for hmac-okx)')
36
+ .option('--key-from-env <var>', 'Read API key from environment variable')
37
+ .option('--secret-from-env <var>', 'Read API secret from environment variable')
38
+ .option('--passphrase-from-env <var>', 'Read passphrase from environment variable')
34
39
  .option('--credentials-file <path>', 'Path to service account JSON file (for service-account auth type)')
35
40
  .option('--scope <scope...>', 'OAuth scope(s) for service-account auth type')
36
41
  .action(add_1.addCommand);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;AAC5C,8CAAkD;AAClD,4CAAgD;AAChD,0CAA8C;AAC9C,0CAA8C;AAC9C,kDAAsD;AACtD,8CAAkD;AAClD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,kCAAkC,CAAC;KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,WAAW;AACX,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,oBAAoB,EAAE,qFAAqF,CAAC;KACnH,MAAM,CAAC,2BAA2B,EAAE,mEAAmE,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACnD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAErE,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;AAC5C,8CAAkD;AAClD,4CAAgD;AAChD,0CAA8C;AAC9C,0CAA8C;AAC9C,kDAAsD;AACtD,8CAAkD;AAClD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,kCAAkC,CAAC;KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,WAAW;AACX,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;KACpD,MAAM,CAAC,oBAAoB,EAAE,qFAAqF,CAAC;KACnH,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;KAChE,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;KACxE,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;KAC9E,MAAM,CAAC,6BAA6B,EAAE,2CAA2C,CAAC;KAClF,MAAM,CAAC,2BAA2B,EAAE,mEAAmE,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACnD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAErE,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@true-and-useful/janee",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "Secrets management for AI agents via MCP",
5
5
  "main": "dist/index.js",
6
6
  "bin": {