@true-and-useful/janee 0.12.0 → 0.13.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 (48) hide show
  1. package/README.md +2 -0
  2. package/dist/cli/commands/capability.d.ts +12 -10
  3. package/dist/cli/commands/capability.d.ts.map +1 -1
  4. package/dist/cli/commands/capability.js +77 -40
  5. package/dist/cli/commands/capability.js.map +1 -1
  6. package/dist/cli/commands/config.d.ts +7 -0
  7. package/dist/cli/commands/config.d.ts.map +1 -0
  8. package/dist/cli/commands/config.js +135 -0
  9. package/dist/cli/commands/config.js.map +1 -0
  10. package/dist/cli/commands/diagnose.d.ts +7 -0
  11. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  12. package/dist/cli/commands/diagnose.js +133 -0
  13. package/dist/cli/commands/diagnose.js.map +1 -0
  14. package/dist/cli/commands/doctor-bundle.d.ts +6 -0
  15. package/dist/cli/commands/doctor-bundle.d.ts.map +1 -0
  16. package/dist/cli/commands/doctor-bundle.js +108 -0
  17. package/dist/cli/commands/doctor-bundle.js.map +1 -0
  18. package/dist/cli/commands/doctor.d.ts +6 -0
  19. package/dist/cli/commands/doctor.d.ts.map +1 -0
  20. package/dist/cli/commands/doctor.js +163 -0
  21. package/dist/cli/commands/doctor.js.map +1 -0
  22. package/dist/cli/commands/service-edit.d.ts +16 -0
  23. package/dist/cli/commands/service-edit.d.ts.map +1 -0
  24. package/dist/cli/commands/service-edit.js +187 -0
  25. package/dist/cli/commands/service-edit.js.map +1 -0
  26. package/dist/cli/commands/whoami.d.ts +5 -0
  27. package/dist/cli/commands/whoami.d.ts.map +1 -0
  28. package/dist/cli/commands/whoami.js +91 -0
  29. package/dist/cli/commands/whoami.js.map +1 -0
  30. package/dist/cli/config-yaml.d.ts +12 -14
  31. package/dist/cli/config-yaml.d.ts.map +1 -1
  32. package/dist/cli/config-yaml.js +209 -86
  33. package/dist/cli/config-yaml.js.map +1 -1
  34. package/dist/cli/index.js +81 -0
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/core/authority.d.ts +5 -3
  37. package/dist/core/authority.d.ts.map +1 -1
  38. package/dist/core/authority.js +76 -43
  39. package/dist/core/authority.js.map +1 -1
  40. package/dist/core/health.d.ts +24 -1
  41. package/dist/core/health.d.ts.map +1 -1
  42. package/dist/core/health.js +138 -26
  43. package/dist/core/health.js.map +1 -1
  44. package/dist/core/mcp-server.d.ts +31 -11
  45. package/dist/core/mcp-server.d.ts.map +1 -1
  46. package/dist/core/mcp-server.js +580 -238
  47. package/dist/core/mcp-server.js.map +1 -1
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -580,6 +580,8 @@ You can also edit `~/.janee/config.yaml` directly if you prefer.
580
580
 
581
581
  Agent never touches the real key.
582
582
 
583
+ > 📐 **Deep dive:** See [Architecture & Security Model](docs/architecture.md) for detailed diagrams, threat model, and comparison with alternatives.
584
+
583
585
  ---
584
586
 
585
587
  ## Security
@@ -4,26 +4,28 @@
4
4
  export declare function capabilityListCommand(options?: {
5
5
  json?: boolean;
6
6
  }): Promise<void>;
7
- export declare function capabilityAddCommand(name: string, options: {
7
+ interface CapAddEditOptions {
8
8
  service?: string;
9
- ttl?: string;
10
- autoApprove?: boolean;
11
- requiresReason?: boolean;
12
- allow?: string[];
13
- deny?: string[];
14
- json?: boolean;
15
- }): Promise<void>;
16
- export declare function capabilityEditCommand(name: string, options: {
17
9
  ttl?: string;
18
10
  autoApprove?: boolean;
19
11
  requiresReason?: boolean;
20
12
  allow?: string[];
21
13
  deny?: string[];
22
14
  clearRules?: boolean;
15
+ allowedAgents?: string[];
16
+ clearAgents?: boolean;
17
+ mode?: string;
18
+ allowCommands?: string[];
19
+ envMap?: string[];
20
+ workDir?: string;
21
+ timeout?: string;
23
22
  json?: boolean;
24
- }): Promise<void>;
23
+ }
24
+ export declare function capabilityAddCommand(name: string, options: CapAddEditOptions): Promise<void>;
25
+ export declare function capabilityEditCommand(name: string, options: CapAddEditOptions): Promise<void>;
25
26
  export declare function capabilityRemoveCommand(name: string, options?: {
26
27
  yes?: boolean;
27
28
  json?: boolean;
28
29
  }): Promise<void>;
30
+ export {};
29
31
  //# sourceMappingURL=capability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF3F;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Ff;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Ef;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC,IAAI,CAAC,CAuEf"}
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF3F;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,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,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwCD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA0Ff;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA8Df;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC,IAAI,CAAC,CAuEf"}
@@ -55,7 +55,6 @@ async function capabilityListCommand(options = {}) {
55
55
  const config = (0, config_yaml_1.loadYAMLConfig)();
56
56
  const capabilityNames = Object.keys(config.capabilities);
57
57
  if (options.json) {
58
- // JSON output
59
58
  const capabilities = capabilityNames.map(name => {
60
59
  const cap = config.capabilities[name];
61
60
  return {
@@ -65,13 +64,18 @@ async function capabilityListCommand(options = {}) {
65
64
  autoApprove: cap.autoApprove,
66
65
  requiresReason: cap.requiresReason,
67
66
  allowRules: cap.rules?.allow || [],
68
- denyRules: cap.rules?.deny || []
67
+ denyRules: cap.rules?.deny || [],
68
+ mode: cap.mode,
69
+ allowedAgents: cap.allowedAgents,
70
+ allowCommands: cap.allowCommands,
71
+ env: cap.env,
72
+ workDir: cap.workDir,
73
+ timeout: cap.timeout,
69
74
  };
70
75
  });
71
76
  console.log(JSON.stringify({ capabilities }, null, 2));
72
77
  return;
73
78
  }
74
- // Human-readable output
75
79
  if (capabilityNames.length === 0) {
76
80
  console.log('No capabilities configured yet.');
77
81
  console.log('');
@@ -89,15 +93,24 @@ async function capabilityListCommand(options = {}) {
89
93
  console.log(` ${name}`);
90
94
  console.log(` Service: ${cap.service}`);
91
95
  console.log(` TTL: ${cap.ttl}`);
92
- if (cap.autoApprove !== undefined) {
96
+ if (cap.mode)
97
+ console.log(` Mode: ${cap.mode}`);
98
+ if (cap.autoApprove !== undefined)
93
99
  console.log(` Auto-approve: ${cap.autoApprove}`);
94
- }
95
- if (cap.requiresReason !== undefined) {
100
+ if (cap.requiresReason !== undefined)
96
101
  console.log(` Requires reason: ${cap.requiresReason}`);
97
- }
98
- if (rules) {
99
- console.log(` Rules: ${rules}`);
100
- }
102
+ if (rules)
103
+ console.log(` Rules:${rules}`);
104
+ if (cap.allowedAgents?.length)
105
+ console.log(` Allowed agents: ${cap.allowedAgents.join(', ')}`);
106
+ if (cap.allowCommands?.length)
107
+ console.log(` Allow commands: ${cap.allowCommands.join(', ')}`);
108
+ if (cap.env)
109
+ console.log(` Env: ${Object.entries(cap.env).map(([k, v]) => `${k}=${v}`).join(', ')}`);
110
+ if (cap.workDir)
111
+ console.log(` Work dir: ${cap.workDir}`);
112
+ if (cap.timeout)
113
+ console.log(` Timeout: ${cap.timeout}ms`);
101
114
  console.log('');
102
115
  }
103
116
  }
@@ -121,6 +134,44 @@ async function capabilityListCommand(options = {}) {
121
134
  process.exit(1);
122
135
  }
123
136
  }
137
+ function parseEnvMap(mappings) {
138
+ const env = {};
139
+ for (const m of mappings) {
140
+ const eq = m.indexOf('=');
141
+ if (eq <= 0)
142
+ throw new Error(`Invalid env mapping "${m}" — expected KEY=value`);
143
+ env[m.substring(0, eq)] = m.substring(eq + 1);
144
+ }
145
+ return env;
146
+ }
147
+ function applyCapabilityOptions(cap, options) {
148
+ if (options.allowedAgents) {
149
+ cap.allowedAgents = options.allowedAgents;
150
+ }
151
+ if (options.clearAgents) {
152
+ delete cap.allowedAgents;
153
+ }
154
+ if (options.mode) {
155
+ if (options.mode !== 'proxy' && options.mode !== 'exec') {
156
+ throw new Error(`Invalid mode "${options.mode}" — must be "proxy" or "exec"`);
157
+ }
158
+ cap.mode = options.mode;
159
+ }
160
+ if (options.allowCommands) {
161
+ cap.allowCommands = options.allowCommands;
162
+ }
163
+ if (options.envMap) {
164
+ cap.env = parseEnvMap(options.envMap);
165
+ }
166
+ if (options.workDir) {
167
+ cap.workDir = options.workDir;
168
+ }
169
+ if (options.timeout) {
170
+ cap.timeout = parseInt(options.timeout, 10);
171
+ if (isNaN(cap.timeout))
172
+ throw new Error(`Invalid timeout "${options.timeout}"`);
173
+ }
174
+ }
124
175
  async function capabilityAddCommand(name, options) {
125
176
  try {
126
177
  if (!(0, config_yaml_1.hasYAMLConfig)()) {
@@ -133,7 +184,6 @@ async function capabilityAddCommand(name, options) {
133
184
  process.exit(1);
134
185
  }
135
186
  const config = (0, config_yaml_1.loadYAMLConfig)();
136
- // Check if capability already exists
137
187
  if (config.capabilities[name]) {
138
188
  if (options.json) {
139
189
  console.log(JSON.stringify({ ok: false, error: `Capability "${name}" already exists. Use 'janee cap edit' to modify it.` }));
@@ -143,7 +193,6 @@ async function capabilityAddCommand(name, options) {
143
193
  }
144
194
  process.exit(1);
145
195
  }
146
- // Service is required
147
196
  if (!options.service) {
148
197
  if (options.json) {
149
198
  console.log(JSON.stringify({ ok: false, error: '--service is required' }));
@@ -153,7 +202,6 @@ async function capabilityAddCommand(name, options) {
153
202
  }
154
203
  process.exit(1);
155
204
  }
156
- // Check if service exists
157
205
  if (!config.services[options.service]) {
158
206
  if (options.json) {
159
207
  console.log(JSON.stringify({ ok: false, error: `Service "${options.service}" not found. Add it first with 'janee add'.` }));
@@ -163,23 +211,20 @@ async function capabilityAddCommand(name, options) {
163
211
  }
164
212
  process.exit(1);
165
213
  }
166
- // Create capability
167
214
  const capability = {
168
215
  service: options.service,
169
216
  ttl: options.ttl || '1h',
170
217
  autoApprove: options.autoApprove,
171
- requiresReason: options.requiresReason
218
+ requiresReason: options.requiresReason,
172
219
  };
173
- // Add rules if provided
174
220
  if (options.allow || options.deny) {
175
221
  capability.rules = {};
176
- if (options.allow) {
222
+ if (options.allow)
177
223
  capability.rules.allow = options.allow;
178
- }
179
- if (options.deny) {
224
+ if (options.deny)
180
225
  capability.rules.deny = options.deny;
181
- }
182
226
  }
227
+ applyCapabilityOptions(capability, options);
183
228
  config.capabilities[name] = capability;
184
229
  (0, config_yaml_1.saveYAMLConfig)(config);
185
230
  if (options.json) {
@@ -195,6 +240,10 @@ async function capabilityAddCommand(name, options) {
195
240
  console.log(`✅ Added capability "${name}"`);
196
241
  console.log(` Service: ${capability.service}`);
197
242
  console.log(` TTL: ${capability.ttl}`);
243
+ if (capability.mode)
244
+ console.log(` Mode: ${capability.mode}`);
245
+ if (capability.allowedAgents)
246
+ console.log(` Allowed agents: ${capability.allowedAgents.join(', ')}`);
198
247
  }
199
248
  }
200
249
  catch (error) {
@@ -229,7 +278,6 @@ async function capabilityEditCommand(name, options) {
229
278
  process.exit(1);
230
279
  }
231
280
  const config = (0, config_yaml_1.loadYAMLConfig)();
232
- // Check if capability exists
233
281
  if (!config.capabilities[name]) {
234
282
  if (options.json) {
235
283
  console.log(JSON.stringify({ ok: false, error: `Capability "${name}" not found` }));
@@ -240,38 +288,27 @@ async function capabilityEditCommand(name, options) {
240
288
  process.exit(1);
241
289
  }
242
290
  const capability = config.capabilities[name];
243
- // Update fields if provided
244
- if (options.ttl) {
291
+ if (options.ttl)
245
292
  capability.ttl = options.ttl;
246
- }
247
- if (options.autoApprove !== undefined) {
293
+ if (options.autoApprove !== undefined)
248
294
  capability.autoApprove = options.autoApprove;
249
- }
250
- if (options.requiresReason !== undefined) {
295
+ if (options.requiresReason !== undefined)
251
296
  capability.requiresReason = options.requiresReason;
252
- }
253
- // Handle rules
254
297
  if (options.clearRules) {
255
298
  delete capability.rules;
256
299
  }
257
300
  else if (options.allow || options.deny) {
258
- if (!capability.rules) {
301
+ if (!capability.rules)
259
302
  capability.rules = {};
260
- }
261
- if (options.allow) {
303
+ if (options.allow)
262
304
  capability.rules.allow = options.allow;
263
- }
264
- if (options.deny) {
305
+ if (options.deny)
265
306
  capability.rules.deny = options.deny;
266
- }
267
307
  }
308
+ applyCapabilityOptions(capability, options);
268
309
  (0, config_yaml_1.saveYAMLConfig)(config);
269
310
  if (options.json) {
270
- console.log(JSON.stringify({
271
- ok: true,
272
- capability: name,
273
- message: `Updated capability "${name}"`
274
- }));
311
+ console.log(JSON.stringify({ ok: true, capability: name, message: `Updated capability "${name}"` }));
275
312
  }
276
313
  else {
277
314
  console.log(`✅ Updated capability "${name}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function configGetCommand(key?: string, options?: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ export declare function configSetCommand(key: string, value: string, options?: {
5
+ json?: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAyCA,wBAAsB,gBAAgB,CACpC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configGetCommand = configGetCommand;
4
+ exports.configSetCommand = configSetCommand;
5
+ const config_yaml_1 = require("../config-yaml");
6
+ function cliError(msg, json) {
7
+ if (json) {
8
+ console.log(JSON.stringify({ ok: false, error: msg }));
9
+ }
10
+ else {
11
+ console.error(`❌ ${msg}`);
12
+ }
13
+ process.exit(1);
14
+ }
15
+ const VALID_KEYS = {
16
+ 'server.port': { type: 'number' },
17
+ 'server.host': { type: 'string' },
18
+ 'server.logBodies': { type: 'boolean' },
19
+ 'server.strictDecryption': { type: 'boolean' },
20
+ 'server.defaultAccess': { type: 'string', enum: ['open', 'restricted'] },
21
+ };
22
+ function getNestedValue(obj, dotPath) {
23
+ const parts = dotPath.split('.');
24
+ let cur = obj;
25
+ for (const p of parts) {
26
+ if (cur == null || typeof cur !== 'object')
27
+ return undefined;
28
+ cur = cur[p];
29
+ }
30
+ return cur;
31
+ }
32
+ function setNestedValue(obj, dotPath, value) {
33
+ const parts = dotPath.split('.');
34
+ let cur = obj;
35
+ for (let i = 0; i < parts.length - 1; i++) {
36
+ if (cur[parts[i]] == null || typeof cur[parts[i]] !== 'object') {
37
+ cur[parts[i]] = {};
38
+ }
39
+ cur = cur[parts[i]];
40
+ }
41
+ cur[parts[parts.length - 1]] = value;
42
+ }
43
+ async function configGetCommand(key, options = {}) {
44
+ try {
45
+ if (!(0, config_yaml_1.hasYAMLConfig)())
46
+ return cliError('No config found. Run `janee init` first.', options.json);
47
+ const config = (0, config_yaml_1.loadYAMLConfig)();
48
+ if (!key) {
49
+ // Show all gettable keys
50
+ const result = {};
51
+ for (const k of Object.keys(VALID_KEYS)) {
52
+ result[k] = getNestedValue(config, k);
53
+ }
54
+ if (options.json) {
55
+ console.log(JSON.stringify(result, null, 2));
56
+ }
57
+ else {
58
+ for (const [k, v] of Object.entries(result)) {
59
+ console.log(` ${k} = ${v ?? '(not set)'}`);
60
+ }
61
+ }
62
+ return;
63
+ }
64
+ if (!VALID_KEYS[key]) {
65
+ return cliError(`Unknown config key "${key}". Valid keys: ${Object.keys(VALID_KEYS).join(', ')}`, options.json);
66
+ }
67
+ const value = getNestedValue(config, key);
68
+ if (options.json) {
69
+ console.log(JSON.stringify({ key, value }));
70
+ }
71
+ else {
72
+ console.log(`${key} = ${value ?? '(not set)'}`);
73
+ }
74
+ }
75
+ catch (error) {
76
+ const msg = error instanceof Error ? error.message : 'Unknown error';
77
+ if (options.json) {
78
+ console.log(JSON.stringify({ ok: false, error: msg }));
79
+ }
80
+ else {
81
+ console.error('❌ Error:', msg);
82
+ }
83
+ process.exit(1);
84
+ }
85
+ }
86
+ async function configSetCommand(key, value, options = {}) {
87
+ try {
88
+ if (!(0, config_yaml_1.hasYAMLConfig)())
89
+ return cliError('No config found. Run `janee init` first.', options.json);
90
+ const schema = VALID_KEYS[key];
91
+ if (!schema) {
92
+ return cliError(`Unknown config key "${key}". Valid keys: ${Object.keys(VALID_KEYS).join(', ')}`, options.json);
93
+ }
94
+ if (schema.enum && !schema.enum.includes(value)) {
95
+ return cliError(`Invalid value "${value}" for ${key}. Must be one of: ${schema.enum.join(', ')}`, options.json);
96
+ }
97
+ let parsed;
98
+ if (schema.type === 'boolean') {
99
+ if (value === 'true')
100
+ parsed = true;
101
+ else if (value === 'false')
102
+ parsed = false;
103
+ else
104
+ return cliError(`Invalid boolean "${value}" for ${key}. Use "true" or "false".`, options.json);
105
+ }
106
+ else if (schema.type === 'number') {
107
+ parsed = parseInt(value, 10);
108
+ if (isNaN(parsed))
109
+ return cliError(`Invalid number "${value}" for ${key}`, options.json);
110
+ }
111
+ else {
112
+ parsed = value;
113
+ }
114
+ const config = (0, config_yaml_1.loadYAMLConfig)();
115
+ setNestedValue(config, key, parsed);
116
+ (0, config_yaml_1.saveYAMLConfig)(config);
117
+ if (options.json) {
118
+ console.log(JSON.stringify({ ok: true, key, value: parsed, message: `Set ${key} = ${parsed}` }));
119
+ }
120
+ else {
121
+ console.log(`✅ Set ${key} = ${parsed}`);
122
+ }
123
+ }
124
+ catch (error) {
125
+ const msg = error instanceof Error ? error.message : 'Unknown error';
126
+ if (options.json) {
127
+ console.log(JSON.stringify({ ok: false, error: msg }));
128
+ }
129
+ else {
130
+ console.error('❌ Error:', msg);
131
+ }
132
+ process.exit(1);
133
+ }
134
+ }
135
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function diagnoseAccessCommand(capabilityName: string, options?: {
2
+ agent?: string;
3
+ method?: string;
4
+ path?: string;
5
+ json?: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=diagnose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diagnose.ts"],"names":[],"mappings":"AAaA,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/E,OAAO,CAAC,IAAI,CAAC,CAoGf"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diagnoseAccessCommand = diagnoseAccessCommand;
4
+ const agent_scope_1 = require("../../core/agent-scope");
5
+ const rules_1 = require("../../core/rules");
6
+ const config_yaml_1 = require("../config-yaml");
7
+ async function diagnoseAccessCommand(capabilityName, options = {}) {
8
+ try {
9
+ if (!(0, config_yaml_1.hasYAMLConfig)()) {
10
+ if (options.json) {
11
+ console.log(JSON.stringify({ ok: false, error: 'No config found. Run `janee init` first.' }));
12
+ }
13
+ else {
14
+ console.error('No config found. Run `janee init` first.');
15
+ }
16
+ process.exit(1);
17
+ }
18
+ const config = (0, config_yaml_1.loadYAMLConfig)();
19
+ const agentId = options.agent || undefined;
20
+ const defaultAccess = config.server?.defaultAccess;
21
+ const trace = [];
22
+ const cap = config.capabilities[capabilityName];
23
+ if (!cap) {
24
+ trace.push({ check: 'capability_exists', result: 'fail', detail: `Capability "${capabilityName}" not found` });
25
+ outputResult({ agent: agentId ?? null, capability: capabilityName, allowed: false, trace, nextStep: `Run 'janee cap list' to see available capabilities.` }, options.json);
26
+ return;
27
+ }
28
+ trace.push({ check: 'capability_exists', result: 'pass', detail: `Capability "${capabilityName}" exists (service: ${cap.service})` });
29
+ // Mode
30
+ const mode = cap.mode || 'proxy';
31
+ trace.push({ check: 'mode', result: 'pass', detail: `Capability mode: ${mode}` });
32
+ // allowedAgents
33
+ if (cap.allowedAgents && cap.allowedAgents.length > 0) {
34
+ if (!agentId) {
35
+ trace.push({ check: 'allowed_agents', result: 'pass', detail: `No agent ID (admin/CLI) — bypasses allowedAgents` });
36
+ }
37
+ else if (cap.allowedAgents.includes(agentId)) {
38
+ trace.push({ check: 'allowed_agents', result: 'pass', detail: `Agent "${agentId}" is in allowedAgents [${cap.allowedAgents.join(', ')}]` });
39
+ }
40
+ else {
41
+ trace.push({ check: 'allowed_agents', result: 'fail', detail: `Agent "${agentId}" is NOT in allowedAgents [${cap.allowedAgents.join(', ')}]` });
42
+ }
43
+ }
44
+ else {
45
+ trace.push({ check: 'allowed_agents', result: 'skip', detail: `No allowedAgents restriction on this capability` });
46
+ }
47
+ // defaultAccess
48
+ if (agentId && (!cap.allowedAgents || cap.allowedAgents.length === 0)) {
49
+ if (defaultAccess === 'restricted') {
50
+ trace.push({ check: 'default_access', result: 'fail', detail: `defaultAccess is "restricted" and no allowedAgents list — agent blocked` });
51
+ }
52
+ else {
53
+ trace.push({ check: 'default_access', result: 'pass', detail: `defaultAccess is "${defaultAccess ?? 'open'}" — agent allowed` });
54
+ }
55
+ }
56
+ else {
57
+ trace.push({ check: 'default_access', result: 'skip', detail: agentId ? `allowedAgents list takes precedence` : `No agent ID (admin/CLI)` });
58
+ }
59
+ // Ownership
60
+ const svc = config.services[cap.service];
61
+ if (agentId && svc?.ownership) {
62
+ if ((0, agent_scope_1.canAgentAccess)(agentId, svc.ownership)) {
63
+ trace.push({ check: 'ownership', result: 'pass', detail: `Agent can access service` });
64
+ }
65
+ else {
66
+ trace.push({ check: 'ownership', result: 'fail', detail: `Agent cannot access service (ownership restriction)` });
67
+ }
68
+ }
69
+ else {
70
+ trace.push({ check: 'ownership', result: 'skip', detail: svc?.ownership ? `No agent ID (admin/CLI)` : `No ownership restrictions on service` });
71
+ }
72
+ // Rules
73
+ if (options.method && options.path && mode !== 'exec') {
74
+ const ruleResult = (0, rules_1.checkRules)(cap.rules, options.method, options.path);
75
+ if (ruleResult.allowed) {
76
+ trace.push({ check: 'rules', result: 'pass', detail: `${options.method} ${options.path} is allowed by rules` });
77
+ }
78
+ else {
79
+ trace.push({ check: 'rules', result: 'fail', detail: ruleResult.reason || `${options.method} ${options.path} is denied by rules` });
80
+ }
81
+ }
82
+ else if (mode === 'exec') {
83
+ trace.push({ check: 'rules', result: 'skip', detail: `Exec-mode capabilities use allowCommands, not path rules` });
84
+ if (cap.allowCommands) {
85
+ trace.push({ check: 'allow_commands', result: 'skip', detail: `allowCommands: [${cap.allowCommands.join(', ')}]` });
86
+ }
87
+ }
88
+ else {
89
+ trace.push({ check: 'rules', result: 'skip', detail: `No method/path provided — use --method and --path to test rules` });
90
+ }
91
+ const hasFail = trace.some(t => t.result === 'fail');
92
+ const firstFail = trace.find(t => t.result === 'fail');
93
+ outputResult({
94
+ agent: agentId ?? null,
95
+ capability: capabilityName,
96
+ allowed: !hasFail,
97
+ trace,
98
+ ...(hasFail && firstFail ? { nextStep: firstFail.detail } : {})
99
+ }, options.json);
100
+ }
101
+ catch (error) {
102
+ const msg = error instanceof Error ? error.message : 'Unknown error';
103
+ if (options.json) {
104
+ console.log(JSON.stringify({ ok: false, error: msg }));
105
+ }
106
+ else {
107
+ console.error('Error:', msg);
108
+ }
109
+ process.exit(1);
110
+ }
111
+ }
112
+ function outputResult(result, json) {
113
+ if (json) {
114
+ console.log(JSON.stringify(result, null, 2));
115
+ return;
116
+ }
117
+ const icon = result.allowed ? '✅' : '❌';
118
+ console.log('');
119
+ console.log(` ${icon} ${result.allowed ? 'ALLOWED' : 'DENIED'}: ${result.capability}`);
120
+ if (result.agent)
121
+ console.log(` Agent: ${result.agent}`);
122
+ console.log('');
123
+ for (const step of result.trace) {
124
+ const marker = step.result === 'pass' ? '✓' : step.result === 'fail' ? '✗' : '–';
125
+ console.log(` ${marker} ${step.check}: ${step.detail}`);
126
+ }
127
+ if (result.nextStep) {
128
+ console.log('');
129
+ console.log(` → ${result.nextStep}`);
130
+ }
131
+ console.log('');
132
+ }
133
+ //# sourceMappingURL=diagnose.js.map