constellai 0.3.6 → 0.3.8
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 +3 -3
- package/.next/build-manifest.json +6 -6
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +6 -6
- package/.next/server/app/(app)/activity/page.js +2 -2
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/agents/[handle]/page.js +3 -3
- package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/code/page.js +2 -2
- package/.next/server/app/(app)/code/page.js.nft.json +1 -1
- package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/config/page.js +2 -2
- package/.next/server/app/(app)/config/page.js.nft.json +1 -1
- package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/costs/page.js +2 -2
- package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/cron/page.js +2 -2
- package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
- package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/dashboard/page.js +2 -2
- package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
- package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/design/page.js +53 -53
- package/.next/server/app/(app)/design/page.js.nft.json +1 -1
- package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/docs/[id]/page.js +2 -2
- package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/docs/page.js +2 -2
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/github/page.js +2 -2
- package/.next/server/app/(app)/github/page.js.nft.json +1 -1
- package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/goals/page.js +2 -2
- package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
- package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/inbox/page.js +2 -2
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/knowledge/page.js +3 -3
- package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
- package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/models/page.js +2 -2
- package/.next/server/app/(app)/models/page.js.nft.json +1 -1
- package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/notifications/page.js +2 -2
- package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
- package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/org/page.js +4 -4
- package/.next/server/app/(app)/org/page.js.nft.json +1 -1
- package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/organizations/page.js +2 -2
- package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
- package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/page.js +3 -3
- package/.next/server/app/(app)/page.js.nft.json +1 -1
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/planner/page.js +3 -3
- package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
- package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/plugins/page.js +2 -2
- package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
- package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/pm/page.js +2 -2
- package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
- package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/prepare-deploy/page.js +3 -3
- package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
- package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/profile/page.js +2 -2
- package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
- package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/pulse/page.js +2 -2
- package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
- package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reports/[id]/page.js +3 -3
- package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reports/page.js +3 -3
- package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/routines/page.js +2 -2
- package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
- package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/search/page.js +2 -2
- package/.next/server/app/(app)/search/page.js.nft.json +1 -1
- package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/security/page.js +2 -2
- package/.next/server/app/(app)/security/page.js.nft.json +1 -1
- package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/skills/page.js +3 -3
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/tasks/page.js +2 -2
- package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
- package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/test-dev/page.js +2 -2
- package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
- package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/update/page.js +3 -3
- package/.next/server/app/(app)/update/page.js.nft.json +1 -1
- package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(auth)/login/page.js +2 -2
- package/.next/server/app/(auth)/login/page.js.nft.json +1 -1
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(auth)/onboarding/page.js +2 -2
- package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- 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 +8 -8
- package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -4
- 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.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/[...all]/route.js +1 -1
- package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/tick/route.js +5 -5
- package/.next/server/app/api/cron/tick/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/locks/acquire/route.js +1 -1
- package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -1
- package/.next/server/app/api/models/progress/route.js +1 -1
- package/.next/server/app/api/models/progress/route.js.nft.json +1 -1
- package/.next/server/app/api/passkey/authenticate/options/route.js +1 -1
- package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -1
- package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -1
- package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/passkey/register/options/route.js +1 -1
- package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -1
- package/.next/server/app/api/passkey/register/verify/route.js +1 -1
- package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/sync/file/route.js +2 -2
- package/.next/server/app/api/sync/file/route.js.nft.json +1 -1
- package/.next/server/app/api/telegram/poll/route.js +19 -19
- package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -1
- package/.next/server/app/api/upload/route.js +1 -1
- package/.next/server/app/api/upload/route.js.nft.json +1 -1
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
- package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -1
- package/.next/server/app-paths-manifest.json +3 -3
- package/.next/server/chunks/1033.js +14 -0
- package/.next/server/chunks/1243.js +1 -0
- package/.next/server/chunks/{6719.js → 1304.js} +1 -1
- package/.next/server/chunks/1678.js +417 -0
- package/.next/server/chunks/1952.js +1 -0
- package/.next/server/chunks/{8561.js → 1986.js} +2 -2
- package/.next/server/chunks/2118.js +869 -0
- package/.next/server/chunks/2323.js +1 -0
- package/.next/server/chunks/{7336.js → 2392.js} +1 -1
- package/.next/server/chunks/2559.js +479 -0
- package/.next/server/chunks/26.js +1 -0
- package/.next/server/chunks/{5278.js → 3140.js} +1 -1
- package/.next/server/chunks/{6479.js → 3172.js} +1 -1
- package/.next/server/chunks/3205.js +1 -0
- package/.next/server/chunks/3392.js +1 -0
- package/.next/server/chunks/{4979.js → 3987.js} +5 -5
- package/.next/server/chunks/404.js +1 -0
- package/.next/server/chunks/415.js +1 -0
- package/.next/server/chunks/4288.js +1 -0
- package/.next/server/chunks/{2599.js → 4411.js} +1 -1
- package/.next/server/chunks/{7912.js → 4561.js} +1 -1
- package/.next/server/chunks/4587.js +1 -0
- package/.next/server/chunks/4679.js +462 -1
- package/.next/server/chunks/4769.js +1 -0
- package/.next/server/chunks/4882.js +2 -0
- package/.next/server/chunks/4897.js +15 -0
- package/.next/server/chunks/5015.js +15 -0
- package/.next/server/chunks/{658.js → 5361.js} +3 -3
- package/.next/server/chunks/5557.js +1 -0
- package/.next/server/chunks/{2517.js → 5593.js} +1 -1
- package/.next/server/chunks/5661.js +1 -0
- package/.next/server/chunks/5802.js +1 -0
- package/.next/server/chunks/5878.js +1 -0
- package/.next/server/chunks/5911.js +18 -0
- package/.next/server/chunks/6083.js +1 -0
- package/.next/server/chunks/{4302.js → 6121.js} +13 -13
- package/.next/server/chunks/6309.js +1 -0
- package/.next/server/chunks/6538.js +4 -0
- package/.next/server/chunks/6585.js +1 -0
- package/.next/server/chunks/{3243.js → 6778.js} +2 -2
- package/.next/server/chunks/6807.js +1 -0
- package/.next/server/chunks/{1388.js → 6948.js} +1 -1
- package/.next/server/chunks/{1591.js → 699.js} +2 -2
- package/.next/server/chunks/7109.js +1 -0
- package/.next/server/chunks/714.js +1 -0
- package/.next/server/chunks/7474.js +1 -0
- package/.next/server/chunks/{7037.js → 7677.js} +1 -1
- package/.next/server/chunks/77.js +3 -0
- package/.next/server/chunks/7727.js +1 -0
- package/.next/server/chunks/7867.js +22 -0
- package/.next/server/chunks/{259.js → 7905.js} +5 -5
- package/.next/server/chunks/{3609.js → 7911.js} +1 -1
- package/.next/server/chunks/{2867.js → 8134.js} +2 -2
- package/.next/server/chunks/{9783.js → 8211.js} +2 -2
- package/.next/server/chunks/8224.js +1 -0
- package/.next/server/chunks/8237.js +12 -0
- package/.next/server/chunks/8498.js +1 -0
- package/.next/server/chunks/{8823.js → 907.js} +10 -10
- package/.next/server/chunks/{7778.js → 9099.js} +1 -1
- package/.next/server/chunks/912.js +1 -0
- package/.next/server/chunks/9180.js +1 -0
- package/.next/server/chunks/9344.js +910 -0
- package/.next/server/chunks/9374.js +1 -0
- package/.next/server/chunks/939.js +1 -0
- package/.next/server/chunks/9419.js +1 -0
- package/.next/server/chunks/9426.js +188 -0
- package/.next/server/chunks/9677.js +17 -0
- package/.next/server/chunks/978.js +1 -0
- package/.next/server/chunks/9795.js +21 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +6 -6
- package/.next/server/middleware.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/171-2a8b8f61f7ab0828.js +1 -0
- package/.next/static/chunks/{23550918-ff694f70f4b0648c.js → 1ceccf25-731706dbe95504b9.js} +1 -1
- package/.next/static/chunks/3556-dbb9200143640484.js +1 -0
- package/.next/static/chunks/{2320-fc8b39380e69d465.js → 3703-b09be945970ea475.js} +1 -1
- package/.next/static/chunks/5452-d0ce3b51601a5815.js +1 -0
- package/.next/static/chunks/5523-9c369c915ee6d9c9.js +1 -0
- package/.next/static/chunks/7066-c10959874b2315bf.js +32 -0
- package/.next/static/chunks/717-1d1163010e3b541d.js +1 -0
- package/.next/static/chunks/7218-21f40f9caef5d658.js +12 -0
- package/.next/static/chunks/7363-b9ebe28fed23b997.js +1 -0
- package/.next/static/chunks/7621-87d8d0d0568de3ca.js +4 -0
- package/.next/static/chunks/{5920.6451a68b63918988.js → 7790.b648690cf25f29eb.js} +1 -1
- package/.next/static/chunks/{7509.721cd47a931c5518.js → 8251.6fedb7dc4d720bab.js} +1 -1
- package/.next/static/chunks/9279-467412113ad55642.js +1 -0
- package/.next/static/chunks/928-6dec8198101bc3e6.js +1 -0
- package/.next/static/chunks/9874-dc2fbf114916382b.js +1 -0
- package/.next/static/chunks/app/(app)/activity/page-ce3fc6003368f592.js +1 -0
- package/.next/static/chunks/app/(app)/agents/[handle]/page-236e13b8edadd480.js +1 -0
- package/.next/static/chunks/app/(app)/code/page-18ae765c81a2c709.js +1 -0
- package/.next/static/chunks/app/(app)/config/page-8a6fcf6c04337210.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-230b0ef03a2024b0.js +1 -0
- package/.next/static/chunks/app/(app)/cron/page-ca89769e2522191d.js +1 -0
- package/.next/static/chunks/app/(app)/dashboard/page-6237c3a35cce55ce.js +1 -0
- package/.next/static/chunks/app/(app)/design/{page-f48c0487d240248e.js → page-5997054187e59e74.js} +3 -3
- package/.next/static/chunks/app/(app)/docs/[id]/page-3362d323e0f4dada.js +1 -0
- package/.next/static/chunks/app/(app)/docs/page-d7d8018a7884a4b4.js +1 -0
- package/.next/static/chunks/app/(app)/error-f9a3caa63e064a7e.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-f5c1cae725d080fb.js +1 -0
- package/.next/static/chunks/app/(app)/goals/page-95e85ce115ed9ff3.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-474c3f0a181bbbd3.js +12 -0
- package/.next/static/chunks/app/(app)/knowledge/page-08596428ca34b620.js +1 -0
- package/.next/static/chunks/app/(app)/layout-720a1171f7152d86.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-fa1eb257e6911c9a.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-31f2a041bdb497b9.js +12 -0
- package/.next/static/chunks/app/(app)/org/page-666438930ddc4639.js +12 -0
- package/.next/static/chunks/app/(app)/organizations/page-0de7da829c9b2249.js +1 -0
- package/.next/static/chunks/app/(app)/page-bfcf3d25f468240f.js +1 -0
- package/.next/static/chunks/app/(app)/planner/page-0fc0ebe2d338769a.js +1 -0
- package/.next/static/chunks/app/(app)/plugins/page-ad369fbfec6f3d1c.js +1 -0
- package/.next/static/chunks/app/(app)/pm/page-bb39c9d9a4f0d597.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-f182991e68b159c1.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-cf5fe16bfad2a7ba.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-03877c467c491e8a.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/page-ca89769e2522191d.js +1 -0
- package/.next/static/chunks/app/(app)/reports/page-7741b6a25e582791.js +1 -0
- package/.next/static/chunks/app/(app)/routines/page-ea83e6337e7502c2.js +1 -0
- package/.next/static/chunks/app/(app)/search/page-5e7f7cf0cc51b76f.js +1 -0
- package/.next/static/chunks/app/(app)/security/page-410144cdc35e19cc.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-90e5d8a24920c275.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/page-4d535f34ae9c44ca.js +1 -0
- package/.next/static/chunks/app/(app)/test-dev/page-782c8cadd8a10feb.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-decdb0ece526b50f.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-147a9be880c44d42.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/page-8548be7e3ab3659e.js +1 -0
- package/.next/static/chunks/app/_global-error/{page-eacef2b697bd0982.js → page-ffc45e65538b6024.js} +1 -1
- package/.next/static/chunks/app/_not-found/page-405e53afca481eab.js +1 -0
- package/.next/static/chunks/app/api/auth/[...all]/{route-eacef2b697bd0982.js → route-ffc45e65538b6024.js} +1 -1
- package/.next/static/chunks/app/api/cron/tick/{route-eacef2b697bd0982.js → route-ffc45e65538b6024.js} +1 -1
- package/.next/static/chunks/app/api/health/{route-eacef2b697bd0982.js → route-ffc45e65538b6024.js} +1 -1
- package/.next/static/chunks/app/api/locks/acquire/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/models/progress/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/options/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/verify/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/options/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/verify/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/stream/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/sync/file/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/telegram/poll/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/upload/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/api/v1/[[...path]]/route-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/app/error-e128df085a794b38.js +1 -0
- package/.next/static/chunks/app/global-error-339c61c4184d384a.js +1 -0
- package/.next/static/chunks/app/layout-c717657a60a7f62c.js +1 -0
- package/.next/static/chunks/main-143b6dbf9c5dc129.js +5 -0
- package/.next/static/chunks/main-app-8ce4eaae11d4f233.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ffc45e65538b6024.js +1 -0
- package/.next/static/chunks/webpack-0e63b9ea83aeb0a2.js +1 -0
- package/.next/trace-build +1 -1
- package/CHANGELOG.md +45 -1
- package/README.md +1 -1
- package/README.pt-BR.md +1 -1
- package/THIRD_PARTY_LICENSES.md +64 -0
- package/docs/UPDATE.md +17 -3
- package/docs/en/AI_ARCHITECTURE.md +2 -2
- package/docs/en/CHAT_COMMANDS.md +1 -1
- package/docs/en/CONFIGURATION.md +1 -1
- package/docs/en/DESIGN.md +1 -1
- package/docs/en/FAQ.md +3 -3
- package/docs/en/GOALS_SPECS_ISSUES.md +1 -1
- package/docs/en/MCP.md +2 -2
- package/docs/en/PLUGINS.md +2 -2
- package/docs/en/PORTABLE_MODE.md +1 -1
- package/docs/en/PUBLISHING.md +14 -15
- package/docs/en/README.md +1 -1
- package/docs/en/SECURITY.md +3 -3
- package/docs/en/START_MODE.md +1 -1
- package/docs/en/TELEGRAM.md +1 -1
- package/docs/en/TROUBLESHOOTING.md +1 -1
- package/docs/en/VPS_MODE.md +2 -2
- package/docs/pt/AI_ARCHITECTURE.md +2 -2
- package/docs/pt/CHAT_COMMANDS.md +1 -1
- package/docs/pt/CONFIGURATION.md +1 -1
- package/docs/pt/DESIGN.md +1 -1
- package/docs/pt/FAQ.md +3 -3
- package/docs/pt/GOALS_SPECS_ISSUES.md +1 -1
- package/docs/pt/MCP.md +1 -1
- package/docs/pt/PLUGINS.md +2 -2
- package/docs/pt/PORTABLE_MODE.md +1 -1
- package/docs/pt/PUBLISHING.md +6 -7
- package/docs/pt/README.md +1 -1
- package/docs/pt/SECURITY.md +3 -3
- package/docs/pt/START_MODE.md +1 -1
- package/docs/pt/TELEGRAM.md +1 -1
- package/docs/pt/TROUBLESHOOTING.md +2 -2
- package/docs/pt/VPS_MODE.md +1 -1
- package/package.json +10 -9
- package/scripts/publish-public.mjs +21 -16
- package/.next/server/chunks/1249.js +0 -910
- package/.next/server/chunks/1572.js +0 -1
- package/.next/server/chunks/158.js +0 -21
- package/.next/server/chunks/1619.js +0 -188
- package/.next/server/chunks/162.js +0 -1
- package/.next/server/chunks/1765.js +0 -1
- package/.next/server/chunks/1845.js +0 -462
- package/.next/server/chunks/2341.js +0 -1
- package/.next/server/chunks/2495.js +0 -1
- package/.next/server/chunks/260.js +0 -1
- package/.next/server/chunks/288.js +0 -1
- package/.next/server/chunks/2960.js +0 -14
- package/.next/server/chunks/3050.js +0 -18
- package/.next/server/chunks/3056.js +0 -1
- package/.next/server/chunks/3131.js +0 -1
- package/.next/server/chunks/3234.js +0 -869
- package/.next/server/chunks/3266.js +0 -15
- package/.next/server/chunks/3550.js +0 -1
- package/.next/server/chunks/4467.js +0 -12
- package/.next/server/chunks/4616.js +0 -479
- package/.next/server/chunks/4619.js +0 -1
- package/.next/server/chunks/4804.js +0 -1
- package/.next/server/chunks/4832.js +0 -2
- package/.next/server/chunks/5060.js +0 -1
- package/.next/server/chunks/535.js +0 -1
- package/.next/server/chunks/5614.js +0 -1
- package/.next/server/chunks/6431.js +0 -1
- package/.next/server/chunks/6658.js +0 -1
- package/.next/server/chunks/6706.js +0 -1
- package/.next/server/chunks/683.js +0 -1
- package/.next/server/chunks/6873.js +0 -1
- package/.next/server/chunks/7225.js +0 -4
- package/.next/server/chunks/73.js +0 -17
- package/.next/server/chunks/7514.js +0 -1
- package/.next/server/chunks/7589.js +0 -22
- package/.next/server/chunks/7622.js +0 -1
- package/.next/server/chunks/7949.js +0 -1
- package/.next/server/chunks/7971.js +0 -1
- package/.next/server/chunks/7989.js +0 -1
- package/.next/server/chunks/8497.js +0 -1
- package/.next/server/chunks/850.js +0 -1
- package/.next/server/chunks/8623.js +0 -1
- package/.next/server/chunks/8719.js +0 -417
- package/.next/server/chunks/8762.js +0 -15
- package/.next/server/chunks/9676.js +0 -1
- package/.next/server/chunks/9680.js +0 -1
- package/.next/server/chunks/9969.js +0 -3
- package/.next/static/chunks/2831-d7f6495bf43f4f9d.js +0 -4
- package/.next/static/chunks/3219-486bddbf87074d04.js +0 -1
- package/.next/static/chunks/3775-82dcdf23109aa5bf.js +0 -1
- package/.next/static/chunks/4263-adecb5b466380b6e.js +0 -1
- package/.next/static/chunks/6834-4759af1ce7d95fb6.js +0 -32
- package/.next/static/chunks/6836-341614c5418e2aa4.js +0 -1
- package/.next/static/chunks/7555-d2209e697b0a798e.js +0 -1
- package/.next/static/chunks/8306-7418693cd7fd5861.js +0 -1
- package/.next/static/chunks/8370-8b3e7106703024ce.js +0 -12
- package/.next/static/chunks/9219-4a39a98b5502d9d1.js +0 -1
- package/.next/static/chunks/9562-4b50b4e408bc0a42.js +0 -1
- package/.next/static/chunks/9690-ea874aec65263b9d.js +0 -1
- package/.next/static/chunks/app/(app)/activity/page-cf8d67941440bdce.js +0 -1
- package/.next/static/chunks/app/(app)/agents/[handle]/page-7baa24f1ae8bc400.js +0 -1
- package/.next/static/chunks/app/(app)/code/page-b342d74807e8b914.js +0 -1
- package/.next/static/chunks/app/(app)/config/page-1e68ba8d20215d67.js +0 -1
- package/.next/static/chunks/app/(app)/costs/page-a58d759eec6048df.js +0 -1
- package/.next/static/chunks/app/(app)/cron/page-cc7f4e3d8ab5618f.js +0 -1
- package/.next/static/chunks/app/(app)/dashboard/page-7757c33acf751c4c.js +0 -1
- package/.next/static/chunks/app/(app)/docs/[id]/page-95c52cf457d869ef.js +0 -1
- package/.next/static/chunks/app/(app)/docs/page-fbc50cd357d5e2ca.js +0 -1
- package/.next/static/chunks/app/(app)/error-988cd28480809861.js +0 -1
- package/.next/static/chunks/app/(app)/github/page-dac138256ed91e65.js +0 -1
- package/.next/static/chunks/app/(app)/goals/page-f87d40f6832d63b3.js +0 -1
- package/.next/static/chunks/app/(app)/inbox/page-49c1293e0d98874f.js +0 -12
- package/.next/static/chunks/app/(app)/knowledge/page-18fca436883ed5cc.js +0 -1
- package/.next/static/chunks/app/(app)/layout-c9778f98c0103f74.js +0 -1
- package/.next/static/chunks/app/(app)/models/page-030c085cd7767495.js +0 -1
- package/.next/static/chunks/app/(app)/notifications/page-12af3fee8b36a00e.js +0 -12
- package/.next/static/chunks/app/(app)/org/page-576001ff4a820744.js +0 -12
- package/.next/static/chunks/app/(app)/organizations/page-b973e1eee6e56baf.js +0 -1
- package/.next/static/chunks/app/(app)/page-cef52fc5f4fd4418.js +0 -1
- package/.next/static/chunks/app/(app)/planner/page-da2db56914346192.js +0 -1
- package/.next/static/chunks/app/(app)/plugins/page-3b78b76ecb21d616.js +0 -1
- package/.next/static/chunks/app/(app)/pm/page-78303379c1ea5dc5.js +0 -1
- package/.next/static/chunks/app/(app)/prepare-deploy/page-98b1bd3bf712bb60.js +0 -1
- package/.next/static/chunks/app/(app)/profile/page-de24af53de0ef2b2.js +0 -1
- package/.next/static/chunks/app/(app)/pulse/page-db7fd63369c01fa2.js +0 -1
- package/.next/static/chunks/app/(app)/reports/[id]/page-cc7f4e3d8ab5618f.js +0 -1
- package/.next/static/chunks/app/(app)/reports/page-97ab95e6f8b77b62.js +0 -1
- package/.next/static/chunks/app/(app)/routines/page-cf6a3331775ca11b.js +0 -1
- package/.next/static/chunks/app/(app)/search/page-3960825f66b05606.js +0 -1
- package/.next/static/chunks/app/(app)/security/page-53b0770355cf7aa4.js +0 -1
- package/.next/static/chunks/app/(app)/skills/page-809a73b94861f8b8.js +0 -1
- package/.next/static/chunks/app/(app)/tasks/page-b2497927d127f7aa.js +0 -1
- package/.next/static/chunks/app/(app)/test-dev/page-93ec5d89e2afb612.js +0 -1
- package/.next/static/chunks/app/(app)/update/page-a23322af4e59a93c.js +0 -1
- package/.next/static/chunks/app/(auth)/login/page-446681bfb762cb05.js +0 -1
- package/.next/static/chunks/app/(auth)/onboarding/page-2b8cb3e0b024c995.js +0 -1
- package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +0 -1
- package/.next/static/chunks/app/api/locks/acquire/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/models/progress/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/passkey/authenticate/options/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/passkey/authenticate/verify/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/passkey/register/options/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/passkey/register/verify/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/stream/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/sync/file/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/telegram/poll/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/upload/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/api/v1/[[...path]]/route-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/app/error-09899a13c38b6e89.js +0 -1
- package/.next/static/chunks/app/global-error-c2ea8fef715f226d.js +0 -1
- package/.next/static/chunks/app/layout-e6008e66aea1a849.js +0 -1
- package/.next/static/chunks/main-722e16032e7764d1.js +0 -5
- package/.next/static/chunks/main-app-761880af2b6f1962.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-eacef2b697bd0982.js +0 -1
- package/.next/static/chunks/webpack-222e3894b78c67db.js +0 -1
- package/docs/assets/blackhole.svg +0 -37
- /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → ehoxBsPzAtE_FyZ2VpMF0}/_buildManifest.js +0 -0
- /package/.next/static/{fb-rRThu8P8AXEQQBbLgT → ehoxBsPzAtE_FyZ2VpMF0}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7474,exports.ids=[7474],exports.modules={6884:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=c(53302),e=c(86268);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},17474:(a,b,c)=>{var d=c(42418);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},23627:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isPostpone",{enumerable:!0,get:function(){return d}});let c=Symbol.for("react.postpone");function d(a){return"object"==typeof a&&null!==a&&a.$$typeof===c}},28381:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(41804).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},34093:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},36889:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(53302).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},39595:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(25494),g=c(86268),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},40187:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(53302),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},41804:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(1278),e=c(23627),f=c(84768),g=c(6884),h=c(99701),i=c(86297);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},42418:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(34093),g=c(39595),h=c(40187),i=c(43646),j=c(36889),k=c(28381);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},43646:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(53302).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},53302:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0});var c={HTTPAccessErrorStatus:function(){return e},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return g},getAccessFallbackErrorTypeByStatus:function(){return j},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},f=new Set(Object.values(e)),g="NEXT_HTTP_ERROR_FALLBACK";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===g&&f.has(Number(c))}function i(a){return Number(a.digest.split(";")[1])}function j(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},86268:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={REDIRECT_ERROR_CODE:function(){return g},isRedirectError:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(25494),g="NEXT_REDIRECT";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,d]=b,e=b.slice(2,-2).join(";"),h=Number(b.at(-2));return c===g&&("replace"===d||"push"===d)&&"string"==typeof e&&!isNaN(h)&&h in f.RedirectStatusCode}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=7677,exports.ids=[7677],exports.modules={97677:(a,b,c)=>{c.d(b,{memoryAdapter:()=>i});var d=c(68065),e=c(28334);function f(a,b){return"string"==typeof a&&"string"==typeof b?a.toLowerCase()===b.toLowerCase():a===b}function g(a,b){return"string"!=typeof a?b.includes(a):b.some(b=>"string"==typeof b&&a.toLowerCase()===b.toLowerCase())}function h(a){let b=new Map;for(let c of a)b.set(c.id,c);return b}let i=(a,b)=>{let c=null,i=a=>(0,d.I)({config:{adapterId:"memory",adapterName:"Memory Adapter",usePlural:!1,debugLogs:b?.debugLogs||!1,supportsArrays:!0,customTransformInput:b=>b.options.advanced?.database?.generateId==="serial"&&"id"===b.field&&"create"===b.action?a[b.model].length+1:b.data,transaction:async b=>{let d=structuredClone(a),e=structuredClone(a),f=await b(i(e)(c));return!function(a,b,c){for(let f of new Set([...Object.keys(b),...Object.keys(c)])){if(!(f in c)){delete a[f];continue}let g=h(b[f]??[]),i=c[f]??[],j=h(i),k=a[f]??[],l=[],m=new Set;for(let a of k){var d,e;let b=a.id,c=g.get(b),f=j.get(b);(void 0===c||void 0!==f)&&(void 0!==f&&(d=c,e=f,void 0===d||JSON.stringify(d)!==JSON.stringify(e))?l.push(f):l.push(a),m.add(b))}for(let a of i)g.has(a.id)||m.has(a.id)||l.push(a);a[f]=l}}(a,d,e),f}},adapter:({getFieldName:b,getDefaultFieldName:c,options:d,getModelName:h})=>{let i=(a,c,d)=>c?a.sort((a,e)=>{let f=b({model:d,field:c.field}),g=a[f],h=e[f],i=0;return i=null==g&&null==h?0:null==g?-1:null==h?1:"string"==typeof g&&"string"==typeof h?g.localeCompare(h):g instanceof Date&&h instanceof Date?g.getTime()-h.getTime():"number"==typeof g&&"number"==typeof h?g-h:"boolean"==typeof g&&"boolean"==typeof h?g===h?0:g?1:-1:String(g).localeCompare(String(h)),"asc"===c.direction?i:-i}):a;function j(b,d,i,j){let k=(()=>{let h=a[d];if(!h)throw e.vF.error(`[MemoryAdapter] Model ${d} not found in the DB`,Object.keys(a)),Error(`Model ${d} not found`);let i=(a,b)=>{var c,d,e;let{field:h,value:i,operator:j,mode:k="sensitive"}=b,l="insensitive"===k&&("string"==typeof i||Array.isArray(i)&&i.every(a=>"string"==typeof a));switch(j){case"in":if(!Array.isArray(i))throw Error("Value must be an array");if(l)return g(a[h],i);return i.includes(a[h]);case"not_in":if(!Array.isArray(i))throw Error("Value must be an array");if(l)return!g(a[h],i);return!i.includes(a[h]);case"contains":if(l)return c=a[h],"string"==typeof c&&"string"==typeof i&&c.toLowerCase().includes(i.toLowerCase());return a[h]?.includes(i);case"starts_with":if(l)return d=a[h],"string"==typeof d&&"string"==typeof i&&d.toLowerCase().startsWith(i.toLowerCase());return a[h].startsWith(i);case"ends_with":if(l)return e=a[h],"string"==typeof e&&"string"==typeof i&&e.toLowerCase().endsWith(i.toLowerCase());return a[h].endsWith(i);case"ne":return l?!f(a[h],i):a[h]!==i;case"gt":return null!=i&&a[h]>i;case"gte":return null!=i&&a[h]>=i;case"lt":return null!=i&&a[h]<i;case"lte":return null!=i&&a[h]<=i;default:if(l)return f(a[h],i);if(null===i)return null==a[h];return a[h]===i}},k=h.filter(a=>{if(!b.length||0===b.length)return!0;let c=i(a,b[0]);for(let d of b){let b=i(a,d);c="OR"===d.connector?c||b:c&&b}return c});return j?.length&&j.length>0&&(k=k.map(a=>Object.fromEntries(Object.entries(a).filter(([a])=>j.includes(c({model:d,field:a})))))),k})();if(!i)return k;let l=new Map,m=new Map;for(let b of k){let c=String(b.id);if(!l.has(c)){let a={...b};for(let[b,d]of Object.entries(i)){let e=h(b);"one-to-one"===d.relation?a[e]=null:(a[e]=[],m.set(`${c}-${b}`,new Set))}l.set(c,a)}let d=l.get(c);for(let[f,g]of Object.entries(i)){let i=h(f),j=a[i];if(!j)throw e.vF.error(`[MemoryAdapter] JoinOption model ${i} not found in the DB`,Object.keys(a)),Error(`JoinOption model ${i} not found`);let k=j.filter(a=>a[g.on.to]===b[g.on.from]);if("one-to-one"===g.relation)d[i]=k[0]||null;else{let a=m.get(`${c}-${f}`),b=g.limit??100,e=0;for(let c of k){if(e>=b)break;!a.has(c.id)&&(d[i].push(c),a.add(c.id),e++)}}}}return Array.from(l.values())}return{create:async({model:b,data:c})=>(d.advanced?.database?.generateId==="serial"&&(c.id=a[h(b)].length+1),a[b]||(a[b]=[]),a[b].push(c),c),findOne:async({model:a,where:b,select:c,join:d})=>{let e=j(b,a,d,c);return d?e.length?e[0]:null:e[0]||null},findMany:async({model:a,where:b,sortBy:c,limit:d,select:e,offset:f,join:g})=>{let h=j(b||[],a,g,e);if(g){if(!h.length)return[];i(h,c,a);let b=h;return void 0!==f&&(b=b.slice(f)),void 0!==d&&(b=b.slice(0,d)),b}let k=i(h,c,a);return void 0!==f&&(k=k.slice(f)),void 0!==d&&(k=k.slice(0,d)),k||[]},count:async({model:b,where:c})=>c?j(c,b).length:a[b].length,update:async({model:a,where:b,update:c})=>{if(0===b.length)return null;let d=j(b,a);return d.forEach(a=>{Object.assign(a,c)}),d[0]||null},delete:async({model:b,where:c})=>{if(0===c.length)return;let d=a[b],e=j(c,b);a[b]=d.filter(a=>!e.includes(a))},deleteMany:async({model:b,where:c})=>{let d=a[b],e=j(c,b),f=0;return a[b]=d.filter(a=>e.includes(a)?(f++,!1):!e.includes(a)),f},consumeOne:async({model:b,where:c})=>{let d=a[b],e=j(c,b)[0];return e?(a[b]=d.filter(a=>a!==e),e):null},incrementOne:async({model:a,where:b,increment:c,set:d})=>{let e=j(b,a)[0];if(!e)return null;for(let[a,b]of Object.entries(c))e[a]=("number"==typeof e[a]?e[a]:0)+b;return d&&Object.assign(e,d),e},updateMany:async({model:a,where:b,update:c})=>{let d=j(b,a);return d.forEach(a=>{Object.assign(a,c)}),d.length}}}}),j=i(a);return a=>(c=a,j(a))}}};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";exports.id=77,exports.ids=[77],exports.modules={44440:(a,b,c)=>{c.d(b,{I:()=>k});var d=c(77598),e=c(50730),f=c(12940),g=c(76561),h=c(84534);let i=new Set(["escalation","approval","needs-approval","block","blocked","security","deploy","error","alert","review","report","warn","warning","design-approval","design-pending","design-review"]);async function j(a,b){try{let c=b.kind??"info";if(!(!0===b.tg||!1!==b.tg&&i.has(c)))return;let[d]=await f.db.select({orgId:g.workspace.orgId}).from(g.workspace).where((0,e.eq)(g.workspace.id,a));if(!d)return;let[j]=await f.db.select({ownerId:g.organization.ownerId}).from(g.organization).where((0,e.eq)(g.organization.id,d.orgId));if(!j)return;let[k]=await f.db.select().from(g.notificationPref).where((0,e.eq)(g.notificationPref.userId,j.ownerId));if(k&&!1===k.telegram)return;let l=await (0,h._9)(a);if(!l)return;let m=c.replace(/[-_]/g," ").toUpperCase(),n=`🔔 ${m}
|
|
2
|
+
${b.text}${b.detail?`
|
|
3
|
+
${b.detail}`:""}`.slice(0,3400);await (0,h.bT)(l.botToken,l.chatId,n,"approval"===c||"needs-approval"===c?[[{text:"✅ Approve",data:"approve_plan"},{text:"▶️ Start execution",data:"start_exec"}],[{text:"\uD83D\uDCDD Review",data:"review"},{text:"↩️ Reject",data:"reject_plan"}]]:"design-approval"===c?[[{text:"✅ Approve & send to execution",data:"approve_design"}],[{text:"\uD83D\uDCDD Review",data:"review_design"},{text:"↩️ Request changes",data:"reject_design"}]]:"design-pending"===c||"design-review"===c?[[{text:"\uD83D\uDCDD Review design",data:"review_design"},{text:"\uD83D\uDCCA Status",data:"status"}]]:[[{text:"\uD83D\uDCDD Review",data:"review"},{text:"\uD83D\uDCCA Status",data:"status"}]])}catch{}}async function k(a,b){await f.db.insert(g.notification).values({id:(0,d.randomUUID)(),workspaceId:a,kind:b.kind??"info",text:b.text,detail:b.detail??"",agentId:b.agentId??null,messageId:b.messageId??null,channel:b.channel??""}),await j(a,b)}},55104:(a,b,c)=>{c.d(b,{$g:()=>U,Hs:()=>r,JN:()=>Z,KD:()=>C,Kp:()=>V,Pe:()=>o,UC:()=>u,ZB:()=>S,d1:()=>T,hW:()=>X,p1:()=>ab,qX:()=>Y,w5:()=>W});var d=c(31421),e=c(73024),f=c(48161),g=c(76760),h=c(66408);let i="win32"===process.platform,j=process.env.CONSTELLA_RUN_MODE??"start",k=null!=process.env.CONSTELLA_AGENT_FULL_ACCESS?"0"!==process.env.CONSTELLA_AGENT_FULL_ACCESS:"start"===j;function l(){return k?["--permission-mode","bypassPermissions"]:["--permission-mode","acceptEdits"]}let m=null,n=null;function o(a){n=a}function p(){return n??"1"===process.env.CONSTELLA_AGENT_LOCK_HOOK}let q=null;function r(a){q=a}function s(){return q??"1"===process.env.CONSTELLA_AGENT_CMD_GUARD}let t=null;function u(a){t=a}function v(){try{let a=(0,g.join)((0,h.r$)(),".agent-claude");(0,e.mkdirSync)(a,{recursive:!0});let b=(0,g.join)((0,f.homedir)(),".claude",".credentials.json");if(!(0,e.existsSync)(b))return null;(0,e.copyFileSync)(b,(0,g.join)(a,".credentials.json"));let c=(0,g.join)((0,f.homedir)(),".claude.json");if((0,e.existsSync)(c))try{(0,e.copyFileSync)(c,(0,g.join)(a,".claude.json"))}catch{}let d=process.env.CONSTELLA_PKG_ROOT||process.cwd(),i=[];return p()&&i.push({matcher:"Write|Edit|MultiEdit|NotebookEdit",hooks:[{type:"command",command:`node "${(0,g.join)(d,"bin","lock-hook.mjs")}"`}]}),s()&&i.push({matcher:"Bash",hooks:[{type:"command",command:`node "${(0,g.join)(d,"bin","guard-hook.mjs")}"`}]}),(0,e.writeFileSync)((0,g.join)(a,"settings.json"),JSON.stringify({hooks:{PreToolUse:i}}),"utf8"),a}catch{return null}}function w(a){if((p()||s())&&a)return[];if(null===m)try{let a=(0,g.join)((0,f.tmpdir)(),"constella-agent-settings.json");(0,e.writeFileSync)(a,JSON.stringify({disableAllHooks:!0}),"utf8"),m=a}catch{m=""}return m?["--settings",m]:[]}function x(a,b){return(p()||s())&&b?{...process.env,CLAUDE_CONFIG_DIR:b,CONSTELLA_ORG_ID:a.orgId,CONSTELLA_TASK_ID:a.token||"",CONSTELLA_AGENT_ID:a.agentId||"",CONSTELLA_AGENT_HANDLE:a.agentHandle||"",CONSTELLA_BASE_URL:process.env.CONSTELLA_BASE_URL||"http://127.0.0.1:3000"}:process.env}function y(a){if(a)return/^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$/.test(a)?a:void 0}function z(a){if(a&&"(default)"!==a)return/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,79}$/.test(a)?a:void 0}let A=new Map,B=new Set;function C(a){B.add(a);let b=A.get(a);if(!b)return!1;A.delete(a);try{return b.kill("SIGKILL"),!0}catch{return!1}}function D(a,b){if(a){if(B.has(a)){B.delete(a);try{b.kill("SIGKILL")}catch{}return}A.set(a,b)}}function E(a){a&&(A.delete(a),B.delete(a))}function F(a,b,c,e,f,g,h,j=i){return new Promise(i=>{let k=Date.now(),l=(0,d.spawn)(a,b,{cwd:e,shell:j,windowsHide:!0,env:g??process.env});D(h,l);let m="",n="",o=!1,p=setTimeout(()=>{o=!0;try{l.kill("SIGKILL")}catch{}},f);if(l.stdout.on("data",a=>m+=a.toString()),l.stderr.on("data",a=>n+=a.toString()),l.on("error",a=>{clearTimeout(p),E(h),i({code:-1,stdout:m,stderr:n+String(a),durationMs:Date.now()-k,timedOut:o})}),l.on("close",a=>{clearTimeout(p),E(h),i({code:a,stdout:m,stderr:n,durationMs:Date.now()-k,timedOut:o})}),l.stdin.on("error",()=>{}),c)try{l.stdin.write(c)}catch{}try{l.stdin.end()}catch{}})}async function G(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=y(b.model),f=p()||s()?v():null,g=["-p","--output-format","json",...w(f),...l()];d&&g.push("--model",d);let i=await F("claude",g,a,c,b.timeoutMs??18e4,x(b,f),b.token);if(i.timedOut)return I("claude",b.model,i.durationMs,"timed out");let j=null;try{j=JSON.parse(i.stdout.trim())}catch{let a=i.stdout.split("\n").reverse().find(a=>a.includes('"type":"result"'));if(a)try{j=JSON.parse(a)}catch{}}if(!j)return I("claude",b.model,i.durationMs,i.stderr.slice(-300)||"no JSON output (code "+i.code+")");let k=j.usage??{};return{ok:!0!==j.is_error&&"success"===j.subtype,text:String(j.result??""),usd:Number(j.total_cost_usd??0),inputTokens:Number(k.input_tokens??0)+Number(k.cache_read_input_tokens??0)+Number(k.cache_creation_input_tokens??0),outputTokens:Number(k.output_tokens??0),durationMs:i.durationMs,binary:"claude",model:b.model,error:!0===j.is_error?String(j.result??"error"):void 0}}async function H(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=y(b.model),f=["exec","--json","--skip-git-repo-check","-s",k?"danger-full-access":"workspace-write"];d&&f.push("-m",d);let g=await F("codex",f,a,c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("codex",b.model,g.durationMs,"timed out");let i="",j=0,l=0,m=0;for(let a of g.stdout.split("\n")){let b=a.trim();if(b.startsWith("{"))try{let a=JSON.parse(b),c=a.item??a.msg??{};"string"==typeof c.text&&c.text&&(i=c.text),"string"==typeof a.text&&(i=a.text);let d=a.usage??a.token_usage??c.usage??{};d.input_tokens&&(j=Number(d.input_tokens)),d.output_tokens&&(l=Number(d.output_tokens)),"number"==typeof a.cost_usd&&(m=a.cost_usd)}catch{}}return{ok:0===g.code,text:i,usd:m,inputTokens:j,outputTokens:l,durationMs:g.durationMs,binary:"codex",model:b.model,error:0===g.code?void 0:g.stderr.slice(-300)||"codex exit "+g.code}}function I(a,b,c,d){return{ok:!1,text:"",usd:0,inputTokens:0,outputTokens:0,durationMs:c,binary:a,model:b,error:d}}async function J(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=z(b.model),f=["-z",a];if(d){let a=d.indexOf("/");a>0?f.push("--provider",d.slice(0,a),"--model",d.slice(a+1)):f.push("--model",d)}let g=await F("hermes",f,"",c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("hermes",b.model,g.durationMs,"timed out");let i=(g.stdout||"").trim();return{ok:0===g.code&&!!i,text:i,usd:0,inputTokens:0,outputTokens:0,durationMs:g.durationMs,binary:"hermes",model:b.model,error:0===g.code?void 0:g.stderr.slice(-300)||"hermes exit "+g.code}}async function K(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=z(b.model),f=["infer","model","run","--prompt",a,"--json"];d&&f.push("--model",d);let g=await F("openclaw",f,"",c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("openclaw",b.model,g.durationMs,"timed out");let i="",j=0===g.code,k;try{var l;let a=JSON.parse(g.stdout.trim());j=!1!==a.ok&&0===g.code,i=(l=a.outputs)?"string"==typeof l?l:Array.isArray(l)?l.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.text??a.content??a.output??a.message??""):"").filter(Boolean).join("\n"):"object"==typeof l?String(l.text??l.content??""):"":"",a.error&&(k=String(a.error?.message??a.error))}catch{i=g.stdout.trim(),0!==g.code&&(j=!1,k=g.stderr.slice(-300)||"openclaw exit "+g.code)}return i||k||(k=g.stderr.slice(-300)||"no output (code "+g.code+")"),{ok:j&&!!i,text:i,usd:0,inputTokens:0,outputTokens:0,durationMs:g.durationMs,binary:"openclaw",model:b.model,error:k}}async function L(a,b,c){let d=(0,h.HZ)(c.orgId);(0,e.mkdirSync)(d,{recursive:!0});let f=await F(a,b,"",d,c.timeoutMs??18e4,void 0,c.token);if(f.timedOut)return I(a,c.model,f.durationMs,"timed out");let g=function(a){let b=a.trim();if(!b)return"";if(b.startsWith("{")||b.startsWith("["))try{let a=JSON.parse(b),c=a.result??a.text??a.response??a.content??a.message??a.output;if("string"==typeof c&&c)return c;if(c&&"object"==typeof c){let a=c.text??c.content;if("string"==typeof a)return a}}catch{}return b}(f.stdout),i=0===f.code?g?void 0:f.stderr.slice(-300)||"no output (code "+f.code+")":f.stderr.slice(-300)||`${a} exit ${f.code}`;return{ok:0===f.code&&!!g,text:g,usd:0,inputTokens:0,outputTokens:0,durationMs:f.durationMs,binary:a,model:c.model,error:i}}async function M(a,b){let c=z(b.model),d=["--message",a,"--yes-always","--no-auto-commits","--no-stream"];return c&&d.push("--model",c),L("aider",d,b)}async function N(a,b){let c=z(b.model),d=["run",a];return c&&d.push("--model",c),L("opencode",d,b)}async function O(a,b){let c=z(b.model),d=["-p",a,"--allow-all-tools"];return c&&d.push("--model",c),L("copilot",d,b)}async function P(a,b){let c=z(b.model),d=["-p",a,"--output-format","json"];return c&&d.push("--model",c),L("cursor-agent",d,{...b,timeoutMs:b.timeoutMs??15e4})}async function Q(a,b){let c=z(b.model),d=["--json","-y",a];return c&&d.push("--model",c),L("cline",d,b)}async function R(a,b){let c=z(b.model),d=["--yes",a];return c&&d.push("--model",c),L("kilocode",d,b)}async function S(a){try{if("opencode"===a){let a=await F("opencode",["models"],"",process.cwd(),2e4);if(0!==a.code)return[];return a.stdout.split("\n").map(a=>a.trim()).filter(a=>/^[\w.-]+\/[\w./:-]+$/.test(a)).slice(0,200)}if("aider"===a){let a=await F("aider",["--list-models","/"],"",process.cwd(),25e3);if(0!==a.code)return[];return a.stdout.split("\n").map(a=>a.replace(/^[-*\s]+/,"").trim()).filter(a=>/^[\w.-]+\/[\w./:-]+$/.test(a)).slice(0,200)}}catch{}return[]}async function T(a,b,c){return F(a,b,c.input??"",c.cwd,c.timeoutMs??6e4,c.env?{...process.env,...c.env}:void 0,void 0,!1)}async function U(a){let b=await F(a,["--version"],"",process.cwd(),15e3);return -1===b.code?null:(b.stdout||b.stderr).trim().split("\n")[0]||"ok"}async function V(a){let b=(0,f.homedir)(),c=(...a)=>a.some(a=>(0,e.existsSync)((0,g.join)(b,a)));try{switch(a){case"claude":return c(".claude/.credentials.json",".claude.json",".config/claude")?"ready":"needs_login";case"codex":return c(".codex/auth.json",".codex")?"ready":"needs_login";case"aider":return process.env.OPENAI_API_KEY||process.env.ANTHROPIC_API_KEY||process.env.DEEPSEEK_API_KEY||process.env.GEMINI_API_KEY||process.env.OPENROUTER_API_KEY||process.env.GROQ_API_KEY?"ready":"needs_login";case"opencode":{let a=await F("opencode",["auth","list"],"",process.cwd(),8e3);if(0===a.code&&/\w/.test(a.stdout)&&!/\b(no|none|not)\b.*(auth|provider|credential|logged)/i.test(a.stdout))return"ready";return c(".local/share/opencode/auth.json",".config/opencode")?"ready":"needs_login"}case"copilot":return c(".config/github-copilot/apps.json",".config/github-copilot",".copilot")?"ready":"needs_login";case"cursor-agent":return c(".config/cursor-agent",".cursor-agent",".cursor")?"ready":"needs_login";case"openclaw":return c(".openclaw",".config/openclaw")?"ready":"unknown";case"hermes":return c(".hermes",".config/hermes")?"ready":"unknown";case"cline":return c(".cline",".config/cline")?"ready":"unknown";case"kilocode":return c(".kilocode",".config/kilocode")?"ready":"unknown"}}catch{}return"unknown"}let W={cli_claude_code:["opus","sonnet","haiku"],cli_codex:["gpt-5-codex","o4-mini"],cli_openclaw:["(default)","openai/gpt-5.4","anthropic/claude-sonnet-4"],cli_hermes:["(default)","anthropic/claude-sonnet-4.6","openai/gpt-5.5"],cli_aider:["(default)","anthropic/claude-sonnet-4-6","openai/gpt-5.2","deepseek/deepseek-chat"],cli_opencode:["(default)","anthropic/claude-sonnet-4-6","openai/gpt-5.2"],cli_copilot:["(default)","claude-sonnet-4.5","gpt-5"],cli_cursor:["(default)","claude-4.5-sonnet","gpt-5"],cli_cline:["(default)"],cli_kilo:["(default)"]};function X(a,b){if("cli_codex"===a||"cli_codex_cli"===a)return"codex";if("cli_openclaw"===a)return"openclaw";if("cli_hermes"===a)return"hermes";if("cli_aider"===a)return"aider";if("cli_opencode"===a)return"opencode";if("cli_copilot"===a||"cli_copilot_cli"===a)return"copilot";if("cli_cursor"===a||"cli_cursor_cli"===a)return"cursor-agent";if("cli_cline"===a||"cli_cline_cli"===a)return"cline";if("cli_kilo"===a||"cli_kilo_code"===a)return"kilocode";if("cli_claude_code"===a)return"claude";let c=(b??"").toLowerCase();return c.startsWith("codex")||c.startsWith("gpt")||c.startsWith("o1")||c.startsWith("o3")||c.startsWith("o4")?"codex":"claude"}function Y(a){let b=X(a);return"claude"===b?"opus":"codex"!==b?(W[a??""]??[]).find(a=>"(default)"!==a):void 0}async function Z(a,b){let c=b.binary??"claude",d={model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token,agentId:b.agentId,agentHandle:b.agentHandle};return"codex"===c?H(a,d):"openclaw"===c?K(a,d):"hermes"===c?J(a,d):"aider"===c?M(a,d):"opencode"===c?N(a,d):"copilot"===c?O(a,d):"cursor-agent"===c?P(a,d):"cline"===c?Q(a,d):"kilocode"===c?R(a,d):G(a,d)}async function $(a,b,c){let f=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(f,{recursive:!0});let g=y(b.model),j=p()||s()?v():null,k=["-p","--output-format","stream-json","--include-partial-messages","--verbose",...w(j),...l(),...t??"0"!==process.env.CONSTELLA_WEB_RESEARCH?["--allowedTools","WebSearch","WebFetch"]:[]];return g&&k.push("--model",g),new Promise(e=>{let g=Date.now(),h=(0,d.spawn)("claude",k,{cwd:f,shell:i,windowsHide:!0,env:x(b,j)});D(b.token,h);let l="",m="",n=0,o=0,p=0,q=!1,r,s="",t=0,u=!1,v=()=>{s.length>t&&(c({kind:"text",detail:s.slice(t,t+8e3)}),t=s.length)},w=setTimeout(()=>{try{h.kill("SIGKILL")}catch{}},b.timeoutMs??24e4);h.stdout.on("data",a=>{let b;for(l+=a.toString();(b=l.indexOf("\n"))>=0;){let a=l.slice(0,b).trim();if(l=l.slice(b+1),a.startsWith("{"))try{!function(a){if("stream_event"===a.type){let b=a.event;b?.type==="content_block_start"&&b.content_block?.type==="text"&&s?s+="\n\n":b?.type==="content_block_delta"&&b.delta?.type==="text_delta"&&b.delta.text&&(u=!0,(s+=b.delta.text).length-t>=120&&v())}else if("assistant"===a.type){for(let b of a.message?.content??[])"tool_use"===b.type&&b.name?c(function(a,b){if("Read"===a)return{kind:"read",target:String(b.file_path??"")};if("Write"===a)return{kind:"create",target:String(b.file_path??""),detail:String(b.content??"").slice(0,4e3)};if("Edit"===a||"NotebookEdit"===a){let a=String(b.old_string??"").split("\n"),c=String(b.new_string??"").split("\n"),d=[...a.map(a=>"-"+a),...c.map(a=>"+"+a)].slice(0,80).join("\n");return{kind:"edit",target:String(b.file_path??""),detail:d}}return"Bash"===a||"PowerShell"===a?{kind:"run",target:String(b.command??"").slice(0,200)}:"Glob"===a||"Grep"===a?{kind:"search",target:String(b.pattern??"")}:{kind:"read",target:a}}(b.name,b.input??{})):"text"===b.type&&b.text?(m=b.text,u||c({kind:"text",detail:b.text.slice(0,8e3)})):"thinking"===b.type&&b.thinking&&c({kind:"thinking",detail:b.thinking.slice(0,200)});v()}else if("result"===a.type){q=!0!==a.is_error&&"success"===a.subtype,"string"==typeof a.result&&(m=a.result),n=Number(a.total_cost_usd??0);let b=a.usage??{};o=Number(b.input_tokens??0)+Number(b.cache_read_input_tokens??0)+Number(b.cache_creation_input_tokens??0),p=Number(b.output_tokens??0),a.is_error&&(r=String(a.result??"error"))}}(JSON.parse(a))}catch{}}}),h.on("error",a=>{clearTimeout(w),E(b.token),e(I("claude",b.model,Date.now()-g,String(a)))}),h.on("close",()=>{clearTimeout(w),E(b.token),c({kind:"done"}),e({ok:q,text:m,usd:n,inputTokens:o,outputTokens:p,durationMs:Date.now()-g,binary:"claude",model:b.model,error:r})}),h.stdin.write(a),h.stdin.end()})}let _=[6e4,3e5,9e5],aa=a=>new Promise(b=>setTimeout(b,a));async function ab(a,b,c){let d=null;for(let f=0;f<=_.length;f++){var e;let g=await ac(a,b,c);if(g.ok||!((e=g.error)&&/(\b429\b|overloaded|rate[\s_-]?limit|usage limit|\bquota\b|too many requests|service unavailable|\b50[0-3]\b|\bupstream\b|fetch failed|network error|econnreset|enotfound|etimedout|econnrefused|socket hang up)/i.test(e)))return g;if(d=g,f<_.length){let a=_[f];c({kind:"thinking",target:`Provider limit / network — retrying in ${Math.round(a/6e4)} min (attempt ${f+2}/${_.length+1})…`,detail:(g.error||"").slice(0,160)}),await aa(a)}}return d}async function ac(a,b,c){let d=b.binary??"claude";if("claude"===d)return $(a,{model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token,agentId:b.agentId,agentHandle:b.agentHandle},c);let e={model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token},f="openclaw"===d?await K(a,e):"hermes"===d?await J(a,e):"aider"===d?await M(a,e):"opencode"===d?await N(a,e):"copilot"===d?await O(a,e):"cursor-agent"===d?await P(a,e):"cline"===d?await Q(a,e):"kilocode"===d?await R(a,e):await H(a,e);return c({kind:"done"}),f}},59101:(a,b,c)=>{c.d(b,{IW:()=>i,Kh:()=>k,r6:()=>j});var d=c(77598),e=c(50730),f=c(12940),g=c(76561);function h(){let a=process.env.CONSTELLA_VAULT_KEY;if(!a)throw Error("CONSTELLA_VAULT_KEY is not set");let b=Buffer.from(a,"base64");if(32!==b.length)throw Error("CONSTELLA_VAULT_KEY must decode to 32 bytes");return b}async function i(a,b,c,i){let j=(0,d.randomBytes)(12),k=(0,d.createCipheriv)("aes-256-gcm",h(),j),l=Buffer.concat([k.update(c,"utf8"),k.final()]),m=k.getAuthTag(),n=Buffer.concat([l,m]).toString("base64");await f.db.delete(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b))),await f.db.insert(g.vault).values({id:(0,d.randomUUID)(),workspaceId:a,providerId:i,ref:b,ciphertext:n,iv:j.toString("base64")})}async function j(a,b){let[c]=await f.db.select().from(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b)));if(!c)return null;let i=Buffer.from(c.ciphertext,"base64"),j=i.subarray(i.length-16),k=i.subarray(0,i.length-16),l=(0,d.createDecipheriv)("aes-256-gcm",h(),Buffer.from(c.iv,"base64"));return l.setAuthTag(j),Buffer.concat([l.update(k),l.final()]).toString("utf8")}async function k(a,b){await f.db.delete(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b)))}},76381:(a,b,c)=>{c.d(b,{TC:()=>k,W_:()=>i,vE:()=>h,vG:()=>j});var d=c(77598),e=c(50730),f=c(12940),g=c(76561);async function h(a,b){try{if(b.refType&&b.refId){let[c]=await f.db.select({id:g.inboxItem.id}).from(g.inboxItem).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.refType,b.refType),(0,e.eq)(g.inboxItem.refId,b.refId),(0,e.eq)(g.inboxItem.resolved,!1)));if(c)return void await f.db.update(g.inboxItem).set({title:b.title,detail:b.detail??"",goalId:b.goalId??null,channel:b.channel??null,messageId:b.messageId??null,createdAt:new Date}).where((0,e.eq)(g.inboxItem.id,c.id))}await f.db.insert(g.inboxItem).values({id:(0,d.randomUUID)(),workspaceId:a,kind:b.kind,title:b.title,detail:b.detail??"",fromAgentId:b.fromAgentId??null,resolved:!1,refType:b.refType??null,refId:b.refId??null,goalId:b.goalId??null,channel:b.channel??null,messageId:b.messageId??null})}catch(a){console.error("[inbox] pushInbox failed:",a)}}async function i(a,b,c){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.refType,b),(0,e.eq)(g.inboxItem.refId,c),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxFor failed:",a)}}async function j(a,b){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.RV)(g.inboxItem.refType,b),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxRefTypes failed:",a)}}async function k(a,b){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.goalId,b),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxForGoal failed:",a)}}},84534:(a,b,c)=>{c.d(b,{A3:()=>i,G3:()=>k,J4:()=>o,S3:()=>p,SD:()=>j,_9:()=>g,bT:()=>n,sK:()=>l,vH:()=>m});var d=c(59101);function e(a){return/^\d{6,}:[A-Za-z0-9_-]{30,}$/.test(a)}let f="https://api.telegram.org";async function g(a){let b=await (0,d.r6)(a,"telegram_bot");if(!b)return null;try{let a=JSON.parse(b);if(a.botToken&&a.chatId&&e(a.botToken))return a}catch{}return null}let h=[{command:"help",description:"Show the remote-control commands"},{command:"status",description:"Quick project status"},{command:"review",description:"Plan / issues / tasks summary"},{command:"tasks",description:"What's in flight right now"},{command:"approve",description:"Approve the pending plan"},{command:"start_execution",description:"Approve + run 24/7"},{command:"pause",description:"Pause 24/7 execution"},{command:"resume",description:"Resume 24/7 execution"},{command:"reject",description:"Send the plan back to the CEO"},{command:"new",description:"Start new work — describe it"},{command:"cancel",description:"Cancel the active goal"},{command:"archive",description:"Archive the active goal"},{command:"kb",description:"Ask the Knowledge Base"}];async function i(a,b=h){if(!e(a))return!1;try{let c=await fetch(`${f}/bot${a}/setMyCommands`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({commands:b}),signal:AbortSignal.timeout(8e3)});return!!(await c.json()).ok}catch{return!1}}async function j(a,b){if(!e(a))return[];try{let c=await fetch(`${f}/bot${a}/getUpdates?offset=${b}&timeout=25&allowed_updates=${encodeURIComponent('["message","callback_query"]')}`,{signal:AbortSignal.timeout(3e4)}),d=await c.json();return d.ok?d.result:[]}catch{return[]}}async function k(a,b){if(!e(a))return null;try{let c=await fetch(`${f}/bot${a}/getFile?file_id=${encodeURIComponent(b)}`,{signal:AbortSignal.timeout(1e4)}),d=await c.json(),e=d.result?.file_path;if(!e)return null;let g=await fetch(`${f}/file/bot${a}/${e}`,{signal:AbortSignal.timeout(3e4)});if(!g.ok)return null;return{buf:Buffer.from(await g.arrayBuffer()),ext:(e.match(/\.([a-z0-9]+)$/i)?.[1]??"bin").toLowerCase()}}catch{return null}}async function l(a,b,c="typing"){if(e(a))try{await fetch(`${f}/bot${a}/sendChatAction`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,action:c}),signal:AbortSignal.timeout(8e3)})}catch{}}async function m(a,b,c){if(!e(a))return!1;try{return(await fetch(`${f}/bot${a}/sendMessage`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,text:c.slice(0,3800),disable_web_page_preview:!0})})).ok}catch{return!1}}async function n(a,b,c,d){if(!e(a))return{ok:!1};try{let e=await fetch(`${f}/bot${a}/sendMessage`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,text:c.slice(0,3500),disable_web_page_preview:!0,reply_markup:{inline_keyboard:d.map(a=>a.map(a=>({text:a.text,callback_data:a.data.slice(0,64)})))}}),signal:AbortSignal.timeout(12e3)});if(!e.ok)return{ok:!1};let g=await e.json().catch(()=>({}));return{ok:!!g.ok,messageId:g.result?.message_id}}catch{return{ok:!1}}}async function o(a,b,c){if(e(a))try{await fetch(`${f}/bot${a}/answerCallbackQuery`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({callback_query_id:b,...c?{text:c.slice(0,200)}:{}}),signal:AbortSignal.timeout(8e3)})}catch{}}async function p(a,b,c){if(e(a))try{await fetch(`${f}/bot${a}/editMessageReplyMarkup`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,message_id:c,reply_markup:{inline_keyboard:[]}}),signal:AbortSignal.timeout(8e3)})}catch{}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7727,exports.ids=[7727],exports.modules={6836:(a,b,c)=>{c.d(b,{J:()=>e});var d=c(26021);let e=(0,d.createServerReference)("40612bb48c7b9899000f07b3256b6a217f9f14c163",d.callServer,void 0,d.findSourceMapURL,"rejectSpec")},7151:(a,b,c)=>{c.d(b,{B:()=>e});var d=c(26021);let e=(0,d.createServerReference)("405ed4651f47318a4181b8770112f7bc71df0e57a2",d.callServer,void 0,d.findSourceMapURL,"approveSpec")},22290:(a,b,c)=>{c.r(b),c.d(b,{"00595fe65e9992464bb663bbac4e29a490158cffd8":()=>d.Kd,"00cdb46e5e7ab44f096a716b62213d04c572098ad6":()=>d.cT,"4097083ab2f522b74645033d17b1248eee70d9bd69":()=>d.j0,"40b5db617bf035af0653aeaf7baa2f667a1836ff30":()=>d.OD});var d=c(54489)},26172:(a,b,c)=>{c.d(b,{d:()=>e});var d=c(26021);let e=(0,d.createServerReference)("40f88afb175b09ac00d2f0cc2bb7fffb401c667a94",d.callServer,void 0,d.findSourceMapURL,"rejectIssue")},39075:(a,b,c)=>{c.d(b,{IssueApprove:()=>g,PlanGate:()=>f,PlanGateLive:()=>e,Run247Button:()=>h});var d=c(97879);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGateLive() from the server but PlanGateLive is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","PlanGateLive");(0,d.registerClientReference)(function(){throw Error("Attempted to call GeneratePlanButton() from the server but GeneratePlanButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","GeneratePlanButton");let f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGate() from the server but PlanGate is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","PlanGate");(0,d.registerClientReference)(function(){throw Error("Attempted to call SpecApprove() from the server but SpecApprove is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","SpecApprove");let g=(0,d.registerClientReference)(function(){throw Error("Attempted to call IssueApprove() from the server but IssueApprove is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","IssueApprove"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call Run247Button() from the server but Run247Button is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","Run247Button")},42994:(a,b,c)=>{c.d(b,{t:()=>e});var d=c(26021);let e=(0,d.createServerReference)("40ac43be66059aad8695fa35343af7a907394ec850",d.callServer,void 0,d.findSourceMapURL,"approveIssue")},67622:(a,b,c)=>{c.d(b,{AgentRunLive:()=>j});var d=c(40201),e=c(98604),f=c(27499),g=c(77758);c(16679);var h=c(71955);let i=["read","create","edit","run","search","thinking","done","error"];function j({channel:a,resume:b=!1,sinceSeq:c=0,onFinish:k}){let l=(0,h.k)();(0,f.useRouter)();let[m,n]=(0,e.useState)(b),[o,p]=(0,e.useState)([]),[q,r]=(0,e.useState)(0);if((0,e.useRef)(b?c:0),(0,e.useRef)(!1),(0,e.useRef)(0),!m&&0===o.length)return null;let s=function(a){let b=[];for(let c of a)if("text"===c.kind){let a=(c.detail||"").replace(/\s+/g," ").trim();if(!a)continue;let d=b[b.length-1];d&&"text"===d.kind?d.content=(d.content+" "+a).slice(-600):b.push({id:c.id,kind:"text",content:a})}else if("thinking"===c.kind){let a=(c.detail||c.target||"").replace(/\s+/g," ").trim();a&&b.push({id:c.id,kind:"thinking",content:a})}else b.push({id:c.id,kind:c.kind,content:function(a){if(!a)return"";let b=a.split(/[\\/]/);return b.length>1?b.slice(-2).join("/"):a}(c.target)||c.detail||""});return b}(o),t=s.slice(-5),u=s.length-t.length,v=o.some(a=>"done"===a.kind||"error"===a.kind),w=o.some(a=>"error"===a.kind),x=String(Math.floor(q/60)).padStart(2,"0"),y=String(q%60).padStart(2,"0");return(0,d.jsxs)("div",{className:"card live-stream",style:{marginBottom:16,borderColor:w?"var(--sx-keyword)":"var(--accent)"},children:[(0,d.jsxs)("div",{className:"set-desc",style:{marginBottom:8,display:"flex",alignItems:"center",gap:7},children:[m&&!v?(0,d.jsx)("span",{className:"dotpulse"}):(0,d.jsx)(g.I,{name:w?"close":"check",size:13,style:{color:w?"var(--sx-keyword)":"var(--sx-string)"}}),m&&!v?l("agent.run.working"):w?l("agent.run.failed"):l("agent.run.finished"),s.length>0&&(0,d.jsxs)("span",{style:{color:"var(--text-faint)"},children:["\xb7 ",l(1===s.length?"agent.run.steps.one":"agent.run.steps.other",{n:s.length})]}),(0,d.jsxs)("span",{className:"live-elapsed",style:{marginLeft:"auto"},children:[x,":",y]})]}),0===t.length?(0,d.jsxs)("div",{className:"muted",style:{fontSize:12,display:"flex",alignItems:"center",gap:7},children:[(0,d.jsx)("span",{className:"sync-spin",children:(0,d.jsx)(g.I,{name:"refresh",size:12})})," ",l("agent.run.reading")]}):(0,d.jsxs)(d.Fragment,{children:[u>0&&(0,d.jsx)("div",{className:"live-more",children:l(1===u?"agent.run.earlier.one":"agent.run.earlier.other",{n:u})}),(0,d.jsx)("div",{className:"live-stream-lines",children:t.map(a=>(0,d.jsxs)("div",{className:"live-line "+a.kind,children:["text"!==a.kind&&(0,d.jsx)("span",{className:"ll-k",children:i.includes(a.kind)?l(`agent.verb.${a.kind}`):a.kind}),(0,d.jsxs)("span",{className:"ll-c",children:[a.content,!v&&a===t[t.length-1]&&"text"===a.kind&&(0,d.jsx)("span",{className:"ll-caret"})]})]},a.id))})]})]})}},76480:(a,b,c)=>{c.d(b,{IssueApprove:()=>x,PlanGate:()=>v,PlanGateLive:()=>u,Run247Button:()=>y,p:()=>w});var d=c(40201),e=c(98604),f=c(27499),g=c(77758),h=c(71955),i=c(67622),j=c(26021);let k=(0,j.createServerReference)("40d94739ab3473c06b3faaae4456ea491b787f8ad2",j.callServer,void 0,j.findSourceMapURL,"generatePlan"),l=(0,j.createServerReference)("00e67cf87dadcbcbdf45049da9523da454401958c9",j.callServer,void 0,j.findSourceMapURL,"requestPlanChanges");var m=c(87763),n=c(7151),o=c(6836),p=c(42994),q=c(26172);let r=(0,j.createServerReference)("40197202b1575054bdc6f788583699228c62e9b638",j.callServer,void 0,j.findSourceMapURL,"setAuto247"),s=(0,j.createServerReference)("00c62021056f8b2c00829a8b7d390353eaabc724a4",j.callServer,void 0,j.findSourceMapURL,"skipDesignGate");function t(a,b){window.dispatchEvent(new CustomEvent("constella:open-dm",{detail:{handle:a,text:b}}))}function u({planning:a,planSince:b,designRecommended:c=!1,designPending:j=!1}){let l=(0,h.k)(),[m,n]=(0,e.useTransition)(),o=(0,f.useRouter)(),[p,q]=(0,e.useState)(!1),[r,t]=(0,e.useState)(""),v=a||p;function w(){t(""),q(!0),window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"planner"}})),n(async()=>{try{let a=await k();(!a?.ok||!1===a.started)&&(q(!1),a?.error&&t(a.error)),o.refresh()}catch{q(!1),t(l("planner.gate.staleTab"))}})}return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.AgentRunLive,{channel:"planner",resume:a,sinceSeq:a?b-1:0,onFinish:()=>q(!1)}),v?(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.drafting.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.drafting.d")})]})]}):c||j?(0,d.jsxs)("div",{className:"plan-gate",style:{borderColor:"rgba(99,102,241,.45)"},children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0,style:{background:"#6366f1"}}),(0,d.jsx)("div",{className:"pg-ic",style:{background:"rgba(99,102,241,.16)",color:"#6366f1"},children:(0,d.jsx)(g.I,{name:"skill",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:j?"Design step pending":"Recommended: prototype the design first"}),(0,d.jsx)("div",{className:"pg-d",children:j?"Ada is holding the plan on the design step. Open the Design module, build & approve the prototype with Grace, then Send to execution — Ada turns the approved design into specs & issues (zero drift).":"This is a frontend product. Prototype & approve the UI in the Design module before generating the plan — Grace turns the brief into a real visual reference, so the specs are precise and you avoid rework."}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-accent",onClick:()=>o.push("/design"),children:[(0,d.jsx)(g.I,{name:"skill",size:14})," Open Design"]}),(0,d.jsxs)("button",{className:"btn-ghost",disabled:m,onClick:function(){n(async()=>{try{await s()}catch{}}),w()},style:{fontSize:12},children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:13,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):"Skip design & plan anyway"]})]})]}):(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.noPlan.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.noPlan.d")}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("div",{className:"plan-hint",children:[(0,d.jsx)("div",{className:"plan-hint-t",children:l("planner.gate.hint.t")}),(0,d.jsx)("div",{className:"plan-hint-d",children:l("planner.gate.hint.d")})]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:m,onClick:w,children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:14,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):l("planner.gate.generate")]})]})]})]})}function v({specs:a,total:b}){let c=(0,h.k)(),[f,i]=(0,e.useTransition)();return(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:c("planner.gate.ready.t")}),(0,d.jsx)("div",{className:"pg-d",children:c("planner.gate.ready.d",{specs:a,total:b})})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-ghost",disabled:f,onClick:()=>i(async()=>{await l(),t("ada",c("planner.gate.rejectPlanDm"))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:13})," ",c("planner.gate.requestChanges")]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:f,onClick:()=>i(()=>(0,m.P)()),children:[(0,d.jsx)(g.I,{name:"check",size:14})," ",c("planner.gate.approvePlan")]})]})]})}function w({specId:a,specKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,n.B)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,o.J)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function x({issueId:a,issueKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,p.t)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,q.d)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function y({auto:a,approved:b,state:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)(),k=f(i?a?"planner.run247.pausing":"planner.run247.starting":"waiting-approval"===c?"planner.run247.approveToRun":"all-done"===c?"planner.run247.allDone":a?"planner.run247.pause":"planner.run247.run"),l="blocked"===c?f("planner.run247.blockedTip"):void 0,m="off"===c&&!i;return(0,d.jsxs)("button",{className:"btn-"+(a?"ghost":"accent")+(m?" run-attn":""),disabled:!b||"all-done"===c||i,title:l,onClick:()=>j(()=>r(!a)),children:[(0,d.jsx)(g.I,{name:i?"refresh":"waiting-approval"===c?"bot":"all-done"===c?"check":a?"close":"play",size:14,className:i?"sync-spin":""})," ",k,("running"===c||m)&&(0,d.jsx)("span",{className:"dotpulse",style:{marginLeft:6}})]})}},87763:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(26021);let e=(0,d.createServerReference)("0078eee6c6a712c6aea28f9bd404d07bd6c8f06300",d.callServer,void 0,d.findSourceMapURL,"approvePlan")}};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";exports.id=7867,exports.ids=[7867],exports.modules={14478:(a,b,c)=>{c.d(b,{f:()=>f,z:()=>d});let d=[{key:"language",label:"Language",opts:["TypeScript","JavaScript","Python","Go","Rust","Java","Kotlin","C#","Ruby","PHP","Elixir","Swift","C++","C","Scala","Dart","Clojure","Haskell","Lua","R","Objective-C","Erlang","None"]},{key:"runtime",label:"Runtime",opts:["Node.js","Bun","Deno","Python 3","PyPy","JVM",".NET","BEAM (Erlang VM)","None"]},{key:"frontend",label:"Frontend",opts:["React","Vue","Svelte","Angular","SolidJS","Preact","Qwik","Lit","HTMX","Alpine.js","Ember","Backbone","HTML/CSS","Vanilla JS","None"]},{key:"meta",label:"Meta-framework / SSG",opts:["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby","Vite (SPA)","Hugo","Jekyll","Eleventy","Docusaurus","Static (no framework)","None"]},{key:"backend",label:"Backend framework",opts:["NestJS","Fastify","Express","Hono","Koa","Django","Flask","FastAPI","Spring Boot","Spring","Laravel","Symfony","CodeIgniter","Ruby on Rails","Gin","Fiber","Actix","Phoenix","ASP.NET Core","AdonisJS","GraphQL","Nginx","None"]},{key:"mobile",label:"Mobile",opts:["React Native","Flutter","Android","Ionic","Xamarin","NativeScript","None"]},{key:"database",label:"Database",opts:["PostgreSQL","MySQL","MariaDB","SQLite","MongoDB","Redis","CockroachDB","Cassandra","DynamoDB","Supabase","PlanetScale","Neon","None"]},{key:"orm",label:"ORM / Data layer",opts:["Prisma","Drizzle","TypeORM","Sequelize","SQLAlchemy","Django ORM","Mongoose","Knex","Diesel","GORM","None"]},{key:"styling",label:"Styling / UI",opts:["Tailwind CSS","Plain CSS","CSS Modules","styled-components","Sass","Vanilla Extract","UnoCSS","shadcn/ui","MUI","Bootstrap","Bulma","Vuetify","Chakra UI","None"]},{key:"testing",label:"Testing",opts:["Jest","Vitest","Cypress","Playwright","Selenium","Mocha","Jasmine","Puppeteer","None"]},{key:"aiml",label:"AI / ML",opts:["TensorFlow","PyTorch","scikit-learn","Keras","Pandas","NumPy","Jupyter","None"]},{key:"dataviz",label:"Data viz",opts:["D3","Chart.js","Grafana","Plotly","None"]},{key:"container",label:"Container",opts:["Docker","Podman","containerd","None"]},{key:"infra",label:"Infra / DevOps",opts:["Tailscale","Cloudflare","Vercel","Netlify","Fly.io","Railway","AWS","GCP","Azure","Kubernetes","Jenkins","CircleCI","Terraform","Ansible","Vagrant","None"]},{key:"baas",label:"Backend-as-a-service",opts:["Firebase","Appwrite","Amplify","Heroku","Supabase","None"]},{key:"queue",label:"Queue / Cache",opts:["Redis","BullMQ","RabbitMQ","Kafka","NATS","Celery","None"]},{key:"auth",label:"Auth",opts:["Auth.js","Clerk","Lucia","Supabase Auth","Keycloak","Auth0","Passport","None"]}],e={"HTML/CSS":"Plain HTML5 markup + CSS — a simple static page, no framework.","Vanilla JS":"Plain JavaScript in the browser — no framework or build step.","Static (no framework)":"A static site built from plain HTML/CSS/JS — no meta-framework.","Plain CSS":"Hand-written CSS stylesheets — no preprocessor or utility framework.",TypeScript:"Typed superset of JavaScript — the default for full-stack web.",JavaScript:"Dynamic language of the web; runs everywhere a runtime exists.",Python:"Batteries-included language for backends, data, AI and automation.",Go:"Compiled, concurrent language for fast, simple network services.",Rust:"Memory-safe systems language for high-performance services.","Node.js":"The standard JS/TS server runtime with the largest ecosystem.",Bun:"Fast all-in-one JS/TS runtime, bundler and package manager.",Deno:"Secure JS/TS runtime with built-in tooling and web APIs.","Python 3":"CPython runtime for Python backends, workers and AI services.",React:"Component UI library; the most widely-used frontend.",Vue:"Approachable reactive UI framework with great DX.",Svelte:"Compiler-first UI framework with minimal runtime.","Next.js":"React meta-framework: routing, SSR/RSC, API routes.",Nuxt:"Vue meta-framework with SSR and file-based routing.",Remix:"React meta-framework focused on web fundamentals and forms.",SvelteKit:"Svelte meta-framework with SSR and routing.",NestJS:"Opinionated TypeScript backend framework (DI, modules).",Fastify:"Fast, low-overhead Node.js HTTP framework.",Express:"Minimal, ubiquitous Node.js web framework.",Hono:"Tiny, fast web framework for edge/Node/Bun/Deno.",Django:"Full-featured Python web framework — ORM, admin, auth, APIs and structured server-side systems in one. It already covers most backend concerns.",Flask:"Minimal Python web microframework — bring your own pieces.",FastAPI:"Modern async Python API framework with typed validation.","Spring Boot":"Convention-over-configuration JVM backend framework.",Laravel:"Full-featured PHP web framework (ORM, auth, queues).","Ruby on Rails":"Convention-driven full-stack Ruby framework.",PostgreSQL:"Robust relational database; the safe default for most apps.",MySQL:"Popular relational database, widely supported.",SQLite:"Embedded, file-based SQL database — zero-ops, great for local.",MongoDB:"Document database for flexible, schema-less data.",Redis:"In-memory store for cache, queues and sessions.",Supabase:"Hosted Postgres + auth + storage + realtime.",Prisma:"Type-safe TS/JS ORM with migrations and a schema DSL.",Drizzle:"Lightweight TS-first SQL ORM, close to the SQL.",TypeORM:"Decorator-based TS/JS ORM for SQL databases.",Sequelize:"Mature JS/TS ORM for SQL databases.",SQLAlchemy:"The de-facto Python ORM / SQL toolkit.","Django ORM":"Django's built-in ORM — only with Django.",Mongoose:"ODM for MongoDB (JS/TS).",GORM:"The standard ORM for Go.",Diesel:"Type-safe ORM/query builder for Rust.","Tailwind CSS":"Utility-first CSS framework for fast, consistent UI.","shadcn/ui":"Copy-in React components built on Tailwind + Radix.",MUI:"Material-UI React component library.",Docker:"Containerize the app for reproducible builds and deploys.",Podman:"Daemonless, rootless container engine (Docker-compatible).",Tailscale:"Zero-config private network (WireGuard) for services.",Vercel:"Managed hosting optimized for Next.js and frontends.",Kubernetes:"Container orchestration for scaling services.",BullMQ:"Redis-backed job queue for Node.js.",RabbitMQ:"Message broker for reliable async work.",Kafka:"Distributed event streaming platform at scale.",Celery:"Distributed task queue for Python.","Auth.js":"Framework-agnostic auth for JS/TS apps (NextAuth).",Clerk:"Hosted auth + user management with prebuilt UI.",Lucia:"Lightweight, framework-agnostic TS auth library.",Auth0:"Hosted identity platform (OAuth/OIDC).",C:"Low-level systems language; portable and fast.",Clojure:"Modern Lisp on the JVM — functional, immutable by default.",Haskell:"Pure functional language with a strong static type system.",Lua:"Tiny embeddable scripting language.",R:"Statistics + data-analysis language.","Objective-C":"Apple's pre-Swift language for iOS/macOS.",Erlang:"Concurrent, fault-tolerant language on the BEAM VM.",Ember:"Convention-driven framework for ambitious web apps.",Backbone:"Minimal MV* structure for JS apps.",Hugo:"Blazing-fast static site generator in Go.",Jekyll:"Ruby static site generator (GitHub Pages default).",Eleventy:"Simple, flexible JavaScript static site generator.",Docusaurus:"React-based docs site generator.",Spring:"JVM application framework (DI, web, data).",Symfony:"Mature PHP framework with reusable components.",CodeIgniter:"Lightweight PHP MVC framework.",GraphQL:"Query language + runtime for typed APIs.",Nginx:"High-performance web server / reverse proxy.","React Native":"Build native iOS/Android apps with React.",Flutter:"Google's cross-platform UI toolkit (Dart).",Android:"Native Android development (Kotlin/Java).",Ionic:"Hybrid mobile apps with web tech.",Xamarin:"Cross-platform .NET mobile apps.",NativeScript:"Native mobile apps with JS/TS frameworks.",Bootstrap:"The classic responsive CSS component framework.",Bulma:"Modern CSS framework based on flexbox.",Vuetify:"Material Design component library for Vue.",Jest:"Batteries-included JS testing framework.",Vitest:"Fast Vite-native unit test runner.",Cypress:"End-to-end testing in a real browser.",Playwright:"Reliable cross-browser E2E automation.",Selenium:"Browser automation across languages.",Mocha:"Flexible JS test framework.",Jasmine:"Behavior-driven JS testing.",Puppeteer:"Headless Chrome automation.",TensorFlow:"End-to-end ML platform (Google).",PyTorch:"Research-friendly deep-learning framework.","scikit-learn":"Classic ML algorithms for Python.",Keras:"High-level neural-network API.",Pandas:"Data analysis + manipulation for Python.",NumPy:"Numerical computing foundation for Python.",Jupyter:"Interactive notebooks for data/AI work.",D3:"Low-level data-driven document visualization.","Chart.js":"Simple, popular JS charting library.",Grafana:"Dashboards + observability for metrics.",Plotly:"Interactive scientific charts.",Azure:"Microsoft's cloud platform.",Jenkins:"Self-hosted CI/CD automation server.",CircleCI:"Hosted CI/CD pipelines.",Terraform:"Infrastructure as code across clouds.",Ansible:"Agentless configuration management.",Vagrant:"Reproducible dev environments.",Firebase:"Google's app backend (auth, DB, hosting).",Appwrite:"Open-source backend server for web/mobile.",Amplify:"AWS toolkit for full-stack app backends.",Heroku:"Managed app platform (push to deploy).",None:"Skip this category."};function f(a,b){if(e[b])return e[b];let c=d.find(b=>b.key===a)?.label??"technology";return`${b} — ${c.toLowerCase()} option.`}},34786:(a,b,c)=>{c.d(b,{T1:()=>l,YL:()=>k,hP:()=>m});var d=c(54039),e=c(14478);let f={TypeScript:"js",JavaScript:"js",Python:"py",Go:"go",Rust:"rust",Java:"jvm",Kotlin:"jvm",Scala:"jvm","C#":"dotnet",Ruby:"ruby",PHP:"php",Elixir:"elixir",Swift:"other","C++":"other",Dart:"other"},g={"Node.js":"js",Bun:"js",Deno:"js","Python 3":"py",PyPy:"py",JVM:"jvm",".NET":"dotnet","BEAM (Erlang VM)":"elixir"},h={NestJS:"js",Fastify:"js",Express:"js",Hono:"js",Koa:"js",AdonisJS:"js",Django:"py",Flask:"py",FastAPI:"py","Spring Boot":"jvm",Spring:"jvm",Laravel:"php",Symfony:"php",CodeIgniter:"php","Ruby on Rails":"ruby",Gin:"go",Fiber:"go",Actix:"rust",Phoenix:"elixir","ASP.NET Core":"dotnet"},i={Prisma:"js",Drizzle:"js",TypeORM:"js",Sequelize:"js",Knex:"js",Mongoose:"js",SQLAlchemy:"py","Django ORM":"py",GORM:"go",Diesel:"rust"},j={js:"JavaScript/TypeScript",py:"Python",jvm:"JVM",dotnet:".NET",go:"Go",rust:"Rust",php:"PHP",ruby:"Ruby",elixir:"Elixir",other:"this"};function k(a,b,c){let e=f[(0,d.BT)(a.language)],k=(0,d.jX)(a.database),l=(0,d.jX)(a.backend);if("runtime"===b){let a=g[c];if(e&&a&&a!==e)return`Needs a ${j[a]} language`}if("backend"===b){let a=h[c];if(e&&a&&a!==e)return`Requires a ${j[a]} language`}if("orm"===b){let a=i[c];if(e&&a&&a!==e)return`${j[a]} only`;if("Mongoose"===c&&k.length>0&&!k.includes("MongoDB"))return"Mongoose needs MongoDB";if("Django ORM"===c&&!l.includes("Django"))return"Only with Django";if(l.includes("Django")&&"Django ORM"!==c&&"None"!==c)return"Django already ships its own ORM"}return null}function l(a){let b={...a},c=[],f=!0,g=0;for(;f&&g++<20;)for(let a of(f=!1,e.z)){let e=(0,d.jX)(b[a.key]);if(!e.length)continue;let g=[];for(let d of e){let e="None"===d?null:k(b,a.key,d);e?(c.push({cat:a.key,opt:d,reason:e}),f=!0):g.push(d)}g.length!==e.length&&(b={...b,[a.key]:(0,d.He)(g)})}return{stack:b,removed:c}}function m(a){let b=(0,d.jX)(a.orm).filter(a=>!["Django ORM","None"].includes(a));return(0,d.jX)(a.backend).includes("Django")&&b.length>0?`Django includes its own ORM — a second ORM (${b.join(", ")}) is usually redundant.`:null}},40728:(a,b,c)=>{c.d(b,{L8:()=>H,fG:()=>D,LX:()=>I,Zi:()=>G});var d=c(80501),e=c(77598),f=c(13007),g=c(54813),h=c(406),i=c(96405),j=c(59627),k=c(33881),l=c(45970),m=c(73024),n=c(76760),o=c(48161),p=c(37989),q=c(81585);let r=/(^|[\\/])(\.env(\.local|\.development|\.production)?|\.DS_Store|\.gitignore|\.gitattributes)$/i;function s(a){let b=[],c="";try{c=(0,m.readFileSync)((0,n.join)(a,".gitignore"),"utf8")}catch{}for(let a of c.split(/\r?\n/)){if(!(a=a.trim())||a.startsWith("#")||a.startsWith("!"))continue;let c=a.startsWith("/")||a.replace(/\/$/,"").includes("/"),d=a.replace(/^\//,"").replace(/\/$/,"");d&&b.push({anchored:c,re:function(a){let b="";for(let c of a)"*"===c?b+="[^/]*":"?"===c?b+="[^/]":b+=c.replace(/[.+^${}()|[\]\\]/g,"\\$&");return RegExp("^"+b+"$")}(d)})}return b.length?(a,c)=>{let d=a.split("/");for(let c of b)if(c.anchored){if(c.re.test(a))return!0}else if(d.some(a=>c.re.test(a)))return!0;return!1}:()=>!1}function t(a,b,c){let d=[],e=[a];for(;e.length&&d.length<b;){let f,g=e.pop();try{f=(0,m.readdirSync)(g,{withFileTypes:!0})}catch{continue}for(let h of f){let f=(0,n.join)(g,h.name),i=(0,n.relative)(a,f).split(n.sep).join("/");if(h.isDirectory()){if(p.xZ.has(h.name)||c(i,!0))continue;e.push(f)}else if(h.isFile()){if(c(i,!1))continue;if(d.push(f),d.length>=b)break}}}return d}async function u(a,b,c,d){let f=b.trim().replace(/^https?:\/\/github\.com\//i,"").replace(/\.git$/,"");if(!/^[\w.-]+\/[\w.-]+$/.test(f))return{ok:!1,error:"Use the form owner/repo."};let g=a=>c?a.split(c).join("***"):a,h=(0,p.HZ)(a),i=(0,n.join)((0,o.tmpdir)(),"constella-clone-"+(0,e.randomUUID)()),j=`https://x-access-token:${c}@github.com/${f}.git`;try{let b=["clone","--depth","1","--single-branch",...d?["--branch",d]:[],j,i],c=await (0,q.d1)("git",b,{cwd:(0,o.tmpdir)(),timeoutMs:18e4});if(0!==c.code){try{(0,m.rmSync)(i,{recursive:!0,force:!0})}catch{}return{ok:!1,error:g((c.stderr||"git clone failed").slice(-300))}}let{copied:e}=function(a,b){let c=(void 0)??4e3,d=(void 0)??524288,e=0,f=0,g=0,h=[];for(let i of t(b,c+200,s(b))){let j;if(e>=c)break;let k=(0,n.relative)(b,i).split(n.sep).join("/");if(!k||k.startsWith("..")||r.test(k)){f++;continue}try{j=(0,m.readFileSync)(i)}catch{f++;continue}if(j.length>d||function(a){let b=Math.min(a.length,8192);for(let c=0;c<b;c++)if(0===a[c])return!0;return!1}(j)){f++;continue}try{(0,p.dx)(a,k,j.toString("utf8")),e++,g+=j.length,h.length<8&&h.push(k)}catch{f++}}return{copied:e,skipped:f,bytes:g,sample:h}}(a,i);try{(0,m.rmSync)(i,{recursive:!0,force:!0})}catch{}let k=`https://github.com/${f}.git`;(0,m.existsSync)((0,n.join)(h,".git"))||await (0,q.d1)("git",["init","-b","main"],{cwd:h});let l=await (0,q.d1)("git",["remote","get-url","origin"],{cwd:h});return await (0,q.d1)("git",["remote",0===l.code?"set-url":"add","origin",k],{cwd:h}),{ok:!0,copied:e}}catch(a){try{(0,m.rmSync)(i,{recursive:!0,force:!0})}catch{}return{ok:!1,error:g(String(a instanceof Error?a.message:a))}}}var v=c(55593),w=c(54768),x=c(39522),y=c(39639),z=c(71809),A=c(35722),B=c(73591),C=c(64185);async function D(){let a=await (0,i.Ht)();return!!a&&(await (0,i.O5)(a.user.id)).length>0}let E=[["open-pr","Branch, commit, open a PR with a test plan and request CTO review.","When a work product is ready to merge",!1],["run-suite","Detect the package manager, run the test task and gate sign-off on red.","Before any sign-off",!1],["secret-scan","Scan for plaintext keys, verify vault references and flag log leaks.","On every adapter change",!1],["telegram-notify","Format a digest and POST it to the Telegram Bot API.","When a routine completes",!0],["moscow-prioritise","Score backlog items and re-order them with the MoSCoW method.","During backlog grooming",!1],["gguf-validate","Pull a GGUF, verify SHA-256 and bind to loopback.","When installing a local model",!0]],F=[["ada","Ada","CEO","#e0a44e",null,15,"critical"],["linus","Linus","CTO","#9a5cff","ada",40,"critical"],["donald","Donald","Product Owner","#4fc9b0","ada",20,"heavy"],["margaret","Margaret","Backend","#3fb98f","linus",50,"heavy"],["grace","Grace","Frontend","#5b8def","linus",45,"heavy"],["edsger","Edsger","QA","#e8688f","linus",25,"heavy"],["werner","Werner","DevOps","#f0a35e","linus",20,"heavy"],["barbara","Barbara","Docs","#b3d97a","ada",15,"light"],["whitfield","Whitfield","CyberSec","#c4a0ff","linus",30,"critical"],["vannevar","Vannevar","Knowledge","#7ac5e0","ada",10,"light"]];async function G(a){return await (0,i.Ht)()?function(a){let b,c,d,e=(a||"").trim();if(!e)return{ok:!1,error:"Enter a directory path."};if(!(0,n.isAbsolute)(e))return{ok:!1,error:"Use an absolute path (e.g. C:\\Users\\you\\project)."};try{b=(0,m.statSync)(e)}catch{return{ok:!1,error:"Path not found."}}if(!b.isDirectory())return{ok:!1,error:"That path is a file, not a directory."};let f=t(e,6e3,s(e));if(0===f.length)return{ok:!1,error:"No importable source files found (only dependencies, build output or git-ignored files)."};let g=f.slice(0,8).map(a=>(0,n.relative)(e,a).split(n.sep).join("/"));return{ok:!0,fileCount:f.length,sample:g,stack:(c=new Set(f.map(a=>(0,n.relative)(e,a).split(n.sep).join("/").toLowerCase())),(d=a=>c.has(a)||[...c].some(b=>b.endsWith("/"+a)))("manage.py")?"Django (Python)":d("pyproject.toml")||d("requirements.txt")||[...c].some(a=>a.endsWith(".py"))?"Python":d("next.config.js")||d("next.config.mjs")||d("next.config.ts")?"Next.js":d("nuxt.config.ts")||d("nuxt.config.js")?"Nuxt":d("vite.config.js")||d("vite.config.ts")?"Vite":[...c].some(a=>a.endsWith(".vue"))?"Vue":d("angular.json")?"Angular":d("go.mod")?"Go":d("cargo.toml")?"Rust":d("composer.json")?"PHP":d("gemfile")?"Ruby":d("pom.xml")||d("build.gradle")?"JVM":d("package.json")?"Node":void 0)}}(a):{ok:!1,error:"Not signed in."}}async function H(a){let b=await (0,i.Ht)();b||(0,f.redirect)("/login");let c=b.user.id;a.stack=(0,k.T1)(a.stack??{}).stack;let d=(0,e.randomUUID)(),m=(0,e.randomUUID)(),n=(0,i.Yv)(a.company)+"-"+Math.random().toString(36).slice(2,8),o=(0,j.T)();if(g.db.insert(h.organization).values({id:d,name:a.company,ownerId:c,runMode:o}).run(),delete process.env.CONSTELLA_FORCE_ONBOARDING,g.db.insert(h.member).values({id:(0,e.randomUUID)(),orgId:d,userId:c,role:"owner"}).run(),g.db.insert(h.workspace).values({id:m,orgId:d,slug:n,name:a.company,mission:a.mission,objective:a.objective,stack:a.stack}).run(),a.providerCatalogId){let b=(0,y.kH)(a.providerCatalogId);if(b){let c=(0,e.randomUUID)();g.db.insert(h.provider).values({id:c,workspaceId:m,catalogId:b.id,adapter:b.defaultAdapter,kind:"cli"===b.category?"cli":"local_runtime"===b.category?"local":"cloud",auth:a.providerKey?"api_key":b.connectionTypes[0],status:"needs_sync",syncStatus:b.supportsModelSync?"implemented":"manual"}).run(),a.providerKey&&await (0,x.IW)(m,`${b.id}_api_key`,a.providerKey,c)}}let q={type:"new"},r=null,s=a.source;if(s?.type==="github")try{let a=await u(d,s.repoFull,s.pat,s.branch);a.ok?(await (0,x.IW)(m,"github_pat",s.pat),q={type:"github",repo:s.repoFull,branch:s.branch,importedAt:Date.now(),fileCount:a.copied},r={login:s.login,repo:s.repoFull,defaultBranch:s.branch??"main"}):console.error("[onboarding] github import failed:",a.error)}catch(a){console.error("[onboarding] github import threw:",a)}else if(s?.type==="local"){let a=0;try{for(let b of(s.files??[]).slice(0,6e3)){let c=b.path.replace(/\\/g,"/").replace(/^\/+/,"").replace(/\.\.+/g,".");if(!(!c||c.endsWith("/")))try{(0,p.dx)(d,c,b.content),a++}catch{}}}catch(a){console.error("[onboarding] local import failed:",a)}q={type:"local",localPath:s.rootName||"imported project",importedAt:Date.now(),fileCount:a}}let t=!!a.mockFiles?.length;"new"===q.type&&t&&(q={type:"mock",importedAt:Date.now()});let C="new"!==q.type||t,D=null!=(0,p.sL)(d,"README.md");try{(0,l.GA)(d,{company:a.company,mission:a.mission,objective:a.objective,stack:a.stack,slug:n,runMode:o,preserveReadme:D})}catch(a){console.error("[onboarding] scaffold failed:",a)}if(!C)try{(0,l.tt)({orgId:d,slug:n,company:a.company,mission:a.mission,objective:a.objective,stack:a.stack,runMode:o})}catch(a){console.error("[onboarding] starter scaffold failed:",a)}g.db.update(h.workspace).set({settings:{...r?{github:r}:{},source:{...q,analyzed:!1}}}).where((0,B.eq)(h.workspace.id,m)).run();let G={};for(let[a]of F)G[a]=(0,e.randomUUID)();for(let[a,b,c,d,e,f,i]of F)g.db.insert(h.agent).values({id:G[a],workspaceId:m,handle:a,name:b,role:c,color:d,reportsTo:e,dailyCapUsd:f,tierFloor:i,status:"idle",lastPulse:new Date,health:"alive"}).run();if(a.provider||a.model||a.systemPrompt){let b=G.ada,c={};a.provider&&(c.adapter=a.provider),a.model&&(c.model=a.model),a.systemPrompt?.trim()&&(c.persona={identity:"",ritual:"",tone:"",systemPrompt:a.systemPrompt.trim()}),Object.keys(c).length&&g.db.update(h.agent).set(c).where((0,B.eq)(h.agent.id,b)).run();let e=".claude/agents/ada/Agent.md",f=(0,p.sL)(d,e)??"";f&&(a.provider&&(f=(0,w.tT)(f,"provider",a.provider)),a.model&&(f=(0,w.tT)(f,"model",a.model)),a.systemPrompt?.trim()&&(f=(0,w.c4)(f,"System prompt",a.systemPrompt.trim())),(0,p.dx)(d,e,f))}if(a.briefText?.trim()&&(0,p.dx)(d,".claude/BRIEF.md",`# Project brief${a.briefName?` — ${a.briefName}`:""}
|
|
2
|
+
|
|
3
|
+
${a.briefText.trim()}
|
|
4
|
+
`),a.mockFiles?.length){let b="";for(let c of a.mockFiles.slice(0,200)){let a=("mock/"+c.path).replace(/\.\.+/g,".").replace(/\/+/g,"/");(0,p.dx)(d,a,c.content),b+=`- ${c.path}
|
|
5
|
+
`}(0,p.dx)(d,"mock/README.md",`# Attached mock / prototype
|
|
6
|
+
|
|
7
|
+
_The operator attached this visual prototype at onboarding. Agents must read these files and match the product to them precisely._
|
|
8
|
+
|
|
9
|
+
## Files
|
|
10
|
+
${b}`);try{for(let b of a.mockFiles.slice(0,200)){let a=("design-mock/import/"+b.path).replace(/\.\.+/g,".").replace(/\/+/g,"/");(0,p.dx)(d,a,b.content)}(0,p.dx)(d,"design-mock/import/README.md",`# Imported from the onboarding mock
|
|
11
|
+
|
|
12
|
+
_These files were attached at onboarding and copied here as the Design module's starting point. The frontend agent uses them to build or improve the prototype before the CEO Planner generates the plan._
|
|
13
|
+
|
|
14
|
+
## Files
|
|
15
|
+
${b}`)}catch(a){console.error("[onboarding] design-mock seed failed:",a)}try{await (0,v.I)(m,{kind:"design-review",text:`Mock imported — ${a.company||"your project"}`,detail:`${a.mockFiles.length} file(s) imported into the Design module. Open Design — Grace will reconstruct the mock on the canvas to prototype + approve before planning.`,tg:!0})}catch{}}g.db.insert(h.budget).values({workspaceId:m,monthlyCapUsd:400,monthlySpentUsd:0}).run(),g.db.insert(h.plan).values({workspaceId:m,stage:4}).run();let H=[];for(let[a,b,c,d]of E){let f=(0,e.randomUUID)();if(H.push(f),g.db.insert(h.skill).values({id:f,workspaceId:m,name:a,summary:b,trigger:c,native:!0,provisional:d,indexed:d?"pending":"indexed"}).run(),!d)for(let a of Object.keys(G))g.db.insert(h.agentSkill).values({agentId:G[a],skillId:f}).run()}try{(0,A.fR)({orgId:d,wsId:m,names:(0,z.Ws)(),agentIds:G,linkNames:[]}),(0,A.J$)(m)}catch(a){console.error("[onboarding] library skill seed failed:",a)}for(let[a,b,c]of[["GitHub","Commit, push & open PRs from the workspace.",!0],["Telegram","Route reports and alerts to a channel.",!0],["Vault","Encrypted secret storage for provider keys.",!0],["Web Search","Let agents look things up while planning.",!0]])g.db.insert(h.plugin).values({id:(0,e.randomUUID)(),workspaceId:m,name:a,description:b,enabled:c,native:!0}).run();return g.db.update(h.session).set({activeOrgId:d}).where((0,B.eq)(h.session.userId,c)).run(),{ok:!0}}async function I(){let{workspace:a}=await (0,i.nP)(),b=a.settings??{},c=b.source;return c?.type&&"new"!==c.type?(g.db.update(h.workspace).set({settings:{...b,source:{...c,analyzed:!1}}}).where((0,B.eq)(h.workspace.id,a.id)).run(),{ok:!0}):{ok:!1}}(0,C.D)([D,G,H,I]),(0,d.A)(D,"00ea2061cc0fb8571107408f0194c59b196f1db10a",null),(0,d.A)(G,"406ddd71f02219f04a23e06ef31e7b6bd5bbdb724c",null),(0,d.A)(H,"409b309a2a69c86714b89236b49e2eadaa2af47bab",null),(0,d.A)(I,"00f872e070eb20833f06af62d66ea9f7d739148e5d",null)},54039:(a,b,c)=>{function d(a){return a?a.split(",").map(a=>a.trim()).filter(Boolean):[]}function e(a){return a.join(", ")}function f(a){return d(a)[0]??""}function g(a,b){return d(a).includes(b)}function h(a,b){let c=d(a);return"None"===b?c.includes("None")?"":"None":e(c.includes(b)?c.filter(a=>a!==b):[...c.filter(a=>"None"!==a),b])}c.d(b,{BT:()=>f,He:()=>e,Hn:()=>g,P_:()=>h,jX:()=>d})},54768:(a,b,c)=>{function d(a,b,c){let d=a.match(/^---\n([\s\S]*?)\n---/);if(!d)return a;let e=d[1].split("\n"),f=!1,g=e.map(a=>a.startsWith(b+":")?(f=!0,`${b}: ${c}`):a);return f||g.push(`${b}: ${c}`),a.replace(/^---\n[\s\S]*?\n---/,()=>`---
|
|
16
|
+
${g.join("\n")}
|
|
17
|
+
---`)}function e(a,b,c){let d=RegExp(`(\\*\\*${b}:\\*\\*\\s*).*`);return d.test(a)?a.replace(d,(a,b)=>`${b}${c}`):a}function f(a,b,c){let d=RegExp(`(^|\\n)##\\s+${b}\\s*\\n[\\s\\S]*?(?=\\n##\\s|$)`);return d.test(a)?a.replace(d,(a,d)=>`${d}## ${b}
|
|
18
|
+
${c}`):a.replace(/\s*$/,"")+`
|
|
19
|
+
|
|
20
|
+
## ${b}
|
|
21
|
+
${c}
|
|
22
|
+
`}c.d(b,{a$:()=>e,c4:()=>f,tT:()=>d})},59627:(a,b,c)=>{c.d(b,{T:()=>e});let d=["start","auth","vps","portable"];function e(){let a=process.env.CONSTELLA_RUN_MODE;return a&&d.includes(a)?a:"start"}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=7905,exports.ids=[7905],exports.modules={87905:(a,b,c)=>{c.d(b,{Hg:()=>ak,a7:()=>al,sy:()=>an,is:()=>I,fM:()=>J,Sy:()=>H,e9:()=>aq,EQ:()=>ao,NM:()=>am,$_:()=>ac,qw:()=>U,DX:()=>X,ME:()=>F,oS:()=>K,RS:()=>L,R6:()=>aj,wP:()=>Y,Ni:()=>aa,gn:()=>ad,yL:()=>af,NW:()=>R,lj:()=>$,fb:()=>ai,pG:()=>ag,I_:()=>M,Fo:()=>O,o3:()=>P,a4:()=>ah,ft:()=>ab,Tu:()=>W,h_:()=>G,PO:()=>V});var d=c(80501),e=c(77598),f=c(73591),g=c(38465),h=c(3770),i=c(54813),j=c(406),k=c(96405),l=c(81585),m=c(37181),n=c(78958),o=c(3152),p=c(37989),q=c(3907),r=c(55593);let s=!1;function t(){s||(s=!0,i.F.exec(`
|
|
2
2
|
CREATE TABLE IF NOT EXISTS design_session (
|
|
3
3
|
id TEXT PRIMARY KEY,
|
|
4
4
|
workspace_id TEXT NOT NULL REFERENCES workspace(id) ON DELETE CASCADE,
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
39
39
|
);
|
|
40
40
|
CREATE INDEX IF NOT EXISTS design_comment_sess_idx ON design_comment (session_id);
|
|
41
|
-
`))}var u=c(
|
|
41
|
+
`))}var u=c(93852),v=c(38526),w=c(59840),x=c(86289),y=c(71809);function z(a,b){if(!b||/^(https?:)?\/\//i.test(b)||b.startsWith("data:")||b.startsWith("#")||b.startsWith("/"))return null;let c=b.split(/[?#]/)[0].trim();if(!c)return null;let d=a?a.split("/").filter(Boolean):[];for(let a of c.split("/"))if(""!==a&&"."!==a){if(".."===a){if(!d.length)return null;d.pop();continue}d.push(a)}let e=d.join("/");return e.includes("..")||!e.startsWith("design-mock/")?null:e}function A(a,b,c,d){let e=b.replace(/\/[^/]*$/,"");return a.replace(/@import\s+(?:url\(\s*)?["']?([^"')]+)["']?\s*\)?\s*;/gi,(a,b)=>{let f=z(e,String(b));if(!f||!/\.css$/i.test(f))return a;if(d.has(f))return"";d.add(f);let g=c(f);return null==g?`/* design: missing ${f} */`:`/* ${f} */
|
|
42
42
|
`+A(g,f,c,d)})}function B(a,b,c){let d=b.replace(/\/[^/]*$/,""),e=a.replace(/<link\b[^>]*>/gi,a=>{if(!/stylesheet/i.test(a)&&!/href\s*=\s*["'][^"']+\.css/i.test(a))return a;let b=a.match(/href\s*=\s*["']([^"']+)["']/i),e=b?z(d,b[1]):null;if(!e||!/\.css$/i.test(e))return a;let f=c(e);return null==f?`<!-- design: missing ${e} -->`:`<style data-cstla-bundled="${e}">
|
|
43
43
|
${A(f,e,c,new Set([e]))}
|
|
44
|
-
</style>`});return e.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,d,e)=>/@import/i.test(e)?`<style${d}>${A(e,b,c,new Set)}</style>`:a)}var C=c(
|
|
44
|
+
</style>`});return e.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,d,e)=>/@import/i.test(e)?`<style${d}>${A(e,b,c,new Set)}</style>`:a)}var C=c(64185);let D="design";async function E(a){let b=await i.db.select().from(j.agent).where((0,f.eq)(j.agent.workspaceId,a));return b.find(a=>"grace"===a.handle)??b.find(a=>/front\s?end|\bui\b|\bux\b/i.test(a.role))??b[0]??null}async function F(){let{workspace:a}=await (0,k.nP)();t();let[b]=await i.db.select().from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(b)return{id:b.id,status:b.status};let c=(0,e.randomUUID)();return await i.db.insert(j.designSession).values({id:c,workspaceId:a.id,title:`${a.name} — design`,status:"building",tokens:{}}),{id:c,status:"building"}}async function G(a){let{workspace:b}=await (0,k.nP)();t();let[c]=await i.db.select().from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,b.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);return c?await i.db.update(j.designSession).set({tokens:a,updatedAt:new Date}).where((0,f.eq)(j.designSession.id,c.id)):await i.db.insert(j.designSession).values({id:(0,e.randomUUID)(),workspaceId:b.id,title:`${b.name} — design`,status:"building",tokens:a}),{ok:!0}}async function H(a,b,c){let d=a?.trim(),p=(b??[]).map(a=>a?.path).filter(a=>!!a&&a.startsWith("uploads/")).slice(0,6);if(!d&&!p.length&&!c)return{ok:!1,error:"Describe what you want to prototype or change."};let{org:q,workspace:s}=await (0,k.nP)();t();let v=await E(s.id);if(!v)return{ok:!1,error:"No frontend agent found."};let z=d||(p.length?"(image)":c?"Adjust this element.":"(image)"),A=(0,e.randomUUID)();await i.db.insert(j.message).values({id:A,workspaceId:s.id,channel:D,fromKind:"operator",text:c?`${z}
|
|
45
45
|
|
|
46
46
|
↳ ${c.componentName} \xb7 <${c.elementType}>`:z,attachments:b?.length?b.slice(0,10):null,createdAt:new Date,sessionId:null});let B=(0,e.randomUUID)();return await i.db.update(j.agent).set({status:"working"}).where((0,f.eq)(j.agent.id,v.id)),await (0,m.I)(s.id,{runId:B,channel:D,agentId:v.id,kind:"thinking",target:`${v.name} is working on the prototype…`}),(async()=>{try{let a=(0,u.zw)(q.id,s),[b]=await i.db.select({tokens:j.designSession.tokens}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,s.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1),k=b?.tokens??{},t=k.accent||k.accentName||k.fontName||k.theme||null!=k.radius||null!=k.density?`
|
|
47
47
|
CURRENT DESIGN TOKENS (the operator set these on the canvas — build CONSISTENT with them): palette ${k.accentName??k.accent??"—"}${k.accent?` (${k.accent})`:""}, typography ${k.fontName??"—"}, corner radius ${k.radius??"—"}px, theme ${k.theme??"—"}, density ${k.density??"—"}px, text scale ${k.fontScale??1}.`:"";(0,l.Pe)(s.settings?.agents?.fileLocks??null),(0,l.Hs)(s.settings?.agents?.cmdGuard??null),(0,l.UC)(s.settings?.agents?.webResearch??null);let z=(0,l.hW)(v.adapter,v.model),C="claude"===z?v.model.includes("opus")?"opus":v.model.includes("haiku")?"haiku":"sonnet":void 0,E=(0,y.qg)("constella-design"),F=E?(0,y.BC)(E).trim():`You are ${v.name} (@${v.handle}), the FRONTEND designer in Constella's Design module — a visual prototyping space that runs BEFORE any real code.`,G=p.length?`
|
|
@@ -92,7 +92,7 @@ http.createServer((req, res) => {
|
|
|
92
92
|
_Re-sync: the design was updated in the Design module. Apply the visual changes to the files below WITHOUT clobbering the wired backend/data._`:"","","## Promoted files",m.map(a=>`- ${a}`).join("\n"),""].filter(Boolean).join("\n");(0,p.dx)(a,"design-mock/PROMOTED.md",n),(0,u.e1)(a,{at:Date.now(),target:h.target??g,served:l,needsPort:h.needsPort??e,files:m});try{await ae(b.id,i?"Promoted design → project source":"Design re-synced (update pending)",m)}catch{}return{ok:!0,target:h.target??g,served:l,needsPort:e,files:m,resync:!i}}async function S(a,b,c){let d=await E(b.id);if(!d)return void await T(a,b,c);let g=(0,e.randomUUID)();await i.db.update(j.agent).set({status:"working"}).where((0,f.eq)(j.agent.id,d.id)),await (0,m.I)(b.id,{runId:g,channel:D,agentId:d.id,kind:"thinking",target:`${d.name} is writing the handoff documentation…`}),(async()=>{let h=!1;try{let c=(0,u.zw)(a,b);(0,l.Pe)(b.settings?.agents?.fileLocks??null),(0,l.Hs)(b.settings?.agents?.cmdGuard??null),(0,l.UC)(b.settings?.agents?.webResearch??null);let f=(0,l.hW)(d.adapter,d.model),k="claude"===f?d.model.includes("opus")?"opus":d.model.includes("haiku")?"haiku":"sonnet":void 0,o=(0,y.qg)("constella-design"),q=[o?(0,y.BC)(o).trim():`You are ${d.name} (@${d.handle}), the frontend designer in Constella's Design module.`,`
|
|
93
93
|
(You are @${d.handle} / ${d.name} on the "design" channel. The operator just APPROVED the design and clicked "Send to execution". Mirror the operator's language in your short final reply; write all docs in English.)`,"TASK — produce the COMPLETE design HANDOFF DOCUMENTATION now, grounded in the APPROVED screens + the design tokens (and the source mock/ if present). Do NOT rebuild screens. Write/UPDATE these files under design-mock/ (create if missing):","1) design-mock/design-system.md — the full system: palette + tokens, typography scale, spacing, radius/elevation, components with their states, motion, accessibility, responsive breakpoints.","2) design-mock/components.md — each reusable component: anatomy, variants, states, usage notes.","3) design-mock/handoff.md — a screen-by-screen spec: layout, sections, data/fields, interactions & behavior, mapped to the approved screens — engineering builds EXACTLY this (zero drift).","4) design-mock/decisions.md — append the key UI/UX decisions and the rationale.","Keep everything consistent with design-mock/APPROVED.md. Build the docs incrementally (the operator watches the files appear). When done, reply in 2-3 sentences summarizing the handoff package and confirming it's ready for the CEO.",`
|
|
94
94
|
PROJECT CONTEXT:
|
|
95
|
-
${(0,u.uy)(c)}`,(0,u.Er)(c,"design system documentation handoff components")].filter(Boolean).join("\n"),s=new Set,t=await (0,l.p1)(q,{orgId:a,binary:f,model:k,timeoutMs:6e5,agentId:d.id,agentHandle:d.handle},a=>{if("create"===a.kind||"edit"===a.kind){let b=(a.target||"").replace(/\\/g,"/"),c=b.toLowerCase().indexOf("design-mock/");c>=0&&s.add(b.slice(c))}(0,m.I)(b.id,{runId:g,channel:D,agentId:d.id,kind:a.kind,target:a.target,detail:a.detail})});(t.usd>0||t.inputTokens+t.outputTokens>0)&&await i.db.insert(j.costEntry).values({id:(0,e.randomUUID)(),workspaceId:b.id,agentId:d.id,channel:D,provider:t.binary,model:t.model??d.model,usd:t.usd,tokens:t.inputTokens+t.outputTokens,at:new Date});let v=t.ok?t.text?.trim()||"Handoff documentation ready — sending to the CEO.":`(couldn't finish the docs: ${(0,w.Tc)(t.error||t.text)})`;if(await i.db.insert(j.message).values({id:g,workspaceId:b.id,channel:D,fromKind:"agent",fromHandle:d.handle,text:v.slice(0,4e3),createdAt:new Date,sessionId:null}),await (0,n.f)(b.id,g,D),t.ok&&s.size){try{await ae(b.id,"Design handoff documentation",[...s])}catch{}try{await (0,r.I)(b.id,{kind:"design-review",text:`Design documentation ready — ${b.name}`,detail:`${d.name} wrote the full handoff package (design system, components, screen specs, decisions). Handing off to Ada now.`,agentId:d.id,tg:!0})}catch{}}h=t.ok&&(s.size>0||!!(0,p.sL)(a,"design-mock/handoff.md"))}catch(a){console.error("[design] handoff docs run failed:",a)}finally{try{await i.db.update(j.agent).set({status:"idle"}).where((0,f.eq)(j.agent.id,d.id))}catch{}(0,o.r)(b.id)}if(h){try{let c=await R(a,b);c.ok&&await (0,r.I)(b.id,{kind:"design-review",text:`Design promoted to the project — ${b.name}`,detail:c.served?`The approved UI is now the real served frontend (${c.target}/). Ada will add the backend on top.`:`The approved UI was staged (${c.target}/)${c.needsPort?" — Ada will port it into the framework":""}. Ada plans from here.`,agentId:d.id,tg:!0})}catch(a){console.error("[design] promotion failed:",a)}try{await T(a,b,c),(0,u.DQ)(a)}catch(a){console.error("[design] CEO activation after handoff failed:",a)}}else try{await (0,r.I)(b.id,{kind:"design-review",text:`Design handoff didn't finish — ${b.name}`,detail:"Grace couldn't write the handoff documentation (provider limit / network). Open the Design module and tap Resume handoff to try again.",agentId:d.id,tg:!0})}catch{}})()}async function T(a,b,d){let{generatePlanFor:e,startNewWorkFor:g}=await Promise.resolve().then(c.bind(c,
|
|
95
|
+
${(0,u.uy)(c)}`,(0,u.Er)(c,"design system documentation handoff components")].filter(Boolean).join("\n"),s=new Set,t=await (0,l.p1)(q,{orgId:a,binary:f,model:k,timeoutMs:6e5,agentId:d.id,agentHandle:d.handle},a=>{if("create"===a.kind||"edit"===a.kind){let b=(a.target||"").replace(/\\/g,"/"),c=b.toLowerCase().indexOf("design-mock/");c>=0&&s.add(b.slice(c))}(0,m.I)(b.id,{runId:g,channel:D,agentId:d.id,kind:a.kind,target:a.target,detail:a.detail})});(t.usd>0||t.inputTokens+t.outputTokens>0)&&await i.db.insert(j.costEntry).values({id:(0,e.randomUUID)(),workspaceId:b.id,agentId:d.id,channel:D,provider:t.binary,model:t.model??d.model,usd:t.usd,tokens:t.inputTokens+t.outputTokens,at:new Date});let v=t.ok?t.text?.trim()||"Handoff documentation ready — sending to the CEO.":`(couldn't finish the docs: ${(0,w.Tc)(t.error||t.text)})`;if(await i.db.insert(j.message).values({id:g,workspaceId:b.id,channel:D,fromKind:"agent",fromHandle:d.handle,text:v.slice(0,4e3),createdAt:new Date,sessionId:null}),await (0,n.f)(b.id,g,D),t.ok&&s.size){try{await ae(b.id,"Design handoff documentation",[...s])}catch{}try{await (0,r.I)(b.id,{kind:"design-review",text:`Design documentation ready — ${b.name}`,detail:`${d.name} wrote the full handoff package (design system, components, screen specs, decisions). Handing off to Ada now.`,agentId:d.id,tg:!0})}catch{}}h=t.ok&&(s.size>0||!!(0,p.sL)(a,"design-mock/handoff.md"))}catch(a){console.error("[design] handoff docs run failed:",a)}finally{try{await i.db.update(j.agent).set({status:"idle"}).where((0,f.eq)(j.agent.id,d.id))}catch{}(0,o.r)(b.id)}if(h){try{let c=await R(a,b);c.ok&&await (0,r.I)(b.id,{kind:"design-review",text:`Design promoted to the project — ${b.name}`,detail:c.served?`The approved UI is now the real served frontend (${c.target}/). Ada will add the backend on top.`:`The approved UI was staged (${c.target}/)${c.needsPort?" — Ada will port it into the framework":""}. Ada plans from here.`,agentId:d.id,tg:!0})}catch(a){console.error("[design] promotion failed:",a)}try{await T(a,b,c),(0,u.DQ)(a)}catch(a){console.error("[design] CEO activation after handoff failed:",a)}}else try{await (0,r.I)(b.id,{kind:"design-review",text:`Design handoff didn't finish — ${b.name}`,detail:"Grace couldn't write the handoff documentation (provider limit / network). Open the Design module and tap Resume handoff to try again.",agentId:d.id,tg:!0})}catch{}})()}async function T(a,b,d){let{generatePlanFor:e,startNewWorkFor:g}=await Promise.resolve().then(c.bind(c,16356)),h=await U(a,b);try{await (0,r.I)(b.id,{kind:"design-review",text:`Ada received the design handoff — ${b.name}`,detail:"Turning the approved design + docs into Super Spec, specs, issues and tasks.",tg:!0})}catch{}if(d?.brief)return void await g(a,b,{title:d.goalTitle||"Design feature → execution",brief:`${d.brief}
|
|
96
96
|
|
|
97
97
|
The UI for this work has been prototyped + APPROVED in the Design module (design-mock/APPROVED.md + docs) — build it EXACTLY as designed (zero drift).
|
|
98
98
|
|
|
@@ -116,4 +116,4 @@ ${c.map(a=>"- "+a).join("\n")||"(scan the project for components / screens / sty
|
|
|
116
116
|
1) Create design-mock/styles/global.css with the design tokens (:root), reset/base and theme ([data-theme]).
|
|
117
117
|
2) Scaffold a skeleton of the main screen(s) under design-mock/screens/ — valid HTML linking ../styles/global.css, with the key sections blocked out as labelled placeholders.
|
|
118
118
|
3) Write design-mock/design-system.md outlining the palette, typography, spacing, core components and the screens to build.
|
|
119
|
-
4) Tell me what you set up and what to build/validate next before approving.`;return H(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function X(a){let{org:b}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let c=(0,p.sL)(b.id,a);return null==c?{ok:!1,error:"Screen not found."}:{ok:!0,html:B(c,a,a=>(0,p.sL)(b.id,a)).slice(0,2e6)}}async function Y(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,p.CS)(a.id).filter(a=>a.startsWith("design-mock/")&&/\.(md|markdown)$/i.test(a)&&!/\/README\.md$/i.test(a)).map(a=>({path:a,label:a.replace(/^design-mock\//,"")})).sort((a,b)=>Z(a.path)-Z(b.path)||a.label.localeCompare(b.label));return(0,u.zw)(a.id,b),{docs:c}}function Z(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function $(a){let{org:b}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.(md|markdown)$/i.test(a))return{ok:!1,error:"Not a design doc."};let c=(0,p.sL)(b.id,a);return null==c?{ok:!1,error:"Doc not found."}:{ok:!0,body:c.slice(0,5e5)}}let _=".claude/design-presets.json";async function aa(){let{org:a}=await (0,k.nP)(),b=(0,p.sL)(a.id,_);if(!b)return{presets:[]};try{let a=JSON.parse(b);return{presets:Array.isArray(a)?a.slice(0,60):[]}}catch{return{presets:[]}}}async function ab(a,b){let{org:c}=await (0,k.nP)(),d=(a??"").trim();if(!d||d.length>6e4)return{ok:!1,error:"Nothing to save."};let{presets:f}=await aa(),g=[{id:"p"+(0,e.randomUUID)().slice(0,6),label:(b||"Preset").slice(0,40),html:d},...f].slice(0,60);return(0,p.dx)(c.id,_,JSON.stringify(g,null,2)),{ok:!0}}async function ac(a){let{org:b}=await (0,k.nP)(),{presets:c}=await aa();return(0,p.dx)(b.id,_,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function ad(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,u.zw)(a.id,b);return{screens:c.designMockFiles.filter(a=>/\.html?$/i.test(a)),components:c.designMockFiles.filter(a=>a.startsWith("design-mock/components/"))}}async function ae(a,b,c){let[d]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!d)return;let h=await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,d.id));await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:d.id,label:"v"+(h.length+1),note:b.slice(0,300),patch:{files:c}})}async function af(){let{workspace:a}=await (0,k.nP)();t();let[b]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);return b?{versions:(await i.db.select().from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,b.id)).orderBy((0,g.i)(j.designVersion.createdAt))).map(a=>{let b=a.patch;return{id:a.id,label:a.label,note:a.note,files:b?.files??[],restorable:!!b?.snapshot,createdAt:a.createdAt.getTime()}})}:{versions:[]}}async function ag(a,b){return H(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function ah(a){let{org:b,workspace:c}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};t();let d=(0,p.sL)(b.id,a);if(null==d)return{ok:!1,error:"Screen not found."};let[l]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,c.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!l)return{ok:!1,error:"No design session."};let m="Saved v"+((await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,l.id))).length+1),n=(a.split("/").pop()||a).replace(/\.[a-z]+$/i,"");await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:l.id,label:m,note:`Checkpoint \xb7 ${n}`,patch:{files:[a],snapshot:d}});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,label:m}}async function ai(a){let{org:b,workspace:c}=await (0,k.nP)();t();let[d]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,c.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!d)return{ok:!1,error:"No design session."};let[e]=await i.db.select().from(j.designVersion).where((0,f.Uo)((0,f.eq)(j.designVersion.id,a),(0,f.eq)(j.designVersion.sessionId,d.id))).limit(1);if(!e)return{ok:!1,error:"Checkpoint not found."};let l=e.patch,m=l?.files?.[0];if(!l?.snapshot||!m)return{ok:!1,error:"This version isn't a restorable checkpoint."};if(!m.startsWith("design-mock/")||m.includes(".."))return{ok:!1,error:"Bad path."};(0,p.dx)(b.id,m,l.snapshot);try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function aj(a){let{workspace:b}=await (0,k.nP)();t();let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,b.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!c)return{comments:[]};let d=a?(0,f.Uo)((0,f.eq)(j.designComment.sessionId,c.id),(0,f.eq)(j.designComment.pageKey,a)):(0,f.eq)(j.designComment.sessionId,c.id);return{comments:(await i.db.select().from(j.designComment).where(d).orderBy(j.designComment.createdAt)).map(a=>({id:a.id,pageKey:a.pageKey,xp:a.xp,yp:a.yp,body:a.body,reply:a.reply,selection:a.selection,createdAt:a.createdAt.getTime()}))}}async function ak(a,b,c,d,f){let g=d?.trim();if(!g)return{ok:!1,error:"Empty comment."};t();let k=await F(),l=(0,e.randomUUID)();await i.db.insert(j.designComment).values({id:l,sessionId:k.id,pageKey:(a||"").slice(0,300),xp:b,yp:c,body:g.slice(0,2e3),reply:"",selection:f??null});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,id:l}}async function al(a,b,c){t();let d=await F(),f=(0,e.randomUUID)(),g=(c||"").trim();await i.db.insert(j.designComment).values({id:f,sessionId:d.id,pageKey:(a||"").slice(0,300),xp:b.x,yp:b.y,body:(g||"(region marked for review)").slice(0,2e3),reply:"",selection:{kind:"markup",rect:b}});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,id:f}}async function am(a){let{workspace:b}=await (0,k.nP)();t();let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,b.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);c&&await i.db.delete(j.designComment).where((0,f.Uo)((0,f.eq)(j.designComment.id,a),(0,f.eq)(j.designComment.sessionId,c.id)));try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function an(a,b,c){let{org:d}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let e=(b??"").trim();if(!e)return{ok:!1,error:"Nothing to replace."};let f=(0,p.sL)(d.id,a);if(null==f)return{ok:!1,error:"Screen not found."};let g=f.indexOf(e);if(g<0)return{ok:!1,error:"Couldn't locate that text — ask Grace to apply it."};if(f.indexOf(e,g+1)>=0)return{ok:!1,error:"That text appears more than once — ask Grace to apply it."};(0,p.dx)(d.id,a,f.slice(0,g)+(c??"")+f.slice(g+e.length));try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ao(a,b){let{org:c,workspace:d}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};if(null==b)return{ok:!1,error:"Nothing to commit."};if(b.length>4e6)return{ok:!1,error:"Screen too large."};let e=b,f=e.match(/<body[^>]*>([\s\S]*)<\/body>/i);f&&(e=f[1]),e=e.replace(/<!doctype[^>]*>/gi,"").replace(/<\/?(?:html|head|body)\b[^>]*>/gi,"");let g=(0,p.sL)(c.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let i=g.match(/<body([^>]*)>[\s\S]*<\/body>/i),j=i&&null!=i.index?g.slice(0,i.index)+`<body${i[1]}>`+e+"</body>"+g.slice(i.index+i[0].length):`<!doctype html><html><head><meta charset="utf-8"></head><body>${e}</body></html>`;(0,p.dx)(c.id,a,j);try{await ap(d.id,a)}catch{}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ap(a,b){let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!c)return;let d="Manual canvas edit",[h]=await i.db.select().from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,c.id)).orderBy((0,g.i)(j.designVersion.createdAt)).limit(1);if(h&&h.note===d&&Date.now()-h.createdAt.getTime()<9e4){let a=Array.from(new Set([...h.patch?.files??[],b]));await i.db.update(j.designVersion).set({patch:{files:a},createdAt:new Date}).where((0,f.eq)(j.designVersion.id,h.id))}else{let a=await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,c.id));await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:c.id,label:"v"+(a.length+1),note:d,patch:{files:[b]}})}}async function aq(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,u.zw)(a.id,b).designMockFiles.filter(a=>/design-mock\/screens\/.+\.html?$/i.test(a));if(!c.length)return{ok:!1,built:[],error:"No screens to build yet — ask Grace for a screen first."};let d=[];for(let b of c){let c=(0,p.sL)(a.id,b);if(null==c)continue;let{out:e,obfuscated:f}=function(a){let b=/<script\b/i.test(a),c=function(a){let b;return(b=[],a.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,c)=>`<style${b}>${c.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{};,])\s*/g,"$1").replace(/:\s+/g,":").replace(/;}/g,"}").trim()}</style>`).replace(/<(script|style)\b[\s\S]*?<\/\1>/gi,a=>(b.push(a),`\0${b.length-1}\0`)).replace(/<!--(?!\[if)[\s\S]*?-->/g,"").replace(/(\d+)/g,(a,c)=>b[Number(c)])).trim()}(a);return b||(c=function(a){if(/<script\b/i.test(a))return a;let b=new Set;for(let c of a.matchAll(/class\s*=\s*"([^"]*)"/gi))c[1].split(/\s+/).filter(Boolean).forEach(a=>b.add(a));if(!b.size)return a;let c=new Map;[...b].forEach((a,b)=>c.set(a,function(a){let b="",c=a+1;for(;c>0;)b="abcdefghijklmnopqrstuvwxyz"[--c%26]+b,c=Math.floor(c/26);return b}(b)));let d=a.replace(/class\s*=\s*"([^"]*)"/gi,(a,b)=>`class="${b.split(/\s+/).filter(Boolean).map(a=>c.get(a)??a).join(" ")}"`);return d.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,d)=>{let e=d;for(let[a,b]of c)e=e.replace(RegExp("\\."+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?![-_\\w])","g"),"."+b);return`<style${b}>${e}</style>`})}(c)),{out:c,obfuscated:!b}}(B(c,b,b=>(0,p.sL)(a.id,b))),g=`design-mock/dist/${b.split("/").pop()}`;(0,p.dx)(a.id,g,e),d.push({path:g,before:c.length,after:e.length,obfuscated:f})}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,built:d}}(0,C.D)([F,G,H,I,J,K,L,M,O,P,R,U,V,W,X,Y,$,aa,ab,ac,ad,af,ag,ah,ai,aj,ak,al,am,an,ao,aq]),(0,d.A)(F,"009f63092f0ec7ab04ba59b6200071d083227c97fc",null),(0,d.A)(G,"402521df2cdcdf994cd2264cd2ae8e32cce160764d",null),(0,d.A)(H,"70c5b800592f8c728e28096ea00b5991d917d5b166",null),(0,d.A)(I,"4017364bc3b6d6fa14061cfac839d1a8827d6c73b5",null),(0,d.A)(J,"704389bc75f649527643be72d97dea040cc68a8541",null),(0,d.A)(K,"005654d5bee41f688facd5214d39464c0a5154a96d",null),(0,d.A)(L,"60f3c0ba58cabeb1d8596a8198d8005537906a87e7",null),(0,d.A)(M,"00c7d21ee3adeb722cfce33e92f77f27aa0c649888",null),(0,d.A)(O,"60e4ac6bf305417265debb1d7d6d5b994d57b22161",null),(0,d.A)(P,"005c24c0f0211e033cb8e6bc08690f6247978646f6",null),(0,d.A)(R,"601bdeb977fbc2e3944a52d0c6037b3d61a305a56a",null),(0,d.A)(U,"60b9de834db4c321afc7fb79b8c65f5d9dfe457ab8",null),(0,d.A)(V,"000d2475a828032e63b1cbb99501b270d46c86c4d9",null),(0,d.A)(W,"00a74d208fffff8f43745ea86e004ff1eb0ffe2ced",null),(0,d.A)(X,"4022f1066dfef34fbb82f5d949e1af2381f0b41e1b",null),(0,d.A)(Y,"0015ace5d40c40b2308d1146611332c7f09101db2b",null),(0,d.A)($,"40f19d59c8b81b0b668840478ff1dc221845092d69",null),(0,d.A)(aa,"00275a0096349c5159f727630056869831c6052a90",null),(0,d.A)(ab,"600d8ef59ec617bc23f97c4b95c39ecebfe50f11a8",null),(0,d.A)(ac,"40ade191d12ca903e1806ca591518197b710007f5f",null),(0,d.A)(ad,"00acc474f484ce96a824b2454a098e8dc71914bf5e",null),(0,d.A)(af,"0067a5ef8d17ec38729f7ccb6c66334a5ba3c50745",null),(0,d.A)(ag,"60f05b118f57621541ffc2d84808a79b8bff859f81",null),(0,d.A)(ah,"40155f88f1c1dd62e916c89f5051e44f6b700413b4",null),(0,d.A)(ai,"40004ed28e4ffbcfb3eb0c22b185c89201e671971f",null),(0,d.A)(aj,"40f1fa3f447273f78f9a0ffce89894790292bb4b08",null),(0,d.A)(ak,"7cfdd007ba47d4feb198cc6937c6b450d454266e8c",null),(0,d.A)(al,"7025b1705b7eb7a915125df238da780672906b31a7",null),(0,d.A)(am,"40c24d2c549cf74080f8dcff3c2dbb2ce82e7fae5a",null),(0,d.A)(an,"7044adad76d6dbcd2ebf27ca1fb5911ec02093ba89",null),(0,d.A)(ao,"60174a505ab0000e6ba58f8350a98c8bfd8f08f9cd",null),(0,d.A)(aq,"00362877be6a6f7da575700ffbf6d3b713016928b6",null)}};
|
|
119
|
+
4) Tell me what you set up and what to build/validate next before approving.`;return H(`Ada is preparing the delivery plan and needs the design prototyped + approved first (zero drift). ${a}`)}async function X(a){let{org:b}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let c=(0,p.sL)(b.id,a);return null==c?{ok:!1,error:"Screen not found."}:{ok:!0,html:B(c,a,a=>(0,p.sL)(b.id,a)).slice(0,2e6)}}async function Y(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,p.CS)(a.id).filter(a=>a.startsWith("design-mock/")&&/\.(md|markdown)$/i.test(a)&&!/\/README\.md$/i.test(a)).map(a=>({path:a,label:a.replace(/^design-mock\//,"")})).sort((a,b)=>Z(a.path)-Z(b.path)||a.label.localeCompare(b.label));return(0,u.zw)(a.id,b),{docs:c}}function Z(a){return/APPROVED\.md$/i.test(a)?0:/design-system\.md$/i.test(a)?1:2}async function $(a){let{org:b}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.(md|markdown)$/i.test(a))return{ok:!1,error:"Not a design doc."};let c=(0,p.sL)(b.id,a);return null==c?{ok:!1,error:"Doc not found."}:{ok:!0,body:c.slice(0,5e5)}}let _=".claude/design-presets.json";async function aa(){let{org:a}=await (0,k.nP)(),b=(0,p.sL)(a.id,_);if(!b)return{presets:[]};try{let a=JSON.parse(b);return{presets:Array.isArray(a)?a.slice(0,60):[]}}catch{return{presets:[]}}}async function ab(a,b){let{org:c}=await (0,k.nP)(),d=(a??"").trim();if(!d||d.length>6e4)return{ok:!1,error:"Nothing to save."};let{presets:f}=await aa(),g=[{id:"p"+(0,e.randomUUID)().slice(0,6),label:(b||"Preset").slice(0,40),html:d},...f].slice(0,60);return(0,p.dx)(c.id,_,JSON.stringify(g,null,2)),{ok:!0}}async function ac(a){let{org:b}=await (0,k.nP)(),{presets:c}=await aa();return(0,p.dx)(b.id,_,JSON.stringify(c.filter(b=>b.id!==a),null,2)),{ok:!0}}async function ad(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,u.zw)(a.id,b);return{screens:c.designMockFiles.filter(a=>/\.html?$/i.test(a)),components:c.designMockFiles.filter(a=>a.startsWith("design-mock/components/"))}}async function ae(a,b,c){let[d]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!d)return;let h=await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,d.id));await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:d.id,label:"v"+(h.length+1),note:b.slice(0,300),patch:{files:c}})}async function af(){let{workspace:a}=await (0,k.nP)();t();let[b]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);return b?{versions:(await i.db.select().from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,b.id)).orderBy((0,g.i)(j.designVersion.createdAt))).map(a=>{let b=a.patch;return{id:a.id,label:a.label,note:a.note,files:b?.files??[],restorable:!!b?.snapshot,createdAt:a.createdAt.getTime()}})}:{versions:[]}}async function ag(a,b){return H(`Restore the prototype to ${a} — "${b}". Re-apply that state to the screens under design-mock/screens/ and tell me what changed.`)}async function ah(a){let{org:b,workspace:c}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};t();let d=(0,p.sL)(b.id,a);if(null==d)return{ok:!1,error:"Screen not found."};let[l]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,c.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!l)return{ok:!1,error:"No design session."};let m="Saved v"+((await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,l.id))).length+1),n=(a.split("/").pop()||a).replace(/\.[a-z]+$/i,"");await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:l.id,label:m,note:`Checkpoint \xb7 ${n}`,patch:{files:[a],snapshot:d}});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,label:m}}async function ai(a){let{org:b,workspace:c}=await (0,k.nP)();t();let[d]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,c.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!d)return{ok:!1,error:"No design session."};let[e]=await i.db.select().from(j.designVersion).where((0,f.Uo)((0,f.eq)(j.designVersion.id,a),(0,f.eq)(j.designVersion.sessionId,d.id))).limit(1);if(!e)return{ok:!1,error:"Checkpoint not found."};let l=e.patch,m=l?.files?.[0];if(!l?.snapshot||!m)return{ok:!1,error:"This version isn't a restorable checkpoint."};if(!m.startsWith("design-mock/")||m.includes(".."))return{ok:!1,error:"Bad path."};(0,p.dx)(b.id,m,l.snapshot);try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function aj(a){let{workspace:b}=await (0,k.nP)();t();let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,b.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!c)return{comments:[]};let d=a?(0,f.Uo)((0,f.eq)(j.designComment.sessionId,c.id),(0,f.eq)(j.designComment.pageKey,a)):(0,f.eq)(j.designComment.sessionId,c.id);return{comments:(await i.db.select().from(j.designComment).where(d).orderBy(j.designComment.createdAt)).map(a=>({id:a.id,pageKey:a.pageKey,xp:a.xp,yp:a.yp,body:a.body,reply:a.reply,selection:a.selection,createdAt:a.createdAt.getTime()}))}}async function ak(a,b,c,d,f){let g=d?.trim();if(!g)return{ok:!1,error:"Empty comment."};t();let k=await F(),l=(0,e.randomUUID)();await i.db.insert(j.designComment).values({id:l,sessionId:k.id,pageKey:(a||"").slice(0,300),xp:b,yp:c,body:g.slice(0,2e3),reply:"",selection:f??null});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,id:l}}async function al(a,b,c){t();let d=await F(),f=(0,e.randomUUID)(),g=(c||"").trim();await i.db.insert(j.designComment).values({id:f,sessionId:d.id,pageKey:(a||"").slice(0,300),xp:b.x,yp:b.y,body:(g||"(region marked for review)").slice(0,2e3),reply:"",selection:{kind:"markup",rect:b}});try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,id:f}}async function am(a){let{workspace:b}=await (0,k.nP)();t();let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,b.id)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);c&&await i.db.delete(j.designComment).where((0,f.Uo)((0,f.eq)(j.designComment.id,a),(0,f.eq)(j.designComment.sessionId,c.id)));try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function an(a,b,c){let{org:d}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};let e=(b??"").trim();if(!e)return{ok:!1,error:"Nothing to replace."};let f=(0,p.sL)(d.id,a);if(null==f)return{ok:!1,error:"Screen not found."};let g=f.indexOf(e);if(g<0)return{ok:!1,error:"Couldn't locate that text — ask Grace to apply it."};if(f.indexOf(e,g+1)>=0)return{ok:!1,error:"That text appears more than once — ask Grace to apply it."};(0,p.dx)(d.id,a,f.slice(0,g)+(c??"")+f.slice(g+e.length));try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ao(a,b){let{org:c,workspace:d}=await (0,k.nP)();if(!a||!a.startsWith("design-mock/")||a.includes("..")||!/\.html?$/i.test(a))return{ok:!1,error:"Not a design screen."};if(null==b)return{ok:!1,error:"Nothing to commit."};if(b.length>4e6)return{ok:!1,error:"Screen too large."};let e=b,f=e.match(/<body[^>]*>([\s\S]*)<\/body>/i);f&&(e=f[1]),e=e.replace(/<!doctype[^>]*>/gi,"").replace(/<\/?(?:html|head|body)\b[^>]*>/gi,"");let g=(0,p.sL)(c.id,a);if(null==g)return{ok:!1,error:"Screen not found."};let i=g.match(/<body([^>]*)>[\s\S]*<\/body>/i),j=i&&null!=i.index?g.slice(0,i.index)+`<body${i[1]}>`+e+"</body>"+g.slice(i.index+i[0].length):`<!doctype html><html><head><meta charset="utf-8"></head><body>${e}</body></html>`;(0,p.dx)(c.id,a,j);try{await ap(d.id,a)}catch{}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0}}async function ap(a,b){let[c]=await i.db.select({id:j.designSession.id}).from(j.designSession).where((0,f.eq)(j.designSession.workspaceId,a)).orderBy((0,g.i)(j.designSession.createdAt)).limit(1);if(!c)return;let d="Manual canvas edit",[h]=await i.db.select().from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,c.id)).orderBy((0,g.i)(j.designVersion.createdAt)).limit(1);if(h&&h.note===d&&Date.now()-h.createdAt.getTime()<9e4){let a=Array.from(new Set([...h.patch?.files??[],b]));await i.db.update(j.designVersion).set({patch:{files:a},createdAt:new Date}).where((0,f.eq)(j.designVersion.id,h.id))}else{let a=await i.db.select({id:j.designVersion.id}).from(j.designVersion).where((0,f.eq)(j.designVersion.sessionId,c.id));await i.db.insert(j.designVersion).values({id:(0,e.randomUUID)(),sessionId:c.id,label:"v"+(a.length+1),note:d,patch:{files:[b]}})}}async function aq(){let{org:a,workspace:b}=await (0,k.nP)(),c=(0,u.zw)(a.id,b).designMockFiles.filter(a=>/design-mock\/screens\/.+\.html?$/i.test(a));if(!c.length)return{ok:!1,built:[],error:"No screens to build yet — ask Grace for a screen first."};let d=[];for(let b of c){let c=(0,p.sL)(a.id,b);if(null==c)continue;let{out:e,obfuscated:f}=function(a){let b=/<script\b/i.test(a),c=function(a){let b;return(b=[],a.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,c)=>`<style${b}>${c.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s+/g," ").replace(/\s*([{};,])\s*/g,"$1").replace(/:\s+/g,":").replace(/;}/g,"}").trim()}</style>`).replace(/<(script|style)\b[\s\S]*?<\/\1>/gi,a=>(b.push(a),`\0${b.length-1}\0`)).replace(/<!--(?!\[if)[\s\S]*?-->/g,"").replace(/(\d+)/g,(a,c)=>b[Number(c)])).trim()}(a);return b||(c=function(a){if(/<script\b/i.test(a))return a;let b=new Set;for(let c of a.matchAll(/class\s*=\s*"([^"]*)"/gi))c[1].split(/\s+/).filter(Boolean).forEach(a=>b.add(a));if(!b.size)return a;let c=new Map;[...b].forEach((a,b)=>c.set(a,function(a){let b="",c=a+1;for(;c>0;)b="abcdefghijklmnopqrstuvwxyz"[--c%26]+b,c=Math.floor(c/26);return b}(b)));let d=a.replace(/class\s*=\s*"([^"]*)"/gi,(a,b)=>`class="${b.split(/\s+/).filter(Boolean).map(a=>c.get(a)??a).join(" ")}"`);return d.replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi,(a,b,d)=>{let e=d;for(let[a,b]of c)e=e.replace(RegExp("\\."+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?![-_\\w])","g"),"."+b);return`<style${b}>${e}</style>`})}(c)),{out:c,obfuscated:!b}}(B(c,b,b=>(0,p.sL)(a.id,b))),g=`design-mock/dist/${b.split("/").pop()}`;(0,p.dx)(a.id,g,e),d.push({path:g,before:c.length,after:e.length,obfuscated:f})}try{(0,h.revalidatePath)("/design")}catch{}return{ok:!0,built:d}}(0,C.D)([F,G,H,I,J,K,L,M,O,P,R,U,V,W,X,Y,$,aa,ab,ac,ad,af,ag,ah,ai,aj,ak,al,am,an,ao,aq]),(0,d.A)(F,"005b10ac4df7ed0f7392e991bb82ed4f88d3b61d74",null),(0,d.A)(G,"4067307ce089b31d3e494ed9c0f93d9847b649e934",null),(0,d.A)(H,"7080b27ff6dfc3db037e16c1bfcb0dbdd6e39da61a",null),(0,d.A)(I,"40c1f693730c73d3ea25cb7fead89fbeddc38941bf",null),(0,d.A)(J,"704f3c299b2a26f4c589dae77dd538aca487aaa71c",null),(0,d.A)(K,"007d2d9dd848b3415490b6f32875e692d898958ab6",null),(0,d.A)(L,"60a086bbd97cfbf602cbe04606aa1b54802fc1d3fe",null),(0,d.A)(M,"00881dc144c821d03ec1349f977507a79eb62c08b9",null),(0,d.A)(O,"60b2749ebc40600e93b4d9b6be93528555dea63350",null),(0,d.A)(P,"00ba0232091ba4ed048391fa668752ce34b548bcf0",null),(0,d.A)(R,"60816c6010080d0c3b54871286f36bd24e0618aaa6",null),(0,d.A)(U,"60df6fc6cfbfdc1eb8f9a039646193c4d8d1b3ecfa",null),(0,d.A)(V,"00c62021056f8b2c00829a8b7d390353eaabc724a4",null),(0,d.A)(W,"00a3c4b5a13e1dde6efab6d5421a9232dfd87a4689",null),(0,d.A)(X,"40bac470c1253b0cd0dc683537b3cf5462d92020bc",null),(0,d.A)(Y,"000e9041aeb30b4c8ca71341990e208d68b7b21b7f",null),(0,d.A)($,"40aa8544982f3077cdbc78e57a1bc7a1d078a5035f",null),(0,d.A)(aa,"00956b8eaaf169063abde5cb3f59badefbe71915f6",null),(0,d.A)(ab,"6021c456fc57cc4afc301239c8ce96b2f55ebeaab6",null),(0,d.A)(ac,"402081a0915ac82ebc6d340fbf82e3746a4925eb8b",null),(0,d.A)(ad,"000bae14a63337ad112175da81b78bcd62ba42a2df",null),(0,d.A)(af,"008f3863abc603d341052a4bbab8ce9243ad029880",null),(0,d.A)(ag,"60e6e05368a96761ba5c0fb9a1542975b0e1812ac5",null),(0,d.A)(ah,"400df4e1324216021f528585fdf52bcbb465ae43c6",null),(0,d.A)(ai,"40103701dbb018905c3123a247995125d8a7bd4d7a",null),(0,d.A)(aj,"40a8566bc9a80a001d82131f509bd374af991b76ff",null),(0,d.A)(ak,"7cd67f9da791307c34e973ce5935ff3ebdb540ece0",null),(0,d.A)(al,"7092594720b30422789b60560e0e360acd53a13329",null),(0,d.A)(am,"40b8490ba2b7dd406f11ea61518ad8761bb15ca558",null),(0,d.A)(an,"700861576230a313df69af7bb3b2ad32c90963e9fe",null),(0,d.A)(ao,"602d70d47f8248807f19f7af7595ad03cb510362f1",null),(0,d.A)(aq,"000775aa288b626c1a9d42728f9f4ff7d9d3d468d4",null)}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=7911,exports.ids=[7911],exports.modules={17911:(a,b,c)=>{function d(a){let b=new Uint8Array(a),c="";for(let a of b)c+=String.fromCharCode(a);return btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function e(a){let b=a.replace(/-/g,"+").replace(/_/g,"/"),c=(4-b.length%4)%4,d=atob(b.padEnd(b.length+c,"=")),e=new ArrayBuffer(d.length),f=new Uint8Array(e);for(let a=0;a<d.length;a++)f[a]=d.charCodeAt(a);return e}function f(){return g.stubThis(globalThis?.PublicKeyCredential!==void 0&&"function"==typeof globalThis.PublicKeyCredential)}c.d(b,{HS:()=>r,Ct:()=>o});let g={stubThis:a=>a};function h(a){let{id:b}=a;return{...a,id:e(b),transports:a.transports}}function i(a){return"localhost"===a||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(a)}class j extends Error{constructor({message:a,code:b,cause:c,name:d}){super(a,{cause:c}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=d??c.name,this.code=b}}class k{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let a=Error("Cancelling existing WebAuthn API call for new one");a.name="AbortError",this.controller.abort(a)}let a=new AbortController;return this.controller=a,a.signal}cancelCeremony(){if(this.controller){let a=Error("Manually cancelling existing WebAuthn API call");a.name="AbortError",this.controller.abort(a),this.controller=void 0}}}let l=new k,m=["cross-platform","platform"];function n(a){if(a&&!(0>m.indexOf(a)))return a}async function o(a){let b,c,g,k,m;!a.optionsJSON&&a.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),a={optionsJSON:a});let{optionsJSON:o,useAutoRegister:q=!1}=a;if(!f())throw Error("WebAuthn is not supported in this browser");let r={...o,challenge:e(o.challenge),user:{...o.user,id:e(o.user.id)},excludeCredentials:o.excludeCredentials?.map(h)},s={};q&&(s.mediation="conditional"),s.publicKey=r,s.signal=l.createNewAbortSignal();try{b=await navigator.credentials.create(s)}catch(a){throw function({error:a,options:b}){let{publicKey:c}=b;if(!c)throw Error("options was missing required publicKey property");if("AbortError"===a.name){if(b.signal instanceof AbortSignal)return new j({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:a})}else if("ConstraintError"===a.name){if(c.authenticatorSelection?.requireResidentKey===!0)return new j({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:a});else if("conditional"===b.mediation&&c.authenticatorSelection?.userVerification==="required")return new j({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:a});else if(c.authenticatorSelection?.userVerification==="required")return new j({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:a})}else if("InvalidStateError"===a.name)return new j({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:a});else if("NotAllowedError"===a.name)return new j({message:a.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:a});else if("NotSupportedError"===a.name)return new j(0===c.pubKeyCredParams.filter(a=>"public-key"===a.type).length?{message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:a}:{message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:a});else if("SecurityError"===a.name){let b=globalThis.location.hostname;if(!i(b))return new j({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:a});if(c.rp.id!==b)return new j({message:`The RP ID "${c.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:a})}else if("TypeError"===a.name){if(c.user.id.byteLength<1||c.user.id.byteLength>64)return new j({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:a})}else if("UnknownError"===a.name)return new j({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:a});return a}({error:a,options:s})}if(!b)throw Error("Registration was not completed");let{id:t,rawId:u,response:v,type:w}=b;if("function"==typeof v.getTransports&&(g=v.getTransports()),"function"==typeof v.getPublicKeyAlgorithm)try{k=v.getPublicKeyAlgorithm()}catch(a){p("getPublicKeyAlgorithm()",a)}if("function"==typeof v.getPublicKey)try{let a=v.getPublicKey();null!==a&&(m=d(a))}catch(a){p("getPublicKey()",a)}if("function"==typeof v.getAuthenticatorData)try{c=d(v.getAuthenticatorData())}catch(a){p("getAuthenticatorData()",a)}return{id:t,rawId:d(u),response:{attestationObject:d(v.attestationObject),clientDataJSON:d(v.clientDataJSON),transports:g,publicKeyAlgorithm:k,publicKey:m,authenticatorData:c},type:w,clientExtensionResults:b.getClientExtensionResults(),authenticatorAttachment:n(b.authenticatorAttachment)}}function p(a,b){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${a}. You should report this error to them.
|
|
2
2
|
`,b)}let q=a=>a;async function r(a){let b,c,g;!a.optionsJSON&&a.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),a={optionsJSON:a});let{optionsJSON:k,useBrowserAutofill:m=!1,verifyBrowserAutofillInput:o=!0}=a;if(!f())throw Error("WebAuthn is not supported in this browser");k.allowCredentials?.length!==0&&(b=k.allowCredentials?.map(h));let p={...k,challenge:e(k.challenge),allowCredentials:b},r={};if(m){if(!await function(){if(!f())return q(new Promise(a=>a(!1)));let a=globalThis.PublicKeyCredential;return a?.isConditionalMediationAvailable===void 0?q(new Promise(a=>a(!1))):q(a.isConditionalMediationAvailable())}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&o)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');r.mediation="conditional",p.allowCredentials=[]}r.publicKey=p,r.signal=l.createNewAbortSignal();try{c=await navigator.credentials.get(r)}catch(a){throw function({error:a,options:b}){let{publicKey:c}=b;if(!c)throw Error("options was missing required publicKey property");if("AbortError"===a.name){if(b.signal instanceof AbortSignal)return new j({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:a})}else if("NotAllowedError"===a.name)return new j({message:a.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:a});else if("SecurityError"===a.name){let b=globalThis.location.hostname;if(!i(b))return new j({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:a});if(c.rpId!==b)return new j({message:`The RP ID "${c.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:a})}else if("UnknownError"===a.name)return new j({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:a});return a}({error:a,options:r})}if(!c)throw Error("Authentication was not completed");let{id:s,rawId:t,response:u,type:v}=c;return u.userHandle&&(g=d(u.userHandle)),{id:s,rawId:d(t),response:{authenticatorData:d(u.authenticatorData),clientDataJSON:d(u.clientDataJSON),signature:d(u.signature),userHandle:g},type:v,clientExtensionResults:c.getClientExtensionResults(),authenticatorAttachment:n(c.authenticatorAttachment)}}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=8134,exports.ids=[8134],exports.modules={28134:(a,b,c)=>{c.d(b,{uJ:()=>v,V1:()=>z,c5:()=>t,ru:()=>E,ed:()=>N,NV:()=>L,yY:()=>F,Mn:()=>I,QU:()=>x});var d=c(77598),e=c(50730),f=c(23888),g=c(6839),h=c(12940),i=c(76561),j=c(50415),k=c(55104),l=c(84452),m=c(15878);c(66408);var n=c(30515),o=c(44440),p=c(63942);let q=`You are Vannevar, the Knowledge agent — Constella's CENTRAL SOURCE OF TRUTH. You own the Knowledge Base (KB): a curated, classified, state-aware layer over the semantic RAG index.
|
|
2
2
|
|
|
3
3
|
## What the KB is for
|
|
4
4
|
Agents must not leave reusable knowledge scattered in chat. When anything important is created, changed, discovered, reviewed or completed, it is captured into a typed kb_entry, deduped, lifecycle-tracked (active → superseded → obsolete → archived), embedded, and made retrievable. You keep it organised, current and trustworthy.
|
|
@@ -144,4 +144,4 @@ This pass: merged ${v}, retired ${w}, re-summarised ${x}.
|
|
|
144
144
|
|
|
145
145
|
`+(y.length?`## Coverage gaps
|
|
146
146
|
${y.map(a=>`- ${a}`).join("\n")}
|
|
147
|
-
`:"No coverage gaps reported.\n");try{await (0,n.g)(c.orgId,"Reports/kb-health.md",C)}catch{}return v+w+x+y.length>0&&await (0,o.I)(c.id,{kind:"report",text:"KB curated",detail:`merged ${v}, retired ${w}, re-summarised ${x}, ${y.length} gap(s).`,agentId:j.id}),{ok:s.ok,merged:v,retired:w,summarized:x,gaps:y.length}}catch{return b}}let U=new Map,V=new Map},
|
|
147
|
+
`:"No coverage gaps reported.\n");try{await (0,n.g)(c.orgId,"Reports/kb-health.md",C)}catch{}return v+w+x+y.length>0&&await (0,o.I)(c.id,{kind:"report",text:"KB curated",detail:`merged ${v}, retired ${w}, re-summarised ${x}, ${y.length} gap(s).`,agentId:j.id}),{ok:s.ok,merged:v,retired:w,summarized:x,gaps:y.length}}catch{return b}}let U=new Map,V=new Map},30515:(a,b,c)=>{c.d(b,{g:()=>f});var d=c(66408),e=c(89258);async function f(a,b,c){(0,d.dx)(a,b,c),await (0,e.LV)(a,b)}},63942:(a,b,c)=>{c.d(b,{Z:()=>f});let d=["CONSTELLA_VAULT_KEY","BETTER_AUTH_SECRET","CONSTELLA_WORKER_SECRET"],e=RegExp("sk-[A-Za-z0-9_-]{16,}|gh[posru]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{40,}|AKIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{30,}|xox[baprs]-[A-Za-z0-9-]{10,}|eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{6,}|-----BEGIN[\\s\\S]*?PRIVATE KEY-----[\\s\\S]*?-----END[\\s\\S]*?-----|\\bcn_[A-Za-z0-9_-]{24,}\\b|\\b\\d{6,}:[A-Za-z0-9_-]{30,}\\b","g");function f(a,b=[]){if(!a)return a;let c=a;for(let a of[...b,...d.map(a=>process.env[a])])a&&a.length>=8&&(c=c.split(a).join("[redacted]"));return c.replace(e,"[redacted]")}},84452:(a,b,c)=>{c.d(b,{_:()=>g});let d={"gpt-4o":[2.5,10],"gpt-4o-mini":[.15,.6],"o4-mini":[1.1,4.4],"gemini-2.0-flash":[.1,.4],"gemini-1.5-pro":[1.25,5],"gemini-1.5-flash":[.075,.3]};function e(a,b,c){let e=Object.keys(d).find(b=>a.toLowerCase().startsWith(b));if(!e)return 0;let[f,g]=d[e];return b/1e6*f+c/1e6*g}function f(a,b,c,d){return{ok:!1,text:"",usd:0,inputTokens:0,outputTokens:0,durationMs:c,binary:a,model:b,error:d}}async function g(a,b,c,d){let g,h=Date.now(),i=b.baseUrl.replace(/\/$/,""),j="google"===b.provider,k=j?`${i}/models/${encodeURIComponent(b.model)}:streamGenerateContent?alt=sse&key=${encodeURIComponent(b.apiKey)}`:`${i}/chat/completions`,l={"content-type":"application/json"};!j&&b.apiKey&&(l.authorization=`Bearer ${b.apiKey}`);let m=j?{contents:[{role:"user",parts:[{text:a}]}]}:{model:b.model,messages:[{role:"user",content:a}],stream:!0,stream_options:{include_usage:!0}};try{g=await fetch(k,{method:"POST",headers:l,body:JSON.stringify(m),signal:AbortSignal.timeout(c.timeoutMs??18e4)})}catch(a){return f(b.provider,b.model,Date.now()-h,String(a instanceof Error?a.message:a))}if(!g.ok||!g.body){let a=await g.text().catch(()=>"");return f(b.provider,b.model,Date.now()-h,`http ${g.status} ${a.slice(0,200)}`)}let n=g.body.getReader(),o=new TextDecoder,p="",q="",r=0,s=0,t=0,u=()=>{q.length>r&&(d({kind:"text",detail:q.slice(r,r+8e3)}),r=q.length)};try{for(;;){let a,{value:b,done:c}=await n.read();if(c)break;for(p+=o.decode(b,{stream:!0});(a=p.indexOf("\n"))>=0;){let b=p.slice(0,a).trim();if(p=p.slice(a+1),!b.startsWith("data:"))continue;let c=b.slice(5).trim();if("[DONE]"!==c)try{let a=JSON.parse(c);if(j){let b=a.candidates?.[0]?.content?.parts?.map(a=>a.text??"").join("")??"";b&&(q+=b).length-r>=120&&u();let c=a.usageMetadata;c&&(s=c.promptTokenCount??s,t=c.candidatesTokenCount??t)}else{let b=a.choices?.[0]?.delta?.content??"";b&&(q+=b).length-r>=120&&u(),a.usage&&(s=a.usage.prompt_tokens??s,t=a.usage.completion_tokens??t)}}catch{}}}}catch(a){return u(),d({kind:"done"}),{ok:!!q,text:q,usd:e(b.model,s,t),inputTokens:s,outputTokens:t,durationMs:Date.now()-h,binary:b.provider,model:b.model,error:q?void 0:String(a instanceof Error?a.message:a)}}return u(),d({kind:"done"}),{ok:!!q.trim(),text:q,usd:e(b.model,s,t),inputTokens:s,outputTokens:t,durationMs:Date.now()-h,binary:b.provider,model:b.model,error:q.trim()?void 0:"empty response"}}},89258:(a,b,c)=>{c.d(b,{LV:()=>v,eA:()=>w,mg:()=>x});var d=c(36548),e=c(77598),f=c(50730),g=c(5557),h=c(12940),i=c(76561),j=c(2148),k=c(66408),l=c(50415);function m(a,b){let c=RegExp(`##\\s+${b}\\s*\\n([\\s\\S]*?)(?:\\n##\\s|$)`,"i");return a.match(c)?.[1].trim()??""}function n(a){return a.split("\n").find(a=>a.trim()&&!a.startsWith("#")&&!a.startsWith("**")&&!a.startsWith("---")&&!a.startsWith("|"))?.trim()??""}function o(a,b){let c=a.split("\n").find(a=>a.startsWith("# "));return c?c.slice(2).trim():b}async function p(a){let[b]=await h.db.select().from(i.workspace).where((0,f.eq)(i.workspace.orgId,a));return b??null}async function q(a,b,c){let d=(0,k.sL)(b,`.claude/skills/${c}.md`)??"",g=n(d),j=(d.match(/\*\*Trigger:\*\*\s*(.+)/)?.[1]??"").trim(),l=m(d,"Procedure")||"",[o]=await h.db.select().from(i.skill).where((0,f.Uo)((0,f.eq)(i.skill.workspaceId,a),(0,f.eq)(i.skill.name,c)));o?await h.db.update(i.skill).set({summary:g,trigger:j,...l?{instructions:l}:{},indexed:"indexed"}).where((0,f.eq)(i.skill.id,o.id)):await h.db.insert(i.skill).values({id:(0,e.randomUUID)(),workspaceId:a,name:c,summary:g,trigger:j,instructions:l,native:!0,provisional:!1,indexed:"indexed"})}async function r(a,b,c){let d=(0,k.sL)(b,`.claude/agents/${c}/Agent.md`)??"";if(!d)return;let[e]=await h.db.select().from(i.agent).where((0,f.Uo)((0,f.eq)(i.agent.workspaceId,a),(0,f.eq)(i.agent.handle,c)));if(!e)return;let g=function(a){let b=a.match(/^---\n([\s\S]*?)\n---/);if(!b)return{};let c={};for(let a of b[1].split("\n")){let b=a.indexOf(":");b>0&&(c[a.slice(0,b).trim()]=a.slice(b+1).trim())}return c}(d),j={identity:(d.match(/\*\*Identity:\*\*\s*(.+)/)?.[1]??"").trim(),ritual:(d.match(/\*\*Ritual:\*\*\s*(.+)/)?.[1]??"").trim(),tone:(d.match(/\*\*Tone:\*\*\s*(.+)/)?.[1]??"").trim()||(e.persona?.tone??""),systemPrompt:m(d,"System prompt")},l={...g.provider?{adapter:g.provider}:{},...g.model?{model:g.model}:{},...g.temperature?{temperature:parseFloat(g.temperature)}:{},...g.dailyCapUsd?{dailyCapUsd:parseFloat(g.dailyCapUsd)}:{},...g.tierFloor?{tierFloor:g.tierFloor}:{},...g.reportsTo&&"null"!==g.reportsTo?{reportsTo:g.reportsTo}:{},persona:j};for(let d of(await h.db.update(i.agent).set(l).where((0,f.eq)(i.agent.id,e.id)),[...((0,k.sL)(b,`.claude/agents/${c}/skills.md`)??"").matchAll(/`([a-z0-9-]+)`/g)].map(a=>a[1]))){let[b]=await h.db.select().from(i.skill).where((0,f.Uo)((0,f.eq)(i.skill.workspaceId,a),(0,f.eq)(i.skill.name,d)));b&&await h.db.insert(i.agentSkill).values({agentId:e.id,skillId:b.id}).onConflictDoNothing()}}async function s(a,b,c){let d=c.split("/").pop()??c;if("README.md"===d)return;let g=(0,k.sL)(b,c)??"",j=o(g,d),[l]=await h.db.select().from(i.report).where((0,f.Uo)((0,f.eq)(i.report.workspaceId,a),(0,f.eq)(i.report.title,j)));l?await h.db.update(i.report).set({body:g}).where((0,f.eq)(i.report.id,l.id)):await h.db.insert(i.report).values({id:(0,e.randomUUID)(),workspaceId:a,title:j,type:"Report",body:g})}async function t(a,b,c,d){let g=(0,k.sL)(b,c)??"",j=o(g,c.split("/").pop()??c),l=n(g),[m]=await h.db.select().from(i.docIndex).where((0,f.Uo)((0,f.eq)(i.docIndex.workspaceId,a),(0,f.eq)(i.docIndex.path,c)));m?await h.db.update(i.docIndex).set({title:j,summary:l,updatedAt:new Date}).where((0,f.eq)(i.docIndex.id,m.id)):await h.db.insert(i.docIndex).values({id:(0,e.randomUUID)(),workspaceId:a,kind:d,path:c,title:j,summary:l})}function u(a){(a.startsWith(".claude/skills")||a.endsWith("/skills.md"))&&(0,g.revalidatePath)("/skills"),a.startsWith(".claude/agents")&&(0,g.revalidatePath)("/agents/[handle]","page"),a.startsWith("DOCS")&&(0,g.revalidatePath)("/docs"),a.startsWith("PO")&&(0,g.revalidatePath)("/pm"),a.startsWith("Reports")&&(0,g.revalidatePath)("/reports"),(0,g.revalidatePath)("/code")}async function v(a,b,c=!0){let d,e=await p(a);if(!e)return{ok:!1};let f=e.id;if((0,l.Nm)(a,b),d=b.match(/^\.claude\/skills\/(.+)\.md$/))await q(f,a,d[1]);else if(d=b.match(/^\.claude\/agents\/([^/]+)\/(?:Agent|skills)\.md$/))await r(f,a,d[1]);else if(/^Reports\/.+\.md$/.test(b))await s(f,a,b);else if(/^DOCS\/.+\.md$/.test(b))await t(f,a,b,"docs");else{if(!/^PO\/.+\.md$/.test(b))return{ok:!0};await t(f,a,b,"po")}return c&&u(b),{ok:!0}}async function w(a,b){let c,d=await p(a);if(!d)return{ok:!1};let e=d.id;return(0,l.SH)(a,b).catch(()=>{}),(c=b.match(/^\.claude\/skills\/(.+)\.md$/))?await h.db.delete(i.skill).where((0,f.Uo)((0,f.eq)(i.skill.workspaceId,e),(0,f.eq)(i.skill.name,c[1]))):/^(?:DOCS|PO)\/.+\.md$/.test(b)&&await h.db.delete(i.docIndex).where((0,f.Uo)((0,f.eq)(i.docIndex.workspaceId,e),(0,f.eq)(i.docIndex.path,b))),u(b),{ok:!0}}async function x(a=!0){let{org:b}=await (0,j.nP)(),c=b.id;for(let a of(0,k.Ci)(c,".claude/skills"))!a.isDir&&a.name.endsWith(".md")&&await v(c,a.path,!1);for(let a of(0,k.Ci)(c,".claude/agents"))a.isDir&&await v(c,`${a.path}/Agent.md`,!1);for(let a of["DOCS","PO","Reports"])for(let b of(0,k.Ci)(c,a))!b.isDir&&b.name.endsWith(".md")&&await v(c,b.path,!1);return a&&(0,g.revalidatePath)("/","layout"),{ok:!0}}(0,c(99688).D)([v,w,x]),(0,d.A)(v,"70c9946ce7b4d59b33995bd699fa6d230d232d09ac",null),(0,d.A)(w,"60546c3703874a3d7415fa213900e30f539ca5b9d0",null),(0,d.A)(x,"40c679f63e25b10357f3d3231817fcc35b1db6ddfb",null)}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=8211,exports.ids=[8211],exports.modules={19872:(a,b,c)=>{c.d(b,{I:()=>l});var d=c(73024),e=c(76760),f=c(81585);let g=/(^|\/)(\.env(\.[\w.-]+)?|id_[rd]sa\w*|.*\.(pem|key|p12|pfx|keystore|jks|ppk|asc)|credentials?\.json|service[-_]?account[\w.-]*\.json|.*\.(sql|dump|bak|sqlite3?|db)|npm-debug\.log|.*\.local)$/i,h=/(\.env\.(example|sample|template|dist)|\.env-example)$/i,i=[{kind:"AWS access key",re:/\bAKIA[0-9A-Z]{16}\b/},{kind:"GitHub token",re:/\bgh[posru]_[A-Za-z0-9]{30,}\b/},{kind:"GitHub fine-grained PAT",re:/\bgithub_pat_[A-Za-z0-9_]{40,}\b/},{kind:"OpenAI/Anthropic key",re:/\bsk-[A-Za-z0-9_-]{20,}\b/},{kind:"Google API key",re:/\bAIza[0-9A-Za-z_-]{30,}\b/},{kind:"Slack token",re:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/},{kind:"Private key",re:/-----BEGIN (?:RSA |EC |OPENSSH |DSA |PGP )?PRIVATE KEY-----/},{kind:"JWT",re:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{6,}\b/},{kind:"DB URL with credentials",re:/\b(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqp):\/\/[^\s:@/]+:[^\s:@/]+@/i},{kind:"Telegram bot token",re:/\b\d{6,}:[A-Za-z0-9_-]{35,}\b/},{kind:"Hardcoded secret",re:/\b(password|passwd|secret|api[_-]?key|access[_-]?token|auth[_-]?token|client[_-]?secret|private[_-]?key)\b\s*[:=]\s*['"][^'"\n]{6,}['"]/i}],j=/(your[_-]?|xxx+|<[^>]+>|change[_-]?me|example|placeholder|\*{3,}|•|dummy|todo|redacted|\.\.\.)/i,k=/(^|\/)(node_modules|\.git|\.next|dist|build|out|\.turbo|coverage|uploads|archives|\.testdev|vendor)\//;async function l(a){let b=await (0,f.d1)("git",["status","--porcelain","-z","--untracked-files=all"],{cwd:a});if(0!==b.code)return{findings:[],scanned:0,files:0};let c=[],l=b.stdout.split("\0");for(let a=0;a<l.length;a++){let b=l[a];if(!b||b.length<3)continue;let d=b[0],e=b[1],f=b.slice(3);("R"===d||"C"===d||"R"===e||"C"===e)&&a++,"D"!==d&&"D"!==e&&(!f||k.test(f+"/")||c.push(f))}let m=[],n=0;for(let b of c.slice(0,3e3)){g.test(b)&&!h.test(b)&&m.push({file:b,line:0,kind:"must-not-commit file",preview:b.split("/").pop()??b});let c=(0,e.join)(a,b),f=0;try{f=(0,d.statSync)(c).size}catch{continue}if(f>2097152)continue;let k="";try{k=(0,d.readFileSync)(c,"utf8")}catch{continue}if(k.includes("\0"))continue;n++;let l=k.split("\n");for(let a=0;a<l.length&&m.length<300;a++){let c=l[a];if(!(c.length>4e3))for(let{kind:d,re:e}of i){let f=e.exec(c);if(f&&!("Hardcoded secret"===d&&j.test(f[0]))){var o;m.push({file:b,line:a+1,kind:d,preview:(o=f[0]).length<=10?"•••":o.slice(0,4)+"•••"+o.slice(-2)});break}}}}return{findings:m,scanned:n,files:c.length}}},78211:(a,b,c)=>{c.d(b,{A5:()=>H,Bz:()=>A,H9:()=>I,Iq:()=>D,Td:()=>z,UY:()=>F,UZ:()=>G,Uc:()=>B,ec:()=>E,jU:()=>y,ox:()=>J,uP:()=>x});var d=c(80501),e=c(73024),f=c(77598),g=c(76760),h=c(73591),i=c(3770),j=c(54813),k=c(406),l=c(96405),m=c(39522),n=c(37989),o=c(81585),p=c(19872),q=c(17730),r=c(55593),s=c(64185);let t=`# Constella default — don't commit deps/build output
|
|
2
2
|
node_modules/
|
|
3
3
|
.next/
|
|
4
4
|
dist/
|
|
@@ -19,4 +19,4 @@ ${i}`}}async function I(){let{org:a}=await (0,l.nP)(),b=(0,n.HZ)(a.id);return aw
|
|
|
19
19
|
`+a.findings.slice(0,20).map(a=>`• ${a.file}${a.line?":"+a.line:""} — ${a.kind} (${a.preview})`).join("\n")}),await (0,r.I)(c.id,{kind:"security",text:`Commit blocked — ${a.findings.length} secret risk(s)`,detail:a.findings.slice(0,5).map(a=>`${a.file}: ${a.kind}`).join("; ")}),(0,i.revalidatePath)("/github"),(0,i.revalidatePath)("/inbox"),j}await (0,o.d1)("git",["add","-A"],{cwd:d});let t=await (0,o.d1)("git",["-c","user.email=agents@constella.dev","-c","user.name=Constella Agents","commit","-m",a.message],{cwd:d});if(0===t.code)j.committed=!0,j.sha=(await (0,o.d1)("git",["rev-parse","--short","HEAD"],{cwd:d})).stdout.trim();else if(/nothing to commit|no changes added/i.test(t.stdout+t.stderr))return j.nothing=!0,K(c.id,j,a);else return j.error=h(t.stderr||t.stdout)||"git commit failed",K(c.id,j,a);let v=await (0,o.d1)("git",["remote","get-url","origin"],{cwd:d}),w=0===v.code?v.stdout.trim():"";if(w&&g&&/^https:\/\/github\.com\//i.test(w)){let b=w.replace(/^https:\/\//i,`https://x-access-token:${g}@`),e=await (0,o.d1)("git",["push",b,`HEAD:${f}`],{cwd:d,timeoutMs:12e4});if(j.pushed=0===e.code,!j.pushed&&(j.error=h(e.stderr)||"git push failed",/rejected|non-fast-forward|fetch first|merge conflict|failed to push/i.test(e.stderr)&&await (0,q.vE)(c.id,{kind:"block",refType:"task",refId:`push:${a.repo}:${f}`,title:`Push rejected — ${a.repo}`,detail:`git push to \`${f}\` was rejected (remote conflict / non-fast-forward). Pull + resolve, then push again.
|
|
20
20
|
|
|
21
21
|
${h(e.stderr).slice(0,300)}`})),j.pushed&&a.delegated){let a=await (0,o.d1)("gh",["pr","create","--fill","--head",f],{cwd:d,timeoutMs:6e4,env:{GH_TOKEN:g}}),b=(a.stdout.match(/https:\/\/github\.com\/\S+/)??[])[0];b?j.prUrl=b:0!==a.code&&(j.error=h(a.stderr).slice(0,200)||"gh pr create did not open a PR (is the branch the repo default, or no diff vs base?)")}}else w?g||(j.error="committed locally — connect a GitHub PAT to push"):j.error="committed locally — no 'origin' remote configured to push";return K(c.id,j,a)}async function K(a,b,c){if(b.committed){await j.db.update(k.file).set({gitStatus:""}).where((0,h.Uo)((0,h.eq)(k.file.workspaceId,a),(0,h.ne)(k.file.gitStatus,"")));let d=b.pushed?`pushed to ${c.repo} \xb7 ${c.branch}`:"committed locally";await (0,r.I)(a,{kind:"deploy",text:`Workspace ${d}${b.sha?` (${b.sha})`:""}`,detail:(c.delegated&&b.prUrl?`PR: ${b.prUrl}
|
|
22
|
-
`:"")+c.message})}return b.ok=b.committed,(0,i.revalidatePath)("/github"),b}(0,s.D)([x,y,z,A,B,D,E,F,G,H,I,J]),(0,d.A)(x,"
|
|
22
|
+
`:"")+c.message})}return b.ok=b.committed,(0,i.revalidatePath)("/github"),b}(0,s.D)([x,y,z,A,B,D,E,F,G,H,I,J]),(0,d.A)(x,"00044cced86257d0f35ce2b0d9a7963b6c8cb8f135",null),(0,d.A)(y,"40ad7527669bbf4b2c01f778d6385310247571dbf7",null),(0,d.A)(z,"40fe9c04f2a4d88b95dbc8d3aa725241ab618162cf",null),(0,d.A)(A,"40bf80e440e1ee8b19b16aae31fe4d2794f6d854bc",null),(0,d.A)(B,"00c245ab3faa6f5fb36836308b891c1546a906537b",null),(0,d.A)(D,"00de8c9a88cf90cd4e1688d350295fdedfb0e1cfaa",null),(0,d.A)(E,"40706f690787ef8d99f14d88fa15b0d73ab54fc1f6",null),(0,d.A)(F,"40811cbab59c558e9738cf76f0585a51f5e7e6a2e4",null),(0,d.A)(G,"00f8c6a055ed1b985abadd4af2dd064a0bb9d0f6eb",null),(0,d.A)(H,"00039ab86fc3f57465063c2850457256a2c9d83335",null),(0,d.A)(I,"0093dc3d2f1f7a9d58a62d6dcb19f36cd0b003d599",null),(0,d.A)(J,"407d63d4afa028c9cd748d834d34578d9f46431f66",null)}};
|