abtars 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +84 -0
- package/bundle/_registry.generated-M4WY2MMI.js +35 -0
- package/bundle/_registry.generated-M4WY2MMI.js.map +7 -0
- package/bundle/abtars-browser.js +162 -0
- package/bundle/abtars-browser.js.map +7 -0
- package/bundle/abtars-cli.js +1438 -0
- package/bundle/abtars-cli.js.map +7 -0
- package/bundle/abtars-restart.js +12 -0
- package/bundle/abtars-restart.js.map +7 -0
- package/bundle/abtars-rss.js +165 -0
- package/bundle/abtars-rss.js.map +7 -0
- package/bundle/abtars-task.js +258 -0
- package/bundle/abtars-task.js.map +7 -0
- package/bundle/abtars.js +4072 -0
- package/bundle/abtars.js.map +7 -0
- package/bundle/agent-api-rate-limit-OQNFMXTZ.js +38 -0
- package/bundle/agent-api-rate-limit-OQNFMXTZ.js.map +7 -0
- package/bundle/agent-registry-LT4JNQH6.js +18 -0
- package/bundle/agent-registry-LT4JNQH6.js.map +7 -0
- package/bundle/agents/default.md +29 -0
- package/bundle/anthropic-adapter-2APTH3LA.js +40 -0
- package/bundle/anthropic-adapter-2APTH3LA.js.map +7 -0
- package/bundle/bridge-lock-transport-4AC2G5G6.js +39 -0
- package/bundle/bridge-lock-transport-4AC2G5G6.js.map +7 -0
- package/bundle/browse-delivery-JXBY36GK.js +17 -0
- package/bundle/browse-delivery-JXBY36GK.js.map +7 -0
- package/bundle/browser-ELNDVPLC.js +18 -0
- package/bundle/browser-ELNDVPLC.js.map +7 -0
- package/bundle/capability-CIL3G4FI.js +17 -0
- package/bundle/capability-CIL3G4FI.js.map +7 -0
- package/bundle/chunk-265TPOPC.js +289 -0
- package/bundle/chunk-265TPOPC.js.map +7 -0
- package/bundle/chunk-2UENBO6M.js +223 -0
- package/bundle/chunk-2UENBO6M.js.map +7 -0
- package/bundle/chunk-2UPU3OW6.js +67 -0
- package/bundle/chunk-2UPU3OW6.js.map +7 -0
- package/bundle/chunk-2XU2X4OI.js +125 -0
- package/bundle/chunk-2XU2X4OI.js.map +7 -0
- package/bundle/chunk-3B7BBE4F.js +758 -0
- package/bundle/chunk-3B7BBE4F.js.map +7 -0
- package/bundle/chunk-3E545J66.js +69 -0
- package/bundle/chunk-3E545J66.js.map +7 -0
- package/bundle/chunk-5R2ANXQ7.js +510 -0
- package/bundle/chunk-5R2ANXQ7.js.map +7 -0
- package/bundle/chunk-6CPN4IGS.js +507 -0
- package/bundle/chunk-6CPN4IGS.js.map +7 -0
- package/bundle/chunk-6NR3OHEW.js +88 -0
- package/bundle/chunk-6NR3OHEW.js.map +7 -0
- package/bundle/chunk-6SETMHNN.js +206 -0
- package/bundle/chunk-6SETMHNN.js.map +7 -0
- package/bundle/chunk-6UCRKRWR.js +644 -0
- package/bundle/chunk-6UCRKRWR.js.map +7 -0
- package/bundle/chunk-AR6GO6YC.js +83 -0
- package/bundle/chunk-AR6GO6YC.js.map +7 -0
- package/bundle/chunk-AZJIODTQ.js +54 -0
- package/bundle/chunk-AZJIODTQ.js.map +7 -0
- package/bundle/chunk-BHMZ4RCC.js +3706 -0
- package/bundle/chunk-BHMZ4RCC.js.map +7 -0
- package/bundle/chunk-BQ2L4GMG.js +9175 -0
- package/bundle/chunk-BQ2L4GMG.js.map +7 -0
- package/bundle/chunk-BSSBCSCL.js +159 -0
- package/bundle/chunk-BSSBCSCL.js.map +7 -0
- package/bundle/chunk-BUUVFUPO.js +157 -0
- package/bundle/chunk-BUUVFUPO.js.map +7 -0
- package/bundle/chunk-CEVRHKJY.js +131 -0
- package/bundle/chunk-CEVRHKJY.js.map +7 -0
- package/bundle/chunk-CWOHNFUV.js +39 -0
- package/bundle/chunk-CWOHNFUV.js.map +7 -0
- package/bundle/chunk-D2DCBO6M.js +228 -0
- package/bundle/chunk-D2DCBO6M.js.map +7 -0
- package/bundle/chunk-FMWKEPM7.js +31 -0
- package/bundle/chunk-FMWKEPM7.js.map +7 -0
- package/bundle/chunk-GRNENTPA.js +145 -0
- package/bundle/chunk-GRNENTPA.js.map +7 -0
- package/bundle/chunk-GST5T3WZ.js +93 -0
- package/bundle/chunk-GST5T3WZ.js.map +7 -0
- package/bundle/chunk-GUQVJC3U.js +299 -0
- package/bundle/chunk-GUQVJC3U.js.map +7 -0
- package/bundle/chunk-HX7Y7EYP.js +3659 -0
- package/bundle/chunk-HX7Y7EYP.js.map +7 -0
- package/bundle/chunk-JCJS4ZIB.js +296 -0
- package/bundle/chunk-JCJS4ZIB.js.map +7 -0
- package/bundle/chunk-JW6RU47G.js +184 -0
- package/bundle/chunk-JW6RU47G.js.map +7 -0
- package/bundle/chunk-LSPKJQCI.js +24 -0
- package/bundle/chunk-LSPKJQCI.js.map +7 -0
- package/bundle/chunk-M6VBAPNT.js +16 -0
- package/bundle/chunk-M6VBAPNT.js.map +7 -0
- package/bundle/chunk-MPX525QO.js +129 -0
- package/bundle/chunk-MPX525QO.js.map +7 -0
- package/bundle/chunk-MW6WDLU7.js +130 -0
- package/bundle/chunk-MW6WDLU7.js.map +7 -0
- package/bundle/chunk-NT3OBORC.js +215 -0
- package/bundle/chunk-NT3OBORC.js.map +7 -0
- package/bundle/chunk-NWDBD4PA.js +50 -0
- package/bundle/chunk-NWDBD4PA.js.map +7 -0
- package/bundle/chunk-OP7BTAWY.js +29 -0
- package/bundle/chunk-OP7BTAWY.js.map +7 -0
- package/bundle/chunk-PLCY3GFH.js +77 -0
- package/bundle/chunk-PLCY3GFH.js.map +7 -0
- package/bundle/chunk-PNEDC45Y.js +97 -0
- package/bundle/chunk-PNEDC45Y.js.map +7 -0
- package/bundle/chunk-QBGBT5QS.js +81 -0
- package/bundle/chunk-QBGBT5QS.js.map +7 -0
- package/bundle/chunk-RVE2N7FA.js +70 -0
- package/bundle/chunk-RVE2N7FA.js.map +7 -0
- package/bundle/chunk-TZHIDLDS.js +71910 -0
- package/bundle/chunk-TZHIDLDS.js.map +7 -0
- package/bundle/chunk-UCQ2WC3B.js +126 -0
- package/bundle/chunk-UCQ2WC3B.js.map +7 -0
- package/bundle/chunk-UHRP745J.js +214 -0
- package/bundle/chunk-UHRP745J.js.map +7 -0
- package/bundle/chunk-V76TVMCM.js +58 -0
- package/bundle/chunk-V76TVMCM.js.map +7 -0
- package/bundle/chunk-VVEDVGCR.js +981 -0
- package/bundle/chunk-VVEDVGCR.js.map +7 -0
- package/bundle/chunk-W6FAL35D.js +102 -0
- package/bundle/chunk-W6FAL35D.js.map +7 -0
- package/bundle/chunk-X6TERNVJ.js +15902 -0
- package/bundle/chunk-X6TERNVJ.js.map +7 -0
- package/bundle/chunk-X76UX47U.js +47 -0
- package/bundle/chunk-X76UX47U.js.map +7 -0
- package/bundle/chunk-XREWVCUO.js +518 -0
- package/bundle/chunk-XREWVCUO.js.map +7 -0
- package/bundle/chunk-Y6XAEX2Q.js +408 -0
- package/bundle/chunk-Y6XAEX2Q.js.map +7 -0
- package/bundle/chunk-YOCTDKKL.js +28 -0
- package/bundle/chunk-YOCTDKKL.js.map +7 -0
- package/bundle/chunk-ZXPXCDA6.js +160 -0
- package/bundle/chunk-ZXPXCDA6.js.map +7 -0
- package/bundle/commands-BHVUOU3V.js +31 -0
- package/bundle/commands-BHVUOU3V.js.map +7 -0
- package/bundle/completion-buffer-P253ONKF.js +13 -0
- package/bundle/completion-buffer-P253ONKF.js.map +7 -0
- package/bundle/config-RGSDAPZN.js +19 -0
- package/bundle/config-RGSDAPZN.js.map +7 -0
- package/bundle/config-show-ERTATR6E.js +40 -0
- package/bundle/config-show-ERTATR6E.js.map +7 -0
- package/bundle/context-HCEGZNDC.js +72 -0
- package/bundle/context-HCEGZNDC.js.map +7 -0
- package/bundle/delegation-tools-GYTS2D6A.js +27 -0
- package/bundle/delegation-tools-GYTS2D6A.js.map +7 -0
- package/bundle/deploy-lib-import-32ZFKHWP.js +49 -0
- package/bundle/deploy-lib-import-32ZFKHWP.js.map +7 -0
- package/bundle/digital-signature-OFCGSHWO.js +13 -0
- package/bundle/digital-signature-OFCGSHWO.js.map +7 -0
- package/bundle/direct-api-transport-YR7SXXNN.js +860 -0
- package/bundle/direct-api-transport-YR7SXXNN.js.map +7 -0
- package/bundle/discord-adapter-YYWVMPPU.js +584 -0
- package/bundle/discord-adapter-YYWVMPPU.js.map +7 -0
- package/bundle/dist-MTMKARCP.js +1969 -0
- package/bundle/dist-MTMKARCP.js.map +7 -0
- package/bundle/dns-wakeup-27M7D2MR.js +107 -0
- package/bundle/dns-wakeup-27M7D2MR.js.map +7 -0
- package/bundle/doctor-QNUSDY73.js +248 -0
- package/bundle/doctor-QNUSDY73.js.map +7 -0
- package/bundle/ensure-invariants-NMXNS476.js +49 -0
- package/bundle/ensure-invariants-NMXNS476.js.map +7 -0
- package/bundle/env-schema-2KBHBDGN.js +19 -0
- package/bundle/env-schema-2KBHBDGN.js.map +7 -0
- package/bundle/esm-DDP6NCZG.js +100663 -0
- package/bundle/esm-DDP6NCZG.js.map +7 -0
- package/bundle/fallback-policy-L4QV2PEJ.js +46 -0
- package/bundle/fallback-policy-L4QV2PEJ.js.map +7 -0
- package/bundle/health-check-SPA7NT6N.js +56 -0
- package/bundle/health-check-SPA7NT6N.js.map +7 -0
- package/bundle/hook-system-6Q5YTR53.js +17 -0
- package/bundle/hook-system-6Q5YTR53.js.map +7 -0
- package/bundle/hotskills-K7BM4YLB.js +12 -0
- package/bundle/hotskills-K7BM4YLB.js.map +7 -0
- package/bundle/install-6HRZVKUM.js +15 -0
- package/bundle/install-6HRZVKUM.js.map +7 -0
- package/bundle/install-log-IAPHYKD4.js +28 -0
- package/bundle/install-log-IAPHYKD4.js.map +7 -0
- package/bundle/install-manifest-SPQRUNXL.js +102 -0
- package/bundle/install-manifest-SPQRUNXL.js.map +7 -0
- package/bundle/install-validate-PVLZXYLQ.js +53 -0
- package/bundle/install-validate-PVLZXYLQ.js.map +7 -0
- package/bundle/irc-adapter-OI5UZSQF.js +293 -0
- package/bundle/irc-adapter-OI5UZSQF.js.map +7 -0
- package/bundle/irc-config-55YO6EGB.js +88 -0
- package/bundle/irc-config-55YO6EGB.js.map +7 -0
- package/bundle/logs-ZNYXX5PA.js +19 -0
- package/bundle/logs-ZNYXX5PA.js.map +7 -0
- package/bundle/media-utils-XNNDTYFI.js +4662 -0
- package/bundle/media-utils-XNNDTYFI.js.map +7 -0
- package/bundle/message-pipeline-LLH5SYMO.js +33 -0
- package/bundle/message-pipeline-LLH5SYMO.js.map +7 -0
- package/bundle/meta.json +41304 -0
- package/bundle/model-health-registry-35LQNVQR.js +11 -0
- package/bundle/model-health-registry-35LQNVQR.js.map +7 -0
- package/bundle/notification-Y5S5MMLV.js +13 -0
- package/bundle/notification-Y5S5MMLV.js.map +7 -0
- package/bundle/openrouter-credits-EDY7ETAU.js +32 -0
- package/bundle/openrouter-credits-EDY7ETAU.js.map +7 -0
- package/bundle/passwd-RRFV4CC5.js +133 -0
- package/bundle/passwd-RRFV4CC5.js.map +7 -0
- package/bundle/paths-G33RZWZ7.js +17 -0
- package/bundle/paths-G33RZWZ7.js.map +7 -0
- package/bundle/peer-client-52XYMNI7.js +156 -0
- package/bundle/peer-client-52XYMNI7.js.map +7 -0
- package/bundle/peer-config-VK6EDLN5.js +16 -0
- package/bundle/peer-config-VK6EDLN5.js.map +7 -0
- package/bundle/peer-sessions-EAXTNQ36.js +49 -0
- package/bundle/peer-sessions-EAXTNQ36.js.map +7 -0
- package/bundle/pending-callback-RIMQZ7FJ.js +40 -0
- package/bundle/pending-callback-RIMQZ7FJ.js.map +7 -0
- package/bundle/phase-transport-KYERDL2O.js +22 -0
- package/bundle/phase-transport-KYERDL2O.js.map +7 -0
- package/bundle/public/css/dashboard.css +542 -0
- package/bundle/public/index.html +180 -0
- package/bundle/public/js/app.js +437 -0
- package/bundle/public/memory-universe.js +384 -0
- package/bundle/responses-adapter-AAQTY3K4.js +30 -0
- package/bundle/responses-adapter-AAQTY3K4.js.map +7 -0
- package/bundle/restore-ZE3SEPSS.js +46 -0
- package/bundle/restore-ZE3SEPSS.js.map +7 -0
- package/bundle/self-healer-utils-DMUUXC47.js +43 -0
- package/bundle/self-healer-utils-DMUUXC47.js.map +7 -0
- package/bundle/skill-stats-LLEXEXLR.js +22 -0
- package/bundle/skill-stats-LLEXEXLR.js.map +7 -0
- package/bundle/sleep-OYIUOVQD.js +19 -0
- package/bundle/sleep-OYIUOVQD.js.map +7 -0
- package/bundle/soul-loader-54WCVNLJ.js +16 -0
- package/bundle/soul-loader-54WCVNLJ.js.map +7 -0
- package/bundle/src-JL4PVO23.js +8 -0
- package/bundle/src-JL4PVO23.js.map +7 -0
- package/bundle/sse-parser-anthropic-P7CE2MH2.js +72 -0
- package/bundle/sse-parser-anthropic-P7CE2MH2.js.map +7 -0
- package/bundle/sse-parser-responses-EQQA5FWN.js +63 -0
- package/bundle/sse-parser-responses-EQQA5FWN.js.map +7 -0
- package/bundle/ssrf-guard-FZCBYIVW.js +64 -0
- package/bundle/ssrf-guard-FZCBYIVW.js.map +7 -0
- package/bundle/start-FH3GRMJ4.js +35 -0
- package/bundle/start-FH3GRMJ4.js.map +7 -0
- package/bundle/stream-single-WSG4D53C.js +33 -0
- package/bundle/stream-single-WSG4D53C.js.map +7 -0
- package/bundle/stt-2UH3RITX.js +14 -0
- package/bundle/stt-2UH3RITX.js.map +7 -0
- package/bundle/subagent-runtime-LE2ZXH3G.js +12 -0
- package/bundle/subagent-runtime-LE2ZXH3G.js.map +7 -0
- package/bundle/system-message-T5R3EYYN.js +30 -0
- package/bundle/system-message-T5R3EYYN.js.map +7 -0
- package/bundle/system-status-KQ6KHFJ6.js +189 -0
- package/bundle/system-status-KQ6KHFJ6.js.map +7 -0
- package/bundle/task-store-K7CQDEPI.js +22 -0
- package/bundle/task-store-K7CQDEPI.js.map +7 -0
- package/bundle/telegram-adapter-2V3XUMT5.js +1060 -0
- package/bundle/telegram-adapter-2V3XUMT5.js.map +7 -0
- package/bundle/tool-registry-MU3OX4UI.js +38 -0
- package/bundle/tool-registry-MU3OX4UI.js.map +7 -0
- package/bundle/tool-sandbox-VYOK4ZOA.js +20 -0
- package/bundle/tool-sandbox-VYOK4ZOA.js.map +7 -0
- package/bundle/transport-config-YLXU33RO.js +57 -0
- package/bundle/transport-config-YLXU33RO.js.map +7 -0
- package/bundle/update-QCW5LXRN.js +13 -0
- package/bundle/update-QCW5LXRN.js.map +7 -0
- package/bundle/update-check-27KZSAP6.js +12 -0
- package/bundle/update-check-27KZSAP6.js.map +7 -0
- package/bundle/usage-tracker-OVVEVMOY.js +17 -0
- package/bundle/usage-tracker-OVVEVMOY.js.map +7 -0
- package/bundle/user-registry-D4SD73UV.js +16 -0
- package/bundle/user-registry-D4SD73UV.js.map +7 -0
- package/core/professor.json +14 -0
- package/core/prompts/browsing_prompt.md +39 -0
- package/core/prompts/compaction.md +32 -0
- package/core/skills/memory/classification/SKILL.md +37 -0
- package/core/skills/memory/memory-anomalies/SKILL.md +39 -0
- package/core/skills/memory/memory-search/SKILL.md +48 -0
- package/core/skills/memory/topic-save/SKILL.md +44 -0
- package/core/skills/ops/cron/SKILL.md +51 -0
- package/core/skills/ops/gdrive-backup/SKILL.md +15 -0
- package/core/skills/ops/session-start/SKILL.md +11 -0
- package/core/skills/ops/skill-authoring/SKILL.md +54 -0
- package/core/skills/ops/system-health/SKILL.md +104 -0
- package/core/skills/ops/troubleshooting/SKILL.md +48 -0
- package/core/skills/ops/trust-gating/SKILL.md +30 -0
- package/core/skills/tools/a2a-communication/SKILL.md +68 -0
- package/core/skills/tools/browse-delegate/SKILL.md +27 -0
- package/core/skills/tools/browser/SKILL.md +36 -0
- package/core/skills/tools/clawhub/SKILL.md +44 -0
- package/core/skills/tools/delegation/SKILL.md +48 -0
- package/core/skills/tools/fxtwitter/SKILL.md +52 -0
- package/core/skills/tools/gmail/SKILL.md +44 -0
- package/core/skills/tools/irc-chat/SKILL.md +84 -0
- package/core/skills/tools/linear/SKILL.md +90 -0
- package/core/skills/tools/mcporter/SKILL.md +46 -0
- package/core/skills/tools/model-scout/SKILL.md +132 -0
- package/core/skills/tools/model-scout/scout-add-model.py +67 -0
- package/core/skills/tools/model-scout/scout-ollama.py +116 -0
- package/core/skills/tools/model-scout/scout-openrouter.py +85 -0
- package/core/skills/tools/nlm/SKILL.md +40 -0
- package/core/skills/tools/todo/SKILL.md +30 -0
- package/core/skills/tools/twitterX/SKILL.md +52 -0
- package/core/skills/tools/twitterX/scripts/abtars-tweet.js +532 -0
- package/core/skills/tools/twitterX/scripts/package.json +1 -0
- package/core/skills/tools/web-fetch/SKILL.md +29 -0
- package/package.json +59 -0
- package/scripts/abtars-daemon.service +23 -0
- package/scripts/abtars-fetch.sh +42 -0
- package/scripts/abtars-watchdog.service +13 -0
- package/scripts/abtars.sh +14 -0
- package/scripts/abtars@.service +21 -0
- package/scripts/browser-patchright.sh +79 -0
- package/scripts/com.abtars.daemon.plist +24 -0
- package/scripts/com.abtars.watchdog.plist +27 -0
- package/scripts/daily-backup.sh +62 -0
- package/scripts/doctor.sh +553 -0
- package/scripts/hooks/audit-logger.sh +22 -0
- package/scripts/upgrade-deps.sh +64 -0
- package/scripts/watchdog.sh +309 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
9
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
10
|
+
}) : x)(function(x) {
|
|
11
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
12
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
13
|
+
});
|
|
14
|
+
var __esm = (fn, res) => function __init() {
|
|
15
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
16
|
+
};
|
|
17
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
18
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
19
|
+
};
|
|
20
|
+
var __export = (target, all) => {
|
|
21
|
+
for (var name in all)
|
|
22
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
23
|
+
};
|
|
24
|
+
var __copyProps = (to, from, except, desc) => {
|
|
25
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
26
|
+
for (let key of __getOwnPropNames(from))
|
|
27
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
28
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
29
|
+
}
|
|
30
|
+
return to;
|
|
31
|
+
};
|
|
32
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
33
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
34
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
35
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
36
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
37
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
38
|
+
mod
|
|
39
|
+
));
|
|
40
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
__require,
|
|
44
|
+
__esm,
|
|
45
|
+
__commonJS,
|
|
46
|
+
__export,
|
|
47
|
+
__toESM,
|
|
48
|
+
__toCommonJS
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=chunk-NWDBD4PA.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
|
|
3
|
+
// src/utils/abmind-lazy.ts
|
|
4
|
+
var _mod = null;
|
|
5
|
+
var _loaded = false;
|
|
6
|
+
function resetAbmindCache() {
|
|
7
|
+
_mod = null;
|
|
8
|
+
_loaded = false;
|
|
9
|
+
}
|
|
10
|
+
async function loadAbmind() {
|
|
11
|
+
if (_loaded) return _mod;
|
|
12
|
+
try {
|
|
13
|
+
_mod = await import("abmind");
|
|
14
|
+
} catch {
|
|
15
|
+
_mod = null;
|
|
16
|
+
}
|
|
17
|
+
_loaded = true;
|
|
18
|
+
return _mod;
|
|
19
|
+
}
|
|
20
|
+
function abmind() {
|
|
21
|
+
return _mod;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export {
|
|
25
|
+
resetAbmindCache,
|
|
26
|
+
loadAbmind,
|
|
27
|
+
abmind
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=chunk-OP7BTAWY.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/abmind-lazy.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Lazy abmind loader \u2014 pre-loaded once at boot, then available synchronously.\n * ALL runtime access to abmind goes through here.\n * If abmind is not installed, abmind() returns null.\n */\n\ntype AbmindModule = typeof import(\"abmind\");\n\nlet _mod: AbmindModule | null = null;\nlet _loaded = false;\n\n/** Reset cache \u2014 called on in-process restart. */\nexport function resetAbmindCache(): void {\n _mod = null;\n _loaded = false;\n}\n\n/** Call once at boot (phase-memory). Caches the module. */\nexport async function loadAbmind(): Promise<AbmindModule | null> {\n if (_loaded) return _mod;\n try {\n _mod = await import(\"abmind\");\n } catch {\n _mod = null;\n }\n _loaded = true;\n return _mod;\n}\n\n/** Synchronous access after loadAbmind() has been called. Returns null if unavailable. */\nexport function abmind(): AbmindModule | null {\n return _mod;\n}\n"],
|
|
5
|
+
"mappings": ";;;AAQA,IAAI,OAA4B;AAChC,IAAI,UAAU;AAGP,SAAS,mBAAyB;AACvC,SAAO;AACP,YAAU;AACZ;AAGA,eAAsB,aAA2C;AAC/D,MAAI,QAAS,QAAO;AACpB,MAAI;AACF,WAAO,MAAM,OAAO,QAAQ;AAAA,EAC9B,QAAQ;AACN,WAAO;AAAA,EACT;AACA,YAAU;AACV,SAAO;AACT;AAGO,SAAS,SAA8B;AAC5C,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
import {
|
|
3
|
+
init_log_and_swallow,
|
|
4
|
+
logAndSwallow
|
|
5
|
+
} from "./chunk-FMWKEPM7.js";
|
|
6
|
+
import {
|
|
7
|
+
abtarsHome,
|
|
8
|
+
init_paths
|
|
9
|
+
} from "./chunk-X76UX47U.js";
|
|
10
|
+
|
|
11
|
+
// src/components/tasks/task-store.ts
|
|
12
|
+
init_paths();
|
|
13
|
+
init_log_and_swallow();
|
|
14
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync } from "node:fs";
|
|
15
|
+
import { join, dirname } from "node:path";
|
|
16
|
+
var TAG = "task_store";
|
|
17
|
+
var storePath = () => join(abtarsHome(), "state", "tasks.json");
|
|
18
|
+
function readAll() {
|
|
19
|
+
const p = storePath();
|
|
20
|
+
if (!existsSync(p)) return [];
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(readFileSync(p, "utf-8"));
|
|
23
|
+
} catch (err) {
|
|
24
|
+
logAndSwallow(TAG, "readAll tasks.json", err);
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function writeAll(entries) {
|
|
29
|
+
const p = storePath();
|
|
30
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
31
|
+
const tmp = p + ".tmp";
|
|
32
|
+
writeFileSync(tmp, JSON.stringify(entries, null, 2), "utf-8");
|
|
33
|
+
renameSync(tmp, p);
|
|
34
|
+
}
|
|
35
|
+
function readEntries() {
|
|
36
|
+
return readAll();
|
|
37
|
+
}
|
|
38
|
+
function readEntry(id) {
|
|
39
|
+
return readAll().find((e) => e.id === id) ?? null;
|
|
40
|
+
}
|
|
41
|
+
function writeEntry(e) {
|
|
42
|
+
const entries = readAll();
|
|
43
|
+
const idx = entries.findIndex((x) => x.id === e.id);
|
|
44
|
+
if (idx >= 0) entries[idx] = e;
|
|
45
|
+
else entries.push(e);
|
|
46
|
+
writeAll(entries);
|
|
47
|
+
}
|
|
48
|
+
function removeEntry(id) {
|
|
49
|
+
const entries = readAll();
|
|
50
|
+
const before = entries.length;
|
|
51
|
+
const filtered = entries.filter((e) => e.id !== id);
|
|
52
|
+
if (filtered.length === before) return false;
|
|
53
|
+
writeAll(filtered);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
function recordRun(entryId, exitCode) {
|
|
57
|
+
const entries = readAll();
|
|
58
|
+
const entry = entries.find((e) => e.id === entryId);
|
|
59
|
+
if (!entry) return;
|
|
60
|
+
const history = entry.history ?? [];
|
|
61
|
+
history.push({ ts: Date.now(), ...exitCode !== void 0 ? { exitCode } : {} });
|
|
62
|
+
if (history.length > 10) history.splice(0, history.length - 10);
|
|
63
|
+
entry.history = history;
|
|
64
|
+
writeAll(entries);
|
|
65
|
+
}
|
|
66
|
+
function closeDb() {
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export {
|
|
70
|
+
readEntries,
|
|
71
|
+
readEntry,
|
|
72
|
+
writeEntry,
|
|
73
|
+
removeEntry,
|
|
74
|
+
recordRun,
|
|
75
|
+
closeDb
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=chunk-PLCY3GFH.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/tasks/task-store.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * task-store.ts \u2014 JSON-backed task entry storage.\n * Replaces cron-db.ts (SQLite in memory.db) with ~/.abtars/state/tasks.json.\n * Same API surface for callers.\n */\n\nimport { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport type { CronEntry } from \"../../cli/abtars-task.js\";\nimport { abtarsHome } from \"../../paths.js\";\nimport { logAndSwallow } from \"../log-and-swallow.js\";\n\nconst TAG = \"task_store\";\n\nconst storePath = (): string => join(abtarsHome(), \"state\", \"tasks.json\");\n\nfunction readAll(): CronEntry[] {\n const p = storePath();\n if (!existsSync(p)) return [];\n try { return JSON.parse(readFileSync(p, \"utf-8\")); }\n catch (err) { logAndSwallow(TAG, \"readAll tasks.json\", err); return []; }\n}\n\nfunction writeAll(entries: CronEntry[]): void {\n const p = storePath();\n mkdirSync(dirname(p), { recursive: true });\n const tmp = p + \".tmp\";\n writeFileSync(tmp, JSON.stringify(entries, null, 2), \"utf-8\");\n renameSync(tmp, p);\n}\n\nexport function readEntries(): CronEntry[] {\n return readAll();\n}\n\nexport function readEntry(id: string): CronEntry | null {\n return readAll().find(e => e.id === id) ?? null;\n}\n\nexport function writeEntry(e: CronEntry): void {\n const entries = readAll();\n const idx = entries.findIndex(x => x.id === e.id);\n if (idx >= 0) entries[idx] = e; else entries.push(e);\n writeAll(entries);\n}\n\nexport function removeEntry(id: string): boolean {\n const entries = readAll();\n const before = entries.length;\n const filtered = entries.filter(e => e.id !== id);\n if (filtered.length === before) return false;\n writeAll(filtered);\n return true;\n}\n\nexport function recordRun(entryId: string, exitCode?: number): void {\n const entries = readAll();\n const entry = entries.find(e => e.id === entryId);\n if (!entry) return;\n const history: { ts: number; exitCode?: number }[] = entry.history ?? [];\n history.push({ ts: Date.now(), ...(exitCode !== undefined ? { exitCode } : {}) });\n if (history.length > 10) history.splice(0, history.length - 10);\n entry.history = history;\n writeAll(entries);\n}\n\n/** No-op \u2014 kept for API compat with tests that called closeDb() on the old SQLite store. */\nexport function closeDb(): void { /* JSON store has no connection to close */ }\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AASA;AACA;AAJA,SAAS,YAAY,cAAc,eAAe,WAAW,kBAAkB;AAC/E,SAAS,MAAM,eAAe;AAK9B,IAAM,MAAM;AAEZ,IAAM,YAAY,MAAc,KAAK,WAAW,GAAG,SAAS,YAAY;AAExE,SAAS,UAAuB;AAC9B,QAAM,IAAI,UAAU;AACpB,MAAI,CAAC,WAAW,CAAC,EAAG,QAAO,CAAC;AAC5B,MAAI;AAAE,WAAO,KAAK,MAAM,aAAa,GAAG,OAAO,CAAC;AAAA,EAAG,SAC5C,KAAK;AAAE,kBAAc,KAAK,sBAAsB,GAAG;AAAG,WAAO,CAAC;AAAA,EAAG;AAC1E;AAEA,SAAS,SAAS,SAA4B;AAC5C,QAAM,IAAI,UAAU;AACpB,YAAU,QAAQ,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC;AACzC,QAAM,MAAM,IAAI;AAChB,gBAAc,KAAK,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG,OAAO;AAC5D,aAAW,KAAK,CAAC;AACnB;AAEO,SAAS,cAA2B;AACzC,SAAO,QAAQ;AACjB;AAEO,SAAS,UAAU,IAA8B;AACtD,SAAO,QAAQ,EAAE,KAAK,OAAK,EAAE,OAAO,EAAE,KAAK;AAC7C;AAEO,SAAS,WAAW,GAAoB;AAC7C,QAAM,UAAU,QAAQ;AACxB,QAAM,MAAM,QAAQ,UAAU,OAAK,EAAE,OAAO,EAAE,EAAE;AAChD,MAAI,OAAO,EAAG,SAAQ,GAAG,IAAI;AAAA,MAAQ,SAAQ,KAAK,CAAC;AACnD,WAAS,OAAO;AAClB;AAEO,SAAS,YAAY,IAAqB;AAC/C,QAAM,UAAU,QAAQ;AACxB,QAAM,SAAS,QAAQ;AACvB,QAAM,WAAW,QAAQ,OAAO,OAAK,EAAE,OAAO,EAAE;AAChD,MAAI,SAAS,WAAW,OAAQ,QAAO;AACvC,WAAS,QAAQ;AACjB,SAAO;AACT;AAEO,SAAS,UAAU,SAAiB,UAAyB;AAClE,QAAM,UAAU,QAAQ;AACxB,QAAM,QAAQ,QAAQ,KAAK,OAAK,EAAE,OAAO,OAAO;AAChD,MAAI,CAAC,MAAO;AACZ,QAAM,UAA+C,MAAM,WAAW,CAAC;AACvE,UAAQ,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC,EAAG,CAAC;AAChF,MAAI,QAAQ,SAAS,GAAI,SAAQ,OAAO,GAAG,QAAQ,SAAS,EAAE;AAC9D,QAAM,UAAU;AAChB,WAAS,OAAO;AAClB;AAGO,SAAS,UAAgB;AAA8C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
import {
|
|
3
|
+
__commonJS
|
|
4
|
+
} from "./chunk-NWDBD4PA.js";
|
|
5
|
+
|
|
6
|
+
// node_modules/ieee754/index.js
|
|
7
|
+
var require_ieee754 = __commonJS({
|
|
8
|
+
"node_modules/ieee754/index.js"(exports) {
|
|
9
|
+
exports.read = function(buffer, offset, isLE, mLen, nBytes) {
|
|
10
|
+
var e, m;
|
|
11
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
12
|
+
var eMax = (1 << eLen) - 1;
|
|
13
|
+
var eBias = eMax >> 1;
|
|
14
|
+
var nBits = -7;
|
|
15
|
+
var i = isLE ? nBytes - 1 : 0;
|
|
16
|
+
var d = isLE ? -1 : 1;
|
|
17
|
+
var s = buffer[offset + i];
|
|
18
|
+
i += d;
|
|
19
|
+
e = s & (1 << -nBits) - 1;
|
|
20
|
+
s >>= -nBits;
|
|
21
|
+
nBits += eLen;
|
|
22
|
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {
|
|
23
|
+
}
|
|
24
|
+
m = e & (1 << -nBits) - 1;
|
|
25
|
+
e >>= -nBits;
|
|
26
|
+
nBits += mLen;
|
|
27
|
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {
|
|
28
|
+
}
|
|
29
|
+
if (e === 0) {
|
|
30
|
+
e = 1 - eBias;
|
|
31
|
+
} else if (e === eMax) {
|
|
32
|
+
return m ? NaN : (s ? -1 : 1) * Infinity;
|
|
33
|
+
} else {
|
|
34
|
+
m = m + Math.pow(2, mLen);
|
|
35
|
+
e = e - eBias;
|
|
36
|
+
}
|
|
37
|
+
return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
|
|
38
|
+
};
|
|
39
|
+
exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
|
|
40
|
+
var e, m, c;
|
|
41
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
42
|
+
var eMax = (1 << eLen) - 1;
|
|
43
|
+
var eBias = eMax >> 1;
|
|
44
|
+
var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
|
|
45
|
+
var i = isLE ? 0 : nBytes - 1;
|
|
46
|
+
var d = isLE ? 1 : -1;
|
|
47
|
+
var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
|
|
48
|
+
value = Math.abs(value);
|
|
49
|
+
if (isNaN(value) || value === Infinity) {
|
|
50
|
+
m = isNaN(value) ? 1 : 0;
|
|
51
|
+
e = eMax;
|
|
52
|
+
} else {
|
|
53
|
+
e = Math.floor(Math.log(value) / Math.LN2);
|
|
54
|
+
if (value * (c = Math.pow(2, -e)) < 1) {
|
|
55
|
+
e--;
|
|
56
|
+
c *= 2;
|
|
57
|
+
}
|
|
58
|
+
if (e + eBias >= 1) {
|
|
59
|
+
value += rt / c;
|
|
60
|
+
} else {
|
|
61
|
+
value += rt * Math.pow(2, 1 - eBias);
|
|
62
|
+
}
|
|
63
|
+
if (value * c >= 2) {
|
|
64
|
+
e++;
|
|
65
|
+
c /= 2;
|
|
66
|
+
}
|
|
67
|
+
if (e + eBias >= eMax) {
|
|
68
|
+
m = 0;
|
|
69
|
+
e = eMax;
|
|
70
|
+
} else if (e + eBias >= 1) {
|
|
71
|
+
m = (value * c - 1) * Math.pow(2, mLen);
|
|
72
|
+
e = e + eBias;
|
|
73
|
+
} else {
|
|
74
|
+
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
75
|
+
e = 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {
|
|
79
|
+
}
|
|
80
|
+
e = e << mLen | m;
|
|
81
|
+
eLen += mLen;
|
|
82
|
+
for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {
|
|
83
|
+
}
|
|
84
|
+
buffer[offset + i - d] |= s * 128;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
export {
|
|
90
|
+
require_ieee754
|
|
91
|
+
};
|
|
92
|
+
/*! Bundled license information:
|
|
93
|
+
|
|
94
|
+
ieee754/index.js:
|
|
95
|
+
(*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
|
96
|
+
*/
|
|
97
|
+
//# sourceMappingURL=chunk-PNEDC45Y.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/ieee754/index.js"],
|
|
4
|
+
"sourcesContent": ["/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;AAAA;AAAA;AACA,YAAQ,OAAO,SAAU,QAAQ,QAAQ,MAAM,MAAM,QAAQ;AAC3D,UAAI,GAAG;AACP,UAAI,OAAQ,SAAS,IAAK,OAAO;AACjC,UAAI,QAAQ,KAAK,QAAQ;AACzB,UAAI,QAAQ,QAAQ;AACpB,UAAI,QAAQ;AACZ,UAAI,IAAI,OAAQ,SAAS,IAAK;AAC9B,UAAI,IAAI,OAAO,KAAK;AACpB,UAAI,IAAI,OAAO,SAAS,CAAC;AAEzB,WAAK;AAEL,UAAI,KAAM,KAAM,CAAC,SAAU;AAC3B,YAAO,CAAC;AACR,eAAS;AACT,aAAO,QAAQ,GAAG,IAAK,IAAI,MAAO,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,MAAC;AAE3E,UAAI,KAAM,KAAM,CAAC,SAAU;AAC3B,YAAO,CAAC;AACR,eAAS;AACT,aAAO,QAAQ,GAAG,IAAK,IAAI,MAAO,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,MAAC;AAE3E,UAAI,MAAM,GAAG;AACX,YAAI,IAAI;AAAA,MACV,WAAW,MAAM,MAAM;AACrB,eAAO,IAAI,OAAQ,IAAI,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,YAAI,IAAI,KAAK,IAAI,GAAG,IAAI;AACxB,YAAI,IAAI;AAAA,MACV;AACA,cAAQ,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI;AAAA,IAChD;AAEA,YAAQ,QAAQ,SAAU,QAAQ,OAAO,QAAQ,MAAM,MAAM,QAAQ;AACnE,UAAI,GAAG,GAAG;AACV,UAAI,OAAQ,SAAS,IAAK,OAAO;AACjC,UAAI,QAAQ,KAAK,QAAQ;AACzB,UAAI,QAAQ,QAAQ;AACpB,UAAI,KAAM,SAAS,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI;AAC9D,UAAI,IAAI,OAAO,IAAK,SAAS;AAC7B,UAAI,IAAI,OAAO,IAAI;AACnB,UAAI,IAAI,QAAQ,KAAM,UAAU,KAAK,IAAI,QAAQ,IAAK,IAAI;AAE1D,cAAQ,KAAK,IAAI,KAAK;AAEtB,UAAI,MAAM,KAAK,KAAK,UAAU,UAAU;AACtC,YAAI,MAAM,KAAK,IAAI,IAAI;AACvB,YAAI;AAAA,MACN,OAAO;AACL,YAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG;AACzC,YAAI,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;AACrC;AACA,eAAK;AAAA,QACP;AACA,YAAI,IAAI,SAAS,GAAG;AAClB,mBAAS,KAAK;AAAA,QAChB,OAAO;AACL,mBAAS,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK;AAAA,QACrC;AACA,YAAI,QAAQ,KAAK,GAAG;AAClB;AACA,eAAK;AAAA,QACP;AAEA,YAAI,IAAI,SAAS,MAAM;AACrB,cAAI;AACJ,cAAI;AAAA,QACN,WAAW,IAAI,SAAS,GAAG;AACzB,eAAM,QAAQ,IAAK,KAAK,KAAK,IAAI,GAAG,IAAI;AACxC,cAAI,IAAI;AAAA,QACV,OAAO;AACL,cAAI,QAAQ,KAAK,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI;AACrD,cAAI;AAAA,QACN;AAAA,MACF;AAEA,aAAO,QAAQ,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,MAAC;AAE/E,UAAK,KAAK,OAAQ;AAClB,cAAQ;AACR,aAAO,OAAO,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,MAAC;AAE9E,aAAO,SAAS,IAAI,CAAC,KAAK,IAAI;AAAA,IAChC;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
import {
|
|
3
|
+
abtarsHome,
|
|
4
|
+
init_paths
|
|
5
|
+
} from "./chunk-X76UX47U.js";
|
|
6
|
+
import {
|
|
7
|
+
__esm,
|
|
8
|
+
__export
|
|
9
|
+
} from "./chunk-NWDBD4PA.js";
|
|
10
|
+
|
|
11
|
+
// src/components/update-check.ts
|
|
12
|
+
var update_check_exports = {};
|
|
13
|
+
__export(update_check_exports, {
|
|
14
|
+
checkForUpdate: () => checkForUpdate
|
|
15
|
+
});
|
|
16
|
+
import { execFileSync } from "node:child_process";
|
|
17
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
function cachePath() {
|
|
20
|
+
const dir = join(abtarsHome(), "state");
|
|
21
|
+
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
22
|
+
return join(dir, "update-check.json");
|
|
23
|
+
}
|
|
24
|
+
function readCache(ttlMs) {
|
|
25
|
+
try {
|
|
26
|
+
const data = JSON.parse(readFileSync(cachePath(), "utf-8"));
|
|
27
|
+
if (Date.now() - data.ts < ttlMs) return data;
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function writeCache(data) {
|
|
33
|
+
try {
|
|
34
|
+
writeFileSync(cachePath(), JSON.stringify(data), "utf-8");
|
|
35
|
+
} catch {
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function fetchLatest(pkg) {
|
|
39
|
+
try {
|
|
40
|
+
return execFileSync("npm", ["view", pkg, "version"], { encoding: "utf-8", timeout: 1e4 }).trim();
|
|
41
|
+
} catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function isNewer(a, b) {
|
|
46
|
+
const pa = a.split(".").map(Number);
|
|
47
|
+
const pb = b.split(".").map(Number);
|
|
48
|
+
for (let i = 0; i < 3; i++) {
|
|
49
|
+
if ((pa[i] ?? 0) > (pb[i] ?? 0)) return true;
|
|
50
|
+
if ((pa[i] ?? 0) < (pb[i] ?? 0)) return false;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
function checkForUpdate(pkg, currentVersion, opts) {
|
|
55
|
+
const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;
|
|
56
|
+
const cache = readCache(ttlMs);
|
|
57
|
+
const latest = cache?.latest ?? fetchLatest(pkg);
|
|
58
|
+
if (!latest) return null;
|
|
59
|
+
const now = Date.now();
|
|
60
|
+
const updateAvailable = isNewer(latest, currentVersion);
|
|
61
|
+
const shouldNotify = updateAvailable && (!cache?.lastNotifiedAt || now - cache.lastNotifiedAt > NOTIFY_COOLDOWN_MS);
|
|
62
|
+
const newCache = { ts: now, latest, lastNotifiedAt: shouldNotify ? now : cache?.lastNotifiedAt };
|
|
63
|
+
if (!cache) writeCache(newCache);
|
|
64
|
+
else if (shouldNotify) writeCache(newCache);
|
|
65
|
+
return { current: currentVersion, latest, updateAvailable, shouldNotify };
|
|
66
|
+
}
|
|
67
|
+
var DEFAULT_TTL_MS, NOTIFY_COOLDOWN_MS;
|
|
68
|
+
var init_update_check = __esm({
|
|
69
|
+
"src/components/update-check.ts"() {
|
|
70
|
+
init_paths();
|
|
71
|
+
DEFAULT_TTL_MS = 6 * 60 * 6e4;
|
|
72
|
+
NOTIFY_COOLDOWN_MS = 24 * 60 * 6e4;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
checkForUpdate,
|
|
78
|
+
update_check_exports,
|
|
79
|
+
init_update_check
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=chunk-QBGBT5QS.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/update-check.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * update-check.ts \u2014 Check npm registry for newer abtars versions (#440, #588).\n * Single module: configurable TTL, notify cooldown, logger integration.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { readFileSync, writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { abtarsHome } from \"../paths.js\";\n\nconst DEFAULT_TTL_MS = 6 * 60 * 60_000; // 6h\nconst NOTIFY_COOLDOWN_MS = 24 * 60 * 60_000; // 1 per day\n\ninterface CacheData {\n ts: number;\n latest: string;\n lastNotifiedAt?: number;\n}\n\nfunction cachePath(): string {\n const dir = join(abtarsHome(), \"state\");\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n return join(dir, \"update-check.json\");\n}\n\nfunction readCache(ttlMs: number): CacheData | null {\n try {\n const data = JSON.parse(readFileSync(cachePath(), \"utf-8\")) as CacheData;\n if (Date.now() - data.ts < ttlMs) return data;\n } catch { /* missing or corrupt */ }\n return null;\n}\n\nfunction writeCache(data: CacheData): void {\n try { writeFileSync(cachePath(), JSON.stringify(data), \"utf-8\"); } catch { /* non-critical */ }\n}\n\nfunction fetchLatest(pkg: string): string | null {\n try {\n return execFileSync(\"npm\", [\"view\", pkg, \"version\"], { encoding: \"utf-8\", timeout: 10_000 }).trim();\n } catch {\n return null;\n }\n}\n\n/** True if a is newer than b (semver major.minor.patch). */\nfunction isNewer(a: string, b: string): boolean {\n const pa = a.split(\".\").map(Number);\n const pb = b.split(\".\").map(Number);\n for (let i = 0; i < 3; i++) {\n if ((pa[i] ?? 0) > (pb[i] ?? 0)) return true;\n if ((pa[i] ?? 0) < (pb[i] ?? 0)) return false;\n }\n return false;\n}\n\nexport interface UpdateCheckResult {\n current: string;\n latest: string;\n updateAvailable: boolean;\n shouldNotify: boolean;\n}\n\n/**\n * Check if a newer version is available on npm.\n * Returns null if check is skipped (cached fresh / offline / npm not found).\n */\nexport function checkForUpdate(pkg: string, currentVersion: string, opts?: { ttlMs?: number }): UpdateCheckResult | null {\n const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;\n const cache = readCache(ttlMs);\n const latest = cache?.latest ?? fetchLatest(pkg);\n if (!latest) return null;\n\n const now = Date.now();\n const updateAvailable = isNewer(latest, currentVersion);\n const shouldNotify = updateAvailable && (!cache?.lastNotifiedAt || now - cache.lastNotifiedAt > NOTIFY_COOLDOWN_MS);\n\n const newCache: CacheData = { ts: now, latest, lastNotifiedAt: shouldNotify ? now : cache?.lastNotifiedAt };\n if (!cache) writeCache(newCache);\n else if (shouldNotify) writeCache(newCache);\n\n return { current: currentVersion, latest, updateAvailable, shouldNotify };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,oBAAoB;AAC7B,SAAS,cAAc,eAAe,WAAW,kBAAkB;AACnE,SAAS,YAAY;AAYrB,SAAS,YAAoB;AAC3B,QAAM,MAAM,KAAK,WAAW,GAAG,OAAO;AACtC,MAAI,CAAC,WAAW,GAAG,EAAG,WAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AACxD,SAAO,KAAK,KAAK,mBAAmB;AACtC;AAEA,SAAS,UAAU,OAAiC;AAClD,MAAI;AACF,UAAM,OAAO,KAAK,MAAM,aAAa,UAAU,GAAG,OAAO,CAAC;AAC1D,QAAI,KAAK,IAAI,IAAI,KAAK,KAAK,MAAO,QAAO;AAAA,EAC3C,QAAQ;AAAA,EAA2B;AACnC,SAAO;AACT;AAEA,SAAS,WAAW,MAAuB;AACzC,MAAI;AAAE,kBAAc,UAAU,GAAG,KAAK,UAAU,IAAI,GAAG,OAAO;AAAA,EAAG,QAAQ;AAAA,EAAqB;AAChG;AAEA,SAAS,YAAY,KAA4B;AAC/C,MAAI;AACF,WAAO,aAAa,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG,EAAE,UAAU,SAAS,SAAS,IAAO,CAAC,EAAE,KAAK;AAAA,EACpG,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAAS,QAAQ,GAAW,GAAoB;AAC9C,QAAM,KAAK,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAClC,QAAM,KAAK,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAClC,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,SAAK,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,KAAK,GAAI,QAAO;AACxC,SAAK,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,KAAK,GAAI,QAAO;AAAA,EAC1C;AACA,SAAO;AACT;AAaO,SAAS,eAAe,KAAa,gBAAwB,MAAqD;AACvH,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,QAAQ,UAAU,KAAK;AAC7B,QAAM,SAAS,OAAO,UAAU,YAAY,GAAG;AAC/C,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,kBAAkB,QAAQ,QAAQ,cAAc;AACtD,QAAM,eAAe,oBAAoB,CAAC,OAAO,kBAAkB,MAAM,MAAM,iBAAiB;AAEhG,QAAM,WAAsB,EAAE,IAAI,KAAK,QAAQ,gBAAgB,eAAe,MAAM,OAAO,eAAe;AAC1G,MAAI,CAAC,MAAO,YAAW,QAAQ;AAAA,WACtB,aAAc,YAAW,QAAQ;AAE1C,SAAO,EAAE,SAAS,gBAAgB,QAAQ,iBAAiB,aAAa;AAC1E;AAlFA,IAUM,gBACA;AAXN;AAAA;AAQA;AAEA,IAAM,iBAAiB,IAAI,KAAK;AAChC,IAAM,qBAAqB,KAAK,KAAK;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
2
|
+
import {
|
|
3
|
+
init_log_and_swallow,
|
|
4
|
+
logAndSwallow
|
|
5
|
+
} from "./chunk-FMWKEPM7.js";
|
|
6
|
+
import {
|
|
7
|
+
__esm,
|
|
8
|
+
__export
|
|
9
|
+
} from "./chunk-NWDBD4PA.js";
|
|
10
|
+
|
|
11
|
+
// src/components/peer-jwt.ts
|
|
12
|
+
var peer_jwt_exports = {};
|
|
13
|
+
__export(peer_jwt_exports, {
|
|
14
|
+
signJwt: () => signJwt,
|
|
15
|
+
verifyJwt: () => verifyJwt
|
|
16
|
+
});
|
|
17
|
+
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
18
|
+
function base64url(buf) {
|
|
19
|
+
return buf.toString("base64url");
|
|
20
|
+
}
|
|
21
|
+
function base64urlEncode(str) {
|
|
22
|
+
return Buffer.from(str, "utf-8").toString("base64url");
|
|
23
|
+
}
|
|
24
|
+
function base64urlDecode(str) {
|
|
25
|
+
return Buffer.from(str, "base64url").toString("utf-8");
|
|
26
|
+
}
|
|
27
|
+
function signJwt(payload, secret) {
|
|
28
|
+
const payloadB64 = base64urlEncode(JSON.stringify(payload));
|
|
29
|
+
const sigInput = `${HEADER}.${payloadB64}`;
|
|
30
|
+
const sig = base64url(createHmac("sha256", secret).update(sigInput).digest());
|
|
31
|
+
return `${sigInput}.${sig}`;
|
|
32
|
+
}
|
|
33
|
+
function verifyJwt(token, secret, selfName, clockSkewSec = 5) {
|
|
34
|
+
const parts = token.split(".");
|
|
35
|
+
if (parts.length !== 3) return { ok: false, reason: "malformed" };
|
|
36
|
+
const [headerB64, payloadB64, sigB64] = parts;
|
|
37
|
+
const sigInput = `${headerB64}.${payloadB64}`;
|
|
38
|
+
const expected = createHmac("sha256", secret).update(sigInput).digest();
|
|
39
|
+
const actual = Buffer.from(sigB64, "base64url");
|
|
40
|
+
if (expected.length !== actual.length || !timingSafeEqual(expected, actual)) {
|
|
41
|
+
return { ok: false, reason: "bad_signature" };
|
|
42
|
+
}
|
|
43
|
+
let payload;
|
|
44
|
+
try {
|
|
45
|
+
payload = JSON.parse(base64urlDecode(payloadB64));
|
|
46
|
+
} catch (err) {
|
|
47
|
+
logAndSwallow(TAG, "JSON.parse jwt payload", err);
|
|
48
|
+
return { ok: false, reason: "malformed_payload" };
|
|
49
|
+
}
|
|
50
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
51
|
+
if (payload.exp < now) return { ok: false, reason: "expired" };
|
|
52
|
+
if (payload.iat > now + clockSkewSec) return { ok: false, reason: "iat_future" };
|
|
53
|
+
if (payload.aud !== selfName) return { ok: false, reason: "wrong_aud" };
|
|
54
|
+
return { ok: true, payload };
|
|
55
|
+
}
|
|
56
|
+
var TAG, HEADER;
|
|
57
|
+
var init_peer_jwt = __esm({
|
|
58
|
+
"src/components/peer-jwt.ts"() {
|
|
59
|
+
"use strict";
|
|
60
|
+
init_log_and_swallow();
|
|
61
|
+
TAG = "peer_jwt";
|
|
62
|
+
HEADER = base64urlEncode(JSON.stringify({ alg: "HS256", typ: "JWT" }));
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
peer_jwt_exports,
|
|
68
|
+
init_peer_jwt
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=chunk-RVE2N7FA.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/peer-jwt.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Minimal JWT-HS256 implementation for peer auth (#393).\n * No external deps \u2014 uses Node built-in crypto only.\n */\n\nimport { createHmac, timingSafeEqual } from \"node:crypto\";\nimport { logAndSwallow } from \"./log-and-swallow.js\";\n\nconst TAG = \"peer_jwt\";\n\nexport interface JwtPayload {\n iss: string; // sender name\n aud: string; // receiver name\n iat: number; // issued-at (seconds)\n exp: number; // expiry (seconds)\n}\n\nfunction base64url(buf: Buffer): string {\n return buf.toString(\"base64url\");\n}\n\nfunction base64urlEncode(str: string): string {\n return Buffer.from(str, \"utf-8\").toString(\"base64url\");\n}\n\nfunction base64urlDecode(str: string): string {\n return Buffer.from(str, \"base64url\").toString(\"utf-8\");\n}\n\nconst HEADER = base64urlEncode(JSON.stringify({ alg: \"HS256\", typ: \"JWT\" }));\n\n/**\n * Sign a JWT with HS256.\n */\nexport function signJwt(payload: JwtPayload, secret: string): string {\n const payloadB64 = base64urlEncode(JSON.stringify(payload));\n const sigInput = `${HEADER}.${payloadB64}`;\n const sig = base64url(createHmac(\"sha256\", secret).update(sigInput).digest());\n return `${sigInput}.${sig}`;\n}\n\nexport type VerifyResult =\n | { ok: true; payload: JwtPayload }\n | { ok: false; reason: string };\n\n/**\n * Verify a JWT-HS256 token. Returns the payload if valid.\n *\n * @param token Raw JWT string\n * @param secret Shared secret for this peer\n * @param selfName Our own name (checked against `aud`)\n * @param clockSkewSec Tolerance for clock drift (default 5s)\n */\nexport function verifyJwt(\n token: string,\n secret: string,\n selfName: string,\n clockSkewSec = 5,\n): VerifyResult {\n const parts = token.split(\".\");\n if (parts.length !== 3) return { ok: false, reason: \"malformed\" };\n\n const [headerB64, payloadB64, sigB64] = parts;\n\n // Verify signature (timing-safe)\n const sigInput = `${headerB64}.${payloadB64}`;\n const expected = createHmac(\"sha256\", secret).update(sigInput).digest();\n const actual = Buffer.from(sigB64!, \"base64url\");\n if (expected.length !== actual.length || !timingSafeEqual(expected, actual)) {\n return { ok: false, reason: \"bad_signature\" };\n }\n\n // Decode payload\n let payload: JwtPayload;\n try {\n payload = JSON.parse(base64urlDecode(payloadB64!));\n } catch (err) {\n logAndSwallow(TAG, \"JSON.parse jwt payload\", err);\n return { ok: false, reason: \"malformed_payload\" };\n }\n\n // Check expiry\n const now = Math.floor(Date.now() / 1000);\n if (payload.exp < now) return { ok: false, reason: \"expired\" };\n\n // Check iat not too far in future (clock skew)\n if (payload.iat > now + clockSkewSec) return { ok: false, reason: \"iat_future\" };\n\n // Check audience\n if (payload.aud !== selfName) return { ok: false, reason: \"wrong_aud\" };\n\n return { ok: true, payload };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,YAAY,uBAAuB;AAY5C,SAAS,UAAU,KAAqB;AACtC,SAAO,IAAI,SAAS,WAAW;AACjC;AAEA,SAAS,gBAAgB,KAAqB;AAC5C,SAAO,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS,WAAW;AACvD;AAEA,SAAS,gBAAgB,KAAqB;AAC5C,SAAO,OAAO,KAAK,KAAK,WAAW,EAAE,SAAS,OAAO;AACvD;AAOO,SAAS,QAAQ,SAAqB,QAAwB;AACnE,QAAM,aAAa,gBAAgB,KAAK,UAAU,OAAO,CAAC;AAC1D,QAAM,WAAW,GAAG,MAAM,IAAI,UAAU;AACxC,QAAM,MAAM,UAAU,WAAW,UAAU,MAAM,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;AAC5E,SAAO,GAAG,QAAQ,IAAI,GAAG;AAC3B;AAcO,SAAS,UACd,OACA,QACA,UACA,eAAe,GACD;AACd,QAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,MAAI,MAAM,WAAW,EAAG,QAAO,EAAE,IAAI,OAAO,QAAQ,YAAY;AAEhE,QAAM,CAAC,WAAW,YAAY,MAAM,IAAI;AAGxC,QAAM,WAAW,GAAG,SAAS,IAAI,UAAU;AAC3C,QAAM,WAAW,WAAW,UAAU,MAAM,EAAE,OAAO,QAAQ,EAAE,OAAO;AACtE,QAAM,SAAS,OAAO,KAAK,QAAS,WAAW;AAC/C,MAAI,SAAS,WAAW,OAAO,UAAU,CAAC,gBAAgB,UAAU,MAAM,GAAG;AAC3E,WAAO,EAAE,IAAI,OAAO,QAAQ,gBAAgB;AAAA,EAC9C;AAGA,MAAI;AACJ,MAAI;AACF,cAAU,KAAK,MAAM,gBAAgB,UAAW,CAAC;AAAA,EACnD,SAAS,KAAK;AACZ,kBAAc,KAAK,0BAA0B,GAAG;AAChD,WAAO,EAAE,IAAI,OAAO,QAAQ,oBAAoB;AAAA,EAClD;AAGA,QAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AACxC,MAAI,QAAQ,MAAM,IAAK,QAAO,EAAE,IAAI,OAAO,QAAQ,UAAU;AAG7D,MAAI,QAAQ,MAAM,MAAM,aAAc,QAAO,EAAE,IAAI,OAAO,QAAQ,aAAa;AAG/E,MAAI,QAAQ,QAAQ,SAAU,QAAO,EAAE,IAAI,OAAO,QAAQ,YAAY;AAEtE,SAAO,EAAE,IAAI,MAAM,QAAQ;AAC7B;AA5FA,IAQM,KAqBA;AA7BN;AAAA;AAAA;AAMA;AAEA,IAAM,MAAM;AAqBZ,IAAM,SAAS,gBAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,KAAK,MAAM,CAAC,CAAC;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|