@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,105 @@
1
+ export const id = 720;
2
+ export const ids = [720];
3
+ export const modules = {
4
+
5
+ /***/ 2720:
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 */ agenticHoursRouter: () => (/* binding */ agenticHoursRouter)
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 hours = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .agenticHoursQueries */ .jw)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
19
+ const settings = (0,_og_db__WEBPACK_IMPORTED_MODULE_1__/* .settingsQueries */ .sz)(_og_db__WEBPACK_IMPORTED_MODULE_1__.db);
20
+ const DASHBOARD_FIRST_STARTED_AT_KEY = "dashboard_first_started_at";
21
+ const agenticHoursRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
22
+ // POST /api/agentic-hours — Accumulate agentic hours
23
+ agenticHoursRouter.post("/", async (req, res, next) => {
24
+ try {
25
+ const tenantId = res.locals.tenantId;
26
+ const body = req.body;
27
+ if (!body.agentId) {
28
+ res.status(400).json({ success: false, error: "agentId is required" });
29
+ return;
30
+ }
31
+ const date = body.date ?? new Date().toISOString().slice(0, 10);
32
+ await hours.accumulate({
33
+ agentId: body.agentId,
34
+ date,
35
+ toolCallDurationMs: body.toolCallDurationMs,
36
+ llmDurationMs: body.llmDurationMs,
37
+ totalDurationMs: body.totalDurationMs,
38
+ toolCallCount: body.toolCallCount,
39
+ llmCallCount: body.llmCallCount,
40
+ sessionCount: body.sessionCount,
41
+ blockCount: body.blockCount,
42
+ riskEventCount: body.riskEventCount,
43
+ tenantId,
44
+ });
45
+ res.status(201).json({ success: true });
46
+ }
47
+ catch (err) {
48
+ next(err);
49
+ }
50
+ });
51
+ // GET /api/agentic-hours/today — Today's summary
52
+ agenticHoursRouter.get("/today", async (req, res, next) => {
53
+ try {
54
+ const tenantId = res.locals.tenantId;
55
+ const data = await hours.todaySummary(tenantId);
56
+ const firstStartedAt = await settings.get(DASHBOARD_FIRST_STARTED_AT_KEY);
57
+ const startedAtMs = firstStartedAt ? Date.parse(firstStartedAt) : NaN;
58
+ const totalProtectionDurationMs = Number.isFinite(startedAtMs)
59
+ ? Math.max(0, Date.now() - startedAtMs)
60
+ : 0;
61
+ res.json({ success: true, data: { ...data, totalProtectionDurationMs } });
62
+ }
63
+ catch (err) {
64
+ next(err);
65
+ }
66
+ });
67
+ // GET /api/agentic-hours/daily — Daily breakdown
68
+ agenticHoursRouter.get("/daily", async (req, res, next) => {
69
+ try {
70
+ const tenantId = res.locals.tenantId;
71
+ const now = new Date();
72
+ const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
73
+ const start = req.query.from ?? thirtyDaysAgo.toISOString().slice(0, 10);
74
+ const end = req.query.to ?? now.toISOString().slice(0, 10);
75
+ const data = await hours.daily(start, end, tenantId);
76
+ res.json({ success: true, data });
77
+ }
78
+ catch (err) {
79
+ next(err);
80
+ }
81
+ });
82
+ // GET /api/agentic-hours/by-agent — Per-agent breakdown
83
+ agenticHoursRouter.get("/by-agent", async (req, res, next) => {
84
+ try {
85
+ const tenantId = res.locals.tenantId;
86
+ const now = new Date();
87
+ const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
88
+ const start = req.query.from ?? thirtyDaysAgo.toISOString().slice(0, 10);
89
+ const end = req.query.to ?? now.toISOString().slice(0, 10);
90
+ const data = await hours.byAgent(start, end, tenantId);
91
+ res.json({ success: true, data });
92
+ }
93
+ catch (err) {
94
+ next(err);
95
+ }
96
+ });
97
+ //# sourceMappingURL=agentic-hours.js.map
98
+ __webpack_async_result__();
99
+ } catch(e) { __webpack_async_result__(e); } });
100
+
101
+ /***/ })
102
+
103
+ };
104
+
105
+ //# sourceMappingURL=720.index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"720.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","sources":[".././dist/routes/agentic-hours.js"],"sourcesContent":["import { Router } from \"express\";\nimport { db, agenticHoursQueries, settingsQueries } from \"@og/db\";\nconst hours = agenticHoursQueries(db);\nconst settings = settingsQueries(db);\nconst DASHBOARD_FIRST_STARTED_AT_KEY = \"dashboard_first_started_at\";\nexport const agenticHoursRouter = Router();\n// POST /api/agentic-hours — Accumulate agentic hours\nagenticHoursRouter.post(\"/\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const body = req.body;\n if (!body.agentId) {\n res.status(400).json({ success: false, error: \"agentId is required\" });\n return;\n }\n const date = body.date ?? new Date().toISOString().slice(0, 10);\n await hours.accumulate({\n agentId: body.agentId,\n date,\n toolCallDurationMs: body.toolCallDurationMs,\n llmDurationMs: body.llmDurationMs,\n totalDurationMs: body.totalDurationMs,\n toolCallCount: body.toolCallCount,\n llmCallCount: body.llmCallCount,\n sessionCount: body.sessionCount,\n blockCount: body.blockCount,\n riskEventCount: body.riskEventCount,\n tenantId,\n });\n res.status(201).json({ success: true });\n }\n catch (err) {\n next(err);\n }\n});\n// GET /api/agentic-hours/today — Today's summary\nagenticHoursRouter.get(\"/today\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const data = await hours.todaySummary(tenantId);\n const firstStartedAt = await settings.get(DASHBOARD_FIRST_STARTED_AT_KEY);\n const startedAtMs = firstStartedAt ? Date.parse(firstStartedAt) : NaN;\n const totalProtectionDurationMs = Number.isFinite(startedAtMs)\n ? Math.max(0, Date.now() - startedAtMs)\n : 0;\n res.json({ success: true, data: { ...data, totalProtectionDurationMs } });\n }\n catch (err) {\n next(err);\n }\n});\n// GET /api/agentic-hours/daily — Daily breakdown\nagenticHoursRouter.get(\"/daily\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const now = new Date();\n const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n const start = req.query.from ?? thirtyDaysAgo.toISOString().slice(0, 10);\n const end = req.query.to ?? now.toISOString().slice(0, 10);\n const data = await hours.daily(start, end, tenantId);\n res.json({ success: true, data });\n }\n catch (err) {\n next(err);\n }\n});\n// GET /api/agentic-hours/by-agent — Per-agent breakdown\nagenticHoursRouter.get(\"/by-agent\", async (req, res, next) => {\n try {\n const tenantId = res.locals.tenantId;\n const now = new Date();\n const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n const start = req.query.from ?? thirtyDaysAgo.toISOString().slice(0, 10);\n const end = req.query.to ?? now.toISOString().slice(0, 10);\n const data = await hours.byAgent(start, end, tenantId);\n res.json({ success: true, data });\n }\n catch (err) {\n next(err);\n }\n});\n//# sourceMappingURL=agentic-hours.js.map"],"names":[],"sourceRoot":""}
@@ -0,0 +1,333 @@
1
+ export const id = 744;
2
+ export const ids = [744];
3
+ export const modules = {
4
+
5
+ /***/ 2041:
6
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
7
+
8
+ !function(t,n){ true?module.exports=n(__webpack_require__(5317),__webpack_require__(6982)):0}(this,function(t,n){return function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={exports:{},id:e,loaded:!1};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=t,n.c=r,n.p="",n(0)}([function(t,n,r){t.exports=r(34)},function(t,n,r){var e=r(29)("wks"),o=r(33),i=r(2).Symbol,c="function"==typeof i,u=t.exports=function(t){return e[t]||(e[t]=c&&i[t]||(c?i:o)("Symbol."+t))};u.store=e},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n,r){var e=r(9);t.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},function(t,n,r){t.exports=!r(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n,r){var e=r(12),o=r(17);t.exports=r(4)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(t,n,r){var e=r(14);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n){t.exports={}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(3),o=r(26),i=r(32),c=Object.defineProperty;n.f=r(4)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return c(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(42),o=r(15);t.exports=function(t){return e(o(t))}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(9),o=r(2).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(12).f,o=r(8),i=r(1)("toStringTag");t.exports=function(t,n,r){t&&!o(t=r?t:t.prototype,i)&&e(t,i,{configurable:!0,value:n})}},function(t,n,r){var e=r(29)("keys"),o=r(33);t.exports=function(t){return e[t]||(e[t]=o(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(11),o=r(1)("toStringTag"),i="Arguments"==e(function(){return arguments}()),c=function(t,n){try{return t[n]}catch(t){}};t.exports=function(t){var n,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=c(n=Object(t),o))?r:i?e(n):"Object"==(u=e(n))&&"function"==typeof n.callee?"Arguments":u}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,r){var e=r(2),o=r(6),i=r(7),c=r(5),u="prototype",s=function(t,n,r){var f,a,p,l=t&s.F,v=t&s.G,h=t&s.S,d=t&s.P,y=t&s.B,_=t&s.W,x=v?o:o[n]||(o[n]={}),m=x[u],w=v?e:h?e[n]:(e[n]||{})[u];v&&(r=n);for(f in r)a=!l&&w&&void 0!==w[f],a&&f in x||(p=a?w[f]:r[f],x[f]=v&&"function"!=typeof w[f]?r[f]:y&&a?i(p,e):_&&w[f]==p?function(t){var n=function(n,r,e){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,e)}return t.apply(this,arguments)};return n[u]=t[u],n}(p):d&&"function"==typeof p?i(Function.call,p):p,d&&((x.virtual||(x.virtual={}))[f]=p,t&s.R&&m&&!m[f]&&c(m,f,p)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){t.exports=r(2).document&&document.documentElement},function(t,n,r){t.exports=!r(4)&&!r(24)(function(){return 7!=Object.defineProperty(r(16)("div"),"a",{get:function(){return 7}}).a})},function(t,n,r){"use strict";var e=r(28),o=r(23),i=r(57),c=r(5),u=r(8),s=r(10),f=r(45),a=r(18),p=r(52),l=r(1)("iterator"),v=!([].keys&&"next"in[].keys()),h="@@iterator",d="keys",y="values",_=function(){return this};t.exports=function(t,n,r,x,m,w,g){f(r,n,x);var b,O,j,S=function(t){if(!v&&t in T)return T[t];switch(t){case d:return function(){return new r(this,t)};case y:return function(){return new r(this,t)}}return function(){return new r(this,t)}},E=n+" Iterator",P=m==y,M=!1,T=t.prototype,A=T[l]||T[h]||m&&T[m],k=A||S(m),C=m?P?S("entries"):k:void 0,I="Array"==n?T.entries||A:A;if(I&&(j=p(I.call(new t)),j!==Object.prototype&&(a(j,E,!0),e||u(j,l)||c(j,l,_))),P&&A&&A.name!==y&&(M=!0,k=function(){return A.call(this)}),e&&!g||!v&&!M&&T[l]||c(T,l,k),s[n]=k,s[E]=_,m)if(b={values:P?k:S(y),keys:w?k:S(d),entries:C},g)for(O in b)O in T||i(T,O,b[O]);else o(o.P+o.F*(v||M),n,b);return b}},function(t,n){t.exports=!0},function(t,n,r){var e=r(2),o="__core-js_shared__",i=e[o]||(e[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,n,r){var e,o,i,c=r(7),u=r(41),s=r(25),f=r(16),a=r(2),p=a.process,l=a.setImmediate,v=a.clearImmediate,h=a.MessageChannel,d=0,y={},_="onreadystatechange",x=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},m=function(t){x.call(t.data)};l&&v||(l=function(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return y[++d]=function(){u("function"==typeof t?t:Function(t),n)},e(d),d},v=function(t){delete y[t]},"process"==r(11)(p)?e=function(t){p.nextTick(c(x,t,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=m,e=c(i.postMessage,i,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts?(e=function(t){a.postMessage(t+"","*")},a.addEventListener("message",m,!1)):e=_ in f("script")?function(t){s.appendChild(f("script"))[_]=function(){s.removeChild(this),x.call(t)}}:function(t){setTimeout(c(x,t,1),0)}),t.exports={set:l,clear:v}},function(t,n,r){var e=r(20),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(9);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+e).toString(36))}},function(t,n,r){"use strict";function e(t){return t&&t.__esModule?t:{default:t}}function o(){return"win32"!==process.platform?"":"ia32"===process.arch&&process["env"].hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function i(t){return(0,l.createHash)("sha256").update(t).digest("hex")}function c(t){switch(h){case"darwin":return t.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return t.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return t.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return t.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function u(t){var n=c((0,p.execSync)(y[h]).toString());return t?n:i(n)}function s(t){return new a.default(function(n,r){return(0,p.exec)(y[h],{},function(e,o,u){if(e)return r(new Error("Error while obtaining machine id: "+e.stack));var s=c(o.toString());return n(t?s:i(s))})})}Object.defineProperty(n,"__esModule",{value:!0});var f=r(35),a=e(f);n.machineIdSync=u,n.machineId=s;var p=r(70),l=r(71),v=process,h=v.platform,d={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},y={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:d[o()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(t,n,r){t.exports={default:r(36),__esModule:!0}},function(t,n,r){r(66),r(68),r(69),r(67),t.exports=r(6).Promise},function(t,n){t.exports=function(){}},function(t,n){t.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,n,r){var e=r(13),o=r(31),i=r(62);t.exports=function(t){return function(n,r,c){var u,s=e(n),f=o(s.length),a=i(c,f);if(t&&r!=r){for(;f>a;)if(u=s[a++],u!=u)return!0}else for(;f>a;a++)if((t||a in s)&&s[a]===r)return t||a||0;return!t&&-1}}},function(t,n,r){var e=r(7),o=r(44),i=r(43),c=r(3),u=r(31),s=r(64),f={},a={},n=t.exports=function(t,n,r,p,l){var v,h,d,y,_=l?function(){return t}:s(t),x=e(r,p,n?2:1),m=0;if("function"!=typeof _)throw TypeError(t+" is not iterable!");if(i(_)){for(v=u(t.length);v>m;m++)if(y=n?x(c(h=t[m])[0],h[1]):x(t[m]),y===f||y===a)return y}else for(d=_.call(t);!(h=d.next()).done;)if(y=o(d,x,h.value,n),y===f||y===a)return y};n.BREAK=f,n.RETURN=a},function(t,n){t.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},function(t,n,r){var e=r(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},function(t,n,r){var e=r(10),o=r(1)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(e.Array===t||i[o]===t)}},function(t,n,r){var e=r(3);t.exports=function(t,n,r,o){try{return o?n(e(r)[0],r[1]):n(r)}catch(n){var i=t.return;throw void 0!==i&&e(i.call(t)),n}}},function(t,n,r){"use strict";var e=r(49),o=r(17),i=r(18),c={};r(5)(c,r(1)("iterator"),function(){return this}),t.exports=function(t,n,r){t.prototype=e(c,{next:o(1,r)}),i(t,n+" Iterator")}},function(t,n,r){var e=r(1)("iterator"),o=!1;try{var i=[7][e]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i=[7],c=i[e]();c.next=function(){return{done:r=!0}},i[e]=function(){return c},t(i)}catch(t){}return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,r){var e=r(2),o=r(30).set,i=e.MutationObserver||e.WebKitMutationObserver,c=e.process,u=e.Promise,s="process"==r(11)(c);t.exports=function(){var t,n,r,f=function(){var e,o;for(s&&(e=c.domain)&&e.exit();t;){o=t.fn,t=t.next;try{o()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(s)r=function(){c.nextTick(f)};else if(i){var a=!0,p=document.createTextNode("");new i(f).observe(p,{characterData:!0}),r=function(){p.data=a=!a}}else if(u&&u.resolve){var l=u.resolve();r=function(){l.then(f)}}else r=function(){o.call(e,f)};return function(e){var o={fn:e,next:void 0};n&&(n.next=o),t||(t=o,r()),n=o}}},function(t,n,r){var e=r(3),o=r(50),i=r(22),c=r(19)("IE_PROTO"),u=function(){},s="prototype",f=function(){var t,n=r(16)("iframe"),e=i.length,o=">";for(n.style.display="none",r(25).appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write("<script>document.F=Object</script"+o),t.close(),f=t.F;e--;)delete f[s][i[e]];return f()};t.exports=Object.create||function(t,n){var r;return null!==t?(u[s]=e(t),r=new u,u[s]=null,r[c]=t):r=f(),void 0===n?r:o(r,n)}},function(t,n,r){var e=r(12),o=r(3),i=r(54);t.exports=r(4)?Object.defineProperties:function(t,n){o(t);for(var r,c=i(n),u=c.length,s=0;u>s;)e.f(t,r=c[s++],n[r]);return t}},function(t,n,r){var e=r(55),o=r(17),i=r(13),c=r(32),u=r(8),s=r(26),f=Object.getOwnPropertyDescriptor;n.f=r(4)?f:function(t,n){if(t=i(t),n=c(n,!0),s)try{return f(t,n)}catch(t){}if(u(t,n))return o(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(8),o=r(63),i=r(19)("IE_PROTO"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),e(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,n,r){var e=r(8),o=r(13),i=r(39)(!1),c=r(19)("IE_PROTO");t.exports=function(t,n){var r,u=o(t),s=0,f=[];for(r in u)r!=c&&e(u,r)&&f.push(r);for(;n.length>s;)e(u,r=n[s++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(53),o=r(22);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,r){var e=r(5);t.exports=function(t,n,r){for(var o in n)r&&t[o]?t[o]=n[o]:e(t,o,n[o]);return t}},function(t,n,r){t.exports=r(5)},function(t,n,r){var e=r(9),o=r(3),i=function(t,n){if(o(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,e){try{e=r(7)(Function.call,r(51).f(Object.prototype,"__proto__").set,2),e(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,r){return i(t,r),n?t.__proto__=r:e(t,r),t}}({},!1):void 0),check:i}},function(t,n,r){"use strict";var e=r(2),o=r(6),i=r(12),c=r(4),u=r(1)("species");t.exports=function(t){var n="function"==typeof o[t]?o[t]:e[t];c&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,r){var e=r(3),o=r(14),i=r(1)("species");t.exports=function(t,n){var r,c=e(t).constructor;return void 0===c||void 0==(r=e(c)[i])?n:o(r)}},function(t,n,r){var e=r(20),o=r(15);t.exports=function(t){return function(n,r){var i,c,u=String(o(n)),s=e(r),f=u.length;return s<0||s>=f?t?"":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===f||(c=u.charCodeAt(s+1))<56320||c>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(c-56320)+65536)}}},function(t,n,r){var e=r(20),o=Math.max,i=Math.min;t.exports=function(t,n){return t=e(t),t<0?o(t+n,0):i(t,n)}},function(t,n,r){var e=r(15);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e=r(21),o=r(1)("iterator"),i=r(10);t.exports=r(6).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[e(t)]}},function(t,n,r){"use strict";var e=r(37),o=r(47),i=r(10),c=r(13);t.exports=r(27)(Array,"Array",function(t,n){this._t=c(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):"keys"==n?o(0,r):"values"==n?o(0,t[r]):o(0,[r,t[r]])},"values"),i.Arguments=i.Array,e("keys"),e("values"),e("entries")},function(t,n){},function(t,n,r){"use strict";var e,o,i,c=r(28),u=r(2),s=r(7),f=r(21),a=r(23),p=r(9),l=(r(3),r(14)),v=r(38),h=r(40),d=(r(58).set,r(60)),y=r(30).set,_=r(48)(),x="Promise",m=u.TypeError,w=u.process,g=u[x],w=u.process,b="process"==f(w),O=function(){},j=!!function(){try{var t=g.resolve(1),n=(t.constructor={})[r(1)("species")]=function(t){t(O,O)};return(b||"function"==typeof PromiseRejectionEvent)&&t.then(O)instanceof n}catch(t){}}(),S=function(t,n){return t===n||t===g&&n===i},E=function(t){var n;return!(!p(t)||"function"!=typeof(n=t.then))&&n},P=function(t){return S(g,t)?new M(t):new o(t)},M=o=function(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw m("Bad Promise constructor");n=t,r=e}),this.resolve=l(n),this.reject=l(r)},T=function(t){try{t()}catch(t){return{error:t}}},A=function(t,n){if(!t._n){t._n=!0;var r=t._c;_(function(){for(var e=t._v,o=1==t._s,i=0,c=function(n){var r,i,c=o?n.ok:n.fail,u=n.resolve,s=n.reject,f=n.domain;try{c?(o||(2==t._h&&I(t),t._h=1),c===!0?r=e:(f&&f.enter(),r=c(e),f&&f.exit()),r===n.promise?s(m("Promise-chain cycle")):(i=E(r))?i.call(r,u,s):u(r)):s(e)}catch(t){s(t)}};r.length>i;)c(r[i++]);t._c=[],t._n=!1,n&&!t._h&&k(t)})}},k=function(t){y.call(u,function(){var n,r,e,o=t._v;if(C(t)&&(n=T(function(){b?w.emit("unhandledRejection",o,t):(r=u.onunhandledrejection)?r({promise:t,reason:o}):(e=u.console)&&e.error&&e.error("Unhandled promise rejection",o)}),t._h=b||C(t)?2:1),t._a=void 0,n)throw n.error})},C=function(t){if(1==t._h)return!1;for(var n,r=t._a||t._c,e=0;r.length>e;)if(n=r[e++],n.fail||!C(n.promise))return!1;return!0},I=function(t){y.call(u,function(){var n;b?w.emit("rejectionHandled",t):(n=u.onrejectionhandled)&&n({promise:t,reason:t._v})})},R=function(t){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=t,n._s=2,n._a||(n._a=n._c.slice()),A(n,!0))},F=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw m("Promise can't be resolved itself");(n=E(t))?_(function(){var e={_w:r,_d:!1};try{n.call(t,s(F,e,1),s(R,e,1))}catch(t){R.call(e,t)}}):(r._v=t,r._s=1,A(r,!1))}catch(t){R.call({_w:r,_d:!1},t)}}};j||(g=function(t){v(this,g,x,"_h"),l(t),e.call(this);try{t(s(F,this,1),s(R,this,1))}catch(t){R.call(this,t)}},e=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},e.prototype=r(56)(g.prototype,{then:function(t,n){var r=P(d(this,g));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=b?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&A(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),M=function(){var t=new e;this.promise=t,this.resolve=s(F,t,1),this.reject=s(R,t,1)}),a(a.G+a.W+a.F*!j,{Promise:g}),r(18)(g,x),r(59)(x),i=r(6)[x],a(a.S+a.F*!j,x,{reject:function(t){var n=P(this),r=n.reject;return r(t),n.promise}}),a(a.S+a.F*(c||!j),x,{resolve:function(t){if(t instanceof g&&S(t.constructor,this))return t;var n=P(this),r=n.resolve;return r(t),n.promise}}),a(a.S+a.F*!(j&&r(46)(function(t){g.all(t).catch(O)})),x,{all:function(t){var n=this,r=P(n),e=r.resolve,o=r.reject,i=T(function(){var r=[],i=0,c=1;h(t,!1,function(t){var u=i++,s=!1;r.push(void 0),c++,n.resolve(t).then(function(t){s||(s=!0,r[u]=t,--c||e(r))},o)}),--c||e(r)});return i&&o(i.error),r.promise},race:function(t){var n=this,r=P(n),e=r.reject,o=T(function(){h(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return o&&e(o.error),r.promise}})},function(t,n,r){"use strict";var e=r(61)(!0);r(27)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},function(t,n,r){r(65);for(var e=r(2),o=r(5),i=r(10),c=r(1)("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],s=0;s<5;s++){var f=u[s],a=e[f],p=a&&a.prototype;p&&!p[c]&&o(p,c,f),i[f]=i.Array}},function(t,n){t.exports=__webpack_require__(5317)},function(t,n){t.exports=__webpack_require__(6982)}])});
9
+
10
+ /***/ }),
11
+
12
+ /***/ 5744:
13
+ /***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
14
+
15
+ __webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
16
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
17
+ /* harmony export */ licenseRouter: () => (/* binding */ licenseRouter)
18
+ /* harmony export */ });
19
+ /* harmony import */ var express__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(316);
20
+ /* harmony import */ var _services_license_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6098);
21
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_services_license_js__WEBPACK_IMPORTED_MODULE_1__]);
22
+ _services_license_js__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
23
+
24
+
25
+ const licenseRouter = (0,express__WEBPACK_IMPORTED_MODULE_0__.Router)();
26
+ // GET /api/license/status
27
+ licenseRouter.get("/status", (_req, res) => {
28
+ const status = (0,_services_license_js__WEBPACK_IMPORTED_MODULE_1__/* .getLicenseStatus */ .m2)();
29
+ res.json({ success: true, data: status });
30
+ });
31
+ // POST /api/license/activate
32
+ licenseRouter.post("/activate", async (req, res, next) => {
33
+ try {
34
+ const activationCode = String(req.body?.activationCode ?? "").trim();
35
+ if (!activationCode) {
36
+ res.status(400).json({ success: false, error: "activationCode is required" });
37
+ return;
38
+ }
39
+ const result = await (0,_services_license_js__WEBPACK_IMPORTED_MODULE_1__/* .activateLicense */ .rS)(activationCode);
40
+ if (!result.ok) {
41
+ res.status(400).json({ success: false, error: result.message, data: result.status });
42
+ return;
43
+ }
44
+ res.json({ success: true, message: result.message, data: result.status });
45
+ }
46
+ catch (err) {
47
+ next(err);
48
+ }
49
+ });
50
+ //# sourceMappingURL=license.js.map
51
+ __webpack_async_result__();
52
+ } catch(e) { __webpack_async_result__(e); } });
53
+
54
+ /***/ }),
55
+
56
+ /***/ 6098:
57
+ /***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
58
+
59
+ __webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
60
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
61
+ /* harmony export */ m2: () => (/* binding */ getLicenseStatus),
62
+ /* harmony export */ rS: () => (/* binding */ activateLicense)
63
+ /* harmony export */ });
64
+ /* unused harmony export getOrCreateDeviceId */
65
+ /* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7598);
66
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3024);
67
+ /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8161);
68
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6760);
69
+ /* harmony import */ var _og_db__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6020);
70
+ /* harmony import */ var _runtime_config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(824);
71
+ /* harmony import */ var node_machine_id__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2041);
72
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_og_db__WEBPACK_IMPORTED_MODULE_4__]);
73
+ _og_db__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ const settings = (0,_og_db__WEBPACK_IMPORTED_MODULE_4__/* .settingsQueries */ .sz)(_og_db__WEBPACK_IMPORTED_MODULE_4__.db);
82
+ const ACTIVATION_DIR = (0,node_path__WEBPACK_IMPORTED_MODULE_3__.join)((0,node_os__WEBPACK_IMPORTED_MODULE_2__.homedir)(), ".openclaw", "credentials", "changewayguard");
83
+ const ACTIVATION_FILE = (0,node_path__WEBPACK_IMPORTED_MODULE_3__.join)(ACTIVATION_DIR, "activation-keys.json");
84
+ const DEVICE_IDENTITY_FILE = (0,node_path__WEBPACK_IMPORTED_MODULE_3__.join)(ACTIVATION_DIR, "device-identity.json");
85
+ function ensureDir() {
86
+ if (!(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(ACTIVATION_DIR)) {
87
+ (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync)(ACTIVATION_DIR, { recursive: true });
88
+ }
89
+ }
90
+ function readJsonSafe(filePath) {
91
+ try {
92
+ if (!(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(filePath))
93
+ return null;
94
+ return JSON.parse((0,node_fs__WEBPACK_IMPORTED_MODULE_1__["read"+"FileSync"])(filePath, "utf-8"));
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ function writeJson(filePath, payload) {
101
+ ensureDir();
102
+ (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync)(filePath, JSON.stringify(payload, null, 2), "utf-8");
103
+ }
104
+ function createTraceId() {
105
+ const randomNum = (0,node_crypto__WEBPACK_IMPORTED_MODULE_0__.randomBytes)(6).readUIntBE(0, 6);
106
+ return `${Date.now()}${String(randomNum).padStart(14, "0")}`;
107
+ }
108
+ function isLoopbackHost(hostname) {
109
+ const normalized = hostname.toLowerCase();
110
+ return normalized === "localhost" || normalized === "127.0.0.1" || normalized === "::1";
111
+ }
112
+ function ensurePrefixedPath(pathname) {
113
+ const normalized = pathname.startsWith("/") ? pathname : `/${pathname}`;
114
+ if (normalized === "/changeway-open" || normalized.startsWith("/changeway-open/")) {
115
+ return normalized;
116
+ }
117
+ return `/changeway-open${normalized}`;
118
+ }
119
+ function withChangewayOpenPrefix(urlOrPath) {
120
+ try {
121
+ const parsed = new URL(urlOrPath);
122
+ if (!isLoopbackHost(parsed.hostname)) {
123
+ parsed.pathname = ensurePrefixedPath(parsed.pathname);
124
+ }
125
+ return parsed.toString();
126
+ }
127
+ catch {
128
+ return ensurePrefixedPath(urlOrPath);
129
+ }
130
+ }
131
+ async function getCoreUrl() {
132
+ return (await settings.get("og_core_url")) || (0,_runtime_config_js__WEBPACK_IMPORTED_MODULE_5__/* .getEnvCoreUrl */ .i)();
133
+ }
134
+ function getFallbackDeviceIdFromMac(interfaces = (0,node_os__WEBPACK_IMPORTED_MODULE_2__.networkInterfaces)()) {
135
+ for (const infos of Object.values(interfaces)) {
136
+ if (!infos)
137
+ continue;
138
+ for (const info of infos) {
139
+ if (info.internal)
140
+ continue;
141
+ if (!info.mac || info.mac === "00:00:00:00:00:00")
142
+ continue;
143
+ return `mac-${info.mac.toLowerCase().replace(/:/g, "")}`;
144
+ }
145
+ }
146
+ return "mac-000000000000";
147
+ }
148
+ function getMachineIdSafe() {
149
+ try {
150
+ const id = (0,node_machine_id__WEBPACK_IMPORTED_MODULE_6__.machineIdSync)().trim();
151
+ return id || null;
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ }
157
+ function getCurrentDeviceFingerprintSafe() {
158
+ const macId = getFallbackDeviceIdFromMac();
159
+ const macRaw = macId.startsWith("mac-") ? macId.slice(4) : "";
160
+ const mac = macRaw && macRaw !== "000000000000"
161
+ ? macRaw.match(/.{1,2}/g)?.join(":")?.toLowerCase() ?? null
162
+ : null;
163
+ return {
164
+ machineId: getMachineIdSafe(),
165
+ mac,
166
+ hostname: (0,node_os__WEBPACK_IMPORTED_MODULE_2__.hostname)(),
167
+ };
168
+ }
169
+ function normalizeStoredDeviceIdentity(raw) {
170
+ if (!raw || typeof raw !== "object")
171
+ return null;
172
+ const record = raw;
173
+ if (typeof record.deviceId !== "string" || !record.deviceId.trim())
174
+ return null;
175
+ if (typeof record.createdAt !== "string" || !record.createdAt.trim())
176
+ return null;
177
+ return {
178
+ version: 1,
179
+ deviceId: record.deviceId.trim(),
180
+ createdAt: record.createdAt,
181
+ machineId: typeof record.machineId === "string" ? record.machineId : null,
182
+ mac: typeof record.mac === "string" ? record.mac.toLowerCase() : null,
183
+ hostname: typeof record.hostname === "string" ? record.hostname : null,
184
+ source: record.source === "legacy" ? "legacy" : "uuid",
185
+ previousDeviceId: typeof record.previousDeviceId === "string" ? record.previousDeviceId : undefined,
186
+ rotationReason: record.rotationReason === "fingerprint_mismatch" ? "fingerprint_mismatch" : undefined,
187
+ rotatedAt: typeof record.rotatedAt === "string" ? record.rotatedAt : undefined,
188
+ };
189
+ }
190
+ function loadStoredDeviceIdentity() {
191
+ const data = readJsonSafe(DEVICE_IDENTITY_FILE);
192
+ return normalizeStoredDeviceIdentity(data);
193
+ }
194
+ function saveStoredDeviceIdentity(payload) {
195
+ writeJson(DEVICE_IDENTITY_FILE, payload);
196
+ }
197
+ function hasFingerprintMismatch(stored, current) {
198
+ const machineMismatch = !!(stored.machineId &&
199
+ current.machineId &&
200
+ stored.machineId !== current.machineId);
201
+ const macMismatch = !!(stored.mac &&
202
+ current.mac &&
203
+ stored.mac.toLowerCase() !== current.mac.toLowerCase());
204
+ return machineMismatch || macMismatch;
205
+ }
206
+ function getOrCreateDeviceId() {
207
+ const nowIso = new Date().toISOString();
208
+ const current = getCurrentDeviceFingerprintSafe();
209
+ const stored = loadStoredDeviceIdentity();
210
+ if (stored?.deviceId) {
211
+ if (hasFingerprintMismatch(stored, current)) {
212
+ const rotatedId = (0,node_crypto__WEBPACK_IMPORTED_MODULE_0__.randomUUID)();
213
+ saveStoredDeviceIdentity({
214
+ version: 1,
215
+ deviceId: rotatedId,
216
+ createdAt: stored.createdAt || nowIso,
217
+ machineId: current.machineId,
218
+ mac: current.mac,
219
+ hostname: current.hostname,
220
+ source: "uuid",
221
+ previousDeviceId: stored.deviceId,
222
+ rotationReason: "fingerprint_mismatch",
223
+ rotatedAt: nowIso,
224
+ });
225
+ return rotatedId;
226
+ }
227
+ saveStoredDeviceIdentity({
228
+ ...stored,
229
+ version: 1,
230
+ machineId: current.machineId,
231
+ mac: current.mac,
232
+ hostname: current.hostname,
233
+ source: stored.source ?? "uuid",
234
+ });
235
+ return stored.deviceId;
236
+ }
237
+ const legacyDeviceId = getMachineIdSafe() ?? getFallbackDeviceIdFromMac();
238
+ const hasActivation = !!loadActivationFile();
239
+ const deviceId = hasActivation && legacyDeviceId ? legacyDeviceId : (0,node_crypto__WEBPACK_IMPORTED_MODULE_0__.randomUUID)();
240
+ const source = hasActivation && legacyDeviceId ? "legacy" : "uuid";
241
+ saveStoredDeviceIdentity({
242
+ version: 1,
243
+ deviceId,
244
+ createdAt: nowIso,
245
+ machineId: current.machineId,
246
+ mac: current.mac,
247
+ hostname: current.hostname,
248
+ source,
249
+ });
250
+ return deviceId;
251
+ }
252
+ function loadActivationFile() {
253
+ const data = readJsonSafe(ACTIVATION_FILE);
254
+ if (!data?.apiKey || !data?.apiSecret || !data?.activatedAt)
255
+ return null;
256
+ return data;
257
+ }
258
+ function saveActivationFile(payload) {
259
+ writeJson(ACTIVATION_FILE, payload);
260
+ }
261
+ function getLicenseStatus() {
262
+ const deviceId = getOrCreateDeviceId();
263
+ const data = loadActivationFile();
264
+ return {
265
+ activated: !!data,
266
+ deviceId,
267
+ activatedAt: data?.activatedAt ?? null,
268
+ };
269
+ }
270
+ async function activateLicense(activationCode) {
271
+ const normalizedCode = activationCode.trim();
272
+ if (!normalizedCode) {
273
+ return {
274
+ ok: false,
275
+ message: "激活码不能为空",
276
+ status: getLicenseStatus(),
277
+ };
278
+ }
279
+ const coreUrl = await getCoreUrl();
280
+ const deviceId = getOrCreateDeviceId();
281
+ const url = withChangewayOpenPrefix(`${coreUrl.replace(/\/+$/, "")}/device/activate`);
282
+ const body = {
283
+ deviceId,
284
+ activationCode: normalizedCode,
285
+ };
286
+ try {
287
+ const response = await fetch(url, {
288
+ method: "POST",
289
+ headers: {
290
+ "Content-Type": "application/json",
291
+ traceId: createTraceId(),
292
+ },
293
+ body: JSON.stringify(body),
294
+ });
295
+ const payload = (await response.json().catch(() => ({})));
296
+ const codeText = String(payload.code ?? "");
297
+ const apiKey = payload.data?.apiKey?.trim() ?? "";
298
+ const apiSecret = payload.data?.apiSecret?.trim() ?? "";
299
+ if (codeText === "200" && apiKey && apiSecret) {
300
+ saveActivationFile({
301
+ apiKey,
302
+ apiSecret,
303
+ activatedAt: new Date().toISOString(),
304
+ });
305
+ return {
306
+ ok: true,
307
+ message: payload.message?.trim() || "激活成功",
308
+ status: getLicenseStatus(),
309
+ };
310
+ }
311
+ return {
312
+ ok: false,
313
+ message: payload.message?.trim() || `激活失败(code=${codeText || "unknown"})`,
314
+ status: getLicenseStatus(),
315
+ };
316
+ }
317
+ catch (err) {
318
+ return {
319
+ ok: false,
320
+ message: `激活请求失败:${String(err)}`,
321
+ status: getLicenseStatus(),
322
+ };
323
+ }
324
+ }
325
+ //# sourceMappingURL=license.js.map
326
+ __webpack_async_result__();
327
+ } catch(e) { __webpack_async_result__(e); } });
328
+
329
+ /***/ })
330
+
331
+ };
332
+
333
+ //# sourceMappingURL=744.index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"744.index.js","mappings":";;;;;;;AAAA;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":["../../../node_modules/.pnpm/node-machine-id@1.1.12/node_modules/node-machine-id/dist/index.js",".././dist/routes/license.js",".././dist/services/license.js"],"sourcesContent":["!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"child_process\"),require(\"crypto\")):\"function\"==typeof define&&define.amd?define([\"child_process\",\"crypto\"],n):\"object\"==typeof exports?exports[\"electron-machine-id\"]=n(require(\"child_process\"),require(\"crypto\")):t[\"electron-machine-id\"]=n(t.child_process,t.crypto)}(this,function(t,n){return function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={exports:{},id:e,loaded:!1};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=t,n.c=r,n.p=\"\",n(0)}([function(t,n,r){t.exports=r(34)},function(t,n,r){var e=r(29)(\"wks\"),o=r(33),i=r(2).Symbol,c=\"function\"==typeof i,u=t.exports=function(t){return e[t]||(e[t]=c&&i[t]||(c?i:o)(\"Symbol.\"+t))};u.store=e},function(t,n){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,n,r){var e=r(9);t.exports=function(t){if(!e(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n,r){t.exports=!r(24)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,n,r){var e=r(12),o=r(17);t.exports=r(4)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,n,r){var e=r(14);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){t.exports={}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(3),o=r(26),i=r(32),c=Object.defineProperty;n.f=r(4)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return c(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(42),o=r(15);t.exports=function(t){return e(o(t))}},function(t,n){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,r){var e=r(9),o=r(2).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(12).f,o=r(8),i=r(1)(\"toStringTag\");t.exports=function(t,n,r){t&&!o(t=r?t:t.prototype,i)&&e(t,i,{configurable:!0,value:n})}},function(t,n,r){var e=r(29)(\"keys\"),o=r(33);t.exports=function(t){return e[t]||(e[t]=o(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(11),o=r(1)(\"toStringTag\"),i=\"Arguments\"==e(function(){return arguments}()),c=function(t,n){try{return t[n]}catch(t){}};t.exports=function(t){var n,r,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(r=c(n=Object(t),o))?r:i?e(n):\"Object\"==(u=e(n))&&\"function\"==typeof n.callee?\"Arguments\":u}},function(t,n){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,n,r){var e=r(2),o=r(6),i=r(7),c=r(5),u=\"prototype\",s=function(t,n,r){var f,a,p,l=t&s.F,v=t&s.G,h=t&s.S,d=t&s.P,y=t&s.B,_=t&s.W,x=v?o:o[n]||(o[n]={}),m=x[u],w=v?e:h?e[n]:(e[n]||{})[u];v&&(r=n);for(f in r)a=!l&&w&&void 0!==w[f],a&&f in x||(p=a?w[f]:r[f],x[f]=v&&\"function\"!=typeof w[f]?r[f]:y&&a?i(p,e):_&&w[f]==p?function(t){var n=function(n,r,e){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,e)}return t.apply(this,arguments)};return n[u]=t[u],n}(p):d&&\"function\"==typeof p?i(Function.call,p):p,d&&((x.virtual||(x.virtual={}))[f]=p,t&s.R&&m&&!m[f]&&c(m,f,p)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){t.exports=r(2).document&&document.documentElement},function(t,n,r){t.exports=!r(4)&&!r(24)(function(){return 7!=Object.defineProperty(r(16)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,n,r){\"use strict\";var e=r(28),o=r(23),i=r(57),c=r(5),u=r(8),s=r(10),f=r(45),a=r(18),p=r(52),l=r(1)(\"iterator\"),v=!([].keys&&\"next\"in[].keys()),h=\"@@iterator\",d=\"keys\",y=\"values\",_=function(){return this};t.exports=function(t,n,r,x,m,w,g){f(r,n,x);var b,O,j,S=function(t){if(!v&&t in T)return T[t];switch(t){case d:return function(){return new r(this,t)};case y:return function(){return new r(this,t)}}return function(){return new r(this,t)}},E=n+\" Iterator\",P=m==y,M=!1,T=t.prototype,A=T[l]||T[h]||m&&T[m],k=A||S(m),C=m?P?S(\"entries\"):k:void 0,I=\"Array\"==n?T.entries||A:A;if(I&&(j=p(I.call(new t)),j!==Object.prototype&&(a(j,E,!0),e||u(j,l)||c(j,l,_))),P&&A&&A.name!==y&&(M=!0,k=function(){return A.call(this)}),e&&!g||!v&&!M&&T[l]||c(T,l,k),s[n]=k,s[E]=_,m)if(b={values:P?k:S(y),keys:w?k:S(d),entries:C},g)for(O in b)O in T||i(T,O,b[O]);else o(o.P+o.F*(v||M),n,b);return b}},function(t,n){t.exports=!0},function(t,n,r){var e=r(2),o=\"__core-js_shared__\",i=e[o]||(e[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,n,r){var e,o,i,c=r(7),u=r(41),s=r(25),f=r(16),a=r(2),p=a.process,l=a.setImmediate,v=a.clearImmediate,h=a.MessageChannel,d=0,y={},_=\"onreadystatechange\",x=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},m=function(t){x.call(t.data)};l&&v||(l=function(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return y[++d]=function(){u(\"function\"==typeof t?t:Function(t),n)},e(d),d},v=function(t){delete y[t]},\"process\"==r(11)(p)?e=function(t){p.nextTick(c(x,t,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=m,e=c(i.postMessage,i,1)):a.addEventListener&&\"function\"==typeof postMessage&&!a.importScripts?(e=function(t){a.postMessage(t+\"\",\"*\")},a.addEventListener(\"message\",m,!1)):e=_ in f(\"script\")?function(t){s.appendChild(f(\"script\"))[_]=function(){s.removeChild(this),x.call(t)}}:function(t){setTimeout(c(x,t,1),0)}),t.exports={set:l,clear:v}},function(t,n,r){var e=r(20),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(9);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if(\"function\"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+e).toString(36))}},function(t,n,r){\"use strict\";function e(t){return t&&t.__esModule?t:{default:t}}function o(){return\"win32\"!==process.platform?\"\":\"ia32\"===process.arch&&process.env.hasOwnProperty(\"PROCESSOR_ARCHITEW6432\")?\"mixed\":\"native\"}function i(t){return(0,l.createHash)(\"sha256\").update(t).digest(\"hex\")}function c(t){switch(h){case\"darwin\":return t.split(\"IOPlatformUUID\")[1].split(\"\\n\")[0].replace(/\\=|\\s+|\\\"/gi,\"\").toLowerCase();case\"win32\":return t.toString().split(\"REG_SZ\")[1].replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();case\"linux\":return t.toString().replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();case\"freebsd\":return t.toString().replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();default:throw new Error(\"Unsupported platform: \"+process.platform)}}function u(t){var n=c((0,p.execSync)(y[h]).toString());return t?n:i(n)}function s(t){return new a.default(function(n,r){return(0,p.exec)(y[h],{},function(e,o,u){if(e)return r(new Error(\"Error while obtaining machine id: \"+e.stack));var s=c(o.toString());return n(t?s:i(s))})})}Object.defineProperty(n,\"__esModule\",{value:!0});var f=r(35),a=e(f);n.machineIdSync=u,n.machineId=s;var p=r(70),l=r(71),v=process,h=v.platform,d={native:\"%windir%\\\\System32\",mixed:\"%windir%\\\\sysnative\\\\cmd.exe /c %windir%\\\\System32\"},y={darwin:\"ioreg -rd1 -c IOPlatformExpertDevice\",win32:d[o()]+\"\\\\REG.exe QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid\",linux:\"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :\",freebsd:\"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid\"}},function(t,n,r){t.exports={default:r(36),__esModule:!0}},function(t,n,r){r(66),r(68),r(69),r(67),t.exports=r(6).Promise},function(t,n){t.exports=function(){}},function(t,n){t.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+\": incorrect invocation!\");return t}},function(t,n,r){var e=r(13),o=r(31),i=r(62);t.exports=function(t){return function(n,r,c){var u,s=e(n),f=o(s.length),a=i(c,f);if(t&&r!=r){for(;f>a;)if(u=s[a++],u!=u)return!0}else for(;f>a;a++)if((t||a in s)&&s[a]===r)return t||a||0;return!t&&-1}}},function(t,n,r){var e=r(7),o=r(44),i=r(43),c=r(3),u=r(31),s=r(64),f={},a={},n=t.exports=function(t,n,r,p,l){var v,h,d,y,_=l?function(){return t}:s(t),x=e(r,p,n?2:1),m=0;if(\"function\"!=typeof _)throw TypeError(t+\" is not iterable!\");if(i(_)){for(v=u(t.length);v>m;m++)if(y=n?x(c(h=t[m])[0],h[1]):x(t[m]),y===f||y===a)return y}else for(d=_.call(t);!(h=d.next()).done;)if(y=o(d,x,h.value,n),y===f||y===a)return y};n.BREAK=f,n.RETURN=a},function(t,n){t.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},function(t,n,r){var e=r(11);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==e(t)?t.split(\"\"):Object(t)}},function(t,n,r){var e=r(10),o=r(1)(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(e.Array===t||i[o]===t)}},function(t,n,r){var e=r(3);t.exports=function(t,n,r,o){try{return o?n(e(r)[0],r[1]):n(r)}catch(n){var i=t.return;throw void 0!==i&&e(i.call(t)),n}}},function(t,n,r){\"use strict\";var e=r(49),o=r(17),i=r(18),c={};r(5)(c,r(1)(\"iterator\"),function(){return this}),t.exports=function(t,n,r){t.prototype=e(c,{next:o(1,r)}),i(t,n+\" Iterator\")}},function(t,n,r){var e=r(1)(\"iterator\"),o=!1;try{var i=[7][e]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i=[7],c=i[e]();c.next=function(){return{done:r=!0}},i[e]=function(){return c},t(i)}catch(t){}return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,r){var e=r(2),o=r(30).set,i=e.MutationObserver||e.WebKitMutationObserver,c=e.process,u=e.Promise,s=\"process\"==r(11)(c);t.exports=function(){var t,n,r,f=function(){var e,o;for(s&&(e=c.domain)&&e.exit();t;){o=t.fn,t=t.next;try{o()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(s)r=function(){c.nextTick(f)};else if(i){var a=!0,p=document.createTextNode(\"\");new i(f).observe(p,{characterData:!0}),r=function(){p.data=a=!a}}else if(u&&u.resolve){var l=u.resolve();r=function(){l.then(f)}}else r=function(){o.call(e,f)};return function(e){var o={fn:e,next:void 0};n&&(n.next=o),t||(t=o,r()),n=o}}},function(t,n,r){var e=r(3),o=r(50),i=r(22),c=r(19)(\"IE_PROTO\"),u=function(){},s=\"prototype\",f=function(){var t,n=r(16)(\"iframe\"),e=i.length,o=\">\";for(n.style.display=\"none\",r(25).appendChild(n),n.src=\"javascript:\",t=n.contentWindow.document,t.open(),t.write(\"<script>document.F=Object</script\"+o),t.close(),f=t.F;e--;)delete f[s][i[e]];return f()};t.exports=Object.create||function(t,n){var r;return null!==t?(u[s]=e(t),r=new u,u[s]=null,r[c]=t):r=f(),void 0===n?r:o(r,n)}},function(t,n,r){var e=r(12),o=r(3),i=r(54);t.exports=r(4)?Object.defineProperties:function(t,n){o(t);for(var r,c=i(n),u=c.length,s=0;u>s;)e.f(t,r=c[s++],n[r]);return t}},function(t,n,r){var e=r(55),o=r(17),i=r(13),c=r(32),u=r(8),s=r(26),f=Object.getOwnPropertyDescriptor;n.f=r(4)?f:function(t,n){if(t=i(t),n=c(n,!0),s)try{return f(t,n)}catch(t){}if(u(t,n))return o(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(8),o=r(63),i=r(19)(\"IE_PROTO\"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),e(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,n,r){var e=r(8),o=r(13),i=r(39)(!1),c=r(19)(\"IE_PROTO\");t.exports=function(t,n){var r,u=o(t),s=0,f=[];for(r in u)r!=c&&e(u,r)&&f.push(r);for(;n.length>s;)e(u,r=n[s++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(53),o=r(22);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,r){var e=r(5);t.exports=function(t,n,r){for(var o in n)r&&t[o]?t[o]=n[o]:e(t,o,n[o]);return t}},function(t,n,r){t.exports=r(5)},function(t,n,r){var e=r(9),o=r(3),i=function(t,n){if(o(t),!e(n)&&null!==n)throw TypeError(n+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,n,e){try{e=r(7)(Function.call,r(51).f(Object.prototype,\"__proto__\").set,2),e(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,r){return i(t,r),n?t.__proto__=r:e(t,r),t}}({},!1):void 0),check:i}},function(t,n,r){\"use strict\";var e=r(2),o=r(6),i=r(12),c=r(4),u=r(1)(\"species\");t.exports=function(t){var n=\"function\"==typeof o[t]?o[t]:e[t];c&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,r){var e=r(3),o=r(14),i=r(1)(\"species\");t.exports=function(t,n){var r,c=e(t).constructor;return void 0===c||void 0==(r=e(c)[i])?n:o(r)}},function(t,n,r){var e=r(20),o=r(15);t.exports=function(t){return function(n,r){var i,c,u=String(o(n)),s=e(r),f=u.length;return s<0||s>=f?t?\"\":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===f||(c=u.charCodeAt(s+1))<56320||c>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(c-56320)+65536)}}},function(t,n,r){var e=r(20),o=Math.max,i=Math.min;t.exports=function(t,n){return t=e(t),t<0?o(t+n,0):i(t,n)}},function(t,n,r){var e=r(15);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e=r(21),o=r(1)(\"iterator\"),i=r(10);t.exports=r(6).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t[\"@@iterator\"]||i[e(t)]}},function(t,n,r){\"use strict\";var e=r(37),o=r(47),i=r(10),c=r(13);t.exports=r(27)(Array,\"Array\",function(t,n){this._t=c(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):\"keys\"==n?o(0,r):\"values\"==n?o(0,t[r]):o(0,[r,t[r]])},\"values\"),i.Arguments=i.Array,e(\"keys\"),e(\"values\"),e(\"entries\")},function(t,n){},function(t,n,r){\"use strict\";var e,o,i,c=r(28),u=r(2),s=r(7),f=r(21),a=r(23),p=r(9),l=(r(3),r(14)),v=r(38),h=r(40),d=(r(58).set,r(60)),y=r(30).set,_=r(48)(),x=\"Promise\",m=u.TypeError,w=u.process,g=u[x],w=u.process,b=\"process\"==f(w),O=function(){},j=!!function(){try{var t=g.resolve(1),n=(t.constructor={})[r(1)(\"species\")]=function(t){t(O,O)};return(b||\"function\"==typeof PromiseRejectionEvent)&&t.then(O)instanceof n}catch(t){}}(),S=function(t,n){return t===n||t===g&&n===i},E=function(t){var n;return!(!p(t)||\"function\"!=typeof(n=t.then))&&n},P=function(t){return S(g,t)?new M(t):new o(t)},M=o=function(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw m(\"Bad Promise constructor\");n=t,r=e}),this.resolve=l(n),this.reject=l(r)},T=function(t){try{t()}catch(t){return{error:t}}},A=function(t,n){if(!t._n){t._n=!0;var r=t._c;_(function(){for(var e=t._v,o=1==t._s,i=0,c=function(n){var r,i,c=o?n.ok:n.fail,u=n.resolve,s=n.reject,f=n.domain;try{c?(o||(2==t._h&&I(t),t._h=1),c===!0?r=e:(f&&f.enter(),r=c(e),f&&f.exit()),r===n.promise?s(m(\"Promise-chain cycle\")):(i=E(r))?i.call(r,u,s):u(r)):s(e)}catch(t){s(t)}};r.length>i;)c(r[i++]);t._c=[],t._n=!1,n&&!t._h&&k(t)})}},k=function(t){y.call(u,function(){var n,r,e,o=t._v;if(C(t)&&(n=T(function(){b?w.emit(\"unhandledRejection\",o,t):(r=u.onunhandledrejection)?r({promise:t,reason:o}):(e=u.console)&&e.error&&e.error(\"Unhandled promise rejection\",o)}),t._h=b||C(t)?2:1),t._a=void 0,n)throw n.error})},C=function(t){if(1==t._h)return!1;for(var n,r=t._a||t._c,e=0;r.length>e;)if(n=r[e++],n.fail||!C(n.promise))return!1;return!0},I=function(t){y.call(u,function(){var n;b?w.emit(\"rejectionHandled\",t):(n=u.onrejectionhandled)&&n({promise:t,reason:t._v})})},R=function(t){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=t,n._s=2,n._a||(n._a=n._c.slice()),A(n,!0))},F=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw m(\"Promise can't be resolved itself\");(n=E(t))?_(function(){var e={_w:r,_d:!1};try{n.call(t,s(F,e,1),s(R,e,1))}catch(t){R.call(e,t)}}):(r._v=t,r._s=1,A(r,!1))}catch(t){R.call({_w:r,_d:!1},t)}}};j||(g=function(t){v(this,g,x,\"_h\"),l(t),e.call(this);try{t(s(F,this,1),s(R,this,1))}catch(t){R.call(this,t)}},e=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},e.prototype=r(56)(g.prototype,{then:function(t,n){var r=P(d(this,g));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof n&&n,r.domain=b?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&A(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),M=function(){var t=new e;this.promise=t,this.resolve=s(F,t,1),this.reject=s(R,t,1)}),a(a.G+a.W+a.F*!j,{Promise:g}),r(18)(g,x),r(59)(x),i=r(6)[x],a(a.S+a.F*!j,x,{reject:function(t){var n=P(this),r=n.reject;return r(t),n.promise}}),a(a.S+a.F*(c||!j),x,{resolve:function(t){if(t instanceof g&&S(t.constructor,this))return t;var n=P(this),r=n.resolve;return r(t),n.promise}}),a(a.S+a.F*!(j&&r(46)(function(t){g.all(t).catch(O)})),x,{all:function(t){var n=this,r=P(n),e=r.resolve,o=r.reject,i=T(function(){var r=[],i=0,c=1;h(t,!1,function(t){var u=i++,s=!1;r.push(void 0),c++,n.resolve(t).then(function(t){s||(s=!0,r[u]=t,--c||e(r))},o)}),--c||e(r)});return i&&o(i.error),r.promise},race:function(t){var n=this,r=P(n),e=r.reject,o=T(function(){h(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return o&&e(o.error),r.promise}})},function(t,n,r){\"use strict\";var e=r(61)(!0);r(27)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},function(t,n,r){r(65);for(var e=r(2),o=r(5),i=r(10),c=r(1)(\"toStringTag\"),u=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],s=0;s<5;s++){var f=u[s],a=e[f],p=a&&a.prototype;p&&!p[c]&&o(p,c,f),i[f]=i.Array}},function(t,n){t.exports=require(\"child_process\")},function(t,n){t.exports=require(\"crypto\")}])});","import { Router } from \"express\";\nimport { activateLicense, getLicenseStatus } from \"../services/license.js\";\nexport const licenseRouter = Router();\n// GET /api/license/status\nlicenseRouter.get(\"/status\", (_req, res) => {\n const status = getLicenseStatus();\n res.json({ success: true, data: status });\n});\n// POST /api/license/activate\nlicenseRouter.post(\"/activate\", async (req, res, next) => {\n try {\n const activationCode = String(req.body?.activationCode ?? \"\").trim();\n if (!activationCode) {\n res.status(400).json({ success: false, error: \"activationCode is required\" });\n return;\n }\n const result = await activateLicense(activationCode);\n if (!result.ok) {\n res.status(400).json({ success: false, error: result.message, data: result.status });\n return;\n }\n res.json({ success: true, message: result.message, data: result.status });\n }\n catch (err) {\n next(err);\n }\n});\n//# sourceMappingURL=license.js.map","import { randomBytes, randomUUID } from \"node:crypto\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir, hostname, networkInterfaces } from \"node:os\";\nimport { join } from \"node:path\";\nimport { db, settingsQueries } from \"@og/db\";\nimport { getEnvCoreUrl } from \"./runtime-config.js\";\nimport { machineIdSync } from \"node-machine-id\";\nconst settings = settingsQueries(db);\nconst ACTIVATION_DIR = join(homedir(), \".openclaw\", \"credentials\", \"changewayguard\");\nconst ACTIVATION_FILE = join(ACTIVATION_DIR, \"activation-keys.json\");\nconst DEVICE_IDENTITY_FILE = join(ACTIVATION_DIR, \"device-identity.json\");\nfunction ensureDir() {\n if (!existsSync(ACTIVATION_DIR)) {\n mkdirSync(ACTIVATION_DIR, { recursive: true });\n }\n}\nfunction readJsonSafe(filePath) {\n try {\n if (!existsSync(filePath))\n return null;\n return JSON.parse(readFileSync(filePath, \"utf-8\"));\n }\n catch {\n return null;\n }\n}\nfunction writeJson(filePath, payload) {\n ensureDir();\n writeFileSync(filePath, JSON.stringify(payload, null, 2), \"utf-8\");\n}\nfunction createTraceId() {\n const randomNum = randomBytes(6).readUIntBE(0, 6);\n return `${Date.now()}${String(randomNum).padStart(14, \"0\")}`;\n}\nfunction isLoopbackHost(hostname) {\n const normalized = hostname.toLowerCase();\n return normalized === \"localhost\" || normalized === \"127.0.0.1\" || normalized === \"::1\";\n}\nfunction ensurePrefixedPath(pathname) {\n const normalized = pathname.startsWith(\"/\") ? pathname : `/${pathname}`;\n if (normalized === \"/changeway-open\" || normalized.startsWith(\"/changeway-open/\")) {\n return normalized;\n }\n return `/changeway-open${normalized}`;\n}\nfunction withChangewayOpenPrefix(urlOrPath) {\n try {\n const parsed = new URL(urlOrPath);\n if (!isLoopbackHost(parsed.hostname)) {\n parsed.pathname = ensurePrefixedPath(parsed.pathname);\n }\n return parsed.toString();\n }\n catch {\n return ensurePrefixedPath(urlOrPath);\n }\n}\nasync function getCoreUrl() {\n return (await settings.get(\"og_core_url\")) || getEnvCoreUrl();\n}\nfunction getFallbackDeviceIdFromMac(interfaces = networkInterfaces()) {\n for (const infos of Object.values(interfaces)) {\n if (!infos)\n continue;\n for (const info of infos) {\n if (info.internal)\n continue;\n if (!info.mac || info.mac === \"00:00:00:00:00:00\")\n continue;\n return `mac-${info.mac.toLowerCase().replace(/:/g, \"\")}`;\n }\n }\n return \"mac-000000000000\";\n}\nfunction getMachineIdSafe() {\n try {\n const id = machineIdSync().trim();\n return id || null;\n }\n catch {\n return null;\n }\n}\nfunction getCurrentDeviceFingerprintSafe() {\n const macId = getFallbackDeviceIdFromMac();\n const macRaw = macId.startsWith(\"mac-\") ? macId.slice(4) : \"\";\n const mac = macRaw && macRaw !== \"000000000000\"\n ? macRaw.match(/.{1,2}/g)?.join(\":\")?.toLowerCase() ?? null\n : null;\n return {\n machineId: getMachineIdSafe(),\n mac,\n hostname: hostname(),\n };\n}\nfunction normalizeStoredDeviceIdentity(raw) {\n if (!raw || typeof raw !== \"object\")\n return null;\n const record = raw;\n if (typeof record.deviceId !== \"string\" || !record.deviceId.trim())\n return null;\n if (typeof record.createdAt !== \"string\" || !record.createdAt.trim())\n return null;\n return {\n version: 1,\n deviceId: record.deviceId.trim(),\n createdAt: record.createdAt,\n machineId: typeof record.machineId === \"string\" ? record.machineId : null,\n mac: typeof record.mac === \"string\" ? record.mac.toLowerCase() : null,\n hostname: typeof record.hostname === \"string\" ? record.hostname : null,\n source: record.source === \"legacy\" ? \"legacy\" : \"uuid\",\n previousDeviceId: typeof record.previousDeviceId === \"string\" ? record.previousDeviceId : undefined,\n rotationReason: record.rotationReason === \"fingerprint_mismatch\" ? \"fingerprint_mismatch\" : undefined,\n rotatedAt: typeof record.rotatedAt === \"string\" ? record.rotatedAt : undefined,\n };\n}\nfunction loadStoredDeviceIdentity() {\n const data = readJsonSafe(DEVICE_IDENTITY_FILE);\n return normalizeStoredDeviceIdentity(data);\n}\nfunction saveStoredDeviceIdentity(payload) {\n writeJson(DEVICE_IDENTITY_FILE, payload);\n}\nfunction hasFingerprintMismatch(stored, current) {\n const machineMismatch = !!(stored.machineId &&\n current.machineId &&\n stored.machineId !== current.machineId);\n const macMismatch = !!(stored.mac &&\n current.mac &&\n stored.mac.toLowerCase() !== current.mac.toLowerCase());\n return machineMismatch || macMismatch;\n}\nexport function getOrCreateDeviceId() {\n const nowIso = new Date().toISOString();\n const current = getCurrentDeviceFingerprintSafe();\n const stored = loadStoredDeviceIdentity();\n if (stored?.deviceId) {\n if (hasFingerprintMismatch(stored, current)) {\n const rotatedId = randomUUID();\n saveStoredDeviceIdentity({\n version: 1,\n deviceId: rotatedId,\n createdAt: stored.createdAt || nowIso,\n machineId: current.machineId,\n mac: current.mac,\n hostname: current.hostname,\n source: \"uuid\",\n previousDeviceId: stored.deviceId,\n rotationReason: \"fingerprint_mismatch\",\n rotatedAt: nowIso,\n });\n return rotatedId;\n }\n saveStoredDeviceIdentity({\n ...stored,\n version: 1,\n machineId: current.machineId,\n mac: current.mac,\n hostname: current.hostname,\n source: stored.source ?? \"uuid\",\n });\n return stored.deviceId;\n }\n const legacyDeviceId = getMachineIdSafe() ?? getFallbackDeviceIdFromMac();\n const hasActivation = !!loadActivationFile();\n const deviceId = hasActivation && legacyDeviceId ? legacyDeviceId : randomUUID();\n const source = hasActivation && legacyDeviceId ? \"legacy\" : \"uuid\";\n saveStoredDeviceIdentity({\n version: 1,\n deviceId,\n createdAt: nowIso,\n machineId: current.machineId,\n mac: current.mac,\n hostname: current.hostname,\n source,\n });\n return deviceId;\n}\nfunction loadActivationFile() {\n const data = readJsonSafe(ACTIVATION_FILE);\n if (!data?.apiKey || !data?.apiSecret || !data?.activatedAt)\n return null;\n return data;\n}\nfunction saveActivationFile(payload) {\n writeJson(ACTIVATION_FILE, payload);\n}\nexport function getLicenseStatus() {\n const deviceId = getOrCreateDeviceId();\n const data = loadActivationFile();\n return {\n activated: !!data,\n deviceId,\n activatedAt: data?.activatedAt ?? null,\n };\n}\nexport async function activateLicense(activationCode) {\n const normalizedCode = activationCode.trim();\n if (!normalizedCode) {\n return {\n ok: false,\n message: \"激活码不能为空\",\n status: getLicenseStatus(),\n };\n }\n const coreUrl = await getCoreUrl();\n const deviceId = getOrCreateDeviceId();\n const url = withChangewayOpenPrefix(`${coreUrl.replace(/\\/+$/, \"\")}/device/activate`);\n const body = {\n deviceId,\n activationCode: normalizedCode,\n };\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n traceId: createTraceId(),\n },\n body: JSON.stringify(body),\n });\n const payload = (await response.json().catch(() => ({})));\n const codeText = String(payload.code ?? \"\");\n const apiKey = payload.data?.apiKey?.trim() ?? \"\";\n const apiSecret = payload.data?.apiSecret?.trim() ?? \"\";\n if (codeText === \"200\" && apiKey && apiSecret) {\n saveActivationFile({\n apiKey,\n apiSecret,\n activatedAt: new Date().toISOString(),\n });\n return {\n ok: true,\n message: payload.message?.trim() || \"激活成功\",\n status: getLicenseStatus(),\n };\n }\n return {\n ok: false,\n message: payload.message?.trim() || `激活失败(code=${codeText || \"unknown\"})`,\n status: getLicenseStatus(),\n };\n }\n catch (err) {\n return {\n ok: false,\n message: `激活请求失败:${String(err)}`,\n status: getLicenseStatus(),\n };\n }\n}\n//# sourceMappingURL=license.js.map"],"names":[],"sourceRoot":""}