@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.
Files changed (285) hide show
  1. package/LICENSE +21 -0
  2. package/OpenClaw-linux_Mac-Guide-zh.md +89 -0
  3. package/dashboard-dist/api/122.index.js +95 -0
  4. package/dashboard-dist/api/122.index.js.map +1 -0
  5. package/dashboard-dist/api/143.index.js +2734 -0
  6. package/dashboard-dist/api/143.index.js.map +1 -0
  7. package/dashboard-dist/api/154.index.js +4151 -0
  8. package/dashboard-dist/api/154.index.js.map +1 -0
  9. package/dashboard-dist/api/173.index.js +24112 -0
  10. package/dashboard-dist/api/173.index.js.map +1 -0
  11. package/dashboard-dist/api/217.index.js +44 -0
  12. package/dashboard-dist/api/217.index.js.map +1 -0
  13. package/dashboard-dist/api/222.index.js +90 -0
  14. package/dashboard-dist/api/222.index.js.map +1 -0
  15. package/dashboard-dist/api/280.index.js +213 -0
  16. package/dashboard-dist/api/280.index.js.map +1 -0
  17. package/dashboard-dist/api/369.index.js +115 -0
  18. package/dashboard-dist/api/369.index.js.map +1 -0
  19. package/dashboard-dist/api/374.index.js +1896 -0
  20. package/dashboard-dist/api/374.index.js.map +1 -0
  21. package/dashboard-dist/api/424.index.js +135 -0
  22. package/dashboard-dist/api/424.index.js.map +1 -0
  23. package/dashboard-dist/api/445.index.js +3562 -0
  24. package/dashboard-dist/api/445.index.js.map +1 -0
  25. package/dashboard-dist/api/555.index.js +496 -0
  26. package/dashboard-dist/api/555.index.js.map +1 -0
  27. package/dashboard-dist/api/573.index.js +806 -0
  28. package/dashboard-dist/api/573.index.js.map +1 -0
  29. package/dashboard-dist/api/580.index.js +1420 -0
  30. package/dashboard-dist/api/580.index.js.map +1 -0
  31. package/dashboard-dist/api/581.index.js +67 -0
  32. package/dashboard-dist/api/581.index.js.map +1 -0
  33. package/dashboard-dist/api/598.index.js +328 -0
  34. package/dashboard-dist/api/598.index.js.map +1 -0
  35. package/dashboard-dist/api/720.index.js +105 -0
  36. package/dashboard-dist/api/720.index.js.map +1 -0
  37. package/dashboard-dist/api/744.index.js +333 -0
  38. package/dashboard-dist/api/744.index.js.map +1 -0
  39. package/dashboard-dist/api/818.index.js +374 -0
  40. package/dashboard-dist/api/818.index.js.map +1 -0
  41. package/dashboard-dist/api/831.index.js +99 -0
  42. package/dashboard-dist/api/831.index.js.map +1 -0
  43. package/dashboard-dist/api/84.index.js +64 -0
  44. package/dashboard-dist/api/84.index.js.map +1 -0
  45. package/dashboard-dist/api/900.index.js +81 -0
  46. package/dashboard-dist/api/900.index.js.map +1 -0
  47. package/dashboard-dist/api/917.index.js +88 -0
  48. package/dashboard-dist/api/917.index.js.map +1 -0
  49. package/dashboard-dist/api/927.index.js +4250 -0
  50. package/dashboard-dist/api/927.index.js.map +1 -0
  51. package/dashboard-dist/api/948.index.js +64 -0
  52. package/dashboard-dist/api/948.index.js.map +1 -0
  53. package/dashboard-dist/api/982.index.js +67 -0
  54. package/dashboard-dist/api/982.index.js.map +1 -0
  55. package/dashboard-dist/api/99.index.js +1176 -0
  56. package/dashboard-dist/api/99.index.js.map +1 -0
  57. package/dashboard-dist/api/drizzle/sqlite/0000_short_captain_stacy.sql +70 -0
  58. package/dashboard-dist/api/drizzle/sqlite/0001_closed_magus.sql +10 -0
  59. package/dashboard-dist/api/drizzle/sqlite/0002_agent_capability_observation.sql +38 -0
  60. package/dashboard-dist/api/drizzle/sqlite/0003_auth_magic_link.sql +28 -0
  61. package/dashboard-dist/api/drizzle/sqlite/0004_static_scan_fields.sql +8 -0
  62. package/dashboard-dist/api/drizzle/sqlite/0005_gateway_activity.sql +24 -0
  63. package/dashboard-dist/api/drizzle/sqlite/0006_sour_marauders.sql +41 -0
  64. package/dashboard-dist/api/drizzle/sqlite/meta/0000_snapshot.json +460 -0
  65. package/dashboard-dist/api/drizzle/sqlite/meta/0001_snapshot.json +536 -0
  66. package/dashboard-dist/api/drizzle/sqlite/meta/0006_snapshot.json +1249 -0
  67. package/dashboard-dist/api/drizzle/sqlite/meta/_journal.json +55 -0
  68. package/dashboard-dist/api/index.js +28482 -0
  69. package/dashboard-dist/api/index.js.map +1 -0
  70. package/dashboard-dist/api/package.json +16 -0
  71. package/dashboard-dist/api/sourcemap-register.cjs +1 -0
  72. package/dashboard-dist/web/assets/index-BKUfzbIg.js +148 -0
  73. package/dashboard-dist/web/assets/index-rHRH99IQ.css +1 -0
  74. package/dashboard-dist/web/changeway-logo.png +0 -0
  75. package/dashboard-dist/web/favicon.svg +29 -0
  76. package/dashboard-dist/web/index.html +15 -0
  77. package/dashboard-dist/web/logo.svg +16 -0
  78. package/dist/agent/activation.d.ts +21 -0
  79. package/dist/agent/activation.d.ts.map +1 -0
  80. package/dist/agent/activation.js +94 -0
  81. package/dist/agent/activation.js.map +1 -0
  82. package/dist/agent/auth.d.ts +73 -0
  83. package/dist/agent/auth.d.ts.map +1 -0
  84. package/dist/agent/auth.js +363 -0
  85. package/dist/agent/auth.js.map +1 -0
  86. package/dist/agent/behavior-detector.d.ts +150 -0
  87. package/dist/agent/behavior-detector.d.ts.map +1 -0
  88. package/dist/agent/behavior-detector.js +559 -0
  89. package/dist/agent/behavior-detector.js.map +1 -0
  90. package/dist/agent/business-reporter.d.ts +114 -0
  91. package/dist/agent/business-reporter.d.ts.map +1 -0
  92. package/dist/agent/business-reporter.js +359 -0
  93. package/dist/agent/business-reporter.js.map +1 -0
  94. package/dist/agent/config-sync.d.ts +70 -0
  95. package/dist/agent/config-sync.d.ts.map +1 -0
  96. package/dist/agent/config-sync.js +133 -0
  97. package/dist/agent/config-sync.js.map +1 -0
  98. package/dist/agent/config.d.ts +98 -0
  99. package/dist/agent/config.d.ts.map +1 -0
  100. package/dist/agent/config.js +348 -0
  101. package/dist/agent/config.js.map +1 -0
  102. package/dist/agent/content-injection-scanner.d.ts +35 -0
  103. package/dist/agent/content-injection-scanner.d.ts.map +1 -0
  104. package/dist/agent/content-injection-scanner.js +270 -0
  105. package/dist/agent/content-injection-scanner.js.map +1 -0
  106. package/dist/agent/engine-log-writer.d.ts +6 -0
  107. package/dist/agent/engine-log-writer.d.ts.map +1 -0
  108. package/dist/agent/engine-log-writer.js +18 -0
  109. package/dist/agent/engine-log-writer.js.map +1 -0
  110. package/dist/agent/env.d.ts +19 -0
  111. package/dist/agent/env.d.ts.map +1 -0
  112. package/dist/agent/env.js +44 -0
  113. package/dist/agent/env.js.map +1 -0
  114. package/dist/agent/event-reporter.d.ts +87 -0
  115. package/dist/agent/event-reporter.d.ts.map +1 -0
  116. package/dist/agent/event-reporter.js +306 -0
  117. package/dist/agent/event-reporter.js.map +1 -0
  118. package/dist/agent/file-watcher.d.ts +50 -0
  119. package/dist/agent/file-watcher.d.ts.map +1 -0
  120. package/dist/agent/file-watcher.js +135 -0
  121. package/dist/agent/file-watcher.js.map +1 -0
  122. package/dist/agent/fs-utils.d.ts +22 -0
  123. package/dist/agent/fs-utils.d.ts.map +1 -0
  124. package/dist/agent/fs-utils.js +41 -0
  125. package/dist/agent/fs-utils.js.map +1 -0
  126. package/dist/agent/gateway-manager.d.ts +59 -0
  127. package/dist/agent/gateway-manager.d.ts.map +1 -0
  128. package/dist/agent/gateway-manager.js +583 -0
  129. package/dist/agent/gateway-manager.js.map +1 -0
  130. package/dist/agent/hook-types.d.ts +276 -0
  131. package/dist/agent/hook-types.d.ts.map +1 -0
  132. package/dist/agent/hook-types.js +51 -0
  133. package/dist/agent/hook-types.js.map +1 -0
  134. package/dist/agent/http-client.d.ts +19 -0
  135. package/dist/agent/http-client.d.ts.map +1 -0
  136. package/dist/agent/http-client.js +37 -0
  137. package/dist/agent/http-client.js.map +1 -0
  138. package/dist/agent/index.d.ts +8 -0
  139. package/dist/agent/index.d.ts.map +1 -0
  140. package/dist/agent/index.js +8 -0
  141. package/dist/agent/index.js.map +1 -0
  142. package/dist/agent/openclaw-hybrid-audit-changeway.js +1447 -0
  143. package/dist/agent/prompt-gate.d.ts +16 -0
  144. package/dist/agent/prompt-gate.d.ts.map +1 -0
  145. package/dist/agent/prompt-gate.js +58 -0
  146. package/dist/agent/prompt-gate.js.map +1 -0
  147. package/dist/agent/prompt-input.d.ts +9 -0
  148. package/dist/agent/prompt-input.d.ts.map +1 -0
  149. package/dist/agent/prompt-input.js +173 -0
  150. package/dist/agent/prompt-input.js.map +1 -0
  151. package/dist/agent/prompt-output.d.ts +4 -0
  152. package/dist/agent/prompt-output.d.ts.map +1 -0
  153. package/dist/agent/prompt-output.js +19 -0
  154. package/dist/agent/prompt-output.js.map +1 -0
  155. package/dist/agent/runner.d.ts +23 -0
  156. package/dist/agent/runner.d.ts.map +1 -0
  157. package/dist/agent/runner.js +165 -0
  158. package/dist/agent/runner.js.map +1 -0
  159. package/dist/agent/runtime-mode.d.ts +10 -0
  160. package/dist/agent/runtime-mode.d.ts.map +1 -0
  161. package/dist/agent/runtime-mode.js +19 -0
  162. package/dist/agent/runtime-mode.js.map +1 -0
  163. package/dist/agent/sanitizer.d.ts +10 -0
  164. package/dist/agent/sanitizer.d.ts.map +1 -0
  165. package/dist/agent/sanitizer.js +175 -0
  166. package/dist/agent/sanitizer.js.map +1 -0
  167. package/dist/agent/scan-activity.d.ts +19 -0
  168. package/dist/agent/scan-activity.d.ts.map +1 -0
  169. package/dist/agent/scan-activity.js +34 -0
  170. package/dist/agent/scan-activity.js.map +1 -0
  171. package/dist/agent/types.d.ts +177 -0
  172. package/dist/agent/types.d.ts.map +1 -0
  173. package/dist/agent/types.js +5 -0
  174. package/dist/agent/types.js.map +1 -0
  175. package/dist/agent/workspace-scanner.d.ts +35 -0
  176. package/dist/agent/workspace-scanner.d.ts.map +1 -0
  177. package/dist/agent/workspace-scanner.js +137 -0
  178. package/dist/agent/workspace-scanner.js.map +1 -0
  179. package/dist/dashboard-launcher.d.ts +52 -0
  180. package/dist/dashboard-launcher.d.ts.map +1 -0
  181. package/dist/dashboard-launcher.js +363 -0
  182. package/dist/dashboard-launcher.js.map +1 -0
  183. package/dist/gateway/activity.d.ts +52 -0
  184. package/dist/gateway/activity.d.ts.map +1 -0
  185. package/dist/gateway/activity.js +111 -0
  186. package/dist/gateway/activity.js.map +1 -0
  187. package/dist/gateway/config.d.ts +50 -0
  188. package/dist/gateway/config.d.ts.map +1 -0
  189. package/dist/gateway/config.js +200 -0
  190. package/dist/gateway/config.js.map +1 -0
  191. package/dist/gateway/handlers/anthropic.d.ts +12 -0
  192. package/dist/gateway/handlers/anthropic.d.ts.map +1 -0
  193. package/dist/gateway/handlers/anthropic.js +254 -0
  194. package/dist/gateway/handlers/anthropic.js.map +1 -0
  195. package/dist/gateway/handlers/gemini.d.ts +12 -0
  196. package/dist/gateway/handlers/gemini.d.ts.map +1 -0
  197. package/dist/gateway/handlers/gemini.js +101 -0
  198. package/dist/gateway/handlers/gemini.js.map +1 -0
  199. package/dist/gateway/handlers/models.d.ts +4 -0
  200. package/dist/gateway/handlers/models.d.ts.map +1 -0
  201. package/dist/gateway/handlers/models.js +36 -0
  202. package/dist/gateway/handlers/models.js.map +1 -0
  203. package/dist/gateway/handlers/openai.d.ts +16 -0
  204. package/dist/gateway/handlers/openai.d.ts.map +1 -0
  205. package/dist/gateway/handlers/openai.js +254 -0
  206. package/dist/gateway/handlers/openai.js.map +1 -0
  207. package/dist/gateway/index.d.ts +27 -0
  208. package/dist/gateway/index.d.ts.map +1 -0
  209. package/dist/gateway/index.js +290 -0
  210. package/dist/gateway/index.js.map +1 -0
  211. package/dist/gateway/mapping-store.d.ts +38 -0
  212. package/dist/gateway/mapping-store.d.ts.map +1 -0
  213. package/dist/gateway/mapping-store.js +74 -0
  214. package/dist/gateway/mapping-store.js.map +1 -0
  215. package/dist/gateway/restorer.d.ts +63 -0
  216. package/dist/gateway/restorer.d.ts.map +1 -0
  217. package/dist/gateway/restorer.js +284 -0
  218. package/dist/gateway/restorer.js.map +1 -0
  219. package/dist/gateway/sanitizer.d.ts +17 -0
  220. package/dist/gateway/sanitizer.d.ts.map +1 -0
  221. package/dist/gateway/sanitizer.js +228 -0
  222. package/dist/gateway/sanitizer.js.map +1 -0
  223. package/dist/gateway/types.d.ts +53 -0
  224. package/dist/gateway/types.d.ts.map +1 -0
  225. package/dist/gateway/types.js +5 -0
  226. package/dist/gateway/types.js.map +1 -0
  227. package/dist/index.d.ts +19 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +2990 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/memory/index.d.ts +5 -0
  232. package/dist/memory/index.d.ts.map +1 -0
  233. package/dist/memory/index.js +5 -0
  234. package/dist/memory/index.js.map +1 -0
  235. package/dist/memory/store.d.ts +82 -0
  236. package/dist/memory/store.d.ts.map +1 -0
  237. package/dist/memory/store.js +194 -0
  238. package/dist/memory/store.js.map +1 -0
  239. package/dist/platform-client/index.d.ts +63 -0
  240. package/dist/platform-client/index.d.ts.map +1 -0
  241. package/dist/platform-client/index.js +294 -0
  242. package/dist/platform-client/index.js.map +1 -0
  243. package/dist/platform-client/types.d.ts +109 -0
  244. package/dist/platform-client/types.d.ts.map +1 -0
  245. package/dist/platform-client/types.js +3 -0
  246. package/dist/platform-client/types.js.map +1 -0
  247. package/dist/workspace-agents-guide.d.ts +22 -0
  248. package/dist/workspace-agents-guide.d.ts.map +1 -0
  249. package/dist/workspace-agents-guide.js +92 -0
  250. package/dist/workspace-agents-guide.js.map +1 -0
  251. package/dist/workspace-agents-sync.d.ts +24 -0
  252. package/dist/workspace-agents-sync.d.ts.map +1 -0
  253. package/dist/workspace-agents-sync.js +41 -0
  254. package/dist/workspace-agents-sync.js.map +1 -0
  255. package/dist/workspace-agents-watcher.d.ts +23 -0
  256. package/dist/workspace-agents-watcher.d.ts.map +1 -0
  257. package/dist/workspace-agents-watcher.js +152 -0
  258. package/dist/workspace-agents-watcher.js.map +1 -0
  259. package/dist/workspace-discovery.d.ts +11 -0
  260. package/dist/workspace-discovery.d.ts.map +1 -0
  261. package/dist/workspace-discovery.js +116 -0
  262. package/dist/workspace-discovery.js.map +1 -0
  263. package/gateway/package-lock.json +597 -0
  264. package/gateway/package.json +57 -0
  265. package/gateway/pnpm-lock.yaml +342 -0
  266. package/gateway/src/activity.ts +142 -0
  267. package/gateway/src/config.ts +246 -0
  268. package/gateway/src/handlers/anthropic.ts +328 -0
  269. package/gateway/src/handlers/gemini.ts +122 -0
  270. package/gateway/src/handlers/models.ts +45 -0
  271. package/gateway/src/handlers/openai.ts +333 -0
  272. package/gateway/src/index.ts +344 -0
  273. package/gateway/src/mapping-store.ts +88 -0
  274. package/gateway/src/restorer.ts +322 -0
  275. package/gateway/src/sanitizer.ts +298 -0
  276. package/gateway/src/types.ts +73 -0
  277. package/gateway/tsconfig.json +20 -0
  278. package/openclaw.plugin.json +86 -0
  279. package/package.json +74 -0
  280. package/samples/Untitled +1 -0
  281. package/samples/clean-email.txt +20 -0
  282. package/samples/test-document.md +53 -0
  283. package/samples/test-email-popup.txt +44 -0
  284. package/samples/test-email.txt +32 -0
  285. 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":""}