@develler/remediation-agent 1.0.7 → 1.0.9
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/dist/auto.d.ts +10 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +48 -0
- package/dist/auto.js.map +1 -0
- package/dist/commands/connect.js +1 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/setup.d.ts +10 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +134 -0
- package/dist/commands/setup.js.map +1 -0
- package/package.json +7 -2
package/dist/auto.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-instrumentation entry point.
|
|
3
|
+
* Activated by NODE_OPTIONS=--require @develler/remediation-agent/auto
|
|
4
|
+
* (written to .env automatically by the setup command).
|
|
5
|
+
*
|
|
6
|
+
* Patches express() so every new app instance gets the remediation
|
|
7
|
+
* middleware attached before any user routes — no code changes needed.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
package/dist/auto.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auto-instrumentation entry point.
|
|
4
|
+
* Activated by NODE_OPTIONS=--require @develler/remediation-agent/auto
|
|
5
|
+
* (written to .env automatically by the setup command).
|
|
6
|
+
*
|
|
7
|
+
* Patches express() so every new app instance gets the remediation
|
|
8
|
+
* middleware attached before any user routes — no code changes needed.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const module_1 = __importDefault(require("module"));
|
|
15
|
+
const index_js_1 = require("./index.js");
|
|
16
|
+
// ── Agent initialisation ─────────────────────────────────────────────────────
|
|
17
|
+
let resolvedHandler = null;
|
|
18
|
+
(0, index_js_1.createRemediationMiddleware)()
|
|
19
|
+
.then(agent => { resolvedHandler = agent.handler(); })
|
|
20
|
+
.catch((err) => {
|
|
21
|
+
process.stderr.write(`[develler] auto-init failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
22
|
+
});
|
|
23
|
+
// ── Express patch ────────────────────────────────────────────────────────────
|
|
24
|
+
const _load = module_1.default._load;
|
|
25
|
+
let patched = false;
|
|
26
|
+
module_1.default._load = function load(id, ...rest) {
|
|
27
|
+
const mod = _load.apply(this, [id, ...rest]);
|
|
28
|
+
if (!patched && id === 'express') {
|
|
29
|
+
patched = true;
|
|
30
|
+
return wrapExpress(mod);
|
|
31
|
+
}
|
|
32
|
+
return mod;
|
|
33
|
+
};
|
|
34
|
+
function wrapExpress(express) {
|
|
35
|
+
function patchedExpress(...args) {
|
|
36
|
+
const app = express(...args);
|
|
37
|
+
app.use((req, res, next) => {
|
|
38
|
+
if (resolvedHandler)
|
|
39
|
+
return resolvedHandler(req, res, next);
|
|
40
|
+
return next();
|
|
41
|
+
});
|
|
42
|
+
return app;
|
|
43
|
+
}
|
|
44
|
+
Object.setPrototypeOf(patchedExpress, Object.getPrototypeOf(express));
|
|
45
|
+
Object.defineProperties(patchedExpress, Object.getOwnPropertyDescriptors(express));
|
|
46
|
+
return patchedExpress;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=auto.js.map
|
package/dist/auto.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAEH,oDAA4B;AAE5B,yCAAyD;AAEzD,gFAAgF;AAEhF,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,IAAA,sCAA2B,GAAE;KAC1B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;KACrD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACrF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,gFAAgF;AAEhF,MAAM,KAAK,GAAI,gBAAc,CAAC,KAAoD,CAAC;AACnF,IAAI,OAAO,GAAG,KAAK,CAAC;AAEnB,gBAAc,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,EAAU,EAAE,GAAG,IAAe;IAClE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,OAAY;IAC/B,SAAS,cAAc,CAAC,GAAG,IAAe;QACxC,MAAM,GAAG,GAAI,OAAoC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;YAC/C,IAAI,eAAe;gBAAE,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAW,CAAC,CAAC;YACnE,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnF,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/dist/commands/connect.js
CHANGED
|
@@ -74,7 +74,7 @@ function loadDotEnv() {
|
|
|
74
74
|
async function main() {
|
|
75
75
|
loadDotEnv();
|
|
76
76
|
const saasUrl = (process.env['REMEDIATION_SAAS_URL'] ?? '').replace(/\/+$/, '');
|
|
77
|
-
const connectionKey = process.env['REMEDIATION_CONNECTION_KEY']
|
|
77
|
+
const connectionKey = process.argv[2] || process.env['REMEDIATION_CONNECTION_KEY'] || '';
|
|
78
78
|
const webhookUrl = process.env['REMEDIATION_WEBHOOK_URL'] ?? null;
|
|
79
79
|
if (!saasUrl || !connectionKey) {
|
|
80
80
|
console.error('ERROR: REMEDIATION_SAAS_URL and REMEDIATION_CONNECTION_KEY must both be set.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAA0B;AAC1B,2BAA6D;AAC7D,+BAA4B;AAG5B,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;AAE5E,SAAS,UAAU;IACjB,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC;QAAE,OAAO;IACjC,KAAK,MAAM,IAAI,IAAI,IAAA,iBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,GAAG,GAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,UAAU,EAAE,CAAC;IACb,MAAM,OAAO,GAAS,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* npx @develler/remediation-agent <connection-key>
|
|
4
|
+
*
|
|
5
|
+
* One-command setup for the Develler Remediation Agent.
|
|
6
|
+
* Installs the package, performs the initial handshake, and
|
|
7
|
+
* writes .remediation-connection.json at the project root.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* npx @develler/remediation-agent <connection-key>
|
|
5
|
+
*
|
|
6
|
+
* One-command setup for the Develler Remediation Agent.
|
|
7
|
+
* Installs the package, performs the initial handshake, and
|
|
8
|
+
* writes .remediation-connection.json at the project root.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const child_process_1 = require("child_process");
|
|
15
|
+
const fs_1 = require("fs");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const axios_1 = __importDefault(require("axios"));
|
|
18
|
+
const CONNECTION_FILE = (0, path_1.join)(process.cwd(), '.remediation-connection.json');
|
|
19
|
+
function loadDotEnv() {
|
|
20
|
+
const envPath = (0, path_1.join)(process.cwd(), '.env');
|
|
21
|
+
if (!(0, fs_1.existsSync)(envPath))
|
|
22
|
+
return;
|
|
23
|
+
for (const line of (0, fs_1.readFileSync)(envPath, 'utf8').split('\n')) {
|
|
24
|
+
const trimmed = line.trim();
|
|
25
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
26
|
+
continue;
|
|
27
|
+
const eq = trimmed.indexOf('=');
|
|
28
|
+
if (eq === -1)
|
|
29
|
+
continue;
|
|
30
|
+
const key = trimmed.slice(0, eq).trim();
|
|
31
|
+
const value = trimmed.slice(eq + 1).trim().replace(/^["']|["']$/g, '');
|
|
32
|
+
if (key && !(key in process.env))
|
|
33
|
+
process.env[key] = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function main() {
|
|
37
|
+
loadDotEnv();
|
|
38
|
+
const connectionKey = process.argv[2] || process.env['REMEDIATION_CONNECTION_KEY'] || '';
|
|
39
|
+
const saasUrl = (process.env['REMEDIATION_SAAS_URL'] ?? 'https://app.develler.io').replace(/\/+$/, '');
|
|
40
|
+
if (!connectionKey) {
|
|
41
|
+
console.error('');
|
|
42
|
+
console.error(' Usage: npx @develler/remediation-agent <connection-key>');
|
|
43
|
+
console.error('');
|
|
44
|
+
console.error(' Your connection key is on the Develler dashboard under Setup.');
|
|
45
|
+
console.error('');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
console.log('');
|
|
49
|
+
console.log(' [1/3] Installing @develler/remediation-agent...');
|
|
50
|
+
try {
|
|
51
|
+
(0, child_process_1.execSync)('npm install @develler/remediation-agent', { stdio: 'inherit', cwd: process.cwd() });
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
console.error(' Failed to run npm install. Make sure npm is available and you are in your project root.');
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(` [2/3] Connecting to ${saasUrl}...`);
|
|
59
|
+
const payload = {
|
|
60
|
+
connection_key: connectionKey,
|
|
61
|
+
site_url: process.env['APP_URL'] ?? `http://localhost:${process.env['PORT'] ?? '3000'}`,
|
|
62
|
+
site_name: process.env['APP_NAME'] ?? null,
|
|
63
|
+
language_runtime: 'node',
|
|
64
|
+
runtime_version: process.version,
|
|
65
|
+
framework: process.env['REMEDIATION_FRAMEWORK'] ?? 'express',
|
|
66
|
+
framework_version: process.env['REMEDIATION_FRAMEWORK_VERSION'] ?? null,
|
|
67
|
+
agent_version: null,
|
|
68
|
+
environment: (process.env['NODE_ENV'] ?? 'production'),
|
|
69
|
+
capabilities: {
|
|
70
|
+
mode_a_ast: false,
|
|
71
|
+
mode_b_interceptor: true,
|
|
72
|
+
redis_available: false,
|
|
73
|
+
git_access: false,
|
|
74
|
+
},
|
|
75
|
+
webhook_url: null,
|
|
76
|
+
};
|
|
77
|
+
let response;
|
|
78
|
+
try {
|
|
79
|
+
const result = await axios_1.default.post(`${saasUrl}/api/remediation/v1/handshake`, payload, { timeout: 15000 });
|
|
80
|
+
response = result.data;
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
const message = axios_1.default.isAxiosError(err)
|
|
84
|
+
? `HTTP ${err.response?.status ?? 'timeout'}: ${JSON.stringify(err.response?.data)}`
|
|
85
|
+
: String(err);
|
|
86
|
+
console.error(` Connection failed: ${message}`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
if (response.status !== 'accepted') {
|
|
90
|
+
console.error(' Connection rejected. Check your connection key and try again.');
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
const config = {
|
|
94
|
+
client_id: response.client_id,
|
|
95
|
+
token: response.token,
|
|
96
|
+
saas_url: saasUrl,
|
|
97
|
+
channel_type: response.instruction_channel.type,
|
|
98
|
+
poll_url: response.instruction_channel.poll_url,
|
|
99
|
+
poll_interval_seconds: response.instruction_channel.poll_interval_seconds,
|
|
100
|
+
connected_at: new Date().toISOString(),
|
|
101
|
+
};
|
|
102
|
+
console.log('');
|
|
103
|
+
console.log(' [3/3] Saving connection config...');
|
|
104
|
+
(0, fs_1.writeFileSync)(CONNECTION_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
105
|
+
patchDotEnv();
|
|
106
|
+
console.log('');
|
|
107
|
+
console.log(` Connected. client_id: ${String(config.client_id)}`);
|
|
108
|
+
console.log('');
|
|
109
|
+
console.log(' Restart your app and the agent will be active.');
|
|
110
|
+
console.log(' Add .remediation-connection.json to your .gitignore.');
|
|
111
|
+
console.log('');
|
|
112
|
+
}
|
|
113
|
+
function patchDotEnv() {
|
|
114
|
+
const envPath = (0, path_1.join)(process.cwd(), '.env');
|
|
115
|
+
const flag = '--require @develler/remediation-agent/auto';
|
|
116
|
+
const existing = (0, fs_1.existsSync)(envPath) ? (0, fs_1.readFileSync)(envPath, 'utf8') : '';
|
|
117
|
+
if (existing.includes(flag))
|
|
118
|
+
return;
|
|
119
|
+
const nodeOptsMatch = existing.match(/^NODE_OPTIONS=(.*)$/m);
|
|
120
|
+
let updated;
|
|
121
|
+
if (nodeOptsMatch) {
|
|
122
|
+
updated = existing.replace(/^NODE_OPTIONS=(.*)$/m, `NODE_OPTIONS=$1 ${flag}`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
updated = existing.trimEnd() + (existing ? '\n' : '') + `NODE_OPTIONS=${flag}\n`;
|
|
126
|
+
}
|
|
127
|
+
(0, fs_1.writeFileSync)(envPath, updated);
|
|
128
|
+
}
|
|
129
|
+
main().catch((err) => {
|
|
130
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
131
|
+
console.error(`Unexpected error: ${msg}`);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@develler/remediation-agent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Remediation agent for Node.js/Express — real-time PII masking and automated code-fix pipeline",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/index.js",
|
|
9
|
+
"./auto": "./dist/auto.js"
|
|
10
|
+
},
|
|
7
11
|
"bin": {
|
|
8
|
-
"remediation-connect": "dist/commands/connect.js"
|
|
12
|
+
"remediation-connect": "dist/commands/connect.js",
|
|
13
|
+
"remediation-agent": "dist/commands/setup.js"
|
|
9
14
|
},
|
|
10
15
|
"files": [
|
|
11
16
|
"dist/**/*",
|