@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.
- package/README.md +2 -0
- package/dist/cli/commands/capability.d.ts +12 -10
- package/dist/cli/commands/capability.d.ts.map +1 -1
- package/dist/cli/commands/capability.js +77 -40
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/config.d.ts +7 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +135 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/diagnose.d.ts +7 -0
- package/dist/cli/commands/diagnose.d.ts.map +1 -0
- package/dist/cli/commands/diagnose.js +133 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/doctor-bundle.d.ts +6 -0
- package/dist/cli/commands/doctor-bundle.d.ts.map +1 -0
- package/dist/cli/commands/doctor-bundle.js +108 -0
- package/dist/cli/commands/doctor-bundle.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +163 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/service-edit.d.ts +16 -0
- package/dist/cli/commands/service-edit.d.ts.map +1 -0
- package/dist/cli/commands/service-edit.js +187 -0
- package/dist/cli/commands/service-edit.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +5 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +91 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/config-yaml.d.ts +12 -14
- package/dist/cli/config-yaml.d.ts.map +1 -1
- package/dist/cli/config-yaml.js +209 -86
- package/dist/cli/config-yaml.js.map +1 -1
- package/dist/cli/index.js +81 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/authority.d.ts +5 -3
- package/dist/core/authority.d.ts.map +1 -1
- package/dist/core/authority.js +76 -43
- package/dist/core/authority.js.map +1 -1
- package/dist/core/health.d.ts +24 -1
- package/dist/core/health.d.ts.map +1 -1
- package/dist/core/health.js +138 -26
- package/dist/core/health.js.map +1 -1
- package/dist/core/mcp-server.d.ts +31 -11
- package/dist/core/mcp-server.d.ts.map +1 -1
- package/dist/core/mcp-server.js +580 -238
- package/dist/core/mcp-server.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -11,6 +11,10 @@ const path_1 = require("path");
|
|
|
11
11
|
const add_1 = require("./commands/add");
|
|
12
12
|
const authority_1 = require("./commands/authority");
|
|
13
13
|
const capability_1 = require("./commands/capability");
|
|
14
|
+
const config_1 = require("./commands/config");
|
|
15
|
+
const diagnose_1 = require("./commands/diagnose");
|
|
16
|
+
const doctor_1 = require("./commands/doctor");
|
|
17
|
+
const doctor_bundle_1 = require("./commands/doctor-bundle");
|
|
14
18
|
const init_1 = require("./commands/init");
|
|
15
19
|
const list_1 = require("./commands/list");
|
|
16
20
|
const logs_1 = require("./commands/logs");
|
|
@@ -18,9 +22,11 @@ const remove_1 = require("./commands/remove");
|
|
|
18
22
|
const revoke_1 = require("./commands/revoke");
|
|
19
23
|
const search_1 = require("./commands/search");
|
|
20
24
|
const serve_1 = require("./commands/serve");
|
|
25
|
+
const service_edit_1 = require("./commands/service-edit");
|
|
21
26
|
const sessions_1 = require("./commands/sessions");
|
|
22
27
|
const status_1 = require("./commands/status");
|
|
23
28
|
const test_1 = require("./commands/test");
|
|
29
|
+
const whoami_1 = require("./commands/whoami");
|
|
24
30
|
// Read version from package.json
|
|
25
31
|
const packageJsonPath = (0, path_1.join)(__dirname, '../../package.json');
|
|
26
32
|
const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf8'));
|
|
@@ -66,6 +72,36 @@ program
|
|
|
66
72
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
67
73
|
.option('--json', 'Output as JSON')
|
|
68
74
|
.action(remove_1.removeCommand);
|
|
75
|
+
// Service management subcommands
|
|
76
|
+
const service = program.command('service').description('Manage services');
|
|
77
|
+
service
|
|
78
|
+
.command('edit <name>')
|
|
79
|
+
.description('Edit an existing service (update URL, test path, or rotate secrets)')
|
|
80
|
+
.option('-u, --url <url>', 'Update base URL')
|
|
81
|
+
.option('--test-path <path>', 'Update test path')
|
|
82
|
+
.option('-k, --key <key>', 'Rotate bearer key or HMAC apiKey')
|
|
83
|
+
.option('--api-secret <secret>', 'Rotate HMAC secret')
|
|
84
|
+
.option('--passphrase <passphrase>', 'Rotate OKX passphrase')
|
|
85
|
+
.option('--pem-file <path>', 'Rotate GitHub App private key from PEM file')
|
|
86
|
+
.option('--credentials-file <path>', 'Rotate service account credentials from JSON file')
|
|
87
|
+
.option('--key-from-env <var>', 'Read key from environment variable')
|
|
88
|
+
.option('--secret-from-env <var>', 'Read secret from environment variable')
|
|
89
|
+
.option('--passphrase-from-env <var>', 'Read passphrase from environment variable')
|
|
90
|
+
.option('--header <pairs...>', 'Update custom auth headers (name=value)')
|
|
91
|
+
.option('--json', 'Output as JSON')
|
|
92
|
+
.action(service_edit_1.serviceEditCommand);
|
|
93
|
+
// Config get/set
|
|
94
|
+
const configCmd = program.command('config').description('View or update server settings');
|
|
95
|
+
configCmd
|
|
96
|
+
.command('get [key]')
|
|
97
|
+
.description('Show config value(s)')
|
|
98
|
+
.option('--json', 'Output as JSON')
|
|
99
|
+
.action(config_1.configGetCommand);
|
|
100
|
+
configCmd
|
|
101
|
+
.command('set <key> <value>')
|
|
102
|
+
.description('Set a config value (e.g. server.port 9200)')
|
|
103
|
+
.option('--json', 'Output as JSON')
|
|
104
|
+
.action(config_1.configSetCommand);
|
|
69
105
|
program
|
|
70
106
|
.command('serve')
|
|
71
107
|
.description('Start Janee MCP server')
|
|
@@ -112,6 +148,38 @@ program
|
|
|
112
148
|
.description('Show Janee configuration and health status')
|
|
113
149
|
.option('--json', 'Output as JSON')
|
|
114
150
|
.action(status_1.statusCommand);
|
|
151
|
+
program
|
|
152
|
+
.command('whoami')
|
|
153
|
+
.description('Show your agent identity and accessible capabilities')
|
|
154
|
+
.option('--agent <name>', 'Preview access for a specific agent identity')
|
|
155
|
+
.option('--json', 'Output as JSON')
|
|
156
|
+
.action(whoami_1.whoamiCommand);
|
|
157
|
+
// Diagnostics
|
|
158
|
+
const diagnose = program.command('diagnose').description('Debug access and configuration issues');
|
|
159
|
+
diagnose
|
|
160
|
+
.command('access <capability>')
|
|
161
|
+
.description('Trace why an agent can or cannot access a capability')
|
|
162
|
+
.option('--agent <name>', 'Agent ID to evaluate (default: admin/CLI)')
|
|
163
|
+
.option('--method <method>', 'HTTP method for rules evaluation (e.g., GET, POST)')
|
|
164
|
+
.option('--path <path>', 'Request path for rules evaluation')
|
|
165
|
+
.option('--json', 'Output as JSON')
|
|
166
|
+
.action((capability, options) => (0, diagnose_1.diagnoseAccessCommand)(capability, options));
|
|
167
|
+
// Doctor
|
|
168
|
+
const doctor = program.command('doctor').description('System health checks');
|
|
169
|
+
doctor
|
|
170
|
+
.command('runner <authority-url>')
|
|
171
|
+
.description('Check runner-to-authority connectivity, auth, and tool forwarding')
|
|
172
|
+
.option('--runner-key <key>', 'Runner key (or set JANEE_RUNNER_KEY)')
|
|
173
|
+
.option('--agent <name>', 'Agent identity to test with (default: doctor-probe)')
|
|
174
|
+
.option('--json', 'Output as JSON')
|
|
175
|
+
.action((authorityUrl, options) => (0, doctor_1.doctorRunnerCommand)(authorityUrl, options));
|
|
176
|
+
doctor
|
|
177
|
+
.command('bundle')
|
|
178
|
+
.description('Export a redacted diagnostics bundle for incident debugging')
|
|
179
|
+
.option('-o, --output <file>', 'Write bundle to file instead of stdout')
|
|
180
|
+
.option('--agent <name>', 'Include access summary for this agent')
|
|
181
|
+
.option('--lines <n>', 'Number of recent denials to include (default: 50)')
|
|
182
|
+
.action((options) => (0, doctor_bundle_1.doctorBundleCommand)(options));
|
|
115
183
|
program
|
|
116
184
|
.command('test [service]')
|
|
117
185
|
.description('Test service connectivity and authentication')
|
|
@@ -142,6 +210,12 @@ cap
|
|
|
142
210
|
.option('--no-requires-reason', 'Do not require reason')
|
|
143
211
|
.option('--allow <pattern...>', 'Allow rules (e.g., "GET /v1/*")')
|
|
144
212
|
.option('--deny <pattern...>', 'Deny rules (e.g., "DELETE *")')
|
|
213
|
+
.option('--allowed-agents <agents...>', 'Restrict to specific agent IDs')
|
|
214
|
+
.option('--mode <mode>', 'Execution mode: proxy or exec')
|
|
215
|
+
.option('--allow-commands <cmds...>', 'Allowed executables for exec mode')
|
|
216
|
+
.option('--env-map <mappings...>', 'Env var mappings (KEY=value or KEY={{credential}})')
|
|
217
|
+
.option('--work-dir <dir>', 'Working directory for exec mode')
|
|
218
|
+
.option('--timeout <ms>', 'Execution timeout in ms')
|
|
145
219
|
.option('--json', 'Output as JSON')
|
|
146
220
|
.action(capability_1.capabilityAddCommand);
|
|
147
221
|
cap
|
|
@@ -155,6 +229,13 @@ cap
|
|
|
155
229
|
.option('--allow <pattern...>', 'Replace allow rules')
|
|
156
230
|
.option('--deny <pattern...>', 'Replace deny rules')
|
|
157
231
|
.option('--clear-rules', 'Clear all rules')
|
|
232
|
+
.option('--allowed-agents <agents...>', 'Restrict to specific agent IDs')
|
|
233
|
+
.option('--clear-agents', 'Remove all agent restrictions')
|
|
234
|
+
.option('--mode <mode>', 'Execution mode: proxy or exec')
|
|
235
|
+
.option('--allow-commands <cmds...>', 'Allowed executables for exec mode')
|
|
236
|
+
.option('--env-map <mappings...>', 'Env var mappings (KEY=value or KEY={{credential}})')
|
|
237
|
+
.option('--work-dir <dir>', 'Working directory for exec mode')
|
|
238
|
+
.option('--timeout <ms>', 'Execution timeout in ms')
|
|
158
239
|
.option('--json', 'Output as JSON')
|
|
159
240
|
.action(capability_1.capabilityEditCommand);
|
|
160
241
|
cap
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,2BAAkC;AAClC,+BAA4B;AAE5B,wCAA4C;AAC5C,oDAAwD;AACxD,sDAK+B;AAC/B,0CAA8C;AAC9C,0CAA8C;AAC9C,0CAA8C;AAC9C,8CAAkD;AAClD,8CAAkD;AAClD,8CAAkD;AAClD,4CAAgD;AAChD,kDAAsD;AACtD,8CAAkD;AAClD,0CAA8C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/authority.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import express from
|
|
2
|
-
import { ServiceTestResult } from
|
|
1
|
+
import express from "express";
|
|
2
|
+
import { ServiceTestResult } from "./health.js";
|
|
3
3
|
export interface RunnerIdentity {
|
|
4
4
|
runnerId: string;
|
|
5
5
|
environment?: string;
|
|
@@ -41,7 +41,9 @@ export interface ExecCompleteRequest {
|
|
|
41
41
|
export interface AuthorityExecHooks {
|
|
42
42
|
authorizeExec: (req: ExecAuthorizeRequest) => Promise<ExecAuthorizeResponse>;
|
|
43
43
|
completeExec: (req: ExecCompleteRequest) => Promise<void>;
|
|
44
|
-
testService?: (serviceName?: string
|
|
44
|
+
testService?: (serviceName?: string, options?: {
|
|
45
|
+
timeout?: number;
|
|
46
|
+
}) => Promise<ServiceTestResult | ServiceTestResult[]>;
|
|
45
47
|
}
|
|
46
48
|
export declare function createAuthorityApp(apiKey: string, hooks: AuthorityExecHooks): express.Express;
|
|
47
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/core/authority.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/core/authority.ts"],"names":[],"mappings":"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"}
|
package/dist/core/authority.js
CHANGED
|
@@ -14,59 +14,77 @@ const github_app_js_1 = require("./github-app.js");
|
|
|
14
14
|
const health_js_1 = require("./health.js");
|
|
15
15
|
function createAuthorityApp(apiKey, hooks) {
|
|
16
16
|
const app = (0, express_1.default)();
|
|
17
|
-
app.use(express_1.default.json({ limit:
|
|
17
|
+
app.use(express_1.default.json({ limit: "512kb" }));
|
|
18
18
|
app.use((req, res, next) => {
|
|
19
|
-
if (req.path ===
|
|
19
|
+
if (req.path === "/v1/health") {
|
|
20
20
|
next();
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
const provided = req.header(
|
|
24
|
-
if (!provided ||
|
|
23
|
+
const provided = req.header("x-janee-runner-key");
|
|
24
|
+
if (!provided ||
|
|
25
|
+
provided.length !== apiKey.length ||
|
|
25
26
|
!(0, crypto_1.timingSafeEqual)(Buffer.from(provided), Buffer.from(apiKey))) {
|
|
26
|
-
res.status(401).json({ error:
|
|
27
|
+
res.status(401).json({ error: "Unauthorized runner request" });
|
|
27
28
|
return;
|
|
28
29
|
}
|
|
29
30
|
next();
|
|
30
31
|
});
|
|
31
|
-
app.get(
|
|
32
|
-
res.status(200).json({ ok: true, mode:
|
|
32
|
+
app.get("/v1/health", (_req, res) => {
|
|
33
|
+
res.status(200).json({ ok: true, mode: "authority" });
|
|
33
34
|
});
|
|
34
|
-
app.post(
|
|
35
|
+
app.post("/v1/exec/authorize", async (req, res) => {
|
|
35
36
|
try {
|
|
36
37
|
const body = req.body;
|
|
37
|
-
if (!body?.runner?.runnerId ||
|
|
38
|
-
|
|
38
|
+
if (!body?.runner?.runnerId ||
|
|
39
|
+
!Array.isArray(body?.command) ||
|
|
40
|
+
body.command.length === 0 ||
|
|
41
|
+
!body.capabilityId) {
|
|
42
|
+
res.status(400).json({ error: "Invalid authorize request" });
|
|
39
43
|
return;
|
|
40
44
|
}
|
|
41
45
|
const response = await hooks.authorizeExec(body);
|
|
42
46
|
res.status(200).json(response);
|
|
43
47
|
}
|
|
44
48
|
catch (error) {
|
|
45
|
-
res
|
|
49
|
+
res
|
|
50
|
+
.status(403)
|
|
51
|
+
.json({
|
|
52
|
+
error: error instanceof Error ? error.message : "Authorization failed",
|
|
53
|
+
});
|
|
46
54
|
}
|
|
47
55
|
});
|
|
48
|
-
app.post(
|
|
56
|
+
app.post("/v1/exec/complete", async (req, res) => {
|
|
49
57
|
try {
|
|
50
58
|
const body = req.body;
|
|
51
59
|
if (!body?.grantId) {
|
|
52
|
-
res.status(400).json({ error:
|
|
60
|
+
res.status(400).json({ error: "grantId is required" });
|
|
53
61
|
return;
|
|
54
62
|
}
|
|
55
63
|
await hooks.completeExec(body);
|
|
56
64
|
res.status(200).json({ ok: true });
|
|
57
65
|
}
|
|
58
66
|
catch (error) {
|
|
59
|
-
res
|
|
67
|
+
res
|
|
68
|
+
.status(500)
|
|
69
|
+
.json({
|
|
70
|
+
error: error instanceof Error ? error.message : "completion failed",
|
|
71
|
+
});
|
|
60
72
|
}
|
|
61
73
|
});
|
|
62
74
|
if (hooks.testService) {
|
|
63
|
-
app.post(
|
|
75
|
+
app.post("/v1/test", async (req, res) => {
|
|
64
76
|
try {
|
|
65
|
-
const result = await hooks.testService(req.body?.service
|
|
77
|
+
const result = await hooks.testService(req.body?.service, {
|
|
78
|
+
timeout: req.body?.timeout,
|
|
79
|
+
});
|
|
66
80
|
res.status(200).json(result);
|
|
67
81
|
}
|
|
68
82
|
catch (error) {
|
|
69
|
-
res
|
|
83
|
+
res
|
|
84
|
+
.status(500)
|
|
85
|
+
.json({
|
|
86
|
+
error: error instanceof Error ? error.message : "Test failed",
|
|
87
|
+
});
|
|
70
88
|
}
|
|
71
89
|
});
|
|
72
90
|
}
|
|
@@ -79,38 +97,44 @@ function createAuthorityApp(apiKey, hooks) {
|
|
|
79
97
|
function buildAuthorityHooks(config, auditLogger) {
|
|
80
98
|
const grantCache = new Map();
|
|
81
99
|
return {
|
|
82
|
-
testService: async (serviceName) => {
|
|
100
|
+
testService: async (serviceName, options) => {
|
|
83
101
|
if (serviceName) {
|
|
84
102
|
const svc = config.services[serviceName];
|
|
85
103
|
if (!svc)
|
|
86
104
|
throw new Error(`Unknown service: ${serviceName}`);
|
|
87
|
-
return (0, health_js_1.testServiceConnection)(serviceName, svc);
|
|
105
|
+
return (0, health_js_1.testServiceConnection)(serviceName, svc, options || {});
|
|
88
106
|
}
|
|
89
|
-
const results = await Promise.all(Object.entries(config.services).map(([name, svc]) => (0, health_js_1.testServiceConnection)(name, svc)));
|
|
107
|
+
const results = await Promise.all(Object.entries(config.services).map(([name, svc]) => (0, health_js_1.testServiceConnection)(name, svc, options || {})));
|
|
90
108
|
return results;
|
|
91
109
|
},
|
|
92
110
|
authorizeExec: async (req) => {
|
|
93
111
|
const cap = config.capabilities.find((c) => c.name === req.capabilityId);
|
|
94
112
|
if (!cap)
|
|
95
113
|
throw new Error(`Unknown capability: ${req.capabilityId}`);
|
|
96
|
-
if (cap.mode !==
|
|
97
|
-
throw new Error(
|
|
98
|
-
if (cap.allowedAgents &&
|
|
114
|
+
if (cap.mode !== "exec")
|
|
115
|
+
throw new Error("Capability is not exec-mode");
|
|
116
|
+
if (cap.allowedAgents &&
|
|
117
|
+
cap.allowedAgents.length > 0 &&
|
|
118
|
+
req.agentId &&
|
|
119
|
+
!cap.allowedAgents.includes(req.agentId)) {
|
|
99
120
|
throw new Error(`Agent ${req.agentId} is not allowed for capability ${cap.name}`);
|
|
100
121
|
}
|
|
101
122
|
const cmdCheck = (0, exec_js_1.validateCommand)(req.command, cap.allowCommands || []);
|
|
102
123
|
if (!cmdCheck.allowed) {
|
|
103
|
-
throw new Error(cmdCheck.reason ||
|
|
124
|
+
throw new Error(cmdCheck.reason || "Command denied by policy");
|
|
104
125
|
}
|
|
105
126
|
const service = config.services[cap.service];
|
|
106
127
|
if (!service)
|
|
107
128
|
throw new Error(`Service not found: ${cap.service}`);
|
|
108
|
-
let credential =
|
|
129
|
+
let credential = "";
|
|
109
130
|
let extraCredentials;
|
|
110
|
-
if (service.auth.type ===
|
|
111
|
-
credential = service.auth.key ||
|
|
131
|
+
if (service.auth.type === "bearer") {
|
|
132
|
+
credential = service.auth.key || "";
|
|
112
133
|
}
|
|
113
|
-
else if (service.auth.type ===
|
|
134
|
+
else if (service.auth.type === "github-app" &&
|
|
135
|
+
service.auth.appId &&
|
|
136
|
+
service.auth.privateKey &&
|
|
137
|
+
service.auth.installationId) {
|
|
114
138
|
const ghCreds = {
|
|
115
139
|
appId: service.auth.appId,
|
|
116
140
|
privateKey: service.auth.privateKey,
|
|
@@ -118,7 +142,9 @@ function buildAuthorityHooks(config, auditLogger) {
|
|
|
118
142
|
};
|
|
119
143
|
credential = await (0, github_app_js_1.getInstallationToken)(cap.service, ghCreds);
|
|
120
144
|
}
|
|
121
|
-
else if (service.auth.type ===
|
|
145
|
+
else if (service.auth.type === "hmac-mexc" ||
|
|
146
|
+
service.auth.type === "hmac-bybit" ||
|
|
147
|
+
service.auth.type === "hmac-okx") {
|
|
122
148
|
extraCredentials = {
|
|
123
149
|
apiKey: service.auth.apiKey,
|
|
124
150
|
apiSecret: service.auth.apiSecret,
|
|
@@ -126,10 +152,17 @@ function buildAuthorityHooks(config, auditLogger) {
|
|
|
126
152
|
};
|
|
127
153
|
}
|
|
128
154
|
const envInjections = (0, exec_js_1.buildExecEnv)(cap.env || {}, credential, extraCredentials);
|
|
129
|
-
const scrubValues = [
|
|
130
|
-
|
|
155
|
+
const scrubValues = [
|
|
156
|
+
credential,
|
|
157
|
+
extraCredentials?.apiKey,
|
|
158
|
+
extraCredentials?.apiSecret,
|
|
159
|
+
extraCredentials?.passphrase,
|
|
160
|
+
].filter((v) => Boolean(v));
|
|
131
161
|
const grantId = (0, crypto_1.randomUUID)();
|
|
132
|
-
grantCache.set(grantId, {
|
|
162
|
+
grantCache.set(grantId, {
|
|
163
|
+
startedAt: Date.now(),
|
|
164
|
+
capabilityId: cap.name,
|
|
165
|
+
});
|
|
133
166
|
const effectiveTimeoutMs = Math.min(req.timeoutMs || cap.timeout || 30000, cap.timeout || 30000);
|
|
134
167
|
return {
|
|
135
168
|
grantId,
|
|
@@ -149,8 +182,8 @@ function buildAuthorityHooks(config, auditLogger) {
|
|
|
149
182
|
const grant = grantCache.get(req.grantId);
|
|
150
183
|
grantCache.delete(req.grantId);
|
|
151
184
|
auditLogger.log({
|
|
152
|
-
service: grant?.capabilityId ||
|
|
153
|
-
method:
|
|
185
|
+
service: grant?.capabilityId || "unknown",
|
|
186
|
+
method: "EXEC_COMPLETE",
|
|
154
187
|
path: req.grantId,
|
|
155
188
|
headers: {},
|
|
156
189
|
body: undefined,
|
|
@@ -169,12 +202,12 @@ function buildAuthorityHooks(config, auditLogger) {
|
|
|
169
202
|
};
|
|
170
203
|
}
|
|
171
204
|
async function authorityAuthorizeExec(authorityUrl, runnerKey, request) {
|
|
172
|
-
const res = await fetch(`${authorityUrl.replace(/\/$/,
|
|
173
|
-
method:
|
|
205
|
+
const res = await fetch(`${authorityUrl.replace(/\/$/, "")}/v1/exec/authorize`, {
|
|
206
|
+
method: "POST",
|
|
174
207
|
headers: {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
208
|
+
"content-type": "application/json",
|
|
209
|
+
"x-janee-runner-key": runnerKey,
|
|
210
|
+
"x-janee-request-id": request.requestId || (0, crypto_1.randomUUID)(),
|
|
178
211
|
},
|
|
179
212
|
body: JSON.stringify(request),
|
|
180
213
|
});
|
|
@@ -185,11 +218,11 @@ async function authorityAuthorizeExec(authorityUrl, runnerKey, request) {
|
|
|
185
218
|
return res.json();
|
|
186
219
|
}
|
|
187
220
|
async function authorityCompleteExec(authorityUrl, runnerKey, request) {
|
|
188
|
-
const res = await fetch(`${authorityUrl.replace(/\/$/,
|
|
189
|
-
method:
|
|
221
|
+
const res = await fetch(`${authorityUrl.replace(/\/$/, "")}/v1/exec/complete`, {
|
|
222
|
+
method: "POST",
|
|
190
223
|
headers: {
|
|
191
|
-
|
|
192
|
-
|
|
224
|
+
"content-type": "application/json",
|
|
225
|
+
"x-janee-runner-key": runnerKey,
|
|
193
226
|
},
|
|
194
227
|
body: JSON.stringify(request),
|
|
195
228
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/core/authority.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/core/authority.ts"],"names":[],"mappings":"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"}
|
package/dist/core/health.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Health check module for Janee services
|
|
3
3
|
* Provides connectivity and latency checks for configured API backends
|
|
4
4
|
*/
|
|
5
|
-
import { ServiceConfig } from
|
|
5
|
+
import { ServiceConfig } from "./mcp-server.js";
|
|
6
6
|
export interface HealthCheckResult {
|
|
7
7
|
service: string;
|
|
8
8
|
healthy: boolean;
|
|
@@ -62,4 +62,27 @@ export declare function resolveTestPath(serviceName: string, baseUrl: string): s
|
|
|
62
62
|
* For simple reachability without auth, use checkServiceHealth() instead.
|
|
63
63
|
*/
|
|
64
64
|
export declare function testServiceConnection(serviceName: string, serviceConfig: ServiceConfig, options?: ServiceTestOptions): Promise<ServiceTestResult>;
|
|
65
|
+
export interface ExecHealthCheckResult {
|
|
66
|
+
service: string;
|
|
67
|
+
capability: string;
|
|
68
|
+
healthy: boolean;
|
|
69
|
+
checks: {
|
|
70
|
+
binaryExists: boolean;
|
|
71
|
+
binaryPath?: string;
|
|
72
|
+
envResolvable: boolean;
|
|
73
|
+
unresolvedVars?: string[];
|
|
74
|
+
};
|
|
75
|
+
latencyMs: number;
|
|
76
|
+
error?: string;
|
|
77
|
+
checkedAt: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if an exec-mode capability is functional:
|
|
81
|
+
* - Binary specified in allowCommands exists and is executable
|
|
82
|
+
* - Credential env vars can be resolved (without leaking values)
|
|
83
|
+
*/
|
|
84
|
+
export declare function checkExecHealth(serviceName: string, capabilityName: string, capability: {
|
|
85
|
+
allowCommands?: string[];
|
|
86
|
+
env?: Record<string, string>;
|
|
87
|
+
}, credentialAvailable: boolean): Promise<ExecHealthCheckResult>;
|
|
65
88
|
//# sourceMappingURL=health.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/core/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/core/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA8D5B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1C,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAK9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CASpB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA4G5B;AAID,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE;IACV,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,EACD,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CA2EhC"}
|