@seqyuan/annovibe 0.8.70 → 0.8.80
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +10 -8
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +9 -9
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +14 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/runtime/route.js +1 -1
- package/.next/server/app/api/apps/[id]/[[...path]]/route.js +2 -2
- package/.next/server/app/api/apps/route.js +2 -2
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/server/app/api/auth/totp/route.js +1 -0
- package/.next/server/app/api/auth/totp/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/harness/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/im/cancel/route.js +1 -1
- package/.next/server/app/api/im/gateway-status/route.js +2 -2
- package/.next/server/app/api/im/gateway-token/route.js +1 -1
- package/.next/server/app/api/im/project/route.js +2 -2
- package/.next/server/app/api/im/projects/route.js +2 -2
- package/.next/server/app/api/im/session-ids/route.js +1 -1
- package/.next/server/app/api/im/turn/route.js +2 -2
- package/.next/server/app/api/images/upload/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/memory/dismiss/route.js +2 -2
- package/.next/server/app/api/memory/promote/route.js +2 -2
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/plot-kernels/route.js +1 -1
- package/.next/server/app/api/plot-kernels/save/route.js +1 -1
- package/.next/server/app/api/plot-kernels/status/route.js +1 -1
- package/.next/server/app/api/plot-kernels/stop/route.js +1 -1
- package/.next/server/app/api/projects/browse/route.js +1 -1
- package/.next/server/app/api/projects/route.js +2 -2
- package/.next/server/app/api/search/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/kernel-state/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/kernel-state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/plan/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/new/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +2 -2
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/soul/route.js +1 -1
- package/.next/server/app/api/subagents/status/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +23 -9
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/page.js +3 -3
- package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke.html +222 -207
- package/.next/server/app/smoke.rsc +3 -3
- package/.next/server/app/smoke.segments/_full.segment.rsc +3 -3
- package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_index.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +10 -8
- package/.next/server/chunks/1494.js +47 -44
- package/.next/server/chunks/4013.js +1 -1
- package/.next/server/chunks/6429.js +202 -0
- package/.next/server/chunks/716.js +1 -0
- package/.next/server/chunks/7307.js +1 -1
- package/.next/server/chunks/7890.js +1 -1
- package/.next/server/chunks/7914.js +14 -0
- package/.next/server/chunks/{9093.js → 9962.js} +6 -6
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Lkq74HwcM_5v3YtKypHpV/_buildManifest.js +1 -0
- package/.next/static/chunks/{1142.8248bfb76c695146.js → 1142.463325d879ef45f8.js} +1 -1
- package/.next/static/chunks/{6859.bacad166ee995fe0.js → 2097.6c701b89fd60f2f1.js} +1 -1
- package/.next/static/chunks/{2160.e38d781fd5c4cde0.js → 2160.30eac4452ed5402b.js} +1 -1
- package/.next/static/chunks/363642f4-dc35a7a659350f8e.js +1 -0
- package/.next/static/chunks/4936-9558484c46c3ecc8.js +1 -0
- package/.next/static/chunks/6280-513d6c4ef41995b8.js +173 -0
- package/.next/static/chunks/{6586.395c3c72e985da50.js → 6586.8c2a88c2a55300d2.js} +1 -1
- package/.next/static/chunks/{6686.796c782c33ab8ca9.js → 6686.ba6a712accb45472.js} +1 -1
- package/.next/static/chunks/{9240.d38ddbe94e0bf128.js → 6859.8c142424e1250280.js} +1 -1
- package/.next/static/chunks/90542734.ecc36ada79772529.js +1 -0
- package/.next/static/chunks/9901-eb16ea7a0737ac0d.js +281 -0
- package/.next/static/chunks/app/_global-error/page-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/agent/runtime/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/apps/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/auth/totp/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/harness/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/home/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/cancel/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/gateway-status/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/gateway-token/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/project/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/projects/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/session-ids/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/im/turn/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/images/upload/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/internal/runtime/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/memory/dismiss/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/memory/promote/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/models/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/plot-kernels/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/plot-kernels/save/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/plot-kernels/status/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/plot-kernels/stop/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/projects/browse/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/projects/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/search/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/kernel-state/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/plan/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/new/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/settings/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/skills/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/soul/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/subagents/status/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/api/version/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/favicon.ico/route-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/app/login/page-41e9f7563ddb72eb.js +1 -0
- package/.next/static/chunks/app/page-bf65dd6dfaa85067.js +45 -0
- package/.next/static/chunks/app/smoke/{page-d1be0dc9ec4396ba.js → page-06d3574061580f4b.js} +2 -2
- package/.next/static/chunks/{framework-711ef29bc66f648c.js → framework-594babcea68f40f6.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5a6ec8da473b874d.js +1 -0
- package/.next/static/chunks/webpack-b13282f72690ef5e.js +1 -0
- package/.next/static/css/c9f1fab452e74e95.css +1 -0
- package/package.json +4 -1
- package/.next/server/chunks/7601.js +0 -163
- package/.next/static/chunks/363642f4-043c1475ab9af70e.js +0 -1
- package/.next/static/chunks/8194-4a4c6b44dcfc55b3.js +0 -173
- package/.next/static/chunks/90542734.dc1a2723e4f6affb.js +0 -1
- package/.next/static/chunks/9901-54dfe54ff40a31d4.js +0 -278
- package/.next/static/chunks/app/_global-error/page-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/agent/runtime/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/apps/[id]/[[...path]]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/apps/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/harness/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/home/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/cancel/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/gateway-status/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/gateway-token/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/project/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/projects/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/session-ids/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/im/turn/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/images/upload/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/internal/runtime/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/memory/dismiss/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/memory/promote/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/models/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/plot-kernels/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/plot-kernels/save/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/plot-kernels/status/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/plot-kernels/stop/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/projects/browse/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/projects/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/search/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/plan/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/sessions/new/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/settings/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/skills/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/soul/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/subagents/status/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/api/version/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/favicon.ico/route-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/app/login/page-81d155b341701fb2.js +0 -1
- package/.next/static/chunks/app/page-a113a7a2f2a36013.js +0 -31
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4d80c4980a021c05.js +0 -1
- package/.next/static/chunks/webpack-b7b531a4a8559f64.js +0 -1
- package/.next/static/css/d6038901c29122c8.css +0 -1
- package/.next/static/fHPCy5VWfMn3HKqoTaWk-/_buildManifest.js +0 -1
- /package/.next/static/{fHPCy5VWfMn3HKqoTaWk- → Lkq74HwcM_5v3YtKypHpV}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=4013,exports.ids=[4013],exports.modules={34013:(a,b,c)=>{c.d(b,{Dm:()=>e});var d=c(55511);function e(a,b){if("string"!=typeof a||"string"!=typeof b)throw Error("Illegal arguments: "+typeof a+", "+typeof b);return 60===b.length&&function(a,b){for(var c=a.length^b.length,d=0;d<a.length;++d)c|=a.charCodeAt(d)^b.charCodeAt(d);return 0===c}(function(a,b){if(void 0===b&&(b=k),"number"==typeof b&&(b=function(a){if("number"!=typeof(a=a||k))throw Error("Illegal arguments: "+typeof a+", undefined");a<4?a=4:a>31&&(a=31);var b=[];return b.push("$2b$"),a<10&&b.push("0"),b.push(a.toString()),b.push("$"),b.push(i(function(a){try{return crypto.getRandomValues(new Uint8Array(a))}catch{}try{return d.randomBytes(a)}catch{}!0;throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative")}(j),j)),b.join("")}(b)),"string"!=typeof a||"string"!=typeof b)throw Error("Illegal arguments: "+typeof a+", "+typeof b);return function(a,b,c,d){if("string"!=typeof a||"string"!=typeof b){if(e=Error("Invalid string / salt: Not a string"),c)return void f(c.bind(this,e));throw e}if("$"!==b.charAt(0)||"2"!==b.charAt(1)){if(e=Error("Invalid salt version: "+b.substring(0,2)),c)return void f(c.bind(this,e));throw e}if("$"===b.charAt(2))g="\0",k=3;else{if("a"!==(g=b.charAt(2))&&"b"!==g&&"y"!==g||"$"!==b.charAt(3)){if(e=Error("Invalid salt revision: "+b.substring(2,4)),c)return void f(c.bind(this,e));throw e}k=4}if(b.charAt(k+2)>"$"){if(e=Error("Missing salt rounds"),c)return void f(c.bind(this,e));throw e}var e,g,k,l=10*parseInt(b.substring(k,k+1),10)+parseInt(b.substring(k+1,k+2),10),m=b.substring(k+3,k+25),o=function(a){for(var b,c,d=0,e=Array(function(a){for(var b=0,c=0,d=0;d<a.length;++d)(c=a.charCodeAt(d))<128?b+=1:c<2048?b+=2:(64512&c)==55296&&(64512&a.charCodeAt(d+1))==56320?(++d,b+=4):b+=3;return b}(a)),f=0,g=a.length;f<g;++f)(b=a.charCodeAt(f))<128?e[d++]=b:(b<2048?e[d++]=b>>6|192:((64512&b)==55296&&(64512&(c=a.charCodeAt(f+1)))==56320?(b=65536+((1023&b)<<10)+(1023&c),++f,e[d++]=b>>18|240,e[d++]=b>>12&63|128):e[d++]=b>>12|224,e[d++]=b>>6&63|128),e[d++]=63&b|128);return e}(a+=g>="a"?"\0":""),p=function(a,b){var c,d,e,f,g,i=0,j=a.length,k=0,l=[];if(b<=0)throw Error("Illegal len: "+b);for(;i<j-1&&k<b&&(c=(g=a.charCodeAt(i++))<h.length?h[g]:-1,d=(g=a.charCodeAt(i++))<h.length?h[g]:-1,-1!=c&&-1!=d)&&(f=c<<2>>>0|(48&d)>>4,l.push(String.fromCharCode(f)),!(++k>=b||i>=j||-1==(e=(g=a.charCodeAt(i++))<h.length?h[g]:-1)||(f=(15&d)<<4>>>0|(60&e)>>2,l.push(String.fromCharCode(f)),++k>=b||i>=j)));){;f=(3&e)<<6>>>0|((g=a.charCodeAt(i++))<h.length?h[g]:-1),l.push(String.fromCharCode(f)),++k}var m=[];for(i=0;i<k;i++)m.push(l[i].charCodeAt(0));return m}(m,j);function q(a){var b=[];return b.push("$2"),g>="a"&&b.push(g),b.push("$"),l<10&&b.push("0"),b.push(l.toString()),b.push("$"),b.push(i(p,p.length)),b.push(i(a,4*n.length-1)),b.join("")}if(void 0===c)return q(r(o,p,l));r(o,p,l,function(a,b){a?c(a,null):c(null,q(b))},d)}(a,b)}(a,b.substring(0,b.length-31)),b)}var f="function"==typeof setImmediate?setImmediate:"object"==typeof scheduler&&"function"==typeof scheduler.postTask?scheduler.postTask.bind(scheduler):setTimeout,g="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),h=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1];function i(a,b){var c,d,e=0,f=[];if(b<=0||b>a.length)throw Error("Illegal len: "+b);for(;e<b;){if(c=255&a[e++],f.push(g[c>>2&63]),c=(3&c)<<4,e>=b||(c|=(d=255&a[e++])>>4&15,f.push(g[63&c]),c=(15&d)<<2,e>=b)){f.push(g[63&c]);break}c|=(d=255&a[e++])>>6&3,f.push(g[63&c]),f.push(g[63&d])}return f.join("")}var j=16,k=10,l=[0x243f6a88,0x85a308d3,0x13198a2e,0x3707344,0xa4093822,0x299f31d0,0x82efa98,0xec4e6c89,0x452821e6,0x38d01377,0xbe5466cf,0x34e90c6c,0xc0ac29b7,0xc97c50dd,0x3f84d5b5,0xb5470917,0x9216d5d9,0x8979fb1b],m=[0xd1310ba6,0x98dfb5ac,0x2ffd72db,0xd01adfb7,0xb8e1afed,0x6a267e96,0xba7c9045,0xf12c7f99,0x24a19947,0xb3916cf7,0x801f2e2,0x858efc16,0x636920d8,0x71574e69,0xa458fea3,0xf4933d7e,0xd95748f,0x728eb658,0x718bcd58,0x82154aee,0x7b54a41d,0xc25a59b5,0x9c30d539,0x2af26013,0xc5d1b023,0x286085f0,0xca417918,0xb8db38ef,0x8e79dcb0,0x603a180e,0x6c9e0e8b,0xb01e8a3e,0xd71577c1,0xbd314b27,0x78af2fda,0x55605c60,0xe65525f3,0xaa55ab94,0x57489862,0x63e81440,0x55ca396a,0x2aab10b6,0xb4cc5c34,0x1141e8ce,0xa15486af,0x7c72e993,0xb3ee1411,0x636fbc2a,0x2ba9c55d,0x741831f6,0xce5c3e16,0x9b87931e,0xafd6ba33,0x6c24cf5c,0x7a325381,0x28958677,0x3b8f4898,0x6b4bb9af,0xc4bfe81b,0x66282193,0x61d809cc,0xfb21a991,0x487cac60,0x5dec8032,0xef845d5d,0xe98575b1,0xdc262302,0xeb651b88,0x23893e81,0xd396acc5,0xf6d6ff3,0x83f44239,0x2e0b4482,0xa4842004,0x69c8f04a,0x9e1f9b5e,0x21c66842,0xf6e96c9a,0x670c9c61,0xabd388f0,0x6a51a0d2,0xd8542f68,0x960fa728,0xab5133a3,0x6eef0b6c,0x137a3be4,0xba3bf050,0x7efb2a98,0xa1f1651d,0x39af0176,0x66ca593e,0x82430e88,0x8cee8619,0x456f9fb4,0x7d84a5c3,0x3b8b5ebe,0xe06f75d8,0x85c12073,0x401a449f,0x56c16aa6,0x4ed3aa62,0x363f7706,0x1bfedf72,0x429b023d,0x37d0d724,0xd00a1248,0xdb0fead3,0x49f1c09b,0x75372c9,0x80991b7b,0x25d479d8,0xf6e8def7,0xe3fe501a,0xb6794c3b,0x976ce0bd,0x4c006ba,0xc1a94fb6,0x409f60c4,0x5e5c9ec2,0x196a2463,0x68fb6faf,0x3e6c53b5,0x1339b2eb,0x3b52ec6f,0x6dfc511f,0x9b30952c,0xcc814544,0xaf5ebd09,0xbee3d004,0xde334afd,0x660f2807,0x192e4bb3,0xc0cba857,0x45c8740f,0xd20b5f39,0xb9d3fbdb,0x5579c0bd,0x1a60320a,0xd6a100c6,0x402c7279,0x679f25fe,0xfb1fa3cc,0x8ea5e9f8,0xdb3222f8,0x3c7516df,0xfd616b15,0x2f501ec8,0xad0552ab,0x323db5fa,0xfd238760,0x53317b48,0x3e00df82,0x9e5c57bb,0xca6f8ca0,0x1a87562e,0xdf1769db,0xd542a8f6,0x287effc3,0xac6732c6,0x8c4f5573,0x695b27b0,0xbbca58c8,0xe1ffa35d,0xb8f011a0,0x10fa3d98,0xfd2183b8,0x4afcb56c,0x2dd1d35b,0x9a53e479,0xb6f84565,0xd28e49bc,0x4bfb9790,0xe1ddf2da,0xa4cb7e33,0x62fb1341,0xcee4c6e8,0xef20cada,0x36774c01,0xd07e9efe,0x2bf11fb4,0x95dbda4d,0xae909198,0xeaad8e71,0x6b93d5a0,0xd08ed1d0,0xafc725e0,0x8e3c5b2f,0x8e7594b7,0x8ff6e2fb,0xf2122b64,0x8888b812,0x900df01c,0x4fad5ea0,0x688fc31c,0xd1cff191,0xb3a8c1ad,0x2f2f2218,0xbe0e1777,0xea752dfe,0x8b021fa1,0xe5a0cc0f,0xb56f74e8,0x18acf3d6,0xce89e299,0xb4a84fe0,0xfd13e0b7,0x7cc43b81,0xd2ada8d9,0x165fa266,0x80957705,0x93cc7314,0x211a1477,0xe6ad2065,0x77b5fa86,0xc75442f5,0xfb9d35cf,0xebcdaf0c,0x7b3e89a0,0xd6411bd3,0xae1e7e49,2428461,0x2071b35e,0x226800bb,0x57b8e0af,0x2464369b,0xf009b91e,0x5563911d,0x59dfa6aa,0x78c14389,0xd95a537f,0x207d5ba2,0x2e5b9c5,0x83260376,0x6295cfa9,0x11c81968,0x4e734a41,0xb3472dca,0x7b14a94a,0x1b510052,0x9a532915,0xd60f573f,0xbc9bc6e4,0x2b60a476,0x81e67400,0x8ba6fb5,0x571be91f,0xf296ec6b,0x2a0dd915,0xb6636521,0xe7b9f9b6,0xff34052e,0xc5855664,0x53b02d5d,0xa99f8fa1,0x8ba4799,0x6e85076a,0x4b7a70e9,0xb5b32944,0xdb75092e,0xc4192623,290971e4,0x49a7df7d,0x9cee60b8,0x8fedb266,0xecaa8c71,0x699a17ff,0x5664526c,0xc2b19ee1,0x193602a5,0x75094c29,0xa0591340,0xe4183a3e,0x3f54989a,0x5b429d65,0x6b8fe4d6,0x99f73fd6,0xa1d29c07,0xefe830f5,0x4d2d38e6,0xf0255dc1,0x4cdd2086,0x8470eb26,0x6382e9c6,0x21ecc5e,0x9686b3f,0x3ebaefc9,0x3c971814,0x6b6a70a1,0x687f3584,0x52a0e286,0xb79c5305,0xaa500737,0x3e07841c,0x7fdeae5c,0x8e7d44ec,0x5716f2b8,0xb03ada37,0xf0500c0d,0xf01c1f04,0x200b3ff,0xae0cf51a,0x3cb574b2,0x25837a58,0xdc0921bd,0xd19113f9,0x7ca92ff6,0x94324773,0x22f54701,0x3ae5e581,0x37c2dadc,0xc8b57634,0x9af3dda7,0xa9446146,0xfd0030e,0xecc8c73e,0xa4751e41,0xe238cd99,0x3bea0e2f,0x3280bba1,0x183eb331,0x4e548b38,0x4f6db908,0x6f420d03,0xf60a04bf,0x2cb81290,0x24977c79,0x5679b072,0xbcaf89af,0xde9a771f,0xd9930810,0xb38bae12,0xdccf3f2e,0x5512721f,0x2e6b7124,0x501adde6,0x9f84cd87,0x7a584718,0x7408da17,0xbc9f9abc,0xe94b7d8c,0xec7aec3a,0xdb851dfa,0x63094366,0xc464c3d2,0xef1c1847,0x3215d908,0xdd433b37,0x24c2ba16,0x12a14d43,0x2a65c451,0x50940002,0x133ae4dd,0x71dff89e,0x10314e55,0x81ac77d6,0x5f11199b,0x43556f1,0xd7a3c76b,0x3c11183b,0x5924a509,0xf28fe6ed,0x97f1fbfa,0x9ebabf2c,0x1e153c6e,0x86e34570,0xeae96fb1,0x860e5e0a,0x5a3e2ab3,0x771fe71c,0x4e3d06fa,0x2965dcb9,0x99e71d0f,0x803e89d6,0x5266c825,0x2e4cc978,0x9c10b36a,0xc6150eba,0x94e2ea78,0xa5fc3c53,0x1e0a2df4,0xf2f74ea7,0x361d2b3d,0x1939260f,0x19c27960,0x5223a708,0xf71312b6,0xebadfe6e,0xeac31f66,0xe3bc4595,0xa67bc883,0xb17f37d1,0x18cff28,0xc332ddef,0xbe6c5aa5,0x65582185,0x68ab9802,0xeecea50f,0xdb2f953b,0x2aef7dad,0x5b6e2f84,0x1521b628,0x29076170,0xecdd4775,0x619f1510,0x13cca830,0xeb61bd96,0x334fe1e,0xaa0363cf,0xb5735c90,0x4c70a239,0xd59e9e0b,0xcbaade14,0xeecc86bc,0x60622ca7,0x9cab5cab,0xb2f3846e,0x648b1eaf,0x19bdf0ca,0xa02369b9,0x655abb50,0x40685a32,0x3c2ab4b3,0x319ee9d5,0xc021b8f7,0x9b540b19,0x875fa099,0x95f7997e,0x623d7da8,0xf837889a,0x97e32d77,0x11ed935f,0x16681281,0xe358829,0xc7e61fd6,0x96dedfa1,0x7858ba99,0x57f584a5,0x1b227263,0x9b83c3ff,0x1ac24696,0xcdb30aeb,0x532e3054,0x8fd948e4,0x6dbc3128,0x58ebf2ef,0x34c6ffea,0xfe28ed61,0xee7c3c73,0x5d4a14d9,0xe864b7e3,0x42105d14,0x203e13e0,0x45eee2b6,0xa3aaabea,0xdb6c4f15,0xfacb4fd0,0xc742f442,0xef6abbb5,0x654f3b1d,0x41cd2105,0xd81e799e,0x86854dc7,0xe44b476a,0x3d816250,0xcf62a1f2,0x5b8d2646,0xfc8883a0,0xc1c7b6a3,0x7f1524c3,0x69cb7492,0x47848a0b,0x5692b285,0x95bbf00,0xad19489d,0x1462b174,0x23820e00,0x58428d2a,0xc55f5ea,0x1dadf43e,0x233f7061,0x3372f092,0x8d937e41,0xd65fecf1,0x6c223bdb,0x7cde3759,0xcbee7460,0x4085f2a7,0xce77326e,0xa6078084,0x19f8509e,0xe8efd855,0x61d99735,0xa969a7aa,0xc50c06c2,0x5a04abfc,0x800bcadc,0x9e447a2e,0xc3453484,0xfdd56705,0xe1e9ec9,0xdb73dbd3,0x105588cd,0x675fda79,0xe3674340,0xc5c43465,0x713e38d8,0x3d28f89e,0xf16dff20,0x153e21e7,0x8fb03d4a,0xe6e39f2b,0xdb83adf7,0xe93d5a68,0x948140f7,0xf64c261c,0x94692934,0x411520f7,0x7602d4f7,0xbcf46b2e,0xd4a20068,0xd4082471,0x3320f46a,0x43b7d4b7,0x500061af,0x1e39f62e,0x97244546,0x14214f74,0xbf8b8840,0x4d95fc1d,0x96b591af,0x70f4ddd3,0x66a02f45,0xbfbc09ec,0x3bd9785,0x7fac6dd0,0x31cb8504,0x96eb27b3,0x55fd3941,0xda2547e6,0xabca0a9a,0x28507825,0x530429f4,0xa2c86da,0xe9b66dfb,0x68dc1462,0xd7486900,0x680ec0a4,0x27a18dee,0x4f3ffea2,0xe887ad8c,0xb58ce006,0x7af4d6b6,0xaace1e7c,0xd3375fec,0xce78a399,0x406b2a42,0x20fe9e35,0xd9f385b9,0xee39d7ab,0x3b124e8b,0x1dc9faf7,0x4b6d1856,0x26a36631,0xeae397b2,0x3a6efa74,0xdd5b4332,0x6841e7f7,0xca7820fb,0xfb0af54e,0xd8feb397,0x454056ac,0xba489527,0x55533a3a,0x20838d87,0xfe6ba9b7,0xd096954b,0x55a867bc,0xa1159a58,0xcca92963,0x99e1db33,0xa62a4a56,0x3f3125f9,0x5ef47e1c,0x9029317c,0xfdf8e802,0x4272f70,0x80bb155c,0x5282ce3,0x95c11548,0xe4c66d22,0x48c1133f,0xc70f86dc,0x7f9c9ee,0x41041f0f,0x404779a4,0x5d886e17,0x325f51eb,0xd59bc0d1,0xf2bcc18f,0x41113564,0x257b7834,0x602a9c60,0xdff8e8a3,0x1f636c1b,0xe12b4c2,0x2e1329e,0xaf664fd1,0xcad18115,0x6b2395e0,0x333e92e1,0x3b240b62,0xeebeb922,0x85b2a20e,0xe6ba0d99,0xde720c8c,0x2da2f728,0xd0127845,0x95b794fd,0x647d0862,0xe7ccf5f0,0x5449a36f,0x877d48fa,0xc39dfd27,0xf33e8d1e,0xa476341,0x992eff74,0x3a6f6eab,0xf4f8fd37,0xa812dc60,0xa1ebddf8,0x991be14c,0xdb6e6b0d,0xc67b5510,0x6d672c37,0x2765d43b,0xdcd0e804,0xf1290dc7,0xcc00ffa3,0xb5390f92,0x690fed0b,0x667b9ffb,0xcedb7d9c,0xa091cf0b,0xd9155ea3,0xbb132f88,0x515bad24,0x7b9479bf,0x763bd6eb,0x37392eb3,0xcc115979,0x8026e297,0xf42e312d,0x6842ada7,0xc66a2b3b,0x12754ccc,0x782ef11c,0x6a124237,0xb79251e7,0x6a1bbe6,0x4bfb6350,0x1a6b1018,0x11caedfa,0x3d25bdd8,0xe2e1c3c9,0x44421659,0xa121386,0xd90cec6e,0xd5abea2a,0x64af674e,0xda86a85f,0xbebfe988,0x64e4c3fe,0x9dbc8057,0xf0f7c086,0x60787bf8,0x6003604d,0xd1fd8346,0xf6381fb0,0x7745ae04,0xd736fccc,0x83426b33,0xf01eab71,0xb0804187,0x3c005e5f,0x77a057be,0xbde8ae24,0x55464299,0xbf582e61,0x4e58f48f,0xf2ddfda2,0xf474ef38,0x8789bdc2,0x5366f9c3,0xc8b38e74,0xb475f255,0x46fcd9b9,0x7aeb2661,0x8b1ddf84,0x846a0e79,0x915f95e2,0x466e598e,0x20b45770,0x8cd55591,0xc902de4c,0xb90bace1,0xbb8205d0,0x11a86248,0x7574a99e,0xb77f19b6,0xe0a9dc09,0x662d09a1,0xc4324633,0xe85a1f02,0x9f0be8c,0x4a99a025,0x1d6efe10,0x1ab93d1d,0xba5a4df,0xa186f20f,0x2868f169,0xdcb7da83,0x573906fe,0xa1e2ce9b,0x4fcd7f52,0x50115e01,0xa70683fa,0xa002b5c4,0xde6d027,0x9af88c27,0x773f8641,0xc3604c06,0x61a806b5,0xf0177a28,0xc0f586e0,6314154,0x30dc7d62,0x11e69ed7,0x2338ea63,0x53c2dd94,0xc2c21634,0xbbcbee56,0x90bcb6de,0xebfc7da1,0xce591d76,0x6f05e409,0x4b7c0188,0x39720a3d,0x7c927c24,0x86e3725f,0x724d9db9,0x1ac15bb4,0xd39eb8fc,0xed545578,0x8fca5b5,0xd83d7cd3,0x4dad0fc4,0x1e50ef5e,0xb161e6f8,0xa28514d9,0x6c51133c,0x6fd5c7e7,0x56e14ec4,0x362abfce,0xddc6c837,0xd79a3234,0x92638212,0x670efa8e,0x406000e0,0x3a39ce37,0xd3faf5cf,0xabc27737,0x5ac52d1b,0x5cb0679e,0x4fa33742,0xd3822740,0x99bc9bbe,0xd5118e9d,0xbf0f7315,0xd62d1c7e,0xc700c47b,0xb78c1b6b,0x21a19045,0xb26eb1be,0x6a366eb4,0x5748ab2f,0xbc946e79,0xc6a376d2,0x6549c2c8,0x530ff8ee,0x468dde7d,0xd5730a1d,0x4cd04dc6,0x2939bbdb,0xa9ba4650,0xac9526e8,0xbe5ee304,0xa1fad5f0,0x6a2d519a,0x63ef8ce2,0x9a86ee22,0xc089c2b8,0x43242ef6,0xa51e03aa,0x9cf2d0a4,0x83c061ba,0x9be96a4d,0x8fe51550,0xba645bd6,0x2826a2f9,0xa73a3ae1,0x4ba99586,0xef5562e9,0xc72fefd3,0xf752f7da,0x3f046f69,0x77fa0a59,0x80e4a915,0x87b08601,0x9b09e6ad,0x3b3ee593,0xe990fd5a,0x9e34d797,0x2cf0b7d9,0x22b8b51,0x96d5ac3a,0x17da67d,0xd1cf3ed6,0x7c7d2d28,0x1f9f25cf,0xadf2b89b,0x5ad6b472,0x5a88f54c,0xe029ac71,0xe019a5e6,0x47b0acfd,0xed93fa9b,0xe8d3c48d,0x283b57cc,0xf8d56629,0x79132e28,0x785f0191,0xed756055,0xf7960e44,0xe3d35e8c,0x15056dd4,0x88f46dba,0x3a16125,0x564f0bd,0xc3eb9e15,0x3c9057a2,0x97271aec,0xa93a072a,0x1b3f6d9b,0x1e6321f5,0xf59c66fb,0x26dcf319,0x7533d928,0xb155fdf5,0x3563482,0x8aba3cbb,0x28517711,0xc20ad9f8,0xabcc5167,0xccad925f,0x4de81751,0x3830dc8e,0x379d5862,0x9320f991,0xea7a90c2,0xfb3e7bce,0x5121ce64,0x774fbe32,0xa8b6e37e,0xc3293d46,0x48de5369,0x6413e680,0xa2ae0810,0xdd6db224,0x69852dfd,0x9072166,0xb39a460a,0x6445c0dd,0x586cdecf,0x1c20c8ae,0x5bbef7dd,0x1b588d40,0xccd2017f,0x6bb4e3bb,0xdda26a7e,0x3a59ff45,0x3e350a44,0xbcb4cdd5,0x72eacea8,0xfa6484bb,0x8d6612ae,0xbf3c6f47,0xd29be463,0x542f5d9e,0xaec2771b,0xf64e6370,0x740e0d8d,0xe75b1357,0xf8721671,0xaf537d5d,0x4040cb08,0x4eb4e2cc,0x34d2466a,0x115af84,3786409e3,0x95983a1d,0x6b89fb4,0xce6ea048,0x6f3f3b82,0x3520ab82,0x11a1d4b,0x277227f8,0x611560b1,0xe7933fdc,0xbb3a792b,0x344525bd,0xa08839e1,0x51ce794b,0x2f32c9b7,0xa01fbac9,0xe01cc87e,0xbcc7d1f6,0xcf0111c3,0xa1e8aac7,0x1a908749,0xd44fbd9a,0xd0dadecb,0xd50ada38,0x339c32a,0xc6913667,0x8df9317c,0xe0b12b4f,0xf79e59b7,0x43f5bb3a,0xf2d519ff,0x27d9459c,0xbf97222c,0x15e6fc2a,0xf91fc71,0x9b941525,0xfae59361,0xceb69ceb,0xc2a86459,0x12baa8d1,0xb6c1075e,0xe3056a0c,0x10d25065,0xcb03a442,0xe0ec6e0e,0x1698db3b,0x4c98a0be,0x3278e964,0x9f1f9532,0xe0d392df,0xd3a0342b,0x8971f21e,0x1b0a7441,0x4ba3348c,0xc5be7120,0xc37632d8,0xdf359f8d,0x9b992f2e,0xe60b6f47,0xfe3f11d,0xe54cda54,0x1edad891,0xce6279cf,0xcd3e7e6f,0x1618b166,0xfd2c1d05,0x848fd2c5,0xf6fb2299,0xf523f357,0xa6327623,0x93a83531,0x56cccd02,0xacf08162,0x5a75ebb5,0x6e163697,0x88d273cc,0xde966292,0x81b949d0,0x4c50901b,0x71c65614,0xe6c6c7bd,0x327a140a,0x45e1d006,0xc3f27b9a,0xc9aa53fd,0x62a80f00,0xbb25bfe2,0x35bdd2f6,0x71126905,0xb2040222,0xb6cbcf7c,0xcd769c2b,0x53113ec0,0x1640e3d3,0x38abbd60,0x2547adf0,0xba38209c,0xf746ce76,0x77afa1c5,0x20756060,0x85cbfe4e,0x8ae88dd8,0x7aaaf9b0,0x4cf9aa7e,0x1948c25c,0x2fb8a8c,0x1c36ae4,0xd6ebe1f9,0x90d4f869,0xa65cdea0,0x3f09252d,0xc208e69f,0xb74e6132,0xce77e25b,0x578fdfe3,0x3ac372e6],n=[0x4f727068,0x65616e42,0x65686f6c,0x64657253,0x63727944,0x6f756274];function o(a,b,c,d){var e=a[b],f=a[b+1];return e^=c[0],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[1],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[2],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[3],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[4],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[5],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[6],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[7],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[8],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[9],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[10],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[11],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[12],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[13],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[14],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[15],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[16],a[b]=f^c[17],a[b+1]=e,a}function p(a,b){for(var c=0,d=0;c<4;++c)d=d<<8|255&a[b],b=(b+1)%a.length;return{key:d,offp:b}}function q(a,b,c){for(var d,e=0,f=[0,0],g=b.length,h=c.length,i=0;i<g;i++)e=(d=p(a,e)).offp,b[i]=b[i]^d.key;for(i=0;i<g;i+=2)f=o(f,0,b,c),b[i]=f[0],b[i+1]=f[1];for(i=0;i<h;i+=2)f=o(f,0,b,c),c[i]=f[0],c[i+1]=f[1]}function r(a,b,c,d,e){var g,h,i=n.slice(),k=i.length;if(c<4||c>31){if(h=Error("Illegal number of rounds (4-31): "+c),d)return void f(d.bind(this,h));throw h}if(b.length!==j){if(h=Error("Illegal salt length: "+b.length+" != "+j),d)return void f(d.bind(this,h));throw h}c=1<<c>>>0;var r,s,t,u=0;function v(){if(e&&e(u/c),u<c)for(var g=Date.now();u<c&&(u+=1,q(a,r,s),q(b,r,s),!(Date.now()-g>100)););else{for(u=0;u<64;u++)for(t=0;t<k>>1;t++)o(i,t<<1,r,s);var h=[];for(u=0;u<k;u++)h.push((i[u]>>24&255)>>>0),h.push((i[u]>>16&255)>>>0),h.push((i[u]>>8&255)>>>0),h.push((255&i[u])>>>0);return d?void d(null,h):h}d&&f(v)}if("function"==typeof Int32Array?(r=new Int32Array(l),s=new Int32Array(m)):(r=l.slice(),s=m.slice()),!function(a,b,c,d){for(var e,f=0,g=[0,0],h=c.length,i=d.length,j=0;j<h;j++)f=(e=p(b,f)).offp,c[j]=c[j]^e.key;for(j=0,f=0;j<h;j+=2)f=(e=p(a,f)).offp,g[0]^=e.key,f=(e=p(a,f)).offp,g[1]^=e.key,g=o(g,0,c,d),c[j]=g[0],c[j+1]=g[1];for(j=0;j<i;j+=2)f=(e=p(a,f)).offp,g[0]^=e.key,f=(e=p(a,f)).offp,g[1]^=e.key,g=o(g,0,c,d),d[j]=g[0],d[j+1]=g[1]}(b,a,r,s),void 0!==d)v();else for(;;)if(void 0!==(g=v()))return g||[]}}};
|
|
1
|
+
"use strict";exports.id=4013,exports.ids=[4013],exports.modules={34013:(a,b,c)=>{c.d(b,{Dm:()=>f,Y8:()=>e});var d=c(55511);function e(a,b){if(void 0===b&&(b=l),"number"==typeof b&&(b=function(a){if("number"!=typeof(a=a||l))throw Error("Illegal arguments: "+typeof a+", undefined");a<4?a=4:a>31&&(a=31);var b=[];return b.push("$2b$"),a<10&&b.push("0"),b.push(a.toString()),b.push("$"),b.push(j(function(a){try{return crypto.getRandomValues(new Uint8Array(a))}catch{}try{return d.randomBytes(a)}catch{}!0;throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative")}(k),k)),b.join("")}(b)),"string"!=typeof a||"string"!=typeof b)throw Error("Illegal arguments: "+typeof a+", "+typeof b);return function(a,b,c,d){if("string"!=typeof a||"string"!=typeof b){if(e=Error("Invalid string / salt: Not a string"),c)return void g(c.bind(this,e));throw e}if("$"!==b.charAt(0)||"2"!==b.charAt(1)){if(e=Error("Invalid salt version: "+b.substring(0,2)),c)return void g(c.bind(this,e));throw e}if("$"===b.charAt(2))f="\0",h=3;else{if("a"!==(f=b.charAt(2))&&"b"!==f&&"y"!==f||"$"!==b.charAt(3)){if(e=Error("Invalid salt revision: "+b.substring(2,4)),c)return void g(c.bind(this,e));throw e}h=4}if(b.charAt(h+2)>"$"){if(e=Error("Missing salt rounds"),c)return void g(c.bind(this,e));throw e}var e,f,h,l=10*parseInt(b.substring(h,h+1),10)+parseInt(b.substring(h+1,h+2),10),m=b.substring(h+3,h+25),n=function(a){for(var b,c,d=0,e=Array(function(a){for(var b=0,c=0,d=0;d<a.length;++d)(c=a.charCodeAt(d))<128?b+=1:c<2048?b+=2:(64512&c)==55296&&(64512&a.charCodeAt(d+1))==56320?(++d,b+=4):b+=3;return b}(a)),f=0,g=a.length;f<g;++f)(b=a.charCodeAt(f))<128?e[d++]=b:(b<2048?e[d++]=b>>6|192:((64512&b)==55296&&(64512&(c=a.charCodeAt(f+1)))==56320?(b=65536+((1023&b)<<10)+(1023&c),++f,e[d++]=b>>18|240,e[d++]=b>>12&63|128):e[d++]=b>>12|224,e[d++]=b>>6&63|128),e[d++]=63&b|128);return e}(a+=f>="a"?"\0":""),p=function(a,b){var c,d,e,f,g,h=0,j=a.length,k=0,l=[];if(b<=0)throw Error("Illegal len: "+b);for(;h<j-1&&k<b&&(c=(g=a.charCodeAt(h++))<i.length?i[g]:-1,d=(g=a.charCodeAt(h++))<i.length?i[g]:-1,-1!=c&&-1!=d)&&(f=c<<2>>>0|(48&d)>>4,l.push(String.fromCharCode(f)),!(++k>=b||h>=j||-1==(e=(g=a.charCodeAt(h++))<i.length?i[g]:-1)||(f=(15&d)<<4>>>0|(60&e)>>2,l.push(String.fromCharCode(f)),++k>=b||h>=j)));){;f=(3&e)<<6>>>0|((g=a.charCodeAt(h++))<i.length?i[g]:-1),l.push(String.fromCharCode(f)),++k}var m=[];for(h=0;h<k;h++)m.push(l[h].charCodeAt(0));return m}(m,k);function q(a){var b=[];return b.push("$2"),f>="a"&&b.push(f),b.push("$"),l<10&&b.push("0"),b.push(l.toString()),b.push("$"),b.push(j(p,p.length)),b.push(j(a,4*o.length-1)),b.join("")}if(void 0===c)return q(s(n,p,l));s(n,p,l,function(a,b){a?c(a,null):c(null,q(b))},d)}(a,b)}function f(a,b){if("string"!=typeof a||"string"!=typeof b)throw Error("Illegal arguments: "+typeof a+", "+typeof b);return 60===b.length&&function(a,b){for(var c=a.length^b.length,d=0;d<a.length;++d)c|=a.charCodeAt(d)^b.charCodeAt(d);return 0===c}(e(a,b.substring(0,b.length-31)),b)}var g="function"==typeof setImmediate?setImmediate:"object"==typeof scheduler&&"function"==typeof scheduler.postTask?scheduler.postTask.bind(scheduler):setTimeout,h="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),i=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1];function j(a,b){var c,d,e=0,f=[];if(b<=0||b>a.length)throw Error("Illegal len: "+b);for(;e<b;){if(c=255&a[e++],f.push(h[c>>2&63]),c=(3&c)<<4,e>=b||(c|=(d=255&a[e++])>>4&15,f.push(h[63&c]),c=(15&d)<<2,e>=b)){f.push(h[63&c]);break}c|=(d=255&a[e++])>>6&3,f.push(h[63&c]),f.push(h[63&d])}return f.join("")}var k=16,l=10,m=[0x243f6a88,0x85a308d3,0x13198a2e,0x3707344,0xa4093822,0x299f31d0,0x82efa98,0xec4e6c89,0x452821e6,0x38d01377,0xbe5466cf,0x34e90c6c,0xc0ac29b7,0xc97c50dd,0x3f84d5b5,0xb5470917,0x9216d5d9,0x8979fb1b],n=[0xd1310ba6,0x98dfb5ac,0x2ffd72db,0xd01adfb7,0xb8e1afed,0x6a267e96,0xba7c9045,0xf12c7f99,0x24a19947,0xb3916cf7,0x801f2e2,0x858efc16,0x636920d8,0x71574e69,0xa458fea3,0xf4933d7e,0xd95748f,0x728eb658,0x718bcd58,0x82154aee,0x7b54a41d,0xc25a59b5,0x9c30d539,0x2af26013,0xc5d1b023,0x286085f0,0xca417918,0xb8db38ef,0x8e79dcb0,0x603a180e,0x6c9e0e8b,0xb01e8a3e,0xd71577c1,0xbd314b27,0x78af2fda,0x55605c60,0xe65525f3,0xaa55ab94,0x57489862,0x63e81440,0x55ca396a,0x2aab10b6,0xb4cc5c34,0x1141e8ce,0xa15486af,0x7c72e993,0xb3ee1411,0x636fbc2a,0x2ba9c55d,0x741831f6,0xce5c3e16,0x9b87931e,0xafd6ba33,0x6c24cf5c,0x7a325381,0x28958677,0x3b8f4898,0x6b4bb9af,0xc4bfe81b,0x66282193,0x61d809cc,0xfb21a991,0x487cac60,0x5dec8032,0xef845d5d,0xe98575b1,0xdc262302,0xeb651b88,0x23893e81,0xd396acc5,0xf6d6ff3,0x83f44239,0x2e0b4482,0xa4842004,0x69c8f04a,0x9e1f9b5e,0x21c66842,0xf6e96c9a,0x670c9c61,0xabd388f0,0x6a51a0d2,0xd8542f68,0x960fa728,0xab5133a3,0x6eef0b6c,0x137a3be4,0xba3bf050,0x7efb2a98,0xa1f1651d,0x39af0176,0x66ca593e,0x82430e88,0x8cee8619,0x456f9fb4,0x7d84a5c3,0x3b8b5ebe,0xe06f75d8,0x85c12073,0x401a449f,0x56c16aa6,0x4ed3aa62,0x363f7706,0x1bfedf72,0x429b023d,0x37d0d724,0xd00a1248,0xdb0fead3,0x49f1c09b,0x75372c9,0x80991b7b,0x25d479d8,0xf6e8def7,0xe3fe501a,0xb6794c3b,0x976ce0bd,0x4c006ba,0xc1a94fb6,0x409f60c4,0x5e5c9ec2,0x196a2463,0x68fb6faf,0x3e6c53b5,0x1339b2eb,0x3b52ec6f,0x6dfc511f,0x9b30952c,0xcc814544,0xaf5ebd09,0xbee3d004,0xde334afd,0x660f2807,0x192e4bb3,0xc0cba857,0x45c8740f,0xd20b5f39,0xb9d3fbdb,0x5579c0bd,0x1a60320a,0xd6a100c6,0x402c7279,0x679f25fe,0xfb1fa3cc,0x8ea5e9f8,0xdb3222f8,0x3c7516df,0xfd616b15,0x2f501ec8,0xad0552ab,0x323db5fa,0xfd238760,0x53317b48,0x3e00df82,0x9e5c57bb,0xca6f8ca0,0x1a87562e,0xdf1769db,0xd542a8f6,0x287effc3,0xac6732c6,0x8c4f5573,0x695b27b0,0xbbca58c8,0xe1ffa35d,0xb8f011a0,0x10fa3d98,0xfd2183b8,0x4afcb56c,0x2dd1d35b,0x9a53e479,0xb6f84565,0xd28e49bc,0x4bfb9790,0xe1ddf2da,0xa4cb7e33,0x62fb1341,0xcee4c6e8,0xef20cada,0x36774c01,0xd07e9efe,0x2bf11fb4,0x95dbda4d,0xae909198,0xeaad8e71,0x6b93d5a0,0xd08ed1d0,0xafc725e0,0x8e3c5b2f,0x8e7594b7,0x8ff6e2fb,0xf2122b64,0x8888b812,0x900df01c,0x4fad5ea0,0x688fc31c,0xd1cff191,0xb3a8c1ad,0x2f2f2218,0xbe0e1777,0xea752dfe,0x8b021fa1,0xe5a0cc0f,0xb56f74e8,0x18acf3d6,0xce89e299,0xb4a84fe0,0xfd13e0b7,0x7cc43b81,0xd2ada8d9,0x165fa266,0x80957705,0x93cc7314,0x211a1477,0xe6ad2065,0x77b5fa86,0xc75442f5,0xfb9d35cf,0xebcdaf0c,0x7b3e89a0,0xd6411bd3,0xae1e7e49,2428461,0x2071b35e,0x226800bb,0x57b8e0af,0x2464369b,0xf009b91e,0x5563911d,0x59dfa6aa,0x78c14389,0xd95a537f,0x207d5ba2,0x2e5b9c5,0x83260376,0x6295cfa9,0x11c81968,0x4e734a41,0xb3472dca,0x7b14a94a,0x1b510052,0x9a532915,0xd60f573f,0xbc9bc6e4,0x2b60a476,0x81e67400,0x8ba6fb5,0x571be91f,0xf296ec6b,0x2a0dd915,0xb6636521,0xe7b9f9b6,0xff34052e,0xc5855664,0x53b02d5d,0xa99f8fa1,0x8ba4799,0x6e85076a,0x4b7a70e9,0xb5b32944,0xdb75092e,0xc4192623,290971e4,0x49a7df7d,0x9cee60b8,0x8fedb266,0xecaa8c71,0x699a17ff,0x5664526c,0xc2b19ee1,0x193602a5,0x75094c29,0xa0591340,0xe4183a3e,0x3f54989a,0x5b429d65,0x6b8fe4d6,0x99f73fd6,0xa1d29c07,0xefe830f5,0x4d2d38e6,0xf0255dc1,0x4cdd2086,0x8470eb26,0x6382e9c6,0x21ecc5e,0x9686b3f,0x3ebaefc9,0x3c971814,0x6b6a70a1,0x687f3584,0x52a0e286,0xb79c5305,0xaa500737,0x3e07841c,0x7fdeae5c,0x8e7d44ec,0x5716f2b8,0xb03ada37,0xf0500c0d,0xf01c1f04,0x200b3ff,0xae0cf51a,0x3cb574b2,0x25837a58,0xdc0921bd,0xd19113f9,0x7ca92ff6,0x94324773,0x22f54701,0x3ae5e581,0x37c2dadc,0xc8b57634,0x9af3dda7,0xa9446146,0xfd0030e,0xecc8c73e,0xa4751e41,0xe238cd99,0x3bea0e2f,0x3280bba1,0x183eb331,0x4e548b38,0x4f6db908,0x6f420d03,0xf60a04bf,0x2cb81290,0x24977c79,0x5679b072,0xbcaf89af,0xde9a771f,0xd9930810,0xb38bae12,0xdccf3f2e,0x5512721f,0x2e6b7124,0x501adde6,0x9f84cd87,0x7a584718,0x7408da17,0xbc9f9abc,0xe94b7d8c,0xec7aec3a,0xdb851dfa,0x63094366,0xc464c3d2,0xef1c1847,0x3215d908,0xdd433b37,0x24c2ba16,0x12a14d43,0x2a65c451,0x50940002,0x133ae4dd,0x71dff89e,0x10314e55,0x81ac77d6,0x5f11199b,0x43556f1,0xd7a3c76b,0x3c11183b,0x5924a509,0xf28fe6ed,0x97f1fbfa,0x9ebabf2c,0x1e153c6e,0x86e34570,0xeae96fb1,0x860e5e0a,0x5a3e2ab3,0x771fe71c,0x4e3d06fa,0x2965dcb9,0x99e71d0f,0x803e89d6,0x5266c825,0x2e4cc978,0x9c10b36a,0xc6150eba,0x94e2ea78,0xa5fc3c53,0x1e0a2df4,0xf2f74ea7,0x361d2b3d,0x1939260f,0x19c27960,0x5223a708,0xf71312b6,0xebadfe6e,0xeac31f66,0xe3bc4595,0xa67bc883,0xb17f37d1,0x18cff28,0xc332ddef,0xbe6c5aa5,0x65582185,0x68ab9802,0xeecea50f,0xdb2f953b,0x2aef7dad,0x5b6e2f84,0x1521b628,0x29076170,0xecdd4775,0x619f1510,0x13cca830,0xeb61bd96,0x334fe1e,0xaa0363cf,0xb5735c90,0x4c70a239,0xd59e9e0b,0xcbaade14,0xeecc86bc,0x60622ca7,0x9cab5cab,0xb2f3846e,0x648b1eaf,0x19bdf0ca,0xa02369b9,0x655abb50,0x40685a32,0x3c2ab4b3,0x319ee9d5,0xc021b8f7,0x9b540b19,0x875fa099,0x95f7997e,0x623d7da8,0xf837889a,0x97e32d77,0x11ed935f,0x16681281,0xe358829,0xc7e61fd6,0x96dedfa1,0x7858ba99,0x57f584a5,0x1b227263,0x9b83c3ff,0x1ac24696,0xcdb30aeb,0x532e3054,0x8fd948e4,0x6dbc3128,0x58ebf2ef,0x34c6ffea,0xfe28ed61,0xee7c3c73,0x5d4a14d9,0xe864b7e3,0x42105d14,0x203e13e0,0x45eee2b6,0xa3aaabea,0xdb6c4f15,0xfacb4fd0,0xc742f442,0xef6abbb5,0x654f3b1d,0x41cd2105,0xd81e799e,0x86854dc7,0xe44b476a,0x3d816250,0xcf62a1f2,0x5b8d2646,0xfc8883a0,0xc1c7b6a3,0x7f1524c3,0x69cb7492,0x47848a0b,0x5692b285,0x95bbf00,0xad19489d,0x1462b174,0x23820e00,0x58428d2a,0xc55f5ea,0x1dadf43e,0x233f7061,0x3372f092,0x8d937e41,0xd65fecf1,0x6c223bdb,0x7cde3759,0xcbee7460,0x4085f2a7,0xce77326e,0xa6078084,0x19f8509e,0xe8efd855,0x61d99735,0xa969a7aa,0xc50c06c2,0x5a04abfc,0x800bcadc,0x9e447a2e,0xc3453484,0xfdd56705,0xe1e9ec9,0xdb73dbd3,0x105588cd,0x675fda79,0xe3674340,0xc5c43465,0x713e38d8,0x3d28f89e,0xf16dff20,0x153e21e7,0x8fb03d4a,0xe6e39f2b,0xdb83adf7,0xe93d5a68,0x948140f7,0xf64c261c,0x94692934,0x411520f7,0x7602d4f7,0xbcf46b2e,0xd4a20068,0xd4082471,0x3320f46a,0x43b7d4b7,0x500061af,0x1e39f62e,0x97244546,0x14214f74,0xbf8b8840,0x4d95fc1d,0x96b591af,0x70f4ddd3,0x66a02f45,0xbfbc09ec,0x3bd9785,0x7fac6dd0,0x31cb8504,0x96eb27b3,0x55fd3941,0xda2547e6,0xabca0a9a,0x28507825,0x530429f4,0xa2c86da,0xe9b66dfb,0x68dc1462,0xd7486900,0x680ec0a4,0x27a18dee,0x4f3ffea2,0xe887ad8c,0xb58ce006,0x7af4d6b6,0xaace1e7c,0xd3375fec,0xce78a399,0x406b2a42,0x20fe9e35,0xd9f385b9,0xee39d7ab,0x3b124e8b,0x1dc9faf7,0x4b6d1856,0x26a36631,0xeae397b2,0x3a6efa74,0xdd5b4332,0x6841e7f7,0xca7820fb,0xfb0af54e,0xd8feb397,0x454056ac,0xba489527,0x55533a3a,0x20838d87,0xfe6ba9b7,0xd096954b,0x55a867bc,0xa1159a58,0xcca92963,0x99e1db33,0xa62a4a56,0x3f3125f9,0x5ef47e1c,0x9029317c,0xfdf8e802,0x4272f70,0x80bb155c,0x5282ce3,0x95c11548,0xe4c66d22,0x48c1133f,0xc70f86dc,0x7f9c9ee,0x41041f0f,0x404779a4,0x5d886e17,0x325f51eb,0xd59bc0d1,0xf2bcc18f,0x41113564,0x257b7834,0x602a9c60,0xdff8e8a3,0x1f636c1b,0xe12b4c2,0x2e1329e,0xaf664fd1,0xcad18115,0x6b2395e0,0x333e92e1,0x3b240b62,0xeebeb922,0x85b2a20e,0xe6ba0d99,0xde720c8c,0x2da2f728,0xd0127845,0x95b794fd,0x647d0862,0xe7ccf5f0,0x5449a36f,0x877d48fa,0xc39dfd27,0xf33e8d1e,0xa476341,0x992eff74,0x3a6f6eab,0xf4f8fd37,0xa812dc60,0xa1ebddf8,0x991be14c,0xdb6e6b0d,0xc67b5510,0x6d672c37,0x2765d43b,0xdcd0e804,0xf1290dc7,0xcc00ffa3,0xb5390f92,0x690fed0b,0x667b9ffb,0xcedb7d9c,0xa091cf0b,0xd9155ea3,0xbb132f88,0x515bad24,0x7b9479bf,0x763bd6eb,0x37392eb3,0xcc115979,0x8026e297,0xf42e312d,0x6842ada7,0xc66a2b3b,0x12754ccc,0x782ef11c,0x6a124237,0xb79251e7,0x6a1bbe6,0x4bfb6350,0x1a6b1018,0x11caedfa,0x3d25bdd8,0xe2e1c3c9,0x44421659,0xa121386,0xd90cec6e,0xd5abea2a,0x64af674e,0xda86a85f,0xbebfe988,0x64e4c3fe,0x9dbc8057,0xf0f7c086,0x60787bf8,0x6003604d,0xd1fd8346,0xf6381fb0,0x7745ae04,0xd736fccc,0x83426b33,0xf01eab71,0xb0804187,0x3c005e5f,0x77a057be,0xbde8ae24,0x55464299,0xbf582e61,0x4e58f48f,0xf2ddfda2,0xf474ef38,0x8789bdc2,0x5366f9c3,0xc8b38e74,0xb475f255,0x46fcd9b9,0x7aeb2661,0x8b1ddf84,0x846a0e79,0x915f95e2,0x466e598e,0x20b45770,0x8cd55591,0xc902de4c,0xb90bace1,0xbb8205d0,0x11a86248,0x7574a99e,0xb77f19b6,0xe0a9dc09,0x662d09a1,0xc4324633,0xe85a1f02,0x9f0be8c,0x4a99a025,0x1d6efe10,0x1ab93d1d,0xba5a4df,0xa186f20f,0x2868f169,0xdcb7da83,0x573906fe,0xa1e2ce9b,0x4fcd7f52,0x50115e01,0xa70683fa,0xa002b5c4,0xde6d027,0x9af88c27,0x773f8641,0xc3604c06,0x61a806b5,0xf0177a28,0xc0f586e0,6314154,0x30dc7d62,0x11e69ed7,0x2338ea63,0x53c2dd94,0xc2c21634,0xbbcbee56,0x90bcb6de,0xebfc7da1,0xce591d76,0x6f05e409,0x4b7c0188,0x39720a3d,0x7c927c24,0x86e3725f,0x724d9db9,0x1ac15bb4,0xd39eb8fc,0xed545578,0x8fca5b5,0xd83d7cd3,0x4dad0fc4,0x1e50ef5e,0xb161e6f8,0xa28514d9,0x6c51133c,0x6fd5c7e7,0x56e14ec4,0x362abfce,0xddc6c837,0xd79a3234,0x92638212,0x670efa8e,0x406000e0,0x3a39ce37,0xd3faf5cf,0xabc27737,0x5ac52d1b,0x5cb0679e,0x4fa33742,0xd3822740,0x99bc9bbe,0xd5118e9d,0xbf0f7315,0xd62d1c7e,0xc700c47b,0xb78c1b6b,0x21a19045,0xb26eb1be,0x6a366eb4,0x5748ab2f,0xbc946e79,0xc6a376d2,0x6549c2c8,0x530ff8ee,0x468dde7d,0xd5730a1d,0x4cd04dc6,0x2939bbdb,0xa9ba4650,0xac9526e8,0xbe5ee304,0xa1fad5f0,0x6a2d519a,0x63ef8ce2,0x9a86ee22,0xc089c2b8,0x43242ef6,0xa51e03aa,0x9cf2d0a4,0x83c061ba,0x9be96a4d,0x8fe51550,0xba645bd6,0x2826a2f9,0xa73a3ae1,0x4ba99586,0xef5562e9,0xc72fefd3,0xf752f7da,0x3f046f69,0x77fa0a59,0x80e4a915,0x87b08601,0x9b09e6ad,0x3b3ee593,0xe990fd5a,0x9e34d797,0x2cf0b7d9,0x22b8b51,0x96d5ac3a,0x17da67d,0xd1cf3ed6,0x7c7d2d28,0x1f9f25cf,0xadf2b89b,0x5ad6b472,0x5a88f54c,0xe029ac71,0xe019a5e6,0x47b0acfd,0xed93fa9b,0xe8d3c48d,0x283b57cc,0xf8d56629,0x79132e28,0x785f0191,0xed756055,0xf7960e44,0xe3d35e8c,0x15056dd4,0x88f46dba,0x3a16125,0x564f0bd,0xc3eb9e15,0x3c9057a2,0x97271aec,0xa93a072a,0x1b3f6d9b,0x1e6321f5,0xf59c66fb,0x26dcf319,0x7533d928,0xb155fdf5,0x3563482,0x8aba3cbb,0x28517711,0xc20ad9f8,0xabcc5167,0xccad925f,0x4de81751,0x3830dc8e,0x379d5862,0x9320f991,0xea7a90c2,0xfb3e7bce,0x5121ce64,0x774fbe32,0xa8b6e37e,0xc3293d46,0x48de5369,0x6413e680,0xa2ae0810,0xdd6db224,0x69852dfd,0x9072166,0xb39a460a,0x6445c0dd,0x586cdecf,0x1c20c8ae,0x5bbef7dd,0x1b588d40,0xccd2017f,0x6bb4e3bb,0xdda26a7e,0x3a59ff45,0x3e350a44,0xbcb4cdd5,0x72eacea8,0xfa6484bb,0x8d6612ae,0xbf3c6f47,0xd29be463,0x542f5d9e,0xaec2771b,0xf64e6370,0x740e0d8d,0xe75b1357,0xf8721671,0xaf537d5d,0x4040cb08,0x4eb4e2cc,0x34d2466a,0x115af84,3786409e3,0x95983a1d,0x6b89fb4,0xce6ea048,0x6f3f3b82,0x3520ab82,0x11a1d4b,0x277227f8,0x611560b1,0xe7933fdc,0xbb3a792b,0x344525bd,0xa08839e1,0x51ce794b,0x2f32c9b7,0xa01fbac9,0xe01cc87e,0xbcc7d1f6,0xcf0111c3,0xa1e8aac7,0x1a908749,0xd44fbd9a,0xd0dadecb,0xd50ada38,0x339c32a,0xc6913667,0x8df9317c,0xe0b12b4f,0xf79e59b7,0x43f5bb3a,0xf2d519ff,0x27d9459c,0xbf97222c,0x15e6fc2a,0xf91fc71,0x9b941525,0xfae59361,0xceb69ceb,0xc2a86459,0x12baa8d1,0xb6c1075e,0xe3056a0c,0x10d25065,0xcb03a442,0xe0ec6e0e,0x1698db3b,0x4c98a0be,0x3278e964,0x9f1f9532,0xe0d392df,0xd3a0342b,0x8971f21e,0x1b0a7441,0x4ba3348c,0xc5be7120,0xc37632d8,0xdf359f8d,0x9b992f2e,0xe60b6f47,0xfe3f11d,0xe54cda54,0x1edad891,0xce6279cf,0xcd3e7e6f,0x1618b166,0xfd2c1d05,0x848fd2c5,0xf6fb2299,0xf523f357,0xa6327623,0x93a83531,0x56cccd02,0xacf08162,0x5a75ebb5,0x6e163697,0x88d273cc,0xde966292,0x81b949d0,0x4c50901b,0x71c65614,0xe6c6c7bd,0x327a140a,0x45e1d006,0xc3f27b9a,0xc9aa53fd,0x62a80f00,0xbb25bfe2,0x35bdd2f6,0x71126905,0xb2040222,0xb6cbcf7c,0xcd769c2b,0x53113ec0,0x1640e3d3,0x38abbd60,0x2547adf0,0xba38209c,0xf746ce76,0x77afa1c5,0x20756060,0x85cbfe4e,0x8ae88dd8,0x7aaaf9b0,0x4cf9aa7e,0x1948c25c,0x2fb8a8c,0x1c36ae4,0xd6ebe1f9,0x90d4f869,0xa65cdea0,0x3f09252d,0xc208e69f,0xb74e6132,0xce77e25b,0x578fdfe3,0x3ac372e6],o=[0x4f727068,0x65616e42,0x65686f6c,0x64657253,0x63727944,0x6f756274];function p(a,b,c,d){var e=a[b],f=a[b+1];return e^=c[0],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[1],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[2],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[3],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[4],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[5],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[6],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[7],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[8],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[9],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[10],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[11],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[12],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[13],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[14],f^=(d[e>>>24]+d[256|e>>16&255]^d[512|e>>8&255])+d[768|255&e]^c[15],e^=(d[f>>>24]+d[256|f>>16&255]^d[512|f>>8&255])+d[768|255&f]^c[16],a[b]=f^c[17],a[b+1]=e,a}function q(a,b){for(var c=0,d=0;c<4;++c)d=d<<8|255&a[b],b=(b+1)%a.length;return{key:d,offp:b}}function r(a,b,c){for(var d,e=0,f=[0,0],g=b.length,h=c.length,i=0;i<g;i++)e=(d=q(a,e)).offp,b[i]=b[i]^d.key;for(i=0;i<g;i+=2)f=p(f,0,b,c),b[i]=f[0],b[i+1]=f[1];for(i=0;i<h;i+=2)f=p(f,0,b,c),c[i]=f[0],c[i+1]=f[1]}function s(a,b,c,d,e){var f,h,i=o.slice(),j=i.length;if(c<4||c>31){if(h=Error("Illegal number of rounds (4-31): "+c),d)return void g(d.bind(this,h));throw h}if(b.length!==k){if(h=Error("Illegal salt length: "+b.length+" != "+k),d)return void g(d.bind(this,h));throw h}c=1<<c>>>0;var l,s,t,u=0;function v(){if(e&&e(u/c),u<c)for(var f=Date.now();u<c&&(u+=1,r(a,l,s),r(b,l,s),!(Date.now()-f>100)););else{for(u=0;u<64;u++)for(t=0;t<j>>1;t++)p(i,t<<1,l,s);var h=[];for(u=0;u<j;u++)h.push((i[u]>>24&255)>>>0),h.push((i[u]>>16&255)>>>0),h.push((i[u]>>8&255)>>>0),h.push((255&i[u])>>>0);return d?void d(null,h):h}d&&g(v)}if("function"==typeof Int32Array?(l=new Int32Array(m),s=new Int32Array(n)):(l=m.slice(),s=n.slice()),!function(a,b,c,d){for(var e,f=0,g=[0,0],h=c.length,i=d.length,j=0;j<h;j++)f=(e=q(b,f)).offp,c[j]=c[j]^e.key;for(j=0,f=0;j<h;j+=2)f=(e=q(a,f)).offp,g[0]^=e.key,f=(e=q(a,f)).offp,g[1]^=e.key,g=p(g,0,c,d),c[j]=g[0],c[j+1]=g[1];for(j=0;j<i;j+=2)f=(e=q(a,f)).offp,g[0]^=e.key,f=(e=q(a,f)).offp,g[1]^=e.key,g=p(g,0,c,d),d[j]=g[0],d[j+1]=g[1]}(b,a,l,s),void 0!==d)v();else for(;;)if(void 0!==(f=v()))return f||[]}}};
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
exports.id=6429,exports.ids=[6429],exports.modules={3867:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H:()=>t});var e=c(28802),f=c(75430),g=c(15193),h=c(79748),i=c(9774),j=c(74788),k=c(39773),l=a([e,f,i,j]);[e,f,i,j]=l.then?(await l)():l;let u=["Use kernel_plot_run for iterative R/Python Workbench analysis when data should stay in memory across turns.","When a project default R/Python kernel is configured, use it for bioinformatics analysis unless the user requests a different runtime.",'Use kernel_plot_run with runtime: "worker" for one-shot reproducible scripts.',"kernel-lite memory persistence: packages imported and variables assigned in one kernel_plot_run call remain available in all subsequent kernel-lite calls. Do NOT re-import the same packages (import scanpy, library(Seurat), etc.) in every call — import each package only once, in the first run that needs it.","kernel-lite data persistence: large objects loaded (sc.read, readRDS, qread, pd.read_csv, etc.) stay in memory across turns. Before reloading data, check if the object still exists: Python: if 'adata' not in globals(): adata = sc.read(...). R: if (!exists('seurat_obj')) seurat_obj <- readRDS(...). Print a message when reusing in-memory data vs reloading.","Do NOT blindly reload h5ad/rds/qs files at the top of every call — this wastes time and memory. Only reload when the object is genuinely missing or the user explicitly asks for a fresh load.","In kernel_plot_run code, save every output under WARMPLOT_OUTPUT_DIR.","Do not rely on notebook display; explicitly save PNG/JPEG/WebP previews plus any SVG, PDF, HTML, CSV, TSV, or JSON files.","When an image artifact is produced, the web chat renders the returned image inline; do not claim images cannot be displayed.","Do not use open, xdg-open, or other desktop viewers to show plots; return or reference the saved preview image path instead.","If a plot also has a PDF/SVG version, include the PNG/JPEG/WebP preview path in the final answer, not only the PDF/SVG path.","After a failed kernel_plot_run, inspect stderr and rerun only the minimal corrected code.","Do not use bash to run Python or R scripts (conda run python, Rscript, etc.) when kernel_plot_run is available. Always prefer kernel_plot_run for analysis code.","Use kernel_plot_stop when the user is done with a large object or asks to free memory."],v=["Use kernel_plot_render for one-shot iterative plot previews — images render inline in chat.","Use kernel_plot_run when plots depend on objects already in warm kernel memory.","Use kernel_plot_run for final artifact saves (PDF, SVG, data files).","In kernel_plot_render code, call render_plot() to mark which plot to preview.","For ggplot2 (R) and plt.show() (Python), previews are auto-captured as a convenience.","For non-ggplot2 R plots (base, ComplexHeatmap), you MUST call render_plot() explicitly.","For Python plots without plt.show(), you MUST call render_plot() explicitly.","After a failed render, inspect stderr and rerun only the minimal corrected code."],w=["Use kernel_plot_inspect after resuming a workbench session, after a suspected kernel restart, or when unsure whether objects like adata/seurat_obj are still in memory.","If inspect shows a required large object is present, reuse it and do not reload the source file.","If inspect shows the required object is missing, reload only that missing object from the known source path, then continue."],x=null,y=null;function m(){let a=(0,i.cV)().plotIdleTimeoutMs;if(x&&y===a)return x;let b=x;return y=a,x=Promise.resolve((0,g.n6)({policy:{idleTimeoutMs:a}})),b?.then(a=>a.dispose()).catch(()=>{}),x}function n(a){return a.sessionManager.getSessionId()}function o(a,b){if(a.kernelId)return a.kernelId;let c=n(b),d=(0,j.U5)(c);return d?.initialKernelId}function p(a,b=4e3){let c=a??"";return c.length<=b?c:`${c.slice(0,b)}
|
|
2
|
+
[truncated ${c.length-b} chars]`}function q(a){return 0===a.length?["artifacts: none"]:["artifacts:",...a.map(a=>`- ${a.path}`)]}async function r(a){let b=a.find(a=>"image"===a.kind&&("image/png"===a.mimeType||"image/jpeg"===a.mimeType||"image/webp"===a.mimeType));if(b)try{let a=await (0,h.stat)(b.path);if(!a.isFile()||a.size>2097152)return;let c=await (0,h.readFile)(b.path);return{type:"image",data:c.toString("base64"),mimeType:b.mimeType}}catch{return}}function s(a){let b=a.indexOf("WORKBENCH_INSPECT_BEGIN"),c=a.indexOf("WORKBENCH_INSPECT_END");if(b<0||c<0||c<=b)return[];let d=a.slice(b+23,c).trim();return d?d.split(/\r?\n/).map(a=>{let[b="",c="",d="",e=""]=a.split(" ");return{name:b,type:c,shape:d||null,attrs:e||null}}).filter(a=>a.name):[]}function t(a){a.registerTool((0,f.defineTool)({name:"kernel_plot_run",label:"Workbench Run",description:"Execute short R or Python Workbench code in a warm kernel-lite runtime or one-shot worker and archive generated artifacts.",promptSnippet:"Run short R/Python Workbench code in a warm kernel and save artifacts to disk.",promptGuidelines:u,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")],{description:"Runtime language for the plotting code."}),code:e.Type.String({description:"R or Python code. Save files under WARMPLOT_OUTPUT_DIR or PI_KERNEL_PLOT_OUTPUT_DIR."}),runtime:e.Type.Optional(e.Type.Union([e.Type.Literal("kernel-lite"),e.Type.Literal("worker")],{description:"kernel-lite keeps language state warm; worker runs a one-shot script."})),kernelId:e.Type.Optional(e.Type.String({description:"Optional configured Workbench kernel id to use for this run."})),title:e.Type.Optional(e.Type.String({description:"Short title for the run."})),timeoutMs:e.Type.Optional(e.Type.Number({description:"Execution timeout in milliseconds."}))}),async execute(a,b,c,d,e){let f,g,h,i=await m(),k=await i.run({cwd:e.cwd,ownerId:n(e),language:b.language,runtime:function(a,b){if(a.runtime)return a.runtime;let c=n(b),d=(0,j.U5)(c);if(d?.sessionKind==="workbench")return"kernel-lite"}(b,e),sessionKernelId:o(b,e),code:b.code,title:b.title,timeoutMs:b.timeoutMs,signal:c}),l=[{type:"text",text:(f=[`kernel_plot_run ${k.status}`,`run_id: ${k.runId}`,`runtime: ${k.runtime}`,`script: ${k.scriptPath}`,`stdout: ${k.stdoutPath}`,`stderr: ${k.stderrPath}`],g=p(k.stdout,1200).trim(),h=p(k.stderr,1200).trim(),g&&f.push("stdout:",g),h&&f.push("stderr:",h),k.error&&f.push(`error: ${k.error}`),f.push(...q(k.artifacts)),f.join("\n"))}],s=await r(k.artifacts);return s&&l.push(s),{content:l,details:{schema:"kernel-plot.result.v1",kind:"run",run:{runId:k.runId,status:k.status,language:k.language,runtime:k.runtime,title:k.title,stdoutPath:k.stdoutPath,stderrPath:k.stderrPath,scriptPath:k.scriptPath,outputDir:k.outputDir,stdoutPreview:p(k.stdout),stderrPreview:p(k.stderr),error:k.error},artifacts:k.artifacts,nextAction:"succeeded"===k.status?"Inspect the artifact paths or continue iterating with kernel_plot_run.":"Inspect stderr and rerun only the minimal corrected code."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_render",label:"Workbench Render",description:"Quick one-shot R/Python plot render — returns inline preview in chat without saving to disk. Call render_plot() to mark the preview target.",promptSnippet:"Render a plot inline with kernel_plot_render.",promptGuidelines:v,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")],{description:"Runtime language."}),code:e.Type.String({description:"R or Python code. Call render_plot() to mark the preview target. ggplot2 and plt.show() are auto-captured as convenience."}),kernelId:e.Type.Optional(e.Type.String({description:"Optional configured Workbench kernel id to use for this render."})),title:e.Type.Optional(e.Type.String({description:"Short title for the run."})),timeoutMs:e.Type.Optional(e.Type.Number({description:"Execution timeout in milliseconds."}))}),async execute(a,b,c,d,e){let f=(await m()).render;if(!f)throw Error("kernel-lite-core does not support render() — update @seqyuan/kernel-lite-core");let g=await f({cwd:e.cwd,ownerId:n(e),language:b.language,sessionKernelId:o(b,e),code:b.code,title:b.title,timeoutMs:b.timeoutMs,signal:c}),h=[{type:"text",text:`kernel_plot_render: ${g.images.length} image(s)`}];for(let a of(g.stdout.trim()&&h.push({type:"text",text:g.stdout.trim()}),g.stderr.trim()&&h.push({type:"text",text:g.stderr.trim()}),g.images))h.push({type:"image",data:a.data,mimeType:a.mimeType});let i=g.replayContext?(0,k.w)({scriptPath:g.replayContext.scriptPath,outputDir:g.replayContext.outputDir,language:g.replayContext.language,saveTargetKind:g.images[0]?.saveTargetKind??null}):null;return{content:h,details:{schema:"kernel-plot.render.v1",kind:"render",imageCount:g.images.length,replayToken:i,saveTargetKind:g.images[0]?.saveTargetKind??null}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_inspect",label:"Workbench Inspect",description:"Inspect live variables in the current warm Workbench kernel without reloading data.",promptSnippet:"Inspect live warm-kernel variables before reloading large data.",promptGuidelines:w,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")],{description:"Runtime language to inspect."}),kernelId:e.Type.Optional(e.Type.String({description:"Optional configured Workbench kernel id to inspect."})),timeoutMs:e.Type.Optional(e.Type.Number({description:"Execution timeout in milliseconds."}))}),async execute(a,b,c,d,e){var f;let g=await m(),h=await g.run({cwd:e.cwd,ownerId:n(e),language:b.language,runtime:"kernel-lite",sessionKernelId:o(b,e),code:(f=b.language,"python"===f?`import inspect as _av_inspect
|
|
3
|
+
print("WORKBENCH_INSPECT_BEGIN")
|
|
4
|
+
for _name, _val in sorted(globals().items()):
|
|
5
|
+
if _name.startswith("_"):
|
|
6
|
+
continue
|
|
7
|
+
if _av_inspect.ismodule(_val) or _av_inspect.isfunction(_val) or _av_inspect.isclass(_val):
|
|
8
|
+
continue
|
|
9
|
+
try:
|
|
10
|
+
_typ = type(_val).__name__
|
|
11
|
+
_shape = getattr(_val, "shape", None)
|
|
12
|
+
_shape_s = "x".join(map(str, _shape)) if _shape is not None else ""
|
|
13
|
+
_attrs = []
|
|
14
|
+
if hasattr(_val, "obs"):
|
|
15
|
+
_attrs.append("obs=" + ",".join(map(str, list(_val.obs.columns)[:20])))
|
|
16
|
+
if hasattr(_val, "columns"):
|
|
17
|
+
_attrs.append("columns=" + ",".join(map(str, list(_val.columns)[:20])))
|
|
18
|
+
if isinstance(_val, dict):
|
|
19
|
+
_attrs.append("keys=" + ",".join(map(str, list(_val.keys())[:20])))
|
|
20
|
+
if isinstance(_val, (list, tuple, set)):
|
|
21
|
+
_attrs.append("len=" + str(len(_val)))
|
|
22
|
+
print(f"{_name} {_typ} {_shape_s} {' ; '.join(_attrs)}")
|
|
23
|
+
except Exception as _e:
|
|
24
|
+
print(f"{_name} <inspect-error> {type(_e).__name__}: {_e}")
|
|
25
|
+
print("WORKBENCH_INSPECT_END")`:`cat("WORKBENCH_INSPECT_BEGIN\\n")
|
|
26
|
+
for (.name in sort(ls(envir=.GlobalEnv))) {
|
|
27
|
+
if (startsWith(.name, ".")) next
|
|
28
|
+
.val <- get(.name, envir=.GlobalEnv)
|
|
29
|
+
.class <- paste(class(.val), collapse=",")
|
|
30
|
+
.dim <- tryCatch(dim(.val), error=function(e) NULL)
|
|
31
|
+
.shape <- if (!is.null(.dim)) paste(.dim, collapse="x") else ""
|
|
32
|
+
.attrs <- character()
|
|
33
|
+
.cols <- tryCatch(colnames(.val), error=function(e) NULL)
|
|
34
|
+
if (!is.null(.cols)) .attrs <- c(.attrs, paste0("columns=", paste(head(.cols, 20), collapse=",")))
|
|
35
|
+
.names <- tryCatch(names(.val), error=function(e) NULL)
|
|
36
|
+
if (!is.null(.names) && length(.names) > 0) .attrs <- c(.attrs, paste0("names=", paste(head(.names, 20), collapse=",")))
|
|
37
|
+
cat(.name, "\\t", .class, "\\t", .shape, "\\t", paste(.attrs, collapse=" ; "), "\\n", sep="")
|
|
38
|
+
}
|
|
39
|
+
cat("WORKBENCH_INSPECT_END\\n")`),title:"Inspect live workbench kernel state",timeoutMs:b.timeoutMs??15e3,signal:c});return{content:[{type:"text",text:function(a){let b=s(a.stdout),c=[`kernel_plot_inspect ${a.status}`,`run_id: ${a.runId}`,`runtime: ${a.runtime}`,`objects: ${b.length}`];for(let a of b.slice(0,80))c.push(`- ${a.name}: ${a.type}${a.shape?` (${a.shape})`:""}${a.attrs?` — ${a.attrs}`:""}`);let d=p(a.stderr,1200).trim();return d&&c.push("stderr:",d),a.error&&c.push(`error: ${a.error}`),c.join("\n")}(h)}],details:{schema:"kernel-plot.inspect.v1",kind:"inspect",run:{runId:h.runId,status:h.status,language:h.language,runtime:h.runtime,title:h.title},objects:s(h.stdout),stderrPreview:p(h.stderr),error:h.error}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Workbench Stop",description:"Stop the current Pi session's warm Workbench kernel for one language or all languages.",promptSnippet:"Stop warm R/Python Workbench kernels and release their memory.",promptGuidelines:u,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await m(),g=n(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Workbench Artifacts",description:"List recent archived Workbench artifacts for the current Pi session.",promptSnippet:"List recent R/Python Workbench artifact paths for this session.",promptGuidelines:u,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await m(),g=n(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...q(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await m();await c.stopSession({ownerId:n(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5,saveFormat:"pdf",saveDpi:300,saveWidth:800,saveHeight:600};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b,saveFormat:"png"===a.saveFormat||"svg"===a.saveFormat?a.saveFormat:"pdf",saveDpi:"number"==typeof a.saveDpi&&Number.isFinite(a.saveDpi)&&a.saveDpi>=72&&a.saveDpi<=1200?a.saveDpi:m.saveDpi,saveWidth:"number"==typeof a.saveWidth&&Number.isFinite(a.saveWidth)&&a.saveWidth>=100&&a.saveWidth<=8e3?a.saveWidth:m.saveWidth,saveHeight:"number"==typeof a.saveHeight&&Number.isFinite(a.saveHeight)&&a.saveHeight>=100&&a.saveHeight<=8e3?a.saveHeight:m.saveHeight}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${a.trimEnd()}
|
|
40
|
+
|
|
41
|
+
${d}`:d}},11745:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$:()=>j});var e=c(28802),f=c(75430),g=a([e,f]);function h(a){return a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:String(a)}function i(a){if(a<60)return`${a}s`;let b=Math.floor(a/60);if(b<60)return`${b}m ${String(a%60).padStart(2,"0")}s`;let c=Math.floor(b/60);return`${c}h ${b%60}m`}function j(a){let b=null,c=null,d=!1;function g(){return Date.now()}function j(){return{input:0,output:0,cacheRead:0,cacheWrite:0}}function k(){var a;if(!d||!b||!c)return;let e=j(),f=(a=c,Math.max(0,e.input-a.input)+Math.max(0,e.cacheWrite-a.cacheWrite)+Math.max(0,e.output-a.output));f>0&&(b.tokensUsed+=f,b.updatedAt=g(),void 0!==b.tokenBudget&&b.tokensUsed>=b.tokenBudget&&"active"===b.status&&(b.status="budget-limited")),c={...e}}function l(){a.appendEntry("goal-mode",b?{...b}:null)}a.registerTool((0,f.defineTool)({name:"goal",label:"Goal",description:'Use the goal tool to manage your current task objective.\n- goal(op="create", objective="...", token_budget=N?) — set a goal with optional token budget\n- goal(op="get") — check current goal status\n- goal(op="complete") — mark goal as complete\n- goal(op="drop") — abandon the current goal\nWhen you have a clear objective, set a goal to track progress and budget.',parameters:e.Type.Object({op:e.Type.Union([e.Type.Literal("create"),e.Type.Literal("get"),e.Type.Literal("complete"),e.Type.Literal("drop"),e.Type.Literal("resume")],{description:"goal operation"}),objective:e.Type.Optional(e.Type.String({description:"goal objective (required for create)"})),token_budget:e.Type.Optional(e.Type.Number({description:"token budget limit (optional)"}))}),execute:async(a,e,f,m)=>{let n=e.op,o=e.objective?.trim(),p=e.token_budget;switch(n){case"create":{if(!o)return{content:[{type:"text",text:"Error: objective is required for goal create."}],details:null};if(b&&"dropped"!==b.status&&"complete"!==b.status)return{content:[{type:"text",text:"Error: a goal is already active. Complete or drop it first."}],details:null};let a=g();b={id:`goal-${a}`,objective:o,status:"active",tokenBudget:p&&p>0?p:void 0,tokensUsed:0,timeUsedSeconds:0,createdAt:a,updatedAt:a},d=!0,c=j(),l();let e=b.tokenBudget?` | budget: ${h(b.tokenBudget)} tokens`:"";return{content:[{type:"text",text:`Goal set: "${o}"${e}`}],details:{...b}}}case"get":{if(!b)return{content:[{type:"text",text:"No active goal."}],details:null};k();let a=Math.floor((g()-b.createdAt)/1e3);b.timeUsedSeconds=Math.max(b.timeUsedSeconds,a);let c=b.tokenBudget?` | ${h(b.tokensUsed)} / ${h(b.tokenBudget)} tokens`:` | ${h(b.tokensUsed)} tokens`;return{content:[{type:"text",text:`Goal: "${b.objective}"
|
|
42
|
+
Status: ${b.status}${c}
|
|
43
|
+
Time: ${i(b.timeUsedSeconds)}`}],details:{...b}}}case"complete":{var q;let a;if(!b)return{content:[{type:"text",text:"No active goal to complete."}],details:null};k(),b.status="complete",b.updatedAt=g(),d=!1;let c=(q=b,a=[],void 0!==q.tokenBudget&&a.push(`tokens used: ${q.tokensUsed} of ${q.tokenBudget}`),q.timeUsedSeconds>0&&a.push(`time used: ${i(q.timeUsedSeconds)}`),a.length>0?`Goal achieved. Final budget: ${a.join("; ")}.`:null);return l(),{content:[{type:"text",text:`Goal completed: "${b.objective}"${c?`
|
|
44
|
+
${c}`:""}`}],details:{...b}}}case"drop":if(!b)return{content:[{type:"text",text:"No active goal to drop."}],details:null};return b.status="dropped",b.updatedAt=g(),d=!1,l(),{content:[{type:"text",text:`Goal dropped: "${b.objective}"`}],details:{...b}};case"resume":if(!b)return{content:[{type:"text",text:"No goal to resume."}],details:null};if("complete"===b.status)return{content:[{type:"text",text:"Cannot resume a completed goal."}],details:null};return b.status="active",b.updatedAt=g(),d=!0,c=j(),l(),{content:[{type:"text",text:`Goal resumed: "${b.objective}"`}],details:{...b}};default:return{content:[{type:"text",text:`Unknown goal operation: ${n}`}],details:null}}}})),a.on("before_agent_start",async()=>{if(b&&"active"===b.status){var a;return k(),{message:{customType:"goal-context",content:(a=b,["<goal_context>",`You are working toward a goal: "${a.objective}"`,void 0!==a.tokenBudget?`Token budget: ${h(a.tokenBudget)} (${h(a.tokensUsed)} used, ${h(a.tokenBudget-a.tokensUsed)} remaining).`:`Tokens used so far: ${h(a.tokensUsed)}.`,`Time spent: ${i(a.timeUsedSeconds)}.`,void 0!==a.tokenBudget&&a.tokensUsed>=a.tokenBudget?'BUDGET EXCEEDED. Complete the goal now with goal(op="complete").':'Stay focused. Call goal(op="get") to check progress, goal(op="complete") when finished.',"</goal_context>"].join("\n")),display:!1}}}}),a.on("tool_result",async()=>{k()}),a.on("turn_start",async()=>{d&&(c=j()),l()}),a.on("agent_end",async()=>{k(),l()}),a.on("session_start",async(a,e)=>{let f=e.sessionManager.getEntries().filter(a=>"custom"===a.type&&"goal-mode"===a.customType).pop();f?.data&&(b=f.data,(d="active"===b.status)&&(c=j()))})}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},23537:(a,b,c)=>{"use strict";function d(){return globalThis.__annovibePlanModeStates||(globalThis.__annovibePlanModeStates=new Map),globalThis.__annovibePlanModeStates}function e(a,b){d().set(a,{enabled:b,updatedAt:Date.now()})}function f(a){return d().get(a)}function g(a){d().delete(a)}c.d(b,{Mc:()=>g,hv:()=>e,xt:()=>f})},27348:(a,b,c)=>{"use strict";c.d(b,{WO:()=>B});let d=["interactive","chart","mockup","art","diagram"],e=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g,f="## Core design system\n\n### When to use widgets\n- Use `show-widget` by default when visual output is the primary answer.\n- This includes charts, diagrams, flowcharts, timelines, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, hierarchy views, comparisons, and visual explanations.\n- Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid because widgets stream more reliably in this UI.\n- Put explanatory prose outside the code fence. The fence contains exactly one JSON object.\n\n### Format rules\n- `widget_code` is a JSON string: escape quotes and newlines, close the JSON object, then close the fence.\n- Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n- Keep outer backgrounds transparent. Use host variables: `--bg`, `--bg-panel`, `--bg-hover`, `--bg-selected`, `--border`, `--text`, `--text-muted`, `--text-dim`, `--accent`, `--accent-hover`.\n- CodePilot-compatible variables are also available: `--color-background-primary`, `--color-background-secondary`, `--color-background-tertiary`, `--color-text-primary`, `--color-text-secondary`, `--color-text-tertiary`, `--color-border-tertiary`, `--color-border-secondary`, `--color-border-primary`, `--font-sans`, `--font-mono`.\n- HTML widgets should stream in this order: `<style>`, visible markup, `<script>`. SVG widgets should put `<defs>` before visible shapes.\n- Use `min-height` instead of fixed outer `height`; avoid bottom clipping at chat widths.\n- Use readable text: no font smaller than 11px, no negative letter spacing, no text overlap.\n\n### Visual style\n- The widget should feel native to chat, not like a foreign embed.\n- Use flat, solid fills with clear borders. Avoid decorative gradients, shadows, blur, glow, neon, and busy backgrounds.\n- Use 2-3 color ramps per widget and gray/slate for structure.\n- Prefer the visualization type that best fits the content. Do not default to one type for every request.\n- Title should be human-readable in the user's language.",g=`## Color and layout
|
|
45
|
+
|
|
46
|
+
- Palette ramps:
|
|
47
|
+
- Indigo: \`#EEF2FF/#C7D2FE/#818CF8/#4F46E5/#3730A3\`
|
|
48
|
+
- Emerald: \`#ECFDF5/#A7F3D0/#34D399/#059669/#065F46\`
|
|
49
|
+
- Amber: \`#FFFBEB/#FDE68A/#FBBF24/#D97706/#92400E\`
|
|
50
|
+
- Slate: \`#F8FAFC/#E2E8F0/#94A3B8/#64748B/#334155\`
|
|
51
|
+
- Rose: \`#FFF1F2/#FECDD3/#FB7185/#E11D48/#9F1239\`
|
|
52
|
+
- Sky: \`#F0F9FF/#BAE6FD/#38BDF8/#0284C7/#075985\`
|
|
53
|
+
- Use 50 for fills, 200 for strokes, 400 for accents, 600 for subtitles, 800 for titles.
|
|
54
|
+
- Text on colored fills should use the darkest tone in the same ramp, never pure black on saturated color.
|
|
55
|
+
- Cards and nodes: radius 6-12px, border 0.5-1px, enough padding for labels.
|
|
56
|
+
- If the widget contains several panels, align them to a clear grid rather than nesting cards inside cards.
|
|
57
|
+
- Round displayed numbers. Keep typography at weights 400/500 unless a short heading needs emphasis.`,h=`## UI components
|
|
58
|
+
|
|
59
|
+
- Use HTML when the user asks for controls, calculators, filters, dashboards, drill-down, comparison modes, or parameter exploration.
|
|
60
|
+
- Form elements can use plain button, input, select, textarea, and range controls; the host iframe styles them.
|
|
61
|
+
- Good patterns: chart plus controls, metric dashboard, calculator, bar comparison, toggle/select switching, sortable or filterable list.
|
|
62
|
+
- Controls must visibly change the output. Wire sliders, buttons, toggles, and selects to update values, labels, charts, or highlighted elements.
|
|
63
|
+
- For clickable follow-up actions, call \`window.__widgetSendMessage("short request")\`.
|
|
64
|
+
- For cross-widget filtering, publish with \`window.__widgetPublish("topic", { key: "value" })\` and listen with \`window.addEventListener("widget-filter", function(e) { ... })\`.
|
|
65
|
+
- Keep state in plain JavaScript. Use unique IDs. Initialize scripts after the visible markup exists.`,i=`## Interactive widgets
|
|
66
|
+
|
|
67
|
+
- Controls must visibly change the output. Wire sliders, buttons, toggles, and selects to update values, labels, and charts.
|
|
68
|
+
- Keep state in plain JavaScript. Use unique IDs. Initialize after the visible markup exists.
|
|
69
|
+
- If a CDN library is used, include a fallback initializer: \`if (window.Chart) init();\` after the script tag.
|
|
70
|
+
- Keep inline scripts short and resilient. Do not depend on network calls; \`connect-src\` is disabled.`,j=`## SVG illustrations and spatial visuals
|
|
71
|
+
|
|
72
|
+
- Use SVG for diagrams that are mostly shapes, anatomy, geometry, spatial reasoning, visual metaphors, icons, and explanatory illustrations.
|
|
73
|
+
- Use SVG for icons and logos unless the user explicitly asks for source code only. Wrap the SVG in \`show-widget\` so it renders in chat.
|
|
74
|
+
- Start with \`<svg width="100%" viewBox="0 0 680 H" role="img" aria-label="...">\`.
|
|
75
|
+
- Keep all content inside x=0..680 and y=0..H. Set H to the lowest element bottom plus at least 32px.
|
|
76
|
+
- Use simple paths, circles, rectangles, labels, and callouts. Avoid high-detail art that will not survive compact rendering.
|
|
77
|
+
- Label important parts directly. Use leader lines when labels might collide with shapes.
|
|
78
|
+
- Prefer inline SVG styles over external CSS for small illustrations.`,k=`## SVG setup
|
|
79
|
+
|
|
80
|
+
- Use \`<svg width="100%" viewBox="0 0 680 H">\` with a 680px fixed width. Adjust H to fit content plus a 32-40px buffer.
|
|
81
|
+
- ViewBox checklist: max lowest y plus height plus buffer equals H; all content stays within x=0..680; avoid negative coordinates; account for text anchors that extend left or right.
|
|
82
|
+
- Arrow marker:
|
|
83
|
+
\`<defs><marker id="a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker></defs>\`
|
|
84
|
+
- Use inline font styles with system-ui fallback. 13-14px labels, 11-12px subtitles, 0.5-1px borders, 1.5px arrows, rx=8-12 for nodes.
|
|
85
|
+
- One SVG per widget unless the user asks for a sprite sheet or icon set.`,l={interactive:[f,h,g,i],chart:[f,h,g,'## Charts and data views\n\n- Choose the chart by data shape: bar for categories, line for trends, scatter for correlation, heatmap for matrices, histogram or box for distributions, Sankey or flow only for flows.\n- Always include labels, units when known, legend or direct labels, and a short note outside the fence when interpretation matters.\n- SVG is best for simple bar, line, scatter, heatmap, timeline, and matrix charts with modest data. Use `<svg width="100%" viewBox="0 0 680 H">`.\n- Chart.js is acceptable for interactive line, bar, scatter, doughnut, and mixed charts.\n- Chart.js wrapper: `<div style="position:relative;width:100%;height:320px;min-height:320px"><canvas id="c"></canvas></div>`; set `responsive:true` and `maintainAspectRatio:false`.\n- Interactive chart controls must update `chart.data` or options and then call `chart.update()`.\n- Use unique canvas IDs if there is more than one chart.\n- For script-generated plots, prefer embedding a base64 PNG in an `<img>` with `max-width:100%`; do not rely on local `file://` paths.',`## Chart.js pattern
|
|
86
|
+
|
|
87
|
+
\`\`\`html
|
|
88
|
+
<div style="position:relative;width:100%;height:300px;min-height:300px"><canvas id="c"></canvas></div>
|
|
89
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js" onload="init()"></script>
|
|
90
|
+
<script>
|
|
91
|
+
var chart;
|
|
92
|
+
function init(){
|
|
93
|
+
chart = new Chart(document.getElementById("c"), {
|
|
94
|
+
type: "line",
|
|
95
|
+
data: { labels: ["Jan","Feb","Mar"], datasets: [{ data: [30,45,28], borderColor: "#818CF8", backgroundColor: "rgba(129,140,248,0.1)", fill: true, tension: 0.3 }] },
|
|
96
|
+
options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false } } }
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (window.Chart) init();
|
|
100
|
+
</script>
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
- Canvas cannot use CSS variables directly; use hex values from the palette.
|
|
104
|
+
- Height belongs on the wrapper div. Use \`responsive:true\` and \`maintainAspectRatio:false\`.
|
|
105
|
+
- Usually disable legends and prefer direct labels unless the chart has several datasets.
|
|
106
|
+
- For interactive charts, update \`chart.data\` or \`chart.options\`, then call \`chart.update()\`.
|
|
107
|
+
- Multiple charts need unique canvas IDs.`],mockup:[f,h,g,`## UI mockups and prototypes
|
|
108
|
+
|
|
109
|
+
- Use HTML/CSS for app screens, forms, settings panels, tables, dashboards, and product mockups.
|
|
110
|
+
- Make the first viewport look like the requested product or workflow, not a landing page unless the user asks for one.
|
|
111
|
+
- Use realistic controls: buttons for commands, inputs for text, selects for option sets, checkboxes or toggles for binary settings, tabs for alternate views.
|
|
112
|
+
- Keep operational tools dense and scannable. Prefer restrained panels, clear labels, and predictable navigation.
|
|
113
|
+
- Include meaningful empty, selected, hover, disabled, and error states when they are relevant to the requested prototype.
|
|
114
|
+
- Do not include explanatory help text inside the mockup unless the user asked for onboarding copy.`,i],art:[f,g,k,j],diagram:[f,g,k,j,`## Diagrams
|
|
115
|
+
|
|
116
|
+
- Use SVG for flowcharts, architecture diagrams, timelines, dependency maps, sequence-style explanations, hierarchies, cycles, and process views.
|
|
117
|
+
- Prefer SVG/HTML in \`show-widget\` over Mermaid for generated diagrams. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.
|
|
118
|
+
- Recommended setup: \`<svg width="100%" viewBox="0 0 680 H"><defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker></defs>...\`.
|
|
119
|
+
- Flowchart: left-to-right or top-to-bottom, straight arrows, no more than 4 nodes per row, decision nodes visually distinct.
|
|
120
|
+
- Timeline: axis line with event markers, staggered labels, dates aligned and readable.
|
|
121
|
+
- Architecture: horizontal layers from user-facing at top to infrastructure at bottom; group related services in bounded regions.
|
|
122
|
+
- Hierarchy/tree: root at top, children below, aligned levels, sibling groups balanced.
|
|
123
|
+
- Cycle: 3-5 nodes around a loop with curved arrows and a center label.
|
|
124
|
+
- Comparison: two parallel groups with matching rows and direct labels.
|
|
125
|
+
- Node titles should be short. Minimum node width should fit the longest label plus padding.
|
|
126
|
+
- Verify arrows do not cross unrelated boxes and text does not overlap connectors.`,`## Diagram type catalog
|
|
127
|
+
|
|
128
|
+
- Flowchart/process: nodes left-to-right or top-to-bottom. Straight arrows. Decision points visually distinct. No more than 4 nodes per row.
|
|
129
|
+
- Timeline: horizontal or vertical axis with event markers. Stagger labels to avoid overlap.
|
|
130
|
+
- Cycle/feedback loop: 3-5 nodes connected by curved arrows with a center label.
|
|
131
|
+
- Hierarchy/tree: root at top, children below, aligned levels, sibling groups balanced.
|
|
132
|
+
- Layered architecture: full-width horizontal bands from user-facing at top to infrastructure at bottom.
|
|
133
|
+
- Quadrant/matrix: two axes with four lightly colored regions and plotted items.
|
|
134
|
+
- Hub-spoke/radial: central node plus surrounding nodes connected by lines.
|
|
135
|
+
- Side-by-side comparison: two parallel groups with matching rows and optional correspondence lines.
|
|
136
|
+
- Multi-widget narratives: for complex topics, output multiple widgets of different types, with short prose between them.`]},m=/\b(raw markdown|plain markdown|raw mermaid|plain mermaid|mermaid only|no widgets?|without widgets?|no generative ui|save (it )?(to|as) (a )?file)\b/i,n=/不要.*widget|不要.*组件|不用.*组件|不要.*生成式\s*UI|只要.*mermaid|原始\s*mermaid|保存到文件/,o=/\b(chart|plot|graph|visuali[sz]e|data viz|dashboard|trend|time series|timeseries|metric|statistics?|histogram|scatter|heat ?map|box ?plot|volcano|pca|umap|tsne|t-sne|bar chart|line chart|pie chart|donut|treemap|sankey)\b/i,p=/图表|画图|绘图|可视化|仪表盘|看板|趋势图|统计图|热图|散点图|折线图|柱状图|条形图|饼图|箱线图|小提琴图|火山图|雷达图|矩阵图|相关性图|降维图/,q=/\b(diagram|flowchart|flow chart|architecture|sequence|timeline|workflow|pipeline|process map|dependency|system design|hierarchy|tree|cycle|feedback loop|state machine|mind ?map|concept map|comparison|compare|infographic)\b/i,r=/流程图|架构图|结构图|时序图|序列图|时间线|工作流|管线|过程图|依赖图|拓扑图|层级图|树状图|循环图|状态机|脑图|概念图|关系图|桑基图|对比|比较|信息图/,s=/\b(mockup|prototype|wireframe|ui prototype|ui mockup|ux mockup|screen design|page layout|app layout|interface prototype|interface mockup|form mockup|settings panel|admin panel mockup|product page|landing page)\b/i,t=/原型图|原型|线框图|界面原型|页面原型|布局草图|界面设计|页面设计|设置面板|产品页|落地页|管理台原型|控制台原型/,u=/\b(interactive|control|slider|toggle|filter|drill ?down|calculator|simulator|playground|clickable|button|select|dropdown|tabs?|stepper|what-if|scenario|sortable|editable)\b/i,v=/交互式|交互|控件|滑块|切换|筛选|过滤|下钻|计算器|模拟器|可点击|按钮|下拉|选项卡|参数|联动|排序|可编辑/,w=/\b(draw|sketch|illustrat(e|ion)|svg|canvas|icon|logo|visual explanation|spatial|geometry|geometric|anatomy|callout|infographic)\b/i,x=/绘制|画一个|插图|示意图|空间|几何|图形|解剖|标注|图解|图示|图标|标志|logo|信息图/i,y=/\b(show-widget|generative ui|visual output)\b|\b(create|build|make|generate|render|show)\b.{0,40}\bwidget\b|\bwidget\b.{0,40}\b(showing|for|with)\b/i,z=/生成式\s*UI|可视化输出/;function A(a,b){return a.lastIndex=0,a.test(b)}function B(a,b,c){let f,g=a.replace(e,"\n").replace(/\n{3,}/g,"\n\n").trim(),h=(0===(f=function(a){var b;let c=a.trim();if(!c||A(m,c)||A(n,c))return[];let e=new Set,f=A(o,c)||A(p,c),g=A(q,c)||A(r,c),h=A(s,c)||A(t,c),i=A(u,c)||A(v,c),j=A(w,c)||A(x,c),k=A(y,c)||A(z,c);return i&&e.add("interactive"),f&&e.add("chart"),g&&e.add("diagram"),h&&e.add("mockup"),!j||f||g||e.add("art"),h&&i&&e.add("interactive"),f&&/\b(dashboard|filter|drill ?down|interactive|control|slider|toggle|what-if)\b/i.test(c)&&e.add("interactive"),f&&/仪表盘|看板|筛选|过滤|下钻|交互|滑块|参数|联动/.test(c)&&e.add("interactive"),0===e.size&&(k||A(o,b=c)||A(p,b)||A(q,b)||A(r,b)||A(s,b)||A(t,b)||A(u,b)||A(v,b)||A(w,b)||A(x,b)||A(y,b)||A(z,b))&&e.add("diagram"),d.filter(a=>e.has(a))}(b)).length&&c?.force&&(f=c.modules?.length?c.modules:d),0===f.length)?null:{modules:f,content:function(a){let b=new Set,c=[];for(let d of a)for(let a of l[d])b.has(a)||(b.add(a),c.push(a));return c.join("\n\n")}(f)};if(!h)return g;let i=h.modules.join(","),j=`<widget-guidelines modules="${i}">
|
|
137
|
+
${h.content}
|
|
138
|
+
</widget-guidelines>`;return g?`${g}
|
|
139
|
+
|
|
140
|
+
${j}`:j}},39737:(a,b,c)=>{"use strict";c.d(b,{L:()=>o});var d=c(29021),e=c(33873),f=c(23537);let g=["read","bash","grep","find","ls"],h=["read","bash","edit","write","grep","find","ls"],i=[/\brm\b/i,/\brmdir\b/i,/\bmv\b/i,/\bcp\b/i,/\bmkdir\b/i,/\btouch\b/i,/\bchmod\b/i,/\bchown\b/i,/\bchgrp\b/i,/\bln\b/i,/\btee\b/i,/\btruncate\b/i,/\bdd\b/i,/\bshred\b/i,/[^<]>(?!>)/,/>>/,/\bnpm\s+(install|uninstall|update|ci|link|publish)/i,/\byarn\s+(add|remove|install|publish)/i,/\bpnpm\s+(add|remove|install|publish)/i,/\bpip\s+(install|uninstall)/i,/\bapt(?:-get)?\s+(install|remove|purge|update|upgrade)/i,/\bbrew\s+(install|uninstall|upgrade)/i,/\bgit\s+(add|commit|push|pull|merge|rebase|reset|checkout\s+-b|branch\s+-[dD]|stash|cherry-pick|revert|tag|init|clone)/i,/\bsudo\b/i,/\bsu\b/i,/\bkill\b/i,/\bpkill\b/i,/\bkillall\b/i,/\breboot\b/i,/\bshutdown\b/i,/\bsystemctl\s+(start|stop|restart|enable|disable)/i,/\bservice\s+\S+\s+(start|stop|restart)/i,/\b(vim?|nano|emacs|code|subl)\b/i],j=[/^\s*cat\b/,/^\s*head\b/,/^\s*tail\b/,/^\s*less\b/,/^\s*more\b/,/^\s*grep\b/,/^\s*find\b/,/^\s*ls\b/,/^\s*pwd\b/,/^\s*echo\b/,/^\s*printf\b/,/^\s*wc\b/,/^\s*sort\b/,/^\s*uniq\b/,/^\s*diff\b/,/^\s*file\b/,/^\s*stat\b/,/^\s*du\b/,/^\s*df\b/,/^\s*tree\b/,/^\s*which\b/,/^\s*whereis\b/,/^\s*type\b/,/^\s*env\b/,/^\s*printenv\b/,/^\s*uname\b/,/^\s*whoami\b/,/^\s*id\b/,/^\s*date\b/,/^\s*cal\b/,/^\s*uptime\b/,/^\s*ps\b/,/^\s*top\b/,/^\s*htop\b/,/^\s*free\b/,/^\s*git\s+(status|log|diff|show|branch|remote|config\s+--get)/i,/^\s*git\s+ls-/i,/^\s*npm\s+(list|ls|view|info|search|outdated|audit)/i,/^\s*yarn\s+(list|info|why|audit)/i,/^\s*node\s+--version/i,/^\s*python\s+--version/i,/^\s*curl\s/i,/^\s*wget\s+-O\s*-/i,/^\s*jq\b/,/^\s*sed\s+-n/i,/^\s*awk\b/,/^\s*rg\b/,/^\s*fd\b/,/^\s*bat\b/,/^\s*exa\b/,/^\s*R\s+-e/i,/^\s*Rscript\s+-e/i],k=".annovibe-plan.md";function l(a){return(0,e.join)(a,k)}function m(a,b,c){let e=c.length>0?["","## Steps","",...c.map(a=>`${a.completed?"- [x]":"- [ ]"} ${a.text}`)].join("\n"):"";(0,d.writeFileSync)(l(a),`# Annovibe Plan
|
|
141
|
+
|
|
142
|
+
This plan was generated by the Annovibe AI agent.
|
|
143
|
+
It is read-only until the plan is approved for execution.
|
|
144
|
+
|
|
145
|
+
${b}${e}
|
|
146
|
+
`)}function n(a){try{(0,d.unlinkSync)(l(a))}catch{}}function o(a){let b=!1,c=!1,e=!1,o=[];function p(a){a!==b&&(b=a,a||(e=!1,o=[]))}function q(b){let c=b?(0,f.xt)(b):void 0;if(c)return void p(c.enabled);let d=a.getActiveTools();p(d.length>0&&d.every(a=>g.includes(a))&&!d.includes("edit")&&!d.includes("write"))}async function r(c){let d=c.sessionManager.getSessionId();b=!b,(0,f.hv)(d,b),e=!1,o=[],b?(await a.setActiveTools(g),c.ui.notify(`Plan mode enabled. Tools: ${g.join(", ")}`)):(await a.setActiveTools(h),c.ui.notify("Plan mode disabled. Full access restored."))}a.registerCommand("plan",{description:"Toggle plan mode (read-only exploration)",handler:async(a,b)=>{await r(b)}}),a.registerFlag("plan",{description:"Start in plan mode (read-only exploration)",type:"boolean",default:!1}),a.on("tool_call",async(a,c)=>{if(q(c.sessionManager.getSessionId()),!b||"bash"!==a.toolName)return;let d=a.input.command;if((!j.some(a=>a.test(d))||i.some(a=>a.test(d)))&&i.some(a=>a.test(d)))return{block:!0,reason:`Plan mode: destructive command blocked. Use /plan to disable plan mode first.
|
|
147
|
+
Command: ${d}`}}),a.on("tool_result",async(a,b)=>{if(c=!0,!e||0===o.length)return;let d=o.find(a=>!a.completed);d&&(d.completed=!0)}),a.on("context",async(a,c)=>{if(q(c.sessionManager.getSessionId()),!b)return{messages:a.messages.filter(a=>!("user"===a.role&&Array.isArray(a.content)&&a.content.some(a=>"text"===a.type&&a.text?.includes("[PLAN MODE ACTIVE]")))&&!0)}}),a.on("before_agent_start",async(a,c)=>{if(q(c.sessionManager.getSessionId()),b||e){if(b)return{message:{customType:"plan-mode-context",content:`[PLAN MODE ACTIVE]
|
|
148
|
+
You are in plan mode — a read-only exploration mode for safe code analysis.
|
|
149
|
+
|
|
150
|
+
Restrictions:
|
|
151
|
+
- You can only use: read, bash, grep, find, ls
|
|
152
|
+
- You CANNOT use: edit, write (file modifications are disabled)
|
|
153
|
+
- Bash is restricted to READ-ONLY commands
|
|
154
|
+
- Focus on analysis, planning, and understanding the codebase
|
|
155
|
+
|
|
156
|
+
Create a detailed numbered plan:
|
|
157
|
+
1. First step description
|
|
158
|
+
2. Second step description
|
|
159
|
+
...
|
|
160
|
+
|
|
161
|
+
Do NOT make changes — just describe what you would do.`,display:!1}};if(e&&o.length>0){let a=o.filter(a=>!a.completed);return{message:{customType:"plan-execution-context",content:`[EXECUTING PLAN — Full tool access enabled]
|
|
162
|
+
|
|
163
|
+
Remaining steps:
|
|
164
|
+
${a.map(a=>`${a.step}. ${a.text}`).join("\n")}
|
|
165
|
+
|
|
166
|
+
Execute each step in order.`,display:!1}}}}}),a.on("agent_end",async(c,d)=>{if(q(d.sessionManager.getSessionId()),e&&o.length>0){o.every(a=>a.completed)&&(a.sendMessage({customType:"plan-complete",content:`**Plan Complete!** ✓
|
|
167
|
+
|
|
168
|
+
${o.map(a=>`${a.completed?"~~":""}${a.step}. ${a.text}${a.completed?"~~":""}`).join("\n")}`,display:!0},{triggerTurn:!1}),e=!1,o=[],n(d.cwd),await a.setActiveTools(h));return}if(!b)return;let g=c.messages;if(g){let a=[...g].reverse().find(a=>"assistant"===a.role);if(a?.content&&Array.isArray(a.content)){let b=a.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n");if(b){let a=function(a){let b=[];for(let c of a.matchAll(/^\s*(\d+)[.)]\s+\*{0,2}([^*\n]+)/gm)){let a=c[2].trim().replace(/\*{1,2}$/,"").trim();if(a.length>5&&!a.startsWith("`")&&!a.startsWith("/")&&!a.startsWith("-")){let c=function(a){let b=a.replace(/\*{1,2}([^*]+)\*{1,2}/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/^(Use|Run|Execute|Create|Write|Read|Check|Verify|Update|Modify|Add|Remove|Delete|Install)\s+(the\s+)?/i,"").replace(/\s+/g," ").trim();return b.length>0&&(b=b.charAt(0).toUpperCase()+b.slice(1)),b.length>50&&(b=`${b.slice(0,49)}…`),b}(a);c.length>3&&b.push({step:b.length+1,text:c,completed:!1})}}return b}(b);a.length>0&&(o=a)}}}let i=o.length>0;if(i&&a.sendMessage({customType:"plan-todo-list",content:`**Plan Steps (${o.length}):**
|
|
169
|
+
|
|
170
|
+
${o.map(a=>`☐ ${a.text}`).join("\n")}`,display:!0},{triggerTurn:!1}),!d.hasUI)return;let j=await d.ui.select("Plan mode — what next?",[i?"Execute the plan":"Start executing","Stay in plan mode","Refine the plan"]);if(j?.startsWith("Execute")||j?.startsWith("Start")){if(i){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";m(d.cwd,e,o)}b=!1,(0,f.hv)(d.sessionManager.getSessionId(),!1),e=i,await a.setActiveTools(h);let g=i?`Execute the plan. Start with: ${o[0].text}`:"Execute the plan you just created.";a.sendMessage({customType:"plan-mode-execute",content:g,display:!0},{triggerTurn:!0})}else if("Refine the plan"===j){let a=await d.ui.input("What should be refined?");a&&d.ui.setEditorText&&d.ui.setEditorText(a)}else if(i){let a=c.messages,b=a?[...a].reverse().find(a=>"assistant"===a.role):void 0,e=b?.content&&Array.isArray(b.content)?b.content.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):"";m(d.cwd,e,o)}}),a.on("session_start",async(c,i)=>{var j;a.getFlag?.("plan")===!0&&(b=!0);let m=i.sessionManager.getEntries().filter(a=>"custom"===a.type&&"plan-mode"===a.customType).pop();if(m?.data&&(void 0!==m.data.enabled&&(b=m.data.enabled),m.data.todos&&(o=m.data.todos),m.data.executing&&(e=m.data.executing)),(0,f.hv)(i.sessionManager.getSessionId(),b),b&&await a.setActiveTools(g),!b&&!e&&(j=i.cwd,(0,d.existsSync)(l(j)))){let b=function(a){try{return(0,d.readFileSync)(l(a),"utf-8")}catch{return null}}(i.cwd);if(b&&i.hasUI){let c=await i.ui.select(`A saved plan exists (${k}). Resume?`,["Resume plan execution","Delete plan file","Ignore"]);"Resume plan execution"===c?(e=!0,await a.setActiveTools(h),a.sendMessage({customType:"plan-resume-context",content:`[RESUMING PLAN EXECUTION]
|
|
171
|
+
|
|
172
|
+
Saved plan:
|
|
173
|
+
|
|
174
|
+
${b}
|
|
175
|
+
|
|
176
|
+
Continue executing from where you left off.`,display:!0},{triggerTurn:!0})):"Delete plan file"===c&&n(i.cwd)}}}),a.on("turn_start",async(d,f)=>{q(f.sessionManager.getSessionId()),c=!1,a.appendEntry("plan-mode",{enabled:b,todos:o,executing:e})}),a.on("turn_end",async(a,b)=>{if(e&&0!==o.length&&!c){let a=o.find(a=>!a.completed);a&&(a.completed=!0)}})}},39773:(a,b,c)=>{"use strict";c.d(b,{X:()=>g,w:()=>f});var d=c(55511);let e=new Map;function f(a){let b=(0,d.randomUUID)().replace(/-/g,"").slice(0,24);return e.set(b,{...a,token:b,expiresAt:Date.now()+18e5}),b}function g(a){let b=e.get(a);return b?Date.now()>b.expiresAt?(e.delete(a),null):b:null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)a>c.expiresAt&&e.delete(b)},3e5)},41761:(a,b,c)=>{"use strict";c.d(b,{C1:()=>e,lA:()=>d});let d="subagent",e=["bash","read","edit","write","grep","find","ls"];[...e],[...e]},44036:(a,b,c)=>{"use strict";c.d(b,{FJ:()=>g,R4:()=>h,X8:()=>f});let d="<workbench-guidelines>\nAnnoVibe Workbench is active. Use it for reproducible R/Python analysis plots, data visualizations, and warm-runtime analysis work.\n\nTool routing:\n- Use `kernel_plot_render` for one-shot iterative plot previews — images auto-render inline in chat without saving files. Call `render_plot()` to mark the preview target. ggplot2 (R) and plt.show() (Python) are auto-captured as convenience.\n- Use `kernel_plot_inspect` after resuming a workbench session, after suspected kernel restart, or whenever you are unsure whether objects like `adata`/`seurat_obj` are still live in memory.\n- Use `kernel_plot_run` when plots depend on data already loaded in warm kernel memory, or when saving final artifacts to disk.\n- Use `runtime: \"kernel-lite\"` in `kernel_plot_run` when variables or loaded data should persist across turns.\n- Use `runtime: \"worker\"` for one-shot scripts that should be isolated.\n- Do not run Rscript/python plotting through `bash` unless the workbench tools are unavailable.\n- Do not use bash with `conda run python`, `Rscript`, or direct interpreter calls for analysis code — always prefer `kernel_plot_run`.\n\nkernel-lite memory rules — CRITICAL:\n- Packages imported (import scanpy, library(Seurat), etc.) and variables assigned in one kernel_plot_run call persist while the same kernel-lite runtime is alive. Do NOT repeat imports in every call. Import each package only once, in the first call that needs it.\n- Large data objects loaded via sc.read(), readRDS(), qread(), pd.read_csv(), etc. stay in memory while the warm kernel is alive. Before calling any load function, check whether the object already exists:\n Python: `if 'adata' not in globals(): adata = sc.read(path)`\n R: `if (!exists('seurat_obj')) seurat_obj <- readRDS(path)`\n Print a brief note when reusing in-memory data vs loading fresh.\n- Do NOT put sc.read() / readRDS() / qread() at the top of every call. This reloads multi-GB files needlessly and is the #1 performance mistake in workbench sessions.\n- After browser refreshes, model switches, compaction, or a resumed workbench session, treat prior history as inferred only: first use `kernel_plot_inspect` or an explicit existence check to see whether required objects still exist, then reload only missing objects from the known source path.\n\nWorkbench artifact rules:\n- Save every output under `WARMPLOT_OUTPUT_DIR` or `PI_KERNEL_PLOT_OUTPUT_DIR`.\n- Create a primary PNG/JPEG/WebP preview for chat display whenever a figure is produced, not PDF-only output. Keep the preview reasonably sized so it can be embedded inline.\n- If a publication-quality PDF/SVG is needed, save it in addition to the preview image.\n- Name the primary preview clearly, for example `00_preview.png`, so it is easy to identify.\n- When the user asks to save final outputs to a specific project directory, use that directory (not WARMPLOT_OUTPUT_DIR) for the final artifacts.\n\nChat display rules:\n- The web chat renders returned image artifacts inline. Do not say that images cannot be displayed.\n- Do not use `open`, `xdg-open`, or desktop viewers to show plots.\n- After generating any plot, make the chat response displayable by including the PNG/JPEG/WebP preview path in the final answer or by returning it as a tool image artifact. Do not mention only PDF paths when an image preview exists.\n- When using shell tools for plotting, still save a PNG/JPEG/WebP preview and include that preview path in the final answer; avoid a final answer that only says a desktop window was opened.\n- When the user asks to show an existing PNG/JPEG/WebP file, use `read` on that image path; the UI will display the image even if the model cannot inspect pixels.\n- If only a PDF exists and the user asks to see it in chat, generate a PNG preview with `kernel_plot_run` or report the PDF path only if conversion is not practical.\n- After a successful plot, summarize the result briefly and include both preview image paths and any publication-quality PDF/SVG paths.\n</workbench-guidelines>",e=/\n?\s*(?:<plot-mode-guidelines>[\s\S]*?<\/plot-mode-guidelines>|<workbench-guidelines>[\s\S]*?<\/workbench-guidelines>)\s*/g;function f(a){return a.replace(e,"\n").replace(/\n{3,}/g,"\n\n").trim()}function g(a){return a.includes("<plot-mode-guidelines>")||a.includes("<workbench-guidelines>")?a:a.trim()?`${a.trimEnd()}
|
|
177
|
+
|
|
178
|
+
${d}`:d}function h(a){for(let b of a)if("kernel_plot_run"===b)return!0;return!1}},56429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A4:()=>F,Bj:()=>G,OF:()=>H});var e=c(75430),f=c(40402),g=c(9774),h=c(3867),i=c(85097),j=c(39737),k=c(11745),l=c(9805),m=c(27348),n=c(44036),o=c(66469),p=c(29021),q=c(33873),r=c(7048),s=c(41761),t=c(74788),u=c(57149),v=c(23537),w=c(60103),x=a([e,f,g,h,i,k,t]);[e,f,g,h,i,k,t]=x.then?(await x)():x;let I=s.C1;class J{constructor(a,b={}){this.inner=a,this.options=b,this.listeners=[],this.replayEvents=[],this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.busyOperations=new Set,this.activeTools=new Map,this.runStartedAtMs=null,this.firstModelEventAtMs=null,this.lastEventAtMs=null,this.lastEventType=null,this.lastErrorMessage=null,this._alive=!0,this._lastAppliedPromptKey="",this._kernelStateCache=null}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isBusy(){return this.busyOperations.size>0||this.inner.isStreaming||this.inner.isCompacting}getRuntimeStatus(){let a=Date.now(),b=this.getPhase(),c=this.inner.model?{provider:this.inner.model.provider,id:this.inner.model.id}:null;return{sessionId:this.sessionId,sessionFile:this.sessionFile,cwd:function(a){try{let b=a.sessionManager;return b.getCwd?.()??null}catch{return null}}(this.inner),busy:this.isBusy(),operations:[...this.busyOperations],isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,phase:b,model:c,activeTools:[...this.activeTools.entries()].map(([a,b])=>({id:a,name:b})),runStartedAt:A(this.runStartedAtMs),firstModelEventAt:A(this.firstModelEventAtMs),lastEventAt:A(this.lastEventAtMs),lastEventType:this.lastEventType,uptimeMs:this.runStartedAtMs?Math.max(0,a-this.runStartedAtMs):null,waitingForModelMs:"waiting_model"===b&&this.runStartedAtMs?Math.max(0,(this.firstModelEventAtMs??a)-this.runStartedAtMs):null,pendingMessageCount:"number"==typeof this.inner.pendingMessageCount?this.inner.pendingMessageCount:null,errorMessage:this.lastErrorMessage}}start(){this.unsubscribe=this.inner.subscribe(a=>{for(let b of(this.recordRuntimeEvent(a),this.bufferReplayEvent(a),this.resetIdleTimer(),this.listeners))b(a)}),this.resetIdleTimer()}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isBusy()?this.resetIdleTimer():this.destroy()},6e5)}bufferReplayEvent(a){"agent_start"===a.type&&(this.replayEvents=[]),this.replayEvents.push(a),this.replayEvents.length>200&&this.replayEvents.splice(0,this.replayEvents.length-200)}onEvent(a,b={}){if(this.listeners.push(a),b.replay)for(let b of this.replayEvents)a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;switch(b){case"prompt":{if("boolean"==typeof a.planMode&&this.setPlanModeState(a.planMode),Array.isArray(a.toolNames)){let b=this.filterAvailableToolNames(a.toolNames);this.inner.setActiveToolsByName(b)}this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return this.trackBusy("prompt",this.inner.prompt(a.message,d?.length?{images:d}:void 0)).catch(()=>{}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage(),c=this.inner.agent.state?.systemPrompt??"",d=(0,g.cV)(),e=(0,t.U5)(this.inner.sessionId);return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:0,goal:e?.goal??null,contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:d.generativeUI?c:(0,l.FE)(c),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off"}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRegistry.find(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,g=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let h=d.getEntry(c);if(!h)throw Error("Invalid entry ID for forking");let i=d.getSessionDir();if(h.parentId){let a=e.SessionManager.open(g,i).createBranchedSession(h.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),i);a.newSession({parentSession:g}),b=a.getSessionFile()}let j=e.SessionManager.open(b,i).getSessionId();(0,f.O8)(j,b);let k=(0,t.U5)(this.sessionId);return k&&await (0,t.oR)(j,{...k,createdBy:"fork",createdAt:new Date().toISOString()}),this.destroy(),{cancelled:!1,newSessionId:j}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),null}case"compact":{let{findCutPoint:b,DEFAULT_COMPACTION_SETTINGS:d}=await Promise.resolve().then(c.bind(c,75430)),e=this.inner.sessionManager.getBranch(),f={...d,...this.inner.settingsManager.getCompactionSettings()},g=-1;for(let a=e.length-1;a>=0;a--)if("compaction"===e[a].type){g=a;break}let h=g+1,i=b(e,h,e.length,f.keepRecentTokens);if((i.isSplitTurn?i.turnStartIndex:i.firstKeptEntryIndex)<=h)throw Error("Conversation too short to compact");return await this.trackBusy("compact",this.inner.compact(a.customInstructions))}case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"steer":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("steer",this.inner.steer(a.message,d?.length?d:void 0)),null}case"follow_up":{this.preparePromptContext(a.message);let b=a.images,c=this.inner.model?.input,d=!c||0===c.length||c.includes("image")?b:void 0;return await this.trackBusy("follow_up",this.inner.followUp(a.message,d?.length?d:void 0)),null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"set_tools":{"boolean"==typeof a.planMode&&this.setPlanModeState(a.planMode,!0);let b=this.filterAvailableToolNames(a.toolNames);return this.inner.setActiveToolsByName(b),this.applyRuntimePrompts(),(0,t.LN)(this.sessionId,{lastToolNames:this.inner.getActiveToolNames()}).catch(()=>{}),null}case"abort_compaction":return this.inner.abortCompaction(),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){this._alive&&(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),(0,v.Mc)(this.sessionId),this.unsubscribe?.(),this.onDestroyCallback?.())}preparePromptContext(a){this.applyRuntimePrompts(a)}setPlanModeState(a,b=!1){(0,v.hv)(this.sessionId,a),b&&this.inner.sessionManager.appendCustomEntry("plan-mode",{enabled:a,todos:[],executing:!1})}async trackBusy(a,b){this.busyOperations.add(a),this.resetIdleTimer();try{return await b}finally{this.busyOperations.delete(a),this.resetIdleTimer()}}getPhase(){return this.inner.isCompacting||this.busyOperations.has("compact")?"compacting":this.activeTools.size>0?"running_tools":this.inner.isStreaming||this.busyOperations.has("prompt")||this.busyOperations.has("steer")||this.busyOperations.has("follow_up")?this.firstModelEventAtMs?"streaming":"waiting_model":"idle"}recordRuntimeEvent(a){let b=Date.now();switch(this.lastEventAtMs=b,this.lastEventType=a.type,a.type){case"agent_start":this.runStartedAtMs=b,this.firstModelEventAtMs=null,this.lastErrorMessage=null,this.activeTools.clear();break;case"message_start":case"message_update":{let c=a.message;c?.role==="assistant"&&(this.firstModelEventAtMs||(this.firstModelEventAtMs=b),"string"==typeof c.errorMessage&&(this.lastErrorMessage=c.errorMessage));break}case"message_end":{let b=a.message;b?.role==="assistant"&&"string"==typeof b.errorMessage&&(this.lastErrorMessage=b.errorMessage);break}case"tool_execution_start":{let b="string"==typeof a.toolCallId?a.toolCallId:"",c="string"==typeof a.toolName?a.toolName:"tool";b&&this.activeTools.set(b,c);break}case"tool_execution_end":{let b="string"==typeof a.toolCallId?a.toolCallId:"";b&&this.activeTools.delete(b);break}case"agent_end":this.activeTools.clear(),this.runStartedAtMs=null,this.firstModelEventAtMs=null}}applyRuntimePrompts(a){if(!this.inner.agent.state||this.options.systemPromptDisabled)return;let b=(0,g.cV)(),c=this.inner.getActiveToolNames(),d=(0,n.R4)(c),e=y(this.inner),f=0;if(this.sessionFile)try{f=(0,p.statSync)(this.sessionFile).mtimeMs}catch{f=0}let h=null;if(d&&this.sessionFile)if(this._kernelStateCache&&this._kernelStateCache.mtime===f)h=this._kernelStateCache.summary;else{let a=(0,w.f)(this.sessionFile);a?(h=(0,w.v)(a),this._kernelStateCache={mtime:f,summary:h}):this._kernelStateCache=null}else this._kernelStateCache=null;let i=h?`|mtime=${f}`:"",j=a??"",k=`${d}|${b.generativeUI}|${j.length>0?"msg":"no-msg"}${i}`;if(this._lastAppliedPromptKey===k&&e.length>0)return;if(!b.generativeUI){let a=(0,n.X8)((0,l.FE)(e)),b=B(a,d),c=h?`${b}
|
|
179
|
+
|
|
180
|
+
${h}`:b;z(this.inner,c),this._lastAppliedPromptKey=k;return}let o=(0,n.X8)((0,l.FE)(e)),q=(0,l.zN)(o),r=B(q,d),s=a?(0,m.WO)(r,a,{force:function(a){try{return a.getBranch().some(a=>!!a&&"object"==typeof a&&"message"===a.type&&!!a.message&&JSON.stringify(a.message).includes("show-widget"))}catch{return!1}}(this.inner.sessionManager)}):r;h&&(s=`${s}
|
|
181
|
+
|
|
182
|
+
${h}`),z(this.inner,s),this._lastAppliedPromptKey=k}filterAvailableToolNames(a){if(!Array.isArray(a))return[];let b=a.filter(a=>"string"==typeof a);if(!b.includes(s.lA))return b;let c=(0,e.getAgentDir)();return(0,r.Y)(c).ready?b:b.filter(a=>a!==s.lA)}}function y(a){return"string"==typeof a._baseSystemPrompt?a._baseSystemPrompt:a.agent.state?.systemPrompt??""}function z(a,b){"string"==typeof a._baseSystemPrompt&&(a._baseSystemPrompt=b),a.agent.state&&(a.agent.state.systemPrompt=b)}function A(a){return a?new Date(a).toISOString():null}function B(a,b){let c=(0,n.X8)(a);return b?(0,n.FJ)(c):c}function C(a){let b=(0,n.X8)((0,l.FE)(a.systemPrompt)),c=a.generativeUI?(0,l.zN)(b):b;return B(c,a.plotMode)}function D(a){let b=[],c=(0,o.sz)(a.agentDir);if((0,p.existsSync)(c))try{let a=(0,p.readFileSync)(c,"utf-8").trim();a&&b.push((0,o.Is)(a,(0,o.Tg)(c)))}catch{}let d=(0,o.td)(a.agentDir);if((0,p.existsSync)(d))try{let a=(0,p.readFileSync)(d,"utf-8").trim();a&&!(0,l.J)(a)&&b.push((0,o.x9)(a,(0,o.Tg)(d)))}catch{}let e=(0,o.o7)(a.cwd);if((0,p.existsSync)(e))try{let a=(0,p.readFileSync)(e,"utf-8").trim();a&&b.push((0,o.w0)(a,(0,o.Tg)(e)))}catch{}let f=a.piSystemPrompt.trim();return f&&b.push(["## Tool, Skill, and Project Instructions\n\nThe following instructions were generated by AnnoVibe/pi for tools, skills, and project-specific guidance.\nFollow them as system instructions, with SOUL/HARNESS above defining identity and global behavior.\n",f].join("\n")),b.join("\n\n").trim()}function E(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>globalThis.__piSessions?.forEach(a=>a.destroy());process.once("exit",a),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__piSessions}function F(a){return E().get(a)}function G(){let a=[...E().values()].filter(a=>a.isAlive()).map(a=>a.getRuntimeStatus()),b=a.filter(a=>a.busy);return{busy:b.length>0,activeSessions:a.length,busySessions:b,sessions:a}}async function H(a,b,d,l,m){let o=E(),p=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),v=o.get(a);if(v?.isAlive())return{session:v,realSessionId:a};let w=p.get(a);if(w)return w;let x=(async()=>{let p=(0,e.getAgentDir)(),v=b?e.SessionManager.open(b,void 0):e.SessionManager.create(d,void 0),w=e.SettingsManager.create(d,p),x=function(a){try{let b=c(83026).resolve(`${a}/package.json`);return(0,q.dirname)(b)}catch{if(!(process.env.ANNOVIBE_PACKAGE_ROOT??process.env.PIDEX_PACKAGE_ROOT))return null;try{let b=(void 0).resolve(`${a}/package.json`);return(0,q.dirname)(b)}catch{return null}}}("@seqyuan/pi-kernel-plot"),A=new e.DefaultResourceLoader({cwd:d,agentDir:p,settingsManager:w,additionalSkillPaths:x?[(0,q.join)(x,"skills")]:[],extensionFactories:[h.H,i.A,j.L,k.$]});await A.reload();let B=!l&&a?(0,t.U5)(a)?.lastToolNames:void 0,E=function(a,b){if(a)return!a.includes(s.lA)||(0,r.Y)(b).ready?a:a.filter(a=>a!==s.lA)}(l??B,p),{session:F}=await (0,e.createAgentSession)({cwd:d,agentDir:p,sessionManager:v,settingsManager:w,resourceLoader:A,tools:E??I}),G=(0,g.cV)(),H=F.agent.state?.systemPrompt??"";z(F,D({cwd:d,agentDir:p,piSystemPrompt:H})),z(F,C({systemPrompt:y(F),generativeUI:G.generativeUI,plotMode:(0,n.R4)(E??F.getActiveToolNames())})),E&&E.length>0&&(F.setActiveToolsByName(E),z(F,C({systemPrompt:y(F),generativeUI:G.generativeUI,plotMode:(0,n.R4)(E)}))),E?.length===0&&z(F,D({cwd:d,agentDir:p,piSystemPrompt:""}));let K=new J(F,{systemPromptDisabled:E?.length===0});K.start(),"im"===m&&z(F,(0,u.N9)(y(F)));let L=F.sessionId,M=F.sessionFile;return M&&(0,f.O8)(L,M),K.onDestroy(()=>o.delete(L)),o.set(L,K),{session:K,realSessionId:L}})().finally(()=>p.delete(a));return p.set(a,x),x}d()}catch(a){d(a)}})},57149:(a,b,c)=>{"use strict";c.d(b,{N9:()=>e});let d="<wecom_im_channel>";function e(a){return a.includes(d)?a:`${a}
|
|
183
|
+
|
|
184
|
+
${d}
|
|
185
|
+
## WeCom IM Channel Constraints
|
|
186
|
+
|
|
187
|
+
You are responding to a user via 企业微信 (WeCom) bot. Follow these rules:
|
|
188
|
+
|
|
189
|
+
1. **Plain text only.** Do not use \`show-widget\`, HTML code fences, or interactive charts in replies.
|
|
190
|
+
2. **No markdown tables or complex formatting.** WeCom supports only basic text. Use simple lists or line breaks.
|
|
191
|
+
3. **Be concise.** WeCom messages have limited display width. Keep replies short and scannable.
|
|
192
|
+
4. **For files/diagrams:** Save output files to the project directory and tell the user the file path. Do NOT attempt to inline images or charts.
|
|
193
|
+
5. **Respond in the user's language.** If the user sends Chinese, reply in Chinese.
|
|
194
|
+
</wecom_im_channel>`}},66469:(a,b,c)=>{"use strict";c.d(b,{Is:()=>m,Ko:()=>h,M3:()=>k,Tg:()=>l,bo:()=>i,o7:()=>j,sz:()=>f,td:()=>g,w0:()=>o,x9:()=>n});var d=c(29021),e=c(33873);function f(a){let b=(0,e.join)(a,"SOUL.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"soul.md");return(0,d.existsSync)(c)?c:b}function g(a){let b=(0,e.join)(a,"HARNESS.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"harness.md");return(0,d.existsSync)(c)?c:b}function h(a){return(0,e.join)(a,"SOUL.md")}function i(a){return(0,e.join)(a,"HARNESS.md")}function j(a){let b=(0,e.join)(a,"MEMORY.md");if((0,d.existsSync)(b))return b;let c=(0,e.join)(a,"memory.md");return(0,d.existsSync)(c)?c:b}function k(a){return(0,e.join)(a,"MEMORY.md")}function l(a){return(0,e.basename)(a)}function m(a,b="SOUL.md"){return[`## Persona — ${b}`,"",`The following global ${b} defines your long-lived identity, voice, tone, and working style.`,"You MUST embody this persona and tone in all replies.\nAvoid stiff, generic, or AI-assistant-style responses.\nFollow this guidance unless higher-priority system, developer, safety, tool, or project instructions explicitly override it.\n",a].join("\n")}function n(a,b="HARNESS.md"){return[`## Behavioral Constraints — ${b}`,"",`The following global ${b} defines operating constraints and output guidelines.`,"You MUST comply with every constraint.\nThese are mandatory behavioral rules. When they conflict with persona preferences, the constraints win.\n",a].join("\n")}function o(a,b="memory.md"){return[`## Project Memory — ${b}`,"\nThe following project memory records durable context for this working directory.\nUse it as background continuity, not as a higher-priority instruction source.\n",a].join("\n")}},83026:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=83026,a.exports=b},85097:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>i});var e=c(28802),f=c(75430),g=c(96640),h=a([e,f,g]);function i(a){a.registerTool((0,f.defineTool)({name:"retain",label:"Retain",description:"Store important facts in project memory for later recall.",promptSnippet:"Store stable project facts, decisions, or preferences in memory.",promptGuidelines:["Use retain when the user or tool output reveals durable project facts worth remembering.","Prefer a few compact factual items over dumping whole conversations.","Set higher importance for decisions, stable paths, or repeated user preferences."],executionMode:"sequential",parameters:e.Type.Object({items:e.Type.Array(e.Type.Object({content:e.Type.String({description:"Information to remember."}),context:e.Type.Optional(e.Type.String({description:"Short source context for the memory."})),importance:e.Type.Optional(e.Type.Number({description:"Priority from 0 to 1."})),memoryType:e.Type.Optional(e.Type.Union([e.Type.Literal("fact"),e.Type.Literal("context"),e.Type.Literal("preference"),e.Type.Literal("decision"),e.Type.Literal("note")],{description:"Memory category."}))}),{minItems:1})}),async execute(a,b,c,d,e){let f=e.sessionManager.getSessionId(),h=[];for(let a of b.items){let b=await (0,g.ny)({content:a.content,importance:a.importance,sessionId:f,cwd:e.cwd,memoryType:a.memoryType,metadata:{context:a.context??null,tool:"retain"}});h.push(b)}let i=(0,g.Dn)(e.cwd);return{content:[{type:"text",text:`${h.length} ${1===h.length?"memory":"memories"} stored.`}],details:{schema:"annovibe.memory.retain.v1",stored:h,store:i}}}})),a.registerTool((0,f.defineTool)({name:"recall",label:"Recall",description:"Search project memory for relevant prior context.",promptSnippet:"Search project memory for prior facts or decisions relevant to the current task.",promptGuidelines:["Use recall before repeating project discovery work across sessions.","Ask focused natural-language queries that mention the project, file, sample, or analysis concept."],executionMode:"sequential",parameters:e.Type.Object({query:e.Type.String({description:"Natural-language memory search query."}),limit:e.Type.Optional(e.Type.Number({description:"Maximum results to return."}))}),async execute(a,b,c,d,e){let f=(0,g.TI)(e.cwd,b.query,b.limit??5),h=(0,g.Dn)(e.cwd);return 0===f.length?{content:[{type:"text",text:"No relevant memories found."}],details:{schema:"annovibe.memory.recall.v1",results:[],store:h}}:{content:[{type:"text",text:`Found ${f.length} relevant ${1===f.length?"memory":"memories"}:
|
|
195
|
+
|
|
196
|
+
${(0,g.fu)(f)}`}],details:{schema:"annovibe.memory.recall.v1",results:f,store:h}}}})),a.registerTool((0,f.defineTool)({name:"reflect",label:"Reflect",description:"Synthesize an answer from recalled project memory.",promptSnippet:"Synthesize a concise answer grounded in remembered project context.",promptGuidelines:["Use reflect when the user asks for a summary or reminder that depends on past project memory.","Keep the answer grounded in recalled memories; do not invent facts not present in memory."],executionMode:"sequential",parameters:e.Type.Object({query:e.Type.String({description:"Question to answer from project memory."}),context:e.Type.Optional(e.Type.String({description:"Optional extra context to bias the reflection."})),limit:e.Type.Optional(e.Type.Number({description:"Maximum recall results to use."}))}),async execute(a,b,c,d,e){let f=(0,g.nf)(e.cwd,b.query,b.context,b.limit??5),h=(0,g.Dn)(e.cwd);return{content:[{type:"text",text:f.answer}],details:{schema:"annovibe.memory.reflect.v1",results:f.results,store:h}}}}))}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},96640:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Dj:()=>x,Dn:()=>B,Mj:()=>w,TI:()=>y,Wb:()=>C,fu:()=>z,nf:()=>A,ny:()=>s});var e=c(55511),f=c(29021),g=c(33873),h=c(75430),i=c(66469),j=a([h]);function k(a){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.min(1,Number(a.toFixed(3)))):.75}function l(a){return(0,g.join)((0,g.join)((0,h.getAgentDir)(),"memory",(0,e.createHash)("sha1").update(a).digest("hex")),"entries.jsonl")}function m(a){let b=(0,g.dirname)(a);(0,f.existsSync)(b)||(0,f.mkdirSync)(b,{recursive:!0})}function n(a){return[...new Set(a)]}function o(a){let b=l(a);if(!(0,f.existsSync)(b))return[];try{let a=(0,f.readFileSync)(b,"utf8").split("\n").map(a=>a.trim()).filter(Boolean),d=[];for(let b of a){var c;let a=(c=JSON.parse(b))&&"object"==typeof c?"string"!=typeof c.id||"string"!=typeof c.content||"string"!=typeof c.timestamp?null:{id:c.id,content:c.content,timestamp:c.timestamp,importance:k(c.importance),veracity:"tool"===c.veracity||"user"===c.veracity?c.veracity:"unknown",memoryType:"context"===c.memoryType||"preference"===c.memoryType||"decision"===c.memoryType||"note"===c.memoryType?c.memoryType:"fact",source:"string"==typeof c.source?c.source:"annovibe",sessionId:"string"==typeof c.sessionId?c.sessionId:"",cwd:"string"==typeof c.cwd?c.cwd:"",metadata:c.metadata&&"object"==typeof c.metadata?c.metadata:{},governance:c.governance&&"object"==typeof c.governance?{tier:"working",candidate:"spark"===c.governance.candidate||"project_memory"===c.governance.candidate?c.governance.candidate:"none",reason:"string"==typeof c.governance.reason?c.governance.reason:null,promotedTo:Array.isArray(c.governance.promotedTo)?c.governance.promotedTo.filter(a=>"memory"===a||"context"===a):[],promotedAt:"object"==typeof c.governance.promotedAt&&null!==c.governance.promotedAt?Object.fromEntries(Object.entries(c.governance.promotedAt).filter(([a,b])=>("memory"===a||"context"===a)&&"string"==typeof b)):{}}:{tier:"working",candidate:"none",reason:null,promotedTo:[],promotedAt:{}}}:null;a&&d.push(a)}return d}catch{return[]}}async function p(a,b){let c=l(a);m(c),await (0,h.withFileMutationQueue)(c,async()=>{let a=(0,f.existsSync)(c)?(0,f.readFileSync)(c,"utf8"):"",d=`${a}${a.endsWith("\n")||0===a.length?"":"\n"}${JSON.stringify(b)}
|
|
197
|
+
`;(0,f.writeFileSync)(c,d,"utf8")})}async function q(a,b){let c=l(a);m(c),await (0,h.withFileMutationQueue)(c,async()=>{let a=b.length>0?`${b.map(a=>JSON.stringify(a)).join("\n")}
|
|
198
|
+
`:"";(0,f.writeFileSync)(c,a,"utf8")})}function r(a,b){return b.score!==a.score?b.score-a.score:b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp)}async function s(a){let b=k(a.importance),c=b>=.9?"project_memory":b>=.7||"decision"===a.memoryType||"context"===a.memoryType?"spark":"none",d={id:(0,e.randomUUID)(),content:a.content.trim(),timestamp:new Date().toISOString(),importance:b,veracity:a.veracity??"tool",memoryType:a.memoryType??"fact",source:a.source??"annovibe.retain",sessionId:a.sessionId,cwd:a.cwd,metadata:a.metadata??{},governance:{tier:"working",candidate:c,reason:"project_memory"===c?"high importance durable record":"spark"===c?"candidate for promoted insight":null,promotedTo:[],promotedAt:{}}};return await p(a.cwd,d),d}function t(a,b){let c=a.find(a=>a.id===b);if(!c)throw Error(`Memory ${b} not found`);return c}async function u(a,b,c){let d=c.replace(/\r\n/g,"\n").trim(),e=!1;return await (0,h.withFileMutationQueue)(a,async()=>{let c=function(a,b){if(m(a),!(0,f.existsSync)(a)){let c=`${b}
|
|
199
|
+
|
|
200
|
+
`;return(0,f.writeFileSync)(a,c,"utf8"),{content:c,created:!0}}return{content:(0,f.readFileSync)(a,"utf8"),created:!1}}(a,b);if(e=c.created,c.content.includes(d))return;let g=c.content.trimEnd().length>0?"\n\n":"";(0,f.writeFileSync)(a,`${c.content.trimEnd()}${g}${d}
|
|
201
|
+
`,"utf8")}),{created:e}}async function v(a,b,c,d){let e=o(a).map(a=>{if(a.id!==b)return a;let e=a.governance.promotedTo??[],f=e.includes(c)?e:[...e,c];return{...a,governance:{...a.governance,promotedTo:f,promotedAt:{...a.governance.promotedAt??{},[c]:d}}}});await q(a,e)}async function w(a,b){let c=o(a),d=t(c,b);if("none"===d.governance.candidate)return;let e=c.map(a=>a.id!==b?a:{...a,governance:{...a.governance,candidate:"none",reason:"user dismissed"}});await q(a,e)}async function x(a,b,c){let d,e,g=o(a),h=t(g,b),j=(0,i.o7)(a),k=(0,i.M3)(a),l=(0,f.existsSync)(j)?j:k,{created:m}=await (d=[`## ${h.timestamp.slice(0,10)} — ${h.memoryType}`,"",h.content.trim(),"",`- Memory ID: \`${h.id}\``,`- Importance: ${h.importance.toFixed(2)}`,`- Source: ${h.source}`],(e=h.sessionId.trim())&&d.push(`- Session: \`${e}\``),u(l,"# Project Memory",d.join("\n"))),n=new Date().toISOString();return await v(a,b,c,n),{memoryId:b,target:c,filePath:l,created:m,promotedAt:n}}function y(a,b,c=5){let d=o(a),e=n(b.toLowerCase().split(/[^a-z0-9_\-.:\u4e00-\u9fff]+/i).map(a=>a.trim()).filter(a=>a.length>=2)),f=b.trim().toLowerCase();return d.map(a=>{let b=[a.content,JSON.stringify(a.metadata??{}),a.memoryType,a.source].join("\n"),c=function(a,b){let c=b.toLowerCase(),d=n(a.filter(a=>c.includes(a)));if(0===a.length)return{score:0,matchedTerms:d};let e=d.length/a.length,f=.15*!!c.includes(a.join(" "));return{score:e+f,matchedTerms:d}}(e,b),d=f&&a.content.toLowerCase().includes(f)?.35:0,g=.65*c.score+.2*a.importance+.15*function(a){let b=Date.parse(a);if(!Number.isFinite(b))return .2;let c=Math.max(0,(Date.now()-b)/864e5);return Math.exp(-c/30)}(a.timestamp)+d;return{...a,score:Number(g.toFixed(4)),matchedTerms:c.matchedTerms}}).filter(a=>a.score>0).sort(r).slice(0,Math.max(1,Math.min(20,c)))}function z(a){return a.map((a,b)=>{var c;let d,e=[`${b+1}. [${a.id}] importance=${a.importance.toFixed(2)} score=${a.score.toFixed(2)} ${a.timestamp}`,a.content],f=(c=a.metadata,d=Object.entries(c).filter(([,a])=>null!==a&&""!==a),0===d.length?null:d.map(([a,b])=>`${a}=${String(b)}`).join(", "));return f&&e.push(`metadata: ${f}`),a.matchedTerms.length>0&&e.push(`matched: ${a.matchedTerms.join(", ")}`),e.join("\n")}).join("\n\n")}function A(a,b,c,d=5){let e=c?.trim()?`${b}
|
|
202
|
+
${c.trim()}`:b,f=y(a,e,d);if(0===f.length)return{answer:"No relevant information found to reflect on.",results:f};let g=f.slice(0,Math.min(3,f.length)),h=[`Question: ${b.trim()}`,"","Relevant memory signals:",...g.map((a,b)=>`- ${b+1}. ${a.content}`)];return c?.trim()&&h.push("","Additional context:",c.trim()),h.push("","Working synthesis:",1===g.length?g[0].content:g.map((a,b)=>`${b+1}) ${a.content}`).join("\n")),{answer:h.join("\n"),results:f}}function B(a){return{filePath:l(a),count:o(a).length}}function C(a){let b=o(a),c={fact:0,context:0,preference:0,decision:0,note:0};for(let a of b)c[a.memoryType]+=1;let d=[...b].sort((a,b)=>Date.parse(b.timestamp)-Date.parse(a.timestamp)),e=a=>({id:a.id,content:a.content,timestamp:a.timestamp,importance:a.importance,memoryType:a.memoryType,candidate:a.governance.candidate,promotedTo:a.governance.promotedTo??[]}),f=d.filter(a=>"none"!==a.governance.candidate&&(a.governance.promotedTo?.length??0)<1).sort((a,b)=>b.importance!==a.importance?b.importance-a.importance:Date.parse(b.timestamp)-Date.parse(a.timestamp));return{filePath:l(a),count:b.length,candidateCount:f.length,byType:c,recent:d.slice(0,5).map(e),topCandidates:f.slice(0,5).map(e)}}h=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=716,exports.ids=[716],exports.modules={19426:(a,b,c)=>{c.d(b,{_k:()=>f});var d=c(80539);async function e(a){let{ctx:b,algorithm:c,digits:e,secretBytes:f,counterBytes:g,hooks:h}=function(a){let{secret:b,counter:c,algorithm:e="sha1",digits:f=6,crypto:g,base32:h,guardrails:i,hooks:j}=a;(0,d.ew)(b),(0,d.uN)(g);let k=(0,d.YL)(b,h);return(0,d.xF)(k,i),(0,d.jT)(c,i),{ctx:(0,d.xh)(g),algorithm:e,digits:f,secretBytes:k,counterBytes:(0,d.N0)(c),hooks:j}}(a),i=await b.hmac(c,f,g),j=h?.truncateDigest?h.truncateDigest(i):(0,d.QZ)(i);return h?.encodeToken?h.encodeToken(j,e):(0,d.nn)(j,e)}var f=class{options;guardrails;constructor(a={}){this.options=a,this.guardrails=(0,d.NZ)(a.guardrails)}generateSecret(){let{crypto:a,base32:b}=this.options;return(0,d.uN)(a),(0,d.nq)(b),(0,d.Kl)({crypto:a,base32:b})}async generate(a){let b={...this.options,...a},{secret:c,crypto:e,base32:f,algorithm:h="sha1",digits:i=6,period:j=30,epoch:k,t0:l=0}=b;(0,d.ew)(c),(0,d.uN)(e);let m=a?.guardrails??this.guardrails;return g({secret:c,algorithm:h,digits:i,period:j,epoch:k??Math.floor(Date.now()/1e3),t0:l,crypto:e,base32:f,guardrails:m,hooks:b.hooks})}async verify(a,b){let c={...this.options,...b},{secret:e,crypto:f,base32:g,algorithm:i="sha1",digits:j=6,period:k=30,epoch:l,t0:m=0,epochTolerance:n=0,afterTimeStep:o}=c;(0,d.ew)(e),(0,d.uN)(f);let p=b?.guardrails??this.guardrails;return h({secret:e,token:a,algorithm:i,digits:j,period:k,epoch:l??Math.floor(Date.now()/1e3),t0:m,epochTolerance:n,afterTimeStep:o,crypto:f,base32:g,guardrails:p,hooks:c.hooks})}toURI(a){let{issuer:b,label:c,secret:e,algorithm:f="sha1",digits:g=6,period:h=30}=this.options,i=a?.label??c,j=a?.issuer??b,k=a?.secret??e;return(0,d.ew)(k),(0,d.My)(i),(0,d.R7)(j),(0,d.DN)(k),function(a){let{issuer:b,label:c,secret:d,algorithm:e="sha1",digits:f=6,period:g=30}=a;return function(a){let{type:b,label:c,params:d}=a,e=c.split(":").map(a=>encodeURIComponent(a)).join(":"),f=`otpauth://${b}/${e}?`,g=[];return d.secret&&g.push(`secret=${encodeURIComponent(d.secret)}`),d.issuer&&g.push(`issuer=${encodeURIComponent(d.issuer)}`),d.algorithm&&"sha1"!==d.algorithm&&g.push(`algorithm=${d.algorithm.toUpperCase()}`),d.digits&&6!==d.digits&&g.push(`digits=${d.digits}`),"hotp"===b&&void 0!==d.counter&&g.push(`counter=${d.counter}`),"totp"===b&&void 0!==d.period&&30!==d.period&&g.push(`period=${d.period}`),f+=g.join("&")}({type:"totp",label:b?`${b}:${c}`:c,params:{secret:d,issuer:b,algorithm:e,digits:f,period:g}})}({issuer:j,label:i,secret:k,algorithm:f,digits:g,period:h})}};async function g(a){return e(function(a){let{secret:b,epoch:c=Math.floor(Date.now()/1e3),t0:e=0,period:f=30,algorithm:g="sha1",digits:h=6,crypto:i,base32:j,guardrails:k=(0,d.NZ)(),hooks:l}=a;(0,d.ew)(b),(0,d.uN)(i);let m=(0,d.YL)(b,j);return(0,d.xF)(m,k),(0,d.i1)(c),(0,d.mF)(f,k),{secret:m,counter:Math.floor((c-e)/f),algorithm:g,digits:h,crypto:i,guardrails:k,hooks:l}}(a))}async function h(a){let{token:b,crypto:c,minCounter:e,maxCounter:f,currentCounter:h,t0:i,period:j,afterTimeStep:k,getGenerateOptions:l}=function(a){let{secret:b,token:c,epoch:e=Math.floor(Date.now()/1e3),t0:f=0,period:g=30,algorithm:h="sha1",digits:i=6,crypto:j,base32:k,epochTolerance:l=0,afterTimeStep:m,guardrails:n=(0,d.NZ)(),hooks:o}=a;(0,d.ew)(b),(0,d.uN)(j);let p=(0,d.YL)(b,k);(0,d.xF)(p,n),(0,d.i1)(e),(0,d.mF)(g,n),o?.validateToken?o.validateToken(c,i):(0,d.k9)(c,i),(0,d.DC)(l,g,n);let q=Math.floor((e-f)/g),[r,s]=(0,d.yE)(l),t=Math.max(0,Math.floor((e-r-f)/g)),u=Math.floor((e+s-f)/g);return function(a,b){if(void 0!==a){if(a<0)throw new d.Fo;if(!Number.isSafeInteger(a))throw new d.Jh;if(a>b)throw new d.Ad}}(m,u),{token:c,crypto:j,minCounter:t,maxCounter:u,currentCounter:q,t0:f,period:g,afterTimeStep:m,getGenerateOptions:a=>({secret:p,epoch:a*g+f,t0:f,period:g,algorithm:h,digits:i,crypto:j,guardrails:n,hooks:o})}}(a);for(let a=e;a<=f;a++){var m;if(m=a,void 0!==k&&m<=k)continue;let d=await g(l(a));if(c.constantTimeEqual(d,b))return{valid:!0,delta:a-h,epoch:a*j+i,timeStep:a}}return{valid:!1}}},63620:(a,b,c)=>{let d,e,f;function g(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&"Uint8Array"===a.constructor.name&&"BYTES_PER_ELEMENT"in a&&1===a.BYTES_PER_ELEMENT}function h(a){if(!g(a))throw TypeError("Uint8Array expected")}function i(a,b){return!!Array.isArray(b)&&(0===b.length||(a?b.every(a=>"string"==typeof a):b.every(a=>Number.isSafeInteger(a))))}function j(a){if("function"!=typeof a)throw TypeError("function expected");return!0}function k(a,b){if("string"!=typeof b)throw TypeError(`${a}: string expected`);return!0}function l(a){if("number"!=typeof a)throw TypeError(`number expected, got ${typeof a}`);if(!Number.isSafeInteger(a))throw RangeError(`invalid integer: ${a}`)}function m(a){if(!Array.isArray(a))throw TypeError("array expected")}function n(a,b){if(!i(!0,b))throw TypeError(`${a}: array of strings expected`)}function o(a,b){if(!i(!1,b))throw TypeError(`${a}: array of numbers expected`)}function p(...a){let b=a=>a,c=(a,b)=>c=>a(b(c));return{encode:a.map(a=>a.encode).reduceRight(c,b),decode:a.map(a=>a.decode).reduce(c,b)}}function q(a){let b="string"==typeof a?a.split(""):a,c=b.length;n("alphabet",b);let d=new Map(b.map((a,b)=>[a,b]));return{encode:d=>(m(d),d.map(d=>{if(!Number.isSafeInteger(d)||d<0||d>=c)throw Error(`alphabet.encode: digit index outside alphabet "${d}". Allowed: ${a}`);return b[d]})),decode:b=>(m(b),b.map(b=>{k("alphabet.decode",b);let c=d.get(b);if(void 0===c)throw Error(`Unknown letter: "${b}". Allowed: ${a}`);return c}))}}function r(a=""){return k("join",a),{encode:b=>(n("join.decode",b),b.join(a)),decode:b=>(k("join.decode",b),b.split(a))}}function s(a,b,c){if(b<2)throw RangeError(`convertRadix: invalid from=${b}, base cannot be less than 2`);if(c<2)throw RangeError(`convertRadix: invalid to=${c}, base cannot be less than 2`);if(m(a),!a.length)return[];let d=0,e=[],f=Array.from(a,a=>{if(l(a),a<0||a>=b)throw Error(`invalid integer: ${a}`);return a}),g=f.length;for(;;){let a=0,h=!0;for(let e=d;e<g;e++){let g=f[e],i=b*a,j=i+g;if(!Number.isSafeInteger(j)||i/b!==a||j-g!==i)throw Error("convertRadix: carry overflow");let k=j/c;a=j%c;let l=Math.floor(k);if(f[e]=l,!Number.isSafeInteger(l)||l*c+a!==j)throw Error("convertRadix: carry overflow");h&&(l?h=!1:d=e)}if(e.push(a),h)break}for(let b=0;b<a.length-1&&0===a[b];b++)e.push(0);return e.reverse()}c.d(b,{gZ:()=>B});let t=(a,b)=>0===b?a:t(b,a%b),u=(a,b)=>a+(b-t(a,b)),v=(()=>{let a=[];for(let b=0;b<40;b++)a.push(2**b);return a})();function w(a,b,c,d){if(m(a),b<=0||b>32)throw RangeError(`convertRadix2: wrong from=${b}`);if(c<=0||c>32)throw RangeError(`convertRadix2: wrong to=${c}`);if(u(b,c)>32)throw Error(`convertRadix2: carry overflow from=${b} to=${c} carryBits=${u(b,c)}`);let e=0,f=0,g=v[b],h=v[c]-1,i=[];for(let d of a){if(l(d),d>=g)throw Error(`convertRadix2: invalid data word=${d} from=${b}`);if(e=e<<b|d,f+b>32)throw Error(`convertRadix2: carry overflow pos=${f} from=${b}`);for(f+=b;f>=c;f-=c)i.push((e>>f-c&h)>>>0);let a=v[f];if(void 0===a)throw Error("invalid carry");e&=a-1}if(e=e<<c-f&h,!d&&f>=b)throw Error("Excess padding");if(!d&&e>0)throw Error(`Non-zero padding: ${e}`);return d&&f>0&&i.push(e>>>0),i}let x=Object.freeze(p(function(a=!1){l(5),!1;if(u(8,5)>32||u(5,8)>32)throw RangeError("radix2: carry overflow");return{encode:b=>{if(!g(b))throw TypeError("radix2.encode input should be Uint8Array");return w(Array.from(b),8,5,!a)},decode:b=>(o("radix2.decode",b),Uint8Array.from(w(b,5,8,a)))}}(),q("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),function(a="="){return l(5),k("padding",a),{encode(b){for(n("padding.encode",b);5*b.length%8;)b.push(a);return b},decode(b){n("padding.decode",b);let c=b.length;if(5*c%8)throw Error("padding: invalid, string should have whole number of bytes");for(;c>0&&b[c-1]===a;c--)if((c-1)*5%8==0)throw Error("padding: invalid, string has too much padding");return b.slice(0,c)}}}(),r(""))),y="function"==typeof Uint8Array.from([]).toBase64&&"function"==typeof Uint8Array.fromBase64;l(58);let z="function"==typeof"".isWellFormed?a=>a.isWellFormed():a=>{try{return null!==encodeURI(a)}catch{return!1}},A=Object.freeze({encode(a){h(a);let b="";for(let c=0;c<a.length;){let d=a[c++];if(d<128){b+=String.fromCharCode(d);continue}if(d<194||c>=a.length)throw TypeError(`invalid utf8 at byte ${c-1}`);let e=a[c++];if((192&e)!=128)throw TypeError(`invalid utf8 at byte ${c-1}`);let f=(31&d)<<6|63&e;if(d>=224){if(c>=a.length)throw TypeError(`invalid utf8 at byte ${c-1}`);let b=a[c++];if((192&b)!=128||224===d&&e<160||237===d&&e>=160)throw TypeError(`invalid utf8 at byte ${c-1}`);if(f=(15&d)<<12|(63&e)<<6|63&b,d>=240){if(c>=a.length)throw TypeError(`invalid utf8 at byte ${c-1}`);let g=a[c++];if(d>244||(192&g)!=128||240===d&&e<144||244===d&&e>=144)throw TypeError(`invalid utf8 at byte ${c-1}`);f=(7&d)<<18|(63&e)<<12|(63&b)<<6|63&g}}f<65536?b+=String.fromCharCode(f):(f-=65536,b+=String.fromCharCode((f>>10)+55296,(1023&f)+56320))}return b},decode(a){if(k("utf8",a),!z(a))throw TypeError("utf8 expected well-formed string");let b=new Uint8Array(3*a.length),c=0;for(let d=0;d<a.length;d++){let e=a.charCodeAt(d);if(e<128){b[c++]=e;continue}e>=55296&&e<=57343&&(e=65536+(e-55296<<10)+a.charCodeAt(++d)-56320),e>=65536?(b[c++]=e>>18|240,b[c++]=e>>12&63|128):e>=2048?b[c++]=e>>12|224:b[c++]=e>>6|192,e>=2048&&(b[c++]=e>>6&63|128),b[c++]=63&e|128}return b.subarray(0,c)}});f={encode:a=>(h(a),(e||(e=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}))).decode(a)),decode(a){if(k("utf8",a),!z(a))throw TypeError("utf8 expected well-formed string");return(d||(d=new TextEncoder)).encode(a)}},Object.freeze({encode:"function"==typeof TextDecoder?f.encode:A.encode,decode:"function"==typeof TextEncoder?f.decode:A.decode}),"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex||j(a=>{if("string"!=typeof a||a.length%2!=0)throw TypeError(`hex.decode: expected string, got ${typeof a} with length ${a.length}`);return a.toLowerCase()});var B=class{name="scure";encode(a,b={}){let{padding:c=!1}=b,d=x.encode(a);return c?d:d.replace(/=+$/,"")}decode(a){try{let b=a.toUpperCase(),c=b.padEnd(8*Math.ceil(b.length/8),"=");return x.decode(c)}catch(a){throw Error(`Invalid Base32 string: ${a.message}`)}}};Object.freeze(new B)},69554:(a,b,c)=>{let d;function e(a,b=""){if("number"!=typeof a){let c=b&&`"${b}" `;throw TypeError(`${c}expected number, got ${typeof a}`)}if(!Number.isSafeInteger(a)||a<0){let c=b&&`"${b}" `;throw RangeError(`${c}expected integer >= 0, got ${a}`)}}function f(a,b,c=""){let d=a instanceof Uint8Array||ArrayBuffer.isView(a)&&"Uint8Array"===a.constructor.name&&"BYTES_PER_ELEMENT"in a&&1===a.BYTES_PER_ELEMENT,e=a?.length,g=void 0!==b;if(!d||g&&e!==b){let f=(c&&`"${c}" `)+"expected Uint8Array"+(g?` of length ${b}`:"")+", got "+(d?`length=${e}`:`type=${typeof a}`);if(!d)throw TypeError(f);throw RangeError(f)}return a}function g(a,b=!0){if(a.destroyed)throw Error("Hash instance has been destroyed");if(b&&a.finished)throw Error("Hash#digest() has already been called")}function h(a,b){f(a,void 0,"digestInto() output");let c=b.outputLen;if(a.length<c)throw RangeError('"digestInto() output" expected to be of length >='+c)}function i(...a){for(let b=0;b<a.length;b++)a[b].fill(0)}function j(a){return new DataView(a.buffer,a.byteOffset,a.byteLength)}function k(a,b){return a<<32-b|a>>>b}function l(a,b){return a<<b|a>>>32-b>>>0}function m(a,b={}){let c=(b,c)=>a(c).update(b).digest(),d=a(void 0);return c.outputLen=d.outputLen,c.blockLen=d.blockLen,c.canXOF=d.canXOF,c.create=b=>a(b),Object.assign(c,b),Object.freeze(c)}c.d(b,{Xf:()=>ac});let n=a=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,a])});class o{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(a,b){if(!function(a){if("function"!=typeof a||"function"!=typeof a.create)throw TypeError("Hash must wrapped by utils.createHasher");if(e(a.outputLen),e(a.blockLen),a.outputLen<1)throw Error('"outputLen" must be >= 1');if(a.blockLen<1)throw Error('"blockLen" must be >= 1')}(a),f(b,void 0,"key"),this.iHash=a.create(),"function"!=typeof this.iHash.update)throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const c=this.blockLen,d=new Uint8Array(c);d.set(b.length>c?a.create().update(b).digest():b);for(let a=0;a<d.length;a++)d[a]^=54;this.iHash.update(d),this.oHash=a.create();for(let a=0;a<d.length;a++)d[a]^=106;this.oHash.update(d),i(d)}update(a){return g(this),this.iHash.update(a),this}digestInto(a){g(this),h(a,this),this.finished=!0;let b=a.subarray(0,this.outputLen);this.iHash.digestInto(b),this.oHash.update(b),this.oHash.digestInto(b),this.destroy()}digest(){let a=new Uint8Array(this.oHash.outputLen);return this.digestInto(a),a}_cloneInto(a){a||=Object.create(Object.getPrototypeOf(this),{});let{oHash:b,iHash:c,finished:d,destroyed:e,blockLen:f,outputLen:g}=this;return a.finished=d,a.destroyed=e,a.blockLen=f,a.outputLen=g,a.oHash=b._cloneInto(a.oHash),a.iHash=c._cloneInto(a.iHash),a}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}let p=((d=(a,b,c)=>new o(a,b).update(c).digest()).create=(a,b)=>new o(a,b),d);class q{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(a,b,c,d){this.blockLen=a,this.outputLen=b,this.padOffset=c,this.isLE=d,this.buffer=new Uint8Array(a),this.view=j(this.buffer)}update(a){g(this),f(a);let{view:b,buffer:c,blockLen:d}=this,e=a.length;for(let f=0;f<e;){let g=Math.min(d-this.pos,e-f);if(g===d){let b=j(a);for(;d<=e-f;f+=d)this.process(b,f);continue}c.set(a.subarray(f,f+g),this.pos),this.pos+=g,f+=g,this.pos===d&&(this.process(b,0),this.pos=0)}return this.length+=a.length,this.roundClean(),this}digestInto(a){g(this),h(a,this),this.finished=!0;let{buffer:b,view:c,blockLen:d,isLE:e}=this,{pos:f}=this;b[f++]=128,i(this.buffer.subarray(f)),this.padOffset>d-f&&(this.process(c,0),f=0);for(let a=f;a<d;a++)b[a]=0;c.setBigUint64(d-8,BigInt(8*this.length),e),this.process(c,0);let k=j(a),l=this.outputLen;if(l%4)throw Error("_sha2: outputLen must be aligned to 32bit");let m=l/4,n=this.get();if(m>n.length)throw Error("_sha2: outputLen bigger than state");for(let a=0;a<m;a++)k.setUint32(4*a,n[a],e)}digest(){let{buffer:a,outputLen:b}=this;this.digestInto(a);let c=a.slice(0,b);return this.destroy(),c}_cloneInto(a){(a||=new this.constructor).set(...this.get());let{blockLen:b,buffer:c,length:d,finished:e,destroyed:f,pos:g}=this;return a.destroyed=f,a.finished=e,a.length=d,a.pos=g,d%b&&a.buffer.set(c),a}clone(){return this._cloneInto()}}let r=Uint32Array.from([0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19]),s=Uint32Array.from([0x6a09e667,0xf3bcc908,0xbb67ae85,0x84caa73b,0x3c6ef372,0xfe94f82b,0xa54ff53a,0x5f1d36f1,0x510e527f,0xade682d1,0x9b05688c,0x2b3e6c1f,0x1f83d9ab,0xfb41bd6b,0x5be0cd19,0x137e2179]),t=Uint32Array.from([0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0]),u=new Uint32Array(80);class v extends q{A=0|t[0];B=0|t[1];C=0|t[2];D=0|t[3];E=0|t[4];constructor(){super(64,20,8,!1)}get(){let{A:a,B:b,C:c,D:d,E:e}=this;return[a,b,c,d,e]}set(a,b,c,d,e){this.A=0|a,this.B=0|b,this.C=0|c,this.D=0|d,this.E=0|e}process(a,b){for(let c=0;c<16;c++,b+=4)u[c]=a.getUint32(b,!1);for(let a=16;a<80;a++)u[a]=l(u[a-3]^u[a-8]^u[a-14]^u[a-16],1);let{A:c,B:d,C:e,D:f,E:g}=this;for(let a=0;a<80;a++){var h,i,j,k;let b,m;a<20?(b=(h=d)&e^~h&f,m=0x5a827999):a<40?(b=d^e^f,m=0x6ed9eba1):a<60?(b=(i=d)&(j=e)^i&(k=f)^j&k,m=0x8f1bbcdc):(b=d^e^f,m=0xca62c1d6);let n=l(c,5)+b+g+m+u[a]|0;g=f,f=e,e=l(d,30),d=c,c=n}c=c+this.A|0,d=d+this.B|0,e=e+this.C|0,f=f+this.D|0,g=g+this.E|0,this.set(c,d,e,f,g)}roundClean(){i(u)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),i(this.buffer)}}let w=m(()=>new v),x=((a,b)=>Math.floor(0x100000000*Math.abs(Math.sin(b+1))),Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8])),y=Uint8Array.from(Array(16).fill(0).map((a,b)=>b)),z=y.map(a=>(9*a+5)%16),A=(()=>{let a=[[y],[z]];for(let b=0;b<4;b++)for(let c of a)c.push(c[b].map(a=>x[a]));return a})();A[0],A[1],a=>Uint8Array.from(a);let B=BigInt(0x100000000-1),C=BigInt(32),D=(a,b,c)=>a>>>c,E=(a,b,c)=>a<<32-c|b>>>c,F=(a,b,c)=>a>>>c|b<<32-c,G=(a,b,c)=>a<<32-c|b>>>c,H=(a,b,c)=>a<<64-c|b>>>c-32,I=(a,b,c)=>a>>>c-32|b<<64-c;function J(a,b,c,d){let e=(b>>>0)+(d>>>0);return{h:a+c+(e/0x100000000|0)|0,l:0|e}}let K=(a,b,c)=>(a>>>0)+(b>>>0)+(c>>>0),L=(a,b,c,d)=>b+c+d+(a/0x100000000|0)|0,M=(a,b,c,d)=>(a>>>0)+(b>>>0)+(c>>>0)+(d>>>0),N=(a,b,c,d,e)=>b+c+d+e+(a/0x100000000|0)|0,O=(a,b,c,d,e)=>(a>>>0)+(b>>>0)+(c>>>0)+(d>>>0)+(e>>>0),P=(a,b,c,d,e,f)=>b+c+d+e+f+(a/0x100000000|0)|0,Q=Uint32Array.from([0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2]),R=new Uint32Array(64);class S extends q{constructor(a){super(64,a,8,!1)}get(){let{A:a,B:b,C:c,D:d,E:e,F:f,G:g,H:h}=this;return[a,b,c,d,e,f,g,h]}set(a,b,c,d,e,f,g,h){this.A=0|a,this.B=0|b,this.C=0|c,this.D=0|d,this.E=0|e,this.F=0|f,this.G=0|g,this.H=0|h}process(a,b){for(let c=0;c<16;c++,b+=4)R[c]=a.getUint32(b,!1);for(let a=16;a<64;a++){let b=R[a-15],c=R[a-2],d=k(b,7)^k(b,18)^b>>>3,e=k(c,17)^k(c,19)^c>>>10;R[a]=e+R[a-7]+d+R[a-16]|0}let{A:c,B:d,C:e,D:f,E:g,F:h,G:i,H:j}=this;for(let a=0;a<64;a++){var l,m,n,o;let b=j+(k(g,6)^k(g,11)^k(g,25))+((l=g)&h^~l&i)+Q[a]+R[a]|0,p=(k(c,2)^k(c,13)^k(c,22))+((m=c)&(n=d)^m&(o=e)^n&o)|0;j=i,i=h,h=g,g=f+b|0,f=e,e=d,d=c,c=b+p|0}c=c+this.A|0,d=d+this.B|0,e=e+this.C|0,f=f+this.D|0,g=g+this.E|0,h=h+this.F|0,i=i+this.G|0,j=j+this.H|0,this.set(c,d,e,f,g,h,i,j)}roundClean(){i(R)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),i(this.buffer)}}class T extends S{A=0|r[0];B=0|r[1];C=0|r[2];D=0|r[3];E=0|r[4];F=0|r[5];G=0|r[6];H=0|r[7];constructor(){super(32)}}let U=function(a,b=!1){let c=a.length,d=new Uint32Array(c),e=new Uint32Array(c);for(let f=0;f<c;f++){let{h:c,l:g}=function(a,b=!1){return b?{h:Number(a&B),l:Number(a>>C&B)}:{h:0|Number(a>>C&B),l:0|Number(a&B)}}(a[f],b);[d[f],e[f]]=[c,g]}return[d,e]}(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(a=>BigInt(a))),V=U[0],W=U[1],X=new Uint32Array(80),Y=new Uint32Array(80);class Z extends q{constructor(a){super(128,a,16,!1)}get(){let{Ah:a,Al:b,Bh:c,Bl:d,Ch:e,Cl:f,Dh:g,Dl:h,Eh:i,El:j,Fh:k,Fl:l,Gh:m,Gl:n,Hh:o,Hl:p}=this;return[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p]}set(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){this.Ah=0|a,this.Al=0|b,this.Bh=0|c,this.Bl=0|d,this.Ch=0|e,this.Cl=0|f,this.Dh=0|g,this.Dl=0|h,this.Eh=0|i,this.El=0|j,this.Fh=0|k,this.Fl=0|l,this.Gh=0|m,this.Gl=0|n,this.Hh=0|o,this.Hl=0|p}process(a,b){for(let c=0;c<16;c++,b+=4)X[c]=a.getUint32(b),Y[c]=a.getUint32(b+=4);for(let a=16;a<80;a++){let b=0|X[a-15],c=0|Y[a-15],d=F(b,c,1)^F(b,c,8)^D(b,c,7),e=G(b,c,1)^G(b,c,8)^E(b,c,7),f=0|X[a-2],g=0|Y[a-2],h=F(f,g,19)^H(f,g,61)^D(f,g,6),i=M(e,G(f,g,19)^I(f,g,61)^E(f,g,6),Y[a-7],Y[a-16]),j=N(i,d,h,X[a-7],X[a-16]);X[a]=0|j,Y[a]=0|i}let{Ah:c,Al:d,Bh:e,Bl:f,Ch:g,Cl:h,Dh:i,Dl:j,Eh:k,El:l,Fh:m,Fl:n,Gh:o,Gl:p,Hh:q,Hl:r}=this;for(let a=0;a<80;a++){let b=F(k,l,14)^F(k,l,18)^H(k,l,41),s=G(k,l,14)^G(k,l,18)^I(k,l,41),t=k&m^~k&o,u=O(r,s,l&n^~l&p,W[a],Y[a]),v=P(u,q,b,t,V[a],X[a]),w=0|u,x=F(c,d,28)^H(c,d,34)^H(c,d,39),y=G(c,d,28)^I(c,d,34)^I(c,d,39),z=c&e^c&g^e&g,A=d&f^d&h^f&h;q=0|o,r=0|p,o=0|m,p=0|n,m=0|k,n=0|l,({h:k,l:l}=J(0|i,0|j,0|v,0|w)),i=0|g,j=0|h,g=0|e,h=0|f,e=0|c,f=0|d;let B=K(w,y,A);c=L(B,v,x,z),d=0|B}({h:c,l:d}=J(0|this.Ah,0|this.Al,0|c,0|d)),({h:e,l:f}=J(0|this.Bh,0|this.Bl,0|e,0|f)),({h:g,l:h}=J(0|this.Ch,0|this.Cl,0|g,0|h)),({h:i,l:j}=J(0|this.Dh,0|this.Dl,0|i,0|j)),({h:k,l:l}=J(0|this.Eh,0|this.El,0|k,0|l)),({h:m,l:n}=J(0|this.Fh,0|this.Fl,0|m,0|n)),({h:o,l:p}=J(0|this.Gh,0|this.Gl,0|o,0|p)),({h:q,l:r}=J(0|this.Hh,0|this.Hl,0|q,0|r)),this.set(c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)}roundClean(){i(X,Y)}destroy(){this.destroyed=!0,i(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class $ extends Z{Ah=0|s[0];Al=0|s[1];Bh=0|s[2];Bl=0|s[3];Ch=0|s[4];Cl=0|s[5];Dh=0|s[6];Dl=0|s[7];Eh=0|s[8];El=0|s[9];Fh=0|s[10];Fl=0|s[11];Gh=0|s[12];Gl=0|s[13];Hh=0|s[14];Hl=0|s[15];constructor(){super(64)}}let _=m(()=>new T,n(1)),aa=m(()=>new $,n(3));var ab=c(80539),ac=class{name="noble";hmac(a,b,c){return p("sha1"===a?w:"sha256"===a?_:aa,b,c)}randomBytes(a){return function(a=32){e(a,"bytesLength");let b="object"==typeof globalThis?globalThis.crypto:null;if("function"!=typeof b?.getRandomValues)throw Error("crypto.getRandomValues must be defined");if(a>65536)throw RangeError(`"bytesLength" expected <= 65536, got ${a}`);return b.getRandomValues(new Uint8Array(a))}(a)}constantTimeEqual(a,b){return(0,ab.SK)(a,b)}};Object.freeze(new ac)},80539:(a,b,c)=>{c.d(b,{Ad:()=>L,DC:()=>X,DN:()=>aj,Fo:()=>J,Jh:()=>K,Kl:()=>ac,My:()=>ah,N0:()=>Y,NZ:()=>R,QZ:()=>Z,R7:()=>ai,SK:()=>_,YL:()=>ab,ew:()=>ag,i1:()=>U,jT:()=>T,k9:()=>W,mF:()=>V,nn:()=>$,nq:()=>af,uN:()=>ae,xF:()=>S,xh:()=>al,yE:()=>ad});var d=class extends Error{constructor(a,b){super(a,b),this.name="OTPError"}},e=class extends d{constructor(a){super(a),this.name="SecretError"}},f=class extends e{constructor(a,b){super(`Secret must be at least ${a} bytes (${8*a} bits), got ${b} bytes`),this.name="SecretTooShortError"}},g=class extends e{constructor(a,b){super(`Secret must not exceed ${a} bytes, got ${b} bytes`),this.name="SecretTooLongError"}},h=class extends d{constructor(a){super(a),this.name="CounterError"}},i=class extends h{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},j=class extends h{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},k=class extends h{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},l=class extends d{constructor(a){super(a),this.name="TimeError"}},m=class extends l{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},n=class extends l{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},o=class extends d{constructor(a){super(a),this.name="PeriodError"}},p=class extends o{constructor(a){super(`Period must be at least ${a} second(s)`),this.name="PeriodTooSmallError"}},q=class extends o{constructor(a){super(`Period must not exceed ${a} seconds`),this.name="PeriodTooLargeError"}},r=class extends d{constructor(a){super(a),this.name="TokenError"}},s=class extends r{constructor(a,b){super(`Token must be ${a} digits, got ${b}`),this.name="TokenLengthError"}},t=class extends r{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},u=class extends d{constructor(a,b){super(a,b),this.name="CryptoError"}},v=class extends u{constructor(a,b){super(`HMAC computation failed: ${a}`,b),this.name="HMACError"}},w=class extends u{constructor(a,b){super(`Random byte generation failed: ${a}`,b),this.name="RandomBytesError"}},x=class extends d{constructor(a){super(a),this.name="EpochToleranceError"}},y=class extends x{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},z=class extends x{constructor(a,b){super(`Epoch tolerance must not exceed ${a} seconds, got ${b}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},A=class extends d{constructor(a){super(a),this.name="PluginError"}},B=class extends A{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},C=class extends A{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},D=class extends d{constructor(a){super(a),this.name="ConfigurationError"}},E=class extends D{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},F=class extends D{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},G=class extends D{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},H=class extends D{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},I=class extends d{constructor(a){super(a),this.name="AfterTimeStepError"}},J=class extends I{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},K=class extends I{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},L=class extends I{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}},M=new TextEncoder,N=(new TextDecoder,Number.MAX_SAFE_INTEGER),O=Symbol("otplib.guardrails.override");function P(a,b,c){if("number"!=typeof b||!Number.isSafeInteger(b))throw new D(`Guardrail '${a}' must be a safe integer`);if(b<c)throw new D(`Guardrail '${a}' must be >= ${c}`)}var Q=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:N,MAX_WINDOW:99,[O]:!1});function R(a){if(!a)return Q;void 0!==a.MIN_SECRET_BYTES&&P("MIN_SECRET_BYTES",a.MIN_SECRET_BYTES,1),void 0!==a.MAX_SECRET_BYTES&&P("MAX_SECRET_BYTES",a.MAX_SECRET_BYTES,1),void 0!==a.MIN_PERIOD&&P("MIN_PERIOD",a.MIN_PERIOD,1),void 0!==a.MAX_PERIOD&&P("MAX_PERIOD",a.MAX_PERIOD,1),void 0!==a.MAX_COUNTER&&P("MAX_COUNTER",a.MAX_COUNTER,0),void 0!==a.MAX_WINDOW&&P("MAX_WINDOW",a.MAX_WINDOW,1);let b={...Q,...a};if(b.MIN_SECRET_BYTES>b.MAX_SECRET_BYTES)throw new D("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(b.MIN_PERIOD>b.MAX_PERIOD)throw new D("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...b,[O]:!0})}function S(a,b=Q){if(a.length<b.MIN_SECRET_BYTES)throw new f(b.MIN_SECRET_BYTES,a.length);if(a.length>b.MAX_SECRET_BYTES)throw new g(b.MAX_SECRET_BYTES,a.length)}function T(a,b=Q){if("number"==typeof a){if(!Number.isFinite(a)||!Number.isInteger(a))throw new k;if(!Number.isSafeInteger(a))throw new j}let c="bigint"==typeof a?a:BigInt(a);if(c<0n)throw new i;if(c>BigInt(b.MAX_COUNTER))throw new j}function U(a){if(!Number.isFinite(a))throw new n;if(a<0)throw new m}function V(a,b=Q){if(!Number.isInteger(a)||a<b.MIN_PERIOD)throw new p(b.MIN_PERIOD);if(a>b.MAX_PERIOD)throw new q(b.MAX_PERIOD)}function W(a,b){if(a.length!==b)throw new s(b,a.length);if(!/^\d+$/.test(a))throw new t}function X(a,b=30,c=Q){let[d,e]=Array.isArray(a)?a:[a,a];if(!Number.isSafeInteger(d)||!Number.isSafeInteger(e))throw new x("Epoch tolerance values must be safe integers");if(d<0||e<0)throw new y;let f=(c.MAX_WINDOW-1)*b,g=d+e;if(g>f)throw new z(f,g)}function Y(a){let b="bigint"==typeof a?a:BigInt(a),c=new ArrayBuffer(8);return new DataView(c).setBigUint64(0,b,!1),new Uint8Array(c)}function Z(a){let b=15&a[a.length-1];return(127&a[b])<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}function $(a,b){return(a%10**b).toString().padStart(b,"0")}function _(a,b){let c=aa(a),d=aa(b);if(c.length!==d.length)return!1;let e=0;for(let a=0;a<c.length;a++)e|=c[a]^d[a];return 0===e}function aa(a){return"string"==typeof a?M.encode(a):a}function ab(a,b){return"string"==typeof a?(af(b),b.decode(a)):a}function ac(a){let{crypto:b,base32:c,length:d=20}=a;ae(b),af(c);let e=b.randomBytes(d);return c.encode(e,{padding:!1})}function ad(a=0){return Array.isArray(a)?a:[a,a]}function ae(a){if(!a)throw new B}function af(a){if(!a)throw new C}function ag(a){if(!a)throw new E}function ah(a){if(!a)throw new F}function ai(a){if(!a)throw new G}function aj(a){if("string"!=typeof a)throw new H}var ak=class{constructor(a){this.crypto=a}get plugin(){return this.crypto}async hmac(a,b,c){try{let d=this.crypto.hmac(a,b,c);return d instanceof Promise?await d:d}catch(a){throw new v(a instanceof Error?a.message:String(a),{cause:a})}}hmacSync(a,b,c){try{let d=this.crypto.hmac(a,b,c);if(d instanceof Promise)throw new v("Crypto plugin does not support synchronous HMAC operations");return d}catch(a){if(a instanceof v)throw a;throw new v(a instanceof Error?a.message:String(a),{cause:a})}}randomBytes(a){try{return this.crypto.randomBytes(a)}catch(a){throw new w(a instanceof Error?a.message:String(a),{cause:a})}}};function al(a){return new ak(a)}}};
|