@yan162/changewayguard 6.8.25
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/LICENSE +21 -0
- package/OpenClaw-linux_Mac-Guide-zh.md +89 -0
- package/dashboard-dist/api/122.index.js +95 -0
- package/dashboard-dist/api/122.index.js.map +1 -0
- package/dashboard-dist/api/143.index.js +2734 -0
- package/dashboard-dist/api/143.index.js.map +1 -0
- package/dashboard-dist/api/154.index.js +4151 -0
- package/dashboard-dist/api/154.index.js.map +1 -0
- package/dashboard-dist/api/173.index.js +24112 -0
- package/dashboard-dist/api/173.index.js.map +1 -0
- package/dashboard-dist/api/217.index.js +44 -0
- package/dashboard-dist/api/217.index.js.map +1 -0
- package/dashboard-dist/api/222.index.js +90 -0
- package/dashboard-dist/api/222.index.js.map +1 -0
- package/dashboard-dist/api/280.index.js +213 -0
- package/dashboard-dist/api/280.index.js.map +1 -0
- package/dashboard-dist/api/369.index.js +115 -0
- package/dashboard-dist/api/369.index.js.map +1 -0
- package/dashboard-dist/api/374.index.js +1896 -0
- package/dashboard-dist/api/374.index.js.map +1 -0
- package/dashboard-dist/api/424.index.js +135 -0
- package/dashboard-dist/api/424.index.js.map +1 -0
- package/dashboard-dist/api/445.index.js +3562 -0
- package/dashboard-dist/api/445.index.js.map +1 -0
- package/dashboard-dist/api/555.index.js +496 -0
- package/dashboard-dist/api/555.index.js.map +1 -0
- package/dashboard-dist/api/573.index.js +806 -0
- package/dashboard-dist/api/573.index.js.map +1 -0
- package/dashboard-dist/api/580.index.js +1420 -0
- package/dashboard-dist/api/580.index.js.map +1 -0
- package/dashboard-dist/api/581.index.js +67 -0
- package/dashboard-dist/api/581.index.js.map +1 -0
- package/dashboard-dist/api/598.index.js +328 -0
- package/dashboard-dist/api/598.index.js.map +1 -0
- package/dashboard-dist/api/720.index.js +105 -0
- package/dashboard-dist/api/720.index.js.map +1 -0
- package/dashboard-dist/api/744.index.js +333 -0
- package/dashboard-dist/api/744.index.js.map +1 -0
- package/dashboard-dist/api/818.index.js +374 -0
- package/dashboard-dist/api/818.index.js.map +1 -0
- package/dashboard-dist/api/831.index.js +99 -0
- package/dashboard-dist/api/831.index.js.map +1 -0
- package/dashboard-dist/api/84.index.js +64 -0
- package/dashboard-dist/api/84.index.js.map +1 -0
- package/dashboard-dist/api/900.index.js +81 -0
- package/dashboard-dist/api/900.index.js.map +1 -0
- package/dashboard-dist/api/917.index.js +88 -0
- package/dashboard-dist/api/917.index.js.map +1 -0
- package/dashboard-dist/api/927.index.js +4250 -0
- package/dashboard-dist/api/927.index.js.map +1 -0
- package/dashboard-dist/api/948.index.js +64 -0
- package/dashboard-dist/api/948.index.js.map +1 -0
- package/dashboard-dist/api/982.index.js +67 -0
- package/dashboard-dist/api/982.index.js.map +1 -0
- package/dashboard-dist/api/99.index.js +1176 -0
- package/dashboard-dist/api/99.index.js.map +1 -0
- package/dashboard-dist/api/drizzle/sqlite/0000_short_captain_stacy.sql +70 -0
- package/dashboard-dist/api/drizzle/sqlite/0001_closed_magus.sql +10 -0
- package/dashboard-dist/api/drizzle/sqlite/0002_agent_capability_observation.sql +38 -0
- package/dashboard-dist/api/drizzle/sqlite/0003_auth_magic_link.sql +28 -0
- package/dashboard-dist/api/drizzle/sqlite/0004_static_scan_fields.sql +8 -0
- package/dashboard-dist/api/drizzle/sqlite/0005_gateway_activity.sql +24 -0
- package/dashboard-dist/api/drizzle/sqlite/0006_sour_marauders.sql +41 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0000_snapshot.json +460 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0001_snapshot.json +536 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0006_snapshot.json +1249 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/_journal.json +55 -0
- package/dashboard-dist/api/index.js +28482 -0
- package/dashboard-dist/api/index.js.map +1 -0
- package/dashboard-dist/api/package.json +16 -0
- package/dashboard-dist/api/sourcemap-register.cjs +1 -0
- package/dashboard-dist/web/assets/index-BKUfzbIg.js +148 -0
- package/dashboard-dist/web/assets/index-rHRH99IQ.css +1 -0
- package/dashboard-dist/web/changeway-logo.png +0 -0
- package/dashboard-dist/web/favicon.svg +29 -0
- package/dashboard-dist/web/index.html +15 -0
- package/dashboard-dist/web/logo.svg +16 -0
- package/dist/agent/activation.d.ts +21 -0
- package/dist/agent/activation.d.ts.map +1 -0
- package/dist/agent/activation.js +94 -0
- package/dist/agent/activation.js.map +1 -0
- package/dist/agent/auth.d.ts +73 -0
- package/dist/agent/auth.d.ts.map +1 -0
- package/dist/agent/auth.js +363 -0
- package/dist/agent/auth.js.map +1 -0
- package/dist/agent/behavior-detector.d.ts +150 -0
- package/dist/agent/behavior-detector.d.ts.map +1 -0
- package/dist/agent/behavior-detector.js +559 -0
- package/dist/agent/behavior-detector.js.map +1 -0
- package/dist/agent/business-reporter.d.ts +114 -0
- package/dist/agent/business-reporter.d.ts.map +1 -0
- package/dist/agent/business-reporter.js +359 -0
- package/dist/agent/business-reporter.js.map +1 -0
- package/dist/agent/config-sync.d.ts +70 -0
- package/dist/agent/config-sync.d.ts.map +1 -0
- package/dist/agent/config-sync.js +133 -0
- package/dist/agent/config-sync.js.map +1 -0
- package/dist/agent/config.d.ts +98 -0
- package/dist/agent/config.d.ts.map +1 -0
- package/dist/agent/config.js +348 -0
- package/dist/agent/config.js.map +1 -0
- package/dist/agent/content-injection-scanner.d.ts +35 -0
- package/dist/agent/content-injection-scanner.d.ts.map +1 -0
- package/dist/agent/content-injection-scanner.js +270 -0
- package/dist/agent/content-injection-scanner.js.map +1 -0
- package/dist/agent/engine-log-writer.d.ts +6 -0
- package/dist/agent/engine-log-writer.d.ts.map +1 -0
- package/dist/agent/engine-log-writer.js +18 -0
- package/dist/agent/engine-log-writer.js.map +1 -0
- package/dist/agent/env.d.ts +19 -0
- package/dist/agent/env.d.ts.map +1 -0
- package/dist/agent/env.js +44 -0
- package/dist/agent/env.js.map +1 -0
- package/dist/agent/event-reporter.d.ts +87 -0
- package/dist/agent/event-reporter.d.ts.map +1 -0
- package/dist/agent/event-reporter.js +306 -0
- package/dist/agent/event-reporter.js.map +1 -0
- package/dist/agent/file-watcher.d.ts +50 -0
- package/dist/agent/file-watcher.d.ts.map +1 -0
- package/dist/agent/file-watcher.js +135 -0
- package/dist/agent/file-watcher.js.map +1 -0
- package/dist/agent/fs-utils.d.ts +22 -0
- package/dist/agent/fs-utils.d.ts.map +1 -0
- package/dist/agent/fs-utils.js +41 -0
- package/dist/agent/fs-utils.js.map +1 -0
- package/dist/agent/gateway-manager.d.ts +59 -0
- package/dist/agent/gateway-manager.d.ts.map +1 -0
- package/dist/agent/gateway-manager.js +583 -0
- package/dist/agent/gateway-manager.js.map +1 -0
- package/dist/agent/hook-types.d.ts +276 -0
- package/dist/agent/hook-types.d.ts.map +1 -0
- package/dist/agent/hook-types.js +51 -0
- package/dist/agent/hook-types.js.map +1 -0
- package/dist/agent/http-client.d.ts +19 -0
- package/dist/agent/http-client.d.ts.map +1 -0
- package/dist/agent/http-client.js +37 -0
- package/dist/agent/http-client.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/openclaw-hybrid-audit-changeway.js +1447 -0
- package/dist/agent/prompt-gate.d.ts +16 -0
- package/dist/agent/prompt-gate.d.ts.map +1 -0
- package/dist/agent/prompt-gate.js +58 -0
- package/dist/agent/prompt-gate.js.map +1 -0
- package/dist/agent/prompt-input.d.ts +9 -0
- package/dist/agent/prompt-input.d.ts.map +1 -0
- package/dist/agent/prompt-input.js +173 -0
- package/dist/agent/prompt-input.js.map +1 -0
- package/dist/agent/prompt-output.d.ts +4 -0
- package/dist/agent/prompt-output.d.ts.map +1 -0
- package/dist/agent/prompt-output.js +19 -0
- package/dist/agent/prompt-output.js.map +1 -0
- package/dist/agent/runner.d.ts +23 -0
- package/dist/agent/runner.d.ts.map +1 -0
- package/dist/agent/runner.js +165 -0
- package/dist/agent/runner.js.map +1 -0
- package/dist/agent/runtime-mode.d.ts +10 -0
- package/dist/agent/runtime-mode.d.ts.map +1 -0
- package/dist/agent/runtime-mode.js +19 -0
- package/dist/agent/runtime-mode.js.map +1 -0
- package/dist/agent/sanitizer.d.ts +10 -0
- package/dist/agent/sanitizer.d.ts.map +1 -0
- package/dist/agent/sanitizer.js +175 -0
- package/dist/agent/sanitizer.js.map +1 -0
- package/dist/agent/scan-activity.d.ts +19 -0
- package/dist/agent/scan-activity.d.ts.map +1 -0
- package/dist/agent/scan-activity.js +34 -0
- package/dist/agent/scan-activity.js.map +1 -0
- package/dist/agent/types.d.ts +177 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/workspace-scanner.d.ts +35 -0
- package/dist/agent/workspace-scanner.d.ts.map +1 -0
- package/dist/agent/workspace-scanner.js +137 -0
- package/dist/agent/workspace-scanner.js.map +1 -0
- package/dist/dashboard-launcher.d.ts +52 -0
- package/dist/dashboard-launcher.d.ts.map +1 -0
- package/dist/dashboard-launcher.js +363 -0
- package/dist/dashboard-launcher.js.map +1 -0
- package/dist/gateway/activity.d.ts +52 -0
- package/dist/gateway/activity.d.ts.map +1 -0
- package/dist/gateway/activity.js +111 -0
- package/dist/gateway/activity.js.map +1 -0
- package/dist/gateway/config.d.ts +50 -0
- package/dist/gateway/config.d.ts.map +1 -0
- package/dist/gateway/config.js +200 -0
- package/dist/gateway/config.js.map +1 -0
- package/dist/gateway/handlers/anthropic.d.ts +12 -0
- package/dist/gateway/handlers/anthropic.d.ts.map +1 -0
- package/dist/gateway/handlers/anthropic.js +254 -0
- package/dist/gateway/handlers/anthropic.js.map +1 -0
- package/dist/gateway/handlers/gemini.d.ts +12 -0
- package/dist/gateway/handlers/gemini.d.ts.map +1 -0
- package/dist/gateway/handlers/gemini.js +101 -0
- package/dist/gateway/handlers/gemini.js.map +1 -0
- package/dist/gateway/handlers/models.d.ts +4 -0
- package/dist/gateway/handlers/models.d.ts.map +1 -0
- package/dist/gateway/handlers/models.js +36 -0
- package/dist/gateway/handlers/models.js.map +1 -0
- package/dist/gateway/handlers/openai.d.ts +16 -0
- package/dist/gateway/handlers/openai.d.ts.map +1 -0
- package/dist/gateway/handlers/openai.js +254 -0
- package/dist/gateway/handlers/openai.js.map +1 -0
- package/dist/gateway/index.d.ts +27 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +290 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/mapping-store.d.ts +38 -0
- package/dist/gateway/mapping-store.d.ts.map +1 -0
- package/dist/gateway/mapping-store.js +74 -0
- package/dist/gateway/mapping-store.js.map +1 -0
- package/dist/gateway/restorer.d.ts +63 -0
- package/dist/gateway/restorer.d.ts.map +1 -0
- package/dist/gateway/restorer.js +284 -0
- package/dist/gateway/restorer.js.map +1 -0
- package/dist/gateway/sanitizer.d.ts +17 -0
- package/dist/gateway/sanitizer.d.ts.map +1 -0
- package/dist/gateway/sanitizer.js +228 -0
- package/dist/gateway/sanitizer.js.map +1 -0
- package/dist/gateway/types.d.ts +53 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +5 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2990 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +5 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/store.d.ts +82 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +194 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/platform-client/index.d.ts +63 -0
- package/dist/platform-client/index.d.ts.map +1 -0
- package/dist/platform-client/index.js +294 -0
- package/dist/platform-client/index.js.map +1 -0
- package/dist/platform-client/types.d.ts +109 -0
- package/dist/platform-client/types.d.ts.map +1 -0
- package/dist/platform-client/types.js +3 -0
- package/dist/platform-client/types.js.map +1 -0
- package/dist/workspace-agents-guide.d.ts +22 -0
- package/dist/workspace-agents-guide.d.ts.map +1 -0
- package/dist/workspace-agents-guide.js +92 -0
- package/dist/workspace-agents-guide.js.map +1 -0
- package/dist/workspace-agents-sync.d.ts +24 -0
- package/dist/workspace-agents-sync.d.ts.map +1 -0
- package/dist/workspace-agents-sync.js +41 -0
- package/dist/workspace-agents-sync.js.map +1 -0
- package/dist/workspace-agents-watcher.d.ts +23 -0
- package/dist/workspace-agents-watcher.d.ts.map +1 -0
- package/dist/workspace-agents-watcher.js +152 -0
- package/dist/workspace-agents-watcher.js.map +1 -0
- package/dist/workspace-discovery.d.ts +11 -0
- package/dist/workspace-discovery.d.ts.map +1 -0
- package/dist/workspace-discovery.js +116 -0
- package/dist/workspace-discovery.js.map +1 -0
- package/gateway/package-lock.json +597 -0
- package/gateway/package.json +57 -0
- package/gateway/pnpm-lock.yaml +342 -0
- package/gateway/src/activity.ts +142 -0
- package/gateway/src/config.ts +246 -0
- package/gateway/src/handlers/anthropic.ts +328 -0
- package/gateway/src/handlers/gemini.ts +122 -0
- package/gateway/src/handlers/models.ts +45 -0
- package/gateway/src/handlers/openai.ts +333 -0
- package/gateway/src/index.ts +344 -0
- package/gateway/src/mapping-store.ts +88 -0
- package/gateway/src/restorer.ts +322 -0
- package/gateway/src/sanitizer.ts +298 -0
- package/gateway/src/types.ts +73 -0
- package/gateway/tsconfig.json +20 -0
- package/openclaw.plugin.json +86 -0
- package/package.json +74 -0
- package/samples/Untitled +1 -0
- package/samples/clean-email.txt +20 -0
- package/samples/test-document.md +53 -0
- package/samples/test-email-popup.txt +44 -0
- package/samples/test-email.txt +32 -0
- package/samples/test-webpage.html +51 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const id = 217;
|
|
2
|
+
export const ids = [217];
|
|
3
|
+
export const modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 3598:
|
|
6
|
+
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
9
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ resultsRouter: () => (/* binding */ resultsRouter)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var express__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(316);
|
|
13
|
+
/* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6020);
|
|
14
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_1__]);
|
|
15
|
+
_og_db__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
const results = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .detectionResultQueries */ .xd)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
19
|
+
const resultsRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
|
|
20
|
+
// GET /api/results
|
|
21
|
+
resultsRouter.get("/", async (req, res, next) => {
|
|
22
|
+
try {
|
|
23
|
+
const tenantId = res.locals.tenantId;
|
|
24
|
+
const limit = parseInt(req.query.limit) || 50;
|
|
25
|
+
const offset = parseInt(req.query.offset) || 0;
|
|
26
|
+
const agentId = req.query.agentId;
|
|
27
|
+
const data = agentId
|
|
28
|
+
? await results.findByAgentId(agentId, { limit, offset, tenantId })
|
|
29
|
+
: await results.findAll({ limit, offset, tenantId });
|
|
30
|
+
res.json({ success: true, data });
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
next(err);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=results.js.map
|
|
37
|
+
__webpack_async_result__();
|
|
38
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
39
|
+
|
|
40
|
+
/***/ })
|
|
41
|
+
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=217.index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"217.index.js","mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":[".././dist/routes/results.js"],"sourcesContent":["import { Router } from \"express\";\nimport { db, detectionResultQueries } from \"@og/db\";\nconst results = detectionResultQueries(db);\nexport const resultsRouter = Router();\n// GET /api/results\nresultsRouter.get(\"/\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const limit = parseInt(req.query.limit) || 50;\n const offset = parseInt(req.query.offset) || 0;\n const agentId = req.query.agentId;\n const data = agentId\n ? await results.findByAgentId(agentId, { limit, offset, tenantId })\n : await results.findAll({ limit, offset, tenantId });\n res.json({ success: true, data });\n }\n catch (err) {\n next(err);\n }\n});\n//# sourceMappingURL=results.js.map"],"names":[],"sourceRoot":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export const id = 222;
|
|
2
|
+
export const ids = [222];
|
|
3
|
+
export const modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 9222:
|
|
6
|
+
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
9
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ settingsRouter: () => (/* binding */ settingsRouter)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var express__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(316);
|
|
13
|
+
/* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6020);
|
|
14
|
+
/* harmony import */ var _og_shared__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1792);
|
|
15
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_1__]);
|
|
16
|
+
_og_db__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
const settings = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .settingsQueries */ .sz)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
21
|
+
const settingsRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
|
|
22
|
+
// GET /api/settings
|
|
23
|
+
settingsRouter.get("/", async (_req, res, next) => {
|
|
24
|
+
try {
|
|
25
|
+
const all = await settings.getAll();
|
|
26
|
+
// Mask sensitive values
|
|
27
|
+
const masked = {};
|
|
28
|
+
for (const [key, value] of Object.entries(all)) {
|
|
29
|
+
if (key === "og_core_key" || key === "session_token") {
|
|
30
|
+
masked[key] = (0,_og_shared__WEBPACK_IMPORTED_MODULE_2__/* .maskSecret */ .$l)(value);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
masked[key] = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
res.json({ success: true, data: masked });
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
next(err);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
// PUT /api/settings
|
|
43
|
+
settingsRouter.put("/", async (req, res, next) => {
|
|
44
|
+
try {
|
|
45
|
+
const updates = req.body;
|
|
46
|
+
if (!updates || typeof updates !== "object") {
|
|
47
|
+
res.status(400).json({ success: false, error: "Request body must be a key-value object" });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Prevent overwriting session_token via this endpoint
|
|
51
|
+
delete updates.session_token;
|
|
52
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
53
|
+
await settings.set(key, value);
|
|
54
|
+
}
|
|
55
|
+
res.json({ success: true });
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
next(err);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// GET /api/settings/connection-status
|
|
62
|
+
settingsRouter.get("/connection-status", async (_req, res, next) => {
|
|
63
|
+
try {
|
|
64
|
+
const ogCoreKey = await settings.get("og_core_key");
|
|
65
|
+
// Agent is always connected to Core (auto-registered)
|
|
66
|
+
// The only difference is whether it's linked to a user account (claimed) or not (autonomous)
|
|
67
|
+
const mode = ogCoreKey ? "claimed" : "autonomous";
|
|
68
|
+
res.json({
|
|
69
|
+
success: true,
|
|
70
|
+
data: {
|
|
71
|
+
mode,
|
|
72
|
+
message: mode === "claimed"
|
|
73
|
+
? "Agent is linked to your account"
|
|
74
|
+
: "Agent is running in autonomous mode",
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
next(err);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=settings.js.map
|
|
83
|
+
__webpack_async_result__();
|
|
84
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
85
|
+
|
|
86
|
+
/***/ })
|
|
87
|
+
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=222.index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"222.index.js","mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":[".././dist/routes/settings.js"],"sourcesContent":["import { Router } from \"express\";\nimport { db, settingsQueries } from \"@og/db\";\nimport { maskSecret } from \"@og/shared\";\nconst settings = settingsQueries(db);\nexport const settingsRouter = Router();\n// GET /api/settings\nsettingsRouter.get(\"/\", async (_req, res, next) => {\n try {\n const all = await settings.getAll();\n // Mask sensitive values\n const masked = {};\n for (const [key, value] of Object.entries(all)) {\n if (key === \"og_core_key\" || key === \"session_token\") {\n masked[key] = maskSecret(value);\n }\n else {\n masked[key] = value;\n }\n }\n res.json({ success: true, data: masked });\n }\n catch (err) {\n next(err);\n }\n});\n// PUT /api/settings\nsettingsRouter.put(\"/\", async (req, res, next) => {\n try {\n const updates = req.body;\n if (!updates || typeof updates !== \"object\") {\n res.status(400).json({ success: false, error: \"Request body must be a key-value object\" });\n return;\n }\n // Prevent overwriting session_token via this endpoint\n delete updates.session_token;\n for (const [key, value] of Object.entries(updates)) {\n await settings.set(key, value);\n }\n res.json({ success: true });\n }\n catch (err) {\n next(err);\n }\n});\n// GET /api/settings/connection-status\nsettingsRouter.get(\"/connection-status\", async (_req, res, next) => {\n try {\n const ogCoreKey = await settings.get(\"og_core_key\");\n // Agent is always connected to Core (auto-registered)\n // The only difference is whether it's linked to a user account (claimed) or not (autonomous)\n const mode = ogCoreKey ? \"claimed\" : \"autonomous\";\n res.json({\n success: true,\n data: {\n mode,\n message: mode === \"claimed\"\n ? \"Agent is linked to your account\"\n : \"Agent is running in autonomous mode\",\n },\n });\n }\n catch (err) {\n next(err);\n }\n});\n//# sourceMappingURL=settings.js.map"],"names":[],"sourceRoot":""}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
export const id = 280;
|
|
2
|
+
export const ids = [280];
|
|
3
|
+
export const modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 5280:
|
|
6
|
+
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
9
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ detectionRouter: () => (/* binding */ detectionRouter)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var express__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(316);
|
|
13
|
+
/* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6020);
|
|
14
|
+
/* harmony import */ var _services_core_client_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6808);
|
|
15
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_1__, _services_core_client_js__WEBPACK_IMPORTED_MODULE_2__]);
|
|
16
|
+
([_og_db__WEBPACK_IMPORTED_MODULE_1__, _services_core_client_js__WEBPACK_IMPORTED_MODULE_2__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
const scanners = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .scannerQueries */ .nk)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
21
|
+
const policies = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .policyQueries */ .Lz)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
22
|
+
const usage = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .usageQueries */ .gB)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
23
|
+
const detectionResults = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .detectionResultQueries */ .xd)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
24
|
+
const settings = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .settingsQueries */ .sz)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
25
|
+
const detectionRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
|
|
26
|
+
/**
|
|
27
|
+
* POST /api/detect
|
|
28
|
+
* Detection proxy endpoint.
|
|
29
|
+
* Flow:
|
|
30
|
+
* 1. Check core key is configured
|
|
31
|
+
* 2. Get scanner config
|
|
32
|
+
* 3. Call core /v1/detect
|
|
33
|
+
* 4. Evaluate policies
|
|
34
|
+
* 5. Record usage + detection result
|
|
35
|
+
* 6. Return response
|
|
36
|
+
*/
|
|
37
|
+
detectionRouter.post("/", async (req, res, next) => {
|
|
38
|
+
try {
|
|
39
|
+
const tenantId = res.locals.tenantId;
|
|
40
|
+
// 1. Check core key
|
|
41
|
+
const coreKey = await settings.get("og_core_key");
|
|
42
|
+
if (!coreKey) {
|
|
43
|
+
res.status(503).json({
|
|
44
|
+
success: false,
|
|
45
|
+
error: "core key not configured. Go to Settings to add your key.",
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// 2. Get scanner config
|
|
50
|
+
const allScanners = await scanners.getAll(tenantId);
|
|
51
|
+
const coreScanners = allScanners.map((s) => ({
|
|
52
|
+
scannerId: s.scannerId,
|
|
53
|
+
name: s.name,
|
|
54
|
+
description: s.description,
|
|
55
|
+
isEnabled: s.isEnabled,
|
|
56
|
+
}));
|
|
57
|
+
// Validate request body
|
|
58
|
+
const { messages, format, role, agentId } = req.body;
|
|
59
|
+
if (!messages || !Array.isArray(messages) || messages.length === 0) {
|
|
60
|
+
res.status(400).json({ success: false, error: "messages array is required and must not be empty" });
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// 3. Call core
|
|
64
|
+
const coreResult = await (0,_services_core_client_js__WEBPACK_IMPORTED_MODULE_2__/* .callCoreDetect */ .l)(messages, coreScanners, { format, role });
|
|
65
|
+
// 4. Evaluate policies
|
|
66
|
+
let policyAction = null;
|
|
67
|
+
if (!coreResult.safe) {
|
|
68
|
+
const enabledPolicies = await policies.getEnabled(tenantId);
|
|
69
|
+
for (const policy of enabledPolicies) {
|
|
70
|
+
const policyScannerIds = policy.scannerIds;
|
|
71
|
+
const matchesCategory = coreResult.categories.some((c) => policyScannerIds.includes(c));
|
|
72
|
+
if (matchesCategory && coreResult.sensitivity_score >= policy.sensitivityThreshold) {
|
|
73
|
+
policyAction = policy.action;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 5. Record usage + detection result
|
|
79
|
+
await usage.log({
|
|
80
|
+
agentId: agentId || null,
|
|
81
|
+
endpoint: "/api/detect",
|
|
82
|
+
statusCode: 200,
|
|
83
|
+
responseSafe: coreResult.safe,
|
|
84
|
+
categories: coreResult.categories,
|
|
85
|
+
latencyMs: coreResult.latency_ms,
|
|
86
|
+
requestId: coreResult.request_id,
|
|
87
|
+
tenantId,
|
|
88
|
+
});
|
|
89
|
+
await detectionResults.create({
|
|
90
|
+
agentId: agentId || null,
|
|
91
|
+
safe: coreResult.safe,
|
|
92
|
+
categories: coreResult.categories,
|
|
93
|
+
sensitivityScore: coreResult.sensitivity_score,
|
|
94
|
+
findings: coreResult.findings,
|
|
95
|
+
latencyMs: coreResult.latency_ms,
|
|
96
|
+
requestId: coreResult.request_id,
|
|
97
|
+
tenantId,
|
|
98
|
+
});
|
|
99
|
+
// 6. Return response with policy action
|
|
100
|
+
const response = {
|
|
101
|
+
...coreResult,
|
|
102
|
+
...(policyAction && { policy_action: policyAction }),
|
|
103
|
+
};
|
|
104
|
+
if (policyAction === "block") {
|
|
105
|
+
res.status(403).json({ success: true, data: response, blocked: true });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
res.json({ success: true, data: response });
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (err instanceof Error && (err.message.includes("ECONNREFUSED") || err.message.includes("fetch failed"))) {
|
|
112
|
+
res.status(503).json({ success: false, error: "Detection service is temporarily unavailable. Please try again later." });
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
next(err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=detection.js.map
|
|
119
|
+
__webpack_async_result__();
|
|
120
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
121
|
+
|
|
122
|
+
/***/ }),
|
|
123
|
+
|
|
124
|
+
/***/ 6808:
|
|
125
|
+
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
126
|
+
|
|
127
|
+
__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
128
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
129
|
+
/* harmony export */ l: () => (/* binding */ callCoreDetect)
|
|
130
|
+
/* harmony export */ });
|
|
131
|
+
/* unused harmony export checkCoreHealth */
|
|
132
|
+
/* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6020);
|
|
133
|
+
/* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7598);
|
|
134
|
+
/* harmony import */ var _runtime_config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(824);
|
|
135
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_0__]);
|
|
136
|
+
_og_db__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
const settings = (0,_og_db__WEBPACK_IMPORTED_MODULE_0__/* .settingsQueries */ .sz)(_og_db__WEBPACK_IMPORTED_MODULE_0__.db);
|
|
141
|
+
/** Get core URL from settings or env */
|
|
142
|
+
async function getCoreUrl() {
|
|
143
|
+
return (await settings.get("og_core_url")) || (0,_runtime_config_js__WEBPACK_IMPORTED_MODULE_2__/* .getEnvCoreUrl */ .i)();
|
|
144
|
+
}
|
|
145
|
+
/** Get core key from settings */
|
|
146
|
+
async function getCoreKey() {
|
|
147
|
+
return (await settings.get("og_core_key")) || "";
|
|
148
|
+
}
|
|
149
|
+
function createTraceId() {
|
|
150
|
+
const randomNum = (0,node_crypto__WEBPACK_IMPORTED_MODULE_1__.randomBytes)(6).readUIntBE(0, 6);
|
|
151
|
+
return `${Date.now()}${String(randomNum).padStart(14, "0")}`;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Call core detection API.
|
|
155
|
+
* Uses core key from settings for authentication.
|
|
156
|
+
*/
|
|
157
|
+
async function callCoreDetect(messages, scanners, options) {
|
|
158
|
+
const coreUrl = await getCoreUrl();
|
|
159
|
+
const coreKey = await getCoreKey();
|
|
160
|
+
const body = {
|
|
161
|
+
messages,
|
|
162
|
+
scanners,
|
|
163
|
+
format: options?.format,
|
|
164
|
+
role: options?.role,
|
|
165
|
+
};
|
|
166
|
+
const headers = {
|
|
167
|
+
"Content-Type": "application/json",
|
|
168
|
+
traceId: createTraceId(),
|
|
169
|
+
};
|
|
170
|
+
if (coreKey) {
|
|
171
|
+
headers["Authorization"] = `Bearer ${coreKey}`;
|
|
172
|
+
}
|
|
173
|
+
const res = await fetch(`${coreUrl}/v1/detect`, {
|
|
174
|
+
method: "POST",
|
|
175
|
+
headers,
|
|
176
|
+
body: JSON.stringify(body),
|
|
177
|
+
});
|
|
178
|
+
if (!res.ok) {
|
|
179
|
+
const text = await res.text();
|
|
180
|
+
throw new Error(`core returned ${res.status}: ${text}`);
|
|
181
|
+
}
|
|
182
|
+
const json = await res.json();
|
|
183
|
+
if (!json.success) {
|
|
184
|
+
throw new Error(`core error: ${json.error}`);
|
|
185
|
+
}
|
|
186
|
+
return json.data;
|
|
187
|
+
}
|
|
188
|
+
/** Check core health with timeout */
|
|
189
|
+
async function checkCoreHealth() {
|
|
190
|
+
try {
|
|
191
|
+
const coreUrl = await getCoreUrl();
|
|
192
|
+
const controller = new AbortController();
|
|
193
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000); // 5s timeout
|
|
194
|
+
const res = await fetch(`${coreUrl}/health`, {
|
|
195
|
+
signal: controller.signal,
|
|
196
|
+
});
|
|
197
|
+
clearTimeout(timeoutId);
|
|
198
|
+
const json = await res.json();
|
|
199
|
+
return json.status === "ok";
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=core-client.js.map
|
|
206
|
+
__webpack_async_result__();
|
|
207
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
208
|
+
|
|
209
|
+
/***/ })
|
|
210
|
+
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
//# sourceMappingURL=280.index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"280.index.js","mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":[".././dist/routes/detection.js",".././dist/services/core-client.js"],"sourcesContent":["import { Router } from \"express\";\nimport { db, scannerQueries, policyQueries, usageQueries, detectionResultQueries, settingsQueries } from \"@og/db\";\nimport { callCoreDetect } from \"../services/core-client.js\";\nconst scanners = scannerQueries(db);\nconst policies = policyQueries(db);\nconst usage = usageQueries(db);\nconst detectionResults = detectionResultQueries(db);\nconst settings = settingsQueries(db);\nexport const detectionRouter = Router();\n/**\n * POST /api/detect\n * Detection proxy endpoint.\n * Flow:\n * 1. Check core key is configured\n * 2. Get scanner config\n * 3. Call core /v1/detect\n * 4. Evaluate policies\n * 5. Record usage + detection result\n * 6. Return response\n */\ndetectionRouter.post(\"/\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n // 1. Check core key\n const coreKey = await settings.get(\"og_core_key\");\n if (!coreKey) {\n res.status(503).json({\n success: false,\n error: \"core key not configured. Go to Settings to add your key.\",\n });\n return;\n }\n // 2. Get scanner config\n const allScanners = await scanners.getAll(tenantId);\n const coreScanners = allScanners.map((s) => ({\n scannerId: s.scannerId,\n name: s.name,\n description: s.description,\n isEnabled: s.isEnabled,\n }));\n // Validate request body\n const { messages, format, role, agentId } = req.body;\n if (!messages || !Array.isArray(messages) || messages.length === 0) {\n res.status(400).json({ success: false, error: \"messages array is required and must not be empty\" });\n return;\n }\n // 3. Call core\n const coreResult = await callCoreDetect(messages, coreScanners, { format, role });\n // 4. Evaluate policies\n let policyAction = null;\n if (!coreResult.safe) {\n const enabledPolicies = await policies.getEnabled(tenantId);\n for (const policy of enabledPolicies) {\n const policyScannerIds = policy.scannerIds;\n const matchesCategory = coreResult.categories.some((c) => policyScannerIds.includes(c));\n if (matchesCategory && coreResult.sensitivity_score >= policy.sensitivityThreshold) {\n policyAction = policy.action;\n break;\n }\n }\n }\n // 5. Record usage + detection result\n await usage.log({\n agentId: agentId || null,\n endpoint: \"/api/detect\",\n statusCode: 200,\n responseSafe: coreResult.safe,\n categories: coreResult.categories,\n latencyMs: coreResult.latency_ms,\n requestId: coreResult.request_id,\n tenantId,\n });\n await detectionResults.create({\n agentId: agentId || null,\n safe: coreResult.safe,\n categories: coreResult.categories,\n sensitivityScore: coreResult.sensitivity_score,\n findings: coreResult.findings,\n latencyMs: coreResult.latency_ms,\n requestId: coreResult.request_id,\n tenantId,\n });\n // 6. Return response with policy action\n const response = {\n ...coreResult,\n ...(policyAction && { policy_action: policyAction }),\n };\n if (policyAction === \"block\") {\n res.status(403).json({ success: true, data: response, blocked: true });\n return;\n }\n res.json({ success: true, data: response });\n }\n catch (err) {\n if (err instanceof Error && (err.message.includes(\"ECONNREFUSED\") || err.message.includes(\"fetch failed\"))) {\n res.status(503).json({ success: false, error: \"Detection service is temporarily unavailable. Please try again later.\" });\n return;\n }\n next(err);\n }\n});\n//# sourceMappingURL=detection.js.map","import { db, settingsQueries } from \"@og/db\";\nimport { randomBytes } from \"node:crypto\";\nimport { getEnvCoreUrl } from \"./runtime-config.js\";\nconst settings = settingsQueries(db);\n/** Get core URL from settings or env */\nasync function getCoreUrl() {\n return (await settings.get(\"og_core_url\")) || getEnvCoreUrl();\n}\n/** Get core key from settings */\nasync function getCoreKey() {\n return (await settings.get(\"og_core_key\")) || \"\";\n}\nfunction createTraceId() {\n const randomNum = randomBytes(6).readUIntBE(0, 6);\n return `${Date.now()}${String(randomNum).padStart(14, \"0\")}`;\n}\n/**\n * Call core detection API.\n * Uses core key from settings for authentication.\n */\nexport async function callCoreDetect(messages, scanners, options) {\n const coreUrl = await getCoreUrl();\n const coreKey = await getCoreKey();\n const body = {\n messages,\n scanners,\n format: options?.format,\n role: options?.role,\n };\n const headers = {\n \"Content-Type\": \"application/json\",\n traceId: createTraceId(),\n };\n if (coreKey) {\n headers[\"Authorization\"] = `Bearer ${coreKey}`;\n }\n const res = await fetch(`${coreUrl}/v1/detect`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(`core returned ${res.status}: ${text}`);\n }\n const json = await res.json();\n if (!json.success) {\n throw new Error(`core error: ${json.error}`);\n }\n return json.data;\n}\n/** Check core health with timeout */\nexport async function checkCoreHealth() {\n try {\n const coreUrl = await getCoreUrl();\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000); // 5s timeout\n const res = await fetch(`${coreUrl}/health`, {\n signal: controller.signal,\n });\n clearTimeout(timeoutId);\n const json = await res.json();\n return json.status === \"ok\";\n }\n catch {\n return false;\n }\n}\n//# sourceMappingURL=core-client.js.map"],"names":[],"sourceRoot":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export const id = 369;
|
|
2
|
+
export const ids = [369];
|
|
3
|
+
export const modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 8369:
|
|
6
|
+
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
9
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ agentsRouter: () => (/* binding */ agentsRouter)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var express__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(316);
|
|
13
|
+
/* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6020);
|
|
14
|
+
/* harmony import */ var _og_shared__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1792);
|
|
15
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_1__]);
|
|
16
|
+
_og_db__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
const agents = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .agentQueries */ .Ik)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
|
|
21
|
+
const agentsRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
|
|
22
|
+
// GET /api/agents
|
|
23
|
+
agentsRouter.get("/", async (_req, res, next) => {
|
|
24
|
+
try {
|
|
25
|
+
const tenantId = res.locals.tenantId;
|
|
26
|
+
const data = await agents.findAll(tenantId);
|
|
27
|
+
res.json({ success: true, data });
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
next(err);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// POST /api/agents
|
|
34
|
+
agentsRouter.post("/", async (req, res, next) => {
|
|
35
|
+
try {
|
|
36
|
+
const tenantId = res.locals.tenantId;
|
|
37
|
+
const { name, description, provider, metadata } = req.body;
|
|
38
|
+
if (!name) {
|
|
39
|
+
res.status(400).json({ success: false, error: "name is required" });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const currentCount = await agents.countAll(tenantId);
|
|
43
|
+
if (currentCount >= _og_shared__WEBPACK_IMPORTED_MODULE_2__/* .MAX_AGENTS */ .cZ) {
|
|
44
|
+
res.status(403).json({
|
|
45
|
+
success: false,
|
|
46
|
+
error: `Agent limit reached (${_og_shared__WEBPACK_IMPORTED_MODULE_2__/* .MAX_AGENTS */ .cZ}).`,
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const agent = await agents.create({
|
|
51
|
+
name,
|
|
52
|
+
description: description || null,
|
|
53
|
+
provider: provider || "custom",
|
|
54
|
+
metadata: metadata || {},
|
|
55
|
+
tenantId,
|
|
56
|
+
});
|
|
57
|
+
res.status(201).json({ success: true, data: agent });
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
next(err);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// PUT /api/agents/:id
|
|
64
|
+
agentsRouter.put("/:id", async (req, res, next) => {
|
|
65
|
+
try {
|
|
66
|
+
const tenantId = res.locals.tenantId;
|
|
67
|
+
const { name, description, provider, status, metadata } = req.body;
|
|
68
|
+
const agent = await agents.update(req.params.id, {
|
|
69
|
+
...(name && { name }),
|
|
70
|
+
...(description !== undefined && { description }),
|
|
71
|
+
...(provider && { provider }),
|
|
72
|
+
...(status && { status }),
|
|
73
|
+
...(metadata && { metadata }),
|
|
74
|
+
}, tenantId);
|
|
75
|
+
if (!agent) {
|
|
76
|
+
res.status(404).json({ success: false, error: "Agent not found" });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
res.json({ success: true, data: agent });
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
next(err);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// DELETE /api/agents/:id
|
|
86
|
+
agentsRouter.delete("/:id", async (req, res, next) => {
|
|
87
|
+
try {
|
|
88
|
+
const tenantId = res.locals.tenantId;
|
|
89
|
+
await agents.delete(req.params.id, tenantId);
|
|
90
|
+
res.json({ success: true });
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
next(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// POST /api/agents/:id/heartbeat
|
|
97
|
+
agentsRouter.post("/:id/heartbeat", async (req, res, next) => {
|
|
98
|
+
try {
|
|
99
|
+
const tenantId = res.locals.tenantId;
|
|
100
|
+
await agents.heartbeat(req.params.id, tenantId);
|
|
101
|
+
res.json({ success: true });
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
next(err);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=agents.js.map
|
|
108
|
+
__webpack_async_result__();
|
|
109
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
110
|
+
|
|
111
|
+
/***/ })
|
|
112
|
+
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=369.index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"369.index.js","mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":[".././dist/routes/agents.js"],"sourcesContent":["import { Router } from \"express\";\nimport { db, agentQueries } from \"@og/db\";\nimport { MAX_AGENTS } from \"@og/shared\";\nconst agents = agentQueries(db);\nexport const agentsRouter = Router();\n// GET /api/agents\nagentsRouter.get(\"/\", async (_req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const data = await agents.findAll(tenantId);\n res.json({ success: true, data });\n }\n catch (err) {\n next(err);\n }\n});\n// POST /api/agents\nagentsRouter.post(\"/\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const { name, description, provider, metadata } = req.body;\n if (!name) {\n res.status(400).json({ success: false, error: \"name is required\" });\n return;\n }\n const currentCount = await agents.countAll(tenantId);\n if (currentCount >= MAX_AGENTS) {\n res.status(403).json({\n success: false,\n error: `Agent limit reached (${MAX_AGENTS}).`,\n });\n return;\n }\n const agent = await agents.create({\n name,\n description: description || null,\n provider: provider || \"custom\",\n metadata: metadata || {},\n tenantId,\n });\n res.status(201).json({ success: true, data: agent });\n }\n catch (err) {\n next(err);\n }\n});\n// PUT /api/agents/:id\nagentsRouter.put(\"/:id\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const { name, description, provider, status, metadata } = req.body;\n const agent = await agents.update(req.params.id, {\n ...(name && { name }),\n ...(description !== undefined && { description }),\n ...(provider && { provider }),\n ...(status && { status }),\n ...(metadata && { metadata }),\n }, tenantId);\n if (!agent) {\n res.status(404).json({ success: false, error: \"Agent not found\" });\n return;\n }\n res.json({ success: true, data: agent });\n }\n catch (err) {\n next(err);\n }\n});\n// DELETE /api/agents/:id\nagentsRouter.delete(\"/:id\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n await agents.delete(req.params.id, tenantId);\n res.json({ success: true });\n }\n catch (err) {\n next(err);\n }\n});\n// POST /api/agents/:id/heartbeat\nagentsRouter.post(\"/:id/heartbeat\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n await agents.heartbeat(req.params.id, tenantId);\n res.json({ success: true });\n }\n catch (err) {\n next(err);\n }\n});\n//# sourceMappingURL=agents.js.map"],"names":[],"sourceRoot":""}
|