viberadar 0.3.171 → 0.3.173
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/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/probe/config.d.ts +3 -0
- package/dist/probe/config.d.ts.map +1 -0
- package/dist/probe/config.js +106 -0
- package/dist/probe/config.js.map +1 -0
- package/dist/probe/index.d.ts +2 -0
- package/dist/probe/index.d.ts.map +1 -0
- package/dist/probe/index.js +67 -0
- package/dist/probe/index.js.map +1 -0
- package/dist/probe/notify.d.ts +8 -0
- package/dist/probe/notify.d.ts.map +1 -0
- package/dist/probe/notify.js +173 -0
- package/dist/probe/notify.js.map +1 -0
- package/dist/probe/runner.d.ts +3 -0
- package/dist/probe/runner.d.ts.map +1 -0
- package/dist/probe/runner.js +162 -0
- package/dist/probe/runner.js.map +1 -0
- package/dist/probe/scheduler.d.ts +6 -0
- package/dist/probe/scheduler.d.ts.map +1 -0
- package/dist/probe/scheduler.js +37 -0
- package/dist/probe/scheduler.js.map +1 -0
- package/dist/probe/types.d.ts +51 -0
- package/dist/probe/types.d.ts.map +1 -0
- package/dist/probe/types.js +3 -0
- package/dist/probe/types.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +0 -64
- package/dist/server/index.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startProbeLoop = startProbeLoop;
|
|
4
|
+
function startProbeLoop(intervalSec, runFn, onReport) {
|
|
5
|
+
let running = false;
|
|
6
|
+
let timer = null;
|
|
7
|
+
const tick = async () => {
|
|
8
|
+
if (running) {
|
|
9
|
+
console.log(' ⏳ Previous run still in progress, skipping...');
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
running = true;
|
|
13
|
+
try {
|
|
14
|
+
const report = await runFn();
|
|
15
|
+
await onReport(report);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
console.error(` ❌ Probe run error: ${err.message}`);
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
running = false;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const shutdown = () => {
|
|
25
|
+
console.log('\n🛑 Probe stopping...');
|
|
26
|
+
if (timer)
|
|
27
|
+
clearInterval(timer);
|
|
28
|
+
process.exit(0);
|
|
29
|
+
};
|
|
30
|
+
process.on('SIGINT', shutdown);
|
|
31
|
+
process.on('SIGTERM', shutdown);
|
|
32
|
+
console.log(` Interval: every ${intervalSec}s`);
|
|
33
|
+
console.log(' Press Ctrl+C to stop\n');
|
|
34
|
+
tick();
|
|
35
|
+
timer = setInterval(tick, intervalSec * 1000);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/probe/scheduler.ts"],"names":[],"mappings":";;AAKA,wCAsCC;AAtCD,SAAgB,cAAc,CAC5B,WAAmB,EACnB,KAAY,EACZ,QAAkB;IAElB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAK,GAA0C,IAAI,CAAC;IAExD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,sBAAsB,WAAW,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,IAAI,EAAE,CAAC;IACP,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface ProbeConfig {
|
|
2
|
+
target: string;
|
|
3
|
+
interval: number;
|
|
4
|
+
timeout: number;
|
|
5
|
+
notify?: ProbeNotifyConfig;
|
|
6
|
+
checks: ProbeCheck[];
|
|
7
|
+
}
|
|
8
|
+
export interface ProbeNotifyConfig {
|
|
9
|
+
telegram?: {
|
|
10
|
+
botToken: string;
|
|
11
|
+
chatId: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface ProbeCheck {
|
|
15
|
+
name: string;
|
|
16
|
+
steps: ProbeStep[];
|
|
17
|
+
}
|
|
18
|
+
export type ProbeStep = {
|
|
19
|
+
goto: string;
|
|
20
|
+
} | {
|
|
21
|
+
fill: {
|
|
22
|
+
selector: string;
|
|
23
|
+
value: string;
|
|
24
|
+
};
|
|
25
|
+
} | {
|
|
26
|
+
click: string;
|
|
27
|
+
} | {
|
|
28
|
+
wait: number;
|
|
29
|
+
} | {
|
|
30
|
+
'expect.visible': string;
|
|
31
|
+
} | {
|
|
32
|
+
'expect.text': {
|
|
33
|
+
selector: string;
|
|
34
|
+
contains: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export interface ProbeResult {
|
|
38
|
+
check: string;
|
|
39
|
+
status: 'passed' | 'failed';
|
|
40
|
+
durationMs: number;
|
|
41
|
+
error?: string;
|
|
42
|
+
screenshotPath?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ProbeRunReport {
|
|
45
|
+
target: string;
|
|
46
|
+
timestamp: string;
|
|
47
|
+
results: ProbeResult[];
|
|
48
|
+
passed: number;
|
|
49
|
+
failed: number;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/probe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/probe/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAGlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAuhED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAGlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAuhED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA4lF1G"}
|
package/dist/server/index.js
CHANGED
|
@@ -3544,70 +3544,6 @@ function startServer({ data: initialData, port, projectRoot }) {
|
|
|
3544
3544
|
});
|
|
3545
3545
|
return;
|
|
3546
3546
|
}
|
|
3547
|
-
if (url === '/api/obs-build-prompt' && req.method === 'POST') {
|
|
3548
|
-
let body = '';
|
|
3549
|
-
req.on('data', (d) => { body += d; });
|
|
3550
|
-
req.on('end', () => {
|
|
3551
|
-
try {
|
|
3552
|
-
const { task, meta } = JSON.parse(body);
|
|
3553
|
-
const obs = currentData.observability;
|
|
3554
|
-
if (!obs) {
|
|
3555
|
-
res.writeHead(400, jsonH);
|
|
3556
|
-
res.end(JSON.stringify({ error: 'No observability data' }));
|
|
3557
|
-
return;
|
|
3558
|
-
}
|
|
3559
|
-
let prompt = null;
|
|
3560
|
-
if (task === 'obs-suppress-pattern') {
|
|
3561
|
-
prompt = buildObsSuppressPatternPrompt(meta.pattern, meta.recommendation || 'suppress', obs.catalog);
|
|
3562
|
-
}
|
|
3563
|
-
else if (task === 'obs-fix-module') {
|
|
3564
|
-
const item = obs.catalog.find((c) => c.modulePath === meta.modulePath);
|
|
3565
|
-
if (!item) {
|
|
3566
|
-
res.writeHead(404, jsonH);
|
|
3567
|
-
res.end(JSON.stringify({ error: 'Module not found' }));
|
|
3568
|
-
return;
|
|
3569
|
-
}
|
|
3570
|
-
prompt = buildObsFixModulePrompt(meta.modulePath, item);
|
|
3571
|
-
}
|
|
3572
|
-
else if (task === 'obs-add-critical-logs') {
|
|
3573
|
-
const v2Item = (obs.missingCriticalLogsV2 || []).find((m) => m.modulePath === meta.modulePath);
|
|
3574
|
-
prompt = v2Item
|
|
3575
|
-
? buildObsAddCriticalLogsPromptV2(v2Item, obs.catalog)
|
|
3576
|
-
: buildObsAddCriticalLogsPrompt(meta.modulePath, obs.catalog);
|
|
3577
|
-
}
|
|
3578
|
-
else if (task === 'obs-enrich-field') {
|
|
3579
|
-
prompt = buildObsEnrichFieldPrompt(meta.fieldName, obs.catalog);
|
|
3580
|
-
}
|
|
3581
|
-
else if (task === 'obs-batch-recommendation') {
|
|
3582
|
-
prompt = buildObsBatchRecommendationPrompt(meta.recommendationType, obs.catalog);
|
|
3583
|
-
}
|
|
3584
|
-
else if (task === 'obs-fix-selected') {
|
|
3585
|
-
const { missingLogIndices, catalogPaths, fieldName, recommendationType } = meta;
|
|
3586
|
-
if (Array.isArray(missingLogIndices) && missingLogIndices.length > 0) {
|
|
3587
|
-
const v2 = obs.missingCriticalLogsV2 || [];
|
|
3588
|
-
const items = missingLogIndices.map((i) => v2[i]).filter(Boolean);
|
|
3589
|
-
prompt = items.length > 0 ? buildObsBatchAddCriticalLogsPrompt(items, obs.catalog) : null;
|
|
3590
|
-
}
|
|
3591
|
-
else if (Array.isArray(catalogPaths) && catalogPaths.length > 0) {
|
|
3592
|
-
const selected = obs.catalog.filter((c) => catalogPaths.includes(c.modulePath));
|
|
3593
|
-
prompt = buildObsFixSelectedPrompt(selected, meta);
|
|
3594
|
-
}
|
|
3595
|
-
}
|
|
3596
|
-
if (!prompt) {
|
|
3597
|
-
res.writeHead(400, jsonH);
|
|
3598
|
-
res.end(JSON.stringify({ error: 'Could not build prompt for this task' }));
|
|
3599
|
-
return;
|
|
3600
|
-
}
|
|
3601
|
-
res.writeHead(200, jsonH);
|
|
3602
|
-
res.end(JSON.stringify({ prompt }));
|
|
3603
|
-
}
|
|
3604
|
-
catch (e) {
|
|
3605
|
-
res.writeHead(400, jsonH);
|
|
3606
|
-
res.end(JSON.stringify({ error: e.message }));
|
|
3607
|
-
}
|
|
3608
|
-
});
|
|
3609
|
-
return;
|
|
3610
|
-
}
|
|
3611
3547
|
if (url === '/api/agent-whoami' && req.method === 'GET') {
|
|
3612
3548
|
const cmd = WIN ? 'claude.cmd auth status' : 'claude auth status';
|
|
3613
3549
|
let out = '';
|