@true-and-useful/janee 0.8.4 → 0.9.0

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 (67) hide show
  1. package/README.md +81 -1
  2. package/SKILL.md +5 -0
  3. package/dist/cli/commands/add.d.ts +6 -0
  4. package/dist/cli/commands/add.d.ts.map +1 -1
  5. package/dist/cli/commands/add.js +216 -6
  6. package/dist/cli/commands/add.js.map +1 -1
  7. package/dist/cli/commands/serve-mcp.d.ts.map +1 -1
  8. package/dist/cli/commands/serve-mcp.js +71 -1
  9. package/dist/cli/commands/serve-mcp.js.map +1 -1
  10. package/dist/cli/commands/status.d.ts +4 -0
  11. package/dist/cli/commands/status.d.ts.map +1 -0
  12. package/dist/cli/commands/status.js +127 -0
  13. package/dist/cli/commands/status.js.map +1 -0
  14. package/dist/cli/config-yaml.d.ts +22 -1
  15. package/dist/cli/config-yaml.d.ts.map +1 -1
  16. package/dist/cli/config-yaml.js +34 -1
  17. package/dist/cli/config-yaml.js.map +1 -1
  18. package/dist/cli/index.js +16 -1
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/core/agent-scope.d.ts +81 -0
  21. package/dist/core/agent-scope.d.ts.map +1 -0
  22. package/dist/core/agent-scope.js +146 -0
  23. package/dist/core/agent-scope.js.map +1 -0
  24. package/dist/core/directory.d.ts +1 -1
  25. package/dist/core/directory.d.ts.map +1 -1
  26. package/dist/core/directory.js +8 -0
  27. package/dist/core/directory.js.map +1 -1
  28. package/dist/core/exec.d.ts +86 -0
  29. package/dist/core/exec.d.ts.map +1 -0
  30. package/dist/core/exec.js +149 -0
  31. package/dist/core/exec.js.map +1 -0
  32. package/dist/core/github-app.d.ts +32 -0
  33. package/dist/core/github-app.d.ts.map +1 -0
  34. package/dist/core/github-app.js +105 -0
  35. package/dist/core/github-app.js.map +1 -0
  36. package/dist/core/health.d.ts +27 -0
  37. package/dist/core/health.d.ts.map +1 -0
  38. package/dist/core/health.js +73 -0
  39. package/dist/core/health.js.map +1 -0
  40. package/dist/core/mcp-server.d.ts +17 -1
  41. package/dist/core/mcp-server.d.ts.map +1 -1
  42. package/dist/core/mcp-server.js +299 -11
  43. package/dist/core/mcp-server.js.map +1 -1
  44. package/dist/core/sessions.d.ts.map +1 -1
  45. package/dist/core/sessions.js +11 -1
  46. package/dist/core/sessions.js.map +1 -1
  47. package/dist/providers/env.d.ts +27 -0
  48. package/dist/providers/env.d.ts.map +1 -0
  49. package/dist/providers/env.js +64 -0
  50. package/dist/providers/env.js.map +1 -0
  51. package/dist/providers/filesystem.d.ts +34 -0
  52. package/dist/providers/filesystem.d.ts.map +1 -0
  53. package/dist/providers/filesystem.js +143 -0
  54. package/dist/providers/filesystem.js.map +1 -0
  55. package/dist/providers/index.d.ts +25 -0
  56. package/dist/providers/index.d.ts.map +1 -0
  57. package/dist/providers/index.js +39 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/registry.d.ts +40 -0
  60. package/dist/providers/registry.d.ts.map +1 -0
  61. package/dist/providers/registry.js +113 -0
  62. package/dist/providers/registry.js.map +1 -0
  63. package/dist/providers/types.d.ts +137 -0
  64. package/dist/providers/types.d.ts.map +1 -0
  65. package/dist/providers/types.js +135 -0
  66. package/dist/providers/types.js.map +1 -0
  67. package/package.json +1 -1
package/README.md CHANGED
@@ -21,6 +21,7 @@
21
21
  | ⏱️ **Session TTLs** | Time-limited access with instant revocation |
22
22
  | 🔌 **Works with any MCP client** | Claude Desktop, Cursor, OpenClaw, and more |
23
23
  | 🏠 **Local-first** | Keys encrypted on your machine, never sent to a cloud |
24
+ | 🖥️ **Exec mode** | Run CLI tools with injected credentials — agents never see the keys |
24
25
 
25
26
  ---
26
27
 
@@ -144,6 +145,37 @@ capabilities:
144
145
  autoApprove: true
145
146
  ```
146
147
 
148
+ ### Add CLI tools (exec mode)
149
+
150
+ Some tools need credentials as environment variables, not HTTP headers. Exec mode handles this:
151
+
152
+ ```bash
153
+ janee add twitter --exec \
154
+ --key "tvly-xxx" \
155
+ --allow-commands "bird,tweet-cli" \
156
+ --env-map "TWITTER_API_KEY={{credential}}"
157
+ ```
158
+
159
+ Now agents can run CLI tools through Janee without ever seeing the API key:
160
+
161
+ ```typescript
162
+ // Agent calls janee_exec tool
163
+ janee_exec({
164
+ capability: "twitter",
165
+ command: ["bird", "post", "Hello world!"],
166
+ reason: "User asked to post a tweet"
167
+ })
168
+ ```
169
+
170
+ Janee spawns the process with `TWITTER_API_KEY` injected, runs the command, and returns stdout/stderr. The credential never enters the agent's context.
171
+
172
+ **Key flags:**
173
+ - `--exec` — configure as exec-mode (CLI wrapper instead of HTTP proxy)
174
+ - `--allow-commands` — whitelist of allowed executables (security)
175
+ - `--env-map` — map credentials to environment variables
176
+ - `--work-dir` — working directory for the subprocess
177
+ - `--timeout` — max execution time (default: 30s)
178
+
147
179
  ### Start the MCP server
148
180
 
149
181
  ```bash
@@ -223,7 +255,8 @@ Janee exposes three MCP tools:
223
255
  | Tool | Description |
224
256
  |------|-------------|
225
257
  | `list_services` | Discover available APIs and their policies |
226
- | `execute` | Make an API request through Janee |
258
+ | `execute` | Make an API request through Janee (HTTP proxy mode) |
259
+ | `exec` | Run a CLI command with injected credentials (exec mode) |
227
260
  | `reload_config` | Reload config from disk after adding/removing services (available when started with `janee serve`) |
228
261
 
229
262
  Agents discover what's available, then call APIs through Janee. Same audit trail, same protection.
@@ -266,6 +299,28 @@ capabilities:
266
299
  **Services** = Real APIs with real keys
267
300
  **Capabilities** = What agents can request, with policies
268
301
 
302
+ ### Exec mode capabilities
303
+
304
+ ```yaml
305
+ services:
306
+ twitter:
307
+ auth:
308
+ type: bearer
309
+ key: tvly-xxx
310
+
311
+ capabilities:
312
+ twitter:
313
+ service: twitter
314
+ mode: exec
315
+ allowCommands: ["bird", "tweet-cli"]
316
+ envMap:
317
+ TWITTER_API_KEY: "{{credential}}"
318
+ ttl: 1h
319
+ autoApprove: true
320
+ ```
321
+
322
+ Exec-mode capabilities use `janee_exec` instead of `execute`. The credential is injected as an environment variable — the agent sees only stdout/stderr.
323
+
269
324
  ---
270
325
 
271
326
  ## Request Policies
@@ -399,6 +454,31 @@ Agent never touches the real key.
399
454
 
400
455
  ---
401
456
 
457
+
458
+ ## Docker
459
+
460
+ Run Janee as a container — no local Node.js required:
461
+
462
+ ```bash
463
+ # Build
464
+ docker build -t janee .
465
+
466
+ # Run in HTTP mode
467
+ docker run -d -p 3000:3000 \
468
+ -v ~/.janee:/root/.janee:ro \
469
+ janee --transport http --port 3000 --host 0.0.0.0
470
+ ```
471
+
472
+ Or use Docker Compose:
473
+
474
+ ```bash
475
+ mkdir -p config && cp ~/.janee/config.yaml config/
476
+ docker compose up -d
477
+ ```
478
+
479
+ For Claude Desktop with Docker, see [Docker docs](docs/docker.md).
480
+
481
+ ---
402
482
  ## Contributing
403
483
 
404
484
  We welcome contributions! Please read **[CONTRIBUTING.md](docs/CONTRIBUTING.md)** before submitting a PR — it includes the required PR checklist (tests, changelog, version bump, etc.).
package/SKILL.md CHANGED
@@ -100,6 +100,11 @@ For Google service accounts:
100
100
  janee add analytics --auth-type service-account --credentials-file path.json \
101
101
  --scope https://www.googleapis.com/auth/analytics.readonly
102
102
 
103
+ For GitHub Apps (installation tokens, auto-refreshed):
104
+
105
+ janee add github-app --auth-type github-app --pem-file key.pem \
106
+ --app-id 123456 --installation-id 789012
107
+
103
108
  ## Migrating Existing Keys
104
109
 
105
110
  If you see API keys in the user's environment (.env files, shell config, etc.):
@@ -10,6 +10,12 @@ export declare function addCommand(serviceName?: string, options?: {
10
10
  passphraseFromEnv?: string;
11
11
  credentialsFile?: string;
12
12
  scope?: string | string[];
13
+ exec?: boolean;
14
+ allowCommands?: string[];
15
+ envMap?: string[];
16
+ workDir?: string;
17
+ timeout?: string;
18
+ header?: string[];
13
19
  json?: boolean;
14
20
  }): Promise<void>;
15
21
  //# sourceMappingURL=add.d.ts.map
@@ -1 +1 @@
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;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAgff"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AA6CA,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;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAspBf"}
@@ -43,6 +43,7 @@ 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
+ const github_app_1 = require("../../core/github-app");
46
47
  function resolveEnvVar(varName, label) {
47
48
  const value = process.env[varName];
48
49
  if (!value) {
@@ -51,6 +52,29 @@ function resolveEnvVar(varName, label) {
51
52
  }
52
53
  return value.trim();
53
54
  }
55
+ /**
56
+ * Parse --env-map arguments like KEY=value or KEY={{credential}} into a Record.
57
+ * Example: ["TWITTER_API_KEY={{credential}}", "TWITTER_USER=myhandle"]
58
+ * → { TWITTER_API_KEY: "{{credential}}", TWITTER_USER: "myhandle" }
59
+ */
60
+ function parseEnvMap(mappings) {
61
+ const result = {};
62
+ for (const mapping of mappings) {
63
+ const eqIdx = mapping.indexOf('=');
64
+ if (eqIdx === -1) {
65
+ console.error(`❌ Invalid --env-map format: "${mapping}" (expected KEY=value)`);
66
+ process.exit(1);
67
+ }
68
+ const key = mapping.slice(0, eqIdx).trim();
69
+ const value = mapping.slice(eqIdx + 1).trim();
70
+ if (!key) {
71
+ console.error(`❌ Invalid --env-map format: "${mapping}" (empty key)`);
72
+ process.exit(1);
73
+ }
74
+ result[key] = value;
75
+ }
76
+ return result;
77
+ }
54
78
  async function addCommand(serviceName, options = {}) {
55
79
  try {
56
80
  // Check for YAML config
@@ -86,6 +110,25 @@ async function addCommand(serviceName, options = {}) {
86
110
  }
87
111
  options.passphrase = resolveEnvVar(options.passphraseFromEnv, 'passphrase');
88
112
  }
113
+ // Exec mode validation (RFC 0001)
114
+ if (options.exec && !options.allowCommands?.length) {
115
+ if (options.json) {
116
+ console.log(JSON.stringify({ ok: false, error: '--exec requires --allow-commands (whitelist of allowed executables)' }));
117
+ }
118
+ else {
119
+ console.error('❌ --exec requires --allow-commands (whitelist of allowed executables)');
120
+ }
121
+ process.exit(1);
122
+ }
123
+ if (!options.exec && (options.allowCommands || options.envMap || options.workDir || options.timeout)) {
124
+ if (options.json) {
125
+ console.log(JSON.stringify({ ok: false, error: '--allow-commands, --env-map, --work-dir, and --timeout require --exec' }));
126
+ }
127
+ else {
128
+ console.error('❌ --allow-commands, --env-map, --work-dir, and --timeout require --exec');
129
+ }
130
+ process.exit(1);
131
+ }
89
132
  // Lazy readline — only created when a prompt is actually needed.
90
133
  // Prevents the process from hanging on stdin when fully non-interactive.
91
134
  let _rl = null;
@@ -206,6 +249,11 @@ async function addCommand(serviceName, options = {}) {
206
249
  value: 'service-account',
207
250
  description: 'Service account JSON for Google Analytics, Sheets, etc.'
208
251
  },
252
+ {
253
+ name: 'github-app — GitHub App installation tokens',
254
+ value: 'github-app',
255
+ description: 'GitHub App with PEM key — mints short-lived installation tokens'
256
+ },
209
257
  {
210
258
  name: 'hmac — Request signing (generic)',
211
259
  value: 'hmac-mexc',
@@ -387,6 +435,72 @@ async function addCommand(serviceName, options = {}) {
387
435
  scopes
388
436
  };
389
437
  }
438
+ else if (authType === 'github-app') {
439
+ if (!options.json)
440
+ console.log('\n🔑 GitHub App Setup');
441
+ let appId = options.appId;
442
+ if (!appId) {
443
+ appId = await getRL().question('App ID: ');
444
+ appId = appId.trim();
445
+ }
446
+ if (!appId) {
447
+ console.error('❌ App ID is required');
448
+ process.exit(1);
449
+ }
450
+ let pemPath = options.pemFile;
451
+ if (!pemPath) {
452
+ pemPath = await getRL().question('📄 Path to private key PEM file: ');
453
+ pemPath = pemPath.trim();
454
+ }
455
+ if (!pemPath) {
456
+ console.error('❌ PEM file path is required');
457
+ process.exit(1);
458
+ }
459
+ if (pemPath.startsWith('~/')) {
460
+ pemPath = path.join(os.homedir(), pemPath.slice(2));
461
+ }
462
+ let privateKeyPem;
463
+ try {
464
+ privateKeyPem = fs.readFileSync(pemPath, 'utf-8');
465
+ }
466
+ catch (error) {
467
+ if (error.code === 'ENOENT') {
468
+ console.error(`❌ File not found: ${pemPath}`);
469
+ }
470
+ else {
471
+ console.error('❌ Could not read PEM file:', error instanceof Error ? error.message : 'Unknown error');
472
+ }
473
+ process.exit(1);
474
+ }
475
+ let installationId = options.installationId;
476
+ if (!installationId) {
477
+ installationId = await getRL().question('Installation ID: ');
478
+ installationId = installationId.trim();
479
+ }
480
+ if (!installationId) {
481
+ console.error('❌ Installation ID is required');
482
+ process.exit(1);
483
+ }
484
+ const ghCreds = { appId, privateKey: privateKeyPem, installationId };
485
+ (0, github_app_1.validateGitHubAppCredentials)(ghCreds);
486
+ if (!options.json)
487
+ console.log('\n🔐 Testing authentication...');
488
+ try {
489
+ await (0, github_app_1.testGitHubAppAuth)(ghCreds);
490
+ if (!options.json)
491
+ console.log('✅ Authentication successful');
492
+ }
493
+ catch (error) {
494
+ console.error('❌ Authentication failed:', error instanceof Error ? error.message : 'Unknown error');
495
+ process.exit(1);
496
+ }
497
+ auth = {
498
+ type: 'github-app',
499
+ appId,
500
+ privateKey: privateKeyPem,
501
+ installationId,
502
+ };
503
+ }
390
504
  else if (authType === 'headers' && template?.auth.fields.length === 1 && options.key) {
391
505
  // Template tells us the header name, --key provides the value
392
506
  auth = {
@@ -394,8 +508,60 @@ async function addCommand(serviceName, options = {}) {
394
508
  headers: { [template.auth.fields[0]]: options.key }
395
509
  };
396
510
  }
511
+ else if (authType === 'headers' && options.header?.length) {
512
+ // --header flag(s): parse name=value pairs non-interactively
513
+ const headers = {};
514
+ for (const pair of options.header) {
515
+ const eqIdx = pair.indexOf('=');
516
+ if (eqIdx === -1) {
517
+ if (options.json) {
518
+ console.log(JSON.stringify({ ok: false, error: `Invalid --header format: "${pair}" (expected name=value)` }));
519
+ }
520
+ else {
521
+ console.error(`❌ Invalid --header format: "${pair}" (expected name=value)`);
522
+ }
523
+ process.exit(1);
524
+ }
525
+ const name = pair.slice(0, eqIdx).trim();
526
+ const value = pair.slice(eqIdx + 1).trim();
527
+ if (!name) {
528
+ if (options.json) {
529
+ console.log(JSON.stringify({ ok: false, error: `Invalid --header format: "${pair}" (empty header name)` }));
530
+ }
531
+ else {
532
+ console.error(`❌ Invalid --header format: "${pair}" (empty header name)`);
533
+ }
534
+ process.exit(1);
535
+ }
536
+ if (!value) {
537
+ if (options.json) {
538
+ console.log(JSON.stringify({ ok: false, error: `Invalid --header format: "${pair}" (empty value for ${name})` }));
539
+ }
540
+ else {
541
+ console.error(`❌ Invalid --header format: "${pair}" (empty value for ${name})`);
542
+ }
543
+ process.exit(1);
544
+ }
545
+ headers[name] = value;
546
+ }
547
+ auth = {
548
+ type: 'headers',
549
+ headers
550
+ };
551
+ }
552
+ else if (authType === 'headers' && options.key && !template) {
553
+ // Single --key with no template: prompt for header name or use a sensible message
554
+ if (options.json) {
555
+ console.log(JSON.stringify({ ok: false, error: 'headers auth type requires --header name=value (not --key). Use: --header "api-key=<value>"' }));
556
+ }
557
+ else {
558
+ console.error('❌ headers auth type requires --header name=value (not --key).');
559
+ console.error(' Use: --header "api-key=<value>"');
560
+ }
561
+ process.exit(1);
562
+ }
397
563
  else {
398
- // headers
564
+ // Interactive headers fallback
399
565
  if (!options.json)
400
566
  console.log('Enter headers as key:value pairs (empty line to finish):');
401
567
  const headers = {};
@@ -434,14 +600,28 @@ async function addCommand(serviceName, options = {}) {
434
600
  // If readline was never opened, we're fully non-interactive.
435
601
  // Auto-create a capability with sensible defaults.
436
602
  if (!prompted && !config.capabilities[serviceName]) {
437
- config.capabilities[serviceName] = {
603
+ const capConfig = {
438
604
  service: serviceName,
439
605
  ttl: '1h',
440
606
  autoApprove: true,
441
607
  };
608
+ if (options.exec) {
609
+ capConfig.mode = 'exec';
610
+ if (options.allowCommands)
611
+ capConfig.allowCommands = options.allowCommands;
612
+ if (options.envMap)
613
+ capConfig.env = parseEnvMap(options.envMap);
614
+ if (options.workDir)
615
+ capConfig.workDir = options.workDir;
616
+ if (options.timeout)
617
+ capConfig.timeout = parseInt(options.timeout, 10);
618
+ }
619
+ config.capabilities[serviceName] = capConfig;
442
620
  (0, config_yaml_1.saveYAMLConfig)(config);
443
621
  result.capability = serviceName;
444
- result.capabilityMessage = `Added capability "${serviceName}" (1h TTL, auto-approve)`;
622
+ result.capabilityMessage = options.exec
623
+ ? `Added exec-mode capability "${serviceName}" (1h TTL, auto-approve, commands: ${(options.allowCommands || []).join(', ')})`
624
+ : `Added capability "${serviceName}" (1h TTL, auto-approve)`;
445
625
  }
446
626
  console.log(JSON.stringify(result));
447
627
  return;
@@ -452,13 +632,31 @@ async function addCommand(serviceName, options = {}) {
452
632
  // Auto-create a capability with sensible defaults instead of prompting.
453
633
  if (!prompted) {
454
634
  if (!config.capabilities[serviceName]) {
455
- config.capabilities[serviceName] = {
635
+ const capConfig = {
456
636
  service: serviceName,
457
637
  ttl: '1h',
458
638
  autoApprove: true,
459
639
  };
640
+ if (options.exec) {
641
+ capConfig.mode = 'exec';
642
+ if (options.allowCommands)
643
+ capConfig.allowCommands = options.allowCommands;
644
+ if (options.envMap)
645
+ capConfig.env = parseEnvMap(options.envMap);
646
+ if (options.workDir)
647
+ capConfig.workDir = options.workDir;
648
+ if (options.timeout)
649
+ capConfig.timeout = parseInt(options.timeout, 10);
650
+ }
651
+ config.capabilities[serviceName] = capConfig;
460
652
  (0, config_yaml_1.saveYAMLConfig)(config);
461
- console.log(`✅ Added capability "${serviceName}" (1h TTL, auto-approve)`);
653
+ if (options.exec) {
654
+ console.log(`✅ Added exec-mode capability "${serviceName}" (1h TTL, auto-approve)`);
655
+ console.log(` Allowed commands: ${(options.allowCommands || []).join(', ')}`);
656
+ }
657
+ else {
658
+ console.log(`✅ Added capability "${serviceName}" (1h TTL, auto-approve)`);
659
+ }
462
660
  console.log();
463
661
  }
464
662
  console.log("Done! Run 'janee serve' to start.");
@@ -483,12 +681,24 @@ async function addCommand(serviceName, options = {}) {
483
681
  const requiresReasonInput = await getRL().question('Requires reason? (y/N): ');
484
682
  const requiresReason = requiresReasonInput.toLowerCase() === 'y' || requiresReasonInput.toLowerCase() === 'yes';
485
683
  // Add capability
486
- config.capabilities[capName] = {
684
+ const capConfig = {
487
685
  service: serviceName,
488
686
  ttl,
489
687
  autoApprove,
490
688
  requiresReason
491
689
  };
690
+ if (options.exec) {
691
+ capConfig.mode = 'exec';
692
+ if (options.allowCommands)
693
+ capConfig.allowCommands = options.allowCommands;
694
+ if (options.envMap)
695
+ capConfig.env = parseEnvMap(options.envMap);
696
+ if (options.workDir)
697
+ capConfig.workDir = options.workDir;
698
+ if (options.timeout)
699
+ capConfig.timeout = parseInt(options.timeout, 10);
700
+ }
701
+ config.capabilities[capName] = capConfig;
492
702
  (0, config_yaml_1.saveYAMLConfig)(config);
493
703
  console.log(`✅ Added capability "${capName}"`);
494
704
  console.log();
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve-mcp.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve-mcp.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KlF"}
1
+ {"version":3,"file":"serve-mcp.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve-mcp.ts"],"names":[],"mappings":"AA0CA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkPlF"}
@@ -8,7 +8,9 @@ const audit_1 = require("../../core/audit");
8
8
  const config_yaml_2 = require("../config-yaml");
9
9
  const signing_1 = require("../../core/signing");
10
10
  const service_account_1 = require("../../core/service-account");
11
+ const github_app_1 = require("../../core/github-app");
11
12
  const url_1 = require("url");
13
+ const exec_js_1 = require("../../core/exec.js");
12
14
  /**
13
15
  * Load config and convert to MCP format
14
16
  */
@@ -20,7 +22,13 @@ function loadConfigForMCP() {
20
22
  ttl: cap.ttl,
21
23
  autoApprove: cap.autoApprove,
22
24
  requiresReason: cap.requiresReason,
23
- rules: cap.rules
25
+ rules: cap.rules,
26
+ // Exec mode fields (RFC 0001)
27
+ mode: cap.mode || 'proxy',
28
+ allowCommands: cap.allowCommands,
29
+ env: cap.env,
30
+ workDir: cap.workDir,
31
+ timeout: cap.timeout,
24
32
  }));
25
33
  const services = new Map();
26
34
  for (const [name, service] of Object.entries(config.services)) {
@@ -63,6 +71,47 @@ async function serveMCPCommand(options = {}) {
63
71
  services,
64
72
  sessionManager,
65
73
  auditLogger,
74
+ // RFC 0001: Secure CLI execution handler
75
+ onExecCommand: async (session, capability, command, stdin) => {
76
+ // Get service config for credentials
77
+ const serviceConfig = currentServices.get(capability.service);
78
+ if (!serviceConfig) {
79
+ throw new Error(`Service not found: ${capability.service}`);
80
+ }
81
+ // Determine credential from service auth
82
+ let credential = '';
83
+ let extraCredentials;
84
+ if (serviceConfig.auth.type === 'bearer' && serviceConfig.auth.key) {
85
+ credential = serviceConfig.auth.key;
86
+ }
87
+ else if (serviceConfig.auth.type === 'hmac-mexc' ||
88
+ serviceConfig.auth.type === 'hmac-bybit' ||
89
+ serviceConfig.auth.type === 'hmac-okx') {
90
+ extraCredentials = {
91
+ apiKey: serviceConfig.auth.apiKey,
92
+ apiSecret: serviceConfig.auth.apiSecret,
93
+ passphrase: serviceConfig.auth.passphrase,
94
+ };
95
+ }
96
+ else if (serviceConfig.auth.type === 'github-app' && serviceConfig.auth.appId && serviceConfig.auth.privateKey && serviceConfig.auth.installationId) {
97
+ const ghCreds = {
98
+ appId: serviceConfig.auth.appId,
99
+ privateKey: serviceConfig.auth.privateKey,
100
+ installationId: serviceConfig.auth.installationId,
101
+ };
102
+ credential = await (0, github_app_1.getInstallationToken)(capability.service, ghCreds);
103
+ }
104
+ // Build environment with injected credentials
105
+ const injectedEnv = (0, exec_js_1.buildExecEnv)(capability.env || {}, credential, extraCredentials);
106
+ // Execute command
107
+ return (0, exec_js_1.executeCommand)(command, injectedEnv, {
108
+ workDir: capability.workDir,
109
+ timeout: capability.timeout || 30000,
110
+ stdin,
111
+ credential,
112
+ extraCredentials,
113
+ });
114
+ },
66
115
  onReloadConfig: () => {
67
116
  const result = loadConfigForMCP();
68
117
  // Update our local reference for onExecute
@@ -155,6 +204,27 @@ async function serveMCPCommand(options = {}) {
155
204
  }
156
205
  }
157
206
  }
207
+ else if (serviceConfig.auth.type === 'github-app' && serviceConfig.auth.appId && serviceConfig.auth.privateKey && serviceConfig.auth.installationId) {
208
+ const ghCreds = {
209
+ appId: serviceConfig.auth.appId,
210
+ privateKey: serviceConfig.auth.privateKey,
211
+ installationId: serviceConfig.auth.installationId,
212
+ };
213
+ try {
214
+ const installationToken = await (0, github_app_1.getInstallationToken)(request.service, ghCreds);
215
+ headers['Authorization'] = `Bearer ${installationToken}`;
216
+ }
217
+ catch (error) {
218
+ if (error instanceof Error && error.message.includes('401')) {
219
+ (0, github_app_1.clearCachedInstallationToken)(request.service);
220
+ const installationToken = await (0, github_app_1.getInstallationToken)(request.service, ghCreds);
221
+ headers['Authorization'] = `Bearer ${installationToken}`;
222
+ }
223
+ else {
224
+ throw error;
225
+ }
226
+ }
227
+ }
158
228
  // Set Content-Type for requests with body
159
229
  if (request.body && !headers['Content-Type'] && !headers['content-type']) {
160
230
  headers['Content-Type'] = 'application/json';